分析Oracle生成Statpack步驟

2022-09-24 18:03:13 字數 3590 閱讀 4742

1、telnet到遠端的資料庫伺服器

cmd>telnet 遠端資料庫的ip

2、切換到資料庫的使用者

dqxxdbs01:/> su - oracle

3、用超級使用者進入資料庫

$ sqlplus "/as sysdba"

4、檢視引數,是否可以用job(可以用job進行自動的收集statpack report的資料)

sql> show parameter job_queue_pro程式設計客棧cesses

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_i 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.www.cppcns.compar就要在該目錄下,否則提示「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 1 增加子鎖存統計.包括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);

本文標題: 分析oracle生成statpack步驟

本文位址:

oracle 生成隨機姓名 Oracle生成隨機碼

本人 交友樂www.jyoule.com 需要經常生成隨機的活動碼,用於製作卡片密碼或通過網路傳送。活動碼的生成規則是採用唯一的字串開頭後面是隨機數字,比如az00001。使用程式生成活動碼速度較慢,但是使用oracle產生活動碼速度極快,而且使用方便。1萬個活動碼只需要2 3秒就可以產生。下面是 ...

Oracle 資料生成 索引

1.建表 create table qq qq num integer 2.插入資料 插入資料的方法有很多種,但是要插入3億資料,必須要有高效的演算法。在插入資料時我用了最笨的辦法,採用pl sql利用流程控制的loop語句插入。同時我也看了網上的插入效率的優化,怎樣利用較少的時間生成較多的測試資料...

Oracle生成隨機函式

1.基礎認識 關於這些函式及dbms random包的檔案都包含在sqlplus中 select text from all source where name dbms random and type package order by line type num array procedure t...