zoukankan      html  css  js  c++  java
  • [转]手工完全恢复(不可转储)

    实验环境:red hat 5.8

    oracle环境:11.2.0.3

    实验情况:新建的表空间,来不及备份,就已经损坏的情况下。

    新建的表空间,没有备份,无法转储,只能重建数据文件

    1、查看一下现有的数据文件位置。

    sys@TEST0910> select file#,name from v$datafile;
     
         FILE# NAME
    ---------- --------------------------------------------------
             1 /u01/app/oracle/oradata/test0910/system01.dbf
             2 /u01/app/oracle/oradata/test0910/sysaux01.dbf
             3 /u01/app/oracle/oradata/test0910/undotbs01.dbf
             4 /u01/app/oracle/oradata/test0910/users01.dbf
             5 /u01/app/oracle/oradata/test0910/example01.dbf
             6 /u01/app/oracle/oradata/test0910/testtb.dbf
     
    6 rows selected.

    2、新建一个表空间和一个数据表。

    sys@TEST0910> create tablespace lxtbs datafile '/u01/app/oracle/oradata/test0910/lxtb01.dbf' size 20m;
     
    Tablespace created.
    在新建的表空间中新建一个表。
    sys@TEST0910> create table scott.lxtb tablespace lxtbs as select * from scott.emp;
     
    Table created.

    3、插入三次数据,分别为提交归档,提交不归档,不提交不归档。

    1.提交归档

    sys@TEST0910> insert into scott.lxtb select * from scott.emp;
     
    14 rows created.
     
    sys@TEST0910> commit;
     
    Commit complete.
     
    sys@TEST0910> alter system archive log current;
     
    System altered.
     
    sys@TEST0910> select count(*) from scott.lxtb;
     
      COUNT(*)
    ----------
            28
     

    2.提交不归档

    sys@TEST0910> insert into scott.lxtb select * from scott.emp;
     
    14 rows created.
     
    sys@TEST0910>  commit;
     
    Commit complete.
     
    sys@TEST0910> select count(*) from scott.lxtb;
     
      COUNT(*)
    ----------
            42

    3.不提交,不归档

    sys@TEST0910> insert into scott.lxtb select * from scott.emp;
     
    14 rows created.
     
    sys@TEST0910> select count(*) from scott.lxtb;
     
      COUNT(*)
    ----------
            56

    4、模拟断电。

    sys@TEST0910> shutdown abort;
    ORACLE instance shut down.

    5、删除新建的表空间上的数据文件

    [oracle@rtest ~]$ rm /u01/app/oracle/oradata/test0910/lxtb01.dbf
    [oracle@rtest ~]$ ls /u01/app/oracle/oradata/test0910/lxtb01.dbf
    ls: /u01/app/oracle/oradata/test0910/lxtb01.dbf: No such file or directory

    6、起库,报错,查询损坏的数据文件

    sys@TEST0910> startup
    ORACLE instance started.
     
    Total System Global Area 2505338880 bytes
    Fixed Size                  2230952 bytes
    Variable Size             587203928 bytes
    Database Buffers         1895825408 bytes
    Redo Buffers               20078592 bytes
    Database mounted.
    ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
    ORA-01110: data file 7: '/u01/app/oracle/oradata/test0910/lxtb01.dbf'
     
    查询哪个是坏的,这个数据文件没有备份。
    sys@TEST0910> select file#,error from v$recover_file;
     
         FILE# ERROR
    ---------- -----------------------------------------------------------------
             7 FILE NOT FOUND
     

    7、可先使用高可用模式先开库

    sys@TEST0910> alter database datafile 7 offline;
     
    Database altered.
     
    sys@TEST0910> alter database open;
     
    Database altered.
     

    8、利用日志文件来恢复数据文件

    新建一个空白的文件,用日志来恢复。这个就相当于转储。
    sys@TEST0910> alter database create datafile '/u01/app/oracle/oradata/test0910/lxtb01.dbf';
     
    Database altered.
     
    sys@TEST0910> alter database datafile 7 online;
     
    Database altered.
    sys@TEST0910> select count(*) from scott.lxtb;
     
      COUNT(*)
    ----------
            42
     
    http://blog.csdn.net/rlhua/article/details/11869935
  • 相关阅读:
    能者摹形 大师窃意
    Nginx负载均衡的详细配置及使用案例详解.
    Zookeeper 4、Zookeeper开发
    nginx负载均衡
    Git:husky > npm run s precommit
    关于数据库路径 DataDirectory
    关于在VS2010 ASP.NET MVC3中使用WebService的实例
    SQLite的SQL语法
    获取IE可见高度和内容高度 记录
    转文:ASP.NET运行机制原理
  • 原文地址:https://www.cnblogs.com/gispf/p/3777773.html
Copyright © 2011-2022 走看看