首页 > 数据库 > Oracle > 归档模式下的数据库恢复
学习内容
|
1 |
在归档模式下进行数据库全恢复时数据库所经过的状态 1、利用备份修复(restore)损坏或丢失的数据文件,即将备份的操作系统文件复制回数据库中原来的位置(成功之后,数据文件已经回到了过去) 2、将从备份到系统崩溃这段时间内的所有提交数据由归档日志文件和联机重做日志文件中还原成数据文件所需要的数据块(恢复),这也叫前滚(roll forwad) 3、此时数据库中 包含了所有提交的数据,也可以包含没有提交的数据 4、系统使用还原(回滚)数据块回滚未提交的数据,这也叫回滚或者事物恢复(transaction recovery) 5、最后数据库达到了已恢复的状态。 |
|
2 |
归档模式下数据库全恢复的优缺点 优点: 1、在恢复时不用关闭数据库 2、所有的数据都可以恢复 3、仅需要修复损坏或丢失的数据文件 4、恢复的全部时间=将损坏的或者丢失的数据文件的备份复制回数据库的时间+时间归档日志文件或者重做日志文件恢复所提交的数据所用的书剑 缺点: 1、数据库必须运行在归档模式下,这样会增大系统的内存和CPU的开销,也会消耗一些硬盘空间 2、必须保证所有的归档日志文件完好无损 3、对DBA知识和技能要求明显提高 |
|
3 |
获取与恢复相关信息所使用的数据字典 SQL> select * from v$recover_file;--------------获取相关信息
no rows selected SQL> select * from v$recovery_log;------------获取相关信息
no rows selected SQL> alter tablespace fangfang offline;------------将表空间fangfang脱机
Tablespace altered. SQL> select TABLESPACE_NAME,STATUS 2 from dba_tablespaces;-----------------------------------从数据字典dba_tabelsapces中获取数据库中所有表空间当前的状态 TABLESPACE_NAME STATUS ------------------------------ --------- SYSTEM ONLINE SYSAUX ONLINE UNDOTBS1 ONLINE TEMP ONLINE USERS ONLINE EXAMPLE ONLINE JUNXIAO ONLINE FANGFANG OFFLINE
8 rows selected. SQL> select file#,status from v$datafile;--------------------------从数据字典v$datafile中获取数据库中所有数据文件当前的状态
FILE# STATUS ---------- ------- 1 SYSTEM 2 ONLINE 3 ONLINE 4 ONLINE 5 ONLINE 6 ONLINE 7 OFFLINE
7 rows selected. SQL> select * from v$recover_file;-----------------------------------从数据字典v$recover_file中获取数据库中所有数据文件当前的与备份相关的信息。
FILE# ONLINE ONLINE_STATUS ERROR CHANGE# TIME ---------- ------- --------------- --------------- ---------- --------- 7 OFFLINE OFFLINE OFFLINE NORMAL 0
|
|
4 |
在数据库最初处于打开状态下,进行开启数据库恢复 1、使用数据字典dba_data_files获取要恢复的数据文件与所对应的表空间及他们的状态信息 2、使用数据字典dba_tablespaces获取要恢复的表空间是处于脱机还是联机状态 3、如果表空间处在联机状态,就先将表空间设置为脱机状态,也可以 将数据文件设置为脱机状态 4、使用操作系统复制命令将备份的数据文件复制到数据库中原来的位置。如果是硬盘坏了,就要将备份的数据文件复制到其他的磁盘上,之后使用alter命令修改数据文件名。 5、使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件 6、修复完成后将表空间或者数据文件设置为联机状态 7、如果恢复时,是将备份的数据文件复制到了其他的硬盘上,应该再次使用数据字典dba_data_files获取要恢复的数据文件与之相对应的表空间,以确认数据文件已经复制到了正确的位置上 8、再次使用数据字典dba_tablespaces获取要恢复的表空间是否处于联机状态,也可以使用数据字典v$datafile确认要恢复的数据文件是否处在联机状态。 |
|
5 |
在数据库最初处于关闭状态下,进行开启数据库恢复 1、 SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount----------------使用startup mount命令加载数据库。因为损坏的数据文件不能打开,所以数据库无法打开。 ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance ORACLE instance started.
Total System Global Area 830930944 bytes Fixed Size 2257800 bytes Variable Size 536874104 bytes Database Buffers 285212672 bytes Redo Buffers 6586368 bytes Database mounted. 2、 SQL> select file#,status from v$datafile;--------------使用数据字典v$datafile确认要恢复的数据文件的文件名。 FILE# STATUS ---------- ------- 1 SYSTEM 2 ONLINE 3 ONLINE 4 ONLINE 5 ONLINE 6 ONLINE 7 OFFLINE
7 rows selected.
SQL> desc v$tablespaces;-------------------------------------------这种情况下不能使用数据字典v$tablespaces,因为该数据字典只能在数据库开启的状态下才能使用。 ERROR: ORA-04043: object v$tablespaces does not exist
3、使用alter database datafile “数据文件名” offline;-------命令将出现问题的数据文件脱机。 4、 SQL> alter database open;--------------------------------------使用alter database open命令将数据库打开。-------------------因为出现问题的数据文件已经脱机,所有其他的数据文件都是同步的。
Database altered.
5、使用操作系统复制命令将备份的数据文件复制到数据库中原来的位置。如果是硬盘坏了,就要将备份的数据文件复制到其他的磁盘上,之后使用alter命令修改数据文件名。 6、使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件。 7、当修复完成之后使用alter tablespace或者alter database 命令将表空间或数据文件重新设置为联机状态。 8、如果恢复时,是将备份的数据文件复制到其他的硬盘上,应该再次使用数据字典dba_data_files获取要恢复的数据文件与所对应的表空间,以确认数据文件已经复制到正确的位置上。 9、再次使用数据字典dba_tablespaces获取要恢复的表空间是否处于联机状态,也可以使用数据字典v$datafile获取要恢复的数据文件是否处于联机状态。 |
|
6 |
恢复没有备份的数据文件 1、如果数据库是在打开的状态下,使用数据字典v$dba_data_files获取要恢复的数据文件与之所对应的表空间及他们的状态信息 2、如果数据库是打开的状态,使用数据字典dba_tablespaces获取要恢复的表空间是脱机还是联机的状态,也可以使用数据字典v$datafile获取数据文件是处在联机还是脱机状态。 3、如果表空间处于联机状态,先将该表空间设置为脱机状态; 4、使用数据字典v$recover_file确认数据文件的恢复状态。 5、使用alter database create datafile命令重建数据文件的结构。 6、使用数据字典v$recover_file确认数据文件的恢复状态。 7、使用recover命令将所有提交的数据文件从归档日志文件 和重做日志文件重新写入已经修复的数据文件。 8、当恢复完成后使用ALTER TABLESPACE或者ALTER DATABASE 命令将表空间或数据文件重新设置为联机状态。 9、使用数据字典dba_data_files获取要恢复的数据文件与所对应的表空间及他们的状态信息。 10、使用数据字典dba_tablespaces获取要恢复的表空间是处在脱机还是联机状态,也可以使用v$datafile确认要恢复的数据文件是脱机的还是联机的。 |
|
7 |
在关闭状态下进行数据库的恢复 如果恢复的数据量已经接近或者超过了数据库数据总量的一半或者以上的, 就用这种方式进行恢复。因为在这种情况下,关于数据库的恢复与开启数据库的恢复时间差别不大,但是关闭数据库的恢复更加安全、可靠。 |
|
8 |
当数据库崩溃时,数据库管理员的首要任务 当数据库崩溃之后的首要任务是以最快的速度让数据库开启并对外提供服务,而不是发现问题和修复 数据库。 |
|
|
|
|
|
|
总结:
|
1 |
不管在哪种状态下进行的数据库恢复,应该多练习恢复步骤。实操最重要。 |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30606702/viewspace-2120522/ ,如需转载,请注明出处,否则将追究法律责任。