Feed aggregator

Another Trinidad Milestone

Omar Tazi - Tue, 2007-07-10 19:04
Last week the Apache MyFaces Trinidad team announced another milestone, the release of Trinidad v 1.2.1. This release comes with a JavaServer Faces 1.2 component library initially based on parts of Oracle's ADF Faces. Featured tags in this release include : breadcrumbs, navigation panels, panes, and tabbed panels. More tags can be found on this page. JSF 1.1 is still supported via Trinidad v 1.0.1.

Trinidad 1.2.1 binary and source distributions can be found in the central Maven repository under group id "org.apache.myfaces.trinidad". Downloads are available here.

If you need more frequent information on Trinidad, visit Matthias' blog.

Administring OCR

Pankaj Chandiramani - Mon, 2007-07-09 20:52

Administring OCR
We will see how OCR(Oracle cluster Registry) backup & recovery is done .

Backup
Oracle clusterware automatically creastes a OCR backup every 4 hrs & retains the last 3 backups . Actually the CRSD process creates & manages the backup for each full day & a weekly backup at nd of the week .
Default backup Location : $CRS_HOME/cdata/$clustername

Other than the automated backup , you can export the content any time you want to a file .
eg : $ ocrconfig -export emergency_export.ocr

You can see the list of ocrbackup by using :
$ ocrconfig -showbackup

As the backup directory is default , you can change the dir by using below command
$  ocrconfig -backuploc <directory>

Restore
OCR can be restored (if you have a backup ) be below command

NOTE: Should you need to restore, make sure all CRS daemons on all nodes are stopped.

To perform a restore, execute the command:

$ cd CRS_Home/cdata/crscluster
$ ocrconfig -restore  week.ocr

If you had exported using the above command & want to resore , then you can use import
IMPORTANT: Importing a backup when CRS daemons are running will only corrupt OCR.  

$ ocrconfig -import emergency_export.ocr

If anything is wrong than you can use the OCRDUMP comand to dump all info to a file & check
$ ocrdump OCR_DUMP

Also you can use :

$ ocrcheck 
to check for the stats of OCR

Categories: DBA Blogs

On the Road and Upcoming Talks

Marcos Campos - Mon, 2007-07-09 20:51
This week I am going to be in San Francisco. I have been invited to give a talk at the San Francisco Bay ACM Data Mining SIG on Wednesday. The title of the talk is In-Database Analytics: A Disruptive Technology. Here is a link with information on the talk.On Friday morning, I am presenting at the ST Seminar at Oracle's headquarter. The title of that talk is In-Database Mining: The I in BI. If Marcoshttp://www.blogger.com/profile/14756167848125664628noreply@blogger.com0
Categories: BI & Warehousing

SQL Techniques Tutorials: Pattern Matching Over Rows (New SQL Snippets Tutorial)

Joe Fuda - Mon, 2007-07-09 16:00

This topic was inspired by Tom Kyte's So, in your opinion ... blog post about a new SQL feature Oracle is considering (described at Pattern matching in sequences of rows).

I'll admit I've never tackled this kind of pattern matching before and I didn't understand the entire paper. It's a pretty dense read. From what I can tell though, using the new feature would be a lot like applying regular expressions to rows of values. This got me thinking. Instead of adding a whole new feature for this, why not simply convert the rows into strings and then use existing regular expression support to do the pattern matching?

Even if the feature described in the paper does something more sophisticated than this, tackling the requirement with existing functionality using simple string aggregation logic and regular expressions sounded like a fun challenge. Here's my stab at a solution.


...

Using SERVICE_NAMES in Oracle

