今天做了一下undo隐藏参数的实验

在没有备份的情况下,删除正在使用的undo,然后关机

(本次使用的的oracle的隐藏参数,慎用!!!!!!!!!!!!!!)

idle> select * from V$VERSION;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE10.2.0.1.0Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

sys@DNDN> startup

ORACLE instance started.

Total System Global Area  335544320 bytes
Fixed Size   2020640 bytes
Variable Size 117443296 bytes
Database Buffers 213909504 bytes
Redo Buffers   2170880 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 - see DBWR trace file
ORA-01110: data file 2: '/u01/app/oracle/oradata/dndn/undotbs1.dbf'

sys@DNDN> show parameter undo_t

NAME    TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace     stringUNDOTBS1

在此之前我有建立有一个未使用的undo 名字叫undotbs(区别上面的undotbs1)(*注:若没有多余的undo,则见文章最后解决办法)

sys@DNDN>shutdown immediate;

idle> startup nomount;
ORACLE instance started.

Total System Global Area  335544320 bytes
Fixed Size   2020640 bytes
Variable Size 117443296 bytes
Database Buffers 213909504 bytes
Redo Buffers   2170880 bytes

#把undo_tablespace 修改成备用的undo

idle>alter system set undo_tablespace=undotbs scope=spfile;

#把undo改成手动管理

idle> alter system set undo_management=manual scope=spfile;

System altered.

#使用隐藏参数
idle> alter system set "_offline_rollback_segments"=true scope=spfile;

System altered.

idle> shutdown immediate;

idle> startup
ORACLE instance started.

Total System Global Area  335544320 bytes
Fixed Size   2020640 bytes
Variable Size 117443296 bytes
Database Buffers 213909504 bytes
Redo Buffers   2170880 bytes
Database mounted.
Database opened.

这样数据库就可以打开了!

查看UNDOTBS1 (之前丢失的表空间) 中的段的状态是否都是offline

idle> select segment_name,tablespace_name,status from dba_rollback_segs;

SEGMENT_NAME       TABLESPACE_NAME      STATUS
------------------------------ ------------------------------ ----------------
SYSTEM       SYSTEM      ONLINE
_SYSSMU1$       UNDOTBS1       OFFLINE
_SYSSMU2$       UNDOTBS1       OFFLINE
_SYSSMU3$       UNDOTBS1       OFFLINE
_SYSSMU4$       UNDOTBS1       OFFLINE
_SYSSMU5$       UNDOTBS1       OFFLINE
_SYSSMU6$       UNDOTBS1       OFFLINE
_SYSSMU7$       UNDOTBS1      OFFLINE
_SYSSMU8$       UNDOTBS1     OFFLINE
_SYSSMU9$       UNDOTBS1      OFFLINE
_SYSSMU10$       UNDOTBS1    OFFLINE
_SYSSMU11$       UNDOTBS      OFFLINE
_SYSSMU12$       UNDOTBS      OFFLINE
_SYSSMU13$       UNDOTBS      OFFLINE
_SYSSMU14$       UNDOTBS      OFFLINE
_SYSSMU15$       UNDOTBS      OFFLINE
_SYSSMU16$       UNDOTBS      OFFLINE
_SYSSMU17$       UNDOTBS      OFFLINE
_SYSSMU18$       UNDOTBS      OFFLINE
_SYSSMU19$       UNDOTBS      OFFLINE
_SYSSMU20$       UNDOTBS      OFFLINE

21 rows selected.

若UNDOTBS1 (之前丢失的表空间) 中的段的状态都是offline,则可以删除该undo表空间(否则,则要用到另一个隐藏参数"_corrupted_rollback_segments"把不为offline的段全用此参数设置即可删除该undo表空间 eg: alter system set "_corrupted_rollback_segments"='_SYSSMU8$' scope=spfile;或 alter system set "_corrupted_rollback_segments"='_SYSSMU8$','_SYSSMU9$' scope=spfile)

idle> drop tablespace undotbs1 including contents and datafiles;

当然打开后还要重置一下undo_management和_offline_rollback_segments

idle> alter system set undo_management=auto scope=spfile;

System altered.

idle> alter system reset  "_offline_rollback_segments" scope=spfile sid='*';

System altered.

idle>shutdown immediate;

idle> startup
ORACLE instance started.

Total System Global Area  335544320 bytes
Fixed Size   2020640 bytes
Variable Size 121637600 bytes
Database Buffers 209715200 bytes
Redo Buffers   2170880 bytes
Database mounted.
Database opened.

ok!!!!!!

上面说的是有未使用的undo表空间的情况,若只有一个undo,且丢失损坏,则在数据库重启报错后,先设置隐藏参数_offline_rollback_segments和undo_management,重启,会再报错,再把这个undo给offline,就可以打开了,打开之后 删除丢失或损坏的undo,重建undo,修改参数文件指定undo,重置参数上面, 重启即可。(主要大概思路同上面方法)

注:隐藏参数

idle> select ksppinm from x$ksppi where ksppinm like '%roll%';

KSPPINM
--------------------------------------------------------------------------------
transactions_per_rollback_segment
rollback_segments
_rollback_segment_initial
_rollback_segment_count
_offline_rollback_segments
_corrupted_rollback_segments
_cleanup_rollback_entries
_rollback_stopat
fast_start_parallel_rollback
_mv_rolling_inv

10 rows selected.

