目標 使用Oracle Enterprise Manager監視性能 使用自動記憶體管理(AMM) 使用記憶體指導調整記憶體緩衝區的大小 查看與性能相關的動態視圖 排除無效和不可用對象產生的故障 性能監視 管理記憶體組件 自動記憶體管理(AMM):指定分配給實例的總記憶體(包括SGA和PGA) 自動共用記憶體管理 ...
目標 使用Oracle Enterprise Manager監視性能 使用自動記憶體管理(AMM) 使用記憶體指導調整記憶體緩衝區的大小 查看與性能相關的動態視圖 排除無效和不可用對象產生的故障 性能監視 管理記憶體組件 自動記憶體管理(AMM):指定分配給實例的總記憶體(包括SGA和PGA) 自動共用記憶體管理(ASMM) 通過一個初始化參數指定SGA總記憶體 Oracle伺服器可以管理分配給共用池,Java池,緩衝區高速緩存,流池和大型池的記憶體量。 手動設置共用記憶體管理 通過多個單獨的初始化參數調整組件的大小 使用適當的記憶體指導提出建議 啟用自動記憶體管理AMM 初始化參數:memory_max_target和memory_target MEMORY_TARGET 不為零的值,就是sga+pga可分配的最大值。但是此值不能大於MEMORY_MAX_TARGET的值。 ALTER SYSTEM SET MAMORY_MAX_TARGET=[數值] SCOPE=SPFILE; ALTER SYSTEM SET MEMORY_TARGET=[數值] SCOPE=SPFILEL; 啟用AMM後,可使用記憶體大小指導來幫助調整最大記憶體大小和目標記憶體大小。Oracle建議使用自動記憶體管理來簡化記憶體管理任務。 啟用自動共用記憶體管理ASMM 初始化參數:sga_max_size和sga_target SGA_TARGET不為零的值,此值不能大於SGA_MAX_SIZE的值。shared_pool_size+db_cache_size+streams_pool_size+java_pool_size+large_pool_size ALTER SYSTEM SET SGA_MAX_SIZE=[數值] SCOPE=SPFILE; ALTER SYSTEM SET SGA_TARGET=[數值] SCOPE=SPFILE; 手動設置共用記憶體管理 ALTER SYSTEM SET SHARED_POOL_SIZE=[數值] SCOPE=SPFILE; ALTER SYSTEM SET DB_CACHE_SIZE =[數值] SCOPE=SPFILE; ALTER SYSTEM SET JAVA_POOL_SIZE=[數值] SCOPE=SPFILE; ALTER SYSETM SET STREAMS_POOL_SIZE=[數值] SCOPE=SPFILE; ALTER SYSTEM SET LARGE_POOL_SIZE=[數值] SCOPE=SPFILE; 動態性能統計信息
系統範圍 V$SYSSTAT V$SYSTEM_EVENT 特定於會話 V$SESSTAT V$SESSION_EVENT 特定於服務 V$SERVICE_STATS V$SERVICE_EVENT select statistic#,name,class,value,stat_id from v$sysstat; select sid,statistic#,value from v$sesstat; select service_name_hash,service_name,stat_id,stat_name,value from v$service_stats; select event,total_waits,total_timeouts,time_waited,average_wait,time_waited_micro from v$system_event select sid,event,total_waits,total_timeouts,time_waited,average_wait,max_wait,time_waited_micro,event_id from v$session_event select service_name,service_name_hash,event,event_id,total_waits,total_timeouts,time_waited,average_wait,time_waited_micro from v$service_event 實例/資料庫 V$DATABASE V$INSTANCE V$PARAMETER V$SPPARAMETER V$SYSTEM_PARAMETER V$PROCESS V$BGPROCESS V$PX_PROCESS_SYSSTAT V$SYSTEM_EVENT 磁碟 V$DATAFILE V$FILESTAT V$LOG V$LOG_HISTORY V$DBFILE V$TEMPFILE V$TEMPSEG_USAGE V$SEGMENT_STATISTICS 記憶體 V$BUFFER_POOL_STATISTICS V$LIBRARYCACHE V$SGAINFO V$PGASTAT 爭用 V$LOCK V$UNDOSTAT V$WAITSTAT V$LATCH
無效和不可用對象 對性能的影響: PL/SQL代碼對象要重新編譯 索引要重建 無效PL/SQL對象,可通過查詢數據字典來查看PL/SQL對象的當前狀態。 SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS='INVALID'; 預設情況下,每24小時會檢查一次“所有者的無效對象計數”度量,如果單個所有者的無效對象數超過2個,就會發出預警。
無效和不可用對象的處理 不做任何處理,如果需要,大多數PL/SQL對象在被條用時會自動重新編譯。用戶在對象重新編譯時會經歷短暫的延遲。 手動重新編譯無效對象 ALTER PROCEDURE <owner>.<procedure_name> COMPILE; PACKAGE包需要執行兩個步驟 ALTER PACKAGE <owner>.<package_name> COMPILE; ALTER PACKAGE <owner>.<package_name> COMPILE BODY; 不可用索引,可查詢視圖DBA_INDEXES數據字典和DBA_IND_PARTITIONS視圖 SELECT OWNER,TABLE_NAME,INDEX_NAME FROM DBA_INDEXES WHERE STATUS='UNUSEABLE'; SELECT INDEX_OWNER,PARTITION_NAME,INDEX_NAME FROM DBA_IND_PARTITIONS WHERE STATUS='UNUSEABLE'; 重建索引 ALTER INDEX <owner>.<index_name> REBUILD; ALTER INDEX <owner>.<index_name> REBUILD ONLINE; ALTER INDEX <owner>.<index_name> REBUILD TABLESPACE <tablespace_name>;
如果省略了TABLSPACE子句,則會在索引曾經所在的相同表空間中重建索引。使用REBUILD ONLINE子句,用戶可以在重建時繼續更新索引表。(如果不使用online關鍵字,用戶必須等待重建完成後才能對受影響的表執行DML.如果索引不可用,即使用online關鍵字,也不會在重建過程中使用該索引。) 註意:重建索引是需要有可用於重建的空閑空間。重建前需驗證是否有足夠的空間。會使用到TEMP表空間。 總結: 自動記憶體管理(AMM),主要是管理PGA+SGA記憶體的分配,兩個初始化參數memory_max_target&memory_target控制 自動共用記憶體管理(ASMM),管理SGA記憶體組件,sga_max_size&sga_target參數控制,shared_pool_size,db_cache_size,java_pool_size,large_pool_size,streams_pool_size 手動管理sga記憶體組件,shared_pool_size,db_cache_size,java_pool_size,large_pool_size,streams_pool_size 查看與性能相關的動態視圖 無效對象和不可用索引的處理方式