Hampus Linden - Sun, 2007-07-08 12:42
The use of "SERVICE_NAMES" in Oracle is quite an old and probably well known feature but perhaps not everyone is familiar with it yet.
Got asked today about a recovery scenario where the administrator had a failed instance (broken data files, no logs, no backups, just a nightly exp), a new database was created with 'dbca', but with a new name to test importing the exp file.
All worked fine, but there was a problem with the database name. The application had the service name set in a number of config files and there was also a number of ETL scripts with service names hardcoded. The thinking at the time was to delete the old instance, remove all traces of it (oratab etc.) and then create it *again* with the same name.
Now hold on here, we have tested the imp in a new database, all is fine and all we want to do is allow connections to the old database instance name?
That's pretty much a one-liner, not a new database.
We can simply add the new name we want to "listen on" to the SERVICE_NAMES parameter.
Easy peasy.

Ok, here is what we should do. Quite a long example for something simple.
But hey, just want to make it clear.
oracle@htpc:admin$ lsnrctl status
-- What's the current db_name and service_names?
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 08-JUL-2007 18:31:22

Copyright (c) 1991, 2005, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 08-JUL-2007 18:23:39
Uptime 0 days 0 hr. 7 min. 43 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/10g/network/admin/listener.ora
Listener Log File /u01/oracle/10g/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=htpc)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "peggy" has 2 instance(s).
Instance "peggy", status UNKNOWN, has 1 handler(s) for this service...
Instance "peggy", status READY, has 1 handler(s) for this service...
Service "peggyXDB" has 1 instance(s).
Instance "peggy", status READY, has 1 handler(s) for this service...
Service "peggy_XPT" has 1 instance(s).
Instance "peggy", status READY, has 1 handler(s) for this service...
The command completed successfully

oracle@htpc:admin$ rsqlplus hlinden/hlinden as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 8 18:31:24 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> show parameter db_name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string peggy
SQL> show parameter service_names

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string peggy
SQL>
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

-- What can we connect to?
oracle@htpc:admin$ rsqlplus hlinden/hlinden@//htpc/peggy

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 8 18:31:53 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL>
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
oracle@htpc:admin$ rsqlplus hlinden/hlinden@//htpc/dog

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 8 18:31:58 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor


Enter user-name:

-- Ouch, that's the one we want!

oracle@htpc:admin$ rsqlplus hlinden/hlinden as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 8 18:32:01 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

-- Here is the 'one-liner'
SQL> alter system set service_names='peggy,dog' scope=spfile;

System altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 599785472 bytes
Fixed Size 2022600 bytes
Variable Size 167772984 bytes
Database Buffers 423624704 bytes
Redo Buffers 6365184 bytes
Database mounted.
Database opened.
SQL>
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

-- Let's see what changed. What can we connect to now?
oracle@htpc:admin$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 08-JUL-2007 18:33:57

Copyright (c) 1991, 2005, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 08-JUL-2007 18:23:39
Uptime 0 days 0 hr. 10 min. 18 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/10g/network/admin/listener.ora
Listener Log File /u01/oracle/10g/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=htpc)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "dog" has 1 instance(s).
Instance "peggy", status READY, has 1 handler(s) for this service...
Service "peggy" has 2 instance(s).
Instance "peggy", status UNKNOWN, has 1 handler(s) for this service...
Instance "peggy", status READY, has 1 handler(s) for this service...
Service "peggyXDB" has 1 instance(s).
Instance "peggy", status READY, has 1 handler(s) for this service...
Service "peggy_XPT" has 1 instance(s).
Instance "peggy", status READY, has 1 handler(s) for this service...
The command completed successfully

oracle@htpc:admin$ rsqlplus hlinden/hlinden@//htpc/dog

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 8 18:34:18 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
-- It works, but where are we?

SQL> select sys_context('userenv','SERVICE_NAME') from dual;

SYS_CONTEXT('USERENV','SERVICE_NAME')
------------------------------------------------------------------------------------------------------------------------
dog

SQL> select sys_context('userenv','DB_NAME') from dual;

SYS_CONTEXT('USERENV','DB_NAME')
------------------------------------------------------------------------------------------------------------------------
peggy

Issues while installing oracle redhat linux

