Oracle調優-常用表KEEP到記憶體中
資料遷移後效能受到影響,需要將老資料庫中keep到記憶體中的表在新庫中keep到記憶體中,使用如下方法。
新庫設定db_keep_cache_size為適當值,這個值的大小不能小於需要keep的表的大小。
檢視老庫中需要keep的表資訊:
select s.owner,
s.segment_name,
s.partition_name,
s.bytes / 1024 / 1024 as "size(m)"
from dba_segments s
where owner = 'XXX'
and segment_name in
(select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
order by 4 desc
查詢老庫中需要keep表總大小:
select sum(s.bytes / 1024 / 1024 / 1024) as "total keep size(G)"
from dba_segments s
where segment_name in
(select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
生成keep指令碼:
select 'alter table XXX.'||s.segment_name||' storage(buffer_pool keep);' as "指令碼"
from dba_segments s
where owner = 'XXX'
and segment_name in
(select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
keep表到記憶體中:
select 'alter table XXX.'||s.segment_name||' cache;' as "指令碼2"
from dba_segments s
where owner = 'XXX'
and segment_name in
(select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
上兩個指令碼整合:
select 'alter table XXX.'||s.segment_name||' storage(buffer_pool keep) cache;' as "指令碼"
from dba_segments s
where owner = 'XXX'
and segment_name in
(select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
上述三個指令碼輸出結果放在plsql中執行即可。
附錄:與cache到記憶體相關的命令
--表快取
alter table ..... storage(buffer_pool keep);
--檢視哪些表被放在快取區 但並不意味著該表已經被快取
select table_name from dba_tables where buffer_pool='keep';
--查詢到該表是否已經被快取
select table_name,cache,buffer_pool from user_TABLES where cache like '%Y';
--已經加入到KEEP區的表想要移出快取,使用
alter table table_name nocache;
--查詢當前使用者下表的情況
select table_name,cache,buffer_pool from user_TABLES;
--對於普通LOB型別的segment的cache方法
alter table t2 modify lob(c2) (storage (buffer_pool keep) cache);
--取消快取
alter table test modify lob(address) (storage (buffer_pool keep) nocache);
--查詢段
select segment_name,segment_type,buffer_pool from user_segments;
--對基於CLOB型別的物件的cache方法
alter table lob1 modify lob(c1.xmldata) (storage (buffer_pool keep) cache);
--查詢該使用者下所有表內的大欄位情況
select column_name,segment_name from user_lobs;
--取消表快取
alter table XXX storage(buffer_pool default);
ps:
檢視keep空間的剩餘大小:
select p.name,a.cnum_repl "total buffers",a.anum_repl "free buffers"
from x$kcbwds a, v$buffer_pool p
where a.set_id=p.LO_SETID and p.name='KEEP';
檢視keep空間的大小:
select component,current_size from v$sga_dynamic_components
where component='KEEP buffer cache';
新庫設定db_keep_cache_size為適當值,這個值的大小不能小於需要keep的表的大小。
檢視老庫中需要keep的表資訊:
select s.owner,
s.segment_name,
s.partition_name,
s.bytes / 1024 / 1024 as "size(m)"
from dba_segments s
where owner = 'XXX'
and segment_name in
(select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
order by 4 desc
查詢老庫中需要keep表總大小:
select sum(s.bytes / 1024 / 1024 / 1024) as "total keep size(G)"
from dba_segments s
where segment_name in
(select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
生成keep指令碼:
select 'alter table XXX.'||s.segment_name||' storage(buffer_pool keep);' as "指令碼"
from dba_segments s
where owner = 'XXX'
and segment_name in
(select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
keep表到記憶體中:
select 'alter table XXX.'||s.segment_name||' cache;' as "指令碼2"
from dba_segments s
where owner = 'XXX'
and segment_name in
(select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
上兩個指令碼整合:
select 'alter table XXX.'||s.segment_name||' storage(buffer_pool keep) cache;' as "指令碼"
from dba_segments s
where owner = 'XXX'
and segment_name in
(select table_name from dba_tables where owner = 'XXX' and buffer_pool='KEEP')
上述三個指令碼輸出結果放在plsql中執行即可。
附錄:與cache到記憶體相關的命令
--表快取
alter table ..... storage(buffer_pool keep);
--檢視哪些表被放在快取區 但並不意味著該表已經被快取
select table_name from dba_tables where buffer_pool='keep';
--查詢到該表是否已經被快取
select table_name,cache,buffer_pool from user_TABLES where cache like '%Y';
--已經加入到KEEP區的表想要移出快取,使用
alter table table_name nocache;
--查詢當前使用者下表的情況
select table_name,cache,buffer_pool from user_TABLES;
--對於普通LOB型別的segment的cache方法
alter table t2 modify lob(c2) (storage (buffer_pool keep) cache);
--取消快取
alter table test modify lob(address) (storage (buffer_pool keep) nocache);
--查詢段
select segment_name,segment_type,buffer_pool from user_segments;
--對基於CLOB型別的物件的cache方法
alter table lob1 modify lob(c1.xmldata) (storage (buffer_pool keep) cache);
--查詢該使用者下所有表內的大欄位情況
select column_name,segment_name from user_lobs;
--取消表快取
alter table XXX storage(buffer_pool default);
ps:
檢視keep空間的剩餘大小:
select p.name,a.cnum_repl "total buffers",a.anum_repl "free buffers"
from x$kcbwds a, v$buffer_pool p
where a.set_id=p.LO_SETID and p.name='KEEP';
檢視keep空間的大小:
select component,current_size from v$sga_dynamic_components
where component='KEEP buffer cache';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29135257/viewspace-2143694/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 記憶體調優實戰記憶體
- JVM效能調優,記憶體分析工具JVM記憶體
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- ArkTS 中的記憶體調優與配置:最佳實踐記憶體
- 效能調優(cpu/IO/JVM記憶體分析)JVM記憶體
- 【JVM】堆體系結構及其記憶體調優JVM記憶體
- (2)Linux效能調優之Linux記憶體體系Linux記憶體
- Presto記憶體調優及原理(基礎篇)REST記憶體
- SAP專家培訓之NetweaverABAP記憶體管理和記憶體調優最佳實踐記憶體
- 從Oracle資料庫故障到AIX記憶體管理Oracle資料庫AI記憶體
- Oracle SQL調優之分割槽表OracleSQL
- weblogic 記憶體調整Web記憶體
- SAP專家培訓之Netweaver ABAP記憶體管理和記憶體調優最佳實踐記憶體
- 【MEMORY】Oracle記憶體結構資源常用檢視及sqlOracle記憶體SQL
- delphi記憶體表記憶體
- 記憶體表(FDMEMTABLE)記憶體
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- Android效能優化篇之記憶體優化--記憶體洩漏Android優化記憶體
- 常用記憶體操作函式記憶體函式
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- Android記憶體優化Android記憶體優化
- 1.記憶體優化(一)記憶體洩漏記憶體優化
- mysql最大表記憶體MySql記憶體
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- JVM調優——Java動態編譯過程中的記憶體溢位問題JVMJava編譯記憶體溢位
- 記憶體資料庫如何發揮記憶體優勢?記憶體資料庫
- Java記憶體模型,垃圾回收機制,常用記憶體命令及工具Java記憶體模型
- JS中的棧記憶體、堆記憶體JS記憶體
- [20210126]探究oracle記憶體分配.txtOracle記憶體
- 記憶體優化相關記憶體優化
- Android Note - 記憶體優化Android記憶體優化
- 實踐App記憶體優化:如何有序地做記憶體分析與優化APP記憶體優化
- delphi 新版記憶體表 FDMemTable記憶體
- Oracle記憶體結構(四)----如何獲得Oracle各記憶體段的內部資訊(轉)Oracle記憶體
- JVM快速調優手冊v1.0之三:記憶體分配策略JVM記憶體
- Android 效能優化之記憶體優化Android優化記憶體
- Redis 記憶體優化神技,小記憶體儲存大資料Redis記憶體優化大資料
- Oracle:記憶體設定注意事項Oracle記憶體