根据您的数据库要求创建一个相同大小(更大或更小)的新撤消表空间。
SQL>?create?undo?tablespace?UNDOTBS2?datafile?'D:\ORACLE\PRODUCT\11.2.0\ORADATA\ORCL\UNDOTBS02.DBF'?size?5000M;?
切换到新的 Undo 表空间:
SQL>?ALTER?SYSTEM?SET?UNDO_TABLESPACE?=?UNDOTBS2?SCOPE=BOTH;?
查看undo segment
的状态,判断old undo tablespace中的segment是否都处于offline状态。
sql>?select?tablespace_name,?status,?count(*)?from?dba_rollback_segs?group?by?tablespace_name,?status;?
如果表空间中有状态不是OFFLINE
的Undo
段要被删除,我们需要等到它们变为OFFLINE。您可能必须等待tuned_undoretention 的持续时间(来自v$undostat)以确保所有撤消段都已变为OFFLINE。
sql>?select?status,segment_name?from?dba_rollback_segs?where?status?not?in?("OFFLINE')?and?tablespace_name=[undo?tablespace?to?be?dropped];?
例如:
sql>?select?status,segment_name?from?dba_rollback_segs?where?status?not?in?("OFFLINE')?and?tablespace_name='UNDOTBS1';?
如果旧Undo
表空间中的所有Undo段都处于OFFLINE状态,则删除该表空间。
sql>?select?tablespace_name,?status,?count(*)?from?dba_rollback_segs?group?by?tablespace_name,?status;?
验证然后丢弃:
sql>?drop?tablespace?[tablespace_name]?including?contents?and?datafiles;?
例如:
sql>?drop?tablespace?UNDOTBS1?including?contents?and?datafiles;?
方法二:向撤消表空间添加空间
对于增加/调整撤消表空间的大小,有两个选项:
- 调整现有撤销数据文件的大小
- 将新的撤销数据文件添加到表空间。
调整现有撤销数据文件的大小:
col?T_NAME?for?a23? col?FILE_NAME?for?a65? select?tablespace_name?T_NAME,file_name,?bytes/1024/1024?MB?from?dba_data_files?where?tablespace_name?=(SELECT?UPPER(value)?FROM?v$parameter?WHERE?name?=?'undo_tablespace')?order?by?file_name;? ? alter?database?datafile?'[COMPLETE_PATH_OF_UNDO_DBF_FILE]'?resize?[SIZE]M;?
例如:
sql>?alter?database?datafile?'D:\ORACLE_DB\TESTDB\TESTDB\UNDOTBS01.DBF'?resize?1500M;?
添加新数据文件的步骤:
sql>?alter?tablespace?[UNDO?tbs?name]?ADD?DATAFILE?'[COMPLETE_PATH_OF_UNDO_DBF_FILE]'?size?20M;?
例如:
sql>?alter?tablespace?UNDOTBS1?ADD?DATAFILE?'D:\ORACLE_DB\TESTDB\TESTDB\UNDOTBS02.DBF'?size?20M;?
三、Oracle 中撤消表空间/撤消管理的最佳实践
以下建议列表将帮助您管理撤销空间以发挥最大优势。
- 除非您的系统具有闪回或 LOB 保留要求,否则您无需为
UNDO_RETENTION
参数设置值。 - 在撤销表空间中留出 10% 到 20% 的额外空间,以应对工作负载的一些波动。
- 正确设置撤消表空间警报的警告和严重警报阈值。
- 要调整 SQL 查询或检查失控查询,请使用长查询或
V$UNDOSTAT
或WRH$_UNDOSTAT
视图中提供的 SQLID 列的值从 V$SQL 视图检索 SQL 文本和有关 SQL 的其他详细信息。
到此这篇关于生产环境Oracle undo表空间管理实践的文章就介绍到这了,更多相关Oracle undo表空间管理内容请搜索