Fadi Hasweh - Sun, 2007-07-08 04:25
Before a couple of days me and my friend ghassan who is also a certified apps 11i dba was doing an installation at my new p.c and while installing oracle linux on the new Intel 965 motherboard the installer freezes at " PCI: Probing PCI hardware (bus 00)" stage after checking redhat forums we found out that we need to start the installation using the following command from the command line to over come this issue
linux all-generic-ide pci=nommconf
of course that solved our issue after the installation finished and the system reboot we had to do the following the grub screen

at the grub menu. Select the kernel we want to edit, and press (e) to edit. Then move the cursor down to the "kernel" line and press (e) to edit that line. And add the all-generic-ide pci=nommconf at the kernel line.
Then press ENTER to accept the changes. And then press (b) to boot.

When the server boot successfully we had to add the all-generic-ide pci=nommconf at the /boot/grub/grub.conf file.

I guess that this issue in not only related to oracle linux but general to all redhat with this Intel motherboard (from what we saw at the redhat forums), anyway after that we did the installation for vision database and the installation went successfully but with one small issue (RW-50004) at step 2 of 5
At the log it shows (ORA-01031: insufficient privileges) this error was a typo of the oracle user group the group was ordba instated of oradba so we fixed that and the installation went successfully


Hope that helped and thank you guz for your help
Fadi
P.S I got the redhat issue resolved mostly from the http://www.linuxquestions.org/questions/showthread.php?t=479778 and some other forums

SOA Suite 10.1.3.3 patchset and "lost" instances

Clemens Utschig - Fri, 2007-07-06 14:09
It has been a long time since I have blogged the last time - mainly due to the huge amount of miles flown over the last 2 months.

After being in europe for conferences where I did evangelism on our next generation infrastructure, that is based on Service Component Architecture, it was time to revisit my roots and do some consulting in a POC as well as helping one of our customers with their performance problems.

Meanwhile, while I was on the road, we have released the 10.1.3.3 patchset, which includes among many small fixes here and there - some real cool enhancements, e.g
  1. A fault policy framework for BPEL, which allows you to specify policies for faults (e.g remoteFault) outside of the BPEL process and trigger retry activities, or submit the activity with a different payload from the console.

  2. Performance fixes for Oracle ESB - which boost the performance way up

  3. Several SOAP related fixes, especially around inbound and outbound WS-Security - if you happen to have Siebel and use WS-Sec features, the patch will make you happy

  4. Adapters: several huge improvements on performance and scalability

  5. BPEL 2 ESB: several fixes with transaction propagation as well more as sophisticated tracking
You can download it from metalink - patch number is 6148874

After working on 10.1.3.3 for the last 3 weeks, we added an enhancement to implement a federated ESB, where an ESB system binds to another via UDDI. The enhancement request's number is 6133448 and will be part of 10.1.3.4 (our next patch release) - and works exactly the way it works today in BPEL 10.1.3.1.

Back to my performance adventure.
The customer reported that under high load of his 10.1.3.1 instance, a lot of async instances (that were submitted to the engine) "got lost", which means - they could not find any trace of a running instance, nor have the target systems that were called out of the process being updated. Strange, isn't it?

A quick look into the recovery queue (basically a select against the invoke_message table) revealed that a lot of instances have been scheduled (status 0) - but somehow they stayed in the queue. Hugh, why that? Restarting the server helped, some instances were created but, - hugh still way to many weren't.

Checking the settings that we preseed - we figured out - that there is an issue with them. Looking into the Developer's guide it states:

"the sum of dspMaxThreads of ALL domains should be <= the number of listener threads on the workerbean".

Hmm - checking orion-ejb-jar.xml, section workerbean, in the application-deployments/orabpel/ejb_ob_engine folder revealed
  1. there are no listener-threads set and
  2. there are 40 ReceiverThreads
means? Given that we seed each domain with dspMaxThreads being 100, if you have five domains, 500 workerbean threads would be needed - way to much. And what happened to listener-threads?

<message-driven-deployment name="WorkerBean" instances="100" resource-adapter="BPELjms">

A quick check with the JMS engineering enlighted me on that. As we use JMS connectors now - you need to change the ReceiverThreads, to match the above formula.

