tag:blogger.com,1999:blog-81330260345796485002024-03-06T04:09:29.848+11:00Steve's BlogTechnical Information on Oracle Middleware.Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.comBlogger40125tag:blogger.com,1999:blog-8133026034579648500.post-17810790374384761822016-02-09T11:49:00.002+11:002016-02-12T11:54:26.210+11:00Installing OBIEE 11.1.1.7.0 fails when starting the managed server – b1_server1<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
I'm trying to
install OBIEE 11.1.1.7.0 and the managed OBIEE server – b1_server1
– was always failing causing the install to fail. After several attempts and double checking all the
system parameters it was still continually getting stuck and unable to
start the managed server. The only error I could find is this:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<span style="color: blue;">
</span>
<pre class="xml" name="code">Stopping Derby Server...
Starting AdminServer
Starting the domain ...
progress in calculate progress1
Executing Task: Starting Managed Server: bi_server1
oracle.as.install.bi.wls.ServerLifeCycleException: Failed to achieve state RUNNING in 3600seconds. The server is currently in state STARTING
at oracle.as.install.bi.wls.ServerLifeCycle.waitForManagedWLSServerState(ServerLifeCycle.java:119)
at oracle.as.install.bi.wls.ServerLifeCycle.startServerSynchronous(ServerLifeCycle.java:59)
at oracle.as.install.bi.biconfig.standard.StartStopManagedServer.doExecute(StartStopManagedServer.java:55)
at oracle.as.install.bi.biconfig.standard.AbstractProvisioningTask.execute(AbstractProvisioningTask.java:70)
at oracle.as.install.bi.biconfig.standard.StandardProvisionTaskList.execute(StandardProvisionTaskList.java:66)
at oracle.as.install.bi.biconfig.BIConfigMain.doExecute(BIConfigMain.java:113)
at oracle.as.install.engine.modules.configuration.client.ConfigAction.execute(ConfigAction.java:375)
at oracle.as.install.engine.modules.configuration.action.TaskPerformer.run(TaskPerformer.java:88)
at oracle.as.install.engine.modules.configuration.action.TaskPerformer.startConfigAction(TaskPerformer.java:105)
at oracle.as.install.engine.modules.configuration.action.ActionRequest.perform(ActionRequest.java:15)
at oracle.as.install.engine.modules.configuration.action.RequestQueue.perform(RequestQueue.java:96)
at oracle.as.install.engine.modules.configuration.standard.StandardConfigActionManager.start(StandardConfigActionManager.java:186)
at oracle.as.install.engine.modules.configuration.boot.ConfigurationExtension.kickstart(ConfigurationExtension.java:81)
at oracle.as.install.engine.modules.configuration.ConfigurationModule.run(ConfigurationModule.java:86)
at java.lang.Thread.run(Thread.java:662)
</pre>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
One time when it was
stuck trying to start the managed server, I decided to checked the
entropy and noticed that it was low.<br />
</div>
<span style="color: blue;"></span><br />
<pre class="xml" name="code">[root@beast-wls-au ~]# cat /proc/sys/kernel/random/entropy_avail
157
[root@beast-wls-au ~]# cat /proc/sys/kernel/random/entropy_avail
141
[root@beast-wls-au ~]# cat /proc/sys/kernel/random/entropy_avail
132
[root@beast-wls-au ~]# cat /proc/sys/kernel/random/entropy_avail
183
[root@beast-wls-au ~]# cat /proc/sys/kernel/random/entropy_avail
173
[root@beast-wls-au ~]# cat /proc/sys/kernel/random/entropy_avail
149
</pre>
<br />
As soon as I ran rngd to
increase entropy pool, the managed server started and continued to
install.
<br />
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
<span style="color: blue;"></span><br />
<pre class="xml" name="code">[root@beast-wls-au ~]# rngd -r /dev/urandom -o /dev/random -f -t 1 &
[root@beast-wls-au ~]#
[root@beast-wls-au ~]#
[root@beast-wls-au ~]# cat /proc/sys/kernel/random/entropy_avail
3526
[root@beast-wls-au ~]# cat /proc/sys/kernel/random/entropy_avail
3605
[root@beast-wls-au ~]#
</pre>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
I'll have to look
into an entropy generator to avoid this issue in the future.
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
I installed OBIEE
11.1.1.7.0 on OEL6_u6 which sit inside OVS 3.3.2</div>
Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-9714224815344951252013-12-20T15:40:00.000+11:002013-12-20T15:49:44.818+11:00Receiving 'startWebLogic.sh: 1: eval: Syntax error: Unterminated quoted string Process exited.' in JDev when starting the Integrated Weblogic Server.I'm using Linux Mint 16, and when I try to start the Integrated Weblogic Server (Run -> Start Server Instance) in JDeveloper I get this error:<br />
<br />
<span style="color: red;">*** Using port 7101 ***<br />/home/steve/.jdeveloper/system11.1.1.6.38.62.29/DefaultDomain/bin/startWebLogic.sh<br />[waiting for the server to complete its initialization...]<br />/home/steve/.jdeveloper/system11.1.1.6.38.62.29/DefaultDomain/bin/startWebLogic.sh: 1: eval: Syntax error: Unterminated quoted string<br />Process exited.</span><br />
<br />
<br />
To workaround this, I changed the sha-bang in startWebLogic.sh script to run bash. i.e. #!/bin/bash<br />
<br />
You also need to do the same for stopWebLogic.sh script to stop instance later.Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-31105598041079197052013-09-26T15:27:00.000+10:002013-09-26T15:37:03.391+10:00Failed to locate the Google Cloud Messaging for Android Library file named "gcm.jar". (oracle.adfmf.framework.dt.deploy.android.deployers.ValidatePreferencesDeployer)Using JDev 11.1.2.4.0 I tried deploying a simple app to the emulator when I received the following error:<br />
<br />
<b><span style="color: red;">[02:46:21 PM] Deployment cancelled.<br />[02:46:21 PM] ---- Deployment incomplete ----.<br />[02:46:21 PM] Failed to locate the Google Cloud Messaging for Android Library file named "gcm.jar". (oracle.adfmf.framework.dt.deploy.android.deployers.ValidatePreferencesDeployer)</span></b><br />
<br />
I then installed GCM (which now seems to be deprecated) from Andriod SDK Manager and it worked.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfXBTOqiB4eO8J_D0sqU4NawXTbakL3EmPiH6cM15I5PfX4Fs7BNJizQ46STVIOfsiAEp9y5UErGF9DkOaOPf79PirbJG9T7GQlBc7TktZfjePmxepktR_i9KuHHUeZoR30SaWWAQRt7kx/s1600/Install.GCM.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfXBTOqiB4eO8J_D0sqU4NawXTbakL3EmPiH6cM15I5PfX4Fs7BNJizQ46STVIOfsiAEp9y5UErGF9DkOaOPf79PirbJG9T7GQlBc7TktZfjePmxepktR_i9KuHHUeZoR30SaWWAQRt7kx/s320/Install.GCM.jpg" width="320" /></a></div>
<br />Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-70143938571429947572013-02-11T12:02:00.000+11:002013-02-11T12:04:25.435+11:00How to create an OCI connection in Jdev - Database NavigatorI have been trying to create an OCI connection in the database navigator using Jdev 11.1.2.3. Following these docs:<br />
<br />
<a href="http://docs.oracle.com/cd/E35521_01/user.111230/e17455/connect_work_databases.htm#OJDUG5131">http://docs.oracle.com/cd/E35521_01/user.111230/e17455/connect_work_databases.htm#OJDUG5131</a><br />
<a href="http://docs.oracle.com/cd/E35521_01/user.111230/e17455/connect_work_databases.htm#OJDUG2432">http://docs.oracle.com/cd/E35521_01/user.111230/e17455/connect_work_databases.htm#OJDUG2432</a><br />
<br />
I'm on a 64 bit platform. So the first thing I do is set JDev to use 64bit JDK by editing the jdev.conf file i.e.<br />
... <br />
# Directive SetJavaHome is not required by default, except for the base<br />
# install, since the launcher will determine the JAVA_HOME. On Windows<br />
# it looks in ..\..\jdk, on UNIX it first looks in ../../jdk. If no JDK<br />
# is found there, it looks in the PATH.<br />
#<br />
#SetJavaHome D:\Oracle\Jdev\111230-prod\jdk160_24<br />
SetJavaHome C:\Program Files\Java\jdk1.6.0_39<br />
...<br />
<br />
I'll also add the parameters for JDBC driver and path to the OCI dll's.<br />
<br />
#For JDBC for OCI<br />
AddVMOption -Doracle.jdbc.library=D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ojdbc6.jar<br />
AddNativeCodePath D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0<br />
<br />
When I start JDev, I receive a warning for the parameter AddNativeCodePath. And I'm unable to connect.<br />
<br />
[sracanov@SRACANOV-AU D]$ jdev -verbose<br />
WARNING: Unknown directive: AddNativeCodePath<br />
savedArg0 = D:\Oracle\JDev\111230-prod\jdeveloper\jdev\bin\jdev.exe<br />
VM to launch C:\Program Files\Java\jdk1.6.0_39\jre\bin\server\jvm.dll<br />
Restarting the launcher with the 64bit version<br />
Reading exe header from jvm.dll, Machine=8664<br />
Jvm is 64bit<br />
Checking toplevel for D:\Oracle\JDev\111230-prod\jdeveloper\jdev\bin\..\..\ide\bin\launcher.dll = 0<br />
About to relaunch with command line: D:\Oracle\JDev\111230-prod\jdeveloper\jdev\bin\jdev64.exe -verbose<br />
WARNING: Unknown directive: AddNativeCodePath<br />
...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6P5wlD7-2yLIwIbRfHkhe_joy7Ayyq8jQzMY2FOxWt5duvCrgKn9-edmabt5ujQthD1849x0iq64vBFiTfJ-WnhJ4GwKLDnB84qHhxLn8npeopOjAw4RKtNWxzGuZkaAIN5Mw8SnqBiCc/s1600/no.ocijdbc11.in.java.library.path.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6P5wlD7-2yLIwIbRfHkhe_joy7Ayyq8jQzMY2FOxWt5duvCrgKn9-edmabt5ujQthD1849x0iq64vBFiTfJ-WnhJ4GwKLDnB84qHhxLn8npeopOjAw4RKtNWxzGuZkaAIN5Mw8SnqBiCc/s320/no.ocijdbc11.in.java.library.path.jpg" width="320" /></a></div>
<br />
<br />
It seems AddNativeCodePath is not recognised as a parameter. So I've comment out the line and start it by passing the library in that path environment variable.<br />
<br />
<span id="form1:panelPage1">[sracanov@SRACANOV-AU D]$ set path=D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0;%path%<br /><br />[sracanov@SRACANOV-AU D]$ jdev -verbose<br />savedArg0 = D:\Oracle\JDev\111230-prod\jdeveloper\jdev\bin\jdev.exe<br />VM to launch C:\Program Files\Java\jdk1.6.0_39\jre\bin\server\jvm.dll<br />Restarting the launcher with the 64bit version<br />Reading exe header from jvm.dll, Machine=8664<br />Jvm is 64bit<br />Checking toplevel for D:\Oracle\JDev\111230-prod\jdeveloper\jdev\bin\..\..\ide\bin\launcher.dll = 0<br />About to relaunch with command line: D:\Oracle\JDev\111230-prod\jdeveloper\jdev\bin\jdev64.exe -verbose<br />savedArg0 = D:\Oracle\JDev\111230-prod\jdeveloper\jdev\bin\jdev64.exe<br />VM to launch C:\Program Files\Java\jdk1.6.0_39\jre\bin\server\jvm.dll<br />JNI Option: -Xbootclasspath/a:C:\Program Files\Java\jdk1.6.0_39\lib\tools.jar;C:\Program Files\Java\jdk1.6.0_39\lib\dt.jar<br />JNI Option: -Dsun.java2d.noddraw=true<br />JNI Option: -Dnetbeans.home=../../netbeans/platform/<br />JNI Option: -Dnetbeans.logger.console=true<br />JNI Option: -Dexcluded.modules=org.eclipse.osgi<br />JNI Option: -Dide.cluster.dirs=../../netbeans/netbinox/:../../netbeans/bridge/:../../<br />JNI Option: -Xmx800M<br />JNI Option: -Xms128M<br />JNI Option: -Xverify:none<br />JNI Option: -Doracle.ide.extension.HooksProcessingMode=LAZY<br />JNI Option: -Dorg.eclipse.equinox.simpleconfigurator.configUrl=file:bundles.info<br />JNI Option: -Dosgi.bundles=file:../ide/lib/oracle.ide.osgi.jar@3:start<br />JNI Option: -Dosgi.bundles.defaultStartLevel=1<br />JNI Option: -Dosgi.configuration.cascaded=false<br />JNI Option: -Dosgi.noShutdown=true<br />JNI Option: -Dorg.osgi.framework.bootdelegation=*<br />JNI Option: -Dosgi.parentClassloader=app<br />JNI Option: -Xbootclasspath/p:../../rdbms/jlib/ojdi.jar<br />JNI Option: -Dosgi.classloader.singleThreadLoads=true<br />JNI Option: -Dosgi.bundlefile.limit=2000<br />JNI Option: -Xbootclasspath/a:../../../oracle_common/modules/oracle.nlsrtl_11.1.0/orai18n-collation.jar<br />JNI Option: -Xbootclasspath/a:../../../oracle_common/modules/oracle.nlsrtl_11.1.0/orai18n-mapping.jar<br />JNI Option: -Xbootclasspath/a:../../../oracle_common/modules/oracle.nlsrtl_11.1.0/orai18n-servlet.jar<br />JNI Option: -Xbootclasspath/a:../../../oracle_common/modules/oracle.nlsrtl_11.1.0/orai18n-utility.jar<br />JNI Option: -Xbootclasspath/a:../../../oracle_common/modules/oracle.nlsrtl_11.1.0/orai18n.jar<br />JNI Option: -Xbootclasspath/a:../../../oracle_common/modules/oracle.xdk_11.1.0/xmlparserv2.jar<br />JNI Option: -Djavax.xml.parsers.DocumentBuilderFactory=oracle.xml.jaxp.JXDocumentBuilderFactory<br />JNI Option: -Djavax.xml.parsers.SAXParserFactory=oracle.xml.jaxp.JXSAXParserFactory<br />JNI Option: -Dorg.xml.sax.driver=oracle.xml.parser.v2.SAXParser<br />JNI Option: -Dide.feedback-server=ide.us.oracle.com<br />JNI Option: -Xbootclasspath/a:../../ide/lib/xml-factory.jar<br />JNI Option: -Djavax.xml.transform.TransformerFactory=oracle.ide.xml.SwitchableTransformerFactory<br />JNI Option: -XX:MaxPermSize=288M<br />JNI Option: -Xbootclasspath/p:../lib/lwawt.jar<br />JNI Option: -Xbootclasspath/p:../lib/apt-expose.jar<br />JNI Option: -Dsun.awt.keepWorkingSetOnMinimize=true<br />JNI Option: -XX:+HeapDumpOnOutOfMemoryError<br />JNI Option: -Doracle.jdeveloper.webservice.showAllOwsmPolicyTypes=false<br />JNI Option: -Doracle.jdeveloper.webservice.hidePropertyOverride=false<br />JNI Option: -Dsun.awt.disablegrab=true<br />JNI Option: -Xbootclasspath/p:../../rdbms/jlib/ojdi.jar<br />JNI Option: -Dide.patches.dir=jdev/lib/patches<br />JNI Option: -Doracle.jdbc.library=D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ojdbc6.jar<br />JNI Option: -Dide.startingArg0=D:\Oracle\JDev\111230-prod\jdeveloper\jdev\bin\jdev64.exe<br />JNI Option: -Dide.startingArg1=-verbose<br />JNI Option: -Dide.launcherProcessId=5428</span><br />
<span id="form1:panelPage1">...</span><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOjnH03g4ai9EwsHvh-4uzi4UdsDGHYHu2wSvwFhrm1qbBVjk8msUIvoVbT_Jd72SUXHdyeHR3RaqPF2z-DFsCPyKb2hS8nwq4pBZY2liPi6bZ-E7Y4aRZDtuo-Bc6k5_tbDfpyMb76DQg/s1600/oci.connect.jpg" imageanchor="1"></a> <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn05DQztb-eYZ5RiKJnXB8OWTpKueZDomJbdNxmCUiqP3lcHHLlRJjaG6VeWSpT07ZPMZdiyQWzflGl4IYSXgdEzPxFPWFrEyCcDMnlM7TtbhyZG-l_Wb6RPFy1IwwVNjVLXKqmX6CCw6B/s1600/oci.connect.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="234" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn05DQztb-eYZ5RiKJnXB8OWTpKueZDomJbdNxmCUiqP3lcHHLlRJjaG6VeWSpT07ZPMZdiyQWzflGl4IYSXgdEzPxFPWFrEyCcDMnlM7TtbhyZG-l_Wb6RPFy1IwwVNjVLXKqmX6CCw6B/s320/oci.connect.jpg" width="320" /></a></div>
<br />
<br />
I've used an instance client here which you can read about the setup <a href="http://steveracanovic.blogspot.com.au/2012/03/connection-example-of-jdbc-thin-thick.html">here</a>.
Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-66228817744429482022012-05-07T11:07:00.000+10:002012-05-07T11:21:45.892+10:00NT_STATUS_ACCESS_DENIED listingMy samba server stop working the other day and which left me stump and unable to connect.
<pre style="color:blue">
[oracle@beast /]$ smbclient -L //sracanov-au3/My.Contents
Password:
Domain=[SRACANOV-AU3] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]
Sharename Type Comment
--------- ---- -------
My.Contents Disk My Files
IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.39.el5_8)
oracle Disk Home Directories
Domain=[SRACANOV-AU3] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]
Server Comment
--------- -------
Workgroup Master
--------- -------
AU-ORACLE EDJONES
[oracle@beast /]$ smbclient //sracanov-au3/My.Contents -Uoracle%password
Domain=[SRACANOV-AU3] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]
smb: \> dir
NT_STATUS_ACCESS_DENIED listing \*
58681 blocks of size 16777216. 33764 blocks available
smb: \>
</pre>
<br/>
After thoroughly checking the configuration files again and user details I was still in the same place.
I eventually found the issue was in SELinux, and once I'd disable it, it worked again.
<br/><br/>
<pre style="color:blue">
[root@sracanov-au3 My.Contents]# setsebool -P smbd_disable_trans 1
[root@sracanov-au3 My.Contents]# service smb restart
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@sracanov-au3 My.Contents]#
</pre>
<br/>
<pre style="color:blue">
[oracle@beast /]$ smbclient //sracanov-au3/My.Contents -Uoracle%password
Domain=[SRACANOV-AU3] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]
smb: \> dir
. D 0 Fri Apr 13 12:36:46 2012
.. D 0 Thu Apr 12 10:09:40 2012
My.Software D 0 Tue May 1 10:46:18 2012
My.Projects D 0 Fri Apr 13 11:35:45 2012
My.Technical.Docs D 0 Fri Apr 13 12:36:44 2012
My.Registry D 0 Fri Apr 13 11:23:37 2012
My.VMWare.Images D 0 Thu Apr 12 11:00:59 2012
My.Thunderbird D 0 Fri Apr 13 11:22:39 2012
My.Music D 0 Fri Apr 13 11:35:58 2012
My.Bookmarks D 0 Fri Apr 13 12:36:46 2012
My.Docs D 0 Fri Apr 13 10:30:31 2012
My.Pictures D 0 Fri Apr 13 12:36:45 2012
My.Backups D 0 Tue May 1 15:59:25 2012
58681 blocks of size 16777216. 33764 blocks available
smb: \>
</pre>Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-70239312333636861192012-03-14T12:10:00.000+11:002013-11-01T10:37:56.060+11:00A Connection Example of JDBC THIN, THICK or SQLPLUS using Oracle Instant Client<span id="form1:panelPage1">First, download the instant client you which to use from - <a href="http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html">http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html</a></span><br />
<span id="form1:panelPage1"><br />
The following steps demonstrate how to use it with simple connection.<br />
<br />
1. I downloaded and extracted the following zips file; <br />
<span style="color: red;"><br />- instantclient-basic-win-x86-64-11.1.0.7.0.zip<br />- instantclient-sqlplus-win-x86-64-11.1.0.7.0.zip</span><br />
to: D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0<br />
</span><br />
<pre><span id="form1:panelPage1"><span style="color: blue;">
[sracanov@SRACANOV-AU D]$ ll
Volume in drive D is Data
Volume Serial Number is 12FC-9B4B
Directory of D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0
07/02/2012 01:47 PM <dir> .
07/02/2012 01:47 PM <dir> ..
29/10/2008 07:09 AM 14,336 adrci.exe
29/10/2008 07:09 AM 4,648 adrci.sym
29/10/2008 07:09 AM 335 BASIC_README
29/10/2008 07:09 AM 47,104 genezi.exe
29/10/2008 07:09 AM 26,272 genezi.sym
12/01/2006 11:36 PM 342 glogin.sql
15/10/2008 07:11 AM 1,060,864 mfc71.dll
15/10/2008 07:11 AM 348,160 msvcr71.dll
29/10/2008 07:06 AM 659,968 oci.dll
29/10/2008 07:06 AM 426,200 oci.sym
07/10/2008 11:58 PM 132,608 ocijdbc11.dll
07/10/2008 11:58 PM 22,712 ocijdbc11.sym
26/10/2008 01:10 PM 468,480 ociw32.dll
26/10/2008 01:10 PM 73,024 ociw32.sym
07/10/2008 11:00 PM 1,890,262 ojdbc5.jar
07/10/2008 11:00 PM 1,988,193 ojdbc6.jar
14/10/2008 11:47 PM 1,527,296 orannzsbb11.dll
14/10/2008 11:47 PM 382,728 orannzsbb11.sym
27/10/2008 01:41 PM 1,330,176 oraocci11.dll
29/10/2008 07:09 AM 421,472 oraocci11.sym
29/10/2008 07:08 AM 126,414,336 oraociei11.dll
29/10/2008 07:08 AM 7,200,336 oraociei11.sym
29/10/2008 07:09 AM 426,496 orasql11.dll
29/10/2008 07:09 AM 35,744 orasql11.sym
02/10/2008 11:24 PM 1,685,504 Orasqlplusic11.dll
02/10/2008 11:24 PM 757,760 sqlplus.exe
29/10/2008 07:10 AM 135,976 sqlplus.sym
29/10/2008 07:10 AM 339 SQLPLUS_README
29/10/2008 07:09 AM <dir> vc71
07/02/2012 01:47 PM <dir> vc8
28 File(s) 147,481,671 bytes
4 Dir(s) 41,876,062,208 bytes free</dir></dir></dir></dir></span></span></pre>
<span id="form1:panelPage1">
<br />
<br />
2. Use sqlplus.exe and connect to the database.<br />
</span><br />
<pre><span id="form1:panelPage1"><span style="color: blue;">
[sracanov@SRACANOV-AU D]$ sqlplus scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sracanov-au3.au.oracle.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=linux11gr2.au.oracle.com)))
SQL*Plus: Release 11.1.0.7.0 - Production on Wed Mar 14 11:10:17 2012
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[sracanov@SRACANOV-AU D]$</span></span></pre>
<span id="form1:panelPage1">
<br />
This is how my database listener looks like:<br />
</span><br />
<pre><span id="form1:panelPage1"><span style="color: blue;">
[oracle@sracanov-au3 dbhome_1]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 14-MAR-2012 11:17:49
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 13-MAR-2012 10:22:16
Uptime 1 days 0 hr. 49 min. 33 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/product/11.2.0/dbhome_1/log/diag/tnslsnr/sracanov-au3/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sracanov-au3.au.oracle.com)(PORT=1521)))
Services Summary...
Service "linux11gr2.au.oracle.com" has 1 instance(s).
Instance "linux11gr2", status READY, has 1 handler(s) for this service...
Service "linux11gr2XDB.au.oracle.com" has 1 instance(s).
Instance "linux11gr2", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@sracanov-au3 dbhome_1]$</span></span></pre>
<span id="form1:panelPage1">
<br />
<br />
<span id="form1:panelPage1">3. Download the simple standalone java client from Doc <a href="https://supporthtml.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?id=467804.1">467804.1</a> - <a href="https://supporthtml.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?id=467804.1">How To Determine The Exact JDBC Driver Version (9.x - 11.x) For Standalone Programs (Doc ID 467804.1)</a></span>
</span><br />
<pre><span id="form1:panelPage1"><span style="color: blue;">
[sracanov@SRACANOV-AU D]$ cd /d C:\Users\sracanov\Downloads
[sracanov@SRACANOV-AU C]$ ll
Volume in drive C is System
Volume Serial Number is 3E06-1C2F
Directory of C:\Users\sracanov\Downloads
07/02/2012 11:47 AM <dir> .
07/02/2012 11:47 AM <dir> ..
07/02/2012 11:45 AM 3,401 JDBCInfo.java
1 File(s) 3,401 bytes
2 Dir(s) 146,445,778,944 bytes free
[sracanov@SRACANOV-AU C]$ java -version
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)
[sracanov@SRACANOV-AU C]$</dir></dir></span></span></pre>
<span id="form1:panelPage1">
<br />
There are 2 crucial points here:<br />
A) - I'am using JDK 1.6, so I must use ojdbc6.jar driver.<br />
B) - I am using 64bit JDK. My platform is 64bit. As per the files downloaded *win-x86-64-11.1.0.7.0*. (If platform is 64bit, use 64bit JDK and Client. This needs to be correct for OCI to work. Due to dll's. Thin will run with 32bit).<br />
<br />
My platform:<br />
</span><br />
<pre><span id="form1:panelPage1"><span style="color: blue;">
[sracanov@SRACANOV-AU C]$ systeminfo | findstr /B /C:"OS Name" /C:"System Type"
OS Name: Microsoft Windows 7 Professional
System Type: x64-based PC</span></span></pre>
<span id="form1:panelPage1">
<br />
If you dont have the correct JDK as per your platform, you can download it from here - <span id="form1:panelPage1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a></span><br />
<br />
4. Now compile and run using JDBC THIN to connect.<br />
</span><br />
<pre><span id="form1:panelPage1"><span style="color: blue;">
[sracanov@SRACANOV-AU C]$ javac -cp .;D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ojdbc6.jar JDBCInfo.java
[sracanov@SRACANOV-AU C]$ java -cp .;D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ojdbc6.jar JDBCInfo jdbc:oracle:thin:scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(PORT=1521)
(HOST=sracanov-au3.au.oracle.com))(CONNECT_DATA=(SERVICE_NAME=linux11gr2.au.oracle.com)))
Database
==============
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
JDBC
==============
Oracle JDBC driver: 11.1.0.7.0-Production
Connection URL
==============
jdbc:oracle:thin:scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(PORT=1521)(HOST=sracanov-au3.au.oracle.com))(CONNECT_DATA=(SERVICE_NAME=linux11gr2.au.oracle.com)))
JVM
===
Sun Microsystems Inc.
Java HotSpot(TM) 64-Bit Server VM
20.5-b03
1.6.0_30
LOCALE
===========
en_AU
CLASSPATH
=========
.
D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ojdbc6.jar
LIBRARYPATH
===========
C:\Program Files\Java\jdk1.6.0_30\bin
C:\windows\Sun\Java\bin
C:\windows\system32
C:\windows
.
C:\windows\SYSTEM_BIN
C:\windows\SYSTEM_EXE
C:\Program Files\Windows Resource Kits\Tools
C:\windows\SYSTEM_EXE\unixutils\bin
C:\windows\SYSTEM_EXE\unixutils\usr\local\wbin
C:\Program Files\WinSCP3
C:\Program Files\cvsnt
C:\Program Files\GNU\WinCvs 2.0\
C:\Program Files\GnuWin32\bin
C:\Program Files\Java\jdk1.6.0_30\bin
C:\Program Files (x86)\apache-ant-1.7.0\bin
\bin
\bin
C:\windows
C:\windows\system32
.
[sracanov@SRACANOV-AU C]$</span></span></pre>
<span id="form1:panelPage1">
<br />
5. Now to use JDBC OCI to connect.<br />
</span><br />
<pre><span id="form1:panelPage1"><span style="color: blue;">
[sracanov@SRACANOV-AU C]$ set path=D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0;%path%
[sracanov@SRACANOV-AU C]$ java -cp .;D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ojdbc6.jar JDBCInfo jdbc:oracle:oci:scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(PORT=1521)(
HOST=sracanov-au3.au.oracle.com))(CONNECT_DATA=(SERVICE_NAME=linux11gr2.au.oracle.com)))
Database
==============
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
JDBC
==============
Oracle JDBC driver: 11.1.0.7.0-Production
Connection URL
==============
jdbc:oracle:oci:scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(PORT=1521)(HOST=sracanov-au3.au.oracle.com))(CONNECT_DATA=(SERVICE_NAME=linux11gr2.au.oracle.com)))
JVM
===
Sun Microsystems Inc.
Java HotSpot(TM) 64-Bit Server VM
20.5-b03
1.6.0_30
LOCALE
===========
en_AU
CLASSPATH
=========
.
D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ojdbc6.jar
LIBRARYPATH
===========
C:\Program Files\Java\jdk1.6.0_30\bin
C:\windows\Sun\Java\bin
C:\windows\system32
C:\windows
D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0
.
C:\windows\SYSTEM_BIN
C:\windows\SYSTEM_EXE
C:\Program Files\Windows Resource Kits\Tools
C:\windows\SYSTEM_EXE\unixutils\bin
C:\windows\SYSTEM_EXE\unixutils\usr\local\wbin
C:\Program Files\WinSCP3
C:\Program Files\cvsnt
C:\Program Files\GNU\WinCvs 2.0\
C:\Program Files\GnuWin32\bin
C:\Program Files\Java\jdk1.6.0_30\bin
C:\Program Files (x86)\apache-ant-1.7.0\bin
\bin
\bin
C:\windows
C:\windows\system32
.
[sracanov@SRACANOV-AU C]$</span></span></pre>
<span id="form1:panelPage1">
<br />
NOTE: <br />
<br />
- If I was using 32bit JDK:<br />
<pre><span style="color: blue;">
[sracanov@SRACANOV-AU C]$ set path=C:\Program Files (x86)\Java\jdk1.6.0_26\bin
[sracanov@SRACANOV-AU C]$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)
[sracanov@SRACANOV-AU C]$ java -cp .;D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ojdbc6.jar JDBCInfo jdbc:oracle:thin:scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(PORT=1521)
(HOST=sracanov-au3.au.oracle.com))(CONNECT_DATA=(SERVICE_NAME=linux11gr2.au.oracle.com)))
Database
==============
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
JDBC
==============
Oracle JDBC driver: 11.1.0.7.0-Production
Connection URL
==============
jdbc:oracle:thin:scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(PORT=1521)(HOST=sracanov-au3.au.oracle.com))(CONNECT_DATA=(SERVICE_NAME=linux11gr2.au.oracle.com)))
JVM
===
Sun Microsystems Inc.
Java HotSpot(TM) Client VM
20.1-b02
1.6.0_26
LOCALE
===========
en_AU
CLASSPATH
=========
.
D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ojdbc6.jar
LIBRARYPATH
===========
C:\Program Files (x86)\Java\jdk1.6.0_26\bin
C:\windows\Sun\Java\bin
C:\windows\system32
C:\windows
C:\Program Files (x86)\Java\jdk1.6.0_26\bin
.
[sracanov@SRACANOV-AU C]$
[sracanov@SRACANOV-AU C]$
[sracanov@SRACANOV-AU C]$ set path=D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0;C:\Program Files (x86)\Java\jdk1.6.0_26\bin
[sracanov@SRACANOV-AU C]$ java -cp .;D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ojdbc6.jar JDBCInfo jdbc:oracle:oci:scott/tiger@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(PORT=1521)(
HOST=sracanov-au3.au.oracle.com))(CONNECT_DATA=(SERVICE_NAME=linux11gr2.au.oracle.com)))
Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\Oracle\JDBC\instantclient\x86-64\11.1.0.7.0\ocijdbc11.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1732)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:3178)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java:3174)
at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:233)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:508)
at oracle.jdbc.driver.T2CConnection.<init>(T2CConnection.java:133)
at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:53)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:275)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:206)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:156)
at JDBCInfo.main(JDBCInfo.java:58)
[sracanov@SRACANOV-AU C]$</init></init></span></pre>
<br />
- Thin works fine.<br />
<br />
- OCI will run into dependent libraries issue on the platform. So you need to use the correct JDK.<br />
<br />
- Set the envionment variable for your library on the system used. <span id="form1:panelPage1"><a href="http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html">http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html</a></span><br />
<br />
"Set the library loading path in your environment to the directory in Step 2 ("instantclient"). On many UNIX platforms, LD_LIBRARY_PATH is the appropriate environment variable. On Windows, PATH should be used."</span>Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-83718234273504660782012-02-24T16:04:00.001+11:002012-02-24T16:26:24.878+11:00Manually applying a JDBC patch for a Custom OC4J.<span id="form1:panelPage1">If you have followed doc <a href="https://supporthtml.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?id=420303.1" name="contextTextUrl_1330058243748" style="vertical-align: top;" target="_blank" title="Click (or CTRL+Click if using Firefox) to view"><span id="3-2GH6A731330058243748">420303.1</span></a> to upgrade your JDBC driver and found this driver has issues where you need to apply a patch for it. You may want to follow this example to apply the one off patch.</span><br />
<pre><span id="form1:panelPage1"><span style="color: blue;">[oracle@beast JDBC_UPGRADE]$ pwd
/home/u01/app/oracle/product/1013AS_blue/j2ee/JDBC_UPGRADE
[oracle@beast JDBC_UPGRADE]$ ll
total 104
drwxr-xr-x 2 oracle oinstall 4096 Feb 21 11:25 applib
drwxr-x--- 9 oracle oinstall 4096 Feb 21 11:26 application-deployments
drwxr-xr-x 2 oracle oinstall 4096 Feb 21 11:25 applications
drwxr-xr-x 3 oracle oinstall 4096 Feb 21 11:31 config
drwxr-xr-x 4 oracle oinstall 4096 Feb 21 11:25 connectors
drwxr-xr-x 3 oracle oinstall 4096 Feb 21 11:26 log
-rw-r--r-- 1 oracle oinstall 26445 Feb 21 2012 p13403295_10205_Generic.zip
drwxr-xr-x 3 oracle oinstall 4096 Feb 21 11:26 persistence
drwxr-x--- 3 oracle oinstall 4096 Feb 21 11:31 shared-lib
drwxr-x--- 3 oracle oinstall 4096 Feb 21 11:26 tldcache
[oracle@beast JDBC_UPGRADE]$ unzip -d patches p13403295_10205_Generic.zip > /dev/null
[oracle@beast JDBC_UPGRADE]$ ll
total 112
drwxr-xr-x 2 oracle oinstall 4096 Feb 21 11:25 applib
drwxr-x--- 9 oracle oinstall 4096 Feb 21 11:26 application-deployments
drwxr-xr-x 2 oracle oinstall 4096 Feb 21 11:25 applications
drwxr-xr-x 3 oracle oinstall 4096 Feb 21 12:07 config
drwxr-xr-x 4 oracle oinstall 4096 Feb 21 11:25 connectors
drwxr-xr-x 3 oracle oinstall 4096 Feb 21 11:26 log
-rw-r--r-- 1 oracle oinstall 26445 Feb 21 2012 p13403295_10205_Generic.zip
drwxr-xr-x 3 oracle oinstall 4096 Feb 21 12:12 patches
drwxr-xr-x 3 oracle oinstall 4096 Feb 21 11:26 persistence
drwxr-x--- 3 oracle oinstall 4096 Feb 21 11:31 shared-lib
drwxr-x--- 3 oracle oinstall 4096 Feb 21 11:26 tldcache
[oracle@beast JDBC_UPGRADE]$
[oracle@beast JDBC_UPGRADE]$ cd shared-lib/oracle.jdbc/10.2.0.5.0/
[oracle@beast 10.2.0.5.0]$ ll
total 1544
-rw-r----- 1 oracle oinstall 1569316 Feb 21 11:31 ojdbc14.jar
[oracle@beast 10.2.0.5.0]$ cp ojdbc14.jar ojdbc14.p13403295.jar
[oracle@beast 10.2.0.5.0]$ ll
total 3088
-rw-r----- 1 oracle oinstall 1569316 Feb 21 11:31 ojdbc14.jar
-rw-r----- 1 oracle oinstall 1569316 Feb 21 11:35 ojdbc14.p13403295.jar
[oracle@beast 10.2.0.5.0]$ jar uvf ojdbc14.p13403295.jar ../../../patches/13403295/files/jdbc/lib/ojdbc14.jar/*
adding: ../../../patches/13403295/files/jdbc/lib/ojdbc14.jar/oracle/(in = 0) (out= 0)(stored 0%)
adding: ../../../patches/13403295/files/jdbc/lib/ojdbc14.jar/oracle/net/(in = 0) (out= 0)(stored 0%)
adding: ../../../patches/13403295/files/jdbc/lib/ojdbc14.jar/oracle/net/ns/(in = 0) (out= 0)(stored 0%)
adding:
../../../patches/13403295/files/jdbc/lib/ojdbc14.jar/oracle/net/ns/NetException.class(in
= 4557) (out= 1969)(deflated 56%)
[oracle@beast 10.2.0.5.0]$ ll
total 3088
-rw-r----- 1 oracle oinstall 1569316 Feb 21 11:31 ojdbc14.jar
-rw-r--r-- 1 oracle oinstall 1572093 Feb 21 11:39 ojdbc14.p13403295.jar
[oracle@beast 10.2.0.5.0]$ cd ../../../config
[oracle@beast config]$ cp server.xml server.xml.old.1
[oracle@beast config]$ opmnctl stopproc process-type=JDBC_UPGRADE
opmnctl: stopping opmn managed processes...
[oracle@beast config]$ grep -l ojdbc14.jar server.xml | xargs sed -i 's/ojdbc14.jar/ojdbc14.p13403295.jar/g'
[oracle@beast config]$ opmnctl startproc process-type=JDBC_UPGRADE
opmnctl: starting opmn managed processes...
[oracle@beast config]$ cd ..
[oracle@beast JDBC_UPGRADE]$ rm p13403295_10205_Generic.zip
[oracle@beast JDBC_UPGRADE]$ </span></span></pre>
<span id="form1:panelPage1"><br />Note: </span><br />
<br />
<span id="form1:panelPage1">1. The jar command will update the driver jar with the patches. If your using another driver i.e. ojdbc5.jar, then ensure you grab the classes from the ojdbc5.jar directory i.e. </span><span id="form1:panelPage1">../../../patches/13403295/files/jdbc/lib/ojdbc5.jar/*</span><span id="form1:panelPage1"> </span><br />
<br />
<span id="form1:panelPage1">2. In server.xml we simply make the following change:</span><br />
<pre><span style="color: blue;">[oracle@beast config]$ diff server.xml server.xml.old.1
125c125
< <code-source path="ojdbc14.p13403295.jar"/>
---
> <code-source path="ojdbc14.jar"/>
[oracle@beast config]$ </span></pre>
<pre><span style="color: blue;"> </span></pre>
Once the oc4j instance has started up again, it will use the patched jar - ojdbc14.p13403295.jar. We can simply switch back to original if needed.Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-11378114677189491012012-02-22T14:20:00.000+11:002012-02-22T14:20:40.142+11:00Building sudo - make[1]: *** [visudo] Error 1I needed to build sudo today and when I started building it, I received this fatal error:<br />
<pre><span style="color: blue;">-bash-3.00# echo $PATH
/usr/sbin:/usr/bin:/sbin:/bin:/usr/sfw/bin:/usr/ccs/bin:/usr/local/bin
-bash-3.00# make
for d in compat common plugins/sudoers src include doc plugins/sample plugins/sample_group; \
do (cd $d && exec make all) && continue; \
exit $?; \
done
make[1]: Entering directory `/export/home/oracle/sudo-1.8.4/compat'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/export/home/oracle/sudo-1.8.4/compat'
make[1]: Entering directory `/export/home/oracle/sudo-1.8.4/common'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/export/home/oracle/sudo-1.8.4/common'
make[1]: Entering directory `/export/home/oracle/sudo-1.8.4/plugins/sudoers'
/bin/bash ../../libtool --mode=link gcc -o visudo visudo.o goodpath.o find_path.o error.o libparsesudoers.la ../../common/libcommon.la ../../compat/libreplace.la -lsocket -lnsl
libtool: link: gcc -o visudo visudo.o goodpath.o find_path.o error.o ./.libs/libparsesudoers.a ../../common/.libs/libcommon.a ../../compat/.libs/libreplace.a -lsocket -lnsl
Undefined first referenced
symbol in file
libintl_textdomain visudo.o
libintl_bindtextdomain visudo.o
libintl_dgettext visudo.o
ld: fatal: Symbol referencing errors. No output written to visudo
collect2: ld returned 1 exit status
make[1]: *** [visudo] Error 1
make[1]: Leaving directory `/export/home/oracle/sudo-1.8.4/plugins/sudoers'
make: *** [all] Error 2
-bash-3.00# pwd
/export/home/oracle/sudo-1.8.4</span></pre>
<br />
After changing the path as follows, it worked:<br />
<br />
<pre><span style="color: blue;">-bash-3.00# export PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/ccs/bin:/usr/ccs/lib:/usr/include:/usr/sfw/bin:/usr/local/sbin:/usr/local/bin
-bash-3.00# make
for d in compat common plugins/sudoers src include doc plugins/sample plugins/sample_group; \
do (cd $d && exec make all) && continue; \
exit $?; \
done
-bash-3.00# make install
for d in compat common plugins/sudoers src include doc; \
do (cd $d && exec make pre-install) && continue; \
exit $?; \
done
for d in compat common plugins/sudoers src include doc; \
do (cd $d && exec make install) && continue; \
exit $?; \
done
/bin/bash ../../mkinstalldirs /usr/local/libexec \
/usr/local/sbin /usr/local/bin \
/etc /usr/local/share/doc/sudo \
`echo /var/lib/sudo|sed 's,/[^/]*$,,'`
/bin/bash ../../install-sh -c -d -O 0 -G 0 -m 0700 /var/lib/sudo
if [ X".so" != X"" ]; then \
/bin/bash ../../install-sh -c -b~ -O 0 -G 0 -m 0755 .libs/sudoers.so /usr/local/libexec; \
fi
/bin/bash ../../install-sh -c -b~ -O 0 -G 0 -M 0111 sudoreplay /usr/local/bin/sudoreplay
/bin/bash ../../install-sh -c -b~ -O 0 -G 0 -M 0111 visudo /usr/local/sbin/visudo
/bin/bash ../../install-sh -c -d -O 0 -G 0 -m 0750 \
/etc/sudoers.d
test -r /etc/sudoers || \
/bin/bash ../../install-sh -c -O 0 -G 0 -m 0440 \
sudoers /etc/sudoers
#/bin/bash ../../install-sh -c -O 0 -G 0 -m 0555 ./sudoers2ldif /usr/local/share/doc/sudo
/bin/bash ../mkinstalldirs /usr/local/bin \
/usr/local/libexec
/bin/bash ../install-sh -c -b~ -O 0 -G 0 -M 04111 sudo /usr/local/bin/sudo
rm -f /usr/local/bin/sudoedit
ln /usr/local/bin/sudo /usr/local/bin/sudoedit
if [ -f sesh ]; then /bin/bash ../install-sh -c -b~ -O 0 -G 0 -M 0111 sesh /usr/local/libexec/sesh; fi
if [ -f .libs/libsudo_noexec.so ]; then /bin/bash ../install-sh -c -b~ -O 0 -G 0 -m 0755 .libs/libsudo_noexec.so /usr/local/libexec/sudo_noexec.so; fi
/bin/bash ../mkinstalldirs /usr/local/include
/bin/bash ../install-sh -c -O 0 -G 0 -m 0444 ./sudo_plugin.h /usr/local/include
/bin/bash ../mkinstalldirs /usr/local/share/doc/sudo \
/usr/local/man/man1m /usr/local/man/man4
mkdir /usr/local/man
mkdir /usr/local/man/man1m
mkdir /usr/local/man/man4
for f in ../ChangeLog ../README ../NEWS ./HISTORY ./CONTRIBUTORS ./LICENSE ./TROUBLESHOOTING ./UPGRADE ./sample.*; do /bin/bash ../install-sh -c -O 0 -G 0 -m 0444 $f /usr/local/share/doc/sudo; done
#for f in ../README.LDAP ./schema.*; do /bin/bash ../install-sh -c -O 0 -G 0 -m 0444 $f /usr/local/share/doc/sudo; done
/bin/bash ../install-sh -c -O 0 -G 0 -m 0444 ./sudo.man /usr/local/man/man1m/sudo.1m
ln /usr/local/man/man1m/sudo.1m /usr/local/man/man1m/sudoedit.1m
/bin/bash ../install-sh -c -O 0 -G 0 -m 0444 ./sudo_plugin.man /usr/local/man/man1m/sudo_plugin.1m
/bin/bash ../install-sh -c -O 0 -G 0 -m 0444 ./sudoreplay.man /usr/local/man/man1m/sudoreplay.1m
/bin/bash ../install-sh -c -O 0 -G 0 -m 0444 ./visudo.man /usr/local/man/man1m/visudo.1m
/bin/bash ../install-sh -c -O 0 -G 0 -m 0444 ./sudoers.man /usr/local/man/man4/sudoers.4
#/bin/bash ../install-sh -c -O 0 -G 0 -m 0444 ./sudoers.ldap.man /usr/local/man/man4/sudoers.ldap.4
-bash-3.00# which sudo
/usr/local/bin/sudo
-bash-3.00# which visudo
/usr/local/sbin/visudo
-bash-3.00#</span></pre>
<br />Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-26472738779714080552011-11-04T14:23:00.000+11:002011-11-04T14:27:29.132+11:00Reloading jspx page from a commandLinkA simple<a href="http://dl.dropbox.com/u/17312456/steveracanovic.blogspot.com/RefreshPageExample.7z"> example</a> to reload a jspx page from a commandLink. [Jdev 11.1.1.4.0]<br />
<br />
1. Run testpage.jspx. <br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7PkvqJUsknj37pYS-xcdPuVesUI2zSohgeA8IhvBL8CiNVjQH-tRMB-7vwKBiVpC8pezY2Kpnql2O4p6Lrou1vGzIdyKPPLXWULwnEqwT5zQPstIyLFRnIT-siH-TiUBhqaj9ZOcKXT8V/s1600/pageonload.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="116" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7PkvqJUsknj37pYS-xcdPuVesUI2zSohgeA8IhvBL8CiNVjQH-tRMB-7vwKBiVpC8pezY2Kpnql2O4p6Lrou1vGzIdyKPPLXWULwnEqwT5zQPstIyLFRnIT-siH-TiUBhqaj9ZOcKXT8V/s200/pageonload.jpg" width="200" /></a></div>
<br />
2. Click in Reload Page link.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNY4I6SAxboxfjrTQyiLIIh80Gqfgh_aXJvLxo7NAHlKqWBWrGv2DOlI5xrN3kyxQ9r8qJZBn5EQ0puyKDt9-BLBn5yls6as26q8cfoQEpuOFMVyxDrt3A1-jblhS9sWQeLTZ61MaTFy0f/s1600/IntegratedWLS.Log.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="65" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNY4I6SAxboxfjrTQyiLIIh80Gqfgh_aXJvLxo7NAHlKqWBWrGv2DOlI5xrN3kyxQ9r8qJZBn5EQ0puyKDt9-BLBn5yls6as26q8cfoQEpuOFMVyxDrt3A1-jblhS9sWQeLTZ61MaTFy0f/s200/IntegratedWLS.Log.jpg" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc67YB8VsiRR03c1oRy9DEzFZtpdgePeC9BHrYHlBYo9lfOGbq3BMC1vcDk46ZX_m3yWY0kaaBytAPjd-_oGBtgUFlf0zfC4GgzmxAbPKBFN2eXid9_XxrPRWX5sPRfYznsg3Tem01c_BX/s1600/ClickOnReloadPage.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="99" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc67YB8VsiRR03c1oRy9DEzFZtpdgePeC9BHrYHlBYo9lfOGbq3BMC1vcDk46ZX_m3yWY0kaaBytAPjd-_oGBtgUFlf0zfC4GgzmxAbPKBFN2eXid9_XxrPRWX5sPRfYznsg3Tem01c_BX/s200/ClickOnReloadPage.jpg" width="200" /></a></div>
<br />
<br />Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-67397278029347617292011-09-12T12:08:00.001+10:002011-09-13T15:23:47.007+10:00Using '-jarsasdbobjects -prependjarnames' parameters and calling the loaded class from a Java Stored ProcedureAn example using loadjava/dropjava with '-jarsasdbobjects -prependjarnames' parameters and trying to access the class in the jar from a java stored procedure.<br />
<br />
[oracle@sracanov-au2 ~]$ cat > HelloWorld1.java<br />
public class HelloWorld1 {<br />
public static void main(String[] args){<br />
System.out.println(new HelloWorld1());<br />
}<br />
public String toString(){<br />
return "Hello World 1";<br />
}<br />
public static String getHello(){<br />
return "Hello World 1 !!!";<br />
}<br />
}<br />
Quit<br />
[oracle@sracanov-au2 ~]$ javac HelloWorld1.java<br />
[oracle@sracanov-au2 ~]$ java HelloWorld1<br />
Hello World 1<br />
[oracle@sracanov-au2 ~]$ loadjava -u scott/tiger -jarsasdbobjects -prependjarnames HelloWorld1.java<br />
[oracle@sracanov-au2 ~]$ cat > java_objects.sql<br />
COL object_name format a30<br />
COL object_type format a15<br />
SELECT object_name, object_type, status FROM user_objects WHERE object_type IN ('JAVA SOURCE', 'JAVA CLASS', 'JAVA RESOURCE') ORDER BY object_type, object_name;<br />
Quit<br />
[oracle@sracanov-au2 ~]$ sqlplus scott/tiger<br />
<br />
SQL*Plus: Release 11.2.0.2.0 Production on Tue Sep 6 14:38:01 2011<br />
<br />
Copyright (c) 1982, 2010, Oracle. All rights reserved.<br />
<br />
Connected to:<br />
<br />
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production<br />
<br />
With the Partitioning, OLAP, Data Mining and Real Application Testing options<br />
<br />
SQL> @java_objects.sql<br />
<br />
OBJECT_NAME OBJECT_TYPE STATUS<br />
<br />
------------------------------ --------------- -------<br />
<br />
HelloWorld1 JAVA CLASS INVALID<br />
HelloWorld1 JAVA SOURCE INVALID<br />
<br />
SQL> CREATE OR REPLACE FUNCTION HW RETURN VARCHAR2 as LANGUAGE JAVA NAME 'HelloWorld1.getHello() return String';<br />
<br />
2 /<br />
<br />
Function created.<br />
<br />
SQL> select HW() from dual;<br />
<br />
HW()<br />
<br />
--------------------------------------------------------------------------------<br />
<br />
Hello World 1 !!!<br />
<br />
SQL> @java_objects.sql<br />
<br />
OBJECT_NAME OBJECT_TYPE STATUS<br />
<br />
------------------------------ --------------- -------<br />
<br />
HelloWorld1 JAVA CLASS VALID<br />
HelloWorld1 JAVA SOURCE VALID<br />
<br />
SQL> exec dbms_java.dropjava('HelloWorld1');<br />
<br />
PL/SQL procedure successfully completed.<br />
<br />
SQL> @java_objects.sql<br />
<br />
no rows selected<br />
<br />
SQL> exit<br />
<br />
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production<br />
<br />
With the Partitioning, OLAP, Data Mining and Real Application Testing options<br />
<br />
[oracle@sracanov-au2 ~]$ loadjava -u scott/tiger HelloWorld1.java<br />
[oracle@sracanov-au2 ~]$ sqlplus scott/tiger<br />
<br />
SQL*Plus: Release 11.2.0.2.0 Production on Wed Sep 7 13:18:44 2011<br />
<br />
Copyright (c) 1982, 2010, Oracle. All rights reserved.<br />
<br />
Connected to:<br />
<br />
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production<br />
<br />
With the Partitioning, OLAP, Data Mining and Real Application Testing options<br />
<br />
SQL> @java_objects.sql<br />
<br />
OBJECT_NAME OBJECT_TYPE STATUS<br />
<br />
------------------------------ --------------- -------<br />
<br />
HelloWorld1 JAVA CLASS INVALID<br />
HelloWorld1 JAVA SOURCE INVALID<br />
<br />
SQL> CREATE OR REPLACE FUNCTION HW RETURN VARCHAR2 as LANGUAGE JAVA NAME 'HelloWorld1.getHello() return String';<br />
<br />
2 /<br />
<br />
Function created.<br />
<br />
SQL> select HW() from dual;<br />
<br />
HW()<br />
<br />
--------------------------------------------------------------------------------<br />
<br />
Hello World 1 !!!<br />
<br />
SQL> @java_objects.sql<br />
<br />
OBJECT_NAME OBJECT_TYPE STATUS<br />
<br />
------------------------------ --------------- -------<br />
<br />
HelloWorld1 JAVA CLASS VALID<br />
HelloWorld1 JAVA SOURCE VALID<br />
<br />
SQL><br />
<br />
[oracle@sracanov-au2 ~]$ mkdir Test<br />
[oracle@sracanov-au2 ~]$ cp HelloWorld1.java HelloWorld2.java<br />
[oracle@sracanov-au2 ~]$ sed -i 's/1/2/g' HelloWorld2.java<br />
[oracle@sracanov-au2 ~]$ sed '1i\package Test;' HelloWorld2.java > Test/HelloWorld2.java<br />
[oracle@sracanov-au2 ~]$ rm HelloWorld2.java<br />
[oracle@sracanov-au2 ~]$ javac -cp .:./Test Test/HelloWorld2.java<br />
[oracle@sracanov-au2 ~]$ java -cp .:./Test Test/HelloWorld2<br />
Hello World 2<br />
[oracle@sracanov-au2 ~]$ loadjava -u scott/tiger -jarsasdbobjects -prependjarnames Test/HelloWorld2.java<br />
[oracle@sracanov-au2 ~]$ sqlplus scott/tiger<br />
<br />
SQL*Plus: Release 11.2.0.2.0 Production on Wed Sep 7 14:07:30 2011<br />
<br />
Copyright (c) 1982, 2010, Oracle. All rights reserved.<br />
<br />
Connected to:<br />
<br />
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production<br />
<br />
With the Partitioning, OLAP, Data Mining and Real Application Testing options<br />
<br />
SQL> CREATE OR REPLACE FUNCTION HW RETURN VARCHAR2 as LANGUAGE JAVA NAME 'Test.HelloWorld2.getHello() return String';<br />
<br />
2 /<br />
<br />
Function created.<br />
<br />
SQL> select HW() from dual;<br />
<br />
HW2()<br />
<br />
--------------------------------------------------------------------------------<br />
<br />
Hello World 2 !!!<br />
<br />
SQL> @java_objects.sql<br />
<br />
OBJECT_NAME OBJECT_TYPE STATUS<br />
<br />
------------------------------ --------------- -------<br />
<br />
HelloWorld1 JAVA CLASS VALID<br />
Test/HelloWorld2 JAVA CLASS VALID<br />
HelloWorld1 JAVA SOURCE VALID<br />
Test/HelloWorld2 JAVA SOURCE VALID<br />
<br />
SQL> exec dbms_java.dropjava('Test/HelloWorld2');<br />
<br />
PL/SQL procedure successfully completed.<br />
<br />
SQL> @java_objects.sql<br />
<br />
OBJECT_NAME OBJECT_TYPE STATUS<br />
<br />
------------------------------ --------------- -------<br />
<br />
HelloWorld1 JAVA CLASS VALID<br />
HelloWorld1 JAVA SOURCE VALID<br />
<br />
SQL> exec dbms_java.dropjava('HelloWorld1');<br />
<br />
PL/SQL procedure successfully completed.<br />
<br />
SQL> exit<br />
<br />
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production<br />
<br />
With the Partitioning, OLAP, Data Mining and Real Application Testing options<br />
<br />
[oracle@sracanov-au2 ~]$ cat > Manifest.txt<br />
Main-Class: Test.HelloWorld2<br />
Quit<br />
[oracle@sracanov-au2 ~]$ jar cvfm Test.jar Manifest.txt ./Test/*class<br />
adding: META-INF/ (in=0) (out=0) (stored 0%)<br />
adding: META-INF/MANIFEST.MF (in=29) (out=31) (deflated -6%)<br />
adding: Test/HelloWorld2.class (in=594) (out=355) (deflated 40%)<br />
Total:<br />
------<br />
(in = 623) (out = 738) (deflated -18%)<br />
[oracle@sracanov-au2 ~]$ java -jar Test.jar<br />
Hello World 2<br />
[oracle@sracanov-au2 ~]$ loadjava -u scott/tiger Test.jar<br />
[oracle@sracanov-au2 ~]$ sqlplus scott/tiger<br />
<br />
SQL*Plus: Release 11.2.0.2.0 Production on Thu Sep 8 10:02:16 2011<br />
<br />
Copyright (c) 1982, 2010, Oracle. All rights reserved.<br />
<br />
Connected to:<br />
<br />
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production<br />
<br />
With the Partitioning, OLAP, Data Mining and Real Application Testing options<br />
<br />
SQL> @java_objects<br />
<br />
OBJECT_NAME OBJECT_TYPE STATUS<br />
<br />
------------------------------ --------------- -------<br />
<br />
Test/HelloWorld2 JAVA CLASS INVALID<br />
META-INF/MANIFEST.MF JAVA RESOURCE VALID<br />
<br />
SQL> CREATE OR REPLACE FUNCTION HW RETURN VARCHAR2 as LANGUAGE JAVA NAME 'Test/HelloWorld2.getHello() return String';<br />
<br />
2 /<br />
<br />
Function created.<br />
<br />
SQL> select HW() from dual;<br />
<br />
HW()<br />
<br />
--------------------------------------------------------------------------------<br />
<br />
Hello World 2 !!!<br />
<br />
SQL> exit<br />
<br />
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production<br />
<br />
With the Partitioning, OLAP, Data Mining and Real Application Testing options<br />
<br />
[oracle@sracanov-au2 ~]$ dropjava -u scott/tiger Test.jar<br />
[oracle@sracanov-au2 ~]$ loadjava -u scott/tiger -jarsasdbobjects -prependjarnames Test.jar<br />
[oracle@sracanov-au2 ~]$ sqlplus scott/tiger<br />
<br />
SQL*Plus: Release 11.2.0.2.0 Production on Mon Sep 12 10:33:50 2011<br />
<br />
Copyright (c) 1982, 2010, Oracle. All rights reserved.<br />
<br />
Connected to:<br />
<br />
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production<br />
<br />
With the Partitioning, OLAP, Data Mining and Real Application Testing options<br />
<br />
SQL> @java_objects<br />
<br />
OBJECT_NAME OBJECT_TYPE STATUS<br />
<br />
------------------------------ --------------- -------<br />
<br />
Test.jar///Test/HelloWorld2 JAVA CLASS INVALID<br />
/233d8437_MANIFESTMF JAVA RESOURCE VALID<br />
<br />
SQL> CREATE OR REPLACE FUNCTION HW RETURN VARCHAR2 as LANGUAGE JAVA NAME 'Test.jar///Test/HelloWorld2.getHello() return String';<br />
<br />
2 /<br />
<br />
Function created.<br />
<br />
SQL> select HW() from dual;<br />
<br />
HW()<br />
<br />
--------------------------------------------------------------------------------<br />
<br />
Hello World 2 !!!<br />
<br />
SQL><br />
<br />
<br />
Note: I also used the parameters to load an individual class here
which is not necessary. So '-jarsasdbobjects -prependjarnames' or
'loadjava' does not do any parsing on the file type.i.e.<br />
<br />
[oracle@sracanov-au2 ~]$ cat > somefile<br />
blah blah<br />
Quit<br />
[oracle@sracanov-au2 ~]$ loadjava -u scott/tiger -jarsasdbobjects -prependjarnames somefile<br />
[oracle@sracanov-au2 ~]$ <br />
<br />
<br />
<br />
<br />
<br />Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-6623267843950091032011-03-22T09:48:00.008+11:002011-09-12T12:11:16.543+10:00How to find the version of ADF libraries installed on WLS 11gIf I log into the WLS console I can see the ADF runtime libraries are installed. i.e. adf.oracle.domain(...) However I don't know which version of ADF is installed.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0sTyWj6SYaVL_7K0KOV6-MNSNxBCTscIXwTAz_Hyqnbf9T9ue_cJRULxgGSeWY5jLrrrSRHhKF8MD0-k9DOw9rk5UieP2Q8HgCNBtH9fF7OMplAniYEvzbq-nCA3YcT4sEdIMYH8gd4tR/s1600/WLS.Console.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5586670304193426722" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0sTyWj6SYaVL_7K0KOV6-MNSNxBCTscIXwTAz_Hyqnbf9T9ue_cJRULxgGSeWY5jLrrrSRHhKF8MD0-k9DOw9rk5UieP2Q8HgCNBtH9fF7OMplAniYEvzbq-nCA3YcT4sEdIMYH8gd4tR/s400/WLS.Console.jpg" style="cursor: hand; cursor: pointer; height: 258px; width: 400px;" /></a><br />
<br />
<br />
From the command line, I can run the following to find the version details:<br />
<br />
[oracle@sracanov-au4 ~]$ cd $ORACLE_HOME<br />
[oracle@sracanov-au4 10.3.4.0]$ find . -name adf-share-support.jar -print<br />
./oracle_common/modules/oracle.adf.share_11.1.1/adf-share-support.jar<br />
[oracle@sracanov-au4 10.3.4.0]$ mkdir ~/check-adf<br />
[oracle@sracanov-au4 10.3.4.0]$ cp ./oracle_common/modules/oracle.adf.share_11.1.1/adf-share-support.jar ~/check-adf<br />
[oracle@sracanov-au4 10.3.4.0]$ cd ~/check-adf<br />
[oracle@sracanov-au4 check-adf]$ jar -xf adf-share-support.jar<br />
[oracle@sracanov-au4 check-adf]$ cat META-INF/MANIFEST.MF<br />
Manifest-Version: 1.0<br />
Ant-Version: Apache Ant 1.7.0RC1<br />
Created-By: 17.0-b17 (Sun Microsystems Inc.)<br />
Oracle-Version: 11.1.1.4.37.59.23<br />
Oracle-Label: JDEVADF_11.1.1.4.0_GENERIC_101227.1736.5923<br />
Oracle-Builder: Official Builder<br />
Oracle-BuildSystem: Linux - java - 1.6.0_21-b51<br />
Oracle-BuildTimestamp: 2010-12-27 08:47:35 -0800Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com1tag:blogger.com,1999:blog-8133026034579648500.post-23462221023345032692011-01-24T10:34:00.007+11:002011-01-24T10:43:39.509+11:00Inserting large XMLTYPEWhen inserting large XMLTYPE, I am left with the following error:<br /><pre name="code" class="xml"><br />java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column<br /> <br /> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113)<br /> at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)<br /> at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)<br /> at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:754)<br /> at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:219)<br /> at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:972)<br /> at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1192)<br /> at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3415)<br /> at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3460)<br /> at InsertXML.insertXMLType(InsertXML.java:47)<br /> at InsertXML.main(InsertXML.java:93)<br /></pre><br />I found 2 ways to get around this problem.<br /><br />1. XMLType are opaque types, so I should be using oracle.xdb.XMLType. So my code should look something like:<br /><pre name="code" class="java"><br /> XMLType xml;<br /> byte[] byteBuffer = xmlDetails.toString().getBytes();<br /> InputStream is = new ByteArrayInputStream(byteBuffer);<br /> xml = XMLType.createXML(connection,is); <br /> pstmt.setObject(1,xml);<br /></pre><br /><br />2. In Oracle JDBC 11.2.0.2. (Not implemented in 11.2.0.1) and using JDK 1.6 (utilising JDBC 4.0) we can use SQLXML Type - java.sql.SQLXML<br /><br /><a href="http://download.oracle.com/docs/cd/E11882_01/java.112/e16548/jdbcvers.htm#BABGHBCC">http://download.oracle.com/docs/cd/E11882_01/java.112/e16548/jdbcvers.htm#BABGHBCC</a><br /><br />So the code should look something like:<br /><pre name="code" class="java"><br /> SQLXML x = conn.createSQLXML();<br /> x.setString(xmlDetails.toString());<br /> pstmt.setSQLXML(1, x);<br /></pre><br /><br />The second option here is preferred and moving forward.Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-15879630947540384382010-09-07T10:57:00.007+10:002010-09-07T13:36:00.507+10:00Configuring OC4J HTTP Debug Logs.When I try the following http debug parameters in opmn for my oc4j instance I get no logs after restarting instance:<br /><br /><pre name="code" class="xml"><br />...<br /><ias-component id="default_group"><br /> <process-type id="home" module-id="OC4J" status="enabled"><br /> <module-data><br /> <category id="start-parameters"><br /> <data id="java-options" value="-Doc4j.formauth.redirect=true<br /> -Dhttp.session.debug=true<br /> -Dhttp.request.debug=true<br /> -Dhttp.error.debug=true<br /> -Dhttp.method.trace.allow=true"/><br /> </category><br /> ...<br /> </module-data><br /> </process-type><br /></ias-component><br />...<br /></pre><br /><a href="http://download-west.oracle.com/docs/cd/B32110_01/web.1013/b28950/sysprops.htm#CHDFCCBF">http://download-west.oracle.com/docs/cd/B32110_01/web.1013/b28950/sysprops.htm#CHDFCCBF</a><br /><br /><a href="http://download-west.oracle.com/docs/cd/B32110_01/web.1013/b28950/sysprops.htm#CHDBDBII">http://download-west.oracle.com/docs/cd/B32110_01/web.1013/b28950/sysprops.htm#CHDBDBII</a><br /><br />This is because the logging level has not been set. So I now add "oracle.oc4j.trace.finest=com.evermind.server.http" and restart the instance and then I see the logging.<br /><pre name="code" class="xml"><br />...<br /><ias-component id="default_group"><br /> <process-type id="home" module-id="OC4J" status="enabled"><br /> <module-data><br /> <category id="start-parameters"><br /> <data id="java-options" value="-Doc4j.formauth.redirect=true<br /> -Doracle.oc4j.trace.finest=com.evermind.server.http<br /> -Dhttp.session.debug=true<br /> -Dhttp.request.debug=true<br /> -Dhttp.error.debug=true<br /> -Dhttp.method.trace.allow=true"/><br /> </category><br /> ...<br /> </module-data><br /> </process-type><br /></ias-component><br />...<br /></pre>Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-47147742796460709672010-06-29T10:19:00.008+10:002010-06-29T11:21:49.744+10:00Increasing Xmx on JdevI am trying to increase the Xmx value to 1500M on JDev. However when I do so, I get the "<span style="font-weight:bold;">Error occurred during initialization of VM Could not reserve enough space for object heap</span>" error. I am on Windows XP and have 4GB of RAM. And have plenty of available RAM.<br /><font color="blue"><pre><br />[sracanov@sracanov-au D]$ jdev -verbose<br />savedArg0 = D:\Oracle\jdev\111130-prod\jdeveloper\jdev\bin\jdev.exe<br />VM to launch D:\Oracle\jdev\111130-prod\jdk160_18\jre\bin\client\jvm.dll<br />Restarting the launcher with the 64bit version<br />Reading exe header from jvm.dll, Machine=14c<br />JNI Option: -Xmx1500M<br />JNI Option: -Xverify:none<br />JNI Option: -XX:MaxPermSize=256M<br />JNI Option: -Xbootclasspath/p:../lib/lwawt.jar<br />JNI Option: -Dsun.awt.keepWorkingSetOnMinimize=true<br />JNI Option: -Dsun.java2d.noddraw=true<br />JNI Option: -XX:+HeapDumpOnOutOfMemoryError<br />JNI Option: -Doracle.jdeveloper.webservice.showAllOwsmPolicyTypes=false<br />JNI Option: -Doracle.jdeveloper.webservice.hidePropertyOverride=false<br />JNI Option: -Dsun.awt.disablegrab=true<br />JNI Option: -Dide.startingArg0=D:\Oracle\jdev\111130-prod\jdeveloper\jdev\bin\jdev.exe<br />JNI Option: -Dide.startingArg1=-verbose<br />JNI Option: -Dide.launcherProcessId=2516<br />JNI Option: -Dide.config_pathname=D:\Oracle\jdev\111130-prod\jdeveloper\jdev\bin\jdev.conf<br />JNI Option: -Dide.startingcwd=D:\Oracle\jdev\111130-prod\jdeveloper\jdev\bin<br />JNI Option: -Dide.shell.enableFileTypeAssociation=D:\Oracle\jdev\111130-prod\jdeveloper\jdev\bin\jdev.exe<br />JNI Option: -Dide.pref.dir.base=C:\Documents and Settings\sracanov\Application Data<br />JNI Option: -Dide.work.dir.base=D:\My Contents<br />JNI Option: -Djava.class.path=..\..\ide\lib\ide-boot.jar<br />JVM path is D:\Oracle\jdev\111130-prod\jdk160_18\jre\bin\client\jvm.dll<br />Error occurred during initialization of VM<br />Could not reserve enough space for object heap<br /></pre></font><br />Sun JDK needs a contiguous address space to allocate memory.<br />On the other hand, JRockit does not need a contiguous address space.<br /><br />So, if I use JRockit as JDK, and then run JDeveloper with -Xmx1500M it works.<br /><font color="blue"><pre><br />[sracanov@sracanov-au D]$ jdev -verbose<br />savedArg0 = D:\Oracle\jdev\111130-prod\jdeveloper\jdev\bin\jdev.exe<br />VM to launch D:\Oracle\appserver\owls\10.3.1.0\jrockit_160_05_R27.6.2-20\jre\bin\jrockit\jvm.dll<br />Restarting the launcher with the 64bit version<br />Reading exe header from jvm.dll, Machine=14c<br />JNI Option: -Xmx1500M<br />JNI Option: -Xverify:none<br />JNI Option: -XX:MaxPermSize=256M<br />JNI Option: -Xbootclasspath/p:../lib/lwawt.jar<br />JNI Option: -Dsun.awt.keepWorkingSetOnMinimize=true<br />JNI Option: -Dsun.java2d.noddraw=true<br />JNI Option: -XX:+HeapDumpOnOutOfMemoryError<br />JNI Option: -Doracle.jdeveloper.webservice.showAllOwsmPolicyTypes=false<br />JNI Option: -Doracle.jdeveloper.webservice.hidePropertyOverride=false<br />JNI Option: -Dsun.awt.disablegrab=true<br />JNI Option: -Dide.startingArg0=D:\Oracle\jdev\111130-prod\jdeveloper\jdev\bin\jdev.exe<br />JNI Option: -Dide.startingArg1=-verbose<br />JNI Option: -Dide.launcherProcessId=2400<br />JNI Option: -Dide.config_pathname=D:\Oracle\jdev\111130-prod\jdeveloper\jdev\bin\jdev.conf<br />JNI Option: -Dide.startingcwd=D:\Oracle\jdev\111130-prod\jdeveloper\jdev\bin<br />JNI Option: -Dide.shell.enableFileTypeAssociation=D:\Oracle\jdev\111130-prod\jdeveloper\jdev\bin\jdev.exe<br />JNI Option: -Dide.pref.dir.base=C:\Documents and Settings\sracanov\Application Data<br />JNI Option: -Dide.work.dir.base=D:\My Contents<br />JNI Option: -Djava.class.path=..\..\ide\lib\ide-boot.jar<br />JVM path is D:\Oracle\appserver\owls\10.3.1.0\jrockit_160_05_R27.6.2-20\jre\bin\jrockit\jvm.dll<br />[WARN ] -XX:MaxPermSize=256M is not a valid VM option. Ignoring<br />[WARN ] -XX:+HeapDumpOnOutOfMemoryError is not a valid VM option. Ignoring<br />log4j:WARN No appenders could be found for logger (org.apache.commons.httpclient.HttpClient).<br />log4j:WARN Please initialize the log4j system properly.<br /></pre></font><br />Relevant Links:<br /><br /><a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4358809">http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4358809</a><br /><a href="http://java.sun.com/docs/hotspot/HotSpotFAQ.html#gc_heap_32bit">http://java.sun.com/docs/hotspot/HotSpotFAQ.html#gc_heap_32bit</a><br /><a href="http://blogs.oracle.com/jrockit/2008/09/how_to_get_almost_3_gb_heap_on_windows.html">http://blogs.oracle.com/jrockit/2008/09/how_to_get_almost_3_gb_heap_on_windows.html</a>Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-34671156328038193692010-05-28T13:25:00.021+10:002010-05-28T14:40:28.225+10:00Returning values from Nested Tables using JDBCWhen running a select statement in sqlplus on a nested tables we get the results returned. However the same can not be said when running the same statement through JDBC. He is an example of returning values from a nested table with JDBC.<br /><br />1. Here's how the sql script looks like to create the type and tables.<br /><pre name="code" class="sql"><br />drop table person;<br />drop type nested_addresses;<br />drop type address;<br /><br />create or replace type address as object(<br /> street varchar2(50),<br /> city varchar2(20),<br /> postcode varchar2(8),<br /> state varchar(8))<br />/<br /><br />create or replace type nested_addresses as table of address<br />/<br /><br />create table person (<br /> firstname varchar(20),<br /> lastname varchar(20),<br /> address_list nested_addresses<br /> ) nested table address_list store as person_addresses<br />/<br /><br />insert into person values ('Fred','Flinstone', nested_addresses(address('345 Cave Stone Road', 'Bedrock', 'BR345','BR'),address('1313 Cobblestone Way', 'Bedville', 'BV1313','BV')))<br />/<br /><br />commit<br />/<br /></pre><br />2. If I now run the select statement we can see the results:<br /><font color="blue"><pre><br />scott@orcl> set head on feedback on<br />scott@orcl> set pages 999<br />scott@orcl> set linesize 120<br />scott@orcl> col firsname format a20<br />scott@orcl> col lastname format a20<br />scott@orcl> col address_list format a50<br />scott@orcl> select firstname, lastname, address_list from person;<br /><br />FIRSTNAME LASTNAME ADDRESS_LIST(STREET, CITY, POSTCODE, STATE)<br />-------------------- -------------------- --------------------------------------------------<br />Fred Flinstone NESTED_ADDRESSES(ADDRESS('345 Cave Stone Road', 'B<br /> edrock', 'BR345', 'BR'), ADDRESS('1313 Cobblestone<br /> Way', 'Bedville', 'BV1313', 'BV'))<br /><br /><br />1 row selected.<br /><br /></pre></font><br />3. However if I now run the same select query, through a java client using JDBC we will get null values returned.<br /><pre name="code" class="java"><br />import java.sql.*;<br /><br />public class Person {<br /> public static void main(String[] args) throws SQLException, ClassNotFoundException {<br /><br /> // connection parameters<br /> String dbUrl = "jdbc:oracle:thin:@sracanov-au2.au.oracle.com:1522:orcl";<br /> String dbUser = "scott";<br /> String dbPass = "tiger";<br /><br /> // load the driver<br /> Class.forName("oracle.jdbc.driver.OracleDriver");<br /><br /> // create connection<br /> Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPass);<br /><br /> // query the table<br /> Statement s = con.createStatement();<br /> String query = "select firstname, lastname, address_list from person";<br /> ResultSet res = s.executeQuery(query);<br /><br /> // look at the result set<br /> res.next();<br /> System.out.println("First Name: " + res.getString(1));<br /> System.out.println("Last Name: " + res.getString(2));<br /> System.out.println("Address: " + res.getString(3));<br /><br /> // close connection<br /> con.close();<br /> }<br />}<br /></pre><font color="blue"><pre><br />[sracanov@sracanov-au C]$ java -version<br />java version "1.6.0_16"<br />Java(TM) SE Runtime Environment (build 1.6.0_16-b01)<br />Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)<br /><br />[sracanov@sracanov-au C]$ javac -cp .;"D:\My Contents\My Software\Oracle\JDBC\Drivers\11.2.0.1.0\ojdbc6.jar" Person.java<br /><br />[sracanov@sracanov-au C]$ java -cp .;"D:\My Contents\My Software\Oracle\JDBC\Drivers\11.2.0.1.0\ojdbc6.jar" Person<br />First Name: Fred<br />Last Name: Flinstone<br />Address: null<br /></pre></font><br /><br />This is because we need to get a collection of objects and handle them in java by returning arrays elements. The correct way to return this is:<br /><br /><pre name="code" class="java"><br />import java.sql.*;<br /><br />public class Person1 {<br /> public static void main(String[] args) throws SQLException,<br /> ClassNotFoundException {<br /><br /> // connection parameters<br /> String dbUrl = "jdbc:oracle:thin:@sracanov-au2.au.oracle.com:1522:orcl";<br /> String dbUser = "scott";<br /> String dbPass = "tiger";<br /><br /> // load the driver<br /> Class.forName("oracle.jdbc.driver.OracleDriver");<br /><br /> // create connection<br /> Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPass);<br /><br /> // query the table<br /> Statement s = con.createStatement();<br /> String query = "select firstname, lastname, address_list from person";<br /> ResultSet res = s.executeQuery(query);<br /><br /> // look at the result set<br /> while (res.next()) {<br /> int addresscounter=1;<br /> System.out.println("First Name: " + res.getString(1));<br /> System.out.println("Last Name: " + res.getString(2));<br /> Array array = res.getArray(3);<br /> Object[] address_list = (Object[]) array.getArray();<br /> for (int i = 0; i < address_list.length; i++) {<br /> Struct address = (Struct) address_list[i];<br /> Object[] attrib = address.getAttributes();<br /> for (int j = 0; j < attrib.length; j++) {<br /> System.out.println("Address " + addresscounter + ": " + attrib[j]);<br /> }<br /> addresscounter++;<br /> }<br /> }<br /><br /> // close connection<br /> con.close();<br /> }<br />}<br /></pre><font color="blue"><pre><br />[sracanov@sracanov-au C]$ javac -cp .;"D:\My Contents\My Software\Oracle\JDBC\Drivers\11.2.0.1.0\ojdbc6.jar" Person1.java<br /><br />[sracanov@sracanov-au C]$ java -cp .;"D:\My Contents\My Software\Oracle\JDBC\Drivers\11.2.0.1.0\ojdbc6.jar" Person1<br />First Name: Fred<br />Last Name: Flinstone<br />Address 1: 345 Cave Stone Road<br />Address 1: Bedrock<br />Address 1: BR345<br />Address 1: BR<br />Address 2: 1313 Cobblestone Way<br />Address 2: Bedville<br />Address 2: BV1313<br />Address 2: BV<br /></pre></font><br /><br /><a href='http://download.oracle.com/docs/cd/E11882_01/java.112/e10589/oraarr.htm#i1059642'>http://download.oracle.com/docs/cd/E11882_01/java.112/e10589/oraarr.htm#i1059642</a>Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-70906632670995393282010-05-17T11:52:00.015+10:002012-02-02T11:14:53.225+11:00Tracing the Bind ValuesCreated a simple example of how you can isolate and trace the bind variables for the records inserted and understand what to look for in the trace file.<br />
<br />
The table here consists of 3 columns. A varchar2, number and timestamp.<br />
<br />
The jdev 11113 workspace for this example is <a href="http://dl.dropbox.com/u/17312456/steveracanovic.blogspot.com/JDBC.zip">here</a>.<br />
<br />
When running the application, this following results are displayed:<br />
<pre><span style="color: blue;">
=============
Java Vendor is ... Sun Microsystems Inc.
Java Version is 1.6.0_18
=============
Database Product Name is ... Oracle
Database Product Version is Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
=============
JDBC Driver Name is ........ Oracle JDBC driver
JDBC Driver Version is ..... 11.1.0.7.0-Production
=============
Dropping/Creating table...
execSQL() returning: 0 for SQL=DROP TABLE SCOTT.BIND_TEST
execSQL() returning: 0 for SQL=CREATE TABLE SCOTT.BIND_TEST (VARCHAR_FIELD VARCHAR2(50), NO_FIELD NUMBER(2), TIMESTAMP_FIELD TIMESTAMP)
Preparing stmt: INSERT INTO SCOTT.BIND_TEST (VARCHAR_FIELD, NO_FIELD, TIMESTAMP_FIELD) VALUES (?, ?, ?)
Inserting ...
Inserting Complete...
DISPLAY...
<b>test_string_0.8433509446104999 0 2010-05-17 11:35:46.328</b>
test_string_0.32801143775147246 1 2010-05-17 11:35:46.5
test_string_0.6936132181788695 2 2010-05-17 11:35:46.515
test_string_0.4458248593661084 3 2010-05-17 11:35:46.515
test_string_0.8349244238371425 4 2010-05-17 11:35:46.515
test_string_0.014215120763115707 5 2010-05-17 11:35:46.515
test_string_0.7895349187550287 6 2010-05-17 11:35:46.515
test_string_0.33693148690955965 7 2010-05-17 11:35:46.531
test_string_0.60803516417148 8 2010-05-17 11:35:46.531
test_string_0.5201490476224547 9 2010-05-17 11:35:46.531
Show Trace File...
TRACE FILE NAME : /u01/programs/oracle/product/10.2.0/db_1/admin/orcl/udump/orcl_ora_16541.trc</span></pre>
<br />
<br />
Open the trace file I can see the following:<br />
<pre><span style="color: black;">
...
PARSING IN <b>CURSOR #8</b> len=90 dep=0 uid=5 oct=2 lid=5 tim=1244198234987514 hv=896770016 ad='2b9e3258'
INSERT INTO SCOTT.BIND_TEST (VARCHAR_FIELD, NO_FIELD, TIMESTAMP_FIELD) VALUES (:1, :2, :3)
END OF STMT
PARSE #8:c=2000,e=2579,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=1244198234987507
=====================
PARSING IN CURSOR #12 len=227 dep=1 uid=0 oct=3 lid=0 tim=1244198235054488 hv=2190775527 ad='2f56e994'
select u.name,o.name, t.update$, t.insert$, t.delete$, t.enabled from obj$ o,user$ u,trigger$ t where t.baseobject=:1 and t.obj#=o.obj# and o.owner#=u.user# and bitand(property,16)=0 and bitand(property,8)=0 order by o.obj#
END OF STMT
PARSE #12:c=3000,e=2745,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=1244198235054480
BINDS #12:
kkscoacd
Bind#0
oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
oacflg=00 fl2=0001 frm=00 csi=00 siz=24 off=0
kxsbbbfp=b7234fe8 bln=22 avl=04 flg=05
value=150767
EXEC #12:c=5999,e=73474,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=1244198235128125
FETCH #12:c=0,e=59,p=0,cr=1,cu=0,mis=0,r=0,dep=1,og=4,tim=1244198235128225
STAT #12 id=1 cnt=0 pid=0 pos=1 obj=0 op='SORT ORDER BY (cr=1 pr=0 pw=0 time=103 us)'
STAT #12 id=2 cnt=0 pid=1 pos=1 obj=0 op='NESTED LOOPS (cr=1 pr=0 pw=0 time=77 us)'
STAT #12 id=3 cnt=0 pid=2 pos=1 obj=0 op='NESTED LOOPS (cr=1 pr=0 pw=0 time=69 us)'
STAT #12 id=4 cnt=0 pid=3 pos=1 obj=81 op='TABLE ACCESS BY INDEX ROWID TRIGGER$ (cr=1 pr=0 pw=0 time=64 us)'
STAT #12 id=5 cnt=0 pid=4 pos=1 obj=125 op='INDEX RANGE SCAN I_TRIGGER1 (cr=1 pr=0 pw=0 time=35 us)'
STAT #12 id=6 cnt=0 pid=3 pos=2 obj=18 op='TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)'
STAT #12 id=7 cnt=0 pid=6 pos=1 obj=36 op='INDEX UNIQUE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us)'
STAT #12 id=8 cnt=0 pid=2 pos=2 obj=22 op='TABLE ACCESS CLUSTER USER$ (cr=0 pr=0 pw=0 time=0 us)'
STAT #12 id=9 cnt=0 pid=8 pos=1 obj=11 op='INDEX UNIQUE SCAN I_USER# (cr=0 pr=0 pw=0 time=0 us)'
<b>BINDS #8:</b>
kkscoacd
Bind#0
oacdty=01 mxl=32(30) mxlc=00 mal=00 scl=00 pre=00
oacflg=03 fl2=1000010 frm=01 csi=31 siz=68 off=0
kxsbbbfp=b722aaec bln=32 avl=30 flg=05
<b>value="test_string_0.8433509446104999"</b>
Bind#1
oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
oacflg=03 fl2=1000000 frm=01 csi=31 siz=0 off=32
kxsbbbfp=b722ab0c bln=22 avl=01 flg=01
<b>value=0</b>
Bind#2
oacdty=180 mxl=11(11) mxlc=00 mal=00 scl=00 pre=00
oacflg=03 fl2=1000000 frm=01 csi=31 siz=0 off=56
kxsbbbfp=b722ab24 bln=11 avl=11 flg=01
<b>value=</b>
Dump of memory from 0xB722AB24 to 0xB722AB2F
B722AB20 11056E78 132F240C 0000E28C [xn...$/.....]
EXEC #8:c=12998,e=101172,p=0,cr=2,cu=21,mis=1,r=1,dep=0,og=1,tim=1244198235152633
XCTEND rlbk=0, rd_only=0
...</span></pre>
<br />
<br />
Here you can see the first insert query references "CURSOR #8" that will bind to "BINDS #8:" which shows the binding values:<br />
<br />
value="test_string_0.8433509446104999"<br />
value=0<br />
value=<br />
<br />
Timestamp is in hex format. You will to convert that yourself to find the value.<br />
<br />
<a href="http://wiki.oracle.com/page/Structure+of+an+Extended+SQL+Trace+file">http://wiki.oracle.com/page/Structure+of+an+Extended+SQL+Trace+file</a>Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-59053446668045109372010-04-22T09:22:00.005+10:002010-05-18T13:42:17.622+10:00Creating a Custom ADF .JSPX Login PageNote for myself to create a simple custom ADF login page with jspx.<br /><br />Create a new workspace by following the example shown here:<br /><br /><a href="http://www.oracle.com/technology/products/jdev/11/cuecards111/adf_set_29/ccset29_ALL.html">http://www.oracle.com/technology/products/jdev/11/cuecards111/adf_set_29/ccset29_ALL.html</a><br /><br />Once completing this, then go through the follow link <a href="http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/adding_security.htm#BABDEICH">http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/adding_security.htm#BABDEICH</a> to create the custom jspx page and backing bean to login into the application.<br /><br />The finished login will look something like this.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyg1D6ymozbeEciGUtr1ETNbJ5S3fqAF1rfcl3kyejD2XENOFbP2KPKqPvwqtLl-mmBE5HJhrSsppUcCw-Dw36wqY17qE3RLx10McUYnchFwwNz6XRTtqyJE5lk3XBsKpJM2st2-wUcXQz/s1600/login.screen.jpg"><img style="cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyg1D6ymozbeEciGUtr1ETNbJ5S3fqAF1rfcl3kyejD2XENOFbP2KPKqPvwqtLl-mmBE5HJhrSsppUcCw-Dw36wqY17qE3RLx10McUYnchFwwNz6XRTtqyJE5lk3XBsKpJM2st2-wUcXQz/s400/login.screen.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5462736597675180130" /></a><br /><br />Download completed workspace from <a href="http://www.mediafire.com/file/jfufr1yztjw/SecureApplication.zip">here</a>.Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-79225278410722894502010-04-20T12:03:00.055+10:002010-05-18T13:42:37.289+10:00Using Oracle 11.2g Data Encryption and Integrity Connection Pool in OAS10gI haven't had the chance to write something for a while now. I was recently working on new feature with oracle advanced security data encryption and integrity using a JDBC connection pool. So I'll write my steps up of how I went about configuring this in OAS 10g.<br /><br />This setup allows for data encryption and integrity without the overhead of SSL.<br /><br />I used the following products to configure the steps detailed here:<br /><br /><span style="font-weight:bold;">* Oracle Application Server 10.1.3.2.0<br />* JDev 10.1.3.4.0<br />* JDBC 11.2.0.1.0<br />* Oracle Database 11.2</span><br /><br />I am referencing these documentation for further details:<br /><br />Oracle® Database Advanced Security Administrator's Guide 11g Release 2 (11.2)<br />Configuring Network Data Encryption and Integrity for Oracle Servers and Clients<br /><a href="http://download.oracle.com/docs/cd/E11882_01/network.112/e10746/asoconfg.htm#insertedID0">http://download.oracle.com/docs/cd/E11882_01/network.112/e10746/asoconfg.htm#insertedID0</a><br /><br />Oracle® Database JDBC Developer's Guide, 11g Release 2 (11.2)<br />Support for Data Encryption and Integrity<br /><a href="http://download.oracle.com/docs/cd/E11882_01/java.112/e10589/clntsec.htm#EHAFHEIG">http://download.oracle.com/docs/cd/E11882_01/java.112/e10589/clntsec.htm#EHAFHEIG</a><br /><br />Here are my complete steps:<br /><br />1. First follow the steps to configure the database: - <a href="http://download.oracle.com/docs/cd/E11882_01/network.112/e10746/asoconfg.htm#i1006517">http://download.oracle.com/docs/cd/E11882_01/network.112/e10746/asoconfg.htm#i1006517</a><br /><br />Depending on your selection, your 'sqlnet.ora' file should look something like this when finished:<br /><pre><span style="color:blue;"># sqlnet.ora Network Configuration File: /home/u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora<br /># Generated by Oracle configuration tools.<br /><br />SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER= (MD5)<br /><br />SQLNET.ENCRYPTION_SERVER = required<br /><br />NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)<br /><br />SQLNET.CRYPTO_SEED = 'example123456'<br /><br />SQLNET.ENCRYPTION_TYPES_SERVER= (RC4_256)<br /><br />ADR_BASE = /home/u01/app/oracle<br /><br />SQLNET.CRYPTO_CHECKSUM_SERVER = required<br /></span></pre>Once the steps have been completed, restart the listener and wait for the service to come back up.<br /><pre><span style="color:blue;">[oracle@beast admin]$ lsnrctl stop<br /><br />LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 20-APR-2010 06:39:08<br /><br />Copyright (c) 1991, 2009, Oracle. All rights reserved.<br /><br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1523)))<br />The command completed successfully<br />[oracle@beast admin]$ lsnrctl start<br /><br />LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 20-APR-2010 06:39:11<br /><br />Copyright (c) 1991, 2009, Oracle. All rights reserved.<br /><br />Starting /home/u01/app/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait...<br /><br />TNSLSNR for Linux: Version 11.2.0.1.0 - Production<br />System parameter file is /home/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora<br />Log messages written to /home/u01/app/oracle/diag/tnslsnr/beast/listener/alert/log.xml<br />Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1523)))<br />Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=beast.au.oracle.com)(PORT=1523)))<br /><br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1523)))<br />STATUS of the LISTENER<br />------------------------<br />Alias LISTENER<br />Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production<br />Start Date 20-APR-2010 06:39:11<br />Uptime 0 days 0 hr. 0 min. 0 sec<br />Trace Level off<br />Security ON: Local OS Authentication<br />SNMP OFF<br />Listener Parameter File /home/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora<br />Listener Log File /home/u01/app/oracle/diag/tnslsnr/beast/listener/alert/log.xml<br />Listening Endpoints Summary...<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1523)))<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=beast.au.oracle.com)(PORT=1523)))<br />The listener supports no services<br />The command completed successfully<br />[oracle@beast admin]$ lsnrctl status<br /><br />LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 20-APR-2010 06:39:17<br /><br />Copyright (c) 1991, 2009, Oracle. All rights reserved.<br /><br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1523)))<br />STATUS of the LISTENER<br />------------------------<br />Alias LISTENER<br />Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production<br />Start Date 20-APR-2010 06:39:11<br />Uptime 0 days 0 hr. 0 min. 5 sec<br />Trace Level off<br />Security ON: Local OS Authentication<br />SNMP OFF<br />Listener Parameter File /home/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora<br />Listener Log File /home/u01/app/oracle/diag/tnslsnr/beast/listener/alert/log.xml<br />Listening Endpoints Summary...<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1523)))<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=beast.au.oracle.com)(PORT=1523)))<br />The listener supports no services<br />The command completed successfully<br />[oracle@beast admin]$ lsnrctl status<br /><br />LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 20-APR-2010 06:40:24<br /><br />Copyright (c) 1991, 2009, Oracle. All rights reserved.<br /><br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1523)))<br />STATUS of the LISTENER<br />------------------------<br />Alias LISTENER<br />Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production<br />Start Date 20-APR-2010 06:39:11<br />Uptime 0 days 0 hr. 1 min. 12 sec<br />Trace Level off<br />Security ON: Local OS Authentication<br />SNMP OFF<br />Listener Parameter File /home/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora<br />Listener Log File /home/u01/app/oracle/diag/tnslsnr/beast/listener/alert/log.xml<br />Listening Endpoints Summary...<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1523)))<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=beast.au.oracle.com)(PORT=1523)))<br />Services Summary...<br />Service "linux11gr2" has 1 instance(s).<br /> Instance "linux11gr2", status READY, has 1 handler(s) for this service...<br />Service "linux11gr2XDB" has 1 instance(s).<br /> Instance "linux11gr2", status READY, has 1 handler(s) for this service...<br />The command completed successfully<br /></span></pre><br />2. Download JDBC driver 11.2.0.1.0. You can get the driver from here. <a href="http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html">http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html</a><br />Since OAS comes with JDK 1.5_06 by default, I'll used the 'ojdbc5.jar'.<br /><br />3. In My Oracle Support, review document 420303.1 - How to Use The Latest Thin JDBC Driver Across All Applications For a 10.1.3.x OAS Container<br /><br />Based on that document, here are the steps how I upgraded the driver and verified it updated correctly:<br /><br />4. I created a new instance called JDBC112010<br /><br />> createinstance -instanceName JDBC112010<br /><br />5. I started the new instance and checked to make sure it was up.<br /><pre><span style="color:blue;"><br />> opmnctl startproc process-type=JDBC112010<br />opmnctl: starting opmn managed processes...<br /><br />> opmnctl status<br /><br />Processes in Instance: web.sracanov-au.au.oracle.com<br />---------------------------------+--------------------+---------+---------<br />ias-component | process-type | pid | status<br />---------------------------------+--------------------+---------+---------<br />OC4JGroup:default_group | OC4J:JDBC112010 | 5124 | Alive<br />...<br /></span></pre><br />6. I then deploy the following application <a href="http://www.mediafire.com/file/fdxiyzjzmyg/drvtest.ear">'drvtest.ear'</a><br /><br />7. I accessed and ran the application from URL - 'http://<server>:<port>/drvtest/dbdetails.jsp'<br /><br />I completed my database details and clicked on the 'Submit' button.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz6LX7zr5St_UvWIyWoemqdJ6syk-vlgItveurjiZh5PUVT8Xz2l1hWq1RcUfjDpW4_pm1r9eATvNcMV7ZLNthvG5qx-HvfYQQfloPow4RM9HrcoD0jw6MpCCtvPi5Gx6DIrqZCHxG1xSg/s1600/jdbc.driver.01.jpg"><img style="cursor:pointer; cursor:hand;width: 400px; height: 237px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz6LX7zr5St_UvWIyWoemqdJ6syk-vlgItveurjiZh5PUVT8Xz2l1hWq1RcUfjDpW4_pm1r9eATvNcMV7ZLNthvG5qx-HvfYQQfloPow4RM9HrcoD0jw6MpCCtvPi5Gx6DIrqZCHxG1xSg/s400/jdbc.driver.01.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5462043222157660082" /></a><br /><br />The current JDBC details are displayed:<br /><br /><span style="font-weight:bold;">=============<br />JDBC Driver Name is ........ Oracle JDBC driver<br />JDBC Driver Version is ..... 10.1.0.5.0<br />JDBC Driver Major Version is 10<br />JDBC Driver Minor Version is 1<br />=============<br /></span><br />8. I then continued to followed Doc ID 420303.1 to upgrade the JDBC Driver.<br /><br />In point 7 of the document, I entered<br /><br /> <span style="font-weight:bold;">Shared Library Name : oracle.jdbc<br /> Shared Library Version : 11.2.0.1.0</span><br /><br /><span style="font-weight:bold;">NOTE: The name must be 'oracle.jdbc'</span><br /><br />9. In point 15 of the document, I first created a backup of 'system-applications.xml'. I then entered<br /><br /> <pre name="code" class="xml" cols="60" rows="2"><import-shared-library name="oracle.jdbc" version="11.2.0.1.0"></pre><br /><br /><span style="font-weight:bold;">NOTE: The name must be 'oracle.jdbc'. The version details must match version enter in step 8.</span><br /><br />10. After restarting the instance, I then accessed the test application again. 'http://<server>:<port>/drvtest/dbdetails.jsp'<br /><br />I completed my database details and clicked on the 'Submit' button.<br /><br />This is the results I received<br /><br /><span style="font-weight:bold;">=============<br />JDBC Driver Name is ........ Oracle JDBC driver<br />JDBC Driver Version is ..... 11.2.0.1.0<br />JDBC Driver Major Version is 11<br />JDBC Driver Minor Version is 2<br />=============</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0mm6AJLynNKiOlIndb75e0CtKZ09PI6KMMG2E0vrRB8gEc-6Lb7j1lMvqppOKwJDur_rBY2gvqPT_LrUeHK5GP5JaBAMgyJZv-yySAn-98cRK_BX31CMLzSn2MNRXRKQjyZWk7J7KnWdU/s1600/jdbc.driver.02.jpg"><img style="cursor:pointer; cursor:hand;width: 400px; height: 232px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0mm6AJLynNKiOlIndb75e0CtKZ09PI6KMMG2E0vrRB8gEc-6Lb7j1lMvqppOKwJDur_rBY2gvqPT_LrUeHK5GP5JaBAMgyJZv-yySAn-98cRK_BX31CMLzSn2MNRXRKQjyZWk7J7KnWdU/s400/jdbc.driver.02.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5462043991900648626" /></a><br /><br />I can now see and confirm the JDBC Driver upgrade worked successfully.<br /><br />11. Then created the datasource. You can do this following document 456270.1 - Creating a datasource in Application Server Control (ASC)/Enterprise Manager (EM) for 10.1.3.X<br /><br />Here is how my connection pool looks like in 'data-sources.xml':<br /><pre name="code" class="xml" cols="60" rows="30"><br /><managed-data-source connection-pool-name="scottConnectionPool" jndi-name="jdbc/scottDS" name="jdbc/scottDS"/><br /> <connection-pool name="scottConnectionPool"><br /> <connection-factory factory-class="oracle.jdbc.OracleDriver" user="scott" password="tiger" url="jdbc:oracle:thin:@//beast.au.oracle.com:1523/linux11gr2"><br /> <property name="CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL" value="ACCEPTED"></property><br /> <property name="CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES" value="RC4_256"></property><br /> <property name="CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVEL" value="ACCEPTED"></property><br /> <property name="CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPES" value="MD5"></property><br /> </connection-factory><br /> </connection-pool><br /></pre><br /><span style="font-weight:bold;">NOTE: You must use a managed datasource with oracle.jdbc.OracleDriver factory class. Can not use native data source. The pool properties there do not implement the encryption properties from oracle.jdbc.OracleConnection interface.<br /><br />The XXX_TYPES should match the setting as configure in the database. Step 1</span><br /><br />12. Download and deploy this application EAR file <a href="http://www.mediafire.com/file/yqomzmj2nzj/drvtest2.ear">'drvtest2.ear'</a> which you will then connect to this connection pool.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBcyx-kmNzmm4CmEfPEscnEl6VsO2EflTVteKV9RsXEyNtiOcKzVgxJrtWSddv8EBm4H-UPTsBA7Pdlib3jHHFvGDgrtdyFz1msg3C8XZ7R9M4LtU_0TxDDvx0-FWTOleudC8idR2dQA_/s1600/ASC-deployed-apps.jpg"><img style="cursor:pointer; cursor:hand;width: 400px; height: 205px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBcyx-kmNzmm4CmEfPEscnEl6VsO2EflTVteKV9RsXEyNtiOcKzVgxJrtWSddv8EBm4H-UPTsBA7Pdlib3jHHFvGDgrtdyFz1msg3C8XZ7R9M4LtU_0TxDDvx0-FWTOleudC8idR2dQA_/s400/ASC-deployed-apps.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5462045033644685250" /></a><br /><br />Access the URL 'http://<server>:<port>/drvtest2/dbdetails.jsp' and enter the JNDI of the pool and click 'Submit'. <br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Nk1JsggOA2u1YYy-mCBWxhz4eqnKuO7hErukQqcK7omLAwXoYinwndk11rP0AjrhEhUVP_3sQFqtjuH8FScNR3T_3bb_MC6smZxroyF3ai0c9amM6n3lzGdmYOnZRilflkcsZZZWczpX/s1600/jdbc.jndi.01.jpg"><img style="cursor:pointer; cursor:hand;width: 400px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Nk1JsggOA2u1YYy-mCBWxhz4eqnKuO7hErukQqcK7omLAwXoYinwndk11rP0AjrhEhUVP_3sQFqtjuH8FScNR3T_3bb_MC6smZxroyF3ai0c9amM6n3lzGdmYOnZRilflkcsZZZWczpX/s400/jdbc.jndi.01.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5462045257377929378" /></a><br /><br />Your results should look something like:<br /><br /><span style="font-weight:bold;">System Information<br /><br />JDK Details<br /><br />=============<br />JDK Vendor is ... Sun Microsystems Inc.<br />JDK Version is ... 1.5.0_06<br />=============<br /><br />JDBC Driver Details<br /><br />=============<br />JDBC Driver Name is ........ Oracle JDBC driver<br />JDBC Driver Version is ..... 11.2.0.1.0<br />JDBC Driver Major Version is 11<br />JDBC Driver Minor Version is 2<br />=============<br /><br />Database Details<br /><br />=============<br />Database Product Name is ... Oracle<br />Database Product Version is Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production<br />With the Partitioning, OLAP, Data Mining and Real Application Testing options<br /><br />Secure Algorithm Details<br /><br />=============<br />Encryption algorithm is: RC4_256<br />Data Integrity algorithm is: MD5<br /></span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdEsfwoLBy4y4O8pSaPpvE4PCLdefcdkZRRvTy0NV06MENaQT9KAMNFDd7LhEqPR3mgMQeqTMypI8E2605sanpQvtEYYh9mLAV2mysbEapiJ4bjK7nLYLaAW-p8lCbBDIFIiHfo751-B0U/s1600/jdbc.jndi.02.jpg"><img style="cursor:pointer; cursor:hand;width: 400px; height: 316px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdEsfwoLBy4y4O8pSaPpvE4PCLdefcdkZRRvTy0NV06MENaQT9KAMNFDd7LhEqPR3mgMQeqTMypI8E2605sanpQvtEYYh9mLAV2mysbEapiJ4bjK7nLYLaAW-p8lCbBDIFIiHfo751-B0U/s400/jdbc.jndi.02.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5462045408432420818" /></a><br /><br />Now I can see the encryption & data integrity algorithm used in this connection. You can further download a tool like wireshark - <a href="http://www.wireshark.org/">http://www.wireshark.org/</a> and run it on the application server to monitor this connection pool and confirm the message are encrypted and unreadable.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfZKbKFQGDkA8l09pcpILwk3HpHkvXysRT8XrDiafk3PO0__rWTeP9g0v9I9ZtiPjhtSSrJzhyphenhyphenOSA39Wz78YTv-S-LZQxkFCSzPrIw6xYNttgTJCKWKcDNCdpsiK-BCB1kcHN1UDtpsRvD/s1600/wireshark.jpg"><img style="cursor:pointer; cursor:hand;width: 400px; height: 297px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfZKbKFQGDkA8l09pcpILwk3HpHkvXysRT8XrDiafk3PO0__rWTeP9g0v9I9ZtiPjhtSSrJzhyphenhyphenOSA39Wz78YTv-S-LZQxkFCSzPrIw6xYNttgTJCKWKcDNCdpsiK-BCB1kcHN1UDtpsRvD/s400/wireshark.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5462053862073441282" /></a><br /><br />You can download the JDev workspace from <a href="http://www.mediafire.com/file/cqzyz0mjfyy/JDBCSystemDetails.zip">here</a>Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-4704022224881327472009-12-17T10:02:00.026+11:002011-11-21T11:30:02.748+11:0011g Database Webservice Callout Steps11g Database Webservice Callout Steps<br />
<br />
I installed the 11g R2 database last week and though I'd go through notes 469588.1, 428775.1 and 841183.1 on My Oracle Support and jot down my steps for configuring UTL_DBWS and JPublisher to use a java webservice proxy from the database to call external webservices.<br />
<br />
This is what I done:<br />
<br />
1. Check to see if the database webservice utilities are installed in sys schema, check the status of the java classes and set the OJVM pool size.<br />
<br />
a. Check and see if callout utilities are installed:<br />
<pre class="sql" name="code">[oracle@sracanov-au2 dbhome_1]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 14 08:04:09 2009
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn sys/ as sysdba
Enter password:
Connected.
SQL> desc sys.utl_dbws
ERROR:
ORA-04043: object sys.utl_dbws does not exist</pre>
b. Check the status of the java classes:<br />
<pre class="sql" name="code">SQL> SELECT owner, status, count(*) FROM DBA_OBJECTS WHERE OBJECT_TYPE='JAVA CLASS' GROUP BY owner, status;
OWNER STATUS COUNT(*)
------------------------------ ------- ----------
MDSYS VALID 531
SYS VALID 20444
EXFSYS VALID 47
ORDSYS VALID 1898</pre>
c. Set the OJVM pool size. I'm setting the size as per note 469588.1. Although the online documentation suggest java_pool_size is set to at least 96 MB and shared_pool_size is set to at least 80 MB. <a href="http://download.oracle.com/docs/cd/E11882_01/java.112/e10587/intro.htm#BHCBACII">http://download.oracle.com/docs/cd/E11882_01/java.112/e10587/intro.htm#BHCBACII</a>. If this is not set, then loading and resolving java classes (jars) will occur errors:<br />
<pre class="sql" name="code">SQL> show parameter SHARED_POOL_SIZE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size big integer 0
SQL> show parameter JAVA_POOL_SIZE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_pool_size big integer 0
SQL> alter system set SHARED_POOL_SIZE=132M scope=both;
System altered.
SQL> alter system set JAVA_POOL_SIZE=80M scope=both;
System altered.
SQL> show parameter SHARED_POOL_SIZE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size big integer 132M
SQL> show parameter JAVA_POOL_SIZE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_pool_size big integer 80M
SQL></pre>
2. Download JPublisher & Database Web Services Callout Utilities<br />
<br />
Webpage:<br />
<a href="http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html">http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html</a><br />
Download - JPublisher 10g Release 10.2:<br />
<a href="http://download.oracle.com/otn/utilities_drivers/jdbc/10201/jpub_102.zip">http://download.oracle.com/otn/utilities_drivers/jdbc/10201/jpub_102.zip</a><br />
<br />
Webpage:<br />
<a href="http://www.oracle.com/technetwork/database/enterprise-edition/index-097123.html">http://www.oracle.com/technetwork/database/enterprise-edition/index-097123.html</a><br />
Download - 10.1.3.1 Callout Utility for 10g and 11g RDBMS (ZIP, ~13MB):<br />
<a href="http://download.oracle.com/technology/sample_code/tech/java/jsp/dbws-callout-utility-10131.zip">http://download.oracle.com/technology/sample_code/tech/java/jsp/dbws-callout-utility-10131.zip</a><br />
<br />
3. Setup the OS environment:<br />
<pre class="sql" name="code">[oracle@sracanov-au2 ~]$ export ORACLE_HOME=/u01/programs/oracle/product/11.2.0/dbhome_1
[oracle@sracanov-au2 ~]$ export JAVA_HOME=$ORACLE_HOME/jdk
[oracle@sracanov-au2 ~]$ export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/sqlj/bin:$JAVA_HOME/bin:$PATH
[oracle@sracanov-au2 ~]$ export CLASSPATH=$ORACLE_HOME/sqlj/lib/translator.jar:$ORACLE_HOME/sqlj/lib/runtime12.jar:$ORACLE_HOME/sqlj/lib/dbwsa.jar:$ORACLE_HOME/javavm/lib/aurora.zip:$ORACLE_HOME/jdbc/lib/ojdbc5.jar:$ORACLE_HOME/jdk/lib/dt.jar:$ORACLE_HOME/jdk/lib/tools.jar:$ORACLE_HOME/jlib/jssl-1_1.jar:$ORACLE_HOME/jlib/orai18n.jar:$ORACLE_HOME/rdbms/jlib/xdb.jar:$ORACLE_HOME/lib/xsu12.jar:$ORACLE_HOME/jlib/jndi.jar:$ORACLE_HOME/rdbms/jlib/aqapi.jar:$ORACLE_HOME/rdbms/jlib/jmscommon.jar:$ORACLE_HOME/lib/xmlparserv2.jar</pre>
I extract the downloaded files in the next setup. You can set the classpath now or later. Doing it now for simplicity.<br />
<br />
4. Extract the downloaded files:<br />
<br />
a. Take a backup of sqlj folder first:<br />
<pre class="sql" name="code">[oracle@sracanov-au2 ~]$ mv $ORACLE_HOME/sqlj $ORACLE_HOME/sqlj.org</pre>
b. Extract Jpub:<br />
<pre class="sql" name="code">[oracle@sracanov-au2 ~]$ unzip jpub_102.zip -d $ORACLE_HOME
Archive: jpub_102.zip
creating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/
creating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/sqljutl.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/translator.jar
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/runtime12.jar
creating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/bin/
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/bin/README.txt
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/bin/jpub.c
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/bin/jpub
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/bin/jpub.exe
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/README.txt
creating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/
creating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/Booleans.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/Indexby.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/Inherit.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/MyRationalC.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/MyRationalO.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/MyRationalO8i.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/PlsqlType.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/README.txt
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/Rational.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestBooleans.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestCallin.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestIndexby.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestInh.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestInstall.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestInstallCreateTable.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestInstallJDBC.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestQuery.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestMyRationalC.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestMyRationalO.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestMyRationalO8i.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestPlsqlType.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestRationalO.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TestRationalP.java
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/WrDbmsUtil.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/connect.properties
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/jpub.properties
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/demo/jpub/TemperatureService.wsdl
creating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/doc/
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/doc/faq.html
[oracle@sracanov-au2 ~]$</pre>
c. Extract Callout Utilities:<br />
<pre class="sql" name="code">[oracle@sracanov-au2 ~]$ unzip dbws-callout-utility-10131.zip sqlj\* -d $ORACLE_HOME
Archive: dbws-callout-utility-10131.zip
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/utl_dbws_decl.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/utl_dbws_body.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/dbwsclientws.jar
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/dbwsclientdb102.jar
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/dbwsclientdb11.jar
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/dbwsa.jar
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/lib/dbwsclientdb101.jar
[oracle@sracanov-au2 ~]$ unzip dbws-callout-utility-10131.zip samples\* -d $ORACLE_HOME/sqlj
Archive: dbws-callout-utility-10131.zip
creating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/samples/
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/samples/javacallout.wsdl
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/samples/test-plsql-dii.sql
inflating: /u01/programs/oracle/product/11.2.0/dbhome_1/sqlj/samples/javacallout.ear
[oracle@sracanov-au2 ~]$ unzip dbws-callout-utility-10131.zip *.htm -d sqlj/
Archive: dbws-callout-utility-10131.zip
inflating: sqlj/10.htm
inflating: sqlj/11.htm
inflating: sqlj/README.htm</pre>
d. Looking at the extracted files, there is no dbwsclient.jar.<br />
<br />
<a href="http://download.oracle.com/docs/cd/E11882_01/java.112/e10587/intro.htm#BHCBACII">http://download.oracle.com/docs/cd/E11882_01/java.112/e10587/intro.htm#BHCBACII</a><br />
<br />
There is however dbwsclientws.jar. dbwsclientws.jar is the same as dbwsclient.jar. Jpub looks for this file when you run the jpub command. To avoid the error: <b>'Error loading dbwsclient.jar, please check the database trace file and make sure dbwsclient.jar exists in ORACLE_HOME/sqlj/lib.'</b> when running the jpub command, I'll just make a copy of this file:<br />
<pre class="sql" name="code">[oracle@sracanov-au2 lib]$ ls -al | grep dbwsc
-rw-r--r-- 1 oracle oinstall 737386 Jun 18 2008 dbwsclientdb101.jar
-rw-r--r-- 1 oracle oinstall 208486 Jun 18 2008 dbwsclientdb102.jar
-rw-r--r-- 1 oracle oinstall 214156 Jun 18 2008 dbwsclientdb11.jar
-rw-r--r-- 1 oracle oinstall 6716174 Aug 1 2008 dbwsclientws.jar
[oracle@sracanov-au2 lib]$ cp dbwsclientws.jar dbwsclient.jar
[oracle@sracanov-au2 lib]$ ls -al | grep dbwsc
-rw-r--r-- 1 oracle oinstall 737386 Jun 18 2008 dbwsclientdb101.jar
-rw-r--r-- 1 oracle oinstall 208486 Jun 18 2008 dbwsclientdb102.jar
-rw-r--r-- 1 oracle oinstall 214156 Jun 18 2008 dbwsclientdb11.jar
-rw-r--r-- 1 oracle oinstall 6716174 Dec 16 06:42 dbwsclient.jar
-rw-r--r-- 1 oracle oinstall 6716174 Aug 1 2008 dbwsclientws.jar
[oracle@sracanov-au2 lib]$</pre>
I am not sure why they packaged it like this. It seems it was packaged dbwsclient.jar in the previous download version i.e. 10.1.3.0 Callout Utility for 10g RDBMS (ZIP, 6.89MB).<br />
<br />
Note that I did not find this step crucial. I could still run jpub and each time I will get that error above <b>'Error loading dbwsclient.jar,....</b>. It could still proceed without it and it worked fine in my example. However doing this I avoid seeing that error all the time when I run Jpub.<br />
<br />
5. Set the execute permission on jpub:<br />
<pre class="sql" name="code">[oracle@sracanov-au2 ~]$ cd $ORACLE_HOME/sqlj/bin
[oracle@sracanov-au2 bin]$ chmod +x jpub</pre>
6. I'm using the scott schema in this example. Check the schema has CONNECT, RESOURCE and CREATE PUBLIC SYNONYM grants. This is the minimum permission required. If not, allow for it.<br />
<pre class="sql" name="code">SQL> SELECT grantee, granted_role FROM dba_role_privs where GRANTEE = 'SCOTT';
GRANTEE GRANTED_ROLE
------------------------------ ------------------------------
SCOTT RESOURCE
SCOTT CONNECT
SQL> select * from dba_sys_privs where GRANTEE='SCOTT';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SCOTT UNLIMITED TABLESPACE NO
SQL> grant CREATE PUBLIC SYNONYM to scott;
SQL> select * from dba_sys_privs where GRANTEE='SCOTT';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SCOTT UNLIMITED TABLESPACE NO
SCOTT CREATE PUBLIC SYNONYM NO</pre>
7. Load the database webservice callout utilities into the scott schema. The jar's are found in $ORACLE_HOME/sqlj/lib folder.<br />
<pre class="sql" name="code">[oracle@sracanov-au2 bin]$ cd $ORACLE_HOME/sqlj/lib
[oracle@sracanov-au2 lib]$ loadjava -u scott/tiger -r -v -f -s -grant public -genmissing dbwsclientws.jar dbwsclientdb11.jar >& loadjava.txt</pre>
Check the log and see if it completed successfully. It should look something like:<br />
<pre class="sql" name="code">[oracle@sracanov-au2 lib]$ tail -8 loadjava.txt
Classes Loaded: 4061
Resources Loaded: 81
Sources Loaded: 0
Published Interfaces: 0
Classes generated: 63
Classes skipped: 0
Synonyms Created: 0
Errors: 0
[oracle@sracanov-au2 lib]$</pre>
(The values are likely to be different. This depends the on system environment and what already installed).<br />
<br />
8. Once the database webservice call out classes have been loaded, I need to run the PL/SQL wrappers that will call theses classes. The scripts are found in $ORACLE_HOME/sqlj/lib folder. Since I installed the jar in scott, scott needs to run these scripts:<br />
<pre class="sql" name="code">[oracle@sracanov-au2 lib]$ sqlplus scott/tiger
SQL*Plus: Release 11.2.0.1.0 Production on Tue Dec 15 11:08:50 2009
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> @utl_dbws_decl.sql
Package created.
SQL> @utl_dbws_body.sql
Package body created.
Grant succeeded.
SQL> desc utl_dbws
PROCEDURE ADD_PARAMETER
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
CALL_HANDLE NUMBER IN
XML_NAME VARCHAR2 IN
Q_NAME VARCHAR2(4096) IN
...
...</pre>
9. Grant the following classes from the SYS schema to scott. (or whichever schema your using. Ensure the schema name is in capital letters. i.e. 'SCOTT'):<br />
<pre class="sql" name="code">SQL> conn /as sysdba
Connected.
SQL> call dbms_java.grant_permission('SCOTT','SYS:java.lang.RuntimePermission', 'shutdownHooks', '' );
SQL> call dbms_java.grant_permission('SCOTT','SYS:java.util.logging.LoggingPermission', 'control', '' );
SQL> call dbms_java.grant_permission('SCOTT','SYS:java.util.PropertyPermission','http.proxySet','write');
SQL> call dbms_java.grant_permission('SCOTT','SYS:java.util.PropertyPermission','http.proxyHost', 'write');
SQL> call dbms_java.grant_permission('SCOTT','SYS:java.util.PropertyPermission','http.proxyPort', 'write');
SQL> call dbms_java.grant_permission('SCOTT','SYS:java.lang.RuntimePermission','getClassLoader','');
SQL> call dbms_java.grant_permission('SCOTT','SYS:java.net.SocketPermission','*','connect,resolve');
SQL> call dbms_java.grant_permission('SCOTT','SYS:java.util.PropertyPermission','*','read,write');
SQL> call dbms_java.grant_permission('SCOTT','SYS:java.lang.RuntimePermission','setFactory','');
SQL> call dbms_java.grant_permission('SCOTT','SYS:java.lang.RuntimePermission', 'accessClassInPackage.sun.util.calendar','');</pre>
<b>EXAMPLE 1:</b><br />
<b>==========</b><br />
10. Using the example code from note 841183.1, I will now use the UTL_DBWS package loaded in scott to call the webservice. The PL/SQL is created as follows:<br />
<br />
a. Here is the PL/SQL code using UTL_DBWS to call an external webservice:<br />
<pre class="sql" name="code">CREATE OR REPLACE FUNCTION celciusToFahrenheit(temperature NUMBER) RETURN VARCHAR2 AS
service_ scott.utl_dbws.SERVICE;
call_ scott.utl_dbws.CALL;
service_qname scott.utl_dbws.QNAME;
port_qname scott.utl_dbws.QNAME;
response sys.XMLTYPE;
request sys.XMLTYPE;
BEGIN
scott.utl_dbws.set_http_proxy('myproxy.com:80');
service_qname := scott.utl_dbws.to_qname(null, 'CelciusToFahrenheit');
service_ := scott.utl_dbws.create_service(service_qname);
call_ := scott.utl_dbws.create_call(service_);
scott.utl_dbws.set_target_endpoint_address(call_, 'http://webservices.daehosting.com/services/TemperatureConversions.wso');
scott.utl_dbws.set_property( call_, 'OPERATION_STYLE', 'document');
request := sys.XMLTYPE('<Celciustofahrenheit xmlns="http://webservices.daehosting.com/temperature"><nCelcius>'||temperature||'</nCelcius></Celciustofahrenheit>');
response := scott.utl_dbws.invoke(call_, request);
return response.extract('//CelciusToFahrenheitResult/child::text()', 'xmlns="http://webservices.daehosting.com/temperature"').getstringval();
END;
/
show errors;</pre>
b. I have changed line 11 with my proxy server details. If your environment does not use a proxy server leave this line out.<br />
c. Since the database webservice utilities have been installed in 'scott', I have changed all the 'sys' references to webservice utilities to 'scott'<br />
d. Ensure you can access the webservice used in this example: <a href="http://webservices.daehosting.com/services/TemperatureConversions.wso">http://webservices.daehosting.com/services/TemperatureConversions.wso</a><br />
e: Now run the example:<br />
<pre class="sql" name="code">SQL> @celciusToFahrenheit.sql
Function created.
No errors.
SQL> SELECT celciusToFahrenheit(30) from dual;
CELCIUSTOFAHRENHEIT(30)
--------------------------------------------------------------------------------
86
SQL></pre>
<b>EXAMPLE 2:</b><br />
<b>==========</b><br />
11. Now using the same webservice, I will use jpub to create and load the java webservice proxy classes to the database.<br />
<br />
a. Run the jpub to create and load your java webservice client proxy. Here is the command used:<br />
<br />
jpub -u scott/tiger -sysuser sys/welcome1 -proxywsdl=http://webservices.daehosting.com/services/TemperatureConversions.wso?WSDL -endpoint=http://webservices.daehosting.com/services/TemperatureConversions.wso -httpproxy=myproxy.com:80<br />
<br />
Note I have specified my proxy again as the last parameter. If your environment does not use a proxy server leave this out.<br />
<pre class="sql" name="code">[oracle@sracanov-au2 dbhome_1]$ cd sqlj
[oracle@sracanov-au2 sqlj]$ mkdir example2
[oracle@sracanov-au2 sqlj]$ cd example2/
[oracle@sracanov-au2 example2]$ jpub -u scott/tiger -sysuser sys/welcome1 -proxywsdl=http://webservices.daehosting.com/services/TemperatureConversions.wso?WSDL -endpoint=http://webservices.daehosting.com/services/TemperatureConversions.wso -httpproxy=myproxy.com:80
tmp/src/genproxy/TemperatureConversionsSoapClientJPub.java
plsql_wrapper.sql
plsql_dropper.sql
plsql_grant.sql
plsql_revoke.sql
Executing plsql_dropper.sql
Executing plsql_wrapper.sql
Executing plsql_grant.sql
Loading plsql_proxy.jar
[oracle@sracanov-au2 example2]$</pre>
Note that when using jpub I can avoid coding PL/SQL code. The PL/SQL files can be found in the current local directory where jpub is run from. They have been executed while running the jpub command.<br />
<pre class="sql" name="code">[oracle@sracanov-au2 example2]$ ls -al
total 88
drwxr-xr-x 3 oracle oinstall 4096 Dec 16 07:27 .
drwxr-xr-x 8 oracle oinstall 4096 Dec 15 10:43 ..
-rw-r--r-- 1 oracle oinstall 95 Dec 16 07:27 plsql_dropper.sql
-rw-r--r-- 1 oracle oinstall 548 Dec 16 07:27 plsql_grant.sql
-rw-r--r-- 1 oracle oinstall 26546 Dec 16 07:27 plsql_proxy.jar
-rw-r--r-- 1 oracle oinstall 404 Dec 16 07:27 plsql_revoke.sql
-rw-r--r-- 1 oracle oinstall 3261 Dec 16 07:27 plsql_wrapper.sql
drwxr-xr-x 4 oracle oinstall 4096 Dec 16 06:43 tmp</pre>
b. Now call the web Service as in sqlplus.<br />
<pre class="sql" name="code">SQL> conn scott/tiger
Connected.
SQL> select jpub_plsql_wrapper.celciusToFahrenheit(30) as "Celcius To Fahrenheit(30)" from dual;
Celcius To Fahrenheit(30)
-------------------------
86
SQL></pre>
Running jpub has created the java webservice proxy for all the methods available from the webservice:<br />
<pre class="sql" name="code">SQL> select jpub_plsql_wrapper.fahrenheitToCelcius(86) as "Fahrenheit To Celcius(86)" from dual;
Fahrenheit To Celcius(86)
-------------------------
30
SQL></pre>
For any further or clarification, see the following documentation:<br />
<br />
Oracle® Database JPublisher User's Guide<br />
<a href="http://download.oracle.com/docs/cd/B28359_01/java.111/b31226/toc.htm">http://download.oracle.com/docs/cd/B28359_01/java.111/b31226/toc.htm</a><br />
<br />
Database Web Service Callout Utility 10.1.3.1<br />
<a href="http://www.oracle.com/technology/sample_code/tech/java/jsp/callout_users_guide.htm">http://www.oracle.com/technology/sample_code/tech/java/jsp/callout_users_guide.htm</a>Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-8528453113443734432009-09-07T11:46:00.010+10:002010-05-18T13:43:33.096+10:00Example of using JDBC TimezoneRecently I was working on a timezone issue there the values returned on the daylight saving change over where incorrect. Here is the example and steps to reproduce this problem.<br /><br />There sql script looks like:<br /><pre name="code" class="sql">connect / as sysdba<br /><br />drop user timezoneuser cascade;<br /><br />grant connect,resource to timezoneuser identified by timezoneuser;<br /><br />connect timezoneuser/timezoneuser<br /><br />create table jdbc_test (<br /> sequence_id number(2),<br /> cbt timestamp,<br /> cbt_utc timestamp);<br /><br />alter session set NLS_DATE_FORMAT = 'MM/DD/YYYY HH24:MI:SS';<br />alter session set NLS_TIMESTAMP_TZ_FORMAT ='MM/DD/YYYY HH24:MI:SS';<br />alter session set NLS_TIMESTAMP_FORMAT = 'MM/DD/YYYY HH24:MI:SS';<br /><br />select * from nls_session_parameters;<br /><br />insert into jdbc_test values(1,'04/05/2009 00:00:00','04/04/2009 13:00:00');<br />insert into jdbc_test values(2,'04/05/2009 01:00:00','04/04/2009 14:00:00');<br />insert into jdbc_test values(3,'04/05/2009 02:00:00','04/04/2009 15:00:00');<br />insert into jdbc_test values(4,'04/05/2009 02:00:00','04/04/2009 16:00:00');<br />insert into jdbc_test values(5,'04/05/2009 03:00:00','04/04/2009 17:00:00');<br />insert into jdbc_test values(6,'04/05/2009 04:00:00','04/04/2009 18:00:00');<br />insert into jdbc_test values(7,'04/05/2009 05:00:00','04/04/2009 19:00:00');<br />insert into jdbc_test values(8,'04/05/2009 06:00:00','04/04/2009 20:00:00');<br />insert into jdbc_test values(9,'04/05/2009 07:00:00','04/04/2009 21:00:00');<br />insert into jdbc_test values(10,'04/05/2009 08:00:00','04/04/2009 22:00:00');<br />insert into jdbc_test values(11,'04/05/2009 09:00:00','04/04/2009 23:00:00');<br />insert into jdbc_test values(12,'04/05/2009 10:00:00','04/05/2009 00:00:00');<br />insert into jdbc_test values(13,'04/05/2009 11:00:00','04/05/2009 01:00:00');<br />insert into jdbc_test values(14,'04/05/2009 12:00:00','04/05/2009 02:00:00');<br />insert into jdbc_test values(15,'04/05/2009 13:00:00','04/05/2009 03:00:00');<br />insert into jdbc_test values(16,'04/05/2009 14:00:00','04/05/2009 04:00:00');<br />insert into jdbc_test values(17,'04/05/2009 15:00:00','04/05/2009 05:00:00');<br />insert into jdbc_test values(18,'04/05/2009 16:00:00','04/05/2009 06:00:00');<br />insert into jdbc_test values(19,'04/05/2009 17:00:00','04/05/2009 07:00:00');<br /><br />column seq format 999<br />column cbt format a20<br />column cbt_utc format a20<br />column difference format a30<br /><br />select sequence_id as seq,cbt ,cbt_utc , cbt - cbt_utc as difference from jdbc_test;<br /></pre>and the java looks like:<br /><pre name="code" class="java">package example;<br /><br />import java.sql.Connection;<br />import java.sql.DriverManager;<br />import java.sql.PreparedStatement;<br />import java.sql.ResultSet;<br />import java.sql.Timestamp;<br /><br />import java.util.Date;<br />import java.util.Properties;<br /><br />public class JDBCTimeStamp {<br /><br /> private void queryDatabase() {<br /> Connection conn = null;<br /><br /> String DRIVER = "oracle.jdbc.driver.OracleDriver";<br /> String connectionName = "jdbc:comp:env:sys";<br /> String URL_NAME = "jdbc:oracle:thin:@celcsol1.us.oracle.com:1521:tarsr3";<br /> String userName = new String("timezoneuser");<br /> String password = new String("timezoneuser");<br /> Properties prop = new Properties();<br /> prop.put("user", userName);<br /> prop.put("password", password);<br /> prop.put("connectionName", connectionName);<br /> try {<br /> try {<br /> Class.forName(DRIVER);<br /> } catch (Exception e) {<br /> System.out.println("Exception in Class.forName : " + e);<br /> }<br /> try {<br /> conn = DriverManager.getConnection(URL_NAME, prop);<br /> } catch (Exception e) {<br /> System.out.println("Exception in creating the connection : " + e);<br /> }<br /><br /> String sqlString = " SELECT SEQUENCE_ID,CBT,CBT_UTC" + " FROM JDBC_TEST ";<br /><br /> PreparedStatement ps = conn.prepareStatement(sqlString.toString());<br /> ResultSet rs = null;<br /> try {<br /> ps = conn.prepareStatement(sqlString);<br /> rs = ps.executeQuery();<br /> String sequenceId = null;<br /> Timestamp cbtTimeStamp = null;<br /> Timestamp cbtUtcTimeStamp = null;<br /> long longValueOfUtc;<br /> long longValueOfCbt;<br /> Date cbtDateValueFromLong;<br /> Date utcDateValueFromLong;<br /><br /> System.out.println("ID \tCBT(local time) \t\t\tCBT_UTC(GMT) \t\t\tTime Difference");<br /> while (rs.next()) {<br /> sequenceId = rs.getString(1);<br /> cbtTimeStamp = rs.getTimestamp(2);<br /> cbtUtcTimeStamp = rs.getTimestamp(3);<br /> longValueOfUtc = cbtUtcTimeStamp.getTime();<br /> longValueOfCbt = cbtTimeStamp.getTime();<br /> cbtDateValueFromLong = new Date(longValueOfCbt);<br /> utcDateValueFromLong = new Date(longValueOfUtc);<br /> System.out.println(sequenceId + "\t" + cbtDateValueFromLong + "\t\t" + utcDateValueFromLong + "\t\t" + ((longValueOfCbt - longValueOfUtc) / 3600000));<br /> }<br /> } finally {<br /> if (ps != null)<br /> ps.close();<br /> if (rs != null)<br /> rs.close();<br /> }<br /> } catch (Exception e) {<br /> System.out.println("Exception :::" + e);<br /> e.printStackTrace();<br /> }<br /> }<br /><br /> public static void main(String[] args) {<br /> JDBCTimeStamp main = new JDBCTimeStamp();<br /> main.queryDatabase();<br /> }<br />}<br /></pre>Upon running the java code using JDK 1.6 and 11g JDBC drivers (ojdbc6.jar), the following results are show:<br /><pre><span style="color:blue;">ID CBT(local time) CBT_UTC(GMT) Time Difference<br />1 Sun Apr 05 00:00:00 EST 2009 Sat Apr 04 13:00:00 EST 2009 11<br />2 Sun Apr 05 01:00:00 EST 2009 Sat Apr 04 14:00:00 EST 2009 11<br />3 Sun Apr 05 02:00:00 EST 2009 Sat Apr 04 15:00:00 EST 2009 12<br />4 Sun Apr 05 02:00:00 EST 2009 Sat Apr 04 16:00:00 EST 2009 11<br />5 Sun Apr 05 03:00:00 EST 2009 Sat Apr 04 17:00:00 EST 2009 11<br />6 Sun Apr 05 04:00:00 EST 2009 Sat Apr 04 18:00:00 EST 2009 11<br />7 Sun Apr 05 05:00:00 EST 2009 Sat Apr 04 19:00:00 EST 2009 11<br />8 Sun Apr 05 06:00:00 EST 2009 Sat Apr 04 20:00:00 EST 2009 11<br />9 Sun Apr 05 07:00:00 EST 2009 Sat Apr 04 21:00:00 EST 2009 11<br />10 Sun Apr 05 08:00:00 EST 2009 Sat Apr 04 22:00:00 EST 2009 11<br />11 Sun Apr 05 09:00:00 EST 2009 Sat Apr 04 23:00:00 EST 2009 11<br />12 Sun Apr 05 10:00:00 EST 2009 Sun Apr 05 00:00:00 EST 2009 11<br />13 Sun Apr 05 11:00:00 EST 2009 Sun Apr 05 01:00:00 EST 2009 11<br />14 Sun Apr 05 12:00:00 EST 2009 Sun Apr 05 02:00:00 EST 2009 10<br />15 Sun Apr 05 13:00:00 EST 2009 Sun Apr 05 03:00:00 EST 2009 10<br />16 Sun Apr 05 14:00:00 EST 2009 Sun Apr 05 04:00:00 EST 2009 10<br />17 Sun Apr 05 15:00:00 EST 2009 Sun Apr 05 05:00:00 EST 2009 10<br />18 Sun Apr 05 16:00:00 EST 2009 Sun Apr 05 06:00:00 EST 2009 10<br />19 Sun Apr 05 17:00:00 EST 2009 Sun Apr 05 07:00:00 EST 2009 10<br /></span></pre>This because the table was not created with local timezone. The column in the database is TIMESTAMP - which holds a non timezone specified value.<br /><br />When jdbc extracts values from a TIMESTAMP column into a java.sql.Timestamp via the getTimestamp method, it ensures that the value, when printed, shows the same DATE/TIME as that stored in the database.<br /><br />The correct way to create the table would be:<br /><pre name="code" class="sql">create table jdbc_test (<br /> sequence_id number(2),<br /> cbt TIMESTAMP WITH LOCAL TIME ZONE,<br /> cbt_utc TIMESTAMP WITH TIME ZONE);<br /></pre>Now that I am using 'WITH LOCAL TIME ZONE', I need change my java code to include the timezone in the connection like '((OracleConnection)conn).setSessionTimeZone("Australia/Victoria");'<br /><br />So the java code would now look like:<br /><pre name="code" class="java">...<br />try {<br /> conn = DriverManager.getConnection(URL_NAME, prop);<br />} catch (Exception e) {<br /> System.out.println("Exception in creating the connection : " + e);<br />}<br /><br />((OracleConnection)conn).setSessionTimeZone("Australia/Victoria");<br />String sqlString = " SELECT SEQUENCE_ID,CBT,CBT_UTC" + " FROM JDBC_TEST ";<br /><br />PreparedStatement ps = conn.prepareStatement(sqlString.toString());<br />ResultSet rs = null;<br />...<br /></pre>Now when I run the java class, the correct results are shown:<br /><pre><span style="color:blue;">ID CBT(local time) CBT_UTC(GMT) Time Difference<br />1 Sun Apr 05 01:00:00 EST 2009 Sat Apr 04 14:00:00 EST 2009 11<br />2 Sun Apr 05 02:00:00 EST 2009 Sat Apr 04 15:00:00 EST 2009 11<br />3 Sun Apr 05 02:00:00 EST 2009 Sat Apr 04 16:00:00 EST 2009 11<br />4 Sun Apr 05 02:00:00 EST 2009 Sat Apr 04 17:00:00 EST 2009 10<br />5 Sun Apr 05 03:00:00 EST 2009 Sat Apr 04 18:00:00 EST 2009 10<br />6 Sun Apr 05 04:00:00 EST 2009 Sat Apr 04 19:00:00 EST 2009 10<br />7 Sun Apr 05 05:00:00 EST 2009 Sat Apr 04 20:00:00 EST 2009 10<br />8 Sun Apr 05 06:00:00 EST 2009 Sat Apr 04 21:00:00 EST 2009 10<br />9 Sun Apr 05 07:00:00 EST 2009 Sat Apr 04 22:00:00 EST 2009 10<br />10 Sun Apr 05 08:00:00 EST 2009 Sat Apr 04 23:00:00 EST 2009 10<br />11 Sun Apr 05 09:00:00 EST 2009 Sun Apr 05 00:00:00 EST 2009 10<br />12 Sun Apr 05 10:00:00 EST 2009 Sun Apr 05 01:00:00 EST 2009 10<br />13 Sun Apr 05 11:00:00 EST 2009 Sun Apr 05 02:00:00 EST 2009 10<br />14 Sun Apr 05 12:00:00 EST 2009 Sun Apr 05 02:00:00 EST 2009 10<br />15 Sun Apr 05 13:00:00 EST 2009 Sun Apr 05 03:00:00 EST 2009 10<br />16 Sun Apr 05 14:00:00 EST 2009 Sun Apr 05 04:00:00 EST 2009 10<br />17 Sun Apr 05 15:00:00 EST 2009 Sun Apr 05 05:00:00 EST 2009 10<br />18 Sun Apr 05 16:00:00 EST 2009 Sun Apr 05 06:00:00 EST 2009 10<br />19 Sun Apr 05 17:00:00 EST 2009 Sun Apr 05 07:00:00 EST 2009 10<br /></span></pre>Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-88107468693956117802009-09-01T15:10:00.016+10:002010-05-18T13:43:54.828+10:00Example of OracleDatabaseMetaData using OAS datasources to display table and view dataA simple example of using oracle database metadata (from JDBC) with Oracle Application Server 1013x datasources to display the data.<br /><br /><p>1. My data-sources.xml looks like:<br /></p><p><span style=";font-family:Courier;font-size:85%;" ><managed-data-source connection-pool-name="scottPool2" jndi-name="jdbc/ScottDS2"<br />name="jdbc/ScottDS2"/></span><br /><span style=";font-family:Courier;font-size:85%;" ><connection-pool name="scottPool2"></span><br /><span style=";font-family:Courier;font-size:85%;" > <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource"<br />user="scott" password="tiger" url="jdbc:oracle:thin:@//sracanov-au2.au.oracle.com:1522/orcl"/></span><br /><span style=";font-family:Courier;font-size:85%;" ></connection-pool></span><br /></p><p>2. My java code in jdev looks like:<br /></p><pre><span style="color: rgb(51, 102, 153);"><b>package</b></span> <span style="color: rgb(0, 0, 0);">examples</span><span style="color: rgb(0, 0, 0);">;</span><br /><br /><span style="color: rgb(51, 102, 153);"><b>import</b></span> <span style="color: rgb(0, 0, 0);">java</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">sql</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">Connection</span><span style="color: rgb(0, 0, 0);">;</span><br /><br /><span style="color: rgb(51, 102, 153);"><b>import</b></span> <span style="color: rgb(0, 0, 0);">java</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">sql</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">ResultSet</span><span style="color: rgb(0, 0, 0);">;</span><br /><br /><span style="color: rgb(51, 102, 153);"><b>import</b></span> <span style="color: rgb(0, 0, 0);">java</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">util</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">Properties</span><span style="color: rgb(0, 0, 0);">;</span><br /><br /><span style="color: rgb(51, 102, 153);"><b>import</b></span> <span style="color: rgb(0, 0, 0);">javax</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">naming</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">Context</span><span style="color: rgb(0, 0, 0);">;</span><br /><span style="color: rgb(51, 102, 153);"><b>import</b></span> <span style="color: rgb(0, 0, 0);">javax</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">naming</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">InitialContext</span><span style="color: rgb(0, 0, 0);">;</span><br /><br /><span style="color: rgb(51, 102, 153);"><b>import</b></span> <span style="color: rgb(0, 0, 0);">javax</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">sql</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">DataSource</span><span style="color: rgb(0, 0, 0);">;</span><br /><br /><span style="color: rgb(51, 102, 153);"><b>import</b></span> <span style="color: rgb(0, 0, 0);">oracle</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">jdbc</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">OracleDatabaseMetaData</span><span style="color: rgb(0, 0, 0);">;</span><br /><br /><span style="color: rgb(51, 102, 153);"><b>public</b></span> <span style="color: rgb(51, 102, 153);"><b>class</b></span> <span style="color: rgb(0, 0, 0);">TestOracleDatabaseMetaDataDataSource</span> <span style="color: rgb(0, 0, 0);">{</span><br /><span style="color: rgb(51, 102, 153);"><b>public</b></span> <span style="color: rgb(51, 102, 153);"><b>static</b></span> <span style="color: rgb(51, 102, 153);"><b>void</b></span> <span style="color: rgb(0, 0, 0);">main</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">String</span><span style="color: rgb(0, 0, 0);">[]</span> <span style="color: rgb(0, 0, 0);">args</span><span style="color: rgb(0, 0, 0);">)</span> <span style="color: rgb(51, 102, 153);"><b>throws</b></span> <span style="color: rgb(0, 0, 0);">Exception</span> <span style="color: rgb(0, 0, 0);">{</span><br /> <span style="color: rgb(0, 0, 0);">Properties</span> <span style="color: rgb(0, 0, 0);">props</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(51, 102, 153);"><b>new</b></span> <span style="color: rgb(0, 0, 0);">Properties</span><span style="color: rgb(0, 0, 0);">()</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(0, 0, 0);">props</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">put</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">Context</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">PROVIDER_URL</span><span style="color: rgb(0, 0, 0);">,</span><br /> <span style="color: rgb(0, 51, 204);">"opmn:ormi://sracanov-au2.au.oracle.com:6005:OC4J_Apps/default"</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(0, 0, 0);">props</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">put</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">Context</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">INITIAL_CONTEXT_FACTORY</span><span style="color: rgb(0, 0, 0);">,</span><br /> <span style="color: rgb(0, 51, 204);">"oracle.j2ee.rmi.RMIInitialContextFactory"</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(0, 0, 0);">props</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">put</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">Context</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">SECURITY_PRINCIPAL</span><span style="color: rgb(0, 0, 0);">,</span> <span style="color: rgb(0, 51, 204);">"oc4jadmin"</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(0, 0, 0);">props</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">put</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">Context</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">SECURITY_CREDENTIALS</span><span style="color: rgb(0, 0, 0);">,</span> <span style="color: rgb(0, 51, 204);">"welcome1"</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(0, 0, 0);">Context</span> <span style="color: rgb(0, 0, 0);">ctx</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(51, 102, 153);"><b>new</b></span> <span style="color: rgb(0, 0, 0);">InitialContext</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">props</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(0, 0, 0);">DataSource</span> <span style="color: rgb(0, 0, 0);">ds</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">DataSource</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">ctx</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">lookup</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 51, 204);">"jdbc/ScottDS2"</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(0, 0, 0);">Connection</span> <span style="color: rgb(0, 0, 0);">conn</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);">ds</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">getConnection</span><span style="color: rgb(0, 0, 0);">()</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(0, 0, 0);">OracleDatabaseMetaData</span> <span style="color: rgb(0, 0, 0);">dbmd</span> <span style="color: rgb(0, 0, 0);">=</span><br /> <span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">OracleDatabaseMetaData</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">conn</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">getMetaData</span><span style="color: rgb(0, 0, 0);">()</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(0, 0, 0);">ResultSet</span> <span style="color: rgb(0, 0, 0);">rs</span> <span style="color: rgb(0, 0, 0);">=</span><br /> <span style="color: rgb(0, 0, 0);">dbmd</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">getTables</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(153, 102, 0);">null</span><span style="color: rgb(0, 0, 0);">,</span> <span style="color: rgb(0, 51, 204);">"%"</span><span style="color: rgb(0, 0, 0);">,</span> <span style="color: rgb(0, 51, 204);">"%"</span><span style="color: rgb(0, 0, 0);">,</span> <span style="color: rgb(51, 102, 153);"><b>new</b></span> <span style="color: rgb(0, 0, 0);">String</span><span style="color: rgb(0, 0, 0);">[]</span> <span style="color: rgb(0, 0, 0);">{</span> <span style="color: rgb(0, 51, 204);">"TABLE"</span><span style="color: rgb(0, 0, 0);">,</span> <span style="color: rgb(0, 51, 204);">"VIEW"</span> <span style="color: rgb(0, 0, 0);">})</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(51, 102, 153);"><b>while</b></span> <span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">rs</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">next</span><span style="color: rgb(0, 0, 0);">())</span> <span style="color: rgb(0, 0, 0);">{</span><br /> <span style="color: rgb(0, 0, 0);">System</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">out</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">println</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 51, 204);">" "</span> <span style="color: rgb(0, 0, 0);">+</span> <span style="color: rgb(0, 0, 0);">rs</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">getString</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 102, 0);">3</span><span style="color: rgb(0, 0, 0);">)</span> <span style="color: rgb(0, 0, 0);">+</span> <span style="color: rgb(0, 51, 204);">" : "</span> <span style="color: rgb(0, 0, 0);">+</span><br /> <span style="color: rgb(0, 0, 0);">rs</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">getString</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 102, 0);">4</span><span style="color: rgb(0, 0, 0);">))</span><span style="color: rgb(0, 0, 0);">;</span><br /> <span style="color: rgb(0, 0, 0);">}</span><br /><span style="color: rgb(0, 0, 0);">}</span><br /><br /><span style="color: rgb(0, 0, 0);">}</span></pre>3. Ensure the following libraries are in the project:<br /><br /><span style=";font-family:Courier;font-size:85%;" >* JDBC driver<br />* Apache Ant<br />* JSP Runtime<br /></span><br />4. Run the class and the results are displayed:<br /><pre> DR$NUMBER_SEQUENCE : TABLE<br /> DR$OBJECT_ATTRIBUTE : TABLE<br /> DR$POLICY_TAB : TABLE<br /> RLM$PARSEDCOND : TABLE<br /> OGIS_GEOMETRY_COLUMNS : TABLE<br /> OGIS_SPATIAL_REFERENCE_SYSTEMS : TABLE<br /> ....<br /> ....<br /> ....<br /> WM$REPLICATION_INFO : VIEW<br /> WM$TABLE_NEXTVERS_VIEW : VIEW<br /> WM$TABLE_PARVERS_VIEW : VIEW<br /> WM$TABLE_VERSIONS_IN_LIVE_VIEW : VIEW<br /> WM$TABLE_WS_PARVERS_VIEW : VIEW<br /> WM$VERSIONS_IN_LIVE_VIEW : VIEW<br /> WM$VER_BEF_INST_NEXTVERS_VIEW : VIEW<br /> WM$VER_BEF_INST_PARVERS_VIEW : VIEW<br /> WM_EVENTS_INFO : VIEW<br /> PATH_VIEW : VIEW<br /> RESOURCE_VIEW : VIEW </pre>Results of the output have been truncated.Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-17651220605714595852009-08-30T15:03:00.019+10:002010-05-18T13:44:17.576+10:00RMI-IIOP Example with oc4j 10.1.3.xI have been trying to follow the rmi-iiop how to:<br /><br /><a href="http://www.oracle.com/technology/tech/java/oc4j/htdocs/how-to-rmi-iiop.html">http://www.oracle.com/technology/tech/java/oc4j/htdocs/how-to-rmi-iiop.html</a><br /><br />with oc4j 1013x. I experienced some issues and noticed some changes in the documentation compared to the previous versions.<br /><br /><a href="http://download.oracle.com/docs/cd/E14101_01/doc.1013/e13975/rmi.htm#CHDBDEII">http://download.oracle.com/docs/cd/E14101_01/doc.1013/e13975/rmi.htm#CHDBDEII</a><br /><br />So I recreated the example to run with the latest oc4j and noted the following additional requirements:<br /><br />1. The client stub generation command has changed.<br /><br /><a href="http://download.oracle.com/docs/cd/E14101_01/doc.1013/e13975/rmi.htm#i1084457">http://download.oracle.com/docs/cd/E14101_01/doc.1013/e13975/rmi.htm#i1084457</a><br /><br />You need to specified the '-iiopClientJar <i>stub_jar_filename'</i> parameter during deployment.<br /><br />First start oc4j with command:<br /><span style="font-family:monospace;"><br /></span><span style="color: rgb(51, 51, 255);">java -DGenerateIIOP=true -jar oc4j.jar</span><br /><br />Then deploy the application to generate the client stub as follows:<br /><span style="font-family:monospace;"><br /></span><span style="color: rgb(51, 51, 255);">java -jar $J2EE_HOME/admin.jar</span><br /><span style="color: rgb(51, 51, 255);">ormi://localhost admin welcome</span><span style="color: rgb(51, 51, 255);font-family:monospace;" ><br /></span><span style="color: rgb(51, 51, 255);">-deploy -file filename</span><span style="color: rgb(51, 51, 255);font-family:monospace;" ><br /></span><span style="color: rgb(51, 51, 255);">-deployment_name application_name</span><span style="color: rgb(51, 51, 255);font-family:monospace;" ><br /></span><span style="color: rgb(51, 51, 255);">-iiopClientJar stub_jar_filename</span><br /><br />2. The client must have the <span style="color: rgb(51, 51, 255);">ejb_sec.properties</span> defined.<br /><br /><a href="http://download.oracle.com/docs/cd/E14101_01/doc.1013/e13977/csiv2.htm#i1014488">http://download.oracle.com/docs/cd/E14101_01/doc.1013/e13977/csiv2.htm#i1014488</a><br /><br />In the example, the <span style="color: rgb(51, 51, 255);">ejb_sec.properties</span> contains the following properties:<br /><br /><span style="color: rgb(51, 51, 255);">oc4j.iiop.trustedServers=*<br /></span><span style="color: rgb(51, 51, 255);">client.sendpassword=true</span><br /><span style="color: rgb(51, 51, 255);font-size:100%;" ><span style="color: rgb(51, 51, 255);">nameservice.useSSL=false</span><br /></span><br />3. The client requires the following 2 system properties:<br /><br /><span style="color: rgb(51, 51, 255);font-size:100%;" >-Djavax.rmi.CORBA.PortableRemoteObjectClass=com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject</span><span style="font-size:100%;"><span style="color: rgb(51, 51, 255);font-size:100%;" ><span style="font-family:monospace;"><br /></span><span style="color: rgb(51, 51, 255);">-Dcom.oracle.CORBA.OrbManager=com.oracle.corba.ee.impl.orb.ORBManagerIm</span><br /><br /></span></span>4. The client requires <span style="color: rgb(51, 51, 255);">jazn.jar</span> to be included in the classpath.<br /><br />You can download the example from <a href="http://www.mediafire.com/?otjndjqxzxu">here</a>. Follow the steps in the readme.txt to run it.Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-91613622227222114762009-08-29T18:50:00.017+10:002010-05-18T13:44:30.942+10:00java.rmi.AccessException: CORBA NO_PERMISSION errorI have been trying to run my RMI/IIOP client in Jdev 10135, and I kept on getting the following stack error:<br /><pre><span style="font-size:78%;"><span style="color: rgb(153, 0, 0);">java.rmi.AccessException</span>: <span style="color: rgb(0, 51, 204);">CORBA NO_PERMISSION 0 No; nested exception is: </span><br /> <span style="color: rgb(153, 0, 0);">org.omg.CORBA.NO_PERMISSION</span>: <span style="color: rgb(0, 51, 204);">----------BEGIN server-side stack trace----------</span><br /><span style="color: rgb(153, 0, 0);">org.omg.CORBA.NO_PERMISSION</span>: <span style="color: rgb(0, 51, 204);">vmcid: 0x0 minor code: 0 completed: No</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">oracle.oc4j.corba.iiop.security.SecServerRequestInterceptor.receive_request(SecServerRequestInterceptor.java:355)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.interceptors.InterceptorInvoker.invokeServerInterceptorIntermediatePoint(InterceptorInvoker.java:509)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.interceptors.PIHandlerImpl.invokeServerPIIntermediatePoint(PIHandlerImpl.java:505)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.getServantWithPI(CorbaServerRequestDispatcherImpl.java:429)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:191)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1653)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1513)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:895)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:172)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:668)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:375)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.read(SocketOrChannelConnectionImpl.java:284)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.transport.ReaderThreadImpl.doWork(ReaderThreadImpl.java:73)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:382)</span><br /><br /><span style="color: rgb(153, 0, 0);">----------END</span> <span style="color: rgb(0, 51, 204);">server-side stack trace---------- vmcid: 0x0 minor code: 0 completed: No</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:204)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">javax.rmi.CORBA.Util.mapSystemException(Util.java:67)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">howto.rmiiiop.oc4j.ejb._RemoteHome_Stub.create(Unknown Source)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">howto.rmiiiop.oc4j.client.RemoteClient.run(RemoteClient.java:55)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">howto.rmiiiop.oc4j.client.RemoteClient.main(RemoteClient.java:91)</span><br /><span style="color: rgb(153, 0, 0);">Caused</span> <span style="color: rgb(0, 51, 204);">by: org.omg.CORBA.NO_PERMISSION: ----------BEGIN server-side stack trace----------</span><br /><span style="color: rgb(153, 0, 0);">org.omg.CORBA.NO_PERMISSION</span>: <span style="color: rgb(0, 51, 204);">vmcid: 0x0 minor code: 0 completed: No</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">oracle.oc4j.corba.iiop.security.SecServerRequestInterceptor.receive_request(SecServerRequestInterceptor.java:355)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.interceptors.InterceptorInvoker.invokeServerInterceptorIntermediatePoint(InterceptorInvoker.java:509)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.interceptors.PIHandlerImpl.invokeServerPIIntermediatePoint(PIHandlerImpl.java:505)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.getServantWithPI(CorbaServerRequestDispatcherImpl.java:429)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:191)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1653)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1513)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:895)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:172)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:668)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:375)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.read(SocketOrChannelConnectionImpl.java:284)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.transport.ReaderThreadImpl.doWork(ReaderThreadImpl.java:73)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:382)</span><br /><br /><span style="color: rgb(153, 0, 0);">----------END</span> <span style="color: rgb(0, 51, 204);">server-side stack trace---------- vmcid: 0x0 minor code: 0 completed: No</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">java.lang.reflect.Constructor.newInstance(Constructor.java:494)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.giopmsgheaders.MessageBase.getSystemException(MessageBase.java:791)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.giopmsgheaders.ReplyMessage_1_2.getSystemException(ReplyMessage_1_2.java:97)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.getSystemExceptionReply(CorbaMessageMediatorImpl.java:546)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(CorbaClientRequestDispatcherImpl.java:430)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:326)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:132)</span><br /> <span style="color: rgb(153, 0, 0);">at</span> <span style="color: rgb(0, 51, 204);">org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)</span><br /> <span style="color: rgb(153, 0, 0);">...</span> <span style="color: rgb(0, 51, 204);">3 more</span><br /></span></pre><br />After reviewing the documentation http://download.oracle.com/docs/cd/E14101_01/doc.1013/e13975/rmi.htm#CHDBDEII I had no inside why this error was occurring or if there was any misconfiguration on my client. Evenually I found the the following documentation http://download.oracle.com/docs/cd/E14101_01/doc.1013/e13977/csiv2.htm#i1014488 which states:<br /><br />Any client, whether running inside a server or not, has EJB security properties. Table 19-2 following lists the EJB client security properties controlled by the ejb_sec.properties file. By default, OC4J searches for this file in the current directory when running as a client, or in ORACLE_HOME/j2ee/home/config when running in the server. You can specify the location of this file explicitly with the system property setting -Dejb_sec_properties_location=pathname.<br /><br />I then created the ejb_sec.properties file with the following settings:<br /><br /> oc4j.iiop.trustedServers=*<br /> client.sendpassword=true<br /> nameservice.useSSL=false<br /><br />Then I ran the client (as described by passing the file as system property) and it worked!Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-57733339510444947312009-08-25T13:18:00.009+10:002010-05-18T13:44:42.860+10:00Using useFetchSizeWithLongColumn and verifying prefetch returns the expected number of rowsThe following is a simple example that uses 'useFetchSizeWithLongColumn' on a long column where a the row prefetch is set to 15. <br /><br />I confirm it returns 15 rows on each trip to the database by tracing the session and checking the trc file on the database.<br /><br />My code looks at follows:<br /><br />--------------------------------------------------------------------------------------------------------<br /><br /><pre><br /><font color="#336699"><b>package</b></font> <font color="#000000">project1</font><font color="#000000">;</font><br /><br /><font color="#336699"><b>import</b></font> <font color="#000000">java</font><font color="#000000">.</font><font color="#000000">sql</font><font color="#000000">.</font><font color="#000000">Connection</font><font color="#000000">;</font><br /><font color="#336699"><b>import</b></font> <font color="#000000">java</font><font color="#000000">.</font><font color="#000000">sql</font><font color="#000000">.</font><font color="#000000">DriverManager</font><font color="#000000">;</font><br /><font color="#336699"><b>import</b></font> <font color="#000000">java</font><font color="#000000">.</font><font color="#000000">sql</font><font color="#000000">.</font><font color="#000000">ResultSet</font><font color="#000000">;</font><br /><font color="#336699"><b>import</b></font> <font color="#000000">java</font><font color="#000000">.</font><font color="#000000">sql</font><font color="#000000">.</font><font color="#000000">SQLException</font><font color="#000000">;</font><br /><font color="#336699"><b>import</b></font> <font color="#000000">java</font><font color="#000000">.</font><font color="#000000">sql</font><font color="#000000">.</font><font color="#000000">Statement</font><font color="#000000">;</font><br /><br /><font color="#336699"><b>import</b></font> <font color="#000000">oracle</font><font color="#000000">.</font><font color="#000000">jdbc</font><font color="#000000">.</font><font color="#000000">OracleDriver</font><font color="#000000">;</font><br /><br /><font color="#336699"><b>public</b></font> <font color="#336699"><b>class</b></font> <font color="#000000">TestFetchSizeWithLongColumn</font> <font color="#000000">{</font><br /><br /> <font color="#336699"><b>private</b></font> <font color="#000000">Connection</font> <font color="#000000">conn</font> <font color="#000000">=</font> <font color="#996600">null</font><font color="#000000">;</font><br /> <font color="#336699"><b>private</b></font> <font color="#000000">Statement</font> <font color="#000000">stmt</font> <font color="#000000">=</font> <font color="#996600">null</font><font color="#000000">;</font><br /> <font color="#336699"><b>private</b></font> <font color="#000000">Statement</font> <font color="#000000">altstmt</font> <font color="#000000">=</font> <font color="#996600">null</font><font color="#000000">;</font><br /> <font color="#336699"><b>private</b></font> <font color="#000000">ResultSet</font> <font color="#000000">rset</font> <font color="#000000">=</font> <font color="#996600">null</font><font color="#000000">;</font><br /><br /> <font color="#336699"><b>final</b></font> <font color="#000000">String</font> <font color="#000000">traceSQL</font> <font color="#000000">=</font> <br /> <font color="#0033cc">"select c.value || '/' || d.instance_name || '_ora_' || "</font> <font color="#000000">+</font> <br /> <font color="#0033cc">"to_char(a.spid, 'fm99999') || '.trc' "</font> <font color="#000000">+</font> <br /> <font color="#0033cc">"from v$process a, v$session b, v$parameter c, v$instance d "</font> <font color="#000000">+</font> <br /> <font color="#0033cc">"where a.addr = b.paddr "</font> <font color="#000000">+</font> <font color="#0033cc">"and b.audsid = userenv('sessionid') "</font> <font color="#000000">+</font> <br /> <font color="#0033cc">"and c.name = 'user_dump_dest'"</font><font color="#000000">;</font><br /><br /> <font color="#336699"><b>public</b></font> <font color="#336699"><b>static</b></font> <font color="#336699"><b>void</b></font> <font color="#000000">main</font><font color="#000000">(</font><font color="#000000">String</font><font color="#000000">[]</font> <font color="#000000">args</font><font color="#000000">)</font> <font color="#336699"><b>throws</b></font> <font color="#000000">SQLException</font> <font color="#000000">{</font><br /> <font color="#336699"><b>new</b></font> <font color="#000000">TestFetchSizeWithLongColumn</font><font color="#000000">()</font><font color="#000000">.</font><font color="#000000">run</font><font color="#000000">()</font><font color="#000000">;</font><br /> <font color="#000000">}</font><br /><br /> <font color="#336699"><b>public</b></font> <font color="#336699"><b>void</b></font> <font color="#000000">run</font><font color="#000000">()</font> <font color="#000000">{</font><br /> <font color="#336699"><b>try</b></font> <font color="#000000">{</font><br /><br /> <font color="#000000">Connection</font> <font color="#000000">conn</font> <font color="#000000">=</font> <font color="#000000">getConnection</font><font color="#000000">()</font><font color="#000000">;</font><br /><br /> <font color="#000000">altstmt</font> <font color="#000000">=</font> <font color="#000000">conn</font><font color="#000000">.</font><font color="#000000">createStatement</font><font color="#000000">()</font><font color="#000000">;</font><br /> <font color="#000000">stmt</font> <font color="#000000">=</font> <font color="#000000">conn</font><font color="#000000">.</font><font color="#000000">createStatement</font><font color="#000000">()</font><font color="#000000">;</font><br /><br /> <font color="#000000">altstmt</font><font color="#000000">.</font><font color="#000000">execute</font><font color="#000000">(</font><font color="#0033cc">"alter session set events '10046 trace name "</font> <font color="#000000">+</font> <br /> <font color="#0033cc">"context forever, level 12'"</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">ResultSet</font> <font color="#000000">rset</font> <font color="#000000">=</font> <br /> <font color="#000000">stmt</font><font color="#000000">.</font><font color="#000000">executeQuery</font><font color="#000000">(</font><font color="#0033cc">"select search_condition,rownum"</font> <font color="#000000">+</font> <br /> <font color="#0033cc">"from dba_constraints"</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">altstmt</font><font color="#000000">.</font><font color="#000000">execute</font><font color="#000000">(</font><font color="#0033cc">"alter session set events '10046 trace "</font> <font color="#000000">+</font> <br /> <font color="#0033cc">"name context off'"</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">displayTraceFileName</font><font color="#000000">(</font><font color="#000000">conn</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#808080">// while (rset.next())</font><br /> <font color="#808080">// System.out.println(rset.getInt(2)); </font><br /><br /> <font color="#000000">}</font> <font color="#336699"><b>catch</b></font> <font color="#000000">(</font><font color="#000000">SQLException</font> <font color="#000000">sqle</font><font color="#000000">)</font> <font color="#000000">{</font><br /> <font color="#808080">//sqle.printStackTrace();</font><br /> <font color="#000000">System</font><font color="#000000">.</font><font color="#000000">out</font><font color="#000000">.</font><font color="#000000">println</font><font color="#000000">(</font><font color="#0033cc">"sqlexception"</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">}</font> <font color="#336699"><b>finally</b></font> <font color="#000000">{</font><br /> <font color="#336699"><b>try</b></font> <font color="#000000">{</font><br /> <font color="#336699"><b>if</b></font> <font color="#000000">(</font><font color="#000000">rset</font> <font color="#000000">!=</font> <font color="#996600">null</font><font color="#000000">)</font><br /> <font color="#000000">rset</font><font color="#000000">.</font><font color="#000000">close</font><font color="#000000">()</font><font color="#000000">;</font><br /> <font color="#336699"><b>if</b></font> <font color="#000000">(</font><font color="#000000">stmt</font> <font color="#000000">!=</font> <font color="#996600">null</font><font color="#000000">)</font><br /> <font color="#000000">stmt</font><font color="#000000">.</font><font color="#000000">close</font><font color="#000000">()</font><font color="#000000">;</font><br /> <font color="#336699"><b>if</b></font> <font color="#000000">(</font><font color="#000000">altstmt</font> <font color="#000000">!=</font> <font color="#996600">null</font><font color="#000000">)</font><br /> <font color="#000000">altstmt</font><font color="#000000">.</font><font color="#000000">close</font><font color="#000000">()</font><font color="#000000">;</font><br /> <font color="#336699"><b>if</b></font> <font color="#000000">(</font><font color="#000000">conn</font> <font color="#000000">!=</font> <font color="#996600">null</font><font color="#000000">)</font><br /> <font color="#000000">conn</font><font color="#000000">.</font><font color="#000000">close</font><font color="#000000">()</font><font color="#000000">;</font><br /> <font color="#000000">}</font> <font color="#336699"><b>catch</b></font> <font color="#000000">(</font><font color="#000000">Exception</font> <font color="#000000">ex</font><font color="#000000">)</font> <font color="#000000">{</font><br /> <font color="#000000">ex</font><font color="#000000">.</font><font color="#000000">printStackTrace</font><font color="#000000">()</font><font color="#000000">;</font><br /> <font color="#000000">System</font><font color="#000000">.</font><font color="#000000">out</font><font color="#000000">.</font><font color="#000000">println</font><font color="#000000">(</font><font color="#0033cc">"fatal error"</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">}</font><br /> <font color="#000000">}</font><br /> <font color="#000000">}</font><br /><br /> <font color="#336699"><b>public</b></font> <font color="#336699"><b>static</b></font> <font color="#000000">Connection</font> <font color="#000000">getConnection</font><font color="#000000">()</font> <font color="#336699"><b>throws</b></font> <font color="#000000">SQLException</font> <font color="#000000">{</font><br /> <font color="#000000">String</font> <font color="#000000">url</font> <font color="#000000">=</font> <br /> <font color="#0033cc">"jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)"</font> <font color="#000000">+</font> <br /> <font color="#0033cc">"(HOST=sracanov-au2.au.oracle.com)(PORT=1522))"</font> <font color="#000000">+</font> <br /> <font color="#0033cc">"(CONNECT_DATA=(SERVICE_NAME=orcl)))"</font><font color="#000000">;</font><br /> <font color="#000000">java</font><font color="#000000">.</font><font color="#000000">util</font><font color="#000000">.</font><font color="#000000">Properties</font> <font color="#000000">props</font> <font color="#000000">=</font> <font color="#336699"><b>new</b></font> <font color="#000000">java</font><font color="#000000">.</font><font color="#000000">util</font><font color="#000000">.</font><font color="#000000">Properties</font><font color="#000000">()</font><font color="#000000">;</font><br /><br /> <font color="#000000">props</font><font color="#000000">.</font><font color="#000000">setProperty</font><font color="#000000">(</font><font color="#0033cc">"user"</font><font color="#000000">,</font> <font color="#0033cc">"system"</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">props</font><font color="#000000">.</font><font color="#000000">setProperty</font><font color="#000000">(</font><font color="#0033cc">"password"</font><font color="#000000">,</font> <font color="#0033cc">"welcome1"</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">props</font><font color="#000000">.</font><font color="#000000">setProperty</font><font color="#000000">(</font><font color="#0033cc">"defaultRowPrefetch"</font><font color="#000000">,</font> <font color="#0033cc">"15"</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">props</font><font color="#000000">.</font><font color="#000000">setProperty</font><font color="#000000">(</font><font color="#0033cc">"useFetchSizeWithLongColumn"</font><font color="#000000">,</font> <font color="#0033cc">"true"</font><font color="#000000">)</font><font color="#000000">;</font><br /><br /> <font color="#000000">DriverManager</font><font color="#000000">.</font><font color="#000000">registerDriver</font><font color="#000000">(</font><font color="#336699"><b>new</b></font> <font color="#000000">OracleDriver</font><font color="#000000">())</font><font color="#000000">;</font><br /> <font color="#000000">Connection</font> <font color="#000000">conn</font> <font color="#000000">=</font> <font color="#000000">DriverManager</font><font color="#000000">.</font><font color="#000000">getConnection</font><font color="#000000">(</font><font color="#000000">url</font><font color="#000000">,</font> <font color="#000000">props</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#336699"><b>return</b></font> <font color="#000000">conn</font><font color="#000000">;</font><br /> <font color="#000000">}</font><br /><br /> <font color="#336699"><b>public</b></font> <font color="#336699"><b>void</b></font> <font color="#000000">displayTraceFileName</font><font color="#000000">(</font><font color="#000000">Connection</font> <font color="#000000">conn</font><font color="#000000">)</font> <font color="#336699"><b>throws</b></font> <font color="#000000">SQLException</font> <font color="#000000">{</font><br /> <font color="#000000">Statement</font> <font color="#000000">stmt</font> <font color="#000000">=</font> <font color="#000000">conn</font><font color="#000000">.</font><font color="#000000">createStatement</font><font color="#000000">()</font><font color="#000000">;</font><br /> <font color="#000000">ResultSet</font> <font color="#000000">rset</font> <font color="#000000">=</font> <font color="#000000">stmt</font><font color="#000000">.</font><font color="#000000">executeQuery</font><font color="#000000">(</font><font color="#000000">traceSQL</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">rset</font><font color="#000000">.</font><font color="#000000">next</font><font color="#000000">()</font><font color="#000000">;</font><br /> <font color="#000000">String</font> <font color="#000000">fileName</font> <font color="#000000">=</font> <font color="#000000">rset</font><font color="#000000">.</font><font color="#000000">getString</font><font color="#000000">(</font><font color="#006600">1</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">System</font><font color="#000000">.</font><font color="#000000">out</font><font color="#000000">.</font><font color="#000000">println</font><font color="#000000">(</font><font color="#0033cc">"TRACE FILE NAME : "</font> <font color="#000000">+</font> <font color="#000000">fileName</font><font color="#000000">)</font><font color="#000000">;</font><br /> <font color="#000000">}</font><br /><font color="#000000">}</font><br /></pre><br /><br />--------------------------------------------------------------------------------------------------------<br /><br />Now run the class as follows:<br /><br />[stever@STEVER-8500 C]$ java -version<br />java version "1.5.0_06"<br />Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)<br />Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)<br /><br />[stever@STEVER-8500 C]$ javac -cp .;"D:\My Contents\My Software\Oracle\JDBC Drivers\10.2.0.4\ojdbc14.jar" TestFetchSizeWithLongColumn.java<br /><br />[stever@STEVER-8500 C]$ java -cp .;"D:\My Contents\My Software\Oracle\JDBC Drivers\10.2.0.4\ojdbc14.jar" TestFetchSizeWithLongColumn<br />TRACE FILE NAME : /u01/programs/oracle/product/10.2.0/db_1/admin/orcl/udump/orcl_ora_7002.trc<br /><br />[stever@STEVER-8500 C]$<br /><br />The result returned is the location of my trace file on the database. <br /><br />Upon checking the trace file, the following is shown:<br /><br />=====================<br />PARSING IN CURSOR #1 len=51 dep=0 uid=5 oct=3 lid=5 tim=1221750605502677 hv=1856978345 ad='2bdf40f8'<br />select search_condition,rownum from dba_constraints<br />END OF STMT<br />PARSE #1:c=0,e=108,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1221750605502672<br />BINDS #1:<br />EXEC #1:c=0,e=98,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1221750605502850<br />WAIT #1: nam='SQL*Net message to client' ela= 2 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1221750605502898<br />FETCH #1:c=232965,e=227064,p=0,cr=7679,cu=0,mis=0,r=15,dep=0,og=1,tim=1221750605730008<br />WAIT #1: nam='SQL*Net message from client' ela= 77131 driver id=1952673792 #bytes=1 p3=0 obj#=-1 tim=1221750605807896<br />=====================<br /><br />The line:<br /><br />FETCH #1:c=232965,e=227064,p=0,cr=7679,cu=0,mis=0,r=15,dep=0,og=1,tim=1221750605730008<br /><br />Contains 'r=15'. 15 rows are prefetched.Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0tag:blogger.com,1999:blog-8133026034579648500.post-78241570901314527472009-07-07T13:43:00.014+10:002010-05-18T13:53:02.435+10:00Closing socket as no data read from it during the configured idle timeout of 5 secsIn Jdeveloper 11.1.1.1.0, when I am running my web application I am frequently left with the following error from the integrated server:<br /><code><br /><span style="color: rgb(51, 51, 255); font-weight: bold;"><Warning> <Socket> <BEA-000449> <Closing socket as no data read from it during the configured idle timeout of 5 secs></span></code><br /><br />This is because I sometimes have multiple browsers/windows open of same application connections due to stopping and start the server each time opens a new window. Closing down all browsers/windows related to the application connection can avoid the problem.Steve Racanovichttp://www.blogger.com/profile/12512826011933859056noreply@blogger.com0