Pl/sql Package Tuning Tips
Hi Friends,
I have a requirement of Tunning a Pl/sql package.
Kindly share some tips on Tunning the Package.
Thanks & Regards
Dilip Nomula
Ramya,
Profiler is a plsql api which is very effective to find out that in the pl sql program of yours, where is the time spent and on which line? This, otherwise would be very tough to do as the pl sql programs are long and its tough to find the time spent on each line. Using the profiler, a line by line comparison can be shown to you. Here is a link how to use it,
http://www.oracle-base.com/articles/9i/DBMS_PROFILER.php
In addition to it, you can also combine dbms_trace. Combining this with the Profiler, you can have a complete info about the plsql package.
http://www.oracle-base.com/articles/9i/DBMS_TRACE.php
HTH
Aman....
Similar Messages
-
Can some one tell me the tuning tips for sql statements, please.
Thanks
AjwatYes get EP (explain plan) going and try add /*+ RULE */ hint to your SIUD commands (Select/Insert/Update/Delete) . This changes the optimizer mode from CHOOSE to RULE, I find RULE uses indexes more often than CHOOSE (see example below).
select /*+ RULE */ c1,c2,c3 from t1 where n1=123
--[EP 1 results]
SELECT STATEMENT Optimizer=HINT: RULE
TABLE ACCESS (BY INDEX ROWID) OF T1
INDEX (RANGE SCAN) OF I_NU_T1_N1 (NON-UNIQUE)
select c1,c2,c3 from t1 where n1=123
--[EP 2 results]
SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=12)
TABLE ACCESS (FULL) OF T1 (Cost=1 Card=1 Bytes=12)
Look for any FULL TABLE SCAN entries in your EP results and try to get rid of them. As the above example shows, switching to RULE uses the index on table T1.
There are a while pile of other HINTS listed as well (other than just RULE) which are at ...
http://download-west.oracle.com/otndoc/oracle9i/901_doc/server.901/a87503/hintsref.htm#4894
There is a whole section on Oracle Performance at the following address...
http://download-west.oracle.com/otndoc/oracle9i/901_doc/server.901/a87503/toc.htm
the Hints section is Chapter 5
There are many more things to tuning tips, but by far, getting your SQL to use indexes is the primary one and you'll have to get EP results to see which indexes are being used (the FREE Toad program shows EP results nicely).
Hope this helps,
Tyler -
EclipseLink-Redeploying a DBWS WS on PL/SQL package after changing return
Issue concerning: EclipseLink 2.4.1 (DBWS) on WebLogic
Hi,
I've created a DBWS webservice based on a Oracle (10g) PL/SQL package, by using EclipseLink DBWS builder. The PL/SQL function exposed as a webservice call has a Object type return type, e.g.:
create or replace type eclipse_type as
object
num number
create or replace package test_eclipselink_pkg as
function test return eclipse_type;
end;
As I understand it, EclipseLink-DBWS translates this Oracle object type to an Java type when calling the PL/SQL function over JDBC and translates the Java object to XML to be encapsulated in a SOAP message.
The problem is that when changing the specification of the return type (e.g. changing the name of the field num to nmb in the Oracle type eclipse_type) of the Oracle PL/SQL function, regenerating the webservice (WAR-file) with DBWS builder and redeploying it on WebLogic 10.3.6, calling the webservice results in a java.lang.reflect.InvocationTargetException.
Restarting the WebLogic server (or the appropriate managed server) resolves the problem, what shouldn't be a problem in a development environment, but is not always possible in a production environment.
The problem seems to be that redeploying the webservice doesn't result in the XR Operations/Queries being recreated and as a result the old result type definition is used.
Has anybody a solution for this problem?
Kind regards,
JanHi,
I checked the logging while redeploying the WAR file. This part of the output seems to indicate, as you suggested, that the EcliipseLink session is not correctly logged of (InstanceAlreadyExistsException):
*** <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating redeploy operation for application, PLUS_WS [archive: P:\WS-I\eclipselink-2.4.0\runtime\eclipselink-2.4.1.v20120712-r11838\eclipselink\utils\dbws\output\PLUS_WS.war], to AdminServer .>
*** <Notice> <Stdout> <BEA-000000> <[EL Warning]: server: 2012-09-03 16:40:16.598--ServerSession(28419523)--Thread(Thread[[ACTIVE] ExecuteThread: '22' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads])--Problem while unregistering MBean: weblogic.management.NoAccessRuntimeException: Access not allowed for subject: principals=[], on ResourceType: Configuration Action: unregister, Target: null>
*** <Notice> <Stdout> <BEA-000000> <[EL Config]: connection: 2012-09-03
*** <Notice> <Stdout> <BEA-000000> <[EL Info]: connection: 2012-09-03 16:40:16.599--ServerSession(28419523)--Thread(Thread[[ACTIVE] ExecuteThread: '22' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads])--schapkaarten-dbws-or-session logout successful>
*** <Info> <Deployer> <BEA-149060> <Module PLUS_WS.war of application PLUS_WS successfully transitioned from STATE_PREPARED to STATE_NEW on server AdminServer.>
*** <Notice> <Stdout> <BEA-000000> <[EL Info]: connection: 2012-09-03 16:40:17.07--ServerSession(9455819)--Thread(Thread[[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads])--schapkaarten-dbws-or-session login successful>
*** <Notice> <Stdout> <BEA-000000> <[EL Warning]: server: 2012-09-03 16:40:17.071--ServerSession(9455819)--Thread(Thread[[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads])--Problem while registering MBean: javax.management.InstanceAlreadyExistsException: TopLink:Name=Development-schapkaarten-dbws-or-session,Type=Configuration>
*** <Notice> <Stdout> <BEA-000000> <[EL Warning]: server: 2012-09-03 16:40:17.071--ServerSession(9455819)--Thread(Thread[[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads])--Problem while registering MBean: javax.management.InstanceAlreadyExistsException: TopLink:Name=Session(schapkaarten-dbws-or-session)>
What I cannot see, is: who is responsible for this logout? This must be clear so I know I have to log a bug for WebLogic or for EclipseLink.
Anyone a suggestion how to determine this?
Thanks,
Jan -
HOW TO: Post a SQL statement tuning request - template posting
This post is not a question, but similar to Rob van Wijk's "When your query takes too long ..." post should help to improve the quality of the requests for SQL statement tuning here on OTN.
On the OTN forum very often tuning requests about single SQL statements are posted, but the information provided is rather limited, and therefore it's not that simple to provide a meaningful advice. Instead of writing the same requests for additional information over and over again I thought I put together a post that describes how a "useful" post for such a request should look like and what information it should cover.
I've also prepared very detailed step-by-step instructions how to obtain that information on my blog, which can be used to easily gather the required information. It also covers again the details how to post the information properly here, in particular how to use the \ tag to preserve formatting and get a fixed font output:
http://oracle-randolf.blogspot.com/2009/02/basic-sql-statement-performance.html
So again: This post here describes how a "useful" post should look like and what information it ideally covers. The blog post explains in detail how to obtain that information.
In the future, rather than requesting the same additional information and explaining how to obtain it, I'll simply refer to this HOW TO post and the corresponding blog post which describes in detail how to get that information.
*Very important:*
Use the \ tag to enclose any output that should have its formatting preserved as shown below.
So if you want to use fixed font formatting that preserves the spaces etc., do the following:
\ This preserves formatting
\And it will look like this:
This preserves formatting
. . .Your post should cover the following information:
1. The SQL and a short description of its purpose
2. The version of your database with 4-digits (e.g. 10.2.0.4)
3. Optimizer related parameters
4. The TIMING and AUTOTRACE output
5. The EXPLAIN PLAN output
6. The TKPROF output snippet that corresponds to your statement
7. If you're on 10g or later, the DBMS_XPLAN.DISPLAY_CURSOR output
The above mentioned blog post describes in detail how to obtain that information.
Your post should have a meaningful subject, e.g. "SQL statement tuning request", and the message body should look similar to the following:
*-- Start of template body --*
The following SQL statement has been identified to perform poorly. It currently takes up to 10 seconds to execute, but it's supposed to take a second at most.
This is the statement:
select
from
t_demo
where
type = 'VIEW'
order by
id;It should return data from a table in a specific order.
The version of the database is 11.1.0.7.
These are the parameters relevant to the optimizer:
SQL>
SQL> show parameter optimizer
NAME TYPE VALUE
optimizer_capture_sql_plan_baselines boolean FALSE
optimizer_dynamic_sampling integer 2
optimizer_features_enable string 11.1.0.7
optimizer_index_caching integer 0
optimizer_index_cost_adj integer 100
optimizer_mode string ALL_ROWS
optimizer_secure_view_merging boolean TRUE
optimizer_use_invisible_indexes boolean FALSE
optimizer_use_pending_statistics boolean FALSE
optimizer_use_sql_plan_baselines boolean TRUE
SQL>
SQL> show parameter db_file_multi
NAME TYPE VALUE
db_file_multiblock_read_count integer 8
SQL>
SQL> show parameter db_block_size
NAME TYPE VALUE
db_block_size integer 8192
SQL>
SQL> show parameter cursor_sharing
NAME TYPE VALUE
cursor_sharing string EXACT
SQL>
SQL> column sname format a20
SQL> column pname format a20
SQL> column pval2 format a20
SQL>
SQL> select
2 sname
3 , pname
4 , pval1
5 , pval2
6 from
7 sys.aux_stats$;
SNAME PNAME PVAL1 PVAL2
SYSSTATS_INFO STATUS COMPLETED
SYSSTATS_INFO DSTART 01-30-2009 16:25
SYSSTATS_INFO DSTOP 01-30-2009 16:25
SYSSTATS_INFO FLAGS 0
SYSSTATS_MAIN CPUSPEEDNW 494,397
SYSSTATS_MAIN IOSEEKTIM 10
SYSSTATS_MAIN IOTFRSPEED 4096
SYSSTATS_MAIN SREADTIM
SYSSTATS_MAIN MREADTIM
SYSSTATS_MAIN CPUSPEED
SYSSTATS_MAIN MBRC
SYSSTATS_MAIN MAXTHR
SYSSTATS_MAIN SLAVETHR
13 rows selected.Here is the output of EXPLAIN PLAN:
SQL> explain plan for
2 -- put your statement here
3 select
4 *
5 from
6 t_demo
7 where
8 type = 'VIEW'
9 order by
10 id;
Explained.
Elapsed: 00:00:00.01
SQL>
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 1390505571
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 60 | 0 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| T_DEMO | 1 | 60 | 0 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_DEMO | 1 | | 0 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - access("TYPE"='VIEW')
14 rows selected.Here is the output of SQL*Plus AUTOTRACE including the TIMING information:
SQL> rem Set the ARRAYSIZE according to your application
SQL> set autotrace traceonly arraysize 100
SQL> select
2 *
3 from
4 t_demo
5 where
6 type = 'VIEW'
7 order by
8 id;
149938 rows selected.
Elapsed: 00:00:02.21
Execution Plan
Plan hash value: 1390505571
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 60 | 0 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| T_DEMO | 1 | 60 | 0 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_DEMO | 1 | | 0 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - access("TYPE"='VIEW')
Statistics
0 recursive calls
0 db block gets
149101 consistent gets
800 physical reads
196 redo size
1077830 bytes sent via SQL*Net to client
16905 bytes received via SQL*Net from client
1501 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
149938 rows processed
SQL>
SQL> disconnect
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsThe TKPROF output for this statement looks like the following:
TKPROF: Release 11.1.0.7.0 - Production on Mo Feb 23 10:23:08 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Trace file: orcl11_ora_3376_mytrace1.trc
Sort options: default
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
select
from
t_demo
where
type = 'VIEW'
order by
id
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 1501 0.53 1.36 800 149101 0 149938
total 1503 0.53 1.36 800 149101 0 149938
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 88
Rows Row Source Operation
149938 TABLE ACCESS BY INDEX ROWID T_DEMO (cr=149101 pr=800 pw=0 time=60042 us cost=0 size=60 card=1)
149938 INDEX RANGE SCAN IDX_DEMO (cr=1881 pr=1 pw=0 time=0 us cost=0 size=0 card=1)(object id 74895)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
SQL*Net message to client 1501 0.00 0.00
db file sequential read 800 0.05 0.80
SQL*Net message from client 1501 0.00 0.69
********************************************************************************The DBMS_XPLAN.DISPLAY_CURSOR output:
SQL> -- put your statement here
SQL> -- use the GATHER_PLAN_STATISTICS hint
SQL> -- if you're not using STATISTICS_LEVEL = ALL
SQL> select /*+ gather_plan_statistics */
2 *
3 from
4 t_demo
5 where
6 type = 'VIEW'
7 order by
8 id;
149938 rows selected.
Elapsed: 00:00:02.21
SQL>
SQL> select * from table(dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST'));
PLAN_TABLE_OUTPUT
SQL_ID d4k5acu783vu8, child number 0
select /*+ gather_plan_statistics */ * from t_demo
where type = 'VIEW' order by id
Plan hash value: 1390505571
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads |
| 0 | SELECT STATEMENT | | 1 | | 149K|00:00:00.02 | 149K| 1183 |
| 1 | TABLE ACCESS BY INDEX ROWID| T_DEMO | 1 | 1 | 149K|00:00:00.02 | 149K| 1183 |
|* 2 | INDEX RANGE SCAN | IDX_DEMO | 1 | 1 | 149K|00:00:00.02 | 1880 | 383 |
Predicate Information (identified by operation id):
2 - access("TYPE"='VIEW')
20 rows selected.I'm looking forward for suggestions how to improve the performance of this statement.
*-- End of template body --*
I'm sure that if you follow these instructions and obtain the information described, post them using a proper formatting (don't forget about the \ tag) you'll receive meaningful advice very soon.
So, just to make sure you didn't miss this point:Use proper formatting!
If you think I missed something important in this sample post let me know so that I can improve it.
Regards,
Randolf
Oracle related stuff blog:
http://oracle-randolf.blogspot.com/
SQLTools++ for Oracle (Open source Oracle GUI for Windows):
http://www.sqltools-plusplus.org:7676/
http://sourceforge.net/projects/sqlt-pp/Alex Nuijten wrote:
...you missed the proper formatting of the Autotrace section ;-)Alex,
can't reproduce, does it still look unformatted? Or are you simply kidding? :-)
Randolf
PS: Just noticed that it actually sometimes doesn't show the proper formatting although the code tags are there. Changing to the \ tag helped in this case, but it seems to be odd.
Edited by: Randolf Geist on Feb 23, 2009 11:28 AM
Odd behaviour of forum software -
The -dataSource parameter in assemble a web service from a PL/SQL package
When I use Web Service Assembler to assemble a Web Service from a PL/SQL package, I need to specify the dataSource parameter, e.g.:
java -jar wsa.jar -plsqlAssemble -sql pkgname -dataSource jdbc/MyDS -dbConnection ... -dbUser scott/tiger ....
The dataSource also needs to be pre-configured in the data-sources.xml in OC4J.
I am wondering why dataSource is needed here because the database connection information is already specified on the commandline ( dbConnection and dbUser).
If I have to specify dataSource, how do I configure data-sources.xml dynamically at run-time (e.g., adding entries)?
Thanks,
JimThe -dataSource parameter specifies the data-sources.xml entry used at runtime. The database connection info is only for design time use. Typically you make sure data-sources.xml contains an entry with jndi-location of the same name you specifies for -dataSource. To configure data-sources.xml at runtime, it is out of the scope of web services. Please refer to OC4J admin guide. You can probably modify the data-sources.xml file and force OC4J to reconfigure based on the new data-sources.xml file.
-
Creating PL/SQL Package with all the types
CREATE OR REPLACE
TYPE rec_type AS OBJECT (
first_name VARCHAR2(20),
last_name VARCHAR2(20)
CREATE OR REPLACE
TYPE REC_TYPE_TAB AS TABLE OF rec_type
I am able to create the above types in oracle and used in PL/SQL packages. And like this I have somany types. I would like to if I can create a package with the types to make the life easier. Could you please tell me how to do it.
your help is greately appreciated..
--Krishsb92075 wrote:
TYPE add only aggravation, complexity, & should be avoidedI disagree.
When used correctly types can be the simplest solution.
For example when passing multiple values to a stored procedure. Avoiding the type in the below example would lead to further complexity and aggravation not lessen it.
SQL> create or replace procedure p
2 (
3 p_object_list in sys.odcivarchar2list,
4 p_result out sys_refcursor
5 ) as
6 begin
7 open p_result for
8 select owner, object_name, object_type
9 from all_objects
10 where object_name in
11 (
12 select column_value from
13 table(p_object_list)
14 )
15 order by
16 owner, object_name, object_type;
17 end;
18 /
Procedure created.
SQL> exec p(sys.odcivarchar2list('DUAL','ALL_OBJECTS'),:c)
PL/SQL procedure successfully completed.
SQL> print c
OWNER OBJECT_NAME OBJECT_TYPE
PUBLIC ALL_OBJECTS SYNONYM
PUBLIC DUAL SYNONYM
SYS ALL_OBJECTS VIEW
SYS DUAL TABLE -
Hello,
The problem I am confronted with is reusing generated models.
In the process of DataMinig several steps are used: prepare data, Attribute selection (using AI), and building, testing and applying models.
If PL/SQL packages are used two problems occur:
First: Long, hand driven process of building:
Model generation in ODM,
PL/SQL package building in ODM and Export to SQL file,
importing package to DB, compiling and running.
I am sorry, but I don't understand why is it necessary to export PL/SQL packages in a file? As if these products aren't both Oracle products?
Second: If data (in time) changes and AI selects new attributes, then all next steps fail, since column names, and even some values, are hard coded! Therefore it is necessary to go trough the build and export process all over again. This really hurts.
Do you have a suggestion how to get around this problem?
I already considered using a SPSS Clementine, but since it is not an Oracle product I still believe, the original Oracle solution should give me some advantages.
Oh and another issue.
I tried using PL/SQL generator (Ver.: 10.1.3.0.17) in JDeveloper (ver.: 10.1.3.0.4), but it gave me an error:
java.lang.NoClassDefFoundError: oracle/dmt/dm4j/DM4JConnectionManager
at oracle.dmt.dm4j.extension.CodeGenerator.invoke(Unknown Source)
at oracle.ide.wizard.WizardManager.invokeWizard(WizardManager.java:310)
at oracle.ide.wizard.WizardManager$2.run(WizardManager.java:358)
at oracle.ide.util.IdeUtil.invokeAfterRepaint(IdeUtil.java:1093)
at oracle.ide.wizard.WizardManager$1.run(WizardManager.java:366)
at oracle.ide.util.IdeUtil$1$1.run(IdeUtil.java:1073)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Thanks for the reply,
IgorHi,
The code generation available in ODMr would allow you to deploy the build, apply or test process as generated code.
I am not sure what your application goal is, but if you simply want to deploy a model be used in an apply process that is rather straight forward.
You would build the model using ODMr. Then create an Apply Activity, again using ODMr.
The Apply Activity can then be used to generate code (pl/sql) using the JDev RTM release (10.1.3.2 or above). We will also have a version that will work with SQLDev shortly.
The generated code is immediately placed into the db for you.
If you want to score in a separate db you can either create a db link from that db or move both the model and the apply pl/sql code to the new db (using dba utilities).
If you want to rebuild a model, where you would add/remove attributes, change transformations etc. then you will have to regenerate the code.
If you simply want to rebuild the model without changing any transformations and settings you could also deploy the model build generated code.
As for the JDev failure, we are going to look into that. Have you tried the JDev 10.1.3.3 release available on the Oracle web site?
Thanks, Mark -
Creating PL/SQL package in SQL Developer 4.0.0.12
Hi,
I have built a model in SQL Developer 4.0.0.12 and I want to create it's PL/SQL package.
In ODMiner 11.1.0.4 from "Tools" > "Create pl/sql package" I can get a script for creating package and every thing is OK.
but in SQL Developer I select "Deploy" from every node's context menu and it generates a folder containing some scripts related to every node. I don't see any relevant script for creating any package.
How can I create relevant PL/SQL package from my workflow?
Thank you for any help you can provide in this situation.Please refer to this White paper for how to generate PL/SQL package for workflow deployment:
Oracle Data Miner (Extension of SQL Developer 4.0)
Generate a PL/SQL script for workflow deployment
http://www.oracle.com/technetwork/database/options/advanced-analytics/odmrcodegenwhitepaper-2042206.pdf -
How to get changes of a custom PL/SQL package updated in ISG?
Hi All,
I need some help on how to change a custom PL/SQL package in ISG integration repository:
I already uploaded my custom PL/SQL package to the integration repositoy some time ago. Now I have made some changes to PL/SQL record/table types defined in the package (added some fields and removed some others). These changed record/table types are used by a procedure I already uploaded to the integration repository. When regenerating the WSDL for my PL/SQL package in integration repository I get an error that the wrapper for respective procedure can't be found. When checking up the SQL types that were automatically generated (by JPublisher) for corresponding PL/SQL types, these generated SQL types are invalid...
So it seems that in one case JPublisher generated an empty SQL type (with no attributes). In another case JPublisher generated the SQL type with old attribute list, so it didn't adopt the changes of corresponding PL/SQL type in the package...
Can anybody tell me how to get the changes of a cusotm PL/SQL package updated in ISG? Or is there any possibility to first remove a whole PL/SQL package from the ISG integration repository (and getting rid of all old automatically generated SQL types), so that I can newly upload my PL/SQL package afterwards?
Thanks
Konrad
Edited by: Konrad on 24.10.2011 10:51Thanks Daniel, for your reply...
(-> for info: I'm a colleague of Konrad...)
Yes, we used a higher version number - and the upload of iLDT file works fine...
But, the problem occured when generating the WSDL...
However, I think we have found an approach of how to get the changes of a custom PL/SQL package updated correctly in ISG:
1. Save a copy of PL/SQL package and then delete it in the database
2. Regenerate the WSDL for PL/SQL package in ISG (seems that all atutomatically generated JPub wrappers and SQL types are also deleted)
3. Restart all processes
4. Create the changed version of PL/SQL package in the database again
5. upload of iLDT
6. Regenerate the WSDL for PL/SQL package in ISG
Best Regards
Carolin -
Creating a webservice from PL/SQL Package in JDev 11g
Hi All...
I have a PL/SQl package and I am using JDEv 11g. I want to create it as a webservice. I want to deploy it in a remote server. Can I deploy it from my client machine. In server Weblogic already started. What are the prerequisites, that we need to deploy a wbservice. I done the following steps.
1. Create an application.
2. Right click the package and select Generate Java option.
3. It create a Java class in the Application sources.
4. Double click the class and select Create Web Service. It created the web service.
5. When I select the webservice and click Run it shows the following error. It going to the Default \server. Actually I need it in a remote server.
[Running application NewWebService on Server Instance DefaultServer...]
---- Deployment started. ---- Apr 20, 2009 1:15:40 PM
Target platform is (Weblogic 10.3).
Running dependency analysis...
2009-04-20 13:15:40.205: Writing WAR file to D:\Oracle\Middleware\jdeveloper\system\system11.1.1.0.31.51.88\o.j2ee\drs\NewWebService\NewWebService-LastNoWebService-webapp
2009-04-20 13:15:40.222: Wrote WAR file to D:\Oracle\Middleware\jdeveloper\system\system11.1.1.0.31.51.88\o.j2ee\drs\NewWebService\NewWebService-LastNoWebService-webapp
2009-04-20 13:15:40.357: Writing EAR file to D:\Oracle\Middleware\jdeveloper\system\system11.1.1.0.31.51.88\o.j2ee\drs\NewWebService
2009-04-20 13:15:40.374: Wrote EAR file to D:\Oracle\Middleware\jdeveloper\system\system11.1.1.0.31.51.88\o.j2ee\drs\NewWebService
Deploying Application...
<Apr 20, 2009 1:15:40 PM IST> <Warning> <J2EE> <BEA-160195> <The application version lifecycle event listener oracle.security.jps.wls.listeners.JpsAppVersionLifecycleListener is ignored because the application NewWebService is not versioned.>
<Apr 20, 2009 1:15:40 PM IST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID '1240213540593' for task '3'. Error is: 'java.lang.ClassNotFoundException: sqlj.runtime.ref.DefaultContext'
java.lang.ClassNotFoundException: sqlj.runtime.ref.DefaultContext
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:54)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
Truncated. see log file for complete stacktrace
java.lang.ClassNotFoundException: sqlj.runtime.ref.DefaultContext
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:54)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
Truncated. see log file for complete stacktrace
>
<Apr 20, 2009 1:15:40 PM IST> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating deploy task for application 'NewWebService'.>
<Apr 20, 2009 1:15:40 PM IST> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
java.lang.ClassNotFoundException: sqlj.runtime.ref.DefaultContext
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:54)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
Truncated. see log file for complete stacktrace
java.lang.ClassNotFoundException: sqlj.runtime.ref.DefaultContext
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:54)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
Truncated. see log file for complete stacktrace
>
[Deployer:149034]An exception occurred for task [Deployer:149026]deploy application NewWebService on DefaultServer.: sqlj.runtime.ref.DefaultContext.
weblogic.application.WrappedDeploymentException: sqlj.runtime.ref.DefaultContext
#### Deployment incomplete. #### Apr 20, 2009 1:15:40 PM
oracle.jdeveloper.deploy.DeployException
at oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer.doDeploymentAction(Jsr88RemoteDeployer.java:247)
at oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer.deployImpl(Jsr88RemoteDeployer.java:157)
at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
at oracle.jdevimpl.deploy.fwk.WrappedDeployer.deployImpl(WrappedDeployer.java:39)
at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
at oracle.jdeveloper.deploy.common.BatchDeployer.deployImpl(BatchDeployer.java:82)
at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
at oracle.jdevimpl.deploy.fwk.WrappedDeployer.deployImpl(WrappedDeployer.java:39)
at oracle.jdeveloper.deploy.common.AbstractDeployer.deploy(AbstractDeployer.java:94)
at oracle.jdevimpl.deploy.fwk.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:436)
at oracle.jdeveloper.deploy.DeploymentManager.deploy(DeploymentManager.java:209)
at oracle.jdevimpl.runner.adrs.AdrsStarter$5$1.run(AdrsStarter.java:1365)
Caused by: oracle.jdeveloper.deploy.DeployException
at oracle.jdevimpl.deploy.common.Jsr88DeploymentHelper.deployApplication(Jsr88DeploymentHelper.java:413)
at oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer.doDeploymentAction(Jsr88RemoteDeployer.java:238)
... 11 more
Caused by: oracle.jdeveloper.deploy.DeployException: Deployment Failed
at oracle.jdevimpl.deploy.common.Jsr88DeploymentHelper.deployApplication(Jsr88DeploymentHelper.java:395)
... 12 more
#### Cannot run application NewWebService due to error deploying to DefaultServer.
[Application NewWebService stopped and undeployed from Server Instance DefaultServer]
6. when i goto the consoleof weblogic server, already an instance created. But nothing displayed under WebServices.
7. Select the instance and press 'Start'. While deploying an error came.
java.lang.Exception: [DeploymentService:290049]Deploy failed for id '1,240,213,727,265' since no targets are reachable.
Please help me..
its very urgent...
Regards,
Resmi.Oh, no - another very urgent question. The world must be about to end ;)
Resmi, Have a read of [url http://forums.oracle.com/forums/thread.jspa?threadID=883293]this - JDeveloper 11g, as of today, doesn't (at least is not supposed to) support publishing PL/SQL procedures/packages as a web service.
John -
How to Print the Value of a variable inside a PL/SQL package
Hi Friends,
Here is my Scenario
I have a PL/SQL Package. Let us call it Baseline Package.
This Package includes a dynamically built merge Statement.
Execute Immediate v_merge_query.
I have a procedure which replaces which few Keywords from the Package Text and Creates a new one depending on Inputs I provide. (This is something like a Code generator)
Now while Creating the new package, I need to print the Value of v_merge_query.... I Need s Static Query to be Printed inside the new package and not a dynamic query.
My Question is "Is there a way to print the value of the variable inside a different PL/SQL package?
Thanks in Advance,
MohitPrint where?
That PL/SQL code is server-side code. It runs in an Oracle server process.
That server process does not have a keyboard. Or a screen/monitor. Or display canvas. Or an attached printer.
That server process is incapable of "printing" as that is not its job or responsibility and not part of its environment.
What is can do is record data for the client to look at afterwards. This can be done using static PL/SQL session variables. Or a SQL table.
The former is done by DBMS_OUTPUT - a very primitive interface for writing text into a static PL/SQL string array. That btw resides in expensive private process server memory. The client can query the array after a database call and render the contents.
PS. Also keep in mind that bind variables are critical for performance and server robustness - especially when (ab)using dynamic SQL. -
Invoking Web Service From PL SQL package
Below is the sample code to invoke web service from pl/sql package using UTL_HTTP:
Declare
http_req UTL_HTTP.req;
http_resp UTL_HTTP.resp;
Begin
http_req :=
UTL_HTTP.begin_request
'http://'
|| lv_hosturl
-- || '.net/soa-infra/services/finance_rt/Payments/paymentsprocess_client_ep',
--new url
|| '.net/soa-infra/services/finance_rt/PaymentsReq/paymentsprocess_client_ep?WSDL',
'POST',
'HTTP/1.1'
UTL_HTTP.set_header (http_req, 'Content-Type', 'text/xml');
-- since we are dealing with plain text in XML documents
UTL_HTTP.set_header (http_req,
'Content-Length',
LENGTH (lv_soap_request)
UTL_HTTP.set_header (http_req, 'SOAPAction', '');
-- required to specify this is a SOAP communication
UTL_HTTP.write_text (http_req, lv_soap_request);
http_resp := UTL_HTTP.get_response (http_req);
UTL_HTTP.read_text (http_resp, lv_soap_respond);
UTL_HTTP.end_response (http_resp);
resp := XMLTYPE.createxml (lv_soap_respond);
End;Hi,
there are a lot of option to make plsql web services .
First you can stay with jdev 10.1.3
Use the xmldb servlets
use jdev 11g tp4 to create plsql ws and upgrade to jdev 11g production
And I think in the next release of jdev it will be back , there are more options which disappeared like the adf bc sdo ws or jmx datacontrol etc.
thanks Edwin -
Support for Creating Web Service from pl/sql package in JDeveloper 11
We have been creating all of our web services from pl/sql packages in our Oracle database using JDeveloper 10.1.3.1. I understand that this capability is not supported in Jdev 11. We have been mandated to either move up to JDeveloper 11, or consider switching to eclipse, or even VS2008 and run .NET services from IIS. I have seen work-around solutions using TopLink and Jdev 11. Are there plans to revive this feature in the near future? We're now looking at switching to .NET since we could scrap our OAS instances and use IIS to publish web services. The only reason we were sticking with Oracle was the ease in converting all our existing package to web services with Jdev.
Is anyone else in the same situation. If so, what solutions are you considering?Hi,
there are a lot of option to make plsql web services .
First you can stay with jdev 10.1.3
Use the xmldb servlets
use jdev 11g tp4 to create plsql ws and upgrade to jdev 11g production
And I think in the next release of jdev it will be back , there are more options which disappeared like the adf bc sdo ws or jmx datacontrol etc.
thanks Edwin -
Error when publishing a PL/SQL package as a Webservice
Hi all,
I am using the JDeveloper (10.1.3.1.0) to publish a PL/SQL package as a Webservice, and I am having some troubles on the generation process.
The problem that I am facing is on the generated code for the database side, where some methods have a “$GET_” at the end of its name.
This “$GET_” is handled by the database as a special word, and the package can’t be compiled.
If the ‘$’ character is removed from all the methods, the package can be compiled and the Webservice works fine.
What’s wrong? Is there a bug on the generation process of the JDeveloper?
Regards,
Rui TorresOK, This is the PL/SQL package:
Function:
FUNCTION Obtener_paises RETURN res_webservice AS
v_respuesta res_webservice;
i PLS_INTEGER:=1;
CURSOR C_paises IS
SELECT cpais, tpais
FROM paises
ORDER BY tpais;
BEGIN
v_respuesta := res_webservice(null,null);
v_respuesta.error := res_error(null,null,null);
v_respuesta.error.cerror := 0;
v_respuesta.error.cerror_ora := 0;
v_respuesta.error.terror := null;
v_respuesta.datos := res_datos ();
FOR v_pais IN C_paises LOOP
v_respuesta.datos.extend;
v_respuesta.datos(i) := reg_datos(null,null);
v_respuesta.datos(i).codigo := v_pais.cpais;
v_respuesta.datos(i).descripcion := v_pais.tpais;
i := i + 1;
END LOOP;
Insertar_log(NULL,SYSDATE,'C','Obtener_paises',NULL,'ERROR:0');
RETURN v_respuesta;
EXCEPTION
WHEN OTHERS THEN
v_respuesta.error.cerror := 1;
v_respuesta.error.cerror_ora := SQLCODE;
v_respuesta.error.terror := substr(SQLERRM,1,80);
Insertar_log(NULL,SYSDATE,'C','Obtener_paises',NULL,'ERROR:1 '||substr(SQLERRM,1,120));
RETURN v_respuesta;
END Obtener_paises;
TYPES USED:
CREATE OR REPLACE
TYPE res_webservice AS OBJECT (error res_error, datos res_datos);
CREATE OR REPLACE
TYPE res_error AS OBJECT (cerror NUMBER(1), cerror_ora VARCHAR2(12), terror VARCHAR2(80));
CREATE OR REPLACE
TYPE res_datos AS TABLE OF reg_datos;
CREATE OR REPLACE
TYPE reg_datos AS OBJECT(codigo VARCHAR2(12), descripcion VARCHAR2(150));
Thanks in advanced...
Could happen this bacause of these defined types??? -
Problem with pl/sql package
hi,
i have requirement where i have to create a PL/SQL package which takes two parameters from procedure where i shd give fromdate and todate as parameter below is the code i am getting two errors
create or replace PACKAGE AgentTimeReport_XDO_pkg AS
PROCEDURE AgentTimeReport_Demo_RTF(o_errbuf OUT VARCHAR2
,o_retcode OUT VARCHAR2,p_fromdate IN VARCHAR2,p_todate IN VARCHAR2 );
END AgentTimeReport_XDO_pkg
CREATE OR REPLACE
PACKAGE BODY AGENTTIMEREPORT_XDO_PKG AS
PROCEDURE AgentTimeReport_Demo_RTF(o_errbuf OUT VARCHAR2
,o_retcode OUT VARCHAR2,p_fromdate IN
VARCHAR2,p_todate IN VARCHAR2 ) AS
cursor cs_agenttime
is
SELECT
incident.Incident_Number as ServiceRequestNumber,
TO_CHAR (incident.incident_date,'DD-MON-YYYY') as ServiceRequestDate,
incident.Summary as Summary,
agenttime.agentname as AgentName,
to_char(agenttime.agentstarttime,'DD-MM-YYYY HH24:MI') as StartTime,
to_char(to_date('00:00:00','HH24:MI:SS') +
(agenttime.endtime-agenttime.agentstarttime), 'HH24:MI') as TimeSpent
FROM cs_incidents_all_b incident,cs_agenttime_agv agenttime
WHERE agenttime.incident_id=incident.incident_id
AND incident.incident_date between to_date(:p_fromdate,'DD-MON-YYYY')
AND to_date(:p_todate,'DD-MON-YYYY');
BEGIN
/*First line of XML data should be ‘<?xml version="1.0" encoding='utf-8'?>’*/
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<?xml version="1.0" encoding="utf-8"?>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<AGENTTIME>');
FOR cs_agent IN cs_agenttime
LOOP
/*For each record create a group tag <G_AGENT_TIME> at the start*/
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<G_AGENT_TIME>');
/*Embed data between XML tags for ex:- <EMP_NAME>Abeesh</EMP_NAME>*/
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<SERVICEREQUEST_NUMBER>' ||
cs_agent.ServiceRequestNumber
|| '</SERVICEREQUEST_NUMBER>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<SERVICEREQUEST_DATE>' ||
cs_agent.ServiceRequestDate ||
'</SERVICEREQUEST_DATE>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<START_TIME>' || cs_agent.StartTime
||'</START_TIME>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<TIME_SPENT>' || cs_agent.TimeSpent
||'</TIME_SPENT>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'</G_AGENT_TIME>');
END LOOP;
/*Finally Close the starting Report tag*/
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'</AGENTTIME>');
END AgentTimeReport_Demo_RTF;
END AGENTTIMEREPORT_XDO_PKG;
Error(20,44): PLS-00049: bad bind variable 'P_FROMDATE'
Error(21,13): PLS-00049: bad bind variable 'P_TODATE'
Help me out
naveencreate or replace PACKAGE AgentTimeReport_XDO_pkg AS
PROCEDURE AgentTimeReport_Demo_RTF(o_errbuf OUT VARCHAR2
,o_retcode OUT VARCHAR2,p_fromdate IN VARCHAR2,p_todate IN VARCHAR2 );
END AgentTimeReport_XDO_pkg
CREATE OR REPLACE
PACKAGE BODY AGENTTIMEREPORT_XDO_PKG
AS
PROCEDURE AgentTimeReport_Demo_RTF
o_errbuf OUT VARCHAR2 ,
o_retcode OUT VARCHAR2,
p_fromdate IN VARCHAR2,
p_todate IN VARCHAR2 )
AS
CURSOR cs_agenttime(p_fromdate VARCHAR2,p_todate VARCHAR2)
IS
SELECT incident.Incident_Number AS ServiceRequestNumber,
TO_CHAR (incident.incident_date,'DD-MON-YYYY') AS ServiceRequestDate ,
incident.Summary AS Summary ,
agenttime.agentname AS AgentName ,
TO_CHAR(agenttime.agentstarttime,'DD-MM-YYYY HH24:MI') AS StartTime ,
TO_CHAR(to_date('00:00:00','HH24:MI:SS') + (agenttime.endtime-agenttime.agentstarttime), 'HH24:MI') AS TimeSpent
FROM cs_incidents_all_b incident,
cs_agenttime_agv agenttime
WHERE agenttime.incident_id=incident.incident_id
AND incident.incident_date BETWEEN to_date(p_fromdate,'DD-MON-YYYY') AND to_date(p_todate,'DD-MON-YYYY');
BEGIN
/*First line of XML data should be ‘<?xml version="1.0" encoding='utf-8'?>’*/
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<?xml version="1.0" encoding="utf-8"?>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<AGENTTIME>');
FOR cs_agent IN cs_agenttime(p_fromdate,p_todate)
LOOP
/*For each record create a group tag <G_AGENT_TIME> at the start*/
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<G_AGENT_TIME>');
/*Embed data between XML tags for ex:- <EMP_NAME>Abeesh</EMP_NAME>*/
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<SERVICEREQUEST_NUMBER>' || cs_agent.ServiceRequestNumber '</SERVICEREQUEST_NUMBER>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<SERVICEREQUEST_DATE>' cs_agent.ServiceRequestDate || '</SERVICEREQUEST_DATE>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<START_TIME>' || cs_agent.StartTime ||'</START_TIME>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'<TIME_SPENT>' || cs_agent.TimeSpent ||'</TIME_SPENT>');
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'</G_AGENT_TIME>');
END LOOP;
/*Finally Close the starting Report tag*/
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'</AGENTTIME>');
END AgentTimeReport_Demo_RTF;
END AGENTTIMEREPORT_XDO_PKG;Ravi Kumar
Maybe you are looking for
-
PLSQL Web Tool Kit (HTP) disabled in R12 - What are the alternitives
We have developed a fair amount of add-on applications in our e-business suite using the plsql web toolkit (htp). This functionality has been disbaled in R12. My question to Oracle, "What is the work around for using applications we developed in 11i
-
New problems mounting an old external drive!
I have a 3TB external hitachi drive that has worked great. I have it formatted as MacOS extended Journaled. I haven't used it for quite a while I plugged it in today and I get a popup box: The disk you inserted was not readable by this computer. I in
-
Duplicated URLs inside our PDF files ?
Forum, We are using Adobe Acrobat for creating plenty of materials and documentations which contains quite many links, These links are internal links which point/redirect to other sections on the exact same PDF file itself, Or external links which po
-
I can't register my serial number , how i do?
i cAN'T USE MY SERIAL NO. THAT SEND TO ME AFTER I PAID ALREADY
-
I have couple os questions about ABAP. 1. What is latest version of BI?. What are previous versions of BI?. What is BI version in ECC6.0?. 2. SAP renamed from BW to BIW to BI?..what is sequence?. 3. I am trying to master BI. What all i need to know i