RMAN备份与还原 - 参考案例

RMAN备份与还原 - 参考案例

 


 

项目有如下需求,通过远程服务器安装的oracle client调用rman 进行全库的backup,最好能进行热备份。因为硬盘空间不足,不希望开启归档模式。最后发现不开启归档模式下进行热备是不行的。只能妥协,由于我们是开发数据库,所以短暂停机(1分钟内)是可以接受的。所以决定采用脚本(Script)进行冷备份。

 

RMAN> create script full_backup {
    shutdown immediate;
    startup mount;
    allocate channel c1 type disk;
    backup as compressed backupset database format '/home/oracle/RMAN_BACKUP/%d_%s_%p.bak';
    alter database open;
}

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of create script command at 09/17/2014 13:12:07
RMAN-06002: command not allowed when not connected to a recovery catalog

建立脚本的时候,发生以上错误。这是因为如果不通过catalog进行备份的话,repository会使用controll file,缺点是不能存储脚本信息。 不得以先建立catalog数据库。

 

首先,创建RMAN用户并授权

SQL> create BIGFILE tablespace rman_tspace datafile '/u01/database/oracle/tablespace/rman/rman_ts1.dbf' size 32G autoextend on next 1024M maxsize 1024G;
SQL> create temporary tablespace temp_rman tempfile '/u01/database/oracle/tablespace/rman/temp_rman.dbf' size 2G autoextend on next 128m maxsize 20G extent management local;
SQL> create user rman identified by rman default tablespace rman_tspace quota unlimited on rman_tspace temporary tablespace temp_rman;
SQL> grant recovery_catalog_owner to rman;

 

创建恢复目录

通过rman连接catalog,并创建恢复目录

[oracle@path]$ ./rman catalog rman/rman@127.0.0.1:1521/SID

RMAN> create catalog

注册数据库

[oracle@EBOM01 bin]$ ./rman target/ catalog rman/rman@127.0.0.1:1521/BRCGS

RMAN> register database;

创建脚本

create script full_backup {
    shutdown immediate;
    startup mount;
    allocate channel c1 type disk;
    backup as compressed backupset database format '/home/oracle/RMAN_BACKUP/%d_%s_%p.bak';
    alter database open;
}

运行脚本

RMAN> run {execute script full_backup;}

database closed
database dismounted
Oracle instance shut down

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03015: error occurred in stored script full_backup
RMAN-03002: failure of startup command at 09/17/2014 14:15:30
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

发现数据库能关不能开。。。

网上一查,是使用动态的问题,当数据库关闭后,PMON进程终止了,自然就不能连接了。要改成静态监听(oracle真难用)

记住这个是针对服务器的修改不是客户端。

SID_LIST_LISTENER =  
(SID_LIST =    
(SID_DESC =      
(SID_NAME = PLSExtProc)      
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(PROGRAM = extproc)
)
(SID_DESC = 
(SID_NAME = XXXX)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/client) 
(GLOBAL_DBNAME=HJD.COM.CN)  
)  
)

再次试验,这次报错不是在Startup上,而是在连接catalog上,由于catalog和目标数据库放在一个库上,所以关闭目标数据库时,自然catalog也不能用了。

好吧,只能分开到两个库上,这也是标准作法。

取消注册,然后在另一个库重建catalog

RMAN> unregister database;

再次实行后,一切OK。

再写个shell,以方便jenkins远程调用。

ORACLE=/u01/app/oracle/product/11.2.0/client
$ORACLE/bin/rman target/ catalog rman/rman@orcit1 script 'full_backup'

执行下,一切OK。

再试下还原,记住是还原不是恢复。还原只能还原到备份的时点,恢复是利用归档日志和redo日志恢复到任意一个时点

首先要先关闭数据库,直接还原的话会报错,估计是有人连在数据库上的时候没法还原。

RMAN> shutdown immediate

启动到挂载模式,执行还原

RMAN> startup mount
RMAN> restore database;
RMAN>  recover database;
RMAN> alter database open resetlogs;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值