ITPub博客

首页 > 数据库 > Oracle > 043-1 RMAN配置catalog

043-1 RMAN配置catalog

原创 Oracle 作者:zuiai510416 时间:2014-04-21 15:19:21 0 删除 编辑
C:\>RMAN
RMAN> List Backup;  --查看备份信息,这些信息保存在CONTROLFILE中,控制文件损坏,则无法进行恢复,如
RMAN> shutdown immediate
RMAN> startup nomount
RMAN> list backup;
/*RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of list command at 02/08/2014 12:17:21
ORA-01507: database not mounted  */
所以oracle推荐使用RMAN的方法如下:
在进行RMAN备份时,不仅将备份信息存放在目标数据库(targetDB)的控制文件中,还要存放在另外一个数据库(catalogDB)中一份
例如,配置服务名如下targetDB:testDB;catalogDB:catalogDB.
--************在catalogDB中创建RMAN用户
C:\SQLPLUS Sys/ORACLE@catalogDB As Sysdba
Create User RMAN Identified By RMAN Default Tablespace USERS;     --创建rman用户
Grant Connect ,Resource , recovery_catalog_owner To rman;         --授予3个角色
Select * From dba_sys_privs Where grantee = 'RECOVERY_CATALOG_OWNER'   --查看RECOVERY_CATALOG_OWNER这个角色具有哪些权限
--************将RMAN备份信息备份到catalogDB
C:\rman target Sys/oracle@testDB catalog rman/rman@catalogDB
RMAN> Create catalog;     --在catalogDB的RMAN用户下创建对象,如表和视图等
RMAN> register Database;  --注册数据库,将targetDB控制文件中的数据,同步到catalogDB的表中 /*此处sqlplus rman/rman@catalogDB select * from db 会看到targetDB的连接信息*/
RMAN> List Backup;        --注册成功后就应该能看到备份信息


RMAN> resync catalog;     --重新同步备份信息到catalog,注册后没成功同步的话,可以尝试重新同步
--****仍然同步不成功,怀疑是控制文件有问题(由于更改系统时间,造成控制文件混乱),重建控制文件,备份信息都丢失了,但是备份集的备份片还在
/*重建控制文件过程
sqlplus sys/oracle@testDB as sysdba
alter database backup controlfile to trace;   --将控制文件备份到trace中,trace位置在UDUMP文件夹下,找到重建的脚本 NORESETLOG是控制文件损坏的重建  RESETLOG是控制文件未损坏的重建
startup nomount
执行脚本重新创建控制文件
alter database open   --控制文件创建完会自动启动到mount,打开数据库就可以
*/
C:\rman target Sys/oracle@testDB catalog Sys/oracle@catalogDB    --连接RMAN目标库和日志库
RMAN> Backup Datafile 4;  --重新进行备份
RMAN> List Backup;        --在日志库中可以查询到备份集了


--***************
CATALOG命令  当备份信息丢失,但是备份片仍存在时(如上重建控制文件),重建备份信息
--***************
RMAN> catalog backuppice 'C:\oracle\product\10.2.0\flash_recovery_area\TESTDB\BACKUPSET\2014_02_07\O1_MF_NNNDF_TAG20140207T181425_9H9DJ19R_.BKP';
RMAN> List Backup;       --增加了手工加入的备份信息


--***************************
写批处理文件进行自动备份
--***************************
需要将下面的语句写成批处理:
写语句文件c:\dbbak\dbbak.sql
run{
Backup as compressed backupset Database;
delete noprompt obsolete;
backup archivelog all;
}


写执行文件c:\dbbak\rmandb.bat     --不能命名成rman.bat 会在下面调用自身造成死循环
rman target Sys/oracle@testDB catalog Sys/oracle@catalogDB cmdfile='c:\dbbak\dbbak.sql' Log='c:\dbbak\dbbak.log' append [checksyntax]
cmd下
rman 123asdf  --跟乱码会提供rman的帮助
Argument     Value          Description
-----------------------------------------------------------------------------
target       quoted-string  connect-string for target database
catalog      quoted-string  connect-string for recovery catalog
nocatalog    none           if specified, then no recovery catalog
cmdfile      quoted-string  name of input command File                          --cmdfile 在RMAN中加入语句文件
log          quoted-string  name of output message log File                     --log 在备份时写日志
trace        quoted-string  name of output debugging message log File           
append       none           if specified, log is opened in append Mode          --append 默认log是替换的方式,加append后改为追加
debug        optional-args  activate debugging
msgno        none           show RMAN-nnnn prefix for all messages
send         quoted-string  send a command to the media manager
pipe         string         building block for pipe names
timeout      integer        number of seconds to wait for pipe input
checksyntax  none           check the command file for syntax Errors            --checksyntax 不执行语句只检查语法,如果有错误会写入日志
-----------------------------------------------------------------------------


--***************************
在RMAN下将dbbak.sql写成script     --只能在catalog模式下完成
--***************************
RMAN> Create script scr1 {
Backup as compressed backupset Database;
delete noprompt obsolete;
backup archivelog all;
}


RMAN> List script Name;        --查看存在的脚本名
RMAN> print script scr1;       --查看脚本的内容


RMAN> run{                     --执行脚本
Execute script scr1;
}


更改语句文件c:\dbbak\dbbak.Sql
run{
Execute script scr1;
}


RMAN> print script scr1 To File 'c:\scr1.txt';         --将脚本scr1的内容写到文本文件scr1.txt中,这样就可以进行修改
RMAN> Replace script scr1 From File 'c:\scr1.txt';     --用修改后的脚本替换RMAN中的
--本地脚本只对当前targetDB有用,全局脚本对所有targetDB有用
Create Global script gscr1 {                          --创建全局脚本
Backup as compressed backupset Database;
delete noprompt obsolete;
backup archivelog all;
}


RMAN> List Global script names;                       --查看全局脚本
RMAN> run{                                            --执行全局脚本
Execute Global scritp gscr1
}
RMAN> Delete Global script: gscr1;                     --删除全局脚本

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15810196/viewspace-1146133/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-07-19

  • 博文量
    53
  • 访问量
    147150