ARCHIVELOG模式下用户管理的完全恢复—恢复打开的数据库,并且数据库最初是打开的

回忆一下,user1用户的test表中还是有两条记录

  1. SQL> show user  
  2. USER 为 "USER1"  
  3. SQL> select * from test;  
  4.   
  5.         ID VALUE  
  6. ---------- --------------------  
  7.          1 a  
  8.          2 b  
SQL> show user
USER 为 "USER1"
SQL> select * from test;

        ID VALUE
---------- --------------------
         1 a
         2 b

再向test表中插入第3条数据。

  1. SQL> insert into  test values(3,'c');  
  2.   
  3. 已创建 1 行。  
  4.   
  5. SQL> commit;  
  6.   
  7. 提交完成。  
  8.   
  9. SQL> select  * from test;  
  10.   
  11.         ID VALUE  
  12. ---------- --------------------  
  13.          1 a  
  14.          2 b  
  15.          3 c  
SQL> insert into  test values(3,'c');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select  * from test;

        ID VALUE
---------- --------------------
         1 a
         2 b
         3 c

然后手动切换日志。删除ttb1这个表空间的数据文件,查看恢复表里面还是没有要恢复的记录,说明oracle还没意识到数据文件丢失了,继续查询test表还是可以正常的时候,再向表test里面插入数据也是可以的,因为数据是放在内存的,还没写到数据文件上面。

  1. SQL> conn /as sysdba  
  2. 已连接。  
  3. SQL> alter system archive log current;  
  4.   
  5. 系统已更改。  
  6.   
  7. SQL> ! rm -rf /u01/app/oracle/oradata/orcl/ttb1.dbf  
  8.   
  9. SQL> select * from v$recover_file;  
  10.   
  11. 未选定行  
  12.    
  13. SQL> conn user1/user1  
  14. 已连接。  
  15. SQL> insert into  test values(4,'d');  
  16.   
  17. 已创建 1 行。  
  18.   
  19. SQL> commit;  
  20.   
  21. 提交完成。  
  22.   
  23. SQL> select * from test;  
  24.   
  25.         ID VALUE  
  26. ---------- --------------------  
  27.          1 a  
  28.          2 b  
  29.          3 c  
  30.          4 d  
SQL> conn /as sysdba
已连接。
SQL> alter system archive log current;

系统已更改。

SQL> ! rm -rf /u01/app/oracle/oradata/orcl/ttb1.dbf

SQL> select * from v$recover_file;

未选定行
 
SQL> conn user1/user1
已连接。
SQL> insert into  test values(4,'d');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from test;

        ID VALUE
---------- --------------------
         1 a
         2 b
         3 c
         4 d

这个时候要是手动发生CKPT。可以看见alert日志文件里会记录错误信息。查看恢复表里面就会发现有需要恢复的数据文件拉。如果v$recover_file里面还是没有记录要恢复的数据文件,就shutdown immediate,然后会看见几号文件需要恢复,也可以开始恢复操作了。

  1. SQL> conn /as sysdba  
  2. 已连接。  
  3. SQL> alter system checkpoint;  
  4.   
  5. 系统已更改。  
  6.   
  7. SQL> select * from v$recover_file;  
  8.   
  9. 未选定行  
  10.   
  11. SQL> shutdown immediate  
  12. ORA-01116: 打开数据库文件 14 时出错  
  13. ORA-01110: 数据文件 14: '/u01/app/oracle/oradata/orcl/ttb1.dbf'  
  14. ORA-27041: 无法打开文件  
  15. Linux Error: 2: No such file or directory  
  16. Additional information: 3  
  17. SQL> select status from v$instance;  
  18.   
  19. STATUS  
  20. ------------  
  21. OPEN  
SQL> conn /as sysdba
已连接。
SQL> alter system checkpoint;

系统已更改。

SQL> select * from v$recover_file;

未选定行

