76-Oracle system-sysaux默认表空间特性-演进和验证

一、 SYSTEM和SYSAUX版本演进与功能增强

1.1 Oracle 8i/9i:系统表空间的初期架构

  • 单一系统表空间​:在Oracle 8i和9i版本中,数据库仅有一个核心系统表空间——SYSTEM。这个表空间承担了所有系统管理功能,包括:
    • 数据字典存储
    • 系统回滚段管理
    • 高级复制元数据
    • 其他系统对象
这种集中式架构导致SYSTEM表空间面临空间压力和碎片问题,特别是当使用高级复制功能时,复制队列表可能增长到数十GB,严重影响系统性能。
  • 管理挑战​:此时期常见的管理问题包括:
    • 空间异常增长​:高级复制的队列表(如DEF$_LOB)无限制扩展
    • 性能下降​:频繁的字典操作导致行级锁争用
    • 碎片化严重​:反复创建和删除对象导致空间碎片这些问题促使Oracle重新设计系统表空间架构。
表:Oracle各版本系统表空间架构演进

​版本​

​架构特点​

​关键改进​

​遗留问题​

​8i/9i​

单一SYSTEM表空间

-

空间压力、碎片问题

​10g​

SYSTEM+SYSAUX双表空间

引入SYSAUX分担负载

组件迁移不彻底

​11g​

增强SYSAUX管理

AWR自动清理、统计信息管理

SM/OPTSTAT空间回收

​12c+​

云环境优化

多租户支持、热迁移

CDB/PDB特殊管理

3.2 Oracle 10g:SYSAUX表空间的引入

  • 架构革新​:Oracle 10g是系统表空间架构的里程碑版本,引入了SYSAUX辅助表空间。这一设计将非核心组件从SYSTEM表空间中迁移出来,包括:
    • Enterprise Manager​(OEM)存储库
    • LogMiner工作区
    • Oracle Streams元数据
    • Oracle Spatial组件
    • Statspack​(性能诊断工具)存储库
  • 组件化迁移机制​:Oracle 10g提供标准化的迁移接口,通过DBMS包实现组件表空间的灵活迁移。例如,迁移LogMiner组件的命令为:
EXEC SYS.DBMS_LOGMNR_D.SET_TABLESPACE('USERS');

 迁移后,通过V$SYSAUX_OCCUPANTS视图可验证空间释放:

SELECT occupant_name, space_usage_kbytes 
FROM v$sysaux_occupants 
WHERE occupant_name='LOGMNR';

--
OCCUPANT_NAME       SPACE_USAGE_KBYTES
________________ _____________________
LOGMNR                           11712
  • 管理优势​:SYSAUX表空间的引入带来显著优势:
    • 降低SYSTEM表空间负载​:减少约40%-60%的空间使用
    • 避免空间碎片​:组件独立存储减少碎片
    • 增强可用性​:SYSAUX可脱机维护而不影响核心功能但10g版本仍存在组件空间回收不彻底的问题(如AWR数据无限增长)。

1.3 Oracle 11g:管理功能增强

  • AWR自动管理​:Oracle 11g增强了AWR空间自动管理能力,通过MMON后台进程自动清理过期快照。DBA可配置保留策略:
-- 设置AWR保留时间为7天
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 10080);
--默认保留期从10g的7天延长至8天,适应更大规模性能数据分析
  • 统计信息历史管理​:11g强化了优化器统计信息历史​(SM/OPTSTAT)管理:
    • 自动保留历史统计信息(默认31天)
    • 提供DBMS_STATS包管理历史数据:
-- 清理30天前的统计信息
EXEC DBMS_STATS.PURGE_STATS(SYSDATE-30);

--PL/SQL procedure successfully completed.
这一机制提高了执行计划稳定性,但需注意历史数据可能占用大量SYSAUX空间。
  • 审计功能改进​:11g默认开启数据库审计,审计数据存储在SYSTEM表空间的AUD$表中。为避免空间问题:
-- 关闭审计功能
ALTER SYSTEM SET audit_trail=none SCOPE=spfile;
--System altered.

--或迁移审计表:

ALTER TABLE sys.aud$ MOVE TABLESPACE users;
--Table SYS.AUD$ altered.
--这些改进提高了系统表空间的可管理性。

