При полном экспорте-импорте часть грантов теряется, в результате чего появляется море инвалидов и неработоспособная для приложения БД. Вот один из вариантов это исправить
Код:
column xxx new_value oxxx noprint
select user xxx from dual;
set serverout on size 300000
spool manual1.lst
prompt rebuilding roles
exec stdio.put_line_buf(rtl.lock_hold(true))
exec after_install.grants(null);
exec stdio.put_line_buf(rtl.lock_hold(false))
prompt rebuilding views
exec stdio.put_line_buf('Open: '||rtl.open)
exec sviews.create_all_sviews;
exec short_views.create_all;
exec after_install.recreate_vw_crit('1');
exec rtl.close
spool off
exit
Код:
rem *********************************************************
rem Производит раздачу грантов на интерфейсные пакеты
rem (GRANT EXECUTE ON <интерфейсный пакет> TO <схема>_USER)
rem Запускается из-под SQL*Plus
rem *********************************************************
set feedback off
set heading off
set newpage 0
set pagesize 0
set echo off
set termout off
set verify off
set serveroutput on size 500000
set linesize 250
set arraysize 1
set trimspool on
set trimout on
column xxx new_value oxxx noprint
select user xxx from dual;
spool &oxxx..sql
select 'GRANT EXECUTE ON '||object_name||' TO &oxxx._USER;'
from user_objects
where object_type='PACKAGE' and object_name like 'Z$U$%';
spool off
set termout on
spool &oxxx..out
prompt Протокол раздачи прав на интерфейсные пакеты
select 'Started - '||TO_CHAR(SYSDATE,'DD/MM/YY (HH24:MI:SS)') from dual;
@&oxxx.
select 'Finished - '||TO_CHAR(SYSDATE,'DD/MM/YY (HH24:MI:SS)') from dual;
spool off
rem host del &oxxx..sql
set feedback on
set heading on
EXIT
Код:
rem *********************************************************
rem Перекомпиляция инвалидных объектов системы
rem (ALTER PACKAGE COMPILE BODY)
rem Запускается из-под SQL*Plus
rem *********************************************************
set feedback off
set heading off
set newpage 0
set pagesize 0
set echo off
set termout off
set verify off
set serveroutput on size 1000000
set linesize 250
set arraysize 1
set trimspool on
set trimout on
column xxx new_value oxxx noprint
select user xxx from dual;
spool &oxxx..sql
select 'prompt *** '||object_type||' '||object_name||chr(10)
||'ALTER '||DECODE(object_type,'PACKAGE BODY','PACKAGE',object_type)
||' '||object_name||DECODE(object_type,'PACKAGE BODY',' COMPILE BODY;','TRIGGER',' ENABLE;',' COMPILE;')
||chr(10)||'sho err '||object_type||' '||object_name
from user_objects
where status='INVALID'
and object_type in ('VIEW','PACKAGE','PACKAGE BODY','FUNCTION','PROCEDURE','TRIGGER');
spool off
set termout on
spool &oxxx..out
prompt Протокол компиляции пакетов
select 'Started compiling packages - '||TO_CHAR(SYSDATE,'DD/MM/YY (HH24:MI:SS)') from dual;
@&oxxx.
select 'Finished compiling packages - '||TO_CHAR(SYSDATE,'DD/MM/YY (HH24:MI:SS)') from dual;
spool off
host del &oxxx..sql
set feedback on
set heading on
--EXIT
Во вложении немного другой принцип, нацеленный на выдергивание прав из уже существующей БД.