<config-property>
  <config-property-name>ReceiverThreads</config-property-name>
  <config-property-value>40</config-property-value>
</config-property>

- and tune the dispatcherThreads on the domains to a reasonable level.

Next question: what are dispatcherThreads, and what does the engine need them for?

"ReceiverThreads specifies the maximum number of MDBs that can process BPEL requests asynchronously across all domains. Each domain can allocate a subset of these threads using the dspMaxThreads property; however, the sum of dspMaxThreads across all domains must not exceed the ReceiverThreads value.

When a domain decides that it another thread to execute an activity asychronously, it will send a JMS message to a queue; this message then gets picked up by a WorkerBean MDB, which will end up requesting the dispatcher for some work to execute. If the number of WorkerBean MDBs currently processing activities for the domain is sufficient, the dispatcher module may decide not to request for another MDB. The decision to request or an MDB is based on the current number of active MDBs, the current number pending (that is, where a JMS message has been sent but an MDB has not picked up the message), and the value of dspMaxThreads.

Setting both ReceiverThreads and dspMaxThreads to an appropriate value is important for maximizing throughput and minimizing thread context switching. If there are more dspMaxThreads specified than ReceiverThreads, the dispatcher modules for all the domains will think there are more resources they can request for than actually exist. In this case, the number of JMS messages in the queue will continue to grow as long as request load is high, thereby consuming memory and cpu. If the value of dspMaxThrads is not sufficient for a domain's request load, throughput will be capped.
Another important factor to consider is the value for ReceiverThreads - more threads does not always correlate with higher throughput. The higher the number of threads, the more context switching the JVM must perform. For each installation, the optimal value for ReceiverThreads needs to be found based on careful analysis of the rate of Eden garbage collections and cpu utilization. For most installation, a starting value of 40 should be used; the value can be adjusted up or down accordingly. Values greater than 100 are rarely suitable for small to medium sized boxes and will most likely lead to high cpu utilization just for JVM thread context switching alone."

With all the above in place, and a tuned dehydration store, we got them back on the track, even under high load all messages where picked up, and ended up as instances - recap:
  1. Make sure your settings of ReceiverThreads do match the sum of dspMaxThreads of all domains, and are set appropriately.

  2. If you have external adapters in use, that connect e.g to AQ, make sure AQ is tuned and also the adapter - this is where you are most likely to get timeouts, that would also contribute to recvoverable messages.

Verifying a Virtual X-Server (Xvfb) Setup

Solution Beacon - Thu, 2007-07-05 17:52
With E-Business Suite Release 11i and Release 12, an X-Server display is required for correct configuration. The application framework uses this for generating dynamic images, graphs, etc. It is also needed by reports produced in bit-map format. Note that for functionality using Java technology, the “headless” support feature can be implemented (requires J2SE 1.4.2 or higher). However, reports

Handy "Alert Debugging" tool

Rob Baillie - Wed, 2007-07-04 13:29
One of the coolest things about OO Javascript is that methods can be written to as if they are variables. This means that you can re-write functions on the fly. Bad for writing maintainable code if you're not structured; Fantastic for things like MVC controllers (rather use the controller to forward calls on to the model, you use it to rewire the view so that it calls it directly, and all without the view even realising it!). What I didn't realise was that the standard window object (and probably so many others out there) can have its methods overwritten like any other. Probably the simplest example of that proves to be incredibly useful... changing the alert function so that the dialog becomes a confirm window. Clicking cancel means that no further alerts are shown to the user. Great for when you're writin Javascript without a debugger and have to resort to 'alert debugging'.

window.alert = function(s) {
if( !confirm(s) ) window.alert = null;
}
In case you're wondering... I found it embedded in the comments on this post: http://www.joehewitt.com/blog/firebug_for_iph.php. Cheers Menno van Slooten

BAAG

Herod T - Wed, 2007-07-04 12:24

I joined the BAAG party awhile back - Battle Against Any Guess.

