查看: 1229|回复: 0

[Oracle数据库] (Les13 性能管理)[20180411]

发表于 2018-4-26 08:00:00
目标 使用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; 动态性能统计信息
  1. 系统范围
  2. V$SYSSTAT
  3. V$SYSTEM_EVENT
  4. 特定于会话
  5. V$SESSTAT
  6. V$SESSION_EVENT
  7. 特定于服务
  8. V$SERVICE_STATS
  9. V$SERVICE_EVENT
  10. select statistiC#,name,class,value,stat_id from v$sysstat;
  11. select sid,statistic#,value from v$sesstat;
  12.     select service_name_hash,service_name,stat_id,stat_name,value from v$service_stats;
  13.     select event,total_waits,total_timeouts,time_waited,average_wait,time_waited_micro from v$system_event
  14.     select sid,event,total_waits,total_timeouts,time_waited,average_wait,max_wait,time_waited_micro,event_id from v$session_event
  15.      select service_name,service_name_hash,event,event_id,total_waits,total_timeouts,time_waited,average_wait,time_waited_micro from v$service_event
  16. 实例/数据库
  17. V$DATABASE
  18. V$INSTANCE
  19. V$PARAMETER
  20. V$SPPARAMETER
  21. V$SYSTEM_PARAMETER
  22. V$PROCESS
  23. V$BGPROCESS
  24. V$PX_PROCESS_SYSSTAT
  25. V$SYSTEM_EVENT
  26. 磁盘
  27. V$DATAFILE
  28. V$FILESTAT
  29. V$LOG
  30. V$LOG_HISTORY
  31. V$DBFILE
  32. V$TEMPFILE
  33. V$TEMPSEG_USAGE
  34. V$SEGMENT_STATISTICS
  35. 内存
  36. V$BUFFER_POOL_STATISTICS
  37. V$LIBRARYCACHE
  38. V$SGAINFO
  39. V$PGASTAT
  40. 争用
  41. V$LOCK
  42. V$UNDOSTAT
  43. V$WAITSTAT
  44. V$LATCH
复制代码

无效和不可用对象 对性能的影响: PL/SQL代码对象要重新编译 索引要重建 无效PL/SQL对象,可通过查询数据字典来查看PL/SQL对象的当前状态。 SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS='INVALID'; 默认情况下,每24小时会检查一次“所有者的无效对象计数”度量,如果单个所有者的无效对象数超过2个,就会发出预警。
  1. 无效和不可用对象的处理
  2. 不做任何处理,如果需要,大多数PL/SQL对象在被条用时会自动重新编译。用户在对象重新编译时会经历短暂的延迟。
  3. 手动重新编译无效对象
  4. ALTER PROCEDURE <owner>.<procedure_name> COMPILE;
  5. PACKAGE包需要执行两个步骤
  6. ALTER PACKAGE <owner>.<package_name> COMPILE;
  7. ALTER PACKAGE <owner>.<package_name> COMPILE BODY;
  8. 不可用索引,可查询视图DBA_INDEXES数据字典和DBA_IND_PARTITIONS视图
  9. SELECT OWNER,TABLE_NAME,INDEX_NAME FROM DBA_INDEXES WHERE STATUS='UNUSEABLE';
  10. SELECT INDEX_OWNER,PARTITION_NAME,INDEX_NAME FROM DBA_IND_PARTITIONS WHERE STATUS='UNUSEABLE';
  11. 重建索引
  12. ALTER INDEX <owner>.<index_name> REBUILD;
  13. ALTER INDEX <owner>.<index_name> REBUILD ONLINE;
  14. 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 查看与性能相关的动态视图 无效对象和不可用索引的处理方式



回复

使用道具 举报