[i=s] 本帖最后由 帅帅的动力 于 2012-6-21 10:39 编辑
今天来到公司,发现数据库挂了,而数据库管理人员又没有来。自己就试着想想 rman备份恢复。
由于没有用过这个东西,在网上搜罗了一下,在自己本机试了试!下面是一些记录,有疑问的地方标红,希望热心网友解答!一起进步!
恢复目录明白。。。
一 首先查看自己数据库的归档方式,用管理员用户登录,数据库启动方式 startup mount(加载但不打开) 步骤如下
C:\Documents and Settings\Administrator>connect /as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 6月 20 14:43:30 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> connect /as sysdba
已连接。
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 603979776 bytes
Fixed Size 1250380 bytes
Variable Size 234884020 bytes
Database Buffers 360710144 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 408
当前日志序列 410
SQL> alter database archivelog;
数据库已更改。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 408
下一个存档日志序列 410
当前日志序列 410
到这里数据库就为归档模式了!~
二 创建恢复目录表空间,用户,授权
--创建表空间,存储备份信息
create tablespace rmants datafile 'd:\oracle\oradata\rmants.ora ' size 20M ;
--创建用户,执行备份信息
create user rman identified by rman default tablespace rmants temporary tablespace temp quota unlimited on rmants;
--授权
grant connect,resource, recovery_catalog_owner to rman ;
三 创建恢复目录
C:\Documents and Settings\Administrator> rman catalog [url=mailto:rman/rman@dbtest] rman/rman@dbtest[/url] --这里创建恢复目录,能不能不是我的数据库dbtest?目标数据库sid是dbtest。今天明白了,这里的恢复目录可以建立在另一个数据库上,这样的好处是:可以存储脚本,记载较长时间的备份恢复操作。当然也可以建立在目标数据库上,不过这样一来,备份信息就存放在control file 文件中,而且控制文件会不断增长,不能保存 RMAN 的Script. CONTROL_FILE_RECORD_KEEP_TIME (default=7):控件文件中 RMAN 信息保存的最短时间。所以建议还是建一个恢复目录数据库
恢复管理器: Release 10.2.0.1.0 - Production on 星期三 6月 20 10:48:55 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到恢复目录数据库
RMAN> create catalog tablespace rmants
恢复目录已创建
RMAN> exit\
恢复管理器完成。
四 注册目标数据库
C:\Documents and Settings\Administrator> rman target [url=mailto:test/test@dbtest] test/test@dbtest[/url] catalog rma
[url=mailto:n/rman@dbtest] n/rman@dbtest[/url] 我这里是目标数据库和目录数据库是同一个,这个地方不太明白,目录数据库不太明白,谁能讲解下,我也去查查!明白了。跟上面说的基本一个意思
恢复管理器: Release 10.2.0.1.0 - Production on 星期三 6月 20 11:02:40 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: DBTEST (DBID=1163441887)
连接到恢复目录数据库
RMAN> register database
2> ;
注册在恢复目录中的数据库
正在启动全部恢复目录的 resync
完成全部 resync
RMAN>REPORT SCHEMA;
--检查注册是否成功
五 执行备份信息(也可以用脚本来执行)
一
RMAN> run{
2> allocate channel c1 type disk;
3> backup database format 'd:\dbbackup\2db.dmp';
4> }
分配的通道: c1
通道 c1: sid=142 devtype=DISK
启动 backup 于 20-6月 -12
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
。
。
二
使用存储脚本
1、建立存储脚本
RMAN>CREATE SCRIPT. BACKUP_DATABASE{
2>BACKUP FORMAT='D:\BACKUP\%d_%s.bak' database
3>include current controlfile
4>plus archivelog;
5>sql 'alter system archive log current';
6>}
2、运行存储脚本
(1) 在RMAN提示符下运行存储脚本
RMAN>RUN{EXECUTE SCRIPT. BACKUP_DATABASE;}
(2)在命令行运行存储脚本。
C:\>RMAN CATALOG [url=mailto:RMAN/RMAN@dbtest] RMAN/RMAN@dbtest[/url] TARGET [url=mailto:test/test@DBTEST] test/test@DBTEST[/url]SCRIPT. BACKUP_DATABASE
3、显示脚本内容
RMAN>PRINT SCRIPT. BACKUP_DATABASE
4、替换存储脚本
RMAN>REPLACE SCRIPT. BACKUP_DATABASE{
2>BACKUP DATABASE;
3}
5、删除存储脚本
RMAN>DELETE SCRIPT. BACKUP_DATABASE;
7、列出所有存储脚本
RMAN>LIST SCRIPT. NAMES;
六 查看备份信息
RMAN> list backup;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
274 Full 6.80M DISK 00:00:02 20-6月 -12
BP 关键字: 275 状态: AVAILABLE 已压缩: NO 标记: TAG20120620T110534
段名 :\DBBACKUP\2DB.DMP
包括的控制文件: Ckp SCN: 10008128 Ckp 时间: 20-6月 -12
包含的 SPFILE: 修改时间: 20-6月 -12
RMAN> exit
七 维护恢复目录
1、重新同步恢复目录
重新同步恢复目录的目的是为了使恢复目录和目标数据库控制文件保持同步,当目标数据库物理结构发生改变(增加和删除表空间,增加数据文件)时,应该重新同步恢复目录。
RMAN>RESYNC CATALOG;
2、注销目标数据库
RMAN>UNREGISTER DATABASE;
3、升级恢复目录
如果RMAN客户端版本高于恢复目录的版本号,那么应该升级恢复目录。注意,当升级恢复目录时,需要执行两次UPGRADE CATALOG命令。
RMAN>UPGRADE CATALOG;
...
...
RMAN>UPGRADE CATALOG;
4、删除恢复目录
删除恢复目录时,会删除目录的所有信息。注意,当删除恢复目录时,需要执行两次DROP CATALOG命令。
5、恢复数据库到早期数据库副本
当执行了不完全恢复之后,需要使用RESETLOGS选项打开数据库,当用该选项打开数据库后,会建立数据库的副本,如果想将数据库恢复到早期副本的状态,
则必须使用RESET DATABASE TO INCARNATION命令设置当前数据库副本为早期副本,然后执行相应操作。步骤如下:
(1)确定数据库副本的副本键值
RMAN>LIST INCARNATION OF DATABASE;
(2)设置数据库到早期版本
RMAN>STARTUP FORCE MOUNT
RMAN>RESET DATABASE TO INCARNATION 2;
(3)转储早期版本的控制文件。当转储控制文件时,要求目标数据库必须处于NOMOUNT状态。注意,当转储早期版本的控制文件时,必须确保控制文件副本存在。
RMAN>RUN{
2>STARTUP FORCE NOMOUNT;
3>SET UNTIL SCN=656740;
4>RESTORE CONTROLFILE;
5>}
(4)恢复数据库到早期副本。
RMAN>RUN{
2>ALTER DATABASE MOUNT;
3>RESTORE DATABASE;
4>RECOVER DATABASE;
5>ALTER DATABASE OPEN RESETLOGS;
6>}
八 查询恢复目录
1、RC_DATABASE
该数据字典视图用于显示在恢复目录中已经注册的所有目标数据库信息。
SQL>SELECT DBID,NAME,RESETLOGS_CHANGE# FROM RC_DATABASE
2、RC_TABLESPACE
该数据字典视图用于显示在恢复目录中所记载的目标数据库的表空间信息。
SQL>SELECT TS#,NAME,CREATION_CHANGE# FROM RC_TABLESPACE WHERE DB_NAME='MYDB'
3、RC_DATAFILE
该数据字典视图用于显示在恢复目录中所记载的目标数据库的数据文件信息。
SQL>SELECT FILE#,NAME,BYTES FROM RC_DATAFILE WHERE DB_NAME='MYDB'
4、RC_STORED_SCRIPT
该数据字典视图用于显示在恢复目录中所记载的所有存储脚本信息。
SQL>SELECT SCRIPT_NAME FROM RC_STORED_SCRIPT. WHERE DB_NAME='MYDB'
5、RC_STORED_SCRIPT_LINE
该数据字典视图用于存储脚本的内容。
SQL>SELECT LINE,TEXT FROM RC_STORED_SCRIPT_LINE WHERE SCRIPT_NAME='BACKUP_DATABASE'
=====================
恢复待更新 。。。。。
今天来到公司,发现数据库挂了,而数据库管理人员又没有来。自己就试着想想 rman备份恢复。
由于没有用过这个东西,在网上搜罗了一下,在自己本机试了试!下面是一些记录,有疑问的地方标红,希望热心网友解答!一起进步!
恢复目录明白。。。
一 首先查看自己数据库的归档方式,用管理员用户登录,数据库启动方式 startup mount(加载但不打开) 步骤如下
C:\Documents and Settings\Administrator>connect /as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 6月 20 14:43:30 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> connect /as sysdba
已连接。
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 603979776 bytes
Fixed Size 1250380 bytes
Variable Size 234884020 bytes
Database Buffers 360710144 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 408
当前日志序列 410
SQL> alter database archivelog;
数据库已更改。
SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 408
下一个存档日志序列 410
当前日志序列 410
到这里数据库就为归档模式了!~
二 创建恢复目录表空间,用户,授权
--创建表空间,存储备份信息
create tablespace rmants datafile 'd:\oracle\oradata\rmants.ora ' size 20M ;
--创建用户,执行备份信息
create user rman identified by rman default tablespace rmants temporary tablespace temp quota unlimited on rmants;
--授权
grant connect,resource, recovery_catalog_owner to rman ;
三 创建恢复目录
C:\Documents and Settings\Administrator> rman catalog [url=mailto:rman/rman@dbtest] rman/rman@dbtest[/url] --这里创建恢复目录,能不能不是我的数据库dbtest?目标数据库sid是dbtest。今天明白了,这里的恢复目录可以建立在另一个数据库上,这样的好处是:可以存储脚本,记载较长时间的备份恢复操作。当然也可以建立在目标数据库上,不过这样一来,备份信息就存放在control file 文件中,而且控制文件会不断增长,不能保存 RMAN 的Script. CONTROL_FILE_RECORD_KEEP_TIME (default=7):控件文件中 RMAN 信息保存的最短时间。所以建议还是建一个恢复目录数据库
恢复管理器: Release 10.2.0.1.0 - Production on 星期三 6月 20 10:48:55 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到恢复目录数据库
RMAN> create catalog tablespace rmants
恢复目录已创建
RMAN> exit\
恢复管理器完成。
四 注册目标数据库
C:\Documents and Settings\Administrator> rman target [url=mailto:test/test@dbtest] test/test@dbtest[/url] catalog rma
[url=mailto:n/rman@dbtest] n/rman@dbtest[/url] 我这里是目标数据库和目录数据库是同一个,这个地方不太明白,目录数据库不太明白,谁能讲解下,我也去查查!明白了。跟上面说的基本一个意思
恢复管理器: Release 10.2.0.1.0 - Production on 星期三 6月 20 11:02:40 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: DBTEST (DBID=1163441887)
连接到恢复目录数据库
RMAN> register database
2> ;
注册在恢复目录中的数据库
正在启动全部恢复目录的 resync
完成全部 resync
RMAN>REPORT SCHEMA;
--检查注册是否成功
五 执行备份信息(也可以用脚本来执行)
一
RMAN> run{
2> allocate channel c1 type disk;
3> backup database format 'd:\dbbackup\2db.dmp';
4> }
分配的通道: c1
通道 c1: sid=142 devtype=DISK
启动 backup 于 20-6月 -12
通道 c1: 启动全部数据文件备份集
通道 c1: 正在指定备份集中的数据文件
。
。
二
使用存储脚本
1、建立存储脚本
RMAN>CREATE SCRIPT. BACKUP_DATABASE{
2>BACKUP FORMAT='D:\BACKUP\%d_%s.bak' database
3>include current controlfile
4>plus archivelog;
5>sql 'alter system archive log current';
6>}
2、运行存储脚本
(1) 在RMAN提示符下运行存储脚本
RMAN>RUN{EXECUTE SCRIPT. BACKUP_DATABASE;}
(2)在命令行运行存储脚本。
C:\>RMAN CATALOG [url=mailto:RMAN/RMAN@dbtest] RMAN/RMAN@dbtest[/url] TARGET [url=mailto:test/test@DBTEST] test/test@DBTEST[/url]SCRIPT. BACKUP_DATABASE
3、显示脚本内容
RMAN>PRINT SCRIPT. BACKUP_DATABASE
4、替换存储脚本
RMAN>REPLACE SCRIPT. BACKUP_DATABASE{
2>BACKUP DATABASE;
3}
5、删除存储脚本
RMAN>DELETE SCRIPT. BACKUP_DATABASE;
7、列出所有存储脚本
RMAN>LIST SCRIPT. NAMES;
六 查看备份信息
RMAN> list backup;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
274 Full 6.80M DISK 00:00:02 20-6月 -12
BP 关键字: 275 状态: AVAILABLE 已压缩: NO 标记: TAG20120620T110534
段名 :\DBBACKUP\2DB.DMP
包括的控制文件: Ckp SCN: 10008128 Ckp 时间: 20-6月 -12
包含的 SPFILE: 修改时间: 20-6月 -12
RMAN> exit
七 维护恢复目录
1、重新同步恢复目录
重新同步恢复目录的目的是为了使恢复目录和目标数据库控制文件保持同步,当目标数据库物理结构发生改变(增加和删除表空间,增加数据文件)时,应该重新同步恢复目录。
RMAN>RESYNC CATALOG;
2、注销目标数据库
RMAN>UNREGISTER DATABASE;
3、升级恢复目录
如果RMAN客户端版本高于恢复目录的版本号,那么应该升级恢复目录。注意,当升级恢复目录时,需要执行两次UPGRADE CATALOG命令。
RMAN>UPGRADE CATALOG;
...
...
RMAN>UPGRADE CATALOG;
4、删除恢复目录
删除恢复目录时,会删除目录的所有信息。注意,当删除恢复目录时,需要执行两次DROP CATALOG命令。
5、恢复数据库到早期数据库副本
当执行了不完全恢复之后,需要使用RESETLOGS选项打开数据库,当用该选项打开数据库后,会建立数据库的副本,如果想将数据库恢复到早期副本的状态,
则必须使用RESET DATABASE TO INCARNATION命令设置当前数据库副本为早期副本,然后执行相应操作。步骤如下:
(1)确定数据库副本的副本键值
RMAN>LIST INCARNATION OF DATABASE;
(2)设置数据库到早期版本
RMAN>STARTUP FORCE MOUNT
RMAN>RESET DATABASE TO INCARNATION 2;
(3)转储早期版本的控制文件。当转储控制文件时,要求目标数据库必须处于NOMOUNT状态。注意,当转储早期版本的控制文件时,必须确保控制文件副本存在。
RMAN>RUN{
2>STARTUP FORCE NOMOUNT;
3>SET UNTIL SCN=656740;
4>RESTORE CONTROLFILE;
5>}
(4)恢复数据库到早期副本。
RMAN>RUN{
2>ALTER DATABASE MOUNT;
3>RESTORE DATABASE;
4>RECOVER DATABASE;
5>ALTER DATABASE OPEN RESETLOGS;
6>}
八 查询恢复目录
1、RC_DATABASE
该数据字典视图用于显示在恢复目录中已经注册的所有目标数据库信息。
SQL>SELECT DBID,NAME,RESETLOGS_CHANGE# FROM RC_DATABASE
2、RC_TABLESPACE
该数据字典视图用于显示在恢复目录中所记载的目标数据库的表空间信息。
SQL>SELECT TS#,NAME,CREATION_CHANGE# FROM RC_TABLESPACE WHERE DB_NAME='MYDB'
3、RC_DATAFILE
该数据字典视图用于显示在恢复目录中所记载的目标数据库的数据文件信息。
SQL>SELECT FILE#,NAME,BYTES FROM RC_DATAFILE WHERE DB_NAME='MYDB'
4、RC_STORED_SCRIPT
该数据字典视图用于显示在恢复目录中所记载的所有存储脚本信息。
SQL>SELECT SCRIPT_NAME FROM RC_STORED_SCRIPT. WHERE DB_NAME='MYDB'
5、RC_STORED_SCRIPT_LINE
该数据字典视图用于存储脚本的内容。
SQL>SELECT LINE,TEXT FROM RC_STORED_SCRIPT_LINE WHERE SCRIPT_NAME='BACKUP_DATABASE'
=====================
恢复待更新 。。。。。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26940217/viewspace-733535/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26940217/viewspace-733535/