SYSAUX表空间使用率过高的问题处理
- Oracle数据库的表空间主要分为两类,一类是数据库系统表空间,例如SYSTEM, SYSAUX, TEMP, UNDO,另一类是用户自定义表空间,主要适用于各种业务的数据处理。SYSTEM表空间主要用来存储数据库的数据字典和元数据信息,其表空间的容量大小随着数据库对象的规模而变化;而SYSAUX表空间诞生于10G,作为SYSTEM表空间的辅助空间,被设计用来存储数据库对象的统计信息以及数据库快照等历史性能数据,其空间容量随着时间的推移不断地膨胀,我们需要根据oracle的相应的管理方式来设置管理策略,设定历史数据的保留时间等。
- 而UNDO 和TEMP表空间的容量则与数据库的活跃程度相关,数据库越是活跃,事务处理规模越大则相应空间容量的占用会增加。我们需要根据业务所产生的数据库事务的规模设置TEMP和UNDO表空间的容量。
- 我们使用以下的SQL语句查询数据库系统表空间的使用率信息:
SELECT * FROM ( SELECT D.TABLESPACE_NAME, SPACE || 'M' "SUM_SPACE(M)", BLOCKS "SUM_BLOCKS", SPACE - NVL (FREE_SPACE, 0) || 'M' "USED_SPACE(M)", ROUND ( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || '%' "USED_RATE(%)", FREE_SPACE || 'M' "FREE_SPACE(M)" FROM ( SELECT TABLESPACE_NAME, ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE, SUM (BLOCKS) BLOCKS FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) D, ( SELECT TABLESPACE_NAME, ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) UNION ALL SELECT D.TABLESPACE_NAME, SPACE || 'M' "SUM_SPACE(M)", BLOCKS SUM_BLOCKS, USED_SPACE || 'M' "USED_SPACE(M)", ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) || '%' "USED_RATE(%)", NVL (FREE_SPACE, 0) || 'M' "FREE_SPACE(M)" FROM ( SELECT TABLESPACE_NAME, ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE, SUM (BLOCKS) BLOCKS FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME) D, ( SELECT TABLESPACE_NAME, ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE, ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE FROM V$TEMP_SPACE_HEADER GROUP BY TABLESPACE_NAME) F WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) ORDER BY 1) WHERE TABLESPACE_NAME IN ('SYSAUX','SYSTEM','UNDOTBS1','TEMP');
TABLESPACE_NAME SUM_SPACE(M) SUM_BLOCKS USED_SPACE(M) USED_RATE(%) FREE_SPACE(M) --------------- ----------- --------- ------------ ----------- ------------ SYSAUX 840M 107520 792.31M 94.32% 47.69M SYSTEM 810M 103680 809.56M 99.95% .44M TEMP 47M 6016 47M 100% 0M UNDOTBS1 405M 51840 404M 99.75% 1M
- 我们使用以下语句查询SYSAUX表空间内各个分类项目占存储空间的比重:
SELECT occupant_name "Item", space_usage_kbytes / 1048576 "Space Used (GB)", schema_name "Schema", move_procedure "Move Procedure" FROM v$sysaux_occupants ORDER BY 1
-
修改统计信息的保持时间,默认为31天,这里修改为7天,过期的统计信息会自动被删除:
(1)查询数据库统计信息的保留时间
SQL> select dbms_stats.get_stats_history_retention from dual;
GET_STATS_HISTORY_RETENTION --------------------------- 31
(2)更改数据库统计信息的保留时间为7天
SQL> exec dbms_stats.alter_stats_history_retention(7); PL/SQL procedure successfully completed.
(3)再次查询数据库统计信息的保留时间
SQL> select dbms_stats.get_stats_history_retention from dual; GET_STATS_HISTORY_RETENTION --------------------------- 7
-
修改AWR快照的保存时间为7天(7*24*60),每小时收集一次,也可以通过EM界面查看和修改
(1)查询数据库快照的MIN(SNAP_ID)和MAX(SNAP_ID)
SQL> select min(snap_id),max(snap_id) from dba_hist_snapshot;
MIN(SNAP_ID) MAX(SNAP_ID) ------------ ------------ 701 716
(2)如果修改数据库快照的保留时间出现错误ORA-13541与ORA-06512,处理方法如下所示
ERROR
begin
*
第 1 行出现错误:
ORA-13541: 系统移动窗口基线大小 (691200) 大于保留时间 (604800)
ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 39
ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 87
ORA-06512: 在 line 2
*
第 1 行出现错误:
ORA-13541: 系统移动窗口基线大小 (691200) 大于保留时间 (604800)
ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 39
ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 87
ORA-06512: 在 line 2
-
查询ORA-13541的错误信息如下:
ORA-13541: system moving window baseline size (string) greater than retention (string)
Cause: The system moving window baseline size must be less than the retention setting.
The specified window size or retention violate this.
Action:Check the moving window baseline size or retention.
Cause: The system moving window baseline size must be less than the retention setting.
The specified window size or retention violate this.
Action:Check the moving window baseline size or retention.
-
在看看上面的个数字基线大小(691200)和保留时间(604800)
-
基线大小691200
SQL> select 691200/60/60/24 from dual; 691200/60/60/24 --------------- 8 Note:8天的时间
-
保留时间604800
SQL> select 604800/60/24/60 from dual; 604800/60/24/60 --------------- 7
-
检查当前的移动窗口基线大小
SQL> SELECT dbid, baseline_name, baseline_type, moving_window_size from dba_hist_baseline; DBID BASELINE_NAME BASELINE_TYPE MOVING_WINDOW_SIZE ---------- ------------------------ ------------- ------------------ 4096851118 SYSTEM_MOVING_WINDOW MOVING_WINDOW 8
-
与上面的8天对应的数字(8*60*60*24=691200)相吻合.
-
调用如下过程修改移动窗口baseline size为7天
SQL> exec dbms_workload_repository.modify_baseline_window_size(7); PL/SQL 过程已成功完成。
-
然后继续上面的修改操作
SQL> begin dbms_workload_repository.modify_snapshot_settings ( interval => 30, retention => 7*24*60, topnsql => 100 ); end; / PL/SQL 过程已成功完成。
SQL> select * from dba_hist_wr_control; DBID SNAP_INTERVAL RETENTION TOPNSQL ---------- --------------------- --------------------- ---------- 4096851118 +00000 00:30:00.0 +00007 00:00:00.0 100
SQL> SELECT dbid, baseline_name, baseline_type, moving_window_size from dba_hist_baseline; DBID BASELINE_NAME BASELINE_TYPE MOVING_WINDOW_SIZE ---------- ----------------------- ------------- ------------------ 4096851118 SYSTEM_MOVING_WINDOW MOVING_WINDOW 7
- 在Enterprise Manager中修改快照的保留时间
相关推荐
实际工作中难免会遇到表/用户等指向表空间不明确,或者是默认指向了系统表空间(system/sysaux)这种情况。存储空间往往都是有限的,所以当碰到这类问题的时候该怎么去清理释放系统表空间是必备知识。
在Oracle数据库12c 12.2.0.1版本及更高版本中,用户可能会遇到一个常见的问题,那就是SYSAUX表空间过快增长。SYSAUX表空间是Oracle数据库中的一个重要组成部分,它存储了系统级别的对象和服务,包括数据字典、索引、...
当SYSAUX表空间遇到问题,例如因介质故障而失效时,需要采取措施进行恢复。根据不同的情况,恢复方法也有所不同: 1. **冷备模式下的恢复**: - 如果在冷备模式下,且控制文件没有被重建,也没有执行resetlogs操作...
在Oracle数据库管理中,表空间过大可能会导致一系列问题,如数据库宕机或用户无法登录。以下是一些处理Oracle数据库表空间过大的策略,确保系统的稳定运行。 首先,针对临时表空间满的情况,有三种主要的处理方法:...
表空间分为多种类型,包括系统表空间(如 `SYSTEM` 和 `SYSAUX`)、回滚表空间(UNDO)、临时表空间(TEMP)以及用户数据表空间(USERS)。系统表空间存放数据库系统组件,不建议存储用户数据;回滚表空间用于存储...
总的来说,优化Oracle数据库中的表空间管理涉及多个方面,包括设置默认表空间、监控SYSAUX表空间的使用、以及灵活处理表空间的迁移和重命名。理解并熟练掌握这些技巧可以帮助DBA更有效地管理和维护数据库,确保其...
1. **监控空间使用**:由于sysaux表空间的重要性,定期检查其空间使用情况是必要的,以防止空间不足导致的数据库性能问题。 2. **大小调整**:根据数据库的工作负载,可能需要增加或减少sysaux表空间的大小。这可以...
SYSAUX表空间是一个重要的新特性,它是SYSTEM表空间的辅助,用于存储之前在SYSTEM表空间中的非核心数据库组件,如RMAN恢复目录信息、Data Mining、OLAP等,这样可以减轻SYSTEM表空间的压力,提高数据库性能。SYSAUX...
表空间的维护包括但不限于定期检查和处理,以避免因表空间问题影响数据库的正常运行和应用的稳定性。 一、表空间的定义与作用 表空间是Oracle数据库的基本逻辑存储结构,一个表空间只能属于一个数据库。表空间中...
- **事务处理恢复**:如果实例在事务处理过程中发生故障,Oracle服务器可以通过撤销表空间中的数据进行恢复。 - **读一致性**:撤销表空间确保用户在查询时只能看到已经提交的数据。 #### 三、数据文件 数据文件是...
SYSAUX 表空间在数据库创建时自动创建并由本地管理,有助于在需要完整数据库恢复的 SYSTEM 表空间故障情况下提供恢复支持。 对于想要将 SYSAUX 中的对象转移到其他表空间的情况,Oracle 10g 提供了 `V$SYSAUX_...
2. **SYSAUX表空间**:SYSAUX是SYSTEM表空间的辅助,用于存储除数据字典之外的其他数据对象,如索引段、表段等,减轻了SYSTEM表空间的压力,保持数据库的高效运行。 3. **UNDOTBS1表空间**:回滚表空间,主要功能...
SYSAUX表空间在Oracle 10g及更高版本中引入,作为SYSTEM表空间的辅助,用来存储RMAN恢复目录、Data Mining、OLAP等非核心但重要的数据。SYSAUX必须设置为本地化管理和Segment Space Management Auto类型。 在规划...
- **系统表空间**(`system`、`sysaux`):这些表空间主要用于存储数据库的元数据,例如系统表、索引、数据字典等。 - **非系统表空间**:除了系统表空间之外的所有其他表空间。 每个表空间至少包含一个数据文件,...
通过使用临时表空间组,可以确保有足够的空间供查询使用,从而避免出现磁盘排序等问题。 2. **多默认临时表空间:** 在数据库级别,管理员可以定义多个默认的临时表空间。这样,在创建新会话或用户时,可以自动分配...
- **系统表空间(System Tablespace)**:默认包含SYSAUX表空间,存储Oracle系统数据和大部分数据库对象。 - **临时表空间(Temporary Tablespace)**:用于临时存储排序和联接操作的数据。 - **用户表空间(User...
Oracle数据库是一种广泛使用的大型关系型数据库管理系统,其管理和组织数据的核心概念之一就是表空间。表空间是Oracle数据库的最高级别的逻辑存储单元,它将数据库的逻辑结构与物理存储相结合。在Oracle中,所有的...