Go and give it a read, especially you folks that send emails that have a subject of PLZ HELP or URGENT PLZ or something similiar.


Access migration to Application Express without direct SQL Access

Donal Daly - Wed, 2007-07-04 09:05
I got asked a question recently how to complete an Access migration when you don't have direct SQL access to the Oracle instance where Oracle Application Express is installed (e.g. apex.oracle.com)?

For dealing with the application part, it is not an issue as the Application Migration Workshop feature of APEX (3.0+) allows you to load the results from the Oracle Migration Workbench Exporter for Microsoft Access, so you can capture the meta data for Access Forms and Reports. You can even download a copy of the exporter from the workshop itself.

The challenge is really the schema and data migration part using Oracle SQL Developer (1.2+). By default SQL Developer expects to be able to make a SQL connection to the target Oracle database. However I did think about this use case as we were designing this new Migration Workbench tool. I will describe a solution below.

The only requirement, is that you have SQL access to any Oracle database (9iR2+), because the workbench is driven using an underlying migration repository. You could use the Express Edition of Oracle for this purpose, which is totally free, if you didn't have SQL access to an existing Oracle database.

So let me outline the main steps involved:
  1. Start SQL Developer 1.2
  2. Make sure you set the following preference: Tools -> Preferences -> Migration -> Generation Options: Least Privilege Schema Migration
  3. Create a connection to your Access database. Make sure you can browse the tables in the access database and see the data
  4. Export the table data to csv format: For each table you want to migrate, use the context menu associated with tables to export as csv format. Make sure you select an encoding that matches your target database. I try to keep everything in UTF-8
  5. Create a connection to an Oracle schema.
  6. Create a migration repository in this connection. You can do this via the context menu on a connection
  7. From your Access connection, context menu, select: Capture Microsoft Access. This will launch the exporter and initiate the capture step of the migration.
  8. Take your captured model and now create an Oracle (converted) model by selecting the captured model and via the context menu: Convert to Oracle Model
  9. With you converted model, you can now create an object creation script using the context menu: Generate
  10. The result of step 9 is presented in a SQL Worksheet, you can edit this to remove objects you are not interested in, then via File -> Save As, save the contents to a SQL file.
  11. Login to your APEX Workspace
  12. To execute the object creation script you have just created. Goto SQL Workshop -> SQL Scripts -> Upload.
  13. Once the script is uploaded, View it and select the RUN action. This should create all your schema objects, view the results to make sure all the object were create successfully. You now be able to view these schema objects in the SQL Workshop -> Object Browser.
  14. To load our CSV files we will use the Utilities -> Data Load/Unload -> Load, selecting Load Spreadsheet Data. You will do this for each table we want to load data into. Select Load To : Existing Table and Load From: Upload File. You may need to apply appropriate format masks to get the data to load properly.
Notes:
  1. You should complete the schema and data migration part of your migration, prior to creating a migration project via the Application Migration Workshop.
  2. You may have some post migration cleanup steps, if you had access auto increment columns in your tables, you will need to reset the values of the sequences we have created.
  3. Another option to explore depending on your data, would be to export the data from Access tables as SQL INSERT statements, and then it just a simple matter of loading and run that SQL script via apex.

Thank you apps community

Fadi Hasweh - Wed, 2007-07-04 07:28
Today is my first day at work after the EPI-LASIK Surgery and my sight is facing haze, glare, ghosts and halos it will need more time before it become stable, I would like to take the chance to thank all apps community who wished me luck during my eye surgery, special thanks goes to hussine sawwan (hsawwan) for his phone call from Kuwait to check on me, and big thanks goes to Steven Chan for taking time to leave comment wishing me luck during the surgery. I would like also to thank marwan shantir, moh'd abu saif and adam shaug for their concerns. During my off days the most I missed was the oracle forums and the oracle blogs, I will need time to keep up with them.


Regards
Fadi

OAF Key Do's and Don'ts (Part 2) - Performance Tuning: "Top 10" OA Framework Development Rules

