rman恢复Oracle数据库

来源:互联网 发布:广电网络电视怎么开 编辑:程序博客网 时间:2024/04/28 15:27

一:恢复到上一次备份时

1.恢复spfile

$:sqlplus "/as sysdba"

sql:shutdown

sql:startup

---error

 设置环境变量

$:export ORACLE_SID=orcl

寻找安装数据库时产生的pfile文件,一般在如下文件夹下

$:cd /u01/app/oracle/admin/orcl/pfile

此时启动数据库

sql:startup pfile='/u01/app/oracle/admin/orcl/pfile';

此时数据库会启动到nomount状态

可以通过select instance_name,status from v$instance查看是否有数据判断是否进入nomount状态


下一步恢复正真的spfile文件

$:rman target/

rman:restore spfile from autobackup

现在可以进入dbs目录查看是否有spfile文件生成

现在可以shutdown immediate也可以启动数据库到startup nomount状态,同时可以查看曾经的数据库参数show parameter spfile

查看参数必须要重新启动


2.恢复controlfile

上面回复了spfile,然后

sql:startup nomount

$:rman target/

rman:restore controlfile from autobackup

此时数据库控制文件已经恢复,可以在/u01/app/oracle/oradata/orcl/文件夹下看是否有controlfile文件生成


3.恢复数据库文件

恢复controlfile文件后

sql:startup mount -------这一步也可以在rman target/  中运行alter database mount

rman:restore database

此时可以查看是否有数据库dbf文件生成,然后

sql:recover database using backup controlfile until cancel

在此语句执行过程中,有个地方停顿需要输入cancel


4.恢复重做数据库日志文件

由于是所有文件都丢失,所以这里是不完全恢复,日志文件是重建而不是恢复

sql:startup mount

sql:alter database open resetlogs

现在可以验证数据库的日志序列是否重新开启archive log list


此属于不玩全恢复,以前的备份将不能够使用,所以现在赶紧备份整个数据库

rman:backup database


完成


二:将数据库恢复到某个时间点或者某个scn

 记录一下你要恢复到的时间点,比如说 2012-12-21 20:13:14前面要设置时间格式比如说:sql:alter session set nls_date_format='yyyymmdd hh24:mi:ss'

设置数据库环境

sql:shutdown immediate

$export ORACLE_SID=orcl

$rman target/

rman:startup mount

rman:restore database

----------------此处两句任选择一句执行--------------------------------------

rman:sql 'alter session set nls_date_format='yyyymmdd hh24:mi:ss'

rman:recover database until scn scn_number

-------------------------------------------------------------------------------------

rman:recover database until time '20121221 20:13:14'

rman:sql 'alter database open resetlogs'

此处也是不完全恢复,日志文件重建,可以启动数据库后也必须完全备份数据库,以前的备份也将不能用

完成到此处验证日志文件 sql:archive log list



附:提供scn与时间之间对应关系

select to_char(scn_to_timestamp(scn_number),'yyyy-mm-dd hh24:mi:ss') from dual    ---------scn转时间

select timestamp_to_scn(to_date('2012-12-21 20:13:14','yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual      -------------时间转scn

select sysdate,dbms_flashback.get_system_change_number from dual    ------------得到当前scn与当前时间

0 0
原创粉丝点击