PLSQL_COMPILER_FLAGS and PLSQL_CODE_TYPE

Why is the sql developer using plsql_compiler_flags parameter instead of plsql_code_type parameter for the debugger since the former has been deprecated?

Hi Ranit,
Changing to NATIVE compilation only affects PLSQL code, it wont improve performance for SQL.
You can usually speed up PL/SQL units by compiling them into native code (processor-dependent system code), which is stored in the SYSTEM tablespace.You can natively compile any PL/SQL unit of any type, including those that Oracle Database supplies. Natively compiled program units work in all server environments, including shared server configuration (formerly called "multithreaded server") and Oracle Real Application Clusters (Oracle RAC). On most platforms, PL/SQL native compilation requires no special set-up or maintenance. On some platforms, the DBA might want to do some optional configuration.
Without native compilation, the PL/SQL statements in a PL/SQL unit are compiled into an intermediate form, system code, which is stored in the catalog and interpreted at run time.
With PL/SQL native compilation, the PL/SQL statements in a PL/SQL unit are compiled into native code and stored in the catalog. The native code need not be interpreted at run time, so it runs faster
Because native compilation applies only to PL/SQL statements, a PL/SQL unit that uses only SQL statements might not run faster when natively compiled, but it does run at least as fast as the corresponding interpreted code. The compiled code and the interpreted code make the same library calls, so their action is the same.
Hope it clears your doubts.

