当前位置:  数据库>oracle

Oracle 10g UNDO表空间过大的解决方案

    来源: 互联网  发布时间:2017-06-05

    本文导语: 在Oracle 10g数据库的应用中,出现了UNDO表空间过大导致磁盘空间不足而崩溃的现象。对此问题进行分析后,总结了出现该问题的原因主要有以下两点: 1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况; 2. 有...

在Oracle 10g数据库的应用中,出现了UNDO表空间过大导致磁盘空间不足而崩溃的现象。对此问题进行分析后,总结了出现该问题的原因主要有以下两点:

1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况;

2. 有较大事务没有收缩或者没有提交所导制;

说明:本问题在Oracle系统管理中属于比较正常的一现象,日常维护多注意对磁盘空间的监控。

Oracle 10g 有自动Automatic Undo Retention Tuning 这个特性。设置的 undo_retention 参数只是一个指导值,缺省值900秒,,Oracle 会自动调整 Undo (会跨过 undo_retention 设定的时间) 来保证不会出现 Ora-1555 错误.。通过查询V$UNDOSTAT(该视图记录4天以内的UNDO表空间使用情况,超过4天可以查询DBA_HIST_UNDOSTAT视图)的tuned_undoretention (该字段在10G版本才有,9I是没有的)字段可以得到Oracle 根据事务量(如果是文件不可扩展,则会考虑剩余空间)采样后的自动计算出最佳的 retenton 时间。

RMAN备份与恢复之undo表空间丢失

关于Oracle 释放过度使用的undo表空间

Oracle undo的一些理解

Oracle undo 镜像数据探究

Oracle 回滚(ROLLBACK)和撤销(undo)

1)查询retention值

show parameter undo_retention

查询自动计算出最佳的retenton 时间

select tuned_undoretention, maxquerylen, maxqueryid from v$undostat;

2)更改retention值

ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;

这样对于一个事务量分布不均匀的数据库来说,,就会引发潜在的问题--在批处理的时候可能 Undo 会用光, 而且这个状态将一直持续, 不会释放。

如何取消10g的auto UNDO Retention Tuning,有如下三种方法:

(1)10.2.0.2/10.2.0.3有相应的patch,这个bug在10.2.0.4中已经修复,建议找时间停机打patch.

(2)设置隐含参数_smu_debug_mode=33554432,将tuned_undoretention取值算法修正为max(maxquerylen secs + 300,undo_retention ),不建议使用SQL> Alter system set "_smu_debug_mode" = 33554432;

(3)设置隐含参数_undo_autotune=false,关闭自动undo retention调整特性,不建议使用SQL> Alter system set "_undo_autotune" = false;from metalink 420525.1: Automatic Tuning of Undo_retention Causes Space Problems.

解决步骤:

1. 启动SQLPLUS,并用sys登陆到数据库。

#su - oracle

$>sqlplus / as sysdba

2. 查找数据库的UNDO表空间名,确定当前例程正在使用的UNDO表空间:Show parameter undo_tablespace。

3. 确认UNDO表空间;

SQL> select name from v$tablespace;

NAME

------------------------------

.......

UNDOTBS1

4. 检查数据库UNDO表空间占用空间情况以及数据文件存放位置;

SQL>select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS%';

5. 查看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间(特别是生产环境)。

SQL> select s.username, u.name from v$transaction t,v$rollstat r, v$rollname u,v$session s

where s.taddr=t.addr and t.xidusn=r.usn and r.usn=u.usn order by s.username;

6. 检查UNDO Segment状态;

SQL> select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;

7. 创建新的UNDO表空间,并设置自动扩展参数;

SQL> create undo tablespace undotbs2 datafile '/opt/oracle/oradata/ge01/UNDOTBS2.dbf' size 100m reuse autoextend on next 50m maxsize 5000m;

Tablespace created.

8. 动态更改spfile配置文件;

SQL> alter system set undo_tablespace=undotbs2 scope=both;

System altered.

9. 等待原UNDO表空间所有UNDO SEGMENT OFFLINE;

select usn,xacts,status,rssize/1024/1024,hwmsize/1024/1024, shrinks from  v$rollstat order by rssize;

10. 再执行看UNDO表空间所有UNDO SEGMENT ONLINE;

select usn,xacts,status,rssize/1024/1024,hwmsize/1024/1024, shrinks from v$rollstat order by rssize;

11. 删除原有的UNDO表空间;

SQL> drop tablespace undotbs1 including contents;

Tablespace dropped.

12. 确认删除是否成功;

SQL> select name from v$tablespace;

NAME

------------------------------

.......

UNDOTBS2

12 rows selected.

13. 更新pfile

SQL> create pfile from spfile;

File created.

14. 册除原UNDO表空间的数据文件,其文件名为步骤中执行的结果。

#rm $ORACLE_BASE/oradata/$ORACLE_SID/undotbs01.dbf


    
 
 

您可能感兴趣的文章:

  • Linux安装Oracle 11时报错DISPLAY解决方案
  • Oracle 数据库容灾复制解决方案分析Shar Plex
  • oracle怎么删除用户提供解决方案
  • oracle远程复制及异地容灾的技术解决方案
  • Oracle 10g的DBA无法登录解决方案
  • 错误信息:java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver,求解决方案!
  • 初学Oracle最经常碰到的错误及解决方案
  • ORA-28002 Oracle 11g存在密码过期问题解决方案
  • Oracle中如何插入特殊字符:& 和 '(多种解决方案)
  • oracle保留两位小数解决方案
  • Oracle数据仓库的分层管理器解决方案开发者网络Oracle
  • oracle 分页问题解决方案
  • Oracle数据仓库的分层管理器解决方案
  • oracle查询锁表与解锁情况提供解决方案
  • Oracle 10g 自己碰到的问题及解决方案
  • oracle 数据库数据迁移解决方案
  • 解决oracle用户连接失败的解决方法
  • Oracle Connect to Idle Instance解决方法
  • Linux下安装Tomcat后与Oracle冲突的解决
  • linux下安装oracle,出现没有权限的报警,怎么解决?
  • 安装Oracle加载数据库错误areasQueries的解决
  • Oracle 11g 相关工具netca,dbca乱码之解决
  • Linux下Oracle安装时遇到的问题及解决
  • 简单的Oracle小问题解决
  • oracle中文乱码解决的办法
  • 关于系统重装后Oracle数据库完全恢复的解决办法
  • 安装oracle9时,安装界面的字体无法正确显示,怎么解决啊???
  • Oracle安装后8080和80端口被占用的解决办法
  • oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法
  • oracle 实际值超过数据库某个字段指定长度报错解决
  • Linux下命令行启动oracle时报错的解决
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Lucene和Oracle的集成方案 LDI
  • 请问哪里有 小性机 +linux +oracle 的配置方案?
  • Oracle为IBM大型机服务器提供Linux方案
  • 【求助】RHEL5.1 下安装Oracle 10.2g出现问题:指定数据库方案口令后卡住了,不能安装
  • Oracle时间精确到时、分、秒处理方案
  • 账户方案系统角色多管齐下保障Oracle的安全
  • 深入探讨:oracle中方案的概念以及方案与数据库的关系
  • 关于Oracle 数据库的配置方案说明
  • Oracle数据库的备份与恢复技术方案
  • rman恢复方案和oracle异机恢复
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,