在没备份undo的情况下,undo丢失,重启数据库报ORA-01157错误的更多相关文章

  1. RabbitMQ-如何保证消息在99.99%的情况下不丢失

    1. 简介 MQ虽然帮我们解决了很多问题,但是也带来了很多问题,其中最麻烦的就是,如何保证消息的可靠性传输. 我们在聊如何保证消息的可靠性传输之前,先考虑下哪些情况下会出现消息丢失的情况. 首先,上图 ...

  2. Unity脚本的生命周期 同一脚本/不同脚本/游戏对象激没激活/脚本激没激活,几种情况下的Awake,OnEnable,Start的执行顺序

    可以自己在Unity里面试一下 游戏对象在Hierarchy面板不是激活的,它的脚本没作用,脚本中的函数不会执行; 游戏对象在Hierarchy面板是激活的,脚本没激活,Awake会执行,OnEnab ...

  3. oracle登陆,在监听服务启动了的情况下,登陆用户还是报错未启动监听服务的错误(刚开始装oracle是能登陆的,重启之后装了plsql)

    刚开始装oracle是能登陆的,重启之后装了140M的plsql,所以有可能是plsql跟oracle监听冲突了,所以我之后换了33M的plsql,oracle就没问题了,可以正常登陆了

  4. Spring3+mybatis3在多数据源情况下找不到数据库驱动的问题

    解决问题的过程如下: 1.遇到问题和一般的解决方法和下面这个帖子的一样: http://www.oschina.net/question/188964_32305 2.我在按照1的做法配置了以后,依然 ...

  5. 使用ab.exe监测100个并发/100次请求情况下同步/异步访问数据库的性能差异

    ab.exe介绍 ab.exe是apache server的一个组件,用于监测并发请求,并显示监测数据 具体使用及下载地址请参考:http://www.cnblogs.com/gossip/p/439 ...

  6. SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件?

    第一步:先建立一个同名数据库,停止SQL SERVER2005,将没有日志的的.mdf数据库文件覆盖刚新建的.mdf数据库文件,重新启动数据库. 第二步:在查询分析器中运行如下代码(将数据库名修改为您 ...

  7. Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use

    今天在别人的服务器上登录mysql发现无法登陆(Mysql别人实现安装好的) 密码和用户名都是正确的,但登录后报如下错误: ERROR 1045 (28000): Access denied for ...

  8. Oracle 无备份情况下的恢复--临时文件/在线重做日志/ORA-00205

    13.5 恢复临时文件 临时文件没有也不应该备份.通过V$TEMPFILE可以找到所有的临时文件. 此类文件的损坏会造成需要使用临时表空间的命令执行失败,不至于造成实例崩溃或session中断.由于临 ...

  9. 利用Xtrabackup在不停机的情况下备用数据库迁移

    什么是Xtrabackup?答:Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. 下 ...

随机推荐

  1. [LeetCode#247] Strobogrammatic Number II

    Problem: A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked a ...

  2. eclipse无法与手机连上的解决方案

    在eclipse上开发android应用,有时候会遇到eclipse无法识别手机的问题,就算把数据线拔了又插,插了又拔,哪怕是重启eclipse 甚至是重启电脑,这个问题也依然是解决不了.这时候就非常 ...

  3. js 时间转成时间戳对比;My97DatePicker日历控件时间格式;Date.parse Firefox火狐浏览器返回Nan的解决办法

    有个情况,我在显示时间的时候是需要显示为  2013年8月15日 14时28分15秒 但是假如我用js去获取到这个时间,并且想进行时间对比的时候,这个时间2013年8月15日 14时28分15秒根本就 ...

  4. [转]SQL、LINQ、Lambda

    原文链接:http://www.cnblogs.com/mr-hero/p/3532631.html SQL   LinqToSql   Lambda 1. 查询Student表中的所有记录的Snam ...

  5. pl/sql developer 连接本地ORACLE 11g 64位数据库

    1.登录PL/SQL Developer 这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files ...

  6. mac下SSH很快被断开

    解决方法: 1. 切换到root账号:sudo bash -c 'su - root' 2. 修改/etc/ssh_config文件 ServerAliveCountMax 5 ServerAlive ...

  7. 转载:看c++ primer 学习心得

    学习C++ Primer时遇到的问题及解释 chenm91 感觉: l          啰嗦有时会掩盖主题:这本书确实有些啰嗦,比如在讲函数重载的时候,讲了太长一大段(有两节是打了*号的,看还是不看 ...

  8. LightOJ 1038-Race to 1 Again(概率dp)

    题意: 给你一个数n每一步这个数可以变为他的因子,直到这个数变为1,求n变到1的期望步数. 分析: dp[i],表示i变为1的期望步数,dp[1]=0,dp[n]是答案. dp[i]=sum(dp[j ...

  9. SDUT 3568 Rock Paper Scissors 状压统计

    就是改成把一个字符串改成三进制状压,然后分成前5位,后5位统计, 然后直接统计 f[i][j][k]代表,后5局状压为k的,前5局比和j状态比输了5局的有多少个人 复杂度是O(T*30000*25*m ...

  10. 《Python CookBook2》 第一章 文本 - 每次处理一个字符 && 字符和字符值之间的转换

    文本 - 总结: 什么是文本Python 中的string 类型是不可变类型.文本,一个字符的矩阵,每一个单独的文本快可以被缩进和组织起来. 基本的文本操作①解析数据并将数据放入程序内部的结构中:②将 ...