1.4 Oracle 12c~19c~23ai 及更高版本:云环境优化

  • 多租户架构支持​:Oracle 12开始 引入多租户架构,系统表空间管理发生重大变化:
    • 容器数据库​(CDB):拥有独立的SYSTEM/SYSAUX表空间,存储公共元数据
    • 可插拔数据库​(PDB):每个PDB拥有私有的SYSTEM/SYSAUX表空间这种架构使单个CDB可托管数百个PDB,显著提高资源利用率。
  • 热迁移与在线重组​:12c增强表空间在线维护能力:
    • 热迁移组件​:在不中断服务的情况下移动组件表空间
    • 在线表重组​:对SYSAUX中的大表(如WRH$_ACTIVE_SESSION_HISTORY)进行分区级MOVE操作:
ALTER TABLE WRH$_ACTIVE_SESSION_HISTORY MOVE PARTITION partition_P1;
这些功能提高了系统表空间在云环境中的可维护性。
  • 空间效率优化​:更高版本持续优化系统表空间的空间效率:
    • 列式存储​:AWR数据采用混合列压缩(HCC)
    • 智能默认值​:自动优化初始化参数减少空间开销
    • 内存外部化​:部分统计信息存储在内存而非磁盘这些优化使系统表空间在同等功能下减少约20%的空间占用。

二、管理脚本与运维实践

2.1 表空间监测与诊断脚本

  • 空间使用分析​:使用以下脚本获取表空间使用概况:
SELECT df.tablespace_name "表空间",
  ROUND(df.bytes/1048576) "大小(MB)",
  ROUND((df.bytes - fs.bytes)/1048576) "已用(MB)",
  ROUND(fs.bytes/1048576) "空闲(MB)",
  ROUND((df.bytes - fs.bytes)/df.bytes * 100, 2) "使用率(%)"
FROM (SELECT tablespace_name, SUM(bytes) bytes
      FROM dba_data_files 
      GROUP BY tablespace_name) df,
     (SELECT tablespace_name, SUM(bytes) bytes
      FROM dba_free_space 
      GROUP BY tablespace_name) fs
WHERE df.tablespace_name = fs.tablespace_name
  AND df.tablespace_name IN ('SYSTEM','SYSAUX');


--
表空间          大小(MB)    已用(MB)    空闲(MB)    使用率(%)
_________ _________ _________ _________ _________
SYSAUX         1730      1617       113     93.45
SYSTEM         1110      1110         0     99.99
  • SYSAUX组件分析​:识别SYSAUX空间占用最多的组件:
--此脚本输出包括迁移方法(move_procedure),为空间优化提供直接路径。
SELECT occupant_name, occupant_desc,
  ROUND(space_usage_kbytes/1024) "空间(MB)",
  move_procedure
FROM v$sysaux_occupants
ORDER BY space_usage_kbytes DESC;

--
OCCUPANT_NAME               OCCUPANT_DESC                                              空间(MB) MOVE_PROCEDURE                         
___________________________ _______________________________________________________ _________ ___________________________________________
SM/AWR                      Server Manageability - Automatic Workload Repository          809                                          
SM/OPTSTAT                  Server Manageability - Optimizer Statistics History           146                                          
SDO                         Oracle Spatial                                                128 MDSYS.MOVE_SDO                           
…………                          
  •  对象级空间分析​:针对特定表空间进行对象级分析:
--此脚本帮助定位空间消耗大的具体对象。
SELECT segment_name, segment_type,
  ROUND(SUM(bytes)/1024/1024, 2) "大小(MB)"
FROM dba_segments
WHERE tablespace_name = 'SYSAUX'
GROUP BY segment_name, segment_type
HAVING SUM(bytes) > 10485760  -- >10MB
ORDER BY SUM(bytes) DESC;
--SEGMENT_NAME                      SEGMENT_TYPE          大小(MB)
_________________________________ __________________ _________
SYS_LOB0000014176C00038$$         LOB PARTITION          70.25
WRH$_SYSSTAT_PK                   INDEX PARTITION        70.06
WRH$_SYSSTAT                      TABLE PARTITION        49.06
WRH$_LATCH                        TABLE PARTITION        48.06
WRH$_LATCH_PK                     INDEX PARTITION        45.06
I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST    INDEX                     44
SYS_LOB0000063524C00006$$         LOBSEGMENT             40.25
WRI$_OPTSTAT_HISTGRM_HISTORY      TABLE PARTITION        37.63
SYS_LOB0000063424C00006$$         LOBSEGMENT             37.31
WRH$_SYSMETRIC_HISTORY_INDEX      INDEX PARTITION        37.06
SYS_LOB0000022597C00030$$         LOB PARTITION           31.5
WRH$_EVENT_HISTOGRAM_PK           INDEX PARTITION        30.06
WRH$_SYSMETRIC_HISTORY            TABLE PARTITION        30.06
WRH$_SQL_PLAN                     TABLE PARTITION        25.06
SYS_LOB0000062553C00004$$         LOBSEGMENT             24.25
WRH$_PARAMETER_PK                 INDEX PARTITION        23.06
I_WRI$_OPTSTAT_H_ST               INDEX                     22
WRH$_EVENT_HISTOGRAM              TABLE PARTITION         21.5
WRH$_CON_SYSSTAT_PK               INDEX PARTITION        19.94
SYS_LOB0000014152C00004$$         LOB PARTITION          16.25
WRH$_PARAMETER                    TABLE PARTITION        15.63
WRH$_PROCESS_WAITTIME_PK          INDEX PARTITION        12.88
AUD$UNIFIED                       TABLE PARTITION        12.69
WRH$_SQLSTAT                      TABLE PARTITION         12.5
WRH$_CON_SYSSTAT                  TABLE PARTITION        12.19
WRH$_SQL_PLAN_PK                  INDEX PARTITION        11.44
WRH$_CON_SYSMETRIC_SUMMARY        TABLE PARTITION        11.13

