MINI MINI MANI MO
Rem
Rem $Header: oraolap/admin/catnoaps.sql /main/9 2017/05/10 23:25:08 stanaya Exp $
Rem
Rem catnoaps.sql
Rem
Rem Copyright (c) 2001, 2017, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem catnoaps.sql - Deinstall APS (OLAP) RDBMS component
Rem
Rem DESCRIPTION
Rem
Rem
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: oraolap/admin/catnoaps.sql
Rem SQL_SHIPPED_FILE: olap/admin/catnoaps.sql
Rem SQL_PHASE: UTILITY
Rem SQL_STARTUP_MODE: NONE
Rem SQL_IGNORABLE_ERRORS: NONE
Rem END SQL_FILE_METADATA
Rem
Rem MODIFIED (MM/DD/YY)
Rem cchiappa 02/19/15 - Fix long identifiers
Rem zqiu 11/13/14 - lrg 13331942, rm cdb views
Rem cchiappa 04/14/14 - Add sqlsess{start,end} calls
Rem zqiu 08/13/10 - more printouts at error
Rem akociube 03/06/09 - Remove component info
Rem cchiappa 04/02/04 - Fix misspelling
Rem zqiu 01/13/04 - do something
Rem cdalessi 10/11/02 - Creation
@@?/rdbms/admin/sqlsessstart.sql
create or replace procedure aps_clean as
-- Note - aps_clean is only invoked if we've
-- already verified that there are no
-- user AWs, so blindly assuming SYS schema
-- should be OK.
CURSOR c1 IS SELECT a.awname FROM aw$ a;
awname varchar2(132); -- M_IDEN + SYS.
dropstmt varchar2(300);
begin
/* Drop AW tables, the trigger will do the rest */
for awname_rec in c1 loop
awname := 'SYS.AW$' || awname_rec.awname;
dropstmt := 'drop table ' || awname ;
dbms_output.put_line(dropstmt);
execute immediate dropstmt;
-- not all AWs will have a sequence on the AW table
BEGIN
awname := 'SYS.' || awname_rec.awname || '_S$';
dropstmt := 'drop sequence ' || awname ;
execute immediate dropstmt;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
end loop;
commit;
end;
/
-- anonymous block
DECLARE
tb_exist number;
olap_user number;
aw_left VARCHAR2(257); -- 2 * M_IDEN + .
msg_left VARCHAR2(500);
BEGIN
SELECT count(*) INTO tb_exist FROM aw$ WHERE awseq# >= 1000;
SELECT count(*) INTO olap_user FROM gv$aw_olap;
IF tb_exist > 0 OR olap_user > 0 THEN
IF tb_exist > 0 THEN
SELECT owner || '.' || aw_name
INTO aw_left FROM dba_aws
WHERE aw_number >= 1000 AND rownum = 1;
tb_exist := tb_exist - 1;
msg_left := aw_left || ' and ' || tb_exist ||
' other user created AWs exist';
ELSE
msg_left := 'Olap objects in use';
END IF;
RAISE_APPLICATION_ERROR(-20003,
msg_left || ', unable to deinstall OLAP');
END IF;
sys.dbms_registry.removing('APS');
BEGIN
execute immediate 'DROP VIEW CDB_AW_PROP';
execute immediate 'DROP VIEW DBA_AW_PROP';
execute immediate 'DROP VIEW USER_AW_PROP';
execute immediate 'DROP VIEW ALL_AW_PROP';
execute immediate 'DROP SYNONYM CDB_AW_PROP';
execute immediate 'DROP SYNONYM DBA_AW_PROP';
execute immediate 'DROP SYNONYM USER_AW_PROP';
execute immediate 'DROP SYNONYM ALL_AW_PROP';
execute immediate 'DROP VIEW CDB_AW_OBJ';
execute immediate 'DROP VIEW DBA_AW_OBJ';
execute immediate 'DROP VIEW USER_AW_OBJ';
execute immediate 'DROP VIEW ALL_AW_OBJ';
execute immediate 'DROP SYNONYM CDB_AW_OBJ';
execute immediate 'DROP SYNONYM DBA_AW_OBJ';
execute immediate 'DROP SYNONYM USER_AW_OBJ';
execute immediate 'DROP SYNONYM ALL_AW_OBJ';
execute immediate 'DROP VIEW all_aw_numbers';
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
aps_clean;
sys.dbms_registry.removed('APS');
END;
/
drop procedure aps_clean;
-- No longer show up in dba_registry
delete from registry$ where cid='APS' and status='99';
@?/rdbms/admin/sqlsessend.sql
OHA YOOOO