Why does SQL Developer update Oracle Data Dictionaries while SQL*Plus does not

oracleoracle-sql-developersqlplus

I have the following code stored in a script file

create or replace package test_record
is

    type t_test_rec is record(
        name                  varchar2(64)
       ,value                 pls_integer
    );

end test_record;
/

When I execute it from SQL*Plus, the *_IDENTIFIERS data dictionaries are not updated to include the declaration of the type. However, if I copy/paste the same code in SQL Developer and run it as a script (F5), the mentioned data dictionaries are updated.

Even if I force a recompile of the package from SQL*Plus, the *_IDENTIFIERS tables are not updated, no matter what method I use (alter package …, dbms_utility.compile_schema, dbms_ddl.alter, …).

How can I force SQL*Plus to behave like SQL Developer in this respect?

Best Answer

SQL Developer automatically sets the below:

alter session set plscope_settings='IDENTIFIERS:ALL';

You can use the same in SQL*Plus.

(The default is IDENTIFIERS:NONE.)