Similar Messages

  • Unable to set PLSQL_COMPILER_FLAGS to INTERPRETED.

    Hi,
    I am working on 10gR2 Windows 2003 x64 AMD Opteron.
    The PLSQL_COMPILER_FLAGS and PLSQL_CODE_TYPE parameters were set to NATIVE by me. I also set the directory for it and assigned the value to the parameter PLSQL_NATIVE_LIBRARY_DIR.
    However, since I cannot find the correct compilers, I wanted to change it back to NATIVE. So, I removed the value for PLSQL_NATIVE_LIBRARY_DIR and set the values for PLSQL_COMPILER_FLAGS and PLSQL_CODE_TYPE to INTERPRETED.
    On restarting the instance after the change in the values, the value for PLSQL_COMPILER_FLAGS changes to NATIVE.
    (1) Any solutions on how to set the PLSQL_COMPILER_FLAGS to INTERPRETED for good? and,
    (2) Where to get the correct compilers for my server and how to install them, basically, how would Oracle know where (path) to look for the compiler binaries??
    thanx
    vick

    And, I still want to use the PLSQL_CODE_TYPE as NATIVE, but the compilers wont work fine.
    If anyone has any info, my specs are:
    Oracle 10gR2 - 64 bit
    Windows 2003 x64 on AMD Opteron.
    According to the Oracle documentation, I needed to have Windows 2003 SDK. So, we got Visual Studio 2005 installed, which updated with the latest updates from Microsoft alongwith the compilers.
    Since we had an issue with "unable to find the defaultLib" and got another message of "NO InstalledSDKs", we are reverting back to the INTERPRETED.

  • Vagueness about a question

    http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=303&p_certName=SQ1Z0_146
    Why the correct answers for the last question are BC, and not BD? Why also C? Because if we change the value for the parameter PLSQL_CODE_TYPE to INTERPRETED from the previously set value of NATIVE, then for all PL/SQL program units that were compiled as native, subsequent automatic recompilations would use interpreted compilation

    Srini - I may be the cause of this confusion. This is the same OP that ask this question - Re: plsql_optimize_level and plsql_code_type
    See my post there and the other question that was ask. The other question involved PLSQL_OPTIMIZE_LEVEL; this question doesn't change the level.
    The OP may be trying to reconcile my response there (about a different question) with this new question.
    It would help if you would explain how to reconcile the reference you gave in the database reference:
    >
    If a PL/SQL library unit is compiled native, all subsequent automatic recompilations of that library unit will use native compilation.
    >
    With the quote I used to answer the other question which was in the SQL Reference for 11R2 (PL/SQL Units and Compilation Parameters - http://docs.oracle.com/cd/E11882_01/appdev.112/e17126/overview.htm)
    states:
    >
    If the optimization level (set by PLSQL_OPTIMIZE_LEVEL) is less than 2:
    •The compiler generates interpreted code, regardless of PLSQL_CODE_TYPE.
    >
    Are you saying that once the optimization level is 2 or more you can never recompile a currently compiled package as INTERPRETED? Or are you saying that it will never be AUTOMATICALLY recompiled as INTERPRETED but can be manually recompiled as INTERPRETED?
    If so then this would mean there is a difference between 'automatic' recompilation and 'non-automatic' (manual?) recompilation? Are there any other differences? Does that mean that automatic recompilation will not take 'conditional compilation' parameter settings into account?

  • Obsolete and/or deprecated parameter(s) specified  for plsql_compiler_flags

    Hi All,
    After upgrading the from 10.2.0.1 to 10.2.0.4 on linux. I am getting ORA-32004: obsolete and/or deprecated parameter(s) specified error for plsql_compiler_flags.
    in alert log says
    Deprecated system parameters with specified values:
    plsql_compiler_flags
    End of deprecated system parameter listing
    Could you please help me how to fix this problem.
    Thanks

    Thank you Pavan and oradba.
    even after changing to
    ALTER SYSTEM SET plsql_compiler_flags = 'NATIVE' SCOPE=SPFILE;
    ALTER SYSTEM SET plsql_code_type = "NATIVE" SCOPE=SPFILE;
    still I am getting same error. Could you please help me to fix this problem.
    Thanks

  • Plsql_code_type NATIVE and DEBUG true??

    Hi,
    In the documentation i've read that we can use pl/sql debugging tools for program units compiled for interpreted mode (but NOT for those compiled for native mode).
    Then, if i have:
    alter session set plsql_code_type=native
    alter package my_pkg compile DEBUGWhy can i specify DEBUG? Because it is compiled in native mode, and in native mode we cannot use debugging, isn't it? The last statement shouldn't have cause an error?
    Thanks

    Roger,
    When I says alter session set plsql_code_type=native; it means all subsequent automatic recompilations of that library unit will use native (machine code) compilation. Ok.
    After that I says, alter package my_pkg compile DEBUG; it means I am going to compile the package with DEBUG option and DEBUG option says compiler to compile and generate the code for debugger. Here debugger will read the compiled code in native compilation.
    There is no error, simply you are going to provide the native compiled code to debugger.
    Here one more parameter plays big role :
    PLSQL_DEBUG
    PLSQL_DEBUG specifies whether or not PL/SQL library units will be compiled for debugging.
    Values:
    true - PL/SQL library units will be compiled for debugging
    false - PL/SQL library units will be compiled for normal execution
    When PLSQL_DEBUG is set to true, PL/SQL library units are always compiled INTERPRETED in order to be debuggable.
    When the value of this parameter is changed, it has no effect on PL/SQL library units that have already been compiled. The value of this parameter is stored persistently with each library unit.
    Regards
    Girish Sharma

  • Deprecated and obsolete parameters in 10gR2

    From the oracle documentation, the following initialization parameters have been deprecated or obsoleted in this release. in some cases, oracle specifies what superceded the original parameter but in most cases not. does anyone know how to find out more about what was replaced and by what?
    see the following:
    Appendix A: Initialization Parameters Obsolete in 10g
    ENQUEUE_RESOURCES
    DBLINK_ENCRYPT_LOGIN
    HASH_JOIN_ENABLED
    LOG_PARALLELISM
    MAX_ROLLBACK_SEGMENTS
    MTS_CIRCUITS
    MTS_DISPATCHERS
    MTS_LISTENER_ADDRESS
    MTS_MAX_DISPATCHERS
    MTS_MAX_SERVERS
    MTS_MULTIPLE_LISTENERS
    MTS_SERVERS
    MTS_SERVICE
    MTS_SESSIONS
    OPTIMIZER_MAX_PERMUTATIONS
    ORACLE_TRACE_COLLECTION_NAME
    ORACLE_TRACE_COLLECTION_PATH
    ORACLE_TRACE_COLLECTION_SIZE
    ORACLE_TRACE_ENABLE
    ORACLE_TRACE_FACILITY_NAME
    ORACLE_TRACE_FACILITY_PATH
    PARTITION_VIEW_ENABLED
    PLSQL_NATIVE_C_COMPILER
    PLSQL_NATIVE_LINKER
    PLSQL_NATIVE_MAKE_FILE_NAME
    PLSQL_NATIVE_MAKE_UTILITY
    ROW_LOCKING
    SERIALIZABLE
    TRANSACTION_AUDITING
    UNDO_SUPPRESS_ERRORS
    Appendix B: Initialization Parameters Deprecated in 10g
    LOGMNR_MAX_PERSISTENT_SESSIONS
    MAX_COMMIT_PROPAGATION_DELAY
    REMOTE_ARCHIVE_ENABLE
    SERIAL_REUSE
    SQL_TRACE
    BUFFER_POOL_KEEP (replaced by DB_KEEP_CACHE_SIZE)
    BUFFER_POOL_RECYCLE (replaced by DB_RECYCLE_CACHE_SIZE)
    GLOBAL_CONTEXT_POOL_SIZE
    LOCK_NAME_SPACE
    LOG_ARCHIVE_START
    MAX_ENABLED_ROLES
    PARALLEL_AUTOMATIC_TUNING
    PLSQL_COMPILER_FLAGS (replaced by PLSQL_CODE_TYPE and PLSQL_DEBUG)
    my boss is pushing for explanations and i have no idea how to find the information (i personally am of the school that says if during the database creation, you get warning messages, it's gone and you just accept it...maybe i have been working with oracle too long?)
    Thanks for any assistance.

    Hi,
    Check for these parameters in Oracle9i documentation. There are some mentioning of new parameters to be used for the deprecated parameters. Ofcourse, not all are available.
    HTH
    Regards,
    Badri.

  • Obsolete and/or deprecated

    Hi there,
    I have recently installed Oracle 10g using DBCA. I then ran some scripts to utilise our internal application that runs on Oracle 9i. After shutting down the instance and restarting it, I get the following error:
    ORA-32004: obsolete and/or deprecated parameter(s) specified
    ORACLE instance started.
    Has anyone any ideas on how to locate this parameter? The alert log did not give me much info.
    Regards
    Ciara

    Thanks for that, the list of deprecated values are as follows. Do I simply set them to false/0 to get rid of the error on startup?
    NAME
    lock_name_space
    buffer_pool_keep
    buffer_pool_recycle
    max_commit_propagation_delay
    remote_archive_enable
    log_archive_start
    parallel_server
    parallel_server_instances
    fast_start_io_target
    logmnr_max_persistent_sessions
    serial_reuse
    NAME
    max_enabled_roles
    global_context_pool_size
    plsql_compiler_flags
    sql_trace
    parallel_automatic_tuning
    drs_start
    Regards
    Ciara

  • Plsql_optimize_level = 3 and native compilation in SQL Developer?

    SQL Developer: Version 3.1.06 (Build MAIN-06.82)
    Oracle: 11gR2
    OS: Ubuntu 10.10
    Whenever I compile a PL/SQL unit in SQL Developer (using 'Compile' button) it is compiled with the following settings:
    PLSQL_OPTIMIZE_LEVEL = 2
    PLSQL_CODE_TYPE = 'INTERPRETED'
    However, if I issue the following commands in an SQL Worksheet:
    ALTER SESSION SET plsql_optimize_level = 3;
    ALTER PACKAGE PACKAGE_NAME COMPILE PLSQL_CODE_TYPE = NATIVE;
    the query SELECT PLSQL_OPTIMIZE_LEVEL, PLSQL_CODE_TYPE FROM ALL_PLSQL_OBJECT_SETTINGS WHERE NAME = 'PACKAGE_NAME'; resullts in
    PLSQL_OPTIMIZE_LEVEL     PLSQL_CODE_TYPE
    3     NATIVE
    3     NATIVE
    Is it possible to make SQL Developer to use these settings by default?
    P.S. It seems that Tools > Preferences > Database > PL/SQL Compiler menu section is missing the options I need (Optimization level drop-down menu have numbers 0-2, but not 3). Are there any plans to support these features in the future releases?
    Edited by: Ravshan Abbasov on Feb 6, 2012 6:28 AM

    Hi Ravshan,
    I thought a workaround would be to create a sql script like the following:
    alter session set plsql_code_type=native;
    alter session set plsql_optimize_level=3;  then point to it in the setting for Tools|Preferences|Database|Filename for connection startup script. That doesn't work however, as the other preference setting for plsql_optimize_level overrides the session value of 3 during compilation from the UI.
    According to Oracle documentation, level 3 was added for Oracle 11g. Prior to that, the same effect could be achieved by level 2 in conjunction with the INLINE pragma in the PL/SQL code.
    You might want to make a feature request for this on the SQL Developer Exchange so the community can vote and comment.
    Regards,
    Gary
    SQL Developer Team
    Edited by: Gary Graham on Feb 6, 2012 2:32 PM
    And, of course, Compile for Debug does not work with the 'native' setting.

  • PL/SQL Debugger and ORA-12541: TNS:no listener

    I installed SQL Developer on my PC (Windows XP). I have a connection to my devlopment database on server (Solaris, Oracle 9.2.0.6).
    I create a procedure and compile it successfully. Now I want to 'debug' it. I click on the Debugger (ladybug), set my parameter value and click on 'OK' in the Debug PL/SQL window. In the Debugging log I get:
    Connecting to the database Banner devl.
    Executing PL/SQL: ALTER SESSION SET PLSQL_DEBUG=TRUE
    Executing PL/SQL: ALTER SESSION SET PLSQL_COMPILER_FLAGS=INTERPRETED
    Executing PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '130.207.xxx.xxx', '4000' )
    ORA-30683: failure establishing connection to debugger
    ORA-12541: TNS:no listener
    ORA-06512: at "SYS.DBMS_DEBUG_JDWP", line 68
    ORA-06512: at line 1
    Process exited.
    Disconnecting from the database Banner devl.
    What listener is it looking for on my own machine? I don't have J Developer and I'm using a remote database.
    I found the thread on setting the 'Prompt for Debugger Host for Database Debugging'. Enabled that and tried debugging again. Got the prompt for entering the IP of the Debugger Host. Tried the database server. So I got:
    Connecting to the database Banner devl.
    Executing PL/SQL: ALTER SESSION SET PLSQL_DEBUG=TRUE
    Executing PL/SQL: ALTER SESSION SET PLSQL_COMPILER_FLAGS=INTERPRETED
    Executing PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '130.207.xxx.xxx', '4000' )
    ORA-30683: failure establishing connection to debugger
    ORA-12541: TNS:no listener
    ORA-06512: at "SYS.DBMS_DEBUG_JDWP", line 68
    ORA-06512: at line 1
    Process exited.
    Disconnecting from the database Banner devl.
    The answer is probably right in front of me, but I just can't see it. Is something mission on the database server?

    I am running SQL Developer on Windows XP Professional and I was experiencing the same problem.
    When I started the debugger I got the message from Win XP that Windows Firewall will block some features of the program (being the PC at work I don't have admin privileges on it). I accepted this, not knowing which features would be blocked.
    Then, the debugger was just hanging. After a while it timed out and came back with exactly this error message.
    I restarted the SQLDeveloper and tried again without much success. This time though I didn't get the Windows Firewall message.
    After another few trial and errors I figured out that the Firewall must be blocking connection establishement on the client site i.e. on my PC.
    It was the CALL DBMS_DEBUG_JDWP.CONNECT_TCP that was hanging.
    As the system admin disabled the Windows Firewall on my PC the debugger started working. We have a luxury to disable local firewalls as there is one that protects our network from outside traffic. People who cannot afford to disable the Windows firewall will have to tinker with the firewall itself and configure it in such a way that it allows traffic on certain port range (4000...4999). Then in SQLdeveloper you will have to go to Tools->Preferences->Debugger and tick Debugging Port Range. The chosen range should match the port range on the Windows Firewall side.
    By the way, in the call to CALL DBMS_DEBUG_JDWP.CONNECT_TCP the first parameter is the IP address of your PC and the second one is the port used for debugger connection with the database server. If for some reason the IP address chosen by the debugger is not your IP address (you can find your IP address as follows: Start->Run->cmd; then use command ipconfig), you will have to tick "Prompt for Debugger Host for Database Debugging" on your Debugger Preferences. This way you'll be able to chose the IP address yourself.
    Good luck!

  • PLSQL_CODE_TYPE INTERPRETED / NATIVE?

    Hi!
    I just exported my schema with ttSchema and saw before every PL/SQL package +"alter session set PLSQL_CODE_TYPE = INTERPRETED;"+
    Now I ask myself is there also +"NATIVE"+ possible? :)
    TT documentation doesn't mention anything - at least I couldn't find it - only the normal Oracle documentation (e.g.: http://download.oracle.com/docs/cd/B12037_01/server.101/b10755/initparams158.htm)
    If I use the +"NATIVE"+ flag TT doesn't throw an error - but I can't see any speedup in normal operation on my test system (I have to admit - I didn't do any explicit performance tests with the new flag).
    So is it supported? Is it recommended (compile time isn't an issue - but performance in normal operation)?
    Thanks in advance!
    Thilo

    Thanks a lot for your fast answer...
    But then I would expect an error - otherwise this is very confusing ;)
    +Command> alter session set PLSQL_CODE_TYPE = NOT_SUPPORTED_FLAG;+
    +12706: Invalid session parameter value+
    The command failed.+
    +Command> alter session set PLSQL_CODE_TYPE = NATIVE;+
    Session altered.+
    Do you know if or when this will be supported?
    Thanks a lot!
    Cheers
    Thilo

  • Plsql_code_type

    Hi,
    I am upgrading oracle applications from 11.5.10.2 (10.2.0.5) to R12.1.1 on linux 32 Bit
    Now i am applying 6678700.drv from $AU_TOP.
    In the Upgrade guide chapter 3, Point 4 it says upgrade init.ora with upgrade parameters.
    As i am on 11.5.10.2 with 10.2.0.5 db, before going to R12.1.1. Should i set plsql_code_type = native (Currently it is interpreted).
    I have already run bde_cbo_chk.sql it says recommeded is INTERPRETED,But this is checking against 11.5.10.2.
    So what should be plsql_code_type set???
    (In my last project i have set it to native and no issues, just want to know what should i set).
    (I thinks i have asked this question before also, but now when i search it is not showing in search results.)
    Thanks
    Edited by: user11970143 on Jul 31, 2011 4:40 AM

    Hi,
    I found the answer from the blogs
    http://monishsb.wordpress.com/2010/02/17/changing-parameter-plsql_code_type-from-interpreted-to-native/
    http://oracleappstechnology.blogspot.com/2007/11/plsql-native-compilation-in-apps-11i.html
    We can set plsql_code_type = native to increase performance, so does not matter.
    Thanks

  • BUG 10.1.3 EA   ( Manage Libraries and GUI Designer )

    Hi again,
    Sorry guys, just make the title more specific.......and hope that team JDeveloper will
    notice this....
    Problem No. 1, "Add JavaBeans" not able to list any custom visual javabeans which added using "Load Dir..." in Manage Libraries but no problem with "User" location.
    Problem No. 2, Create JFrame "A" with nothing inside, then create JFrame "B" which inherited from JFrame "A". Notice, GUI Designer will show an invisible JFrame "B".
    Thanks again~

    I'm using a Oracle 9i2 database.
    In this database I have created a package with several procedures.
    I checked the prerequisites as described in the help-files.
    I open the package in the editor, and start debugging by using the pop-up menu, choosing debug, choosing one of the package procedures, and adjusting the generated anonymous PL/SQL block. After clicking the OK-button the response in the debug window is:
    Connecting to the database DOSE_TEST.
    Executing PL/SQL: ALTER SESSION SET PLSQL_DEBUG=TRUE
    Executing PL/SQL: ALTER SESSION SET PLSQL_COMPILER_FLAGS=INTERPRETED
    Executing PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '<deleted this part>', '3339' )
    Debugger accepted connection from database on port 3339.
    Process exited.
    Disconnecting from the database DOSE_TEST.
    Debugger disconnected from database.
    There are breakpoints set in the package, so during debugging it should stop at the breakpoint.
    The package procedure is run, because the procedure inserts a record in a log-table, and after this debug session there is a new record in this table.

  • Inline plsql_optimize_level=3 and recompiling the sys schema??

    Has anyone messed around with 11g’s new inline pragma?
    I turned it on in a few packages which contains a lot of looping and it reduced the number subprocedure calls in the order of a few thousand. Because the db mainly servers web pages via mod_plsql, I found it to make pages just a tad snappier.
    It seemed to work pretty well that I altered the system with plsql_optimize_level=3 and recompiled the entire schema.
    This along with native compilation has made the website run the fastest I’ve ever seen it run. (I’ve already tuned sql statements and the sga size, so it was already running pretty fast.) Now it's just crazy quick.
    I only wish that standalone functions would also get “inlined”. I have a few functions like “format_money()” which will not get inlined unless they moved inside of packages (or in the declaration of calling standalone procedure).
    I’m wondering if anyone has set plsql_optimize_level=3 and recompiled the system schema? I recompiled sys.htp, sys.htf and sys.owa* packages just for fun. I didn’t do any metrics to gage the speed up. Just going off of feel, it does appear just a tad faster.
    I'm considering recompiling the entie sys schema and wondering if anyone has done this or recommends it?
    Edited by: brian.mcginity on Oct 9, 2011 12:59 PM

    Hi Ravshan,
    I thought a workaround would be to create a sql script like the following:
    alter session set plsql_code_type=native;
    alter session set plsql_optimize_level=3;  then point to it in the setting for Tools|Preferences|Database|Filename for connection startup script. That doesn't work however, as the other preference setting for plsql_optimize_level overrides the session value of 3 during compilation from the UI.
    According to Oracle documentation, level 3 was added for Oracle 11g. Prior to that, the same effect could be achieved by level 2 in conjunction with the INLINE pragma in the PL/SQL code.
    You might want to make a feature request for this on the SQL Developer Exchange so the community can vote and comment.
    Regards,
    Gary
    SQL Developer Team
    Edited by: Gary Graham on Feb 6, 2012 2:32 PM
    And, of course, Compile for Debug does not work with the 'native' setting.

  • Plsql_code_type (native or INTERPRETED).

    We recently moved from 10.1.0.4 to 10.2.03 and when we try and create a procedure we are receiving the below error.
    PLS-00923: Visual Studio not found::Could not open registry key HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\VISUALSTUDIO\7.1\SETUP:No error
    Should I change the spfile file paramter plsql_code_type to INTERPRETED

    Depends what you actually require as to how you fix it.
    Setting it to the default INTERPRETED rather than NATIVE will get rid of the error, but do you need you code to be natively compiled? If so then you'll need to sort out the installation of the C compiler (in your case from Visual Studio) which is required to compile the code to it's native form.

  • Export  from 11g and import to 9i

    I have run exp from machine runing oracle 9i to export tables from
    another machine running oracle 11g .Export is working fine but while
    importing in Oracle 9i it is giving the following errors.
    import done in US7ASCII character set and AL16UTF16 NCHAR character
    set
    import server uses WE8ISO8859P1 character set (possible charset
    conversion)
    IMP-00003: ORACLE error 96 encountered
    ORA-00096: invalid value for parameter plsql_compiler_flags, must be
    from among NON_DEBUG, DEBUG, INTERPRETED, NATIVE
    IMP-00000: Import terminated unsuccessfully
    Can anybody suggest how to do this.
    Thanks for your valuable time.

    Duplicate post
    export  from 11g and import to 9i
    Srini

Maybe you are looking for