版本 |
架构特点 |
关键改进 |
遗留问题 |
8i/9i |
单一SYSTEM表空间 |
- |
空间压力、碎片问题 |
10g |
SYSTEM+SYSAUX双表空间 |
引入SYSAUX分担负载 |
组件迁移不彻底 |
11g |
增强SYSAUX管理 |
AWR自动清理、统计信息管理 |
SM/OPTSTAT空间回收 |
12c+ |
云环境优化 |
多租户支持、热迁移 |
CDB/PDB特殊管理 |
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
-- 设置AWR保留时间为7天
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 10080);
--默认保留期从10g的7天延长至8天,适应更大规模性能数据分析
-- 清理30天前的统计信息
EXEC DBMS_STATS.PURGE_STATS(SYSDATE-30);
--PL/SQL procedure successfully completed.
-- 关闭审计功能
ALTER SYSTEM SET audit_trail=none SCOPE=spfile;
--System altered.
--或迁移审计表:
ALTER TABLE sys.aud$ MOVE TABLESPACE users;
--Table SYS.AUD$ altered.
--这些改进提高了系统表空间的可管理性。
ALTER TABLE WRH$_ACTIVE_SESSION_HISTORY MOVE PARTITION partition_P1;
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
--此脚本输出包括迁移方法(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
-- 调整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*系列表执行定期清理可有效释放空间。
-- 移动分区表并更新索引
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;
--此操作需在维护窗口进行,避免性能影响。
CREATE USER TEST_USER IDENTIFIED BY Oracle_4U
DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
-- 迁移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);