Oracle AWR(自动工作负载仓库)是一个官方的Oracle数据库性能分析工具。它可以在数据库实例中收集和存储性能数据,并通过报告和图形界面的形式展示给用户。AWR 数据库中可以占用不少的空间。因此,在使用 AWR 工具时需要对空间进行一定的管理。
AWR 数据库中的主要数据结构是两个性能基准器:Snapshot 和 Metric。Snapshot 是在某个时间点上捕获当前数据库的性能数据,除非删除,否则其记录会一直存在于 AWR 中。Metric 用于描述某个特定的性能指标,比如每秒钟的事务数和用户查询速度。当你执行 AWR 报告时,Metric 稳态指标会被显示在报告中。临时 Metric 用完之后便会自动删除。
AWR 的内部存储格式是一个二进制 B+ 树,它将数据压缩和下推以缩小数据在存储介质上占用的空间。一般情况下,AWR 数据库会占用数据库总空间的 1%-3% 左右。剩余空间就需要根据实际情况进行平衡。
你可以通过 SQL 查询工具查看 AWR 的大小。下面的代码显示了查询 AWR 大小的基本语法:
SELECT to_char(begin_interval_time,'mm/dd hh24:mi') as "Begin", to_char(end_interval_time,'mm/dd hh24:mi') as "End", round(sum(bytes/1024/1024),2) as "MB" FROM dba_hist_snapshot WHERE begin_interval_time >= sysdate - 7 -- Here you can put the age in days or minutes, as you wish GROUP BY begin_interval_time, end_interval_time ORDER BY begin_interval_time;
这段代码将列出 AWR 中收集的过去七天内的所有采样时间和占用空间。如果你只想检查某个特定表空间的 AWR 空间,可以使用以下代码:
SELECT tbspc.TABLESPACE_NAME, SUM(NUMBER_OF_BYTES)/1024/1024 AS MB_USED FROM DBA_HIST_SEG_STAT a, DBA_TABLESPACES tbspc WHERE tbspc.TABLESPACE_NAME = a.TABLESPACE_NAME GROUP BY TABLESPACE_NAME ORDER BY MB_USED desc;
现在让我们来谈谈如何管理 AWR 空间。AWR 数据库中的大多数空间都来自数据的历史快照。你可以使用一些 SQL 命令来删除或者归档这些数据,以便在保留足够的历史数据的同时,最大化 AWR 数据库空间利用率。
首先,检查当前 AWR 数据库占用的空间是有意义的。如果 AWR 数据库已经占满了相应的表空间,则需要采取行动。下面是一个查询语句,可以用来查看 AWR 数据库占用的空间:
SELECT occupant_desc, space_usage_kbytes/1024 AS space_usage_mb FROM dba_hist_space_usage ORDER BY space_usage_mb DESC;
如果发现 AWR 数据库占用的空间太大,可以使用以下的 SQL 命令来归档一些历史快照数据:
EXEC SYS.DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(BEGIN_SNAPSHOT=<begin>,END_SNAPSHOT=<end>,BASELINE_NAME=<name>);
这条命令将创建一个基准线,它将删除在 begin 和 end 之间的历史快照数据。在执行此操作前,请确保应用程序定义的性能日志表所需的历史快照已被保留。
最后,千万不要忘记定期备份 AWR 数据库。备份是保障数据安全的重要手段。AWR 也不例外。你可以使用以下 SQL 命令来备份 AWR 数据库:
exec dbms_workload_repository.create_snapshot(); exec dbms_workload_repository.modify_snapshot_settings(retention=>4320); exec dbms_workload_repository.drop_snapshot_range( begin_interval_time => to_date('20:00 05/01/2018','hh24:mi mm/dd/yyyy'), end_interval_time => to_date('08:00 05/01/2018','hh24:mi mm/dd/yyyy') );
backup as compressed backupset database format '<dir>/awr_<dbname>_%u_%s.bkp' tag '<dbname>_awr_backup';
以上就是关于 Oracle AWR 空间管理的一些介绍。希望能对你有所帮助!