21 Ağustos 2009 Cuma
16 Temmuz 2009 Perşembe
PL/SQL den bpel i çağırma
Read this http://www.oracle.com/technology/tech/webservices/htdocs/samples/dbwebservice/DBWebServices_PLSQL.html
and this http://www.oracle.com/technology/products/database/scheduler/index.html
Bpel scheduling
(referans: http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html)
A "Cron-Expression" is a string comprised of 6 or 7 fields separated by white space. The 6 mandatory and 1 optional fields are as follows:
| Field Name | Allowed Values | Allowed Special Characters | ||
|---|---|---|---|---|
Seconds | 0-59 | , - * / | ||
Minutes | 0-59 | , - * / | ||
Hours | 0-23 | , - * / | ||
Day-of-month | 1-31 | , - * ? / L W C | ||
Month | 1-12 or JAN-DEC | , - * / | ||
Day-of-Week | 1-7 or SUN-SAT | , - * ? / L C # | ||
Year (Optional) | empty, 1970-2099 | , - * / |
The '*' character is used to specify all values. For example, "*" in the minute field means "every minute".
The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification.
The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12".
The ',' character is used to specify additional values. For example "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday".
The '/' character is used to specify increments. For example "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". You can also specify '/' after the '*' character - in this case '*' is equivalent to having '0' before the '/'.
The 'L' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "last", but it has different meaning in each of the two fields. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results.
The 'W' character is allowed for the day-of-month field. This character is used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month". So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days.
The 'L' and 'W' characters can also be combined for the day-of-month expression to yield 'LW', which translates to "last weekday of the month".
The '#' character is allowed for the day-of-week field. This character is used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means the third Friday of the month (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month.
The 'C' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "calendar". This means values are calculated against the associated calendar, if any. If no calendar is associated, then it is equivalent to having an all-inclusive calendar. A value of "5C" in the day-of-month field means "the first day included by the calendar on or after the 5th". A value of "1C" in the day-of-week field means "the first day included by the calendar on or after sunday".
The legal characters and the names of months and days of the week are not case sensitive.
Here are some full examples:
| Expression | Meaning | |
|---|---|---|
"0 0 12 * * ?" | Fire at 12pm (noon) every day | |
"0 15 10 ? * *" | Fire at 10:15am every day | |
"0 15 10 * * ?" | Fire at 10:15am every day | |
"0 15 10 * * ? *" | Fire at 10:15am every day | |
"0 15 10 * * ? 2005" | Fire at 10:15am every day during the year 2005 | |
"0 * 14 * * ?" | Fire every minute starting at 2pm and ending at 2:59pm, every day | |
"0 0/5 14 * * ?" | Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day | |
"0 0/5 14,18 * * ?" | Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day | |
"0 0-5 14 * * ?" | Fire every minute starting at 2pm and ending at 2:05pm, every day | |
"0 10,44 14 ? 3 WED" | Fire at 2:10pm and at 2:44pm every Wednesday in the month of March. | |
"0 15 10 ? * MON-FRI" | Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday | |
"0 15 10 15 * ?" | Fire at 10:15am on the 15th day of every month | |
"0 15 10 L * ?" | Fire at 10:15am on the last day of every month | |
"0 15 10 ? * 6L" | Fire at 10:15am on the last Friday of every month | |
"0 15 10 ? * 6L" | Fire at 10:15am on the last Friday of every month | |
"0 15 10 ? * 6L 2002-2005" | Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005 | |
"0 15 10 ? * 6#3" | Fire at 10:15am on the third Friday of every month |
Pay attention to the effects of '?' and '*' in the day-of-week and day-of-month fields!
NOTES:
- Support for the features described for the 'C' character is not complete.
- Support for specifying both a day-of-week and a day-of-month value is not complete (you'll need to use the '?' character in on of these fields).
- Be careful when setting fire times between mid-night and 1:00 AM - "daylight savings" can cause a skip or a repeat depending on whether the time moves back or jumps forward.
<activationAgents>
<activationAgent className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent" partnerLink="pollDB" heartBeatInterval="5">
<property name="portType">pollDB_ptt</property>
<property name="schedulerCallout">DefaultSchedulerCalloutImpl</property>
<property name="endpointScheduleOn">0 4 * * * ?</property>
<property name="endpointScheduleOff">0 9 * * * ?</property>
</activationAgent>
</activationAgents>
15 Temmuz 2009 Çarşamba
Bpel den e-mail gönderme
<EmailAccounts xmlns="http://xmlns.oracle.com/ias/pcbpel/NotificationService"
EmailMimeCharset=""
NotificationMode="EMAIL">
<EmailAccount>
<Name>Default</Name>
<GeneralSettings>
<FromName>Oracle BPM</FromName>
<FromAddress>herhangibirmailadresi</FromAddress>
</GeneralSettings>
<OutgoingServerSettings>
<SMTPHost>SMTP server</SMTPHost>
<SMTPPort>25</SMTPPort>
</OutgoingServerSettings>
<IncomingServerSettings>
<Server>yourdomain.com</Server>
<Port>110</Port>
<Protocol>pop3</Protocol>
<UserName>accountId</UserName>
<Password ns0:encrypted="false" xmlns:ns0="http://xmlns.oracle.com/ias/pcbpel/NotificationService">password</Password>
<UseSSL>false</UseSSL>
<Folder>Inbox</Folder>
<PollingFrequency>1</PollingFrequency>
<PostReadOperation>
<MarkAsRead/>
</PostReadOperation>
</IncomingServerSettings>
</EmailAccount>
3 Temmuz 2009 Cuma
Managing, Purging and Cleanup of the BPEL Instances (2)
set echo onset time onset timing on
spool bpel_dehyd_manage.log
-- Call the purge instance procdure to truncate the data from the BPEL Instances tables
exec purge_instances(SYSDATE-&1);
-- The following statements reclaims the deleted data space
alter table cube_instance deallocate unused;
alter table cube_scope deallocate unused;
alter table work_item deallocate unused;
alter table wi_exception deallocate unused;
alter table document_ci_ref deallocate unused;
alter table document_dlv_msg_ref deallocate unused;
alter table scope_activation deallocate unused;
alter table dlv_subscription deallocate unused;
alter table audit_trail deallocate unused;
alter table audit_details deallocate unused;
alter table sync_trail deallocate unused;
alter table sync_store deallocate unused;
alter table dlv_message deallocate unused;
alter table invoke_message deallocate unused;
alter table ci_indexes deallocate unused;
alter table cube_scope enable row movement;
alter table cube_scope shrink space compact;
alter table cube_scope shrink space;
alter table cube_scope disable row movement;
alter table cube_instance enable row movement;
alter table cube_instance shrink space compact;
alter table cube_instance shrink space;
alter table cube_instance disable row movement;
alter table work_item enable row movement;
alter table work_item shrink space compact;
alter table work_item shrink space;
alter table work_item disable row movement;
alter table wi_exception enable row movement;
alter table wi_exception shrink space compact;
alter table wi_exception shrink space;
alter table wi_exception disable row movement;
alter table document_ci_ref enable row movement;
alter table document_ci_ref shrink space compact;
alter table document_ci_ref shrink space;
alter table document_ci_ref disable row movement;
alter table document_dlv_msg_ref enable row movement;
alter table document_dlv_msg_ref shrink space compact;
alter table document_dlv_msg_ref shrink space;
alter table document_dlv_msg_ref disable row movement;
alter table scope_activation enable row movement;
alter table scope_activation shrink space compact;
alter table scope_activation shrink space;
alter table scope_activation disable row movement;
alter table dlv_subscription enable row movement;
alter table dlv_subscription shrink space compact;
alter table dlv_subscription shrink space;
alter table dlv_subscription disable row movement;
alter table audit_trail enable row movement;
alter table audit_trail shrink space compact;
alter table audit_trail shrink space;
alter table audit_trail disable row movement;
alter table audit_details enable row movement;
alter table audit_details shrink space compact;
alter table audit_details shrink space;
alter table audit_details disable row movement;
alter table sync_trail enable row movement;
alter table sync_trail shrink space compact;
alter table sync_trail shrink space;
alter table sync_trail disable row movement;
alter table sync_store enable row movement;
alter table sync_store shrink space compact;
alter table sync_store shrink space;
alter table sync_store disable row movement;
alter table invoke_message enable row movement;
alter table invoke_message shrink space compact;
alter table invoke_message shrink space;
alter table invoke_message disable row movement;
alter table dlv_message enable row movement;
alter table dlv_message shrink space compact;
alter table dlv_message shrink space;
alter table dlv_message disable row movement;
alter table ci_indexes enable row movement;
alter table ci_indexes shrink space compact;
alter table ci_indexes shrink space;
alter table ci_indexes disable row movement;
alter table XML_DOCUMENT enable row movement;
alter table XML_DOCUMENT shrink space compact;
alter table XML_DOCUMENT shrink space;
alter table XML_DOCUMENT disable row movement;
-- Rebuild the indexes of the ORABPEL schema for faster lookups
spool off
set termout off
set heading off
set echo off
set time off
set timing off
spool rebuild_indexes.sql
select 'Alter Index 'index_name' Rebuild;' from from user_indexes where table_name not like 'BIN$%' and index_type <> 'LOB';
spool off
set termout on
set echo on
spool rebuild_indexes.log
@rebuild_indexes.sql
spool off
spool off
The above table will manage you BPEL instances and you may schedule this script run based on your organization or client requirement.
There is one more tip for the dehydation store of the BPEL processes - move the LOB Columns to non assm tablespaces to eliminate contention issues and allow indexing for the CUBE_SCOPE,
AUDIT_DETAILS, SYNC_STORE and XML_DOCUMENT tables in the ORABPEL schema. You may a blog entry on how to perform the above operation,
http://scsoablog.blogspot.com/2008/02/more-hw-contention-tuning.html
http://scsoablog.blogspot.com/2008/01/optimizing-rac-performance-for-soa-part.html
Managing, Purging and Cleanup of the BPEL Instances (1)
CREATE OR REPLACE PROCEDURE purge_instances (p_older_than TIMESTAMP)AS
BEGIN
--Before starting clean up of temp tables
EXECUTE IMMEDIATE 'TRUNCATE TABLE temp_cube_instance';
EXECUTE IMMEDIATE 'TRUNCATE TABLE temp_invoke_message';
EXECUTE IMMEDIATE 'TRUNCATE TABLE temp_dlv_message';
--Populate table with information about older instances
INSERT into temp_cube_instance (cikey)
SELECT cikey
FROM cube_instance
WHERE state >= 3 AND modify_date < p_older_than;
INSERT into temp_invoke_message (message_guid)
SELECT message_guid
FROM invoke_message
WHERE state > 1 AND receive_date < p_older_than;
INSERT into temp_dlv_message (message_guid)
SELECT message_guid
FROM dlv_message
WHERE state > 1 AND receive_date < p_older_than;
COMMIT;
-- WHERE clause is to force CBO to use index of temp table and to avoid full scan of temp
table
-- COMMIT after every delete to reduce pressure on undo log in database
-- Delete all closed instances older than specified date
DELETE FROM native_correlation
WHERE conversation_id IN (SELECT /*+ ORDERED */ dlvs.conv_id FROM dlv_subscription dlvs,
temp_cube_instance tpic
WHERE dlvs.cikey = tpic.cikey );
COMMIT;
DELETE FROM cube_scope
WHERE cikey IN (SELECT /*+ ORDERED */ cs.cikey FROM cube_scope cs, temp_cube_instance tpic
WHERE cs.cikey = tpic.cikey);
COMMIT;
DELETE FROM work_item
WHERE cikey IN (SELECT /*+ ORDERED */ wi.cikey FROM work_item wi, temp_cube_instance tpic
WHERE wi.cikey = tpic.cikey);
COMMIT;
DELETE FROM wi_exception
WHERE cikey IN (SELECT /*+ ORDERED */ wie.cikey FROM wi_exception wie,
temp_cube_instance tpic
WHERE wie.cikey = tpic.cikey);
COMMIT;
DELETE FROM scope_activation
WHERE cikey IN (SELECT /*+ ORDERED */ sa.cikey FROM scope_activation sa,
temp_cube_instance tpic
WHERE sa.cikey = tpic.cikey);
COMMIT;
DELETE FROM dlv_subscription
WHERE cikey IN (SELECT /*+ ORDERED */ dlvs.cikey FROM dlv_subscription dlvs,
temp_cube_instance tpic
WHERE dlvs.cikey = tpic.cikey);
COMMIT;
DELETE FROM audit_trail
WHERE cikey IN (SELECT /*+ ORDERED */ at.cikey FROM audit_trail at, temp_cube_instance tpic
WHERE at.cikey = tpic.cikey);
COMMIT;
DELETE FROM audit_details
WHERE cikey IN (SELECT /*+ ORDERED */ ad.cikey FROM audit_details ad,
temp_cube_instance tpic
WHERE ad.cikey = tpic.cikey);
COMMIT;
DELETE FROM sync_trail
WHERE cikey IN (SELECT /*+ ORDERED */ st.cikey FROM sync_trail st, temp_cube_instance tpic
WHERE st.cikey = tpic.cikey);
COMMIT;
DELETE FROM sync_store
WHERE cikey IN (SELECT /*+ ORDERED */ ss.cikey FROM sync_store ss, temp_cube_instance tpic
WHERE ss.cikey = tpic.cikey);
COMMIT;
DELETE FROM xml_document
WHERE dockey IN (SELECT /*+ ORDERED */ doc_ref.dockey FROM document_ci_ref doc_ref,
temp_cube_instance tpic
WHERE doc_ref.cikey = tpic.cikey);
COMMIT;
DELETE FROM document_dlv_msg_ref
WHERE dockey IN (SELECT /*+ ORDERED */ doc_ref.dockey FROM document_ci_ref doc_ref,
temp_cube_instance tpic
WHERE doc_ref.cikey = tpic.cikey);
COMMIT;
DELETE FROM document_ci_ref
WHERE cikey IN (SELECT /*+ ORDERED */ dcr.cikey FROM document_ci_ref dcr,
temp_cube_instance tpic
WHERE dcr.cikey = tpic.cikey);
COMMIT;
DELETE FROM attachment
WHERE key IN (SELECT /*+ ORDERED */ attach_ref.key FROM attachment_ref attach_ref,
temp_cube_instance tpic
WHERE attach_ref.cikey = tpic.cikey);
COMMIT;
DELETE FROM attachment_ref
WHERE cikey IN (SELECT /*+ ORDERED */ ar.cikey FROM attachment_ref ar,
temp_cube_instance tpic
WHERE ar.cikey = tpic.cikey);
COMMIT;
DELETE FROM ci_indexes
WHERE cikey IN (SELECT /*+ ORDERED */ cin.cikey FROM ci_indexes cin,
temp_cube_instance tpic
WHERE cin.cikey = tpic.cikey);
COMMIT;
-- DELETE FROM wi_fault
-- WHERE cikey IN (SELECT /*+ ORDERED */ wf.cikey FROM wi_fault wf,
-- temp_cube_instance tpic
-- WHERE wf.cikey = tpic.cikey);
-- COMMIT;
DELETE FROM cube_instance
WHERE cikey IN (SELECT /*+ ORDERED */ ci.cikey FROM cube_instance ci,
temp_cube_instance tpic
WHERE ci.cikey = tpic.cikey);
COMMIT;
-- Purge all handled invoke_messages older than specified date --
DELETE FROM xml_document
WHERE dockey IN (SELECT /*+ ORDERED */ dlv_ref.dockey FROM document_dlv_msg_ref dlv_ref,
temp_invoke_message tpiim
WHERE dlv_ref.message_guid = tpiim.message_guid);
COMMIT;
DELETE FROM document_ci_ref
WHERE dockey IN (SELECT /*+ ORDERED */ dlv_ref.dockey FROM document_dlv_msg_ref dlv_ref,
temp_invoke_message tpiim
WHERE dlv_ref.message_guid = tpiim.message_guid);
COMMIT;
DELETE FROM document_dlv_msg_ref
WHERE message_guid IN (SELECT /*+ ORDERED */ dlv_ref.message_guid FROM document_dlv_msg_ref dlv_ref,
temp_invoke_message tpiim
WHERE dlv_ref.message_guid = tpiim.message_guid);
COMMIT;
DELETE FROM invoke_message
WHERE message_guid IN (SELECT /*+ ORDERED */ im.message_guid FROM invoke_message im,
temp_invoke_message tpiim
WHERE im.message_guid = tpiim.message_guid);
COMMIT;
-- Purge all handled callback messages older than specified date --
DELETE FROM xml_document
WHERE dockey IN (SELECT /*+ ORDERED */ dlv_ref.dockey FROM document_dlv_msg_ref dlv_ref,
temp_dlv_message tpidm
WHERE dlv_ref.message_guid = tpidm.message_guid);
COMMIT;
DELETE FROM document_ci_ref
WHERE dockey IN (SELECT /*+ ORDERED */ dlv_ref.dockey FROM document_dlv_msg_ref dlv_ref,
temp_dlv_message tpidm
WHERE dlv_ref.message_guid = tpidm.message_guid);
COMMIT;
DELETE FROM document_dlv_msg_ref
WHERE message_guid IN (SELECT /*+ ORDERED */ ddmr.message_guid FROM document_dlv_msg_ref ddmr,
temp_dlv_message tpidm
WHERE ddmr.message_guid = tpidm.message_guid);
COMMIT;
DELETE FROM dlv_message
WHERE message_guid IN (SELECT /*+ ORDERED */ dm.message_guid FROM dlv_message dm,
temp_dlv_message tpidm
WHERE dm.message_guid = tpidm.message_guid);
COMMIT;
-- delete all unreferenced xml_documents rows from xml_document table
DELETE FROM xml_document xd
WHERE NOT EXISTS (SELECT ddmr.dockey FROM document_dlv_msg_ref ddmr
WHERE xd.dockey = ddmr.dockey) AND NOT EXISTS (SELECT dir.dockey FROM document_ci_ref dir WHERE xd.dockey = dir.dockey);
COMMIT;
-- IF conversation_id is not present in dlv_subscription, we can delete it from native_correlation
DELETE FROM native_correlation nc
WHERE NOT EXISTS (SELECT dlvs.conv_id from dlv_subscription dlvs
WHERE dlvs.conv_id = nc.conversation_id);
COMMIT;
DELETE FROM process_log
WHERE event_date < p_older_than;
EXECUTE IMMEDIATE 'TRUNCATE TABLE temp_cube_instance';
EXECUTE IMMEDIATE 'TRUNCATE TABLE temp_invoke_message';
EXECUTE IMMEDIATE 'TRUNCATE TABLE temp_dlv_message';
COMMIT;
END purge_instances;
The above procedure shall truncate all the BPEL instance tables, but in order to reclaim the dataspace and refresh the indexes and you should run the another script (bpel_dehyd_manage.sql). I will publish the script in the next post.
You can run the above procedure as, call purge_instances(sysdate -
9 Haziran 2009 Salı
The effect of deliveryPersistPolicy
This parameter determines whether the delivery messages, entering BPEL, are persisted. That is when you call a BPEL process an row is inserted into the BPEL repository, and response is given to the client. After a short time worker threads are activated to process the request.
<Picture of request , message table , threads >
If you look at your BPEL statistics page you'll see that this process can take a couple of hundred ms' so lets assume that your process is synchronous and can be repeated, do you want it to be persisted???
Fortunatly this is one of the knobs you can tweak to improve performance here..
deliveryPersistPolicy has three valid values
on
Client thread stores message in the database
Worker threads pick up the message and deliver it to the BPEL instance
This approach is a "Send and forget" approach, with the guarantee that once its submitted it will get processed
off
No database logging is done, the message is stored in memory cache
If the server crashes during the processing then the request will be lost.
off.immediate (since 10.1.3.1)
In this scenario the message isnt saved at all, and the request is passed directly to the BPEL instance.
"Send and Wait" approach
Great for Synchronous processes that can be repeated.
This parameter can be set in the BPEL Console parameters screen.
25 Mayıs 2009 Pazartesi
log dosya boyutunu ayarlama
1. Logon to your server and navigate to directory BPEL_HOME/domains/<domain name>/config.
2. Make a backup copy of the log4j-config.xml file.
3. Open the log4j-config.xml file for edit.
4. Change the appender class from com.collaxa.cube.util.CXRollingFileAppender to org.apache.log4j.RollingFileAppender.
5. Add the property MaxFileSize:
<param value="10MB" name="MaxFileSize" />
Here, a maximum file size of 10MB is specified, but you can make it whatever value suits your environment. The top of the log4j-config.xml file now looks like:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender class="org.apache.log4j.RollingFileAppender" name="A1">
<param value="true" name="ImmediateFlush" />
<param value="false" name="Append" />
<param value="D:/soa/product/10.1.3.1/as_1/bpel/domains/default/logs/domain.log" name="File" /> <param value="10MB" name="MaxFileSize" />
<param value="10" name="MaxBackupIndex" />
6. Save the file, and restart the BPEL container.
Please note that these changes will be carried forward to any new domain that you create. If you have already created domains in addition to default, you will need to change the log4j-config.xml file for each of these domains to limit the size of those log files.
22 Mayıs 2009 Cuma
BPEL RAC configuration
A: Yes, RAC is supported for the BPEL PM dehydration store and for the DB and AQ adapters. Any version or Oracle 9i or 10g would work. We would recommend a RAC configuration of 10g if someone wants high availability, however. To configure BPEL PM 2.1.2 and 10.1.2 with RAC, use the following instructions:
for BPEL PM 2.1.2 and 10.1.2 just configure DataSource (orabpel\system\appserver\oc4j\j2ee\home\config\data-sources.xml) like this:
Name: BPELServerDataSource
Class: com.evermind.sql.DriverManagerDataSource
URL: jdbc:oracle:thin:@(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dwebvip01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = dwebvip02)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = asdb)))
Driver: oracle.jdbc.OracleDriver
Location: jdbc/BPELServerDataSource
XA location: BPELServerDataSource
EJB location: jdbc/BPELServerDataSource
inactivity-timeout: 300
retry interval: 2
max-connect-attempts: 60
max conn: 60
min conn: 12
For 10g RAC and implicit connection caching (jdbc 10g R1), all the following are valid ULRS:
Valid Usage:
url="jdbc:oracle:oci:@TNS_ALIAS"
url="jdbc:oracle:oci:@(DESCRIPTION=
(LOAD_BALANCE=on)
(ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=service_name)))"
url="jdbc:oracle:oci:@(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=service_name)))"
url = "jdbc:oracle:thin@//host:port/service_name"
url = "jdbc:oracle:thin@//cluster-alias:port/service_name"
url="jdbc:oracle:thin:@(DESCRIPTION=
(LOAD_BALANCE=on)
(ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=service_name)))"
url = "jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=service_name)))"
Invalid Usage:
url = "jdbc:oracle:thin@host:port:SID"
The BPEL PM DB and AQ adapters have been certified with 32-bit RAC configuration as well and certification was occurring as of 4/25/2005 for 64-bit RAC.
14 Mayıs 2009 Perşembe
Cluster Poll fazla instance problemi
1-poll ayarlarında
Polling frequency,database rows per transaction çok fazla olmasa daha iyi olur
2-her makinede deploy ettiğin projenin klasörüne gidip ....toplink-mappings.xml dosyasında
<toplink:lock-mode>lock</toplink:lock-mode>
bununla ilgili metalinkteki yazı
https://metalink2.oracle.com/metalink/plsql/f?p=130:14:9276466641169054146::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,733967.1,1,1,1,helvetica
Configuring jgroups-protocol.xml using TCP instead of UDP
The TCP settings in jgroups-protocol.xml are designed for clustering across subnets, and Oracle seems to generally recommend using multicast otherwise. Unfortunately, the Enterprise Deployment Guide (10.1.3.3) does not describe how to configure TCP-based clustering for BPEL Process Manager.
When to use TCP for BPEL Process Manager Clustering
You should you use node-to-node (TCP) instead of multicast (UDP) when configuring a BPEL Process Manager cluster if a combination of the conditions below apply:
- You cannot configure multicast.
- Your BPEL Process Manager servers communicate across subnets.
- You have a very large number of nodes in your cluster.
- Performance of UDP is slow in your environment.
Configuring TCP-based clustering for BPEL Process Manager
Perform the following on all BPEL Process Manager servers in your cluster.
1. Comment out the UDP multicast configuration in jgroups-protocol.xml:
| <-- <config> <UDP mcast_send_buf_size="32000" . . . </config> --> |
| <config> <TCP start_port="7900" loopback="true" send_buf_size="32000" recv_buf_size="64000"/> <TCPPING timeout="3000" initial_hosts="server1[7900],server2[7900]" port_range="3" num_initial_members="3"/> . . . |
3. Restart OPMN.
If configured correctly, the log file SOA_GROUP~OC4J_SOA~SOA_GROUP~1.log should show it working with entries similar to:
| INFO: server socket created on 192.168.28.210:7900 GMS: address is 192.168.28.210:7900 INFO: created socket to 192.168.28.207:7900 INFO: created socket to 192.168.28.210:7900 |
| WARNING: discarded message from different group "server2:8880" (our group is "server1:7777"). Sender was192.168.28.207:7900 WARNING: discarded message from different group "server2:8880" (our group is "server1:7777"). Sender was192.168.28.207:7900 |
7 Mayıs 2009 Perşembe
Deployment klasörünü değiştirme
<variable id="TMP" value="/tmp">
değerini değiştirerek dha fazla alanı olan başka bir yer gösterebilirsin
4 Mayıs 2009 Pazartesi
Deploy depending BPEL processes
When designing and developing BPEL processes. It could result that process A call proccess B. But process B will also call process A. During development your start with process A, deploy it and later on you create process B. Then you add a partnerlink in process A to call B and vice versa.
You will not notice that these two processes are depending on each other until you create/deploy these processes in a new environment. It will not possible to deploy process A, while it depends on B. In the bpel.xml file process A will be compiled, but it will try to retrieve WSDL specification of B. While B is not there, it fails to compile. The other way arround, is the same. Process B does not compile because A does not exists.
This can be solved. The way I prefer is the following:
- Copy the WSDL file and the XSD file of process B into your project of process A.
- Copy bpel.xml into bpel_post.xml
- Change all the WSDL locations, in bpel.xml, into local files: http://host/orabpel/default/HelloWorldB/HellowWorldB?wsdl
into
HelloWorldB.wsdl - Compile process A based on bpel.xml.
- Deploy process A.
- Deploy process B.
- Compile process A based on bpel_post.xml.
- Deploy process A.
21 Nisan 2009 Salı
bpel 10.1.3.4 Poll bug
patch id : 7593089 //metalinkten indirebilirsiniz
metalinkten bu patchi uyguladıktansonra diğer yazımda söylediğim connection time out sorununuda çözünce problem kalmıyor.
Poll timeout problemi
Message handle error.
An exception occurred while attempting to process the message "com.collaxa.cube.engine.dispatch.message.system.LogProcessEventMessage"; the exception is: Transaction timed out after 34 seconds
BEA1-24FB5D0B1C6159AB899E
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:203)
at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
böylebir hata alıyorsanız.
$SOA_HOME/j2ee/home/config/transaction-manager.xml dosyasındaki
transaction-timeout="30" değerini arttırmalısınız.
13 Nisan 2009 Pazartesi
java.lang.OutOfMemoryError hatasında yapılacaklar
You need to increase the JVM settings. Here is are some recommendations for a Linux Box with 4GB of memory and 2 CPUs. (If you are using a different platform from Linux, these parameters may not apply.)
-Xmn1228m -XX:+AggressiveHeap -Xms2048m -Xmx2048m
-Xmn1228m
Garbage collector (Oracle recommends sizing the Eden space to be 60 to 70 percent of the total
heap size.)
-XX:+AggressiveHeap
Recommended if you are using two or more CPUs.
The -XX:+AggressiveHeap option inspects the system resources (size of memory and number of processors) and attempts to set variousparameters to be optimal for long-running, memory allocation-intensive jobs.
-Xms2048m
Iniatial heapsize. The heap size controls the amount of memory the JVM uses
-Xmx2048m
Maximum heapsize
