Oracle Linux 7使用cron來管理Oracle ASM審計檔案目錄的增長

eric0435發表於2018-08-01

使用cron來管理Oracle ASM審計檔案目錄的增長
如果不對Oracle ASM例項的審計檔案目錄進行定期維護那麼它將會包含大量的審計檔案。如果存在大理審計檔案可能會造成檔案系統耗盡磁碟空間或indoes,或者由於檔案系統擴充套件限制而造成Oracle執行緩慢,還有可能造成Oracle ASM例項在啟動時hang住。這裡將介紹如何使用Linux的cron工具來管理Oracle ASM審計檔案目錄的檔案數量。

下面將介紹具體的操作,而且這些操作必須對於RAC環境中的每個節點執行。
1.識別Oracle ASM審計目錄
這裡有三個目錄可能存在Oracle ASM的審計檔案。所有三個目錄都要控制讓其不要過度增長。兩個預設目錄是基於Oracle ASM例項啟動時環境變數的設定。為了判斷系統右的預設目錄,以安裝Grid Infrastructure軟體的使用者(grid)登入系統,設定環境變數,因此可以連線到Oracle ASM例項,執行echo命令。

[grid@cs1 ~]$ . /usr/local/bin/oraenv
ORACLE_SID = [+ASM1] ? +ASM1
The Oracle base remains unchanged with value /u01/app/grid
[grid@cs1 ~]$ echo $ORACLE_HOME/rdbms/audit
/u01/app/product/12.2.0/crs/rdbms/audit
[grid@cs1 ~]$ echo $ORACLE_BASE/admin/$ORACLE_SID/adump
/u01/app/grid/admin/+ASM1/adump
[grid@cs2 ~]$ . /usr/local/bin/oraenv
ORACLE_SID = [+ASM2] ? 
The Oracle base remains unchanged with value /u01/app/grid
[grid@cs2 ~]$ echo $ORACLE_HOME/rdbms/audit
/u01/app/product/12.2.0/crs/rdbms/audit
[grid@cs2 ~]$ echo $ORACLE_BASE/admin/$ORACLE_SID/adump
/u01/app/grid/admin/+ASM2/adump

第三個Oracle ASM審計目錄可以使用SQL*Plus登入Oracle ASM例項後進行查詢

grid@cs1 ~]$ sqlplus / as sysasm
SQL*Plus: Release 12.2.0.1.0 Production on Wed Aug 1 14:13:47 2018
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> select value from v$parameter where name = 'audit_file_dest';
VALUE
--------------------------------------------------------------------------------
/u01/app/product/12.2.0/crs/rdbms/audit

這裡第三個目錄與第一個目錄是相同的

2.給Grid Infrastructure軟體使用者使用cron的許可權
Oracle ASM的審計檔案是由Grid Infrastructure軟體使用者所建立的,它通常為oracle或grid。移動或刪除審計檔案的命令必須由Grid Infrastructure軟體使用者來執行。在Oracle Linux中如果/etc/cron.allow 檔案存在,只有在檔案中出現其登入名稱的使用者可以使用 crontab 命令。root 使用者的登入名必須出現在cron.allow 檔案中,如果/etc/cron.deny 檔案存在,並且使用者的登入名列在其中,那麼這些使用者將不能執行crontab命令。如果只有/etc/cron.deny 檔案存在,任一名稱沒有出現在這個檔案中的使用者可以使用crontab 命令。在Oracle Linux 7.1中只有/etc/cron.deny檔案,而且訪檔案沒有任何使用者存在,就是說所有使用者都能執行crontab命令。

[root@cs1 etc]# cat cron.deny
[root@cs1 etc]# ls -lrt crontab
-rw-r--r--. 1 root root 451 Apr 29  2014 crontab
[root@cs1 etc]# chmod 777 crontab
[root@cs1 etc]# ls -lrt crontab
-rwxrwxrwx. 1 root root 451 Apr 29  2014 crontab

3.新增命令到crontab來管理審計檔案
以Grid Infrastructure軟體使用者來向crontab檔案增加命令

[grid@cs1 ~]$ crontab -e
0 6 * * sun /usr/bin/find /u01/app/product/12.2.0/crs/rdbms/audit /u01/app/grid/admin/+ASM1/adump /u01/app/product/12.2.0/crs/rdbms/audit -maxdepth 1 -name '*.aud' -mtime +30 -delete

這個crontab條目在每個星期日的上午6點執行find命令,find命令將從三個審計目錄中找出儲存時間超過30天的所有審計檔案將其刪除。如果想要儲存審計檔案更長的時間,那麼在執行find命令後,將相關審計檔案移到備份目錄中,例如:

0 6 * * sun /usr/bin/find /u01/app/product/12.2.0/crs/rdbms/audit /u01/app/grid/admin/+ASM1/adump /u01/app/product/12.2.0/crs/rdbms/audit -maxdepth 1 -name '*.aud' -mtime +30 -execdir 
/bin/mv {} /archived_audit_dir \;

檢查crontab

[grid@cs1 ~]$ crontab -l
0 6 * * sun /usr/bin/find /u01/app/product/12.2.0/crs/rdbms/audit /u01/app/grid/admin/+ASM1/adump /u01/app/product/12.2.0/crs/rdbms/audit -maxdepth 1 -name '*.aud' -mtime +30 -delete


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2168883/,如需轉載,請註明出處,否則將追究法律責任。

相關文章