SQL> shutdown immediate
ORA-01116: 打开数据库文件 14 时出错
ORA-01110: 数据文件 14: '/u01/app/oracle/oradata/orcl/ttb1.dbf'
ORA-27041: 无法打开文件
Linux Error: 2: No such file or directory
Additional information: 3
SQL> select status from v$instance;

STATUS
------------
OPEN

恢复

  1. SQL> ! cp /u01/app/oracle/backup/ttb1.dbf /u01/app/oracle/oradata/orcl/  
  2.   
  3. SQL> recover datafile 14;  
  4. ORA-00283: 恢复会话因错误而取消  
  5. ORA-01124: 无法恢复数据文件 14 - 文件在使用中或在恢复中  
  6. ORA-01110: 数据文件 14: '/u01/app/oracle/oradata/orcl/ttb1.dbf'  
  7.   
  8. SQL> alter database datafile 14 offline;  
  9.   
  10. 数据库已更改。  
  11.   
  12. SQL> recover datafile 14;  
  13. ORA-00279: 更改 1004104 (在 10/08/2011 08:29:53 生成) 对于线程 1 是必需的  
  14. ORA-00289: 建议: /u01/app/oracle/archivelog/1_70_761792499.dbf  
  15. ORA-00280: 更改 1004104 (用于线程 1) 在序列 #70 中  
  16.   
  17.   
  18. 指定日志: {<RET>=suggested | filename | AUTO | CANCEL}  
  19. auto  
  20. 已应用的日志。  
  21. 完成介质恢复。  
  22. SQL> alter database datafile 14 online;  
  23.   
  24. 数据库已更改。  
  25.   
  26. SQL> shutdown immediate  
  27. 数据库已经关闭。  
  28. 已经卸载数据库。  
  29. ORACLE 例程已经关闭。  
  30. SQL> startup  
  31. ORACLE 例程已经启动。  
  32.   
  33. Total System Global Area  167772160 bytes  
  34. Fixed Size                  1266392 bytes  
  35. Variable Size             117443880 bytes  
  36. Database Buffers           46137344 bytes  
  37. Redo Buffers                2924544 bytes  
  38. 数据库装载完毕。  
  39. 数据库已经打开。  
  40. SQL> conn user1/user1  
  41. 已连接。  
  42. SQL> select * from test;  
  43.   
  44.         ID VALUE  
  45. ---------- --------------------  
  46.          1 a  
  47.          2 b  
  48.          3 c  
  49.          4 d  
【顶级EI完整复现】【DRCC】考虑N-1准则的分布鲁棒机会约束低碳经济调度(Matlab代码实现)内容概要:本文介绍了名为《【顶级EI完整复现】【DRCC】考虑N-1准则的分布鲁棒机会约束低碳经济调度(Matlab代码实现)》的技术资源,聚焦于电力系统中低碳经济调度问题,结合N-1安全准则与分布鲁棒机会约束(DRCC)方法,提升调度模型在不确定性环境下的鲁棒性和可行性。该资源提供了完整的Matlab代码实现,涵盖建模、优化求解及仿真分析全过程,适用于复杂电力系统调度场景的科研复现与算法验证。文中还列举了大量相关领域的研究主题与代码资源,涉及智能优化算法、机器学习、电力系统管理、路径规划等多个方向,展示了广泛的科研应用支持能力。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及从事能源调度、智能电网相关工作的工程师。; 使用场景及目标:①复现高水平期刊(如EI/SCI)关于低碳经济调度的研究成果;②深入理解N-1安全约束与分布鲁棒优化在电力调度中的建模方法;③开展含新能源接入的电力系统不确定性优化研究;④为科研项目、论文撰写或工程应用提供可运行的算法原型和技术支撑。; 阅读建议:建议读者结合文档提供的网盘资源,下载完整代码与案例数据,按照目录顺序逐步学习,并重点理解DRCC建模思想与Matlab/YALMIP/CPLEX等工具的集成使用方式,同时可参考文中列出的同类研究方向拓展研究思路。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值