本檔案主要是用來解決物理備庫的性能監控問題,我們都知道,當物理備庫出現問題的時候,由于備庫是只讀模式的,所以無法在備庫上使用AWR/Statspack/ash/addm等性能報告來分析,因此,在故障分析和調優應用的時候,只能手動收集相關的統計資料資訊,這樣給我們的作業帶來了巨大的不變,隨著Oracle 11.1 ADG的出現,被遺忘很久的Statspack有了新的用途,那就是可以用來監控備庫性能,
參考資料
MOS檔案: Installing and Using Standby Statspack in 11g (檔案 ID 454848.1)
安裝要求
備庫狀態為read-only模式
備庫狀態為正在應用日志的狀態
Statspack的安裝
主庫端安裝statspack
執行安裝腳本如下:
sqlplus / as sysdba
SQL> @?/rdbms/admin/spcreate.sql
注:如果你的主庫已創建perstat用戶,此腳本可以跳過,如果你的主庫上沒有該模式物件,則需要創建,創建的程序中,會要求填寫如下資訊:
perfstat用戶的密碼(自定義)
模式物件默認使用的表空間(建議使用SYSAUX)
模式物件默認使用的臨時表空間( 建議使用系統,例:TEMP)
主端安裝standby statspack
執行安裝腳本如下:
sqlplus / as sysdba
SQL> @?/rdbms/admin/sbcreate
注:此腳本在執行程序中會創建standby statspack的模式物件,即stdbyperf,安裝程序中會有如下提示資訊:
提示輸入stdbyperf用戶的密碼(自定義)
模式物件默認使用的表空間(建議使用SYSAUX)
模式物件默認使用的臨時表空間(建議使用系統,例:TEMP)
創建完成之后,會自動呼叫sbaddins.sql腳本,這個腳本的目的是用來配置Statpack添加第一個備庫實體的資訊,會提示輸入,如下資訊:
連接到物理備庫的TNS 的本地服務名
需要提供perfstat用戶的密碼
在Statspack配置資訊中手動添加新的實體
使用如下用戶登錄,執行腳本如下:
SQL> connect stdbyperf/your_password
SQL> @?/rdbms/admin/sbaddins
會提示輸入如下資訊:
1.連接到物理備庫的TNS 的本地服務名
2.需要提供perfstat用戶的密碼
手動收集備庫的性能資料* *
執行腳本如下
SQL> connect stdbyperf/your_password
SQL> exec statspack_<db_unique_name>_<instance_name>.snap
生成備庫統計資訊報告
執行腳本如下
SQL> connect stdbyperf/your_password
SQL>@?/rdbms/admin/sbreport
洗掉快照資訊
執行腳本如下:
SQL>connect stdbyperf/your_password
SQL>@?/rdbms/admin/sbpurge
洗掉備庫的Statspack的配置
執行腳本如下:
SQL>connect stdbyperf/your_password
SQL> @?/rdbms/admin/sbdelins
洗掉備庫的Statspack
SQL> connect / as sysdba
SQL> @?/rdbms/admin/sbdrop
配置自動收集快照任務
1.查看job
SQL> connect stdbyperf/your_password
SQL>select job,schema_user,last_date,what,instance from user_jobs;
2.查詢DB_LINK和PACKAGE_NAME
SQL> col DB_UNIQUE_NAME for a5
SQL> col PACKAGE_NAME for a25
SQL> select * from STATS$STANDBY_CONFIG;
DB_UN INST_NAME DB_LINKPACKAGE_NAME
--- ------------ ---------------- -----------------------
ST wxxrdb STDBY_LINK_st STATSPACK_ST_wxxrdb
3.創建JOB任務
variable jobno number;
variable instno number;
begin
select instance_number into :instno from v$instance@ STDBY_LINK_st;
dbms_job.submit(:jobno, 'STATSPACK_ST_wxxrdb.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
commit;
end;
/
注:紅字部分需要根據上一步查詢出來的DB_LINK和PACKAGE_NAME的值,時間默認為1個小時,可以自行修改
4.洗掉JOB任務
SQL>exec dbms_job.remove('job_id');
自動洗掉快照
執行腳本如下:
stdby_del_snap.sh
注:將此腳本添加到定時任務中即可,建議在系統空閑的時間段執行
腳本存放目錄如下及洗掉規則:
/oracle/script/stdby_del_snap/bin
洗掉規則:快照保存時間為7天,每天凌晨1點執行一次腳本:
00 1 * * * /oracle/script/stdby_del_snap/bin/stdby_del_snap.sh >>/oracle/script/stdby_del_snap/log/stdby_del_snap.log 2>&1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/11268.html
標籤:Oracle
