本文檔主要是用來解決物理備庫的性能監(jiān)控問題。我們都知道,,當物理備庫出現(xiàn)問題的時候,,由于備庫是只讀模式的,所以無法在備庫上使用AWR/Statspack/ash/addm等性能報告來分析,。因此,,在故障分析和調優(yōu)應用的時候,只能手動收集相關的統(tǒng)計數(shù)據(jù)信息,,這樣給我們的工作帶來了巨大的不變,。隨著Oracle 11.1 ADG的出現(xiàn),被遺忘很久的Statspack有了新的用途,,那就是可以用來監(jiān)控備庫性能,。
參考資料 MOS文檔: Installing and Using Standby Statspack in 11g (文檔 ID 454848.1)
安裝要求 備庫狀態(tài)為read-only模式 備庫狀態(tài)為正在應用日志的狀態(tài)
Statspack的安裝 主庫端安裝statspack 執(zhí)行安裝腳本如下: sqlplus / as sysdba SQL> @?/rdbms/admin/spcreate.sql 注:如果你的主庫已創(chuàng)建perstat用戶,,此腳本可以跳過。如果你的主庫上沒有該模式對象,,則需要創(chuàng)建,。創(chuàng)建的過程中,會要求填寫如下信息:
perfstat用戶的密碼(自定義) 模式對象默認使用的表空間(建議使用SYSAUX) 模式對象默認使用的臨時表空間( 建議使用系統(tǒng),例:TEMP) 主端安裝standby statspack 執(zhí)行安裝腳本如下: sqlplus / as sysdba SQL> @?/rdbms/admin/sbcreate 注:此腳本在執(zhí)行過程中會創(chuàng)建standby statspack的模式對象,,即stdbyperf,,安裝過程中會有如下提示信息:
提示輸入stdbyperf用戶的密碼(自定義) 模式對象默認使用的表空間(建議使用SYSAUX) 模式對象默認使用的臨時表空間(建議使用系統(tǒng),例:TEMP) 創(chuàng)建完成之后,會自動調用sbaddins.sql腳本,,這個腳本的目的是用來配置Statpack添加第一個備庫實例的信息,。會提示輸入,如下信息:
連接到物理備庫的TNS 的本地服務名 需要提供perfstat用戶的密碼 在Statspack配置信息中手動添加新的實例 使用如下用戶登錄,,執(zhí)行腳本如下: SQL> connect stdbyperf/your_password SQL> @?/rdbms/admin/sbaddins 會提示輸入如下信息: 1.連接到物理備庫的TNS 的本地服務名 2.需要提供perfstat用戶的密碼
手動收集備庫的性能數(shù)據(jù)* * 執(zhí)行腳本如下 SQL> connect stdbyperf/your_password SQL> exec statspack_<db_unique_name>_<instance_name>.snap
生成備庫統(tǒng)計信息報告 執(zhí)行腳本如下 SQL> connect stdbyperf/your_password SQL>@?/rdbms/admin/sbreport
刪除快照信息 執(zhí)行腳本如下: SQL>connect stdbyperf/your_password SQL>@?/rdbms/admin/sbpurge
刪除備庫的Statspack的配置 執(zhí)行腳本如下: 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.創(chuàng)建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; / 注:紅字部分需要根據(jù)上一步查詢出來的DB_LINK和PACKAGE_NAME的值,,時間默認為1個小時,可以自行修改 4.刪除JOB任務 SQL>exec dbms_job.remove('job_id');
自動刪除快照 執(zhí)行腳本如下: stdby_del_snap.sh 注:將此腳本添加到定時任務中即可,,建議在系統(tǒng)空閑的時間段執(zhí)行
腳本存放目錄如下及刪除規(guī)則:
/oracle/script/stdby_del_snap/bin
刪除規(guī)則:快照保存時間為7天,,每天凌晨1點執(zhí)行一次腳本:
00 1 * * * /oracle/script/stdby_del_snap/bin/stdby_del_snap.sh >>/oracle/script/stdby_del_snap/log/stdby_del_snap.log 2>&1
|