페이지 이력
코드 블럭 | ||||
---|---|---|---|---|
| ||||
Rem
Rem $Header: rdbms/admin/catnools.sql /main/21 2012/12/11 23:22:49 risgupta Exp $
Rem
Rem catnools.sql
Rem
Rem Copyright (c) 2001, 2012, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem catnools.sql - <one-line expansion of the name>
Rem
Rem DESCRIPTION
Rem This script drops the OLS product and all of its LBACSYS
Rem objects from a database instance. All OLS policies will
Rem also be dropped but user tables will not have their OLS
Rem policy columns automatically dropped.
Rem
Rem NOTES
Rem Must be run as SYSDBA.
Rem
Rem MODIFIED (MM/DD/YY)
Rem risgupta 11/27/12 - Bug 14259254: remove OLS-OID status from prop$
Rem sanbhara 08/22/12 - Bug 14526500 - adding call to disable_ols.
Rem aramappa 02/19/12 - bug 13606907:remove ols_audit_trail
Rem risgupta 02/13/12 - Bug 13529466: No need to recreate sys.aud$
Rem risgupta 09/13/11 - Proj 5700 - Drop sys.OLS_AUDIT_TRAIL view
Rem mjgreave 05/10/10 - maintain delete_catalog_role privs. #9697811
Rem aramappa 04/28/10 - bug 9554753: use dbms_assert
Rem srtata 02/17/09 - remove logon trigger
Rem sarchak 04/27/08 - Bug 6925041,Creating aud$ in correct tablespace.
Rem nkgopal 01/22/08 - SYS.I_AUD1 index is dropped in this release
Rem cchui 11/24/03 - Bug 3278427.
Rem srtata 04/25/02 - remove startup trigger.
Rem shwong 10/10/01 - remove OLS from registry
Rem srtata 05/02/01 - Add error handling.
Rem gmurphy 04/13/01 - document run as SYSDBA
Rem gmurphy 04/12/01 - drop after_drop trigger first
Rem gmurphy 04/06/01 - add index to aud$ table
Rem gmurphy 04/03/01 - drop synonyms
Rem gmurphy 03/02/01 - cleanup
Rem kraghura 02/06/01 - Echo Off
Rem gmurphy 02/02/01 - Merged gmurphy_ols_2rdbms
Rem gmurphy 01/30/01 - complete rewrite of pl/sql script
Rem gmurphy 01/29/01 - move cleanup from catlbacs.sql
Rem gmurphy 01/15/01 - rename droplbacsys.sql to catnools.sql
Rem rsripada 11/13/00 - add commit at the end
Rem rsripada 10/16/00 - Created
Rem
WHENEVER SQLERROR EXIT;
BEGIN
-- Check the user who is executing this script.
if sys_context('userenv','session_user') != 'SYS' then
RAISE_APPLICATION_ERROR(-20000,
'Execute the script as user SYS as SYSDBA');
end if;
END;
/
DECLARE
l_ols_config_status VARCHAR2(4000);
BEGIN
-- disable OLS before uninstalling OLS
select value$ into l_ols_config_status from lbacsys.ols$props where NAME = 'OLS_CONFIGURED_FLAG';
IF (l_ols_config_status = '1') THEN
LBACSYS.OLS_ENFORCEMENT.disable_ols;
END IF;
END;
/
WHENEVER SQLERROR CONTINUE;
-- remove OLS via registry
EXECUTE DBMS_REGISTRY.REMOVING('OLS');
-- drop OLS database triggers.
DROP TRIGGER LBACSYS.lbac$after_drop;
DROP TRIGGER LBACSYS.lbac$after_create;
DROP TRIGGER LBACSYS.lbac$before_alter;
-- cleanup OLS by removing any roles, contexts,or synonyms
-- owned by LBACSYS.
DECLARE
CURSOR lbacroles IS
SELECT granted_role
FROM dba_role_privs
WHERE grantee = 'LBACSYS'
AND granted_role like '%_DBA'
AND admin_option = 'YES';
CURSOR lbaccontexts IS
SELECT namespace
FROM dba_context
WHERE schema = 'LBACSYS';
CURSOR lbacsynonyms IS
SELECT synonym_name
FROM dba_synonyms
WHERE table_owner = 'LBACSYS';
rolename VARCHAR2(30);
BEGIN
-- drop roles
FOR r IN lbacroles LOOP
dbms_output.put_line('Dropping role ' || r.granted_role );
BEGIN
EXECUTE IMMEDIATE 'DROP ROLE ' ||
dbms_assert.enquote_name(r.granted_role,FALSE);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Unable to drop role ' || r.granted_role);
END;
END LOOP;
-- drop contexts
FOR c IN lbaccontexts LOOP
dbms_output.put_line('Dropping context ' || c.namespace);
BEGIN
EXECUTE IMMEDIATE 'DROP CONTEXT ' ||
dbms_assert.enquote_name(c.namespace,FALSE);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Unable to drop context ' || c.namespace);
END;
END LOOP;
-- drop synonyms
FOR s IN lbacsynonyms LOOP
dbms_output.put_line('Dropping public synonym ' || s.synonym_name);
BEGIN
EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM ' ||
dbms_assert.enquote_name(s.synonym_name,FALSE);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Unable to drop synonym ' || s.synonym_name);
END;
END LOOP;
END;
/
-- Bug 14259254: remove OLS-OID status from props$
EXECUTE LBACSYS.LBAC_CACHE.UPDATE_PROPS_TABLE(0, TRUE);
-- now remove lbacsys account and it's content
-- drop user cascade will also remove the OLS entry from the registry
DROP USER LBACSYS CASCADE;
DELETE FROM exppkgact$ WHERE PACKAGE = 'LBAC_UTL';
COMMIT;
-- 19c 수동 작업 내용 추가
@?/rdbms/admin/utlrp.sql
EXEC LBACSYS.OLS_ENFORCEMENT.DISABLE_OLS;
drop package LBAC_EXP;
drop package OLS_ENFORCEMENT; |