2.2 空间回收与优化脚本

  • AWR快照管理​:控制AWR空间占用的关键脚本:
-- 调整AWR设置 -- 保留7天(7 * 24 * 60分钟)
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
  interval => 60,      -- 60分钟采集一次
  retention => 10080);

-- 删除历史快照,123456789,dbid需要提前获取
BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(
    low_snap_id => 1000, 
    high_snap_id => 2000,
    dbid => 123456789);
END;
/
  •  统计信息历史清理​:管理优化器统计信息历史:
-- 设置保留策略(默认31天)
EXEC DBMS_STATS.ALTER_STATS_HISTORY_RETENTION(15);

-- 清理历史统计
BEGIN
  FOR i IN REVERSE 15..31 LOOP
    DBMS_STATS.PURGE_STATS(SYSDATE - i);
  END LOOP;
END;
/
--对WRI$_OPTSTAT*系列表执行定期清理可有效释放空间。
  • 分区维护操作​:对SYSAUX中的大表进行分区级维护: 
-- 移动分区表并更新索引
ALTER TABLE WRH$_ACTIVE_SESSION_HISTORY 
  MOVE PARTITION SYS_P1 TABLESPACE sysaux 
  UPDATE GLOBAL INDEXES;

ALTER INDEX WRH$_ACTIVE_SESSION_HISTORY_PK 
  REBUILD PARTITION SYS_P1;

--此操作需在维护窗口进行,避免性能影响。
  • USERS表空间
    • 用户隔离机制​:创建用户时指定默认表空间,避免使用SYSTEM:
CREATE USER TEST_USER IDENTIFIED BY Oracle_4U 
DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
  •  空间管理优化​:本地管理表空间(LMT)使用位图跟踪区分配,减少数据字典竞争。

2.3 最佳运维实践

  • 空间监控体系​:建立三层监控体系防范空间风险:
  1. 实时预警​:设置表空间使用率>80%的告警阈值
  2. 每日巡检​:检查AWR/统计信息保留策略
  3. 月度分析​:使用DBMS_SPACE_ADVISOR分析碎片情况
组件迁移策略​:对非核心组件实施 分层存储​:
-- 迁移LogMiner到普通表空间
EXEC SYS.DBMS_LOGMNR_D.SET_TABLESPACE('USER_DATA');

-- 迁移审计表
ALTER TABLE sys.aud$ MOVE TABLESPACE audit_data;
--迁移后需验证组件功能完整性。
  •  初始化参数优化​:关键参数配置建议:
-- 审计设置
ALTER SYSTEM SET audit_trail=db SCOPE=spfile;

-- 修改参数文件(spfile)中的值
ALTER SYSTEM SET recyclebin=off SCOPE=spfile;
-- 重启数据库使生效
SHUTDOWN IMMEDIATE;
STARTUP;
-- 检查recyclebin状态
SHOW PARAMETER recyclebin;
--
NAME       TYPE   VALUE
---------- ------ -----
recyclebin string off

-- AWR设置
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
  interval => 30, retention => 4320);
  • 备份恢复策略​:系统表空间需特殊备份策略​:
    • RMAN增量备份​:每日增量+每周全备
    • 控制文件多路复用​:至少3份拷贝
    • 快速恢复区​:确保足够空间存放备份,恢复演练应每季度执行,验证恢复流程有效性

你可能感兴趣的:(oracle,数据库,database,sql,大数据)