因为我们数据库服务器的空间有限,同时也考虑到异地备份的好处,虽说异地备份操作比同机备份繁琐,但是我们还是推荐使用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<SID> 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;