分析Oracle產生Statpack步驟

來源:互聯網
上載者:User

1、telnet到遠端資料庫伺服器
CMD>telnet 遠端資料庫的IP
2、切換到資料庫的使用者
DQXXDBS01:/> su - oracle
3、用超級使用者進入資料庫
$ sqlplus "/as sysdba"
4、查看參數,是否可以用job(可以用job進行自動的收集Statpack Report的資料)
SQL> show parameter job_queue_processes
5、該參數可以收集作業系統的資訊
SQL> show parameter timed_statistics
6、為了建立資料表空間,資料表空間的資料檔案放在哪比較好 複製代碼 代碼如下:SQL> select file_name from dba_data_files;

7、查看哪個目錄的空間比較大,確定perfstat資料表空間的資料檔案的位置
$ df -g
8、建立資料表空間: 複製代碼 代碼如下:SQL> create tablespace perfstat datafile '/oracle/product/10.2.0/db_1/dbs/perfstat.dbf'size 500M;

--資料表空間用於儲存快照時搜集的資料
9、建立Statspack需要的指令碼
SQL> @:/oracle/product/10.2.0/db_1/rdbms/admin/spcreate.sql --"/oracle/product/10.2.0/db_1/rdbms/admin/"為指令碼目錄
運行該指令碼後,輸入perfstat_password、default_tablespace、temporary_tablespace
10、測試是否成功,產生資料庫的一個快照
SQL> execute statspack.snap
11、再產生一個快照
SQL> execute statspack.snap
12、取兩個快照之間時間段的Statspack報告
SQL> @/oracle/product/10.2.0/db_1/rdbms/admin/spreport.sql
輸入產生Statspack報告的起始點和終止點,如上產生了兩個時間點的快照,輸入begin_snap:1和end_snap:2,然後輸入產生快照的名稱(如1.txt)
--備忘:如果沒有指定報告放置的位置,則該報告在啟動sqlplus時所在的路徑
13、用job進行定時產生Statspack的快照,便於收集資料(預設為1小時產生一個快照)
SQL> @/oracle/product/10.2.0/db_1/rdbms/admin/spauto.sql
14、刪除曆史資料
select max(snap_id) from stats$snapshot;--刪除stats$snapshot表中的相應資料,其他表中的相應資料也會級連刪除
delete from stats$snapshot where snap_id<3;
也可以通過執行sptrunc.sql該指令碼直接刪除這些統計表的資訊
注意事項:
1、產生需要的Statspack之後,記住移除任務,查看任務:
SQL> select job, log_user, priv_user, last_date,next_date, interval from user_jobs;
2、移除產生Statspack快照的任務:
SQL> execute dbms_job.remove('41')
3、如果在運行spcreate.sql這個指令碼出錯的話,可以通過運行spdrop.sql這個指令碼刪除建立的對象,然後再執行spcreate.sql
4、運行spcreate.sql這個指令碼後,可以尋找相關的lis檔案查看安裝資訊(在sqlplus預設路徑下)
其他相關的一些指令碼
1、spuexp.par指令碼 --可用於匯出statpack報告相關的資料的dmp,如下所示
exp userid=perfstat/fyzh parfile=spuexp.par
注意:spuexp.par檔案必須在sqlplus登陸的當前路徑。如登陸的sqlplus路徑是C:\Documents and Settings\Administrator,
那麼spuexp.par就要在該目錄下,否則提示“LRM-00109: 無法開啟參數檔案 'spuexp.par'”
2、sprepsql.sql指令碼 --用於根據給定的sql hash值產生sql報告
調整STATSPACK的收集門限
Statspack有兩種類型的收集選項:
層級(level):控制收集資料的類型
門限(threshold):設定收集的資料的閾值.
1、層級(level)
Statspack共有三種快照層級,預設值是5
a.level 0: 一般效能統計.包括等待事件、系統事件、系統統計、復原段統計、行緩衝、SGA、會話、鎖、緩衝池統計等等.
b.level 5: 增加SQL語句.除了包括level0的所有內容,還包括SQL語句的收集,收集結果記錄在stats$sql_summary中.
c.level 10: 增加子鎖存統計.包括level5的所有內容.並且還會將附加的子鎖存存入stats$lathc_children中.在使用這個層級時需要謹慎,建議在Oracle support的指導下進行.
可以通過statspack包修改預設的層級設定
SQL> execute statspack.snap(i_snap_level=>0,i_modify_parameter=>'true');
如果你只是想本次改變收集層級,可以忽略i_modify_parameter參數.
SQL> execute statspack.snap(i_snap_level=>0);
2、快照門限
快照門限只應用於stats$sql_summary表中擷取的SQL語句.
因為每一個快照都會收集很多資料,每一行都代表擷取快照時資料庫中的一個SQL語句,所以stats$sql_summary很快就會成為Statspack中最大的表.
門限儲存在stats$statspack_parameter表中:
executions_th這是SQL語句執行的數量(預設值是100)
disk_reads_tn這是SQL語句執行的磁碟讀入數量(預設值是1000)
parse_calls_th這是SQL語句執行的解析調用的數量(預設值是1000)
buffer_gets_th這是SQL語句執行的緩衝區擷取的數量(預設值是10000)
任何一個門限值超過以上參數就會產生一條記錄.
通過調用statspack.modify_statspack_parameter函數改變門限的預設值: 複製代碼 代碼如下:SQL>execute statspack.modify_statspack_parameter(i_buffer_gets_th=>100000,i_disk_reads_th=>100000);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.