ARCHIVELOG模式下用户管理的完全恢复—在没有数据文件备份的情况下恢复数据文件

这个情况需要满足两个条件:只从数据文件创建以后,所有的归档日志文件和控制文件都在就可以使用这种方式来恢复数据。假如数据库是关闭的,发现该数据文件丢失了,又没有备份

  1. SQL> conn /as sysdba  
  2. 已连接。  
  3. SQL> create tablespace tb3 datafile '/u01/app/oracle/oradata/orcl/tb3.dbf' size 10m;  
  4.   
  5. 表空间已创建。  
  6.   
  7. SQL> create user u3 identified by u3 default tablespace tb3;  
  8.   
  9. 用户已创建。  
  10.   
  11. SQL> grant connect,resource to u3;  
  12.   
  13. 授权成功。  
  14.   
  15. SQL> create table u3.t as select * from all_objects;  
  16.   
  17. 表已创建。  
SQL> conn /as sysdba
已连接。
SQL> create tablespace tb3 datafile '/u01/app/oracle/oradata/orcl/tb3.dbf' size 10m;

表空间已创建。

SQL> create user u3 identified by u3 default tablespace tb3;

用户已创建。

SQL> grant connect,resource to u3;

授权成功。

SQL> create table u3.t as select * from all_objects;

表已创建。

 

 

现在正常关闭数据库,删除数据文件

  1. SQL> shutdown immediate  
  2. 数据库已经关闭。  
  3. 已经卸载数据库。  
  4. ORACLE 例程已经关闭。  
  5. SQL> ! rm -rf /u01/app/oracle/oradata/orcl/tb3.dbf  
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> ! rm -rf /u01/app/oracle/oradata/orcl/tb3.dbf

 

 

现在肯定不能启动数据库,查询出丢失的文件的文件号码,也可以看见需要恢复文件记录。

  1. SQL> startup  
  2. ORACLE 例程已经启动。  
  3.   
  4. Total System Global Area  167772160 bytes  
  5. Fixed Size                  1266392 bytes  
  6. Variable Size             117443880 bytes  
  7. Database Buffers           46137344 bytes  
  8. Redo Buffers                2924544 bytes  
  9. 数据库装载完毕。  
  10. ORA-01157: 无法标识/锁定数据文件 15 - 请参阅 DBWR 跟踪文件  
  11. ORA-01110: 数据文件 15: '/u01/app/oracle/oradata/orcl/tb3.dbf'  
  12.   
  13.   
  14. SQL> select status from v$instance;  
  15.   
  16. STATUS  
  17. ------------  
  18. MOUNTED  
  19.   
  20. SQL> select file#,name,status from v$datafile;  
  21.   
  22.      FILE# NAME                                               STATUS  
  23. ---------- -------------------------------------------------- -------  
  24.          1 /u01/app/oracle/oradata/orcl/system01.dbf          SYSTEM  
  25.          2 /u01/app/oracle/oradata/orcl/undotbs01.dbf         ONLINE  
  26.          3 /u01/app/oracle/oradata/orcl/sysaux01.dbf          ONLINE  
  27.          4 /u01/app/oracle/oradata/orcl/users01.dbf           ONLINE  
  28.          5 /u01/app/oracle/oradata/orcl/test01.dbf            ONLINE  
  29.          6 /u01/app/oracle/oradata/orcl/perfstat01.dba        ONLINE  
  30.          7 /u01/app/oracle/oradata/orcl/undo01.dbf            ONLINE  
  31.          8 /u01/app/oracle/oradata/orcl/tbspart01.dbf         ONLINE  
  32.          9 /u01/app/oracle/oradata/orcl/tbspart02.dbf         ONLINE  
  33.         10 /u01/app/oracle/oradata/orcl/tbspart03.dbf         ONLINE  
  34.         11 /u01/app/oracle/oradata/orcl/tbspart04.dbf         ONLINE  
  35.   
  36.      FILE# NAME                                               STATUS  
  37. ---------- -------------------------------------------------- -------  
  38.         12 /u01/app/oracle/oradata/orcl/tb1.dbf               ONLINE  
  39.         13 /u01/app/oracle/oradata/orcl/tb2.dbf               ONLINE  
  40.         14 /u01/app/oracle/oradata/orcl/ttb1.dbf              ONLINE  
  41.         15 /u01/app/oracle/oradata/orcl/tb3.dbf               ONLINE  
  42.   
  43. 已选择15行。  
  44.   
  45. SQL> select * from v$recover_file;  
  46.   
  47.      FILE# ONLINE  ONLINE_ ERROR                                                                CHANGE# TIME  
  48. ---------- ------- ------- ----------------------------------------------------------------- ---------- --------------  
  49.         15 ONLINE  ONLINE  FILE NOT FOUND                                                             0  
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1266392 bytes
Variable Size             117443880 bytes
Database Buffers           46137344 bytes
Redo Buffers                2924544 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 15 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 15: '/u01/app/oracle/oradata/orcl/tb3.dbf'


