1z0-052學(xué)習(xí)筆記(7)
第16章 鎖競合的檢出以及解決方案
1.DML鎖
行鎖(排他)
表鎖(共有)
2.DML共有表所,競合DDL防止
3.手動行鎖
SELECT ... FOR UPDATE NOWAIT | WAIT 數(shù)秒
4.手動表鎖
LOCK TABLE 表名 IN 鎖定模式名 MODE [NOWAIT]
ROW SHARE:SELECT...FOR UPDATE;
ROW EXCLUSIVE:DML(INSERT,UPDATE,DELETE)
EXCLUSIVE:DDL
エンキューメカニズム
5.鎖競合發(fā)生的場合:
變更沒有提交
事務(wù)長時間的場合
不必要的高鎖級別
6.死鎖
如果檢出死鎖,Oracle服務(wù)器會自動回滾解決死鎖。
死鎖發(fā)生的時候,警告日志(BACKGROUND_DUMP_DEST初始化參數(shù)),警告日志記錄的
用戶trece文件(USER_DUMP_DEST初期化參數(shù)指定)
7.死鎖的詳細情報,USER_DUMP_DEST初始化參數(shù)指定的目錄文件里確認。
8.V$LOCK視圖,V$LOCKED_OBJECT視圖
9.ALTER SYSTEM KILL SESSION 'SID列值,SERIAL#列值'
第17章 性能監(jiān)視
1.性能問題對應(yīng)
數(shù)據(jù)字典視圖:領(lǐng)域相關(guān)
動態(tài)性能視圖(V$DATABASE,V$INSTANCE):內(nèi)存使用量,待機時間按,實例的活動
2.個別的matric情報頁面包含
最新已知值
平均值
上限值,下限值
3.EM中性能頁的內(nèi)容
host
session:待機和實行中
實例
4.如果REDO日志buffer待機時間多發(fā)的情況下
把REDO日志文件配置在能夠高速操作的硬盤上
REDO日志buffer小的話,增加 大小
5.數(shù)據(jù)文件的硬盤I/O集中的話可以考慮下面的方法
RAID
ASM
6.表優(yōu)化統(tǒng)計DBA_TABLES
NUM_ROWS:表保存的行數(shù)
BLOCKS;行保存的block數(shù)
AVG_ROW_LEN:平均行長度
LAST_ANALYZED:最后分析的日時
NUM_FREELIST_BLOCKS:空list里面的塊數(shù)
CHAIN_CNT:移行連鎖的行數(shù)
7.索引的統(tǒng)計
BLEVEL:
LEAF_BLOCKS:
DISTINCT_KEYS:
AVG_LEAF_BLOCKS_PER_KEY:
AVG_DATA_BLOCKS_PER_KEYS:
CLUSTERING_FACTOR
NuM_ROWS
8.優(yōu)化統(tǒng)計相關(guān)
優(yōu)化統(tǒng)計在收集時也是變化的
Oracle服務(wù)器再啟動也不變化
表中行數(shù)據(jù)頻繁更新的話,應(yīng)該考慮手動來進行統(tǒng)計分析
對于大規(guī)模表,進行預(yù)算的統(tǒng)計收集更適合
使用DBMS_STATS包進行統(tǒng)計收集
9. 無效對象的troubleshooting
PL/SQL對象的有效性可以通過數(shù)據(jù)字典DBA_OBJECT視圖的STATUS列來確認
無效的PL/SQL再編譯
下回需要運行PL/SQL時自動編譯
使用ALTER .. COMPILE來手動編譯
ALTER FUNCTION 函數(shù)名 COMPILE
ALTER PROCEDURE 存儲過程名COMPILE
9.索引的再構(gòu)筑
如果使用ALTER TABLE...MOVE命令,索引將無效,這是因為ROWID發(fā)生改變??梢圆榭磾?shù)據(jù)字典的DBA_INDEXES視圖的STATUS列
來確認。
再構(gòu)筑
ALTER INDEX 索引名 REBUILD [ONLINE] [TABLESPACE 表領(lǐng)域名]
如果使用ONLINE再構(gòu)筑中DML可能。
再構(gòu)筑中需要2倍的領(lǐng)域。