全库备份(包括数据库,控制文件,归档日志)
RMAN> run {
2> backup full database format '/orabk/full_%U.bak';
3> backup archivelog all format '/orabk/arc_%U.bak'delete input;
4> copy current controlfile to '/orabk/control_bak.ctl';
5> }
Starting backup at 28-MAY-07
using channelORA_DISK_1
channel ORA_DISK_1:starting full datafile backupset
channel ORA_DISK_1:specifying datafile(s) in backupset
including currentSPFILE in backupset
including currentcontrolfile in backupset
input datafilefno=00011 name=/u01/app/oracle/oradata/orcl9i/rep_test.dbf
input datafilefno=00001 name=/u01/app/oracle/oradata/orcl9i/system01.dbf
input datafilefno=00002 name=/u01/app/oracle/oradata/orcl9i/undotbs01.dbf
input datafilefno=00005 name=/u01/app/oracle/oradata/orcl9i/example01.dbf
input datafilefno=00012 name=/u01/app/oracle/oradata/orcl9i/rman_ts01.dbf
input datafilefno=00010 name=/u01/app/oracle/oradata/orcl9i/xdb01.dbf
input datafilefno=00006 name=/u01/app/oracle/oradata/orcl9i/indx01.dbf
input datafilefno=00009 name=/u01/app/oracle/oradata/orcl9i/users01.dbf
input datafilefno=00003 name=/u01/app/oracle/oradata/orcl9i/cwmlite01.dbf
input datafilefno=00004 name=/u01/app/oracle/oradata/orcl9i/drsys01.dbf
input datafilefno=00007 name=/u01/app/oracle/oradata/orcl9i/odm01.dbf
input datafilefno=00008 name=/u01/app/oracle/oradata/orcl9i/tools01.dbf
channel ORA_DISK_1:starting piece 1 at 28-MAY-07
channel ORA_DISK_1:finished piece 1 at 28-MAY-07
piecehandle=/orabk/full_07iis0oe_1_1.bak comment=NONE
channel ORA_DISK_1:backup set complete, elapsed time: 00:24:05
Finished backup at 28-MAY-07
Starting backup at 28-MAY-07
current log archived
using channelORA_DISK_1
channel ORA_DISK_1:starting archive log backupset
channel ORA_DISK_1:specifying archive log(s) in backup set
input archive logthread=1 sequence=23 recid=23 stamp=623773878
channel ORA_DISK_1:starting piece 1 at 28-MAY-07
channel ORA_DISK_1:finished piece 1 at 28-MAY-07
piecehandle=/orabk/arc_08iis25m_1_1.bak comment=NONE
channel ORA_DISK_1:backup set complete, elapsed time: 00:00:02
channel ORA_DISK_1:deleting archive log(s)
archive logfilename=/u01/app/oracle/oradata/orcl9i/archive/1_23.dbf recid=23stamp=623773878
Finished backup at 28-MAY-07
Starting copy at 28-MAY-07
using channelORA_DISK_1
channel ORA_DISK_1:copied current controlfile
outputfilename=/orabk/control_bak.ctl
Finished copy at 28-MAY-07
RMAN>
RMAN异机恢复实践。
下面仍以linux为例来说明利用上面的全备来做异机恢复测试。
Windows平台需要将下面存放在$ORACLE_HOME/dbs下的文件房在$ORACLE_HOME/database下,同时需要使用oradim配置一个OracleServiceSID的服务。
cmd>oradim –NEW –SID ORCL9I -STARTMODEa
然后在netmgr中配置一个监听,用lsnrctl start启动,会自动在添加一个监听服务。
按照原数据库环境的设置来配置异机的环境,但是也不是必须完全一样,在不一样的情况下需要做相应的技术处理,这里以相同的环境设置来做实验。
1. 配置环境变量
$ORACLE_BASE=/u01/app/oracle
$ORACLE_HOME=/u01/app/oracle/product/9.2.0
如下图:
2. 安装ORACLE SOFTWARE, 不需要创建数据库
3. 设置环境变量ORACLE_SID=orcl9i (我这里的是orcl9i, 这个依据实际情况而定);
如图:
验证:
4. 创建和原数据库相同的目录结构,如下
/u01/app/oracle/
|___admin
| |___orcl9i
| |___bdump
| |___udump
| |___cdump
|
|___oradata
|____orcl9i 数据文件、控制文件、redo log文件位置
|____archive(这个是我这里的归档日志存放的位置)
如下图:
5.配置默认监听器及本地服务名,工具netmgr
监听:
Local Service Naming:
6.创建密码文件,工具orapwd
例:[oracle@ora9lnx bin]$ cd $ORACLE_HOME/dbs
[oracle@ora9lnx dbs]$ orapwd file=orapworcl9i password=oracle entries=5
file格式 orapwORACLE_SID
password sys用户的密码
entries 最多允许sysdba/sysoper用户的数量,默认1.
7. 复制原数据库的参数文件
原数据库操作
Sqlplus:SQL>create pfile from spfile;
这里会在原数据库机器上的$ORACLE_HOME/dbs下产生一个initORACLE_SID.ora的参数文件。
复制
将上面产生的参数文件ftp或通过samba共享等方式复制到测试机的$ORACLE_HOME/dbs下。
8. 复制控制文件
将rman全库备份中copy出来的控制文件备份/orabk/control_bak.ctl传到测试机, 然后将其按照参数文件中的控制文件配置复制。这里是复制成如下三个文件:
/u01/app/oracle/oradata/orcl9i/control01.ctl
/u01/app/oracle/oradata/orcl9i/control02.ctl
/u01/app/oracle/oradata/orcl9i/control03.ctl
8. 将全备后的备份文件复制到异机,这里是/orabk.
在异机下先建文件夹/orabk,且授权给oracle.dba,操作如下
mkdir /orabk
chown oracle.dba /orabk
然后将备份的文件传过来,由于oracle用户在2台机器中创建后的id并不一定一样,所以最后再重新授权。
Chownoracle.dba /orabk/*.bak
如果由于空间等问题复制的文件夹不是/orabk,那么我们可以通过ln –s 做符号连接来完成。
9. 启动数据库到mount状态
1) 启动监听
2) 启动数据库到mount 状态
如果将数据库改到OPEN状态(SQL>alter database open;),会报错。
10. 用RMAN做全库恢复
a) 检查备份
b) 全库恢复。如下图:
11. 启动数据库到OPEN
使用该热备方式做的备份和方式,一般alter database open时必须加resetlogs参数,除非是在mount状态下的冷备,并且将重做日志也复制到异机的情况下可以直接alter database open;。
12. 检查temp表空间,为temp表空间增加临时文件。
添加临时文件:
13.重新启动数据库,做全备(略).