因为我们数据库服务器的空间有限,同时也考虑到异地备份的好处,虽说异地备份操作比同机备份繁琐,但是我们还是推荐使用Rman 的异地备份。
1.在备份以前请确认数据库的归档方式
RMAN
CMD
C:\Documents and Settings\cpnuser>sqlplus /nolog
SQL*Plus: Release 11.1.0.7.0 - Production on Tue Jul 16 15:08:13 2013
Copyright (c) 1982, 2008, Oracle. All rights reserved.
SQL> conn ***/***@*** as sysdba
Connected.
SQL>
查看数据库归档方式
SQL> SELECT log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
如果结果为NOARCHIVELOG则需要将数据库模式设置为归档模式,否则跳过此步
SQL> shutdown immediate; (立即关闭数据库)
SQL> startup mount (启动实例并加载数据库,但不打开)
SQL> alter database archivelog; (更改数据库为归档模式)
SQL> alter database open; (打开数据库)
SQL> alter system archive log start; (启用自动归档)
SQL> conn ***/***@*** as sysdba
Connected.
查看数据库归档方式
SQL> SELECT log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
2.设置备份端的共享目录。
配置数据库服务器与备份目的主机
帐户配置(假定有主机A,B 且A为数据库服务器,B为备份目的主机,且能互相ping通)
如果主机A与主机B使用的Administrator密码相同,且A上的OracleServiceDBNAME(PRPCV6)服务和 OracleOraHome11TNSListener服务都以"本地系统账户登陆"
如果主机A与主机B使用不同的Administrator密码,处于安全考虑不宜设为相同,则则可以分别在主机A与主机B上新建一用户,假定在主机A上建立DBA_oracle,密码为ORA_PWD,则在主机B上也建立该用户(用户名可以不同,密码必须相同),密码同样设置为ORA_PWD。将刚建好的用户在各自主机将其加入到Aministrators组
设定OracleServiceDBNAME服务和OracleOraHome92TNSListener服务的启动帐户。在运行处输入services.msc。在主机A上设定使用此帐户登陆,即使用刚刚建立的DBA_oracle,输入密码启动,该设置需要重启后有效。
在主机B上设定共享文件夹,如RMAN_Shared,设置其权限为完全控制(在A上使用\\IP\RMAN_Shared测试是否可写入文件)
PS:为什么需要指定一个用户来控制一个service?
在windows 里,默认的本地系统账户不允许往共享目录中写入的权限。
On Windows, your default is the OracleService service, which runs as the user LocalSystem. The Windows LocalSystem user is not allowed to write to shared drives.
3.使用脚本进行备份
脚本文件已经配置好。打开脚本文件修改路径即可。
配置文件上,双击Test.bat即可。
4.数据库还原
Rman target sys/Hello1234@PRPCV6
RMAN> list backup of database;
restore database; -->还原数据库
recover database; -->恢复数据库
以CPNPS为例
RMAN> connect target sys/sys@CPNPS
RMAN> startup mount;
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;
以CPNPS为例
RMAN> connect target sys/Hello1234@PRPCV6
RMAN> startup mount;
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;