SQL> select status from v$instance;

STATUS
------------
MOUNTED

SQL> select file#,name,status from v$datafile;

     FILE# NAME                                               STATUS
---------- -------------------------------------------------- -------
         1 /u01/app/oracle/oradata/orcl/system01.dbf          SYSTEM
         2 /u01/app/oracle/oradata/orcl/undotbs01.dbf         ONLINE
         3 /u01/app/oracle/oradata/orcl/sysaux01.dbf          ONLINE
         4 /u01/app/oracle/oradata/orcl/users01.dbf           ONLINE
         5 /u01/app/oracle/oradata/orcl/test01.dbf            ONLINE
         6 /u01/app/oracle/oradata/orcl/perfstat01.dba        ONLINE
         7 /u01/app/oracle/oradata/orcl/undo01.dbf            ONLINE
         8 /u01/app/oracle/oradata/orcl/tbspart01.dbf         ONLINE
         9 /u01/app/oracle/oradata/orcl/tbspart02.dbf         ONLINE
        10 /u01/app/oracle/oradata/orcl/tbspart03.dbf         ONLINE
        11 /u01/app/oracle/oradata/orcl/tbspart04.dbf         ONLINE

     FILE# NAME                                               STATUS
---------- -------------------------------------------------- -------
        12 /u01/app/oracle/oradata/orcl/tb1.dbf               ONLINE
        13 /u01/app/oracle/oradata/orcl/tb2.dbf               ONLINE
        14 /u01/app/oracle/oradata/orcl/ttb1.dbf              ONLINE
        15 /u01/app/oracle/oradata/orcl/tb3.dbf               ONLINE

已选择15行。

SQL> select * from v$recover_file;

     FILE# ONLINE  ONLINE_ ERROR                                                                CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- --------------
        15 ONLINE  ONLINE  FILE NOT FOUND                                                             0

 

 

恢复

  1. SQL> alter database datafile 15 offline;  
  2.   
  3. 数据库已更改。  
  4.   
  5. SQL> alter database create datafile '/u01/app/oracle/oradata/orcl/tb3.dbf';  
  6.   
  7. 数据库已更改。  
  8.   
  9. SQL> select * from v$recover_file;  
  10.   
  11.      FILE# ONLINE  ONLINE_ ERROR                                                                CHANGE# TIME  
  12. ---------- ------- ------- ----------------------------------------------------------------- ---------- --------------  
  13.         15 OFFLINE OFFLINE                                                                      1026698 08-10月-11  
  14.   
  15. SQL> recover datafile 15;  
  16. 完成介质恢复。  
  17. SQL> alter database datafile 15 online;  
  18.   
  19. 数据库已更改。  
  20.   
  21. SQL> alter database open;  
  22.   
  23. 数据库已更改。  
  24.   
  25. SQL> conn u3/u3  
  26. 已连接。  
  27. SQL> select * from tab;  
  28.   
  29. TNAME                          TABTYPE  CLUSTERID  
  30. ------------------------------ ------- ----------  
  31. T                              TABLE  
  32.   
  33. SQL> select count(*) from t;  
  34.   
  35.   COUNT(*)  
  36. ----------  
  37.      49945  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值