oracle数据库初始化标准

初始化标准主要包括数据库实例安装完成之后对数据库做的一系列设置。

运维一般都是使用脚本来完成以上工作,

用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');

 

转载于:https://my.oschina.net/u/3862440/blog/2208536

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值