数据库恢复是指在数据库发生故障时,使用数据库备份还原数据库,使数据库恢复到无故障状态。
根据数据库恢复时使用的备份不同,恢复分为物理恢复和逻辑恢复。所谓的物理恢复就是,利用物理备份来恢复数据库,即利用物理备份文件恢复损毁文件,是在操作系统级别上进行的。逻辑恢复是指利用逻辑备份的二进制文件,使用Oracle提供的导入工具(如Impdp,Import)将部分或全部信息重新导入数据库,恢复损毁或丢失的数据。
之前讲了逻辑备份与恢复,这里主要讲一下冷备份与恢复。
这是针对Oracle 12c 的数据备份与恢复,在Oracle的其它版本可能有细微的不同,不过原理都是一样的。
关闭数据库(SHUTDOWN IMMEDIATE)
进入SQL Plus,打入指令:shoutdown immediate
系统提示数据库已经关闭则证明关闭成功。
将所有数据文件、控制文件、联机重做日志文件拷贝到另一目录保存
这一步很重要,也很容易出错,如果出错了,整个数据库都没有办法正常启动,所以一定要保证所有的原数据都拷贝了。
这里需要注意的是必需将数据库里所有的数据文件、控制文件、联机重做日志文件拷贝到另一目录保存,如果遗漏任何一个文件,恢复的时候都会遇到错误,且是致命,它将会使数据库无法打开,无法继续任何操作。Oracle的数据文件、控制文件、联机重做日志文件一般存放在 oradata目录下面,但也有一些控制文件和日志文件是存放在fast_recovery_arae目录下面,所以这里我同时拷贝了这两个文件。如果还有数据文件、控制文件、联机重做日志文件存放在别的地方,也应该一起拷贝。
下面是在我的计算机里的例子:
重新启动数据库(STARTUP)
进入SQL Plus,打入指令:startup
进行数据库更新操作
这里删除student表里三条数据,插入一条数据,并成功提交。
关闭数据库(SHUTDOWN IMMEDIATE)
重复上面1的操作。
6. 将之前保存的所有数据文件、控制文件、联机重做日志文件拷贝到原来位置,覆盖原来的文件。
由于要拷贝的文件很大,大概5G,为了提高速度,我这里将备份的文件拷贝到同一目录下,并将其改名,使同一时间只有一个可用的正确的文件,这样就达到了备份的效果。当需要恢复备份的时候,只需将备份文件改回原来的文件名即可。
7. 重新启动数据库(STARTUP)
8.查询数据,看看更新后的数据是否存在
恢复之前的备份后,备份后的更新数据都不存在,数据库的数据,存储过程和触发器还是备份时的数据,备 份后的更新操作都不起作用。
到此,数据库的冷备份与恢复结束。