이 블로그 검색

[ORACLE] plsql_code_type의 INTERPRETED to NATIVE 변경


plsql_code_type 파라미터는 PL/SQL의 성능 향상을 위해 설정 할 수 있는 파라미터이다.

해당 파라미터를 변경하더라도 새롭게 생성되는 Stored PL/SQL 오브젝트만 적용되므로,

모든 PL/SQL Stored Object에 대한 정상 적용을 위해서는 아래의 절차가 필요하다.

※ 상세 내용은 PL/SQL Optimization and Tuning (oracle.com) 을 참고할 것.


주의 사항

- 작업 시, PL/SQL Stored Object의 수가 많을수록 recompile 단계에서 많은 시간이 소요된다.

※ 엔터프라이즈급 서버에서 5만개 가량의 오브젝트 recompile에 2시간 이상 소요.

- Multitenant 환경의 경우, dbmsupgnv.sql, utlrp.sql 적용작업은 각 PDB에서 별도 수행해야 한다.


[현상태 확인]

set lin 250

col plsql_code_type for a20

select type, plsql_code_type, count(*) from dba_plsql_object_settings

group by type, plsql_code_type ;

 

[설정 변경]

alter system set plsql_code_type=NATIVE scope=spfile ;

 

[upgrade mode로 재기동]

shutdown immediate ;

startup upgrade ;

alter pluggable database all open upgrade ;

 

[upgrade 수행]

변수 입력을 받을 때 FALSE로 입력 (DEFAULT는 TRUE 이며, Package가 포함되지 않는다.) TRUE로 수행해도 상관 없다. ※ Package는 Package Body의 컴파일 Type이 중요할 뿐, INTERPRETED로 유지되더라도 속도 차이는 사실상 없다.

@?/rdbms/admin/dbmsupgnv.sql

 

 

SQL> begin

        dbmsncdb.setup_for_native_compile(&1);

    end;

    /

Enter value for 1: FALSE

 

[확인 작업]

Library와 Type을 제외한 오브젝트들이 NATIVE로 변경된 것을 알 수 있다.

(Library와 Type의 경우 도큐에 기재된 Expected behavior)

alter session set container=CDB$ROOT ;

set lin 250

col plsql_code_type for a20

select con_id, type, plsql_code_type, count(*) from cdb_plsql_object_settings

where plsql_code_type='INTERPRETED'

group by con_id, type, plsql_code_type

order by con_id ;

 

    CON_ID TYPE   PLSQL_CODE_TYPE      COUNT(*)

---------- ------------ -------------------- ----------

     1 LIBRARY  INTERPRETED        237

     1 TYPE  INTERPRETED       2571

     3 LIBRARY  INTERPRETED        237

    3 TYPE  INTERPRETED       2581

    4 LIBRARY  INTERPRETED        237

     4 TYPE  INTERPRETED       2581

 

[재기동]

alter session set container=CDB$ROOT ;

shutdown immediate ;

startup ;

alter pluggable database all open ;

※ Multitenant 환경이 아닌 경우에는 PDB OPEN 단계는 불필요하다.

[RECOMPILE]

alter system enable restricted session ;

@?/rdbms/admin/utlrp.sql

alter system disable restricted session ;


추천 게시글

[ORACLE] Data Pump가 느리거나 멈춘경우.

목록