Andries Hanekom - Tue, 2007-07-03 14:10
1) ALWAYS use design time view objects (VOs) rather than dynamic VOs. Dynamic VOs have to be described by BC4J through an additional execute call for the VO prepared statement, and they potentially result in non shareable SQL due to different combinations.

2) ALWAYS set precision for all columns in the VO. This reduces the VO memory footprint. Without a set precision, for example, all String columns default to 4KB in size each.

3) AVOID calling VO.getRowCount to check for existence. getRowCount causes the entire VO row set to be fetched back to middle tier.

4) NEVER call VO.getEstimatedRowCount. getEstimatedRowCount executes select count(*) on the VO. This count is not guaranteed to stay the same, thus the method name.

5) ALWAYS call registerOutParameters with proper precision for callable statements. This reduces the callable statement memory footprint. Without a set precision, for example, all varchar columns default to 32KB.

6) ALWAYS use Oracle-style binding (:1, :2) in your SQL and DO NOT use JDBC style binding (?). This avoids parsing SQL at runtime to do String replacement.

7) AVOID coding generic VOs just to try to reuse them. The "one VO fits all"approach adds complexity to your SQL, increases number of attributes and VO memory footprint.

8) DO NOT execute searches by default nor allow blind queries.

9) Use PNG format not JPEG for BI graph beans.

10) Use JDeveloper to profile your code. JDeveloper 9i has memory, CPU and
event profilers.

OPMN in E-Business Suite R12

Subashini Bala - Mon, 2007-07-02 02:17
Oracle Process Manager & Notification Server (OPMN) is a new addition to R12 E-Business Suite Technology Stack. OPMN manages all Oracle Application Server 10g Components (like 1. Oracle HTTP Server, 2. OC4J etc). OPMN has three components.

1. Oracle Notification Server - Tool which carries messages (about failure, recovery, start) between different components of Oracle Application server.
2. Oracle Process Manager - Central process management tool which manages all components of Application Server 10g. It is responsible for start, stop, monitor, failure detection, automatic restart of the processes it manages.
3. PM (Process Manager) modules - Tool which communicates the messages originating from the running component, holds the control information on how to start, stop etc.

OPMN can be intergrated with Oracle Enterprise Manager 10g Application Server Control Console. AS Control Console is the graphical user interface and can manage all Oracle Application Server components, under single view.

So... What it does, for Oracle Apps tech Stack?

As OPMN can explicitly manage Oracle HTTP Server and OC4J, it can as well detect if they are down or unanswering.

Say for example, there are several nodes of Oracle E-Business Suite R12 middle tier, on clustering (load balancing on Oracle HTTP Server). OPMN can monitor all the processes by pinging them, So when they are down, OPMN can automatically restart them.

Now, what is Replication of Session state:

Some Applications wants Oracle Applications Server 10g (in its middle tier) to maintain the stateful information to serve all consecutive requests. When such application is deployed on clustering, it is necessary to maintain the session state across multiple processes, in order to provide transparent failover of the requests.

Multiple redundant process would be made available, so that any processes can serve the client request. In the event of failure of one process, the another process can serve the same request successfully.

So... Does Oracle E-Business Suite R12 support state replication?

* Oracle Applications Server supports state replication using Application-level clustering, for J2EE application.
* Oracle HTTP listener routes the requests to the redundant OC4J Components , hence ensuring the state is replicated.
* Oracle AS Web Cache 10g provides stateless and stateful load balancing. Multiple instances of Oracle AS web Cache configures to be a Web Cache Clustering, these provide failover clustering in case one of the WebCache member fails.

Thus, with E-Business Suite R12, Session State Replication (of the requests) is possible both for HTML based interface (OA framework Pages) and Professional user interface (Forms based).


Please feel free to share your thoughts on the same.

-Subashini

SQL Techniques Tutorials: Varying IN Lists (New SQL Snippets Tutorial)

Joe Fuda - Sun, 2007-07-01 19:00
This new SQL Snippets tutorial explores different approaches for implementing varying IN lists, including ones that use LIKE, MODEL, and integer series generator logic. The solutions will be presented as SQL commands, but the logic can be easily implemented in PL/SQL functions if required.
...

The new top 500 supercomputer list is out!

Hampus Linden - Sun, 2007-07-01 16:48
Finally had some time to look at the latest Top500 supercomputer list released last week at ISC '07 last week.

Lots of changes compared to the old list; two quite interesting new things. First of all is Intel multi-core chips, secondly we have Blades, loads and loads of blades.
A significant number of entries on the list are using Intel Xeon 5160 3.0GHz dual-core CPU's and there is also a number of quad-core systems.
Another interesting point is that the crown in terms of number of systems on the list has been passed from IBM (with 192 systems) to HP (with 201 systems).
The HP Cluster Platform BL460c holds quite a few spots on the list. Can't say I've heard much about HP's HPC offering so far, they're not exactly beating the drum on that one (compared to the IBM guy who's calling me every 2 months).

SGI holds a few new slots on the list as well, which is extra fun to see considering the hard last year SGI have had. One Altix system even made it to number 10 on the list (with Columbia on number 13).

Top 500

Fix Control

Fairlie Rego - Sat, 2007-06-30 08:59
Oracle has introduced a fix control mechanism in 10.2 which allows customers to turn off fixes for optimizer related bugs. This is governed by the underscore parameter _fix_control. The bugs for which fixes can be turned off are listed in v$session_fix_control and v$system_fix_control and can also be seen in a 10053 output.

On a 10.2.0.2 database

SQL> select distinct bugno from v$session_fix_control;

BUGNO
----------
3499674
4556762
4569940
3118776
4519016
4175830
4663698
4631959
4550003
4584065
4487253
4611850
4663804
4602374
4728348
4723244
4554846
4545833
4488689
4519340

20 rows selected.

SQL> select distinct sid from v$mystat;

SID
----------
143

SQL> alter session set "_fix_control"='4728348:OFF';

Session altered.

SQL> select * from v$session_fix_control where session_id=143 and bugno=4728348;

SESSION_ID BUGNO VALUE DESCRIPTION OPTIMIZER_FEATURE_ENABLE EVENT IS_DEFAULT
---------- ---------- ---------- ---------------------------------------------------------------- --
143 4728348 0 consider mjc if equi-joined pred is dropped in kkoipt 10.2.0.2

A value of 0 indicates the fix is off.

SQL> alter session set "_fix_control"='4728348:ON';

Session altered.

SQL> select * from v$session_fix_control where session_id=143 and bugno=4728348;

SESSION_ID BUGNO VALUE DESCRIPTION OPTIMIZER_FEATURE_ENABLE EVENT IS_DEFAULT
---------- ---------- ---------- ---------------------------------------------------------------- --
143 4728348 1 consider mjc if equi-joined pred is dropped in kkoipt 10.2.0.2

It appears to me that if you need two fixes off in a session you have to specify them together else you lose the first change.

SQL> alter session set "_fix_control"='4728348:OFF';

Session altered.

SQL> alter session set "_fix_control"='4663698:OFF';

Session altered.

SQL> select * from v$session_fix_control where session_id=143 and bugno in (4728348,4663698);

SESSION_ID BUGNO VALUE DESCRIPTION OPTIMIZER_FEATURE_ENABLE EVENT IS_DEFAULT
---------- ---------- ---------- ---------------------------------------------------------------- --
143 4663698 0 for cached NL table set tab_cost_io to zero 10.2.0.2 0 0
143 4728348 1 consider mjc if equi-joined pred is dropped in kkoipt 10.2.0.2

Hence if you need more than one fix OFF you need to supply both bug numbers in the same command

SQL> alter session set "_fix_control"='4728348:OFF','4663698:OFF';

Session altered.

SQL> select * from v$session_fix_control where session_id=143 and bugno in (4728348,4663698);

SESSION_ID BUGNO VALUE DESCRIPTION OPTIMIZER_FEATURE_ENABLE EVENT IS_DEFAULT
---------- ---------- ---------- ---------------------------------------------------------------- --
143 4663698 0 for cached NL table set tab_cost_io to zero 10.2.0.2 0 0
143 4728348 0 consider mjc if equi-joined pred is dropped in kkoipt 10.2.0.2

OA Framework or ADF?

Andries Hanekom - Sat, 2007-06-30 02:00
Check out Sara Woodhull's article on OA Framework and ADF.

E-Business Suite R12 - Software Load Balancing

Subashini Bala - Fri, 2007-06-29 07:39
Found an interesting post by Steven (for E-Business Suite 11i version)

http://blogs.oracle.com/schan/newsItems/departments/networkingArchitectures/2006/06/16#a322

How about software load balancing with the Release 12 E-Business Suite !!

Let us start analyzing Apps-TechStack a bit. I remember, before r12 Oracle had Jserv in the middle tier. Now, Jserv has been replaced by OC4J with the Release 12. And therefore software load balancing of E-Business Suite R12 is technically possible, without the need to go for hardware load balancer.

There are 3 instances of OC4J running at the middle tier.

1. Forms => for Forms based interface
2. Oacore => for OAF Interface (HTML based interface)
3. Oafm => (Oracle Application Fusion Middleware) for mapviewer, webservices and ascontrol.

Until 11i , Oracle has only talked about hardware load balancer/router. Tech Stack of R12 supports software load balancing as well.

Now, What is load balancing?

Load balancing involves allocating the request between processes. A couple of important features makes Load balancing possible.

1) Allocating/Routing Algorithm:
Algorithm (popular ones are round robin, random, hash, allocating based on priority) to route the requests to different process(es).

2) Failure detection:
Requests which are broke-down/dead should be recognised and mark the corresponding processes as 'unused'.

Allocate requests - Where can we do that with Apps TechStack?

Software Load Balancing, in other words, 'routing the requests' is possible at three levels.

1. From Oracle AS WebCache 10gversion to Oracle HTTP Server
2. From Oracle HTTP Server to OC4J (using mod_oc4j)
3. From OC4J (Oracle Containers for J2EE) to Database

For the Professional user interface (Forms based screens), load balancing at "From OC4J to DB" level would not be possible, because the DB connection would happen from Forms Services.

Otherwise, Software load balancing should be possible for both Professional user interface and HTML based user interface (OA framework pages).

Please feel free to share your thoughts on the same.

-Subashini

PS: I know the questions running across.... With Load balancing architecture,
1) which will detect the failure nodes ?
2) How does the cluster of oracle application Servers 10g get to know about the failed node?
3) Will the next node be able to continue serving the request, when one node fail ?
4) where does the state replication occur? How come the second node get to know the continuation point, to serve the same request?

please wait until my next blog.

Joe's Blog: And Now for Something Completely Different

Joe Fuda - Thu, 2007-06-28 12:00

Every once in a while my non-programmer friends give me feedback about my site like "the blog posts are good, but when it comes to all that SQL stuff, well, it's a little over my head ... SQL sure seems to rely on that SELECT command a lot though."

So, I thought it might be good to take a break from SQL tutorials and spend time writing about something a broader audience will find useful. I looked through my archives and found some notes I made a few years back when I rewired the telephone cabling in my home and installed some LAN jacks. At the time I was surprised how difficult it was to get simple, straightforward answers to questions like what kind of cable to use or what kind of distribution device to buy. Even learning the proper names for connectors and figuring out which coloured wires go together proved more complex than I expected.

The amount and quality of information on the subject has gotten better over the years, but I still haven't found a source that presents all the home wiring information I need in a practical, systematic way. You'll find my stab at sorting it all out starting at Residential Telecommunications.

Be forewarned though, if you thought SQL was complicated wait until you learn about the 11 different ways to wire a telephone jack! :-)


...

Pages

Subscribe to Oracle FAQ aggregator