Oracle DB: Компиляция объектов
Версия от 10:12, 26 июля 2022; Admin (обсуждение | вклад) (Новая страница: « Ссылки по теме: * [http://oraclenote.burdins.ru/notes/20-kak-perekompilirovat-obekty-bazy-dannyh-oracle-skript.html Как перекомпилиро...»)
Ссылки по теме:
Существует пять способов компиляции объектов:
- DBMS_DDL
- DBMS_UTILITY
- UTL_RECOMP
- UTLRP.SQL
- Ручная перекомпиляция
Объекты подлежащие перекомпиляции
- VIEW
- SYNONYM
- PUBLIC SYNONYM
- PROCEDURE
- FUNCTION
- PACKAGE
- PACKAGE BODY
- TRIGGER
- UNDEFINED (MATERIALIZED VIEW)
- JAVA CLASS
- TYPE
- TYPE BODY
Примеры:
ALTER <тип объекта> <наименование объекта> COMPILE [BODY]; begin dbms_ddl.alter_compile ('PROCEDURE','SCOTT','TEST'); end; -- компиляция всех объектов схемы begin dbms_utility.compile_schema('SCOTT'); end; -- перекомпиляция всех объектов базы, полезно после обновления begin; UTL_RECOMP.RECOMP_SERIAL (); end; -- скрипт перекомпиляции объектов со статусом INVALID sqlplus / as sysdba $ORACLE_HOME/rdbms/admin/UTLRP.SQL -- список объектов для перекомпиляции SELECT object_type, object_name, owner, status FROM all_objects WHERE status <> 'VALID' -- скрипт перекомпиляции BEGIN -- перекомпилирование всех невалидных объектов в схеме FOR CUR IN ( SELECT OBJECT_TYPE , OBJECT_NAME , OWNER , STATUS FROM ALL_OBJECTS WHERE STATUS <> 'VALID' ) LOOP BEGIN DBMS_DDL.ALTER_COMPILE ( CUR.OBJECT_TYPE, CUR.OWNER, CUR.OBJECT_NAME); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('Ошибка компиляции объекта: ' || CUR.OWNER || '.' || CUR.OBJECT_NAME); END; END LOOP; END;