Hey Readers, We had a request to downgrade a oracle database from 19c to 11g. It’s very rare when you have a request to downgrade a system back to square zero. Reason usually are dependent upon functionality of the application. In my case, application had a separate tool which is used once in a quarter and found to be not working post upgrade. When vendor of the application confirmed that they can’t go ahead, we had to downgrade the database from 19c to 11g. And we encountered an Issue after downgrade was completed where one of the sys object was invalid. DBMS_AUDIT_MGMT become invalid Post Downgrade from 19c to 11g.
All sys objects where valid except for DBMS_AUDIT_MGMT package body which was invalid. When I tried to manually compile it, it gave me error – 2287/20 PL/SQL: ORA-00947: not enough values
SQL> alter package DBMS_AUDIT_MGMT compile body;
Warning: Package Body altered with compilation errors.
SQL> show error
Errors for PACKAGE BODY DBMS_AUDIT_MGMT:
LINE/COL ERROR
-------- -----------------------------------------------------------------
2287/5 PL/SQL: SQL Statement ignored
2287/20 PL/SQL: ORA-00947: not enough values
SQL>
so I have tried to look at the ddl of the package body to understand what is there on line 2287 But when checked I came to know that it’s a wrapped text.
Table of Contents
PL/SQL: ORA-00947: not enough values
PL/SQL: ORA-00947: not enough values – This error gave me a rough idea that package body is trying to do a insert into a table and table has more column then it is passing to it. This was a guess.
So I started exploring the dependent objects and try to find the list of tables or views which are been used in the package body. Meanwhile I have raised an SR also with oracle to if I can get a solution.
SQL> select NAME,REFERENCED_OWNER,REFERENCED_NAME,REFERENCED_TYPE from dba_dependencies where name='DBMS_AUDIT_MGMT' and type='PACKAGE BODY' and REFERENCED_TYPE in ('VIEW','TABLE');
NAME REFERENCED_OWNER REFERENCED_NAME REFERENCED_TYPE
---------------- ---------------- ------------------- ------------------
DBMS_AUDIT_MGMT SYS ALL_TAB_COLS VIEW
DBMS_AUDIT_MGMT SYS DBA_TABLES VIEW
DBMS_AUDIT_MGMT SYS DBA_TABLESPACES VIEW
DBMS_AUDIT_MGMT SYS DBA_TAB_PARTITIONS VIEW
DBMS_AUDIT_MGMT SYS OBJ$ TABLE
DBMS_AUDIT_MGMT SYS DAM_CLEANUP_JOBS$ TABLE
DBMS_AUDIT_MGMT SYS DAM_CONFIG_PARAM$ TABLE
DBMS_AUDIT_MGMT SYS DAM_LAST_ARCH_TS$ TABLE
DBMS_AUDIT_MGMT SYS DBA_FREE_SPACE VIEW
DBMS_AUDIT_MGMT SYS DBA_USERS VIEW
DBMS_AUDIT_MGMT SYS DUAL TABLE
DBMS_AUDIT_MGMT SYS V$VERSION VIEW
DBMS_AUDIT_MGMT SYS GV$INSTANCE VIEW
DBMS_AUDIT_MGMT SYS V$INSTANCE VIEW
DBMS_AUDIT_MGMT SYS V$OPTION VIEW
15 rows selected.
Now I had list of all the dependent objects which were dependent on object DBMS_AUDIT_MGMT package body. Now I had to do comparison with Oracle existing 11g and current downgraded 11g to identify which had deviation from the object. Luckily there was only one object in the list which had different object structure than other.
Current downgraded 11g Version – Table structure of DAM_LAST_ARCH_TS –
SQL> desc SYS.DAM_LAST_ARCH_TS$
Name Null? Type
------------------------ -------- ----------------------------
AUDIT_TRAIL_TYPE# NOT NULL NUMBER
RAC_INSTANCE# NOT NULL NUMBER
LAST_ARCHIVE_TIMESTAMP NOT NULL TIMESTAMP(6)
DATABASE_ID NOT NULL NUMBER
CONTAINER_GUID NOT NULL VARCHAR2(33)
SQL>
Existing 11g version – Table Structure of DAM_LAST_ARCH_TS –
SQL> desc SYS.DAM_LAST_ARCH_TS$
Name Null? Type
------------------------ -------- ----------------------------
AUDIT_TRAIL_TYPE# NOT NULL NUMBER
RAC_INSTANCE# NOT NULL NUMBER
LAST_ARCHIVE_TIMESTAMP NOT NULL TIMESTAMP(6)
SQL>
But still this doesn’t give me confirmation that this is causing it. Because I had AUD$ table also which had extra columns though it was not there in dependent list but still…
SR engineer gave us a Solution of Re-creation of the Package –
Meanwhile, we got a update from SR to re-create the object using following commands –
SQL> @?/rdbms/admin/catamgt.sql
SQL> @?/rdbms/admin/dbmsamgt.sql
SQL> @?/rdbms/admin/prvtamgt.plb
Now I thought this is it, Once everything is recreated problem will solve.
00:52:59 SQL> @?/rdbms/admin/catamgt.sql
00:52:59 SQL> Rem
00:52:59 SQL> Rem $Header: rdbms/admin/catamgt.sql /st_rdbms_11.2.0/4 2013/01/31 22:39:35 nkgopal Exp $
00:52:59 SQL> Rem
00:52:59 SQL> Rem cataudmgmt.sql
00:52:59 SQL> Rem
00:52:59 SQL> Rem Copyright (c) 2007, 2013, Oracle and/or its affiliates.
00:52:59 SQL> Rem All rights reserved.
00:52:59 SQL> Rem
00:52:59 SQL> Rem NAME
00:52:59 SQL> Rem catamgt.sql - <one-line expansion of the name>
00:52:59 SQL> Rem
00:52:59 SQL> Rem DESCRIPTION
00:52:59 SQL> Rem This will install the DBMS_AUDIT_MGMT package
00:52:59 SQL> Rem and the views exposed by the package.
00:52:59 SQL> Rem
00:52:59 SQL> Rem NOTES
00:52:59 SQL> Rem Must be run as SYSDBA
00:52:59 SQL> Rem
00:52:59 SQL> Rem MODIFIED (MM/DD/YY)
00:52:59 SQL> Rem nkgopal 01/28/13 - Bug 16182855: AUD$ in SYS or SYSTEM schema
00:52:59 SQL> Rem nkgopal 06/28/12 - Bug 12853348: Network import failure for FGA_LOG$
00:52:59 SQL> Rem gclaborn 02/17/11 - Fix impcalloutreg$ registrations
00:52:59 SQL> Rem nkgopal 01/28/11 - Bug 10349909: Register DAM_CONFIG_PARAM$,
00:52:59 SQL> Rem DAM_CLEANUP_JOBS$ and DAM_CLEANUP_EVENTS$ with
00:52:59 SQL> Rem Datapump for export
00:52:59 SQL> Rem sarchak 04/03/09 - Bug 8406799,retaining existing configuration in
00:52:59 SQL> Rem DAM_CONFIG_PARAM$
00:52:59 SQL> Rem nkgopal 03/31/09 - Bug 8392745: Add FILE DELETE BATCH SIZE
00:52:59 SQL> Rem nkgopal 10/22/08 - Bug 7427306: Add default Max limits to Files
00:52:59 SQL> Rem nkgopal 04/08/08 - Bug 6954407: DBMS_* views to DBA_* views
00:52:59 SQL> Rem Create public synonyms to all views
00:52:59 SQL> Rem nkgopal 03/13/08 - Bug 6810355: Add DB DELETE Batch size
00:52:59 SQL> Rem nkgopal 01/11/08 -
00:52:59 > Rem rahanum 11/02/07 - Merge dbms_audit_mgmt
00:52:59 SQL> Rem nkgopal 06/27/07 - Add comments to views
00:52:59 SQL> Rem ssonawan 06/26/07 - update DBMS_AUDIT_MGMT_CONFIG_PARAMS view def
00:52:59 SQL> Rem nkgopal 06/20/07 - Load DBMS_AUDIT_MGMT package
00:52:59 SQL> Rem nkgopal 06/20/07 - Created
00:52:59 SQL> Rem
00:52:59 SQL>
00:52:59 SQL> -- Create the internal tables required
00:52:59 SQL> CREATE TABLE DAM_PARAM_TAB$
00:52:59 2 (
00:52:59 3 PARAMETER# NUMBER PRIMARY KEY,
00:52:59 4 PARAMETER_NAME VARCHAR2(1024) NOT NULL
00:52:59 5 )
00:52:59 6 /
Table created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on table DAM_PARAM_TAB$ is
00:52:59 2 'Audit Trail Properties ID to Name mapping'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_PARAM_TAB$.PARAMETER# is
00:52:59 2 'Numerical ID of the Audit Trail Property that can be configured'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.01
00:52:59 SQL> comment on column DAM_PARAM_TAB$.PARAMETER_NAME is
00:52:59 2 'Name of the Audit Trail Property that can be configured'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> Rem Audit Trail Type will be identified using numerical code as given below
00:52:59 SQL> Rem 1 - 'STANDARD DB AUDIT TRAIL'
00:52:59 SQL> Rem 2 - 'FGA DB AUDIT TRAIL'
00:52:59 SQL> Rem 3 - 'STANDARD AND FGA DB AUDIT TRAILS'
00:52:59 SQL> Rem 4 - 'OS AUDIT TRAIL'
00:52:59 SQL> Rem 8 - 'XML AUDIT TRAIL'
00:52:59 SQL> Rem 12 - 'OS AND XML AUDIT TRAILS'
00:52:59 SQL> Rem 15 - 'ALL AUDIT TRAILS'
00:52:59 SQL> Rem
00:52:59 SQL> Rem Audit Trail Property units
00:52:59 SQL> Rem OS_FILE_MAX_SIZE is measured in KB units
00:52:59 SQL> Rem OS_FILE_MAX_AGE is measured in Days
00:52:59 SQL> Rem CLEAN_UP_INTERVAL is measured in Hours
00:52:59 SQL> CREATE TABLE DAM_CONFIG_PARAM$
00:52:59 2 (
00:52:59 3 PARAM_ID NUMBER NOT NULL,
00:52:59 4 AUDIT_TRAIL_TYPE# NUMBER NOT NULL,
00:52:59 5 NUMBER_VALUE NUMBER,
00:52:59 6 STRING_VALUE VARCHAR2(4000),
00:52:59 7 CONSTRAINT DAM_CONFIG_PARAM_FK1
00:52:59 8 FOREIGN KEY (PARAM_ID) REFERENCES DAM_PARAM_TAB$(PARAMETER#),
00:52:59 9 CONSTRAINT DAM_CONFIG_PARAM_UK1 UNIQUE
00:52:59 10 (
00:52:59 11 PARAM_ID,
00:52:59 12 AUDIT_TRAIL_TYPE#
00:52:59 13 )
00:52:59 14 )
00:52:59 15 /
Table created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on table DAM_CONFIG_PARAM$ is
00:52:59 2 'Audit Trail Properties configured for a given Audit Trail Type'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CONFIG_PARAM$.PARAM_ID is
00:52:59 2 'Numerical ID of the Audit Trail Property that can be configured'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CONFIG_PARAM$.AUDIT_TRAIL_TYPE# is
00:52:59 2 'The Audit Trail Type for which property is configured'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CONFIG_PARAM$.NUMBER_VALUE is
00:52:59 2 'The number value for the Audit Trail Property'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CONFIG_PARAM$.STRING_VALUE is
00:52:59 2 'The string value for the Audit Trail Property'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.01
00:52:59 SQL> Rem Last Archive Timestamp: External archival systems are provided a facility
00:52:59 SQL> Rem to indicate which audit records are securely archived. This can be set via
00:52:59 SQL> Rem DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP. This timestamp would typically
00:52:59 SQL> Rem be the timestamp of the last audit record archived.
00:52:59 SQL> Rem
00:52:59 SQL> Rem Last Archive Timestamp is given in UTC for DB audit trail types
00:52:59 SQL> Rem and is given in Local Timezone for OS/XML audit trail types
00:52:59 SQL> CREATE TABLE DAM_LAST_ARCH_TS$
00:52:59 2 (
00:52:59 3 AUDIT_TRAIL_TYPE# NUMBER NOT NULL,
00:52:59 4 RAC_INSTANCE# NUMBER NOT NULL,
00:52:59 5 LAST_ARCHIVE_TIMESTAMP TIMESTAMP NOT NULL,
00:52:59 6 CONSTRAINT DAM_LAST_ARCH_TS_UK1 UNIQUE
00:52:59 7 (
00:52:59 8 AUDIT_TRAIL_TYPE#,
00:52:59 9 RAC_INSTANCE#
00:52:59 10 )
00:52:59 11 )
00:52:59 12 /
Table created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on table DAM_LAST_ARCH_TS$ is
00:52:59 2 'Last Archive Timestamps set for the Audit Trail Types'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_LAST_ARCH_TS$.AUDIT_TRAIL_TYPE# is
00:52:59 2 'The Audit Trail Type for which Last Archive Timestamp is set'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_LAST_ARCH_TS$.RAC_INSTANCE# is
00:52:59 2 'The RAC instance number for which Last Archive Timestamp is set'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_LAST_ARCH_TS$.LAST_ARCHIVE_TIMESTAMP is
00:52:59 2 'The Last Archive Timestamp for the Audit Trail Type'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> CREATE TABLE DAM_CLEANUP_JOBS$
00:52:59 2 (
00:52:59 3 JOB_NAME VARCHAR2(100) PRIMARY KEY,
00:52:59 4 JOB_STATUS NUMBER,
00:52:59 5 AUDIT_TRAIL_TYPE# NUMBER NOT NULL,
00:52:59 6 JOB_INTERVAL NUMBER NOT NULL,
00:52:59 7 JOB_FREQUENCY VARCHAR2(100)
00:52:59 8 )
00:52:59 9 /
Table created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on table DAM_CLEANUP_JOBS$ is
00:52:59 2 'Purge Jobs configured for the Audit Trail Types'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CLEANUP_JOBS$.JOB_NAME is
00:52:59 2 'Name to identify the Purge Job'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CLEANUP_JOBS$.JOB_STATUS is
00:52:59 2 'Status of the Purge Job'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CLEANUP_JOBS$.AUDIT_TRAIL_TYPE# is
00:52:59 2 'The Audit Trail Type for which Last Archive Timestamp is set'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CLEANUP_JOBS$.JOB_INTERVAL is
00:52:59 2 'Time between the Purge Job runs'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CLEANUP_JOBS$.JOB_FREQUENCY is
00:52:59 2 'The repeat interval of the Purge Job'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> CREATE TABLE DAM_CLEANUP_EVENTS$
00:52:59 2 (
00:52:59 3 SERIAL# NUMBER PRIMARY KEY,
00:52:59 4 AUDIT_TRAIL_TYPE# NUMBER NOT NULL,
00:52:59 5 RAC_INSTANCE# NUMBER NOT NULL,
00:52:59 6 CLEANUP_TIME TIMESTAMP NOT NULL,
00:52:59 7 DELETE_COUNT NUMBER,
00:52:59 8 WAS_FORCED NUMBER
00:52:59 9 )
00:52:59 10 /
Table created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on table DAM_CLEANUP_EVENTS$ is
00:52:59 2 'The history of Audit Trail cleanup events'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CLEANUP_EVENTS$.SERIAL# is
00:52:59 2 'A serial number associated with the cleanup event'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.01
00:52:59 SQL> comment on column DAM_CLEANUP_EVENTS$.AUDIT_TRAIL_TYPE# is
00:52:59 2 'The Audit Trail Type which was cleaned during the event'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CLEANUP_EVENTS$.RAC_INSTANCE# is
00:52:59 2 'The RAC instance number which was cleaned during the event'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CLEANUP_EVENTS$.CLEANUP_TIME is
00:52:59 2 'The timestamp when the cleanup event completed'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CLEANUP_EVENTS$.DELETE_COUNT is
00:52:59 2 'The number of audit records/files that was cleaned up during the event'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DAM_CLEANUP_EVENTS$.WAS_FORCED is
00:52:59 2 'Was the cleanup done without considering Last Archive Timestamp'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> CREATE SEQUENCE DAM_CLEANUP_SEQ$
00:52:59 2 START WITH 1
00:52:59 3 INCREMENT BY 1
00:52:59 4 NOCYCLE
00:52:59 5 /
Sequence created.
Elapsed: 00:00:00.00
00:52:59 SQL> COMMIT
00:52:59 2 /
Commit complete.
Elapsed: 00:00:00.00
00:52:59 SQL>
00:52:59 SQL> Rem The views for external use
00:52:59 SQL>
00:52:59 SQL> Rem Configuration parameters
00:52:59 SQL> CREATE OR REPLACE VIEW DBA_AUDIT_MGMT_CONFIG_PARAMS
00:52:59 2 (
00:52:59 3 PARAMETER_NAME,
00:52:59 4 PARAMETER_VALUE,
00:52:59 5 AUDIT_TRAIL
00:52:59 6 )
00:52:59 7 AS
00:52:59 8 SELECT PARAMETER_NAME,
00:52:59 9 (CASE
00:52:59 10 WHEN cfg.PARAM_ID = 22 THEN STRING_VALUE
00:52:59 11 ELSE
00:52:59 12 CASE
00:52:59 13 WHEN NUMBER_VALUE = 0 THEN 'NOT SET'
00:52:59 14 ELSE TO_CHAR(NUMBER_VALUE)
00:52:59 15 END
00:52:59 16 END),
00:52:59 17 decode(cfg.AUDIT_TRAIL_TYPE#,
00:52:59 18 1, 'STANDARD AUDIT TRAIL',
00:52:59 19 2, 'FGA AUDIT TRAIL',
00:52:59 20 3, 'STANDARD AND FGA AUDIT TRAIL',
00:52:59 21 4, 'OS AUDIT TRAIL',
00:52:59 22 8, 'XML AUDIT TRAIL',
00:52:59 23 12, 'OS AND XML AUDIT TRAIL',
00:52:59 24 15, 'ALL AUDIT TRAILS',
00:52:59 25 'UNKNOWN AUDIT TRAIL')
00:52:59 26 FROM DAM_CONFIG_PARAM$ cfg, DAM_PARAM_TAB$ prm
00:52:59 27 WHERE prm.PARAMETER# = cfg.PARAM_ID
00:52:59 28 /
View created.
Elapsed: 00:00:00.01
00:52:59 SQL> comment on table DBA_AUDIT_MGMT_CONFIG_PARAMS is
00:52:59 2 'The view displays the currently configured audit trail properties that are defined by the DBMS_AUDIT_MGMT PL/SQL package'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DBA_AUDIT_MGMT_CONFIG_PARAMS.PARAMETER_NAME is
00:52:59 2 'Name of the Property'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.00
00:52:59 SQL> comment on column DBA_AUDIT_MGMT_CONFIG_PARAMS.PARAMETER_VALUE is
00:52:59 2 'Value of the Property'
00:52:59 3 /
Comment created.
Elapsed: 00:00:00.01
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_CONFIG_PARAMS.AUDIT_TRAIL is
00:53:00 2 'Audit Trail(s) for which the property is configured'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> create or replace public synonym DBA_AUDIT_MGMT_CONFIG_PARAMS for
00:53:00 2 DBA_AUDIT_MGMT_CONFIG_PARAMS
00:53:00 3 /
Synonym created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> CREATE OR REPLACE VIEW DBA_AUDIT_MGMT_LAST_ARCH_TS
00:53:00 2 (
00:53:00 3 AUDIT_TRAIL,
00:53:00 4 RAC_INSTANCE,
00:53:00 5 LAST_ARCHIVE_TS
00:53:00 6 )
00:53:00 7 AS
00:53:00 8 SELECT decode(AUDIT_TRAIL_TYPE#,
00:53:00 9 1, 'STANDARD AUDIT TRAIL',
00:53:00 10 2, 'FGA AUDIT TRAIL',
00:53:00 11 4, 'OS AUDIT TRAIL',
00:53:00 12 8, 'XML AUDIT TRAIL',
00:53:00 13 'UNKNOWN AUDIT TRAIL'),
00:53:00 14 RAC_INSTANCE#,
00:53:00 15 decode(AUDIT_TRAIL_TYPE#,
00:53:00 16 1, FROM_TZ(LAST_ARCHIVE_TIMESTAMP, '0:00'),
00:53:00 17 2, FROM_TZ(LAST_ARCHIVE_TIMESTAMP, '0:00'),
00:53:00 18 4, FROM_TZ(LAST_ARCHIVE_TIMESTAMP, TZ_OFFSET(sessiontimezone)),
00:53:00 19 8, FROM_TZ(LAST_ARCHIVE_TIMESTAMP, TZ_OFFSET(sessiontimezone)),
00:53:00 20 LAST_ARCHIVE_TIMESTAMP)
00:53:00 21 FROM DAM_LAST_ARCH_TS$
00:53:00 22 /
View created.
Elapsed: 00:00:00.01
00:53:00 SQL> comment on table DBA_AUDIT_MGMT_LAST_ARCH_TS is
00:53:00 2 'The Last Archive Timestamps set for the Audit Trail Clean up'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_LAST_ARCH_TS.AUDIT_TRAIL is
00:53:00 2 'The Audit Trail for which the Last Archive Timestamp applies'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_LAST_ARCH_TS.RAC_INSTANCE is
00:53:00 2 'The RAC Instance Number for which the Last Archive Timestamp applies. Zero implies ''Not Applicable'''
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_LAST_ARCH_TS.LAST_ARCHIVE_TS is
00:53:00 2 'The Timestamp of the last audit record or audit file that has been archived'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> create or replace public synonym DBA_AUDIT_MGMT_LAST_ARCH_TS for
00:53:00 2 DBA_AUDIT_MGMT_LAST_ARCH_TS
00:53:00 3 /
Synonym created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> CREATE OR REPLACE VIEW DBA_AUDIT_MGMT_CLEANUP_JOBS
00:53:00 2 (
00:53:00 3 JOB_NAME,
00:53:00 4 JOB_STATUS,
00:53:00 5 AUDIT_TRAIL,
00:53:00 6 JOB_FREQUENCY
00:53:00 7 )
00:53:00 8 AS
00:53:00 9 SELECT JOB_NAME,
00:53:00 10 decode(JOB_STATUS,
00:53:00 11 0, 'DISABLED',
00:53:00 12 1, 'ENABLED',
00:53:00 13 'UNKNOWN'),
00:53:00 14 decode(AUDIT_TRAIL_TYPE#,
00:53:00 15 1, 'STANDARD AUDIT TRAIL',
00:53:00 16 2, 'FGA AUDIT TRAIL',
00:53:00 17 3, 'STANDARD AND FGA AUDIT TRAIL',
00:53:00 18 4, 'OS AUDIT TRAIL',
00:53:00 19 8, 'XML AUDIT TRAIL',
00:53:00 20 12, 'OS AND XML AUDIT TRAIL',
00:53:00 21 15, 'ALL AUDIT TRAILS',
00:53:00 22 'UNKNOWN AUDIT TRAIL'),
00:53:00 23 JOB_FREQUENCY
00:53:00 24 FROM DAM_CLEANUP_JOBS$
00:53:00 25 /
View created.
Elapsed: 00:00:00.01
00:53:00 SQL> comment on table DBA_AUDIT_MGMT_CLEANUP_JOBS is
00:53:00 2 'The view displays the currently configured audit trail purge jobs'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_CLEANUP_JOBS.JOB_NAME is
00:53:00 2 'The name of the Audit Trail Purge Job'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_CLEANUP_JOBS.JOB_STATUS is
00:53:00 2 'The current status of the Audit Trail Purge Job'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.01
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_CLEANUP_JOBS.AUDIT_TRAIL is
00:53:00 2 'The Audit Trail for which the Audit Trail Purge Job is configured'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_CLEANUP_JOBS.JOB_FREQUENCY is
00:53:00 2 'The frequency at which the Audit Trail Purge Job runs'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> create or replace public synonym DBA_AUDIT_MGMT_CLEANUP_JOBS for
00:53:00 2 DBA_AUDIT_MGMT_CLEANUP_JOBS
00:53:00 3 /
Synonym created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> CREATE OR REPLACE VIEW DBA_AUDIT_MGMT_CLEAN_EVENTS
00:53:00 2 (
00:53:00 3 AUDIT_TRAIL,
00:53:00 4 RAC_INSTANCE,
00:53:00 5 CLEANUP_TIME,
00:53:00 6 DELETE_COUNT,
00:53:00 7 WAS_FORCED
00:53:00 8 )
00:53:00 9 AS
00:53:00 10 SELECT decode(AUDIT_TRAIL_TYPE#,
00:53:00 11 1, 'STANDARD AUDIT TRAIL',
00:53:00 12 2, 'FGA AUDIT TRAIL',
00:53:00 13 3, 'STANDARD AND FGA AUDIT TRAIL',
00:53:00 14 4, 'OS AUDIT TRAIL',
00:53:00 15 8, 'XML AUDIT TRAIL',
00:53:00 16 12, 'OS AND XML AUDIT TRAIL',
00:53:00 17 15, 'ALL AUDIT TRAILS',
00:53:00 18 'UNKNOWN AUDIT TRAIL'),
00:53:00 19 RAC_INSTANCE#,
00:53:00 20 FROM_TZ(CLEANUP_TIME, '0:00'),
00:53:00 21 DELETE_COUNT,
00:53:00 22 decode(WAS_FORCED,
00:53:00 23 0, 'NO',
00:53:00 24 1, 'YES',
00:53:00 25 null)
00:53:00 26 FROM DAM_CLEANUP_EVENTS$
00:53:00 27 ORDER BY SERIAL#
00:53:00 28 /
View created.
Elapsed: 00:00:00.01
00:53:00 SQL> comment on table DBA_AUDIT_MGMT_CLEAN_EVENTS is
00:53:00 2 'The history of cleanup events'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_CLEAN_EVENTS.AUDIT_TRAIL is
00:53:00 2 'The Audit Trail that was cleaned at the time of the event'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_CLEAN_EVENTS.RAC_INSTANCE is
00:53:00 2 'The Instance Number indiccating the RAC Instance that was cleaned up at the time of the event. Zero implies ''Not Applicable'''
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.01
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_CLEAN_EVENTS.CLEANUP_TIME is
00:53:00 2 'The Timestamp in GMT when the cleanup event completed'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_CLEAN_EVENTS.DELETE_COUNT is
00:53:00 2 'The number of audit records or audit files that were deleted at the time of the event'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> comment on column DBA_AUDIT_MGMT_CLEAN_EVENTS.WAS_FORCED is
00:53:00 2 'Indicates whether or not a Forced Cleanup occured. Forced Cleanup bypasses the Last Archive Timestamp set'
00:53:00 3 /
Comment created.
Elapsed: 00:00:00.00
00:53:00 SQL> create or replace public synonym DBA_AUDIT_MGMT_CLEAN_EVENTS for
00:53:00 2 DBA_AUDIT_MGMT_CLEAN_EVENTS
00:53:00 3 /
Synonym created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> -- INSERT Properties supported
00:53:00 SQL> -- These IDs map to the constants defined in DBMS_AUDIT_MGMT package
00:53:00 SQL> -- Truncate the tables before INSERT
00:53:00 SQL>
00:53:00 SQL> CREATE OR REPLACE PROCEDURE INSERT_INTO_DAMPARAMTAB$
00:53:00 2 (t_parameter IN PLS_INTEGER,
00:53:00 3 t_parameter_name IN VARCHAR2
00:53:00 4 )
00:53:00 5 IS
00:53:00 6 m_sql_stmt VARCHAR2(2000);
00:53:00 7 BEGIN
00:53:00 8 m_sql_stmt := 'insert into sys.dam_param_tab$ '||
00:53:00 9 'values(:1,:2)';
00:53:00 10 EXECUTE IMMEDIATE m_sql_stmt using t_parameter,t_parameter_name;
00:53:00 11 EXCEPTION
00:53:00 12 WHEN OTHERS THEN
00:53:00 13 IF SQLCODE IN ( -00001) THEN --ignore unique constraint violation
00:53:00 14 -- Parameter name changed from CLEANUP TRACE LEVEL to
00:53:00 15 -- AUDIT MANAGEMENT TRACE LEVEL from 11.1.0.7 to 11.2
00:53:00 16 IF ( t_parameter = 24 ) THEN
00:53:00 17 m_sql_stmt := 'update dam_param_tab$ set '||
00:53:00 18 'parameter_name=:1 where '||
00:53:00 19 'parameter#=24';
00:53:00 20 EXECUTE IMMEDIATE m_sql_stmt using t_parameter_name;
00:53:00 21 END IF;
00:53:00 22 DBMS_OUTPUT.PUT_LINE('Configuration already exists for '||t_parameter_name);
00:53:00 23 ELSE RAISE;
00:53:00 24 END IF;
00:53:00 25 END;
00:53:00 26 /
Procedure created.
Elapsed: 00:00:00.01
00:53:00 SQL>
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMPARAMTAB$ (16, 'AUDIT FILE MAX SIZE') ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMPARAMTAB$ (17, 'AUDIT FILE MAX AGE') ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMPARAMTAB$ (21, 'DEFAULT CLEAN UP INTERVAL') ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMPARAMTAB$ (22, 'DB AUDIT TABLESPACE') ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMPARAMTAB$ (23, 'DB AUDIT CLEAN BATCH SIZE') ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMPARAMTAB$ (24, 'AUDIT MANAGEMENT TRACE LEVEL') ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> -- Parameter 25 is reserved for audit table movement flag.
00:53:00 SQL> -- And must not be inserted in DAM_PARAM_TAB$
00:53:00 SQL>
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMPARAMTAB$ (26, 'OS FILE CLEAN BATCH SIZE') ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> CREATE OR REPLACE PROCEDURE INSERT_INTO_DAMCONFIGPARAMS$
00:53:00 2 (t_param_id IN PLS_INTEGER,
00:53:00 3 t_audit_trail_type IN PLS_INTEGER,
00:53:00 4 t_number_value IN PLS_INTEGER ,
00:53:00 5 t_string_value IN VARCHAR2
00:53:00 6 )
00:53:00 7 IS
00:53:00 8 m_sql_stmt VARCHAR2(2000);
00:53:00 9 BEGIN
00:53:00 10 IF ( t_number_value is NULL ) THEN
00:53:00 11 m_sql_stmt := 'insert into sys.dam_config_param$ ' ||
00:53:00 12 'values(:1,:2,NULL,:3)';
00:53:00 13 EXECUTE IMMEDIATE m_sql_stmt using t_param_id,t_audit_trail_type,
00:53:00 14 t_string_value;
00:53:00 15 ELSE
00:53:00 16 m_sql_stmt := 'insert into sys.dam_config_param$ ' ||
00:53:00 17 'values(:1,:2,:3,:4)';
00:53:00 18 EXECUTE IMMEDIATE m_sql_stmt using t_param_id,t_audit_trail_type,
00:53:00 19 t_number_value,t_string_value;
00:53:00 20 END IF;
00:53:00 21 EXCEPTION
00:53:00 22 WHEN OTHERS THEN
00:53:00 23 IF SQLCODE IN ( -00001) THEN --ignore unique constraint violation
00:53:00 24 DBMS_OUTPUT.PUT_LINE('Configuration already exists for param_id : ' ||
00:53:00 25 t_param_id);
00:53:00 26 ELSE RAISE;
00:53:00 27 END IF;
00:53:00 28 END;
00:53:00 29 /
Procedure created.
Elapsed: 00:00:00.02
00:53:00 SQL>
00:53:00 SQL> --(DB AUDIT TABLESPACE , AUD$, <NUMBER_VALUE> ,<STRING_VALUE> )
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMCONFIGPARAMS$(22, 1, NULL, 'SYSAUX') ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> --(DB AUDIT TABLESPACE , FGA_LOG$ , <NUMBER_VALUE> ,<STRING_VALUE> )
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMCONFIGPARAMS$(22 , 2, NULL, 'SYSAUX') ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> -- Default OS/XML File Max Size and Age
00:53:00 SQL> --( AUDIT FILE MAX SIZE, OS Audit Trail, <NUMBER_VALUE> ,<STRING_VALUE> )
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMCONFIGPARAMS$(16 , 4 , 10000 , NULL) ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> --( AUDIT FILE MAX SIZE, XML Audit Trail, <NUMBER_VALUE> ,<STRING_VALUE> )
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMCONFIGPARAMS$(16 , 8 , 10000 , NULL) ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> --( AUDIT FILE MAX AGE, OS Audit Trail , <NUMBER_VALUE> ,<STRING_VALUE> )
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMCONFIGPARAMS$(17 , 4 , 5 , NULL) ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> --( AUDIT FILE MAX AGE, XML Audit Trail , <NUMBER_VALUE> ,<STRING_VALUE> )
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMCONFIGPARAMS$(17 , 8 , 5 , NULL) ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.01
00:53:00 SQL>
00:53:00 SQL> -- Default Delete Batch Size
00:53:00 SQL> --( DB AUDIT CLEAN BATCH SIZE, AUD$ , <NUMBER_VALUE> ,<STRING_VALUE> )
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMCONFIGPARAMS$(23 , 1 , 10000 , NULL) ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> --( DB AUDIT CLEAN BATCH SIZE, FGA_LOG$ , <NUMBER_VALUE> ,<STRING_VALUE> )
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMCONFIGPARAMS$(23 , 2 , 10000 , NULL) ;
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> -- Parameter 25 is reserved for audit table movement flag.
00:53:00 SQL> -- And must not be inserted in DAM_PARAM_TAB$
00:53:00 SQL>
00:53:00 SQL> --(OS FILE CLEAN BATCH SIZE,OS AUDIT TRAIL,<NUMBER_VALUE>,<STRING_VALUE> )
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMCONFIGPARAMS$( 26 , 4 , 1000 , NULL );
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> --(OS FILE CLEAN BATCH SIZE,XML AUDIT TRAIL,<NUMBER_VALUE>,<STRING_VALUE> )
00:53:00 SQL> BEGIN
00:53:00 2 INSERT_INTO_DAMCONFIGPARAMS$( 26 , 8 , 1000 , NULL );
00:53:00 3 END;
00:53:00 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> DROP PROCEDURE INSERT_INTO_DAMPARAMTAB$
00:53:00 2 /
Procedure dropped.
Elapsed: 00:00:00.01
00:53:00 SQL> DROP PROCEDURE INSERT_INTO_DAMCONFIGPARAMS$
00:53:00 2 /
Procedure dropped.
Elapsed: 00:00:00.01
00:53:00 SQL>
00:53:00 SQL> COMMIT
00:53:00 2 /
Commit complete.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> Rem Regsiter the following tables for Export with Datapump (sys.impcalloutreg$)
00:53:00 SQL> Rem
00:53:00 SQL> Rem First make sure SYSTEM.AUD$ is not exported (when OLS installed)
00:53:00 SQL> Rem Make an entry to SYS.NOEXP$
00:53:00 SQL> delete from sys.noexp$ where name = 'AUD$' and owner = 'SYSTEM';
1 row deleted.
Elapsed: 00:00:00.00
00:53:00 SQL> insert into sys.noexp$ (owner, name, obj_type) values
00:53:00 2 ('SYSTEM', 'AUD$', 2);
1 row created.
Elapsed: 00:00:00.00
00:53:00 SQL> commit;
Commit complete.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> Rem
00:53:00 SQL> Rem Bug 14029047:
00:53:00 SQL> Rem FGA_LOG$ will not be imported via Network Import because of its LONG column
00:53:00 SQL> Rem So, register a view without Long column
00:53:00 SQL> Rem
00:53:00 SQL> create or replace view fga_log$for_export (
00:53:00 2 sessionid, timestamp#, dbuid, osuid, oshst, clientid, extid,
00:53:00 3 obj$schema, obj$name, policyname, scn, sqltext, lsqltext, sqlbind,
00:53:00 4 comment$text,
00:53:00 5 stmt_type, ntimestamp#, proxy$sid, user$guid, instance#, process#,
00:53:00 6 xid, auditid, statement, entryid, dbid, lsqlbind, obj$edition)
00:53:00 7 as
00:53:00 8 select
00:53:00 9 sessionid, timestamp#, dbuid, osuid, oshst, clientid, extid,
00:53:00 10 obj$schema, obj$name, policyname, scn, sqltext, lsqltext, sqlbind,
00:53:00 11 comment$text, /* No PLHOL column */
00:53:00 12 stmt_type, ntimestamp#, proxy$sid, user$guid, instance#, process#,
00:53:00 13 xid, auditid, statement, entryid, dbid, lsqlbind, obj$edition
00:53:00 14 from sys.fga_log$
00:53:00 15 /
View created.
Elapsed: 00:00:00.02
00:53:00 SQL> grant select on fga_log$for_export to select_catalog_role
00:53:00 2 /
Grant succeeded.
Elapsed: 00:00:00.00
00:53:00 SQL> create table fga_log$for_export_tbl as select * from fga_log$for_export
00:53:00 2 where 0 = 1 /* just a table with no rows, required only for meta-data */
00:53:00 3 /
Table created.
Elapsed: 00:00:00.01
00:53:00 SQL> grant select on fga_log$for_export_tbl to select_catalog_role
00:53:00 2 /
Grant succeeded.
Elapsed: 00:00:00.00
00:53:00 SQL> Rem
00:53:00 SQL> Rem Also create a view to store current audit table tablespaces to help
00:53:00 SQL> Rem movement on the target database
00:53:00 SQL> Rem
00:53:00 SQL> create or replace view audtab$tbs$for_export (owner, name, ts_name)
00:53:00 2 as
00:53:00 3 select owner, table_name, tablespace_name from dba_tables
00:53:00 4 where table_name = 'AUD$' and owner in ('SYS', 'SYSTEM') or
00:53:00 5 table_name = 'FGA_LOG$' and owner = 'SYS'
00:53:00 6 /
View created.
Elapsed: 00:00:00.01
00:53:00 SQL> grant select on audtab$tbs$for_export to select_catalog_role
00:53:00 2 /
Grant succeeded.
Elapsed: 00:00:00.00
00:53:00 SQL> create table audtab$tbs$for_export_tbl as select * from audtab$tbs$for_export
00:53:00 2 where 0 = 1
00:53:00 3 /
Table created.
Elapsed: 00:00:00.03
00:53:00 SQL> grant select on audtab$tbs$for_export_tbl to select_catalog_role
00:53:00 2 /
Grant succeeded.
Elapsed: 00:00:00.01
00:53:00 SQL>
00:53:00 SQL> Rem Next Delete existing entries, if any
00:53:00 SQL> delete from sys.impcalloutreg$ where tag = 'AUDIT_TRAILS';
8 rows deleted.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> Rem
00:53:00 SQL> Rem Need to know Audit Trail Configuration first
00:53:00 SQL> Rem
00:53:00 SQL> insert into sys.impcalloutreg$
00:53:00 2 (package, schema, tag, class, level#, flags, tgt_schema, tgt_object, tgt_type,
00:53:00 3 cmnt)
00:53:00 4 values
00:53:00 5 ('AMGT$DATAPUMP','SYS', 'AUDIT_TRAILS', 3, 1, 0, 'SYS', 'DAM_CONFIG_PARAM$',
00:53:00 6 2 /*table*/,
00:53:00 7 'Database Audit Trails and their configuration');
1 row created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> Rem Also, send tablespace names
00:53:00 SQL> insert into sys.impcalloutreg$
00:53:00 2 (package, schema, tag, class, level#, flags, tgt_schema, tgt_object, tgt_type,
00:53:00 3 cmnt)
00:53:00 4 values
00:53:00 5 ('AMGT$DATAPUMP','SYS', 'AUDIT_TRAILS', 3, 2, 0, 'SYS',
00:53:00 6 'AUDTAB$TBS$FOR_EXPORT', 4 /*view*/,
00:53:00 7 'Database Audit Trails and their configuration');
1 row created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> Rem Now, Register both possible locations for AUD$
00:53:00 SQL> insert into sys.impcalloutreg$
00:53:00 2 (package, schema, tag, class, level#, flags, tgt_schema, tgt_object, tgt_type,
00:53:00 3 cmnt)
00:53:00 4 values
00:53:00 5 ('AMGT$DATAPUMP','SYS', 'AUDIT_TRAILS', 3, 3, 0, 'SYS', 'AUD$', 2 /*table*/,
00:53:00 6 'Database Audit Trails and their configuration');
1 row created.
Elapsed: 00:00:00.00
00:53:00 SQL> insert into sys.impcalloutreg$
00:53:00 2 (package, schema, tag, class, level#, flags, tgt_schema, tgt_object, tgt_type,
00:53:00 3 cmnt)
00:53:00 4 values
00:53:00 5 ('AMGT$DATAPUMP','SYS', 'AUDIT_TRAILS', 3, 3, 0, 'SYSTEM', 'AUD$',
00:53:00 6 2 /*table*/,
00:53:00 7 'Database Audit Trails and their configuration');
1 row created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> Rem Next, register FGA_LOG$ for 11.2.0.3 support
00:53:00 SQL> insert into sys.impcalloutreg$
00:53:00 2 (package, schema, tag, class, level#, flags, tgt_schema, tgt_object, tgt_type,
00:53:00 3 cmnt)
00:53:00 4 values
00:53:00 5 ('AMGT$DATAPUMP','SYS', 'AUDIT_TRAILS', 3, 4, 8, 'SYS', 'FGA_LOG$',
00:53:00 6 2 /*table*/,
00:53:00 7 'Database Audit Trails and their configuration');
1 row created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> Rem Next, register FGA_LOG$FOR_EXPORT
00:53:00 SQL> insert into sys.impcalloutreg$
00:53:00 2 (package, schema, tag, class, level#, flags, tgt_schema, tgt_object, tgt_type,
00:53:00 3 cmnt)
00:53:00 4 values
00:53:00 5 ('AMGT$DATAPUMP','SYS', 'AUDIT_TRAILS', 3, 5, 1, 'SYS', 'FGA_LOG$FOR_EXPORT',
00:53:00 6 4 /*view*/,
00:53:00 7 'Database Audit Trails and their configuration');
1 row created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> Rem Next, register DAM_CLEANUP_JOBS$
00:53:00 SQL> insert into sys.impcalloutreg$
00:53:00 2 (package, schema, tag, class, level#, flags, tgt_schema, tgt_object, tgt_type,
00:53:00 3 cmnt)
00:53:00 4 values
00:53:00 5 ('AMGT$DATAPUMP','SYS', 'AUDIT_TRAILS', 3, 6, 0, 'SYS', 'DAM_CLEANUP_JOBS$',
00:53:00 6 2 /*table*/,
00:53:00 7 'Database Audit Trails and their configuration');
1 row created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> Rem Next, register DAM_CLEANUP_EVENTS$
00:53:00 SQL> insert into sys.impcalloutreg$
00:53:00 2 (package, schema, tag, class, level#, flags, tgt_schema, tgt_object, tgt_type,
00:53:00 3 cmnt)
00:53:00 4 values
00:53:00 5 ('AMGT$DATAPUMP','SYS', 'AUDIT_TRAILS', 3, 7, 0, 'SYS', 'DAM_CLEANUP_EVENTS$',
00:53:00 6 2 /*table*/,
00:53:00 7 'Database Audit Trails and their configuration');
1 row created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> commit;
Commit complete.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> Rem *************************************************************************
00:53:00 SQL> @?/rdbms/admin/dbmsamgt.sql
00:53:00 SQL> Rem
00:53:00 SQL> Rem $Header: rdbms/admin/dbmsamgt.sql /main/6 2009/04/05 23:36:14 nkgopal Exp $
00:53:00 SQL> Rem
00:53:00 SQL> Rem dbmsaudmgmt.sql
00:53:00 SQL> Rem
00:53:00 SQL> Rem Copyright (c) 2007, 2009, Oracle and/or its affiliates.
00:53:00 SQL> Rem All rights reserved.
00:53:00 SQL> Rem
00:53:00 SQL> Rem NAME
00:53:00 SQL> Rem dbmsaudmgmt.sql - DBMS_AUDIT_MGMT package
00:53:00 SQL> Rem
00:53:00 SQL> Rem DESCRIPTION
00:53:00 SQL> Rem This will install the interfaces for DBMS_AUDIT_MGMT package
00:53:00 SQL> Rem and the tables required by the package.
00:53:00 SQL> Rem
00:53:00 SQL> Rem NOTES
00:53:00 SQL> Rem Must be run as SYSDBA
00:53:00 SQL> Rem
00:53:00 SQL> Rem MODIFIED (MM/DD/YY)
00:53:00 SQL> Rem nkgopal 03/31/09 - Bug 8392745: Add FILE_DELETE_BATCH_SIZE
00:53:00 SQL> Rem nkgopal 02/24/09 - Bug 8272269: Add AUD_TAB_MOVEMENT_FLAG
00:53:00 SQL> Rem nkgopal 12/03/08 - Bug 7576198: Default value for
00:53:00 SQL> Rem RAC_INSTANCE_NUMBER will be null
00:53:00 SQL> Rem ssonawan 03/28/08 - Bug 6887943: add move_dbaudit_tables()
00:53:00 SQL> Rem nkgopal 03/13/08 - Bug 6810355: Add DB_DELETE_BATCH_SZ
00:53:00 SQL> Rem rahanum 11/02/07 - Merge dbms_audit_mgmt
00:53:00 SQL> Rem nkgopal 05/22/07 - DBMS_AUDIT_MGMT package
00:53:00 SQL> Rem nkgopal 05/22/07 - Created
00:53:00 SQL> Rem
00:53:00 SQL>
00:53:00 SQL> ------------------------------------------------------------------------------
00:53:00 SQL>
00:53:00 SQL> CREATE OR REPLACE PACKAGE dbms_audit_mgmt AS
00:53:00 2
00:53:00 3 -- Constants
00:53:00 4
00:53:00 5 -- Audit Trail types
00:53:00 6 --
00:53:00 7 AUDIT_TRAIL_AUD_STD CONSTANT NUMBER := 1;
00:53:00 8 AUDIT_TRAIL_FGA_STD CONSTANT NUMBER := 2;
00:53:00 9 --
00:53:00 10 -- Both AUDIT_TRAIL_AUD_STD and AUDIT_TRAIL_FGA_STD
00:53:00 11 AUDIT_TRAIL_DB_STD CONSTANT NUMBER := 3;
00:53:00 12 --
00:53:00 13 AUDIT_TRAIL_OS CONSTANT NUMBER := 4;
00:53:00 14 AUDIT_TRAIL_XML CONSTANT NUMBER := 8;
00:53:00 15 --
00:53:00 16 -- Both AUDIT_TRAIL_OS and AUDIT_TRAIL_XML
00:53:00 17 AUDIT_TRAIL_FILES CONSTANT NUMBER := 12;
00:53:00 18 --
00:53:00 19 -- All above audit trail types
00:53:00 20 AUDIT_TRAIL_ALL CONSTANT NUMBER := 15;
00:53:00 21
00:53:00 22 --
00:53:00 23 -- OS Audit File Configuration parameters
00:53:00 24 OS_FILE_MAX_SIZE CONSTANT NUMBER := 16;
00:53:00 25 OS_FILE_MAX_AGE CONSTANT NUMBER := 17;
00:53:00 26
00:53:00 27 --
00:53:00 28 --
00:53:00 29 CLEAN_UP_INTERVAL CONSTANT NUMBER := 21;
00:53:00 30 DB_AUDIT_TABLEPSACE CONSTANT NUMBER := 22;
00:53:00 31 DB_DELETE_BATCH_SIZE CONSTANT NUMBER := 23;
00:53:00 32 TRACE_LEVEL CONSTANT NUMBER := 24;
00:53:00 33 -- AUD_TAB_MOVEMENT_FLAG will not be entered in DAM_CONFIG_PARAM$
00:53:00 34 AUD_TAB_MOVEMENT_FLAG CONSTANT NUMBER := 25;
00:53:00 35 FILE_DELETE_BATCH_SIZE CONSTANT NUMBER := 26;
00:53:00 36
00:53:00 37 --
00:53:00 38 -- Values for PURGE_JOB_STATUS
00:53:00 39 PURGE_JOB_ENABLE CONSTANT NUMBER := 31;
00:53:00 40 PURGE_JOB_DISABLE CONSTANT NUMBER := 32;
00:53:00 41
00:53:00 42 --
00:53:00 43 -- Values for TRACE_LEVEL
00:53:00 44 TRACE_LEVEL_DEBUG CONSTANT PLS_INTEGER := 1;
00:53:00 45 TRACE_LEVEL_ERROR CONSTANT PLS_INTEGER := 2;
00:53:00 46
00:53:00 47 ----------------------------------------------------------------------------
00:53:00 48 /*
00:53:00 49
00:53:00 50 NOTE: The package can be split into two packages - one intended for use by
00:53:00 51 AV collectors and the one by Audit Admin.
00:53:00 52
00:53:00 53 The first 3 procedures will be mainly used by the Collectors and the rest
00:53:00 54 must be executed by Audit Admins.
00:53:00 55
00:53:00 56 Alternately, wrapper packages can be written to achieve this Seperation of
00:53:00 57 Duty.
00:53:00 58
00:53:00 59 */
00:53:00 60
00:53:00 61 /* APIS REQUIRED BY COLLECTORS */
00:53:00 62 ----------------------------------------------------------------------------
00:53:00 63
00:53:00 64 -- set_last_archive_timestamp - Sets timestamp when last audit records
00:53:00 65 -- were archived
00:53:00 66 --
00:53:00 67 -- INPUT PARAMETERS
00:53:00 68 -- audit_trail_type - Audit trail for which the last audit
00:53:00 69 -- record timestamp is being set
00:53:00 70 -- last_archive_time - Timestamp when last audit record was
00:53:00 71 -- archived
00:53:00 72 -- rac_instance_number - RAC instance number to which this applies
00:53:00 73 -- def. value = null(applies to no RAC node)
00:53:00 74
00:53:00 75 PROCEDURE set_last_archive_timestamp
00:53:00 76 (audit_trail_type IN PLS_INTEGER,
00:53:00 77 last_archive_time IN TIMESTAMP,
00:53:00 78 rac_instance_number IN PLS_INTEGER := null
00:53:00 79 );
00:53:00 80
00:53:00 81 ----------------------------------------------------------------------------
00:53:00 82
00:53:00 83 -- clear_last_archive_timestamp - Deletes the timestamp set by
00:53:00 84 -- set_last_archive_timestamp
00:53:00 85 --
00:53:00 86 -- INPUT PARAMETERS
00:53:00 87 -- audit_trail_type - Audit trail for which the last audit
00:53:00 88 -- record timestamp was set
00:53:00 89 -- rac_instance_number - RAC instance number to which this applies
00:53:00 90 -- def. value = null(applies to no RAC node)
00:53:00 91
00:53:00 92 PROCEDURE clear_last_archive_timestamp
00:53:00 93 (audit_trail_type IN PLS_INTEGER,
00:53:00 94 rac_instance_number IN PLS_INTEGER := null
00:53:00 95 );
00:53:00 96
00:53:00 97 -----------------------------------------------------------------------------
00:53:00 98
00:53:00 99 -- get_audit_commit_delay - GETs the audit commit delay set in the db.
00:53:00 100 --
00:53:00 101 -- INPUT PARAMETERS
00:53:00 102 -- None
00:53:00 103 -- RETURNS
00:53:00 104 -- AUD_AUDIT_COMMIT_DELAY
00:53:00 105 --
00:53:00 106
00:53:00 107 FUNCTION get_audit_commit_delay RETURN PLS_INTEGER;
00:53:00 108
00:53:00 109 ----------------------------------------------------------------------------
00:53:00 110
00:53:00 111 -- is_cleanup_initialized - Checks if Audit Cleanup is initialized for the
00:53:00 112 -- audit trail type
00:53:00 113 --
00:53:00 114 -- INPUT PARAMETERS
00:53:00 115 -- audit_trail_type - Audit trail to check initialization for.
00:53:00 116 -- RETURNS
00:53:00 117 -- TRUE - If audit trail is initialized for clean up.
00:53:00 118 -- FALSE - otherwise.
00:53:00 119 --
00:53:00 120
00:53:00 121 FUNCTION is_cleanup_initialized
00:53:00 122 (audit_trail_type IN PLS_INTEGER)
00:53:00 123 RETURN BOOLEAN;
00:53:00 124
00:53:00 125 ----------------------------------------------------------------------------
00:53:00 126
00:53:00 127 /* APIS NEED TO BE RUN BY AUDIT ADMINS */
00:53:00 128 ----------------------------------------------------------------------------
00:53:00 129
00:53:00 130 -- init_cleanup - Initialize DBMS_AUDIT_MGMT
00:53:00 131 --
00:53:00 132 -- INPUT PARAMETERS
00:53:00 133 -- audit_trail_type - Audit trail for which set-up must done.
00:53:00 134 -- default_cleanup_interval - Default interval at which clean up is
00:53:00 135 -- invoked.
00:53:00 136
00:53:00 137 PROCEDURE init_cleanup
00:53:00 138 (audit_trail_type IN PLS_INTEGER,
00:53:00 139 default_cleanup_interval IN PLS_INTEGER
00:53:00 140 );
00:53:00 141
00:53:00 142 ----------------------------------------------------------------------------
00:53:00 143
00:53:00 144 -- set_audit_trail_location - Set destination for an audit trail
00:53:00 145 --
00:53:00 146 -- INPUT PARAMETERS
00:53:00 147 -- audit_trail_type - Audit trail for which the location
00:53:00 148 -- is being set
00:53:00 149 -- audit_trail_location_value - Value of the location
00:53:00 150
00:53:00 151 PROCEDURE set_audit_trail_location
00:53:00 152 (audit_trail_type IN PLS_INTEGER,
00:53:00 153 audit_trail_location_value IN VARCHAR2
00:53:00 154 );
00:53:00 155
00:53:00 156 ----------------------------------------------------------------------------
00:53:00 157
00:53:00 158 -- deinit_cleanup - De-Initialize DBMS_AUDIT_MGMT
00:53:00 159 --
00:53:00 160 -- INPUT PARAMETERS
00:53:00 161 -- audit_trail_type - Audit trail for which set-up must done.
00:53:00 162
00:53:00 163 PROCEDURE deinit_cleanup
00:53:00 164 (audit_trail_type IN PLS_INTEGER);
00:53:00 165
00:53:00 166 ----------------------------------------------------------------------------
00:53:00 167
00:53:00 168 -- set_audit_trail_property - Set a property of an audit trail
00:53:00 169 --
00:53:00 170 -- INPUT PARAMETERS
00:53:00 171 -- audit_trail_type - Audit trail whose parameter must be set
00:53:00 172 -- audit_trail_property - Property that must be set
00:53:00 173 -- audit_trail_property_value - Value to which the property must set
00:53:00 174
00:53:00 175 PROCEDURE set_audit_trail_property
00:53:00 176 (audit_trail_type IN PLS_INTEGER,
00:53:00 177 audit_trail_property IN PLS_INTEGER,
00:53:00 178 audit_trail_property_value IN PLS_INTEGER
00:53:00 179 );
00:53:00 180
00:53:00 181 ----------------------------------------------------------------------------
00:53:00 182
00:53:00 183 -- clear_audit_trail_property - Clears a property of an audit trail
00:53:00 184 --
00:53:00 185 -- INPUT PARAMETERS
00:53:00 186 -- audit_trail_type - Audit trail whose parameter must be set
00:53:00 187 -- audit_trail_property - Property that must be cleared
00:53:00 188 -- use_default_values - Use default values after clearing the
00:53:00 189 -- property, default value is FALSE.
00:53:00 190
00:53:00 191 PROCEDURE clear_audit_trail_property
00:53:00 192 (audit_trail_type IN PLS_INTEGER,
00:53:00 193 audit_trail_property IN PLS_INTEGER,
00:53:00 194 use_default_values IN BOOLEAN := FALSE
00:53:00 195 );
00:53:00 196
00:53:00 197 ----------------------------------------------------------------------------
00:53:00 198
00:53:00 199 -- clean_audit_trail - Deletes entries in audit trail according to the
00:53:00 200 -- timestamp set in set_last_archive_timestamp
00:53:00 201 --
00:53:00 202 -- INPUT PARAMETERS
00:53:00 203 -- audit_trail_type - Audit trail which should be cleared
00:53:00 204 -- use_last_arch_timestamp - Use Last Archive Timestamp set.
00:53:00 205 -- default value = TRUE.
00:53:00 206
00:53:00 207 PROCEDURE clean_audit_trail
00:53:00 208 (audit_trail_type IN PLS_INTEGER,
00:53:00 209 use_last_arch_timestamp IN BOOLEAN := TRUE
00:53:00 210 );
00:53:00 211
00:53:00 212 ----------------------------------------------------------------------------
00:53:00 213
00:53:00 214 -- create_purge_job - Creates a purge job for an audit trail
00:53:00 215 --
00:53:00 216 -- INPUT PARAMETERS
00:53:00 217 -- audit_trail_type - Audit trail for which this job is created
00:53:00 218 -- audit_trail_purge_interval - Interval to determine frequency of
00:53:00 219 -- purge operation
00:53:00 220 -- audit_trail_interval_unit - Unit of measurement for
00:53:00 221 -- audit_trail_purge_interval
00:53:00 222 -- audit_trail_purge_name - Name to identify this job
00:53:00 223 -- use_last_arch_timestamp - Use Last Archive Timestamp set.
00:53:00 224 -- default value = TRUE.
00:53:00 225
00:53:00 226 PROCEDURE create_purge_job
00:53:00 227 (audit_trail_type IN PLS_INTEGER,
00:53:00 228 audit_trail_purge_interval IN PLS_INTEGER,
00:53:00 229 audit_trail_purge_name IN VARCHAR2,
00:53:00 230 use_last_arch_timestamp IN BOOLEAN := TRUE
00:53:00 231 );
00:53:00 232
00:53:00 233 ----------------------------------------------------------------------------
00:53:00 234
00:53:00 235 -- set_purge_job_status - Set the status of the purge job
00:53:00 236 --
00:53:00 237 -- INPUT PARAMETERS
00:53:00 238 -- audit_trail_purge_name - Name of the purge job created
00:53:00 239 -- audit_trail_status_value - Value to which the status must set
00:53:00 240
00:53:00 241 PROCEDURE set_purge_job_status
00:53:00 242 (audit_trail_purge_name IN VARCHAR2,
00:53:00 243 audit_trail_status_value IN PLS_INTEGER
00:53:00 244 );
00:53:00 245
00:53:00 246 ----------------------------------------------------------------------------
00:53:00 247
00:53:00 248 -- set_purge_job_interval - Set the interval of the purge job
00:53:00 249 --
00:53:00 250 -- INPUT PARAMETERS
00:53:00 251 -- audit_trail_purge_name - Name of the purge job created
00:53:00 252 -- audit_trail_interval_type - Type of interval that must be set
00:53:00 253 -- audit_trail_interval_value - Value to which the interval must set
00:53:00 254
00:53:00 255 PROCEDURE set_purge_job_interval
00:53:00 256 (audit_trail_purge_name IN VARCHAR2,
00:53:00 257 audit_trail_interval_value IN PLS_INTEGER
00:53:00 258 );
00:53:00 259
00:53:00 260 ----------------------------------------------------------------------------
00:53:00 261
00:53:00 262 -- drop_purge_job - Drops the purge job for an audit trail
00:53:00 263 --
00:53:00 264 -- INPUT PARAMETERS
00:53:00 265 -- audit_trail_purge_name - Name to identify this job
00:53:00 266
00:53:00 267 PROCEDURE drop_purge_job
00:53:00 268 (audit_trail_purge_name IN VARCHAR2
00:53:00 269 );
00:53:00 270
00:53:00 271 ----------------------------------------------------------------------------
00:53:00 272
00:53:00 273 -- move_dbaudit_tables - Moves DB audit tables to specified tablespace
00:53:00 274 --
00:53:00 275 -- INPUT PARAMETERS
00:53:00 276 -- audit_trail_tbs - The table space to which to move the DB audit tables.
00:53:00 277 -- The default value is the SYSAUX tablespace.
00:53:00 278
00:53:00 279 PROCEDURE move_dbaudit_tables
00:53:00 280 (audit_trail_tbs IN VARCHAR2 DEFAULT 'SYSAUX'
00:53:00 281 );
00:53:00 282
00:53:00 283 ----------------------------------------------------------------------------
00:53:00 284
00:53:00 285 -- set_debug_level - Sets the debug level for tracing
00:53:00 286 --
00:53:00 287 -- INPUT PARAMETERS
00:53:00 288 -- debug_level - Number to identify the trace level
00:53:00 289
00:53:00 290 PROCEDURE set_debug_level(debug_level IN PLS_INTEGER := TRACE_LEVEL_ERROR);
00:53:00 291
00:53:00 292 ----------------------------------------------------------------------------
00:53:00 293
00:53:00 294 END dbms_audit_mgmt;
00:53:00 295 /
Package created.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> --
00:53:00 SQL> -- Grant execute right to EXECUTE_CATALOG_ROLE
00:53:00 SQL> --
00:53:00 SQL> GRANT EXECUTE ON sys.dbms_audit_mgmt TO execute_catalog_role
00:53:00 2 /
Grant succeeded.
Elapsed: 00:00:00.00
00:53:00 SQL>
00:53:00 SQL> @?/rdbms/admin/prvtamgt.plb
00:53:00 SQL> CREATE OR REPLACE LIBRARY dbms_audit_mgmt_lib wrapped
00:53:00 2 a000000
00:53:00 3 1
00:53:00 4 abcd
00:53:00 5 abcd
00:53:00 6 abcd
00:53:00 7 abcd
00:53:00 8 abcd
00:53:00 9 abcd
00:53:00 10 abcd
00:53:00 11 abcd
00:53:00 12 abcd
00:53:00 13 abcd
00:53:00 14 abcd
00:53:00 15 abcd
00:53:00 16 abcd
00:53:00 17 abcd
00:53:00 18 abcd
00:53:00 19 16
00:53:00 20 2f 65
00:53:00 21 qCSe0x2VvvJ9JKe6latnSbnlieAwg04I9Z7AdBjDWqGXYkquVi76VvRyLnJi9HL6WQnnvZ6y
00:53:00 22 y1IyzKV0K+fLUnQI9WHJpqasYygb
00:53:00 23
00:53:00 24 /
Library created.
Elapsed: 00:00:00.00
00:53:00 SQL> CREATE OR REPLACE PACKAGE BODY dbms_audit_mgmt wrapped
00:53:00 2 a000000
00:53:00 3 1
00:53:00 4 abcd
00:53:00 5 abcd
00:53:00 6 abcd
00:53:00 7 abcd
00:53:00 8 abcd
00:53:00 9 abcd
00:53:00 10 abcd
00:53:00 11 abcd
00:53:00 12 abcd
00:53:00 13 abcd
00:53:00 14 abcd
00:53:00 15 abcd
00:53:00 16 abcd
00:53:00 17 abcd
00:53:00 18 abcd
00:53:00 19 b
00:53:00 20 17256 3c90
00:53:00 21 ejezVtHQxjgadC1wKpXZgndXwmcwg80A9r8F38L+Hj1k3UjP0BorgYPCt+hSiscR9J+gY6KN
00:53:00 22 GvEwnaUW3xMw6mFxodwTADoIHyjTdjRaaSgk0/j1eN+9qYLWWK9wyXwEe5APkF4fpPhVgvUI
00:53:00 23 7icc0CCW0R8IPcYKRMAVo7KokiSSmlC9UYd3TlvntfXkNQSt1uey7Xy5smb+d7KlhuoHEf6m
00:53:00 24 xKSyZ/bHBTP7iCLASoa8tTzpFd0gkA5O1L2D8DNOG966/h0XCh7SCxd38APRMpstt0Efv3qx
00:53:00 25 iLSB/moE/riTnLNL3Dh966jt/2QIE+IHwk/PX5CQi/t5YCIrJV+pIav1FptGdFLEH3tBwZ3H
00:53:00 26 mEZK50RIIZ45dfwi+zefBDk/xs1K4R/zoOd8Qf3LkEr9wtExrh0Lmm0GFrh8drMxUES7Ix1a
00:53:00 27 7qdQKK8/QZpS5/UIusb9vhoPQDdhtpVr1qGXPzmM+S3957ITe3bc3KSpB+Pp9XbUHbCWzxN0
00:53:00 28 ZvAlzZBulabAAcj//cS7yoHGX9MC4z9F8rALGB3l0mywt71t4rdC6EW59IKbUV8k3gqmcokl
00:53:00 29 0LiBSiEoWo8i5smeQl+9PToNyZEahmnhcqnDg/RQfDOask126vwUzBloKTa3cigGN/jRy2hK
00:53:00 30 4UH3z3RMneuIshJUGY/QJBgJiz0yvWiaYO0OCR/BYhscNQyaRDMRPFO07zWlgnPFTYPkk9Gy
00:53:00 31 MFHmX1SP20gvzlHkKn2MU4a/TJk5C/CQj/V3v/TDHW8bVioEQlEO87QSqBBdvMY0V7jC/vXf
00:53:00 32 tflPtUpkBjpDxldY1/lBvAgjxje2bmu5UiRZbFOqg9Dg5HqkKnnO4h/tqPLaFYSw0Eu8r4YG
00:53:00 33 KALw0gJGZ0o2lTD1aDwhL+zSOVUcPEI/qeZ5C/QUOI7SObBE1punFd3y+Is1OjS8mSP3DF0v
00:53:00 34 gsOasoQ0HAwnSrybaMTi6iLEFVdRI+UisKr/0R+hNHXwcrfaE+rjO97gOBPCWJS9CXwt4IQK
00:53:00 35 Qj35SVm5EbQypYp7WdcGwWpXejI8nVG391XKewqD0IimQLuUFh333g6rWm8IBMdHQxS8WC4g
00:53:00 36 8TEGmQukDNTMtNSs3o7h/Dpg3itHe6Obp9BHE4PQ/xtrz31Ho4LHyfMPJ1O3owRQvGaCnRyL
00:53:00 37 du4Nl8cVFhuXSUojVOJmsCRZ+GOZyiVSp8F03ICiNtplIJCu8Qgyl0xjWYHdU/qiKHOP6DyV
00:53:00 38 x2R4Zs40xwqld/AJ4DLkPyy16zIAwVZ4ad3YJ7CidYnQVI9ysOrqMLEw91nUD7l+a488jmy0
00:53:00 39 UgVLPCe0GSmfhnjtSLGkcOEwjPlnGQu96OUx3ReQ659j10U+nF1hKyq5LA9x20//sLeYuvTH
00:53:00 40 xY5iE0IKwmMEJQpworRHwFpgBZt/mOUa5TuZiKGNG7+lBYWkvn/35d2BJ2+DA1rHyWr3XNv6
00:53:00 41 eMgAk1Yy2m3yrBNxtVITaBvDqRf6VS2NYz872DgyGoK5dImnAQv9oLLCPb6rJMg0pKK+obks
00:53:00 42 2tb1xztTDoWL6yhesasFEfHGxrneIGmMuzFkKWA9gWjcRiUIfMfOz6W33buMxLogCPX3LRnt
00:53:00 43 Ui1IWZpC7Q9MwywbAzrSI3o6nZI1LsqEjl9o1om2aP6kv1oO+s4G8NpnHSTUQGS2T86MNR/p
00:53:00 44 zvNJPi0WKM4PfuM1/qk3vNNTIhlNWfF0tPVNGaYKAmB7Wpk9VR7pZZhYTP+3I5nNBrXsioKt
00:53:00 45 zCkHRe/GDDj8kKmcBxFbUYyMBx9FBgW2WyR7j00G+71GiCUNCdXN148hM+18x8+eqxtRQPvH
00:53:00 46 s4GQ/iDplr3EdqJK3FWTMFUo75V/Y1WWrM3gJMuqTgZ8/IDC/seqBwMRT9jYLZwoKLQwtWwg
00:53:00 47 RqhKfzlH0TaPi9ZfOaYVbgUmajzQdnLOZcd88k+a9rAssKtsEIo2+7OnzmTdrfaK4FbIquD8
00:53:00 48 aryMu2YVZ1rdcKaarxLl5GRAZ+LidLdrYgNMwG7r6OTQ2AEXjkaia74cfL8Vfhy+RqmBYQJN
00:53:00 49 d9NXo1p892U7rgId1X/80UlqQwnQk5QEHQdNSjoyCkrkDm1s0s5W+NxkbW5LtwpWg7qBN2fE
00:53:00 50 W8l3hrM+b4d3mGDBT+Ik1Ou9slzbbQgHI4KcXjctCNIvTNbAD1jBy9yMeLK05aFsRRr684ML
00:53:00 51 PyvKOgHKXiTMbWCkP4Oqsz+8TvKp4hldxVzSHioRC2jMsXvrHBjsW3TQrTc7VTjj/msFOGQk
00:53:00 52 28fmkac0b3/afPa4LIarRlH8h/3/jS3czCulG8fR9mdluz/bi4emLBHR0yj8NuK2Y3ptFQN8
00:53:00 53 wPgFH7R8oxTqeEa+YXydEHOj63ulCIOFhrp1DReGHtChhiNSQo1HH4YKExfXUeLwNJbu7hOQ
00:53:00 54 kEzSQnq+LosR8UfBEQjez1VngSOvBJ4lD53xy9fJqEdCIUDf1nGEkgvCQvk+G7ne7ha0ZZmz
00:53:00 55 elgUwZnSHZIQ3+2XTYD0M8GwkacOCDoGwCNzX/IfxBzdJVOLMVO/Rw5w0/TA2u9fLmSav5gA
00:53:00 56 rOpKYiCRCtJAT9RONs1mNNm8WBRtRtV6SBgXmQFvEGMYq/Y/UcAIQI/bSR5FNHQwvCRdRt3A
00:53:00 57 ibKbq9hxBYdkmm2iPqzVBd9SHdMpiQ8lY1n4pzfdD94HeWfndlE3f8mI0QVw7WXPU/s3aVuP
00:53:00 58 9naKSj7d/ePVLMn/Nw+c9MiGJY9aCK7N3fdE4rD9/ZW1UE233SHJoDhZH9dvZUsWaFDFdxHe
00:53:00 59 aX4ctBU01d1H18NaGYnGwg+qRhDbHF2WFXD9o3B1WqDMZRMuF3JQ0XGTwzEKvx2qVA6T/CXC
00:53:00 60 FGR7WCZYjPleGFORHtMApyk2ZqqIa0vSzUggsGrkoJnprn1utTWNK+X6NibdaiopBSsAeL3A
00:53:00 61 8rHl0KE3J8DDRGNuo+MwAt50U1L52PrY3YmJiTgDQt8KAGHZ4Rud1BhroxaatrTRXTBtB2KQ
00:53:00 62 9f2wuq2rjvbWWvQ2xXFTgm2IL/e2b/FGZVyzV0ejYKnofYE4RQaZFHDZRT3hknwmuL+ZkbpM
00:53:00 63 yng7v4PVHpABLh4f+GzU0m0Q7Qhf6VnAVJ7c8gbg54xImRP9kRegugHGt9yAr5dcW8WGlMBY
00:53:00 64 HdOtwapoh+BqGNMNAiEEp4+cgm9VzjA/wbHNUMdVOAtkQg6aIc/EJ4t9odnYGgEzuVnZijua
00:53:00 65 RTjuvB31nKPGno/m/VG5MPf9js10HadQB5PCm2caHfL+QDKChSm5jgX1N9rShd+Cev3O1gMi
00:53:00 66 UaYvC65dxvKXYRC/l9/dmLoVTPZpYcgT8uQx37UAQ2IipzTpL01mh4/dqh8Y3DBLROgSo1Dm
00:53:00 67 3o+8xl69oxayVzhpOB1ZOe90bhMWBpI5xhlkUrT4nAqk7nW0jjh6nl5lHv2l+ew5ED5to95Q
00:53:00 68 ze3wqv06zHIBLiHvGoPKeulA3cq4zr/QpJvp7NnIwHrB6nv2iWtC/A3Tjo/Rl1eZEA3dgot5
00:53:00 69 hZBI0vtfL8hyt2Sl0XqV5rYWj49X1kgu12JwUAPJ0v6gsihWTUvRLExUz3XGThMIQtNPqvL/
00:53:00 70 tR3WmRh7MBCJlVd8j3GU9hP3cTA0l3496nSojlRZRSCcRIh0zUQqIAztyGmyzOVrmrAD4Gmy
00:53:00 71 LDk1frlooDqwyQt2PZmPN/O2wpH489YKa1Z2YqvXeW+o6pqLGXrkLo2owqH3Ry1cp+Qjv9/t
00:53:00 72 vqHR5/GehQ+dGC895Vn0DTITxoG+crF18Mj2DEX3L9KWdywxiARcv10nW/ZA+4fDgGpr/YXU
00:53:00 73 r0DhcQL/MSO7kk4wwEI3UQgHoeYyvZL0/aPNZZlFVeY5FA4k8WQ2ka45IolIuZH99HmlLxnq
00:53:00 74 yKoyj4ZvFVYaACJZ6MG1WA/5ePpo7KdZnmdZ0IFplMX9gGTrfp6gGmBoEGwok3bqVZUQsqQ2
00:53:00 75 kElezpHPvMrF8Mzq1GZjPfKOBvLnu+uMuPh3qGhY8u8QGrOie/fXQ0qA/oDWTWvR99dHqBMx
00:53:00 76 bA2slZjJVL4BpssvTydwpTT/Sj77k9Ur54+7bHc1kkX3y9F4yGB3j1xvz3+zTNtJNlMaYYzS
00:53:00 77 3gOhGi8ro47HjAQDFx0/BoCgsaIkpp6XSzhq8VgFWYHJOTRZjWxwHejkCmrPXSzMjKhtRyjk
00:53:00 78 MrZzHc3JxhuIuyEwse+g644q9UiKhq42FJjYs4X0CB2pN3RHJFEyeb0L7TD5z7tED21EeaZ7
00:53:00 79 KYVy1hB2fs5pzoXLX/8JOqmzMXfJxPH1f8+Y8QRYRPSEU2LtHUr2N4a607/71H5DujUZxFoF
00:53:00 80 wwEiRieXK0WsuOMDWzCchLLs029D+KONgGOhcrXOf1s7erjllMXaoQZprP8EWUUu+r+KxY85
00:53:00 81 nrm9FB0zbfMuA+Ht1fcBqspLHJ79fvsZqhrvPYmW9WhBsamkvf4a8DJArOD8tuuPlOC6jCk6
00:53:00 82 Os3XbGGzKFhe2rA3GRRkjBORQMnrJLrjiL8DRjnyGvt8TQqrHPG79LYHTiZd3qx3tra/asyd
00:53:00 83 Us9vvjiCxIprHgIM5KGPRVI/fM+I2Yf2Jn8J0CTQlknbxf9abK8tHKxDSCFRZV2WXb5q4c1K
00:53:00 84 juzD/pI8bJaV1UerbQUxKtkhORt8RySnnMJcnenAQY2us6IRMUFh//W5siPktPgjSmuTT2N4
00:53:00 85 pErNsIcjKgVCH8natrXc3owh3pYM6yvCkGPFHSf5UkUCqgwcExN2Ay7bFok1Ny5w7jYyiYeF
00:53:00 86 2P43hi10HkdO+PxpIvrIbP23crxSCf9gpcgSq+l20zLmTSb6PNSWLal1Dwk1oQ/VlvpLdfmL
00:53:00 87 OPCWMUuKDc7CVn9VsG62J4uYPkL2A7e0q79iE9Wr7uOY+d0Cwzll2ez3WJZwdBVjkMzIRKL1
00:53:00 88 LufQpyGojPVqTX6J8RuoPERqer8PIowJPWwSQhC+cBckICAh+bRxSTRg7H2rhc0re3b0pHog
00:53:00 89 6bvY5DebFCBeKK91r1OrgbT2oJl8Id/a5p3km9nxPorpf2CP438QmGjvXjxeymDJEW4Cfyp2
00:53:00 90 2sx6GHuy04pHRomY3w4VRLnw5BHQtEbJ2a9bMMEnGn0oEf4szRCVdKGVkEVDwn64etwHLZaL
00:53:00 91 Q+ll+HpBDlFWvY46f/PlQKYugg31CqNi2KH3aHae0EXGAeDHVFz/28t+O9ibAqA2N7MQ28s/
00:53:00 92 m04IfrlOjWUMH2vcpUokVymQ1NJNBqePXQ7QhQiOwKlmOejkfIkeH/fwiXTSggBMyzBRSWni
00:53:00 93 bBchytIu66a+3nSaFr7uOUlUYGN+AbN7lSeb85pqe1pLyKeQwG4lICouVQFftP2D5AhZEpdV
00:53:00 94 rUpwr3FIg5X7yvebeBNBnxydjq+jOPyVuWUrcPxD18++Oe+Zvth8kSBXkMC8aWdtREAt1VIo
00:53:00 95 Cuj7POePJYm8UuMzgmZkuLz8lRnViLvCfSUc9QoWcO1g+InGlbCANIW08t0iZHSKTuhusZwd
00:53:00 96 SA3jADYbafGrq6eZBxF2zjc7i95vLUwSAlhWSiOrMPEu2+V+MYfauoOoTs+IkStwugmcZc9u
00:53:00 97 cR4HjYgzEJoS4DwHl9i5hAa8ZdzgBzpZbtKS0U3Qkz6SwGqk/2X1M3pEsDWb4ePpJwNOzaaw
00:53:00 98 5OQdCP8yWim+sw7+BYV5kUTHugbKG78dLAfOOwjiRajSJzc5uwhLTMTj8tpNobBwRMGXbZyV
00:53:00 99 OvqW2f/GbbVpfT4DsnYJsv6OmZcIMd+yUkLuCIg5PsCRbYMVucOfFU2byQUjglYIwMXojM3M
00:53:00 100 WkvTWRCLHmPAKSy1x5k6Yiebt6eoq6GzK6q6Vppn9VidLgK5S5D56dYlojkxwUuODANy7ERI
00:53:00 101 mtBxp7xYf9UShoE5nWXKhA0Vyh7RcKyrFBPtGZfxgx64XhG7LpEmpe7Sn59BDp2xmV4+Atc+
00:53:00 102 vYZzpPBklml4WJbRZMZd51cca4X07yAxKQQF0138lsj2Au3RgX3Wc7qSoh+0B3xYZvYv3/sU
00:53:00 103 lykxh1a1L43uRSTdXsEny4RkhJyekqDwP2bPKAN96J21Ir403PwlWMmEb5BdlH9PeacDHZmC
00:53:00 104 NrEYCkYPUwSWSMFdEUBv6QjzRyxXZ7jhKeb7dR9yE93j4M1wr7Hm2yKNS3fj+3OF5BcGnBcu
00:53:00 105 49smvelAZ2da48glyAePYSf7Lo2e5ZWoMM5ONGw2WKPmwyZcARR/BnfDAoTbVvA9Vtcbboaq
00:53:00 106 GRkZGQ04uU87dbpGvswQqMJx8Owqk79tKDbQywtgj7MJIhbf6s7z9QLk5zdpGxXkB0TQiyyR
00:53:00 107 CiiTRlN42KttGFkYW969f5crDS3b5+hH6GeyGl17jiawab1ds20LqY+K0OBpgVpK//w5TNwv
00:53:00 108 g8LKVmyyQKNv7Ox2ZRfD8fV5/vwwxH8ZEjwwxJwVunrKmW2AN1ch8zZps9x9xVglJWSSI7GS
00:53:00 109 XtBDissgkso9PIa2cq1sbPjKCZKCmiOlGsYV/ZId41FxIrNQYswGZtTHBAyRMY5cFA79a+1e
00:53:00 110 q7vnIeKIXTnmEfZGKOiZ9Spzz0Jz90E8VWCVn1fal5dZn+CpD6Ydz/cF3IaTrIuG1a9Xd9gC
00:53:00 111 JQgyPYA3ESE+/gEqjsGimY1pgyG+YkU985QyIzZat9ujAaeUBPvzkQgwQaeiTaEJTDIDCmBS
00:53:00 112 u0gD9tknMXt5mMG3BglEmCJtNRz8YZYHzWtI+OPeLRVhruMY4nkFF5h1DN0TM/U9DrG7CNjX
00:53:00 113 /EN+J20AHE6hGNTWs/KS1PB59rqzKxI1xzAPKpnwYUs3tTI5a5/EVNd3WrE3mILBIUBYQFyi
00:53:00 114 h8IN2Z50A4MACeerCx4N3WUYAMDVWYQGbNhL5HZCvD0mJ286OJT4QNQSsXAvgVWPd2JRF7m3
00:53:00 115 iAIanidqLzyZfR1Y8/KEI/ExzBzVK5E32KLpqK8bl76vLHDOxNZWWTQF2L0ev5r0pSNRV+91
00:53:00 116 GuBqxeZVeae3buhKpKtY6X9NRQVvUz7RfBVKBem09OfIJ5E5FAn6OAbMG5Q/FgramWtQftxd
00:53:00 117 1xXT4Ai8uwD6Ai7m28TVBDa+B2aIBG/MIfJEhO+Oq6qrQ0QQuEIhfEacY7jaOcr1lbiYqyIf
00:53:00 118 ILMvzXt/ocrtFfDZ2DI+X0MVVRGIxK9lStaeq2sRHQs4vC3QxNh+gjGYRXQkVtnzPq4O7Ppo
00:53:00 119 eHxAw/hXnfdEWHK5vbAzRbmr/81V6/fahsxsBU4wkbvanpfsiXYZxQDQ6p9T4tr8/nLK78Ot
00:53:00 120 2clScFCLUxNVzGGzqXxtBfAtZqvhMtsZKB3Bjrc3JPChhkB3CgJ99++nTh3FYFytXp/3FrCX
00:53:00 121 vMYLAZpnZnOjwOsPK9cuSWicZBRAcZIqZzPHmMWRJMRPwouxkCqdCIqzwZachVUQ+cJW80Lr
00:53:00 122 cNlo3kQzxXSSiSy126e//6eaaRvkC49YsOT+sOT+Y06azQLrlxIXwWHr7BxjSpgdf3XVfYVx
00:53:00 123 3LPCUhHRSicr3i2mJ+/f6UnilQPbbKDYuIMjJgszuJqHc1TCd/1B8twseDKROiKuTGgX0wx7
00:53:00 124 /b+crwkPCFbhkU+YIuPKaty7P1T7wGz9AbKVOZ7lWWckBSVmkIGnoux6b757rt6vpBGjLvKp
00:53:00 125 gXZCWlu660Jb/P5eqkJNF28YAg4bY7xvAcFvTIHDrdaccvoR3bbp7CcJWS63vZCwk+Dz42gH
00:53:00 126 cF4EA6u5Ir7Ss0nsGbBcWAbtnlt+aEt+JIinE39WnZYFJ5VGmhINOxS0LLx5Y4nAkt/NCpTr
00:53:00 127 ByxKQj2HbUJjSRFY8wET9rpINVjc0DsFSKNq5Tp9AzW76yf3anbVq1aAyRJjicd3PeJlpZSv
00:53:00 128 nANq9ZVznMI3uz4QmyKIvYw0SNzmv4Xyxc7f51bXoZppBu7E7IKw+m5q5L2xPHVA2KL9MgKD
00:53:00 129 /kX3OsttwbhYmZptHyvlvlIKY9gxjSYH/uLRWHHEI+460uh3MpRBqlpjg2LCM6fVgyKub11I
00:53:00 130 i9npNHXwlkkIkSPcrpk9zZnMmdReY0QlJ0Jxwqt7Ddf+h7m7zXWEwtINeZdVGCkCkm47WxMB
00:53:00 131 FtVRIWeNjB6+1ut9LmpoB3GN7V47avODBTFwCBL0MAaxCvfMmrEEPFt7wpHBh2dBHc1wm2A/
00:53:00 132 WNU1nI8VdI/CRvP2Fd7ionEZnODjzDvDW+0nlNKBC2ZCRivFzXlMtNrGlfUMfmyxydcVCj6H
00:53:00 133 BOo9a97ZR8xNx3BvvqaVCuwCNk0yDKs53Ahpg6zUzQWwcdgS2ZWDcNM8XlyzRd++sINERVEo
00:53:00 134 27kn2YqsEmc80ujU5BnZz74+4k51+oqDNCn1IXlFFRDqFxRdQt1Yy1EreOh7tLHJwyhy5Wxw
00:53:00 135 zr94Kyh/F/Rbow7pxm/A3mqeMrIpi6r0xdGn6bIKUsg+TOgjvZ3GXrzQ0kCnQRyrzOoBxUKN
00:53:00 136 wmIeO2v+U5nBJl8DrzSkE1rb1LHg5Wgh2UsbI4dxiQoVrDS5J6PQw1xkA6en3Jm7O16ZJLny
00:53:00 137 o0TsjYQDP9eSwy+Z6JHPams0xTrobwHfQeZGX59IL5A7JKJ18DR+nXqgERA731sEovrnRD0d
00:53:00 138 8N4scgxPyTihKsJg3fok3sWENdto4mMs8rLwYpr+AG1/sbbcmFguIPExBplllevOfrxgBB3T
00:53:00 139 CFEyZxUZnXGEfvT+V2XDOOHgOJIE1+0BMY4IfybrFKovWJLM5z1Be7ppULrm8znECYXK+CPt
00:53:00 140 5IreOwQp5Y5vEo9CeHEgmLk2A2Ml44+Ojl1JuhwZeIuPjsGr9PEPClSsLvovsf8Y3w/GBnGd
00:53:00 141 IwcCQ5N5wLwP+Mxr5/2T8V88/x1jo96nG2SGaUQyrY2NrWdEdtDLs0ivywywbzPsW9QN7Tn1
00:53:00 142 meUacdvnRW5zoxaL6RjpsCiyVYKrnh/bnFYZgE3thKpZCSdFFe1UZMUx9vI70NM9U6Ff/qo6
00:53:00 143 iHkETO5k/FsO5cnHkmsaOzfnkZUcbQFPd6yJxTXs3lQK6H8nDH2ZJHfrCWC4HdsU9ot4YC5f
00:53:00 144 8fSpeytiiTzhXi1ucg/q0HEcMV1ilmsO7sJFK4Gb2ZadaG0j9+pgNFsxk1EaB8FiUqUJeEkN
00:53:00 145 jVlvHqCbFeB7DWyK2hCNXrq2ribR6A2j+Z/jg980CMIVGCdMSz080LXjG1x41fHGa/Xmn+pu
00:53:00 146 yD08zyYRGn1VheASKj4vfs/6EARFnGh5qO3YaX+4AA6D6qmMmoR7dNVmdR7kSh1i5Hew3j6u
00:53:00 147 8nFRyKYrhBfmsIhFcOg7QDOEVU3J4aOylzsUUsO2KVjPL+wFl5nKPv0njAIZs+WNGTvy7Ja/
00:53:00 148 yhADRJp5dF6Hm+3TpzaVm8UIwFVtDacQligpE7Mf4lppjN96M/hMAxHJuc/rVsUsf4fVbafG
00:53:00 149 YNUDTYWMWFG1h5N3KJ15udJq8EwbAz4N+jtGu41JocqPE8nyMKsjzR++2JBimaSHRabBkJI0
00:53:00 150 20PB3HOH2tpceg+Yv9PyFoN4wyIhrzON6OSN0yotbhPq6u3ycnAMp2TloJg5Bf8gRss+8sBF
00:53:00 151 je0Huk9YSzSFnAKK0HTsTqElsagpP87KdZipJuWA1OVaMItNOsnnZ9aT6cKyQS1JkxBJwwX1
00:53:00 152 o65CB/H1Jmxc8Xxkb76cRuJizcZ3A196Ai3OnXrW91S4rx1HOHYCRkCKgyTJfhW7+iYSvxOF
00:53:00 153 Whf09JwJEAG+NubA6z1++o4VaptG3azTWyQL54n532NmK/I4iWxSTohfg9sBeflm2JHkYsFl
00:53:00 154 IndWYHn5ElwY9rY0KxkkSKWJv8x2vwuJaW+a+I8i8OixHD7T0tHZnFQbCVRGSiNGofkWDWMo
00:53:00 155 pwRPEa0u59x2c0JCNrlS6LC94yIBGjtg3YCn1slD8bqYHBaOce18VZgk8tr6mgJb/Nx/ndVP
00:53:00 156 64wGKbIwh4obgRObDWh/l64ZlPg/i7LKyNuyMAtZwVqZz2VdwybBRsxZ8qwzhT6ligmlgc6R
00:53:00 157 iS0CP+QLCWTdKVC61JD7PmjUbhaDZAGwftfcWN2qnJr84lJLWv68CkmhlG7ZkHtGYoKO9QvJ
00:53:00 158 uwY30Fm7VfutSpoumpnpUl6BLeQ6s/owvOPGA06unE+3MFJCjUcfhgr9w2tmCulSJcKryvbi
00:53:00 159 OsVtH7T6rAJ5Y+Ho3nv7QVVA2256nYj/z/BJlG68VZd7XY48CM72LQ4m4vr3Rw+mF7af7FKg
00:53:00 160 5xhu9Ihx63+AZ5R5Ls0ktlryF2JnyIoV8Gdp5hb0mkg6oC/7HuGnNdiY3pScyoiuyMfHgr6R
00:53:00 161 QwfMF8DaDxQDQqQZxZnGlZBa0/KkpwUnw5sPjQN5tsviE0iyoQJMQeKH+m2eXrz5BtkvCdzr
00:53:00 162 X7CXUKHBo2vmIh4xWinYwcBjvZThr8EXOBTLmpMYG9nlnZhFS2i4iqiqabfXJAoF5xhI89Wy
00:53:00 163 8rpxitj6pQYjZkoVVmoMnFVjcGiiN2n5oRtBfLguobmsm2pNW4iAYt0XV/sULwDZivIDRRHb
00:53:00 164 B0kyPr1MccVG9dHtO0AHzId3GpHiGAQpXr7DGyUbUlK0lY7Ra78MRt1pe/I11QPMwrp/Zeuc
00:53:00 165 6lkmLxhoGu4SBxuK6Fl34bZ3FchMbHs6AARNrjMpG83rSdnM9ic9QYrU1zHwRdmMw4KMRRDM
00:53:00 166 RS/9p9tRlWmTslt8fxcADMoIWh3kvi1RXT1QcapOkkm+ETwt23FqNnUVAQGVDJN2mM1LjT+a
00:53:00 167 dyWwcfF+QoBoAHmRl9HGP3wFiNk65X5CegY6JUyXOrSL9gPEzN5lqZJdLrNE/enqfsjiiRpi
00:53:00 168 Um7oqHUXUxcd0tifckD56LLt+5sMs3aogfl0AVVmeoz0DgRvUcmTPcNa0V49w5EWE56wWVZE
00:53:00 169 J0whMq1NVpeJ7DjrjT7XxLQr7mxwKzbRONvuFlcyhqqSxv2Fm2OETuHKlPgI/USvbOMKdXzJ
00:53:00 170 mUCE413X9RJJmi63mIkVTSwmO1rSkHhqiXREyk5V+cud19BjjsHcHS79bJtj3oxTb5cAmR3+
00:53:00 171 pPt/sNHbUb5uMWDYYZNlhxQI182KC9O1EpL7AMUKLv37clhQ/JuYNO2Vlb9LfwCn72TVK77b
00:53:00 172 zy9t+MFGQmS4W6SpoAZc6gyM3R7q9hdGmQpdzRYRQtvTkX4RNApEUImyZL4p8DF+iGO+12AN
00:53:00 173 rBFj81VGbG40MawZsiIMBmN+uOETUA01B6ce3vy4BSCoAXUVdUH7H03tJ+WB3hUK9QPdnK2f
00:53:00 174 neHOGF+QY+DFRbabT1SAcyKQPiNDyadHtx5ExbzLwjv+qjV1NaTEmONUKZ/LQ4LqIb+Nn8t+
00:53:00 175 6wtHCpYkDHA45SQEkSncDp7i/FVk/l83AQK+Bs+h+HtwKOfHDXSgECeQTAgiu+58/AmFK83C
00:53:00 176 q5Zczegw6ooiOWwrtEun4io8/JorPRInS95e+UFD5N+q2qL41ZJ5p14Y/umebDQZVNQt9ELC
00:53:00 177 I1jMpAgFv2fPO4IeUlAZKNW3kDZdm8/OozvUIIX6hKETetkXx16jPi2xXAdc10ot8HCNQkKz
00:53:00 178 owwtJzIN+oaMKxrhy/1+GLEpSAQ99+7CTXsFKF7m0q74s2EGNH51uVjTVXwPnWbANxMI2jZH
00:53:00 179 i/vl9prx//VbcepmkCiOpCOslRwsUpjbk/Fw9dNTnaS8CIA3v5/I7VfY9s+IjirAlXm/Xb6v
00:53:00 180 n/zU29TzJ7jKNigf+K168VXKYmu+XV0U1x6E0C9zdTAwHuD2sIS309uvA4iXEzm5L4RJVwST
00:53:00 181 Xvk2t4WKIIVbZq8Lvy8CZUbL9LfCdT5mSHhZhUVSYdveb3rmkeilKPUVfbvPnE1ywMWrG53m
00:53:00 182 YfvJQsngUlevrt0JUBGGQLMesxWnkwyRUInmRBQ22/mSPWjiV1LX/A45/hqwv3cTnCr2W3iK
00:53:00 183 2zlDPRt+u7tlzox4KSj/y2W4ILh6D18fxE5oPuRdMhCph+pVz+dZ/qtDVv82mo9L0yOkN4dV
00:53:00 184 h1pFYoS/V8nMP1Xxy1QnVz1GDYwYtY17jAx8I+LW7G6KZIie5+eResP0KLxbMf8roRMorZ6J
00:53:00 185 qFjXvgnvPrPxDZM3cA5WzCpfXtQtYK15nd9uvzxAx0PCpBvUFyqoxZG6H1ZUg8JrCpaTMUuU
00:53:00 186 ZG6Ohi2DcNhT5ZRi3v2TctFkH/qKTjCboFEARZQuBvqsFlF3wAIWUVclHVTtUKOqPA1vo83n
00:53:00 187 Y7K3WoNWPepxdH1VNMyO0kqA9zQUyBonUrcrxFMb7Sj+sgEKoWLV86YqO10W07Mv/uxJIXL2
00:53:00 188 UK2MSIg1XOqHX4rEeDoJs2wHmmIlRkcM29YFkHFH6HhFkY1JYvlpDc6GoLkBCola0xyzpTVV
00:53:00 189 vURct9jRTouiNdYtWsUByPGIQf3LLWcCEXO+rCFib07MSMVvg5yESeMwLtylf+giWZLogp7m
00:53:00 190 JMo0jr/QpGXnJ8jyyvmYN/1dLKJdiGxIM01Y8N2I96ZQjKYoc8j5JeFytJfxXl8iqTW2m0Kb
00:53:00 191 lBkC64kuls3sLnxbgJ9VAyt0Izxfc4fZZu9M5MYIWDlUvAYYk/Bx7blqiWCmX+4aa4bu6T65
00:53:00 192 0phEjOP6GENYGDcF+4JW4pmzf/PlIuio+jNdmgX2F9o0NPRGVDyRvjKGJ/LcekokWfE61856
00:53:00 193 WPYldq0Xm93j9fWXZZfD60DDCbn9edBL4snZzOyipj7mk0ck+cFvm7qJPVoeL/BdI1L5n5c4
00:53:00 194 orIgsx1Szoiy+6Rh650WgPfjL/jJaB4nu6elxB3Eu4DRC91+8JEgNBmP6lP1J1svaebweyup
00:53:00 195 FJuptfRoItjfy8Ero0VoryDvdB26xKLsoGmr5VCQrmoD5kVF73gilWHgjyOyzTLDmOPYi5fw
00:53:00 196 1vaFgAuzjmWZZMgSc8Z5wBPKweTQBdmTrPExfnsKbSuY0SSqLN/M0e45+vxrwUVq1Bw+XB0m
00:53:00 197 xTZ1TaKCRIRqJMj8i6XmkHYMmlEeRFA/TXxmzEuejs/nQjCIlS8s/jkw4KWW9/giJ1F8m6GH
00:53:00 198 WVqBkvxPxptMByH1mpikNAdn7T+azTPjlU+3smEDAU0zkGXDyFnxCM/pQOZLS6OVo2Gbc7fb
00:53:00 199 2Moum74ndbCMk58EoKO+YDVPXZloClmIFSnP46O/XGMSsHu/MZfxRLei7EL5KStV52zpxrhK
00:53:00 200 /DYTN/VjubLcz6x6S737b2LumC7Y9c9UqeGrIkPytvbGijhKnvkFVpUy6KG+OivY+p6/UnYx
00:53:00 201 ebPyeewHjLMSofDRsDsK/B5R91bSDUth9jLfT9+FHJHALkIQp8QTKSea5A53RS2+l1nqmyHp
00:53:00 202 kC8nBODmYl5yHytF88JN2OUZTYFt3jETfJ58GYMSYNs+8Qi20X/Vr1C5OQMGl3hwAm/ymhEi
00:53:00 203 Veb8oelRgLoN8llYPiQeI/GraexEbBQ9EEWgDuBEjherQSAXa5lKoLvOhxEiJacNEf26yPFm
00:53:00 204 zFp4C0I9WkuTXnjQEnn6EOopU4hVB3P5UnQz4DKoJmXGowg8Uh9xPGAzUN6rdmsAzcyLZcgm
00:53:00 205 YgI11J89rneGgRiEOZzqt8dZedViC+B0jshF27DGf4aG8j804a4ZCVQXD287//Iw/cgrPRKQ
00:53:00 206 pGCiiXhQ5NnP+ODPlJbxCv2XZbcpxjtAS8g8wfrPP63tvDRnscTqLPGIRUHRpWS3oZkIm2By
00:53:00 207 UEQcoALRImgGn0+hOowIdE4I3F6X0AquweaZBqt+aynk68/3JGh5ndsockmc+oHh39TfxHpx
00:53:00 208 m5xQrJLDpTAs+e0qJLWJcfAqS8qmdEi/ALzyXa6aWUmcwQ/beKC15OR7Y6x0heTQ+uEdjKll
00:53:00 209 +odurugspaaqWSJxhwovbdaQrmTifLm6g/MgG0/otiFYh6rbamLibwgG2S7gqfyrRy+1lCh/
00:53:00 210 E/mBAfb/sKACSMH6fh6MV0J5ROLZ9nrdgUKbX/5q75AL+TA5Fs7hv/iZKCH9tTEwJnQ19pwW
00:53:00 211 t/IJDtOsZSwEtSL44aaOgL7OpocuZVFl07ehLoWA6LEViirM4ihsYIUyHbS0EZFbwyaruC75
00:53:00 212 2FgFVmi5/16sTgZc9bKmLKYKmS3Qvm41vvLpGONakiiniSv3JrpyXTnrpZaSrtGyir8VscjG
00:53:00 213 ukTfAaTHekOjFRiteMdg1OCeMA0EfNRTqd66favgl77CMAT/5WLbOn8XopcSYonCkwhabh5X
00:53:00 214 mPPAt7VPuNKmeK9MZMnTBR5ulSquhnvB8/aU2OTqQcYq3F3ygqEdk770YFlmJCVciiU+NnS/
00:53:00 215 ZbpwpR/rrA2gtJREd6ZVjGtCZaH/HzEcrRdkwjf8ff4x0hgV9xAcczo+WGy4I+PBkAE1nDWN
00:53:00 216 6xTXqivQG3fFRV38aq7blWEMdc3J8VYOTEXz79X4QdQmsFgu0zdZpI6iWNW3kyRUGf8SLQ8n
00:53:00 217 VfucZnp9KCCwFpsT6OKo1u8/pNxeuStlU+66Wm1+PuXInBh2CFF5+O29ubOrXSs0HZvzJWM/
00:53:00 218 cNiywy5bDUSkoFKUdxlGnpdIPr5eO8MDAkwINfZFZ09Lbw+OU/XZSvARfIfpArS8hAIWRvc8
00:53:00 219 ay86FAVCvlp7LESQa7OmnfYYeNXYqFedcA8tqdMw73vlWlWWUB4qCVqez6FLQ/eebXlRHwRg
00:53:00 220 DyO/kLne2lsN1OmyUOt3D8S+9EdOPMwCTL4YvchkyTMk/a/ETnoXAizliXFbT3761g2i3bKT
00:53:00 221 JtsEUBQjk61uKYCm59cY6pSQXzmKBJGWXUIn7TWW/K2Huw9I6mlWM6HgkeUdeKtENKwTuG0D
00:53:00 222 uKQDJiUjQmKgY+VuTP8LI3ebMxu8NNQF2Ahdm536lej2kGK3sifYvystqfSL2EWL0Qd3HTaL
00:53:00 223 yV4yxd1Jy7O8ieCXdUBuSzya99kZ63XSI5lJeqZlPaIyPU2Hq9Tie1kDcCKD/nwsksVm0Ljm
00:53:00 224 dAH1itUpaM1HUyinJQE9Vp6FoJjJZVxTta6eBp/QNS9TjxRCiRxPpq9M4PUlEmDe4V+CIw+x
00:53:00 225 sITB1coALIz0cHjDNbdRBsao2egBfTFoeXXrpuBozZBuWNVobSY0wJfEqK5uCdzl+8wZKXUB
00:53:00 226 DsOS8cOZ4THonRexr4votiQzTUgLnyG3hV6QVflpnNs7Ngg1OqNM737UsyFr+ybM6e3MQkRM
00:53:00 227 kqxu5YF6tZAFeaVSEJ4XTYjqE6QOLi8OqvfJIA27lV9j5LaTNScB9KagXsszfflyt8KVAiEC
00:53:00 228 FUbEesxWrpbiJ6PoWEMfnJ2q97sAhcKIV5YXodby4L7mbNMmr4yVeNramL4M6ag91WpMUMLC
00:53:00 229 60qucQQ91MGUNmxz5wlXWCGkrNh4TItESD5LCqOmTVAstgYxyoS3su9BngmTY4eaVaoZGRf9
00:53:00 230 ZjbLfks7PakU2Pc0NWh6EahhY5o91HTI7ODLFScCJLUKKdVlpnWqLpVj06rzDH9lYy0FSALA
00:53:00 231 EVae13cKQiU7wPcqMc0BKc2rK1Bd9iOLFP6sd5+8fhYQ5ckm1vddd8eYJnma63eDzjYKLjuv
00:53:00 232 ayBaUv3CIa1SLxrafVboZheXySEWK3g6MnB7vTxnJ8FjG+W1TjDAQjfUwSEnCr/3rPaY9kN7
00:53:00 233 NuFgDK6PM5FXJhu0r7XkJCEKG6o=
00:53:00 234
00:53:00 235 /
Warning: Package Body created with compilation errors.
Elapsed: 00:00:00.07
00:53:00 SQL> spool off;
Dramatic Effect – And Oracle said No, you still need to dig down more to understand the issue.
Main Problem was wrapped codes. I tried to find a oracle utility which will un-wrap the code for me. But I found a comment from my fav. Mr Connor Mcdonald – on post -> How to unwrap code?
We don’t provide a native mechanism for unwrapping PL/SQL, but there are tools on the internet. We don’t support or guarantee the correctness of validity of such tools.
Connor Mcdonald
Unwrapping the code of DBMS_AUDIT_MGMT
I needed a small hint here hence I thought of giving a try on https://www.codecrete.net/UnwrapIt/
2287 MERGE INTO SYS.DAM_LAST_ARCH_TS$ D
2288 USING (SELECT COUNT(AUDIT_TRAIL_TYPE#) R_CNT
2289 FROM SYS.DAM_LAST_ARCH_TS$
2290 WHERE RAC_INSTANCE# = M_RAC_INST_NO AND
2291 AUDIT_TRAIL_TYPE# = M_ATRAIL_TYPE) S
2292 ON (S.R_CNT = 1)
2293 WHEN MATCHED THEN
2294 UPDATE SET D.LAST_ARCHIVE_TIMESTAMP = LAST_ARCHIVE_TIME
2295 WHERE D.RAC_INSTANCE# = M_RAC_INST_NO AND
2296 D.AUDIT_TRAIL_TYPE# = M_ATRAIL_TYPE
2297 WHEN NOT MATCHED THEN
2298 INSERT VALUES(M_ATRAIL_TYPE, M_RAC_INST_NO,
2299 LAST_ARCHIVE_TIME);
Lucky me unwrapped package body pointed the exact table which caused the problem here.
Now it was time to resolve the issue.
What Worked for Us
Before going ahead with the workaround, I thought of creating a restore point –
create restore point <name> guarantee flashback database;
Once I have completed the creation of restore point I Shutdown the database. And open the database in upgrade mode.
SQL>shutdown immediate;
SQL>startup upgrade;
Starting the database in upgrade mode is important else database will not allow you to do a ddl on SYS objects.
Now Drop the columns
SQL>alter table DAM_LAST_ARCH_TS$ drop (DATABASE_ID,CONTAINER_GUID);
Shutdown the database and open the database in normal mode.
SQL>shutdown immediate;
SQL>startup
Now run Utlrp.sql and check the status of the object.
SQL>@?/rdbms/admin/utlrp.sql
And it solved the issue for us. Now DBMS_AUDIT_MGMT is valid.