您的位置:首页 > 数据库 > Oracle

rman恢复Oracle数据库

2016-04-07 17:42 567 查看
一:恢复到上一次备份时

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与当前时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: