初始化标准主要包括数据库实例安装完成之后对数据库做的一系列设置。
运维一般都是使用脚本来完成以上工作,
用init.sh 脚本来接受用户输入参数,调用sql脚本进行数据库设置。
--init.sh
read -p "Please input your SID:" SID
read -p "Please input your ip:" ip
read -p "Please input your vip:" vip
read -p "Please input listenering port:" port
echo "SID=$SID,ip=$ip,vip=$vip,port=$port Do you want to continue?"
read -p "Continue? (y/n):" continue
if [ "$continue" == "n" ];then
echo "Nothing to do,Bye~"
exit 0
elif [ "$continue" != "y" -a "$continue" != "n" ]; then
echo "Please input 'y' or 'n'!"
exit 0
else
change_local_listener="alter system set local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST="${vip}")(PORT="${port}")))' scope=both;"
echo $change_local_listener
log_archive_format="alter system set LOG_ARCHIVE_FORMAT='"${SID}"_%t_%s_%r.arc' scope=spfile;"
echo $log_archive_format
sqlplus / as sysdba <<EOF
$change_local_listener
alter system set audit_trail=DB scope=spfile;
alter system set shared_pool_size=2048M scope=spfile;
alter system set shared_pool_reserved_size=160M scope=spfile;
alter system set large_pool_size=176M scope=spfile;
alter system set db_cache_size=4096M scope=spfile;
alter system set streams_pool_size=128M scope=spfile;
alter system set java_pool_size=80M scope=spfile;
Alter system set DB_SECUREFILE='ALWAYS' scope=both;
Alter system set parallel_execution_message_size=32768 scope=spfile;
alter system reset memory_max_target;
alter system reset sga_max_size;
alter system reset sga_target;
@audit;
alter system set recyclebin=off scope=spfile;
$log_archive_format
alter user sys identified by crbc1234 account unlock;
@db_initial;
alter user SYSTEM identified by values 'AE07DCF086306FD5' account lock;
alter user OUTLN identified by values 'AE07DCF086306FD5' account lock;
alter user DBSNMP identified by values 'AE07DCF086306FD5' account lock;
alter user OLAPSYS identified by values 'AE07DCF086306FD5' account lock;
alter user SI_INFORMTN_SCHEMA identified by values 'AE07DCF086306FD5' account lock;
alter user ORDPLUGINS identified by values 'AE07DCF086306FD5' account lock;
alter user APPQOSSYS identified by values 'AE07DCF086306FD5' account lock;
alter user SYSMAN identified by values 'AE07DCF086306FD5' account lock;
alter user WMSYS identified by values 'AE07DCF086306FD5' account lock;
alter user EXFSYS identified by values 'AE07DCF086306FD5' account lock;
alter user CTXSYS identified by values 'AE07DCF086306FD5' account lock;
alter user ORDSYS identified by values 'AE07DCF086306FD5' account lock;
alter user MDSYS identified by values 'AE07DCF086306FD5' account lock;
alter user ORACLE_OCM identified by values 'AE07DCF086306FD5' account lock;
alter user SCOTT identified by values 'AE07DCF086306FD5' account lock;
alter user DIP identified by values 'AE07DCF086306FD5' account lock;
alter user MDDATA identified by values 'AE07DCF086306FD5' account lock;
exit
EOF
cat >> $ORACLE_HOME/network/admin/tnsnames.ora <<EOF
$SID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = $vip)(PORT = $port))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = $SID)
(INSTANCE_NAME = $SID)
)
)
cat11g =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.200.8.35)(PORT = 1528))
)
(CONNECT_DATA =
(SID = cat11g)
)
)
EOF
cat >> $ORACLE_HOME/network/admin/listener.ora <<EOF
$SID =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = $vip)(PORT = $port))
)
)
)
EOF
cat >> $ORACLE_HOME/network/admin/sqlnet.ora <<EOF
SQLNET.EXPIRE_TIME=10
EOF
rman target / catalog rman11g/rman11g@cat11g <<EOF
register database;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 90 DAYS;
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO 'SBT_TAPE';
exit
EOF
echo "0 6 * * 0 find $ORACLE_BASE/admin/$ORACLE_SID/audit -name '*.aud' -mtime +14 -exec rm {} \\" >> crontab_file
crontab crontab_file
fi
-
--db_init
accept sid char prompt 'sid is:'
define password=crbc1234
spool db_initial_01.log
conn sys/&password as sysdba
----------------------------------------------------------------
ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;
alter system set deferred_segment_creation=false scope=both;
alter system set sec_case_sensitive_logon = false scope=both;
alter system set db_writer_processes = 4 scope=spfile;
alter database set default smallfile tablespace;
alter system set optimizer_secure_view_merging=false scope=spfile;
alter profile default limit failed_login_attempts unlimited;
alter profile default limit password_grace_time unlimited;
alter profile default limit password_lock_time unlimited;
alter profile default limit password_life_time unlimited;
noaudit alter system;
noaudit create external job;
noaudit create session;
noaudit role;
noaudit profile;
noaudit grant any role;
noaudit system grant;
noaudit create any procedure;
noaudit alter any procedure;
noaudit drop any procedure;
noaudit alter profile;
noaudit drop profile;
noaudit grant any privilege;
noaudit create any library;
noaudit exempt access policy;
noaudit grant any object privilege;
noaudit create any job;
noaudit system audit;
noaudit directory;
----------------------------------------------------------------
-- 修改统计信息收集策略
-- 关闭直方图收集策略
exec dbms_stats.set_global_prefs(pname=>'METHOD_OPT', pvalue=>'FOR ALL COLUMNS SIZE 1');
-- 打开publish
exec dbms_stats.set_global_prefs(pname=>'PUBLISH', pvalue=>'TRUE');
exec dbms_stats.alter_stats_history_retention(365);
exec dbms_workload_repository.modify_snapshot_settings(retention=>129600);
exec dbms_spm.configure('space_budget_percent',30);
exec dbms_auto_task_admin.disable(client_name=>'auto space advisor',operation=>NULL,window_name=>NULL);
exec dbms_auto_task_admin.disable(client_name=>'sql tuning advisor',operation=>NULL,window_name=>NULL);
exec dbms_stats.gather_dictionary_stats;
alter system set aq_tm_processes = 1 scope = both;
exec dbms_stats.gather_fixed_objects_stats;
alter system set aq_tm_processes = 0 scope = both;
--reset aq_tm_processes
alter system reset aq_tm_processes scope = spfile;
-- 调整supplemental_log
alter database add supplemental log data;
alter database add supplemental log data (primary key,unique index) columns;
-- 打开数据库的force logging
alter database force logging;
-- 关闭sqlplan baseline自动捕获
alter system set optimizer_capture_sql_plan_baselines = false scope = both;
--reset optimizer_capture_sql_plan_baselines
--alter system reset optimizer_capture_sql_plan_baselines scope = spfile;
-- 关闭resource_manager
--设定参数关闭RESOURCE_MANAGER
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = '' SCOPE=BOTH;
--- 将scheduler 的resource plan 指定成一个空的plan
execute dbms_scheduler.set_attribute('WEEKNIGHT_WINDOW','RESOURCE_PLAN','');
execute dbms_scheduler.set_attribute('WEEKEND_WINDOW','RESOURCE_PLAN','');
--@D:\w_dba\oraclesec\crbank_pw_verify_function.sql
----------------------------------------------------------------
-- 该function只能由sys创建
-----------------------------------------------------------------
CREATE OR REPLACE FUNCTION crbank_pw_verify_function
(username varchar2,
password varchar2,
old_password varchar2)
RETURN boolean IS
n boolean;
m integer;
differ integer;
isdigit boolean;
ischar boolean;
ispunct boolean;
digitarray varchar2(20);
chararray varchar2(52);
BEGIN
digitarray:= '0123456789';
chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
-- Check if the password is same as the username
IF upper(password) = upper(username) THEN
raise_application_error(-20001, 'Password same as user');
END IF;
-- Check for the minimum length of the password
IF length(password) < 8 THEN
raise_application_error(-20002, 'Password length less than 8');
END IF;
-- Check if the password is too simple. A dictionary of words may be
-- maintained and a check may be made so as not to allow the words
-- that are too simple for the password.
IF NLS_LOWER(password) IN ('welcome', 'database', 'account', 'user', 'password', 'oracle', 'computer', 'abcd') THEN
raise_application_error(-20002, 'Password too simple');
END IF;
-- Check if the password contains at least one letter, one digit and one
-- punctuation mark.
-- 1. Check for the digit
isdigit:=FALSE;
m := length(password);
FOR i IN 1..10 LOOP
FOR j IN 1..m LOOP
IF substr(password,j,1) = substr(digitarray,i,1) THEN
isdigit:=TRUE;
GOTO findchar;
END IF;
END LOOP;
END LOOP;
IF isdigit = FALSE THEN
raise_application_error(-20003, 'Password should contain at least one digit and one character');
END IF;
-- 2. Check for the character
<<findchar>>
ischar:=FALSE;
FOR i IN 1..length(chararray) LOOP
FOR j IN 1..m LOOP
IF substr(password,j,1) = substr(chararray,i,1) THEN
ischar:=TRUE;
GOTO endsearch;
END IF;
END LOOP;
END LOOP;
IF ischar = FALSE THEN
raise_application_error(-20003, 'Password should contain at least one digit and one character');
END IF;
<<endsearch>>
-- Check if the password differs from the previous password by at least
-- 5 letters
IF old_password = '' THEN
raise_application_error(-20004, 'Old password is null');
END IF;
-- Everything is fine; return TRUE ;
differ := length(old_password) - length(password);
IF abs(differ) < 5 THEN
IF length(password) < length(old_password) THEN
m := length(password);
ELSE
m := length(old_password);
END IF;
differ := abs(differ);
FOR i IN 1..m LOOP
IF substr(password,i,1) != substr(old_password,i,1) THEN
differ := differ + 1;
END IF;
END LOOP;
IF differ < 5 THEN
raise_application_error(-20004, 'Password should differ by at least 5 characters');
END IF;
END IF;
-- Everything is fine; return TRUE ;
RETURN(TRUE);
END;
/
------------------------
--CREATE PROFILE crbank_pw_profile LIMIT
--FAILED_LOGIN_ATTEMPTS 5
--PASSWORD_GRACE_TIME 1
--PASSWORD_LIFE_TIME 60
--PASSWORD_REUSE_TIME UNLIMITED
--PASSWORD_REUSE_MAX 10
--PASSWORD_LOCK_TIME 1/24
--PASSWORD_VERIFY_FUNCTION crbank_pw_verify_function;
--@d:\w_dba\oraclesec\pw_profile.sql
CREATE PROFILE crbank_pw_profile LIMIT
/*连续登录3次失败,则用户被锁*/ FAILED_LOGIN_ATTEMPTS 3
/*如果用户连续3次登录失败,账号被锁,指定被锁的时间长度*/ PASSWORD_LOCK_TIME 999
/*提示密码过期,仍能用原密码登录的天数*/ PASSWORD_GRACE_TIME 7
/*密码有效的天数,即需要用户至少60天修改一次密码*/ PASSWORD_LIFE_TIME 60
/*需要多少天后,该密码可以被重用,这里天数不受限制*/ PASSWORD_REUSE_TIME UNLIMITED
/*当前密码被重用之前,最少需要修改10次密码 */ PASSWORD_REUSE_MAX 10
/*使用的密码规则验证的函数*/ PASSWORD_VERIFY_FUNCTION crbank_pw_verify_function
;
alter profile crbank_pw_profile limit idle_time 10;
alter profile default limit failed_login_attempts unlimited;
/************************************************dbmgr begin*******************************************/
/*创建dbmgr用户*/
create user dbmgr identified by crbc1234
default tablespace users
temporary tablespace temp
quota unlimited on users
profile crbank_pw_profile;
audit insert table, delete table, update table
by dbmgr
by session
whenever successful;
audit connect by dbmgr;
grant CREATE SESSION to dbmgr;
grant SELECT ANY TABLE to dbmgr;
grant dba to dbmgr;
grant select on v_$session to dbmgr;
grant select on v_$statname to dbmgr;
grant select on v_$sesstat to dbmgr;
grant select on dba_users to dbmgr;
grant create user to dbmgr;
grant drop user to dbmgr;
grant create any trigger to dbmgr;
grant alter user to dbmgr;
grant alter system to dbmgr;
grant exp_full_database To dbmgr With Admin Option ;
grant select on Dba_Role_Privs to dbmgr ;
/************************************************dbmgr end*******************************************/
/*****************************ovsee begin******************************************/
conn sys/&password as sysdba
create user ovsee identified by crbc1234
default tablespace users
temporary tablespace temp
quota 20m on users;
grant SELECT_CATALOG_ROLE to ovsee;
grant ALTER SESSION to ovsee;
grant CREATE LIBRARY to ovsee;
grant CREATE PROCEDURE to ovsee;
grant CREATE SEQUENCE to ovsee;
grant CREATE SESSION to ovsee;
grant CREATE TABLE to ovsee;
grant CREATE VIEW to ovsee;
grant select on sys.dba_data_files to ovsee;
grant select on sys.dba_segments to ovsee;
grant select on sys.dba_free_space to ovsee;
grant select on sys.dba_extents to ovsee;
grant select on v_$INSTANCE to ovsee;
grant select on v_$session_wait to ovsee;
grant select on v_$lock to ovsee;
grant select on v_$session_event to ovsee;
grant select on v_$session to ovsee;
grant select on v_$filestat to ovsee;
grant select on v_$sysstat to ovsee;
grant select on v_$locked_object to ovsee;
grant select on v_$process to ovsee;
grant select on v_$rollname to ovsee;
grant select on v_$sesstat to ovsee;
grant select on v_$mystat to ovsee;
grant select on v_$STATNAME to ovsee;
grant select on v_$datafile to ovsee;
conn ovsee/&password
/********************************************
创建表DG_UNRECOVERABLE_CHANGE 和GET_TBL_INFO_ERR
********************************************/
create table DG_UNRECOVERABLE_CHANGE
(
FILE# NUMBER,
NAME VARCHAR2(513),
UNRECOVERABLE_CHANGE# NUMBER,
UNRECOVERABLE_TIME DATE
)
tablespace users;
create or replace procedure dg_check_unrecoverable_change is
-- Find out any record in v$datafile has different unrecoverable change number from the saved records
Cursor c_datafile is
select df.file#, df.name, df.UNRECOVERABLE_CHANGE#, df.UNRECOVERABLE_TIME
from v$datafile df, dg_unrecoverable_change uc
where df.file# = uc.file# and
df.UNRECOVERABLE_CHANGE# <> uc.UNRECOVERABLE_CHANGE#;
D_START_DATE DATE;
Begin
SELECT SYSDATE INTO D_START_DATE FROM DUAL;
DBMS_OUTPUT.PUT_LINE('Start unrecoverable change checking '
|| to_char(D_START_DATE, 'DD/MM/YYYY HH24:MI:SS'));
-- For each entry with different unrecoverable change
FOR r_df in c_datafile LOOP
DBMS_OUTPUT.PUT_LINE('Unrecoverable Change : File#:' || r_df.FILE# || ' Datafile:' ||r_df.NAME ||
' Unrecoverable : '||r_df.UNRECOVERABLE_CHANGE# ||'-' || r_df.UNRECOVERABLE_TIME);
END LOOP;
-- Refresh the dg_unrecoverable_change table
delete from dg_unrecoverable_change;
insert into dg_unrecoverable_change select
FILE#, name, UNRECOVERABLE_CHANGE#, UNRECOVERABLE_TIME
from v$datafile;
COMMIT;
END;
/
/*************************************ovsee end *********************************************/
-------------begin dbmonopr------------------
conn sys/&password as sysdba
CREATE USER dbmonopr IDENTIFIED BY dbmonopr123
default tablespace users
temporary tablespace temp
quota unlimited on users;
audit insert table, delete table, update table
by dbmonopr
by session
whenever successful;
audit connect by dbmonopr;
grant create session,alter session to dbmonopr;
grant create table to dbmonopr;
grant create sequence to dbmonopr;
grant create trigger to dbmonopr;
grant create procedure to dbmonopr;
grant create view to dbmonopr;
grant select on dba_segments to dbmonopr;
grant select on dba_free_space to dbmonopr;
grant select on dba_data_files to dbmonopr;
grant select on dba_temp_files to dbmonopr;
--------------init--------------------------
Alter system set db_securefile='ALWAYS';
exec dbms_workload_repository.modify_snapshot_settings(interval=>15,retention=>62*24*60);
exec dbms_spm.configure('SPACE_BUDGET_PERCENT',30);
exec dbms_stats.alter_stats_history_retention(365);
exec dbms_stats.set_param('method_opt','for all columns size 1');
exec dbms_auto_task_admin.disable(client_name => 'sql tuning advisor', operation => NULL, window_name => NULL);
exec dbms_auto_task_admin.disable(client_name => 'auto space advisor', operation => NULL, window_name => NULL);
-
--audit
----0,检查当前数据库的失效对象。
select OWNER,OBJECT_NAME,OBJECT_TYPE,status,TIMESTAMP,LAST_DDL_TIME from dba_objects where STATUS ='INVALID';
---1,初始化清理对象和间隔,这步会对AUD$表做全表扫描,会比较慢,增加先调整表空间到users表空间。
BEGIN
DBMS_AUDIT_MGMT.init_cleanup(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,
default_cleanup_interval => 168 );
END;
/
BEGIN
DBMS_AUDIT_MGMT.init_cleanup(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
default_cleanup_interval => 168 );
END;
/
BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_location_value => 'USERS');
END;
/
BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,
audit_trail_location_value => 'USERS');
END;
/
---2,检查设置以及是否初始化完成。
COLUMN parameter_name FORMAT A30
COLUMN parameter_value FORMAT A20
COLUMN audit_trail FORMAT A20
SELECT * FROM dba_audit_mgmt_config_params WHERE PARAMETER_NAME = 'DEFAULT CLEAN UP INTERVAL';
SET SERVEROUTPUT ON
BEGIN
IF DBMS_AUDIT_MGMT.is_cleanup_initialized(DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD) THEN
DBMS_OUTPUT.put_line('YES');
ELSE
DBMS_OUTPUT.put_line('NO');
END IF;
END;
/
---设置保留时
BEGIN
DBMS_AUDIT_MGMT.set_last_archive_timestamp(
audit_trail_type => dbms_audit_mgmt.audit_trail_aud_std,
last_archive_time => SYSTIMESTAMP-365);
END;
/
BEGIN
DBMS_AUDIT_MGMT.set_last_archive_timestamp(
audit_trail_type => dbms_audit_mgmt.audit_trail_fga_std,
last_archive_time => SYSTIMESTAMP-365);
END;
/
---检查默认的保留时间
SELECT * FROM dba_audit_mgmt_last_arch_ts;
---创建清理的schedule
BEGIN
DBMS_AUDIT_MGMT.create_purge_job(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
audit_trail_purge_interval => 168 /* hours */,
audit_trail_purge_name => 'PURGE_STD_AUDIT_TRAILS',
use_last_arch_timestamp => TRUE);
END;
/
---修改清理job的运行时间为每日凌晨2点5分。
BEGIN
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYS.PURGE_STD_AUDIT_TRAILS'
,attribute => 'START_DATE'
,value => TO_TIMESTAMP_TZ('2013/08/10 02:05:00.000000 +08:00','yyyy/mm/dd hh24:mi:ss.ff tzr')
);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYS.PURGE_STD_AUDIT_TRAILS'
,attribute => 'REPEAT_INTERVAL'
,value => 'FREQ=WEEKLY; BYDAY=SAT'
);
END;
/
--创建一个schedule去每天设置保留时间为365天前
BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'
,start_date => TO_TIMESTAMP_TZ('2013/08/10 01:05:00.000000 +08:00','yyyy/mm/dd hh24:mi:ss.ff tzr')
,repeat_interval => 'FREQ=WEEKLY; BYDAY=SAT'
,end_date => NULL
,job_class => 'DEFAULT_JOB_CLASS'
,job_type => 'PLSQL_BLOCK'
,job_action => 'BEGIN
DBMS_AUDIT_MGMT.set_last_archive_timestamp(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
last_archive_time => SYSTIMESTAMP-365);
DBMS_AUDIT_MGMT.set_last_archive_timestamp(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,
last_archive_time => SYSTIMESTAMP-365);
END;'
,comments => NULL
);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'
,attribute => 'RESTARTABLE'
,value => FALSE);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'
,attribute => 'LOGGING_LEVEL'
,value => SYS.DBMS_SCHEDULER.LOGGING_OFF);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'
,attribute => 'MAX_FAILURES');
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'
,attribute => 'MAX_RUNS');
BEGIN
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'
,attribute => 'STOP_ON_WINDOW_CLOSE'
,value => FALSE);
EXCEPTION
-- could fail if program is of type EXECUTABLE...
WHEN OTHERS THEN
NULL;
END;
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'
,attribute => 'JOB_PRIORITY'
,value => 3);
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'
,attribute => 'SCHEDULE_LIMIT');
SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'
,attribute => 'AUTO_DROP'
,value => TRUE);
SYS.DBMS_SCHEDULER.ENABLE
(name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD');
END;
/
--编译对象,使用sys编译。
alter view sys.DBA_FGA_AUDIT_TRAIL compile;
alter view sys.DBA_COMMON_AUDIT_TRAIL compile;
alter view SYS.DBA_AUDIT_EXISTS compile;
alter view SYS.DBA_AUDIT_OBJECT compile;
alter view SYS.DBA_AUDIT_SESSION compile;
alter view SYS.DBA_AUDIT_STATEMENT compile;
alter view SYS.USER_AUDIT_OBJECT compile;
alter view SYS.USER_AUDIT_SESSION compile;
alter view SYS.USER_AUDIT_STATEMENT compile;
alter view SYS.USER_AUDIT_TRAIL compile;
alter public synonym DBA_COMMON_AUDIT_TRAIL compile;
alter public synonym DBA_FGA_AUDIT_TRAIL compile;
alter public synonym DBA_AUDIT_EXISTS compile;
alter public synonym USER_AUDIT_OBJECT compile;
alter public synonym DBA_AUDIT_OBJECT compile;
alter public synonym USER_AUDIT_STATEMENT compile;
alter public synonym DBA_AUDIT_STATEMENT compile;
alter public synonym USER_AUDIT_SESSION compile;
alter public synonym DBA_AUDIT_SESSION compile;
alter public synonym USER_AUDIT_TRAIL compile;
alter public synonym DBA_AUDIT_TRAIL compile;
--检查2个schedule是否设置。及运行时间是否是每天的凌晨1点5分和2点5分
SELECT owner,job_name,next_run_date FROM DBA_SCHEDULER_JOBS WHERE job_name IN ('PURGE_STD_AUDIT_TRAILS','MOVE_LAST_TIMESTAMP_FORWARD');