利用RMAN 建立Oracle9i RAC Data Guard
整理: 王琦
2006-09-22
相关术语解释:
目标服务器: target , 需要被备份的原數据库服务器.这裡指primary database 服务器 .
目錄服务器: catalog , 保存备份信息的目錄服务器, 这裡指data guard 服务器 .
1. RMAN服务器的配置:
以下在Dataguard Server (目錄服务器)上配置.
1.0 建立RMAN数据库(比如SID=RMAN) .
1.1 建立RMAN用户表空间(表空间大小设置为500m左右即可) .
create tablespace rman_data
datafile '/u01/data/rman_data1.dbf' size 500M
extent management local uniform size 5M ;
1.2 建立RMAN用户:
create user rman identified by rman
default tablespace rman_data
temporary tablespace temp ;
1.3 给RMAN用户授于相关系统权限:
grant resource, connect, recovery_catalog_owner to rman;
1.4 在Dataguard Server(目錄服务器)上设置tnsnames.ora 用于連target服务器(Primary DB) .
tnsnames.ora 文件中加入以下内容:
DELL_RAC1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.161.8.71)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl1)
)
)
1.5 連接目标服务器与CATALOG服务器. (在Dataguard Server上的RMAN数据库上操作)
rman target sys/oracle@dell_rac1 catalog rman/rman(user/password必须为目标服务器上的拥有sysdba权限的用户.如:sys)
1.6 在目标服务器上建立CATALOG 目錄.
CREATE CATALOG
1.7 在CATALOG服务器上注册目标服务器.
REGISTER DATABASE;
到这里,RMAN备份环境已经准备好了,幷已連接至目标与目錄服务器.
2. 建立Data Guard
2.1 COPY目标服务器上(Primary DB Server)的初始化參數文件及密码文件到Data Guard相对应目錄.
2.2 使用RMAN的Image copy拷贝目标服务器上的.DBF文件至Data Guard相应目錄.(见后面的详细介绍) .
2.2.1 使用REPORT SCHEMA可列出将要拷贝的所有目标數据库上的數据文件.
2.2.2 使用下面的SQL生成所有數据文件的copy脚本.
SELECT 'datafile '||''''||name||''''||' to '||''''||'/data'||name||''''||',' FROM v$datafile; 或者
SELECT 'datafile '||''''||name||''''||' to '||''''||name||''''||',' FROM v$datafile;
RMAN IMAGE COPY脚本:
RUN {
ALLOCATE CHANNEL XXXXX DEVICE TYPE DISK;
COPY
...........,
…..----- 这裡放入上面SQL生成的脚本 .
……… ;
RELEASE CHANNEL XXXX;}
脚本例子 (如果在Data Guard Server上文件路径有变化, 即与Primary DB上路径不一样, 我们会在生成控制文件后, 在Data Guard DB上Mount狀态下使用 alter database rename file 更改數据文件路径, 脚本中前面的文件路径表示Primary DB上的路径, 后面的路径表示Data Guard Server上的文件路径 ) .
以下脚本例子中的 /backup目录是dataguard上的/data目录影射到Primary DB上的Mount点Label (详细的nfs mount见后面的nfs mount介绍) .
RUN {
ALLOCATE CHANNEL XXXX DEVICE TYPE DISK;
COPY
datafile '/ocfs_arch2/orcldbf/log_data10.dbf' to '/backup/ocfs_arch2/orcldbf/log_data10.dbf',
datafile '/ocfs_arch2/orcldbf/log_index9.dbf' to '/backup/ocfs_arch2/orcldbf/log_index9.dbf',
datafile '/ocfs_arch2/orcldbf/sn_data16.dbf' to '/backup/ocfs_arch2/orcldbf/sn_data16.dbf',
datafile '/ocfs_arch2/orcldbf/sn_data17.dbf' to '/backup/ocfs_arch2/orcldbf/sn_data17.dbf',
datafile '/ocfs_arch2/orcldbf/sn_data18.dbf' to '/backup/ocfs_arch2/orcldbf/sn_data18.dbf',
datafile '/ocfs_arch2/orcldbf/sn_data19.dbf' to '/backup/ocfs_arch2/orcldbf/sn_data19.dbf',
datafile '/ocfs_arch2/orcldbf/sn_data20.dbf' to '/backup/ocfs_arch2/orcldbf/sn_data20.dbf',
datafile '/ocfs_arch2/orcldbf/sn_data21.dbf' to '/backup/ocfs_arch2/orcldbf/sn_data21.dbf',
datafile '/ocfs_arch2/orcldbf/sn_idx13.dbf' to '/backup/ocfs_arch2/orcldbf/sn_idx13.dbf',
datafile '/ocfs_arch2/orcldbf/sn_idx14.dbf' to '/backup/ocfs_arch2/orcldbf/sn_idx14.dbf',
datafile '/ocfs_arch2/orcldbf/sn_idx15.dbf' to '/backup/ocfs_arch2/orcldbf/sn_idx15.dbf',
datafile '/ocfs_arch2/orcldbf/sn_idx17.dbf' to '/backup/ocfs_arch2/orcldbf/sn_idx17.dbf',
datafile '/ocfs_arch2/orcldbf/sn_idx18.dbf' to '/backup/ocfs_arch2/orcldbf/sn_idx18.dbf',
datafile '/ocfs_data/orcl/cwmlite01.dbf' to '/backup/ocfs_data/orcl/cwmlite01.dbf',
datafile '/ocfs_data/orcl/drsys01.dbf' to '/backup/ocfs_data/orcl/drsys01.dbf',
datafile '/ocfs_data/orcl/example01.dbf' to '/backup/ocfs_data/orcl/example01.dbf',
datafile '/ocfs_data/orcl/ict_data1.dbf' to '/backup/ocfs_data/orcl/ict_data1.dbf',
datafile '/ocfs_data/orcl/ict_data2.dbf' to '/backup/ocfs_data/orcl/ict_data2.dbf',
datafile '/ocfs_data/orcl/ict_data3.dbf' to '/backup/ocfs_data/orcl/ict_data3.dbf',
datafile '/ocfs_data/orcl/ict_data4.dbf' to '/backup/ocfs_data/orcl/ict_data4.dbf',
datafile '/ocfs_data/orcl/indx01.dbf' to '/backup/ocfs_data/orcl/indx01.dbf',
datafile '/ocfs_data/orcl/log_data1.dbf' to '/backup/ocfs_data/orcl/log_data1.dbf',
datafile '/ocfs_data/orcl/log_data2.dbf' to '/backup/ocfs_data/orcl/log_data2.dbf',
datafile '/ocfs_data/orcl/log_data3.dbf' to '/backup/ocfs_data/orcl/log_data3.dbf',
datafile '/ocfs_data/orcl/log_data4.dbf' to '/backup/ocfs_data/orcl/log_data4.dbf',
datafile '/ocfs_data/orcl/log_data5.dbf' to '/backup/ocfs_data/orcl/log_data5.dbf',
datafile '/ocfs_data/orcl/log_data6.dbf' to '/backup/ocfs_data/orcl/log_data6.dbf',
datafile '/ocfs_data/orcl/log_data7.dbf' to '/backup/ocfs_data/orcl/log_data7.dbf',
datafile '/ocfs_data/orcl/log_data8.dbf' to '/backup/ocfs_data/orcl/log_data8.dbf',
datafile '/ocfs_data/orcl/log_data9.dbf' to '/backup/ocfs_data/orcl/log_data9.dbf',
datafile '/ocfs_data/orcl/sn_data1.dbf' to '/backup/ocfs_data/orcl/sn_data1.dbf',
datafile '/ocfs_data/orcl/sn_data10.dbf' to '/backup/ocfs_data/orcl/sn_data10.dbf',
datafile '/ocfs_data/orcl/sn_data11.dbf' to '/backup/ocfs_data/orcl/sn_data11.dbf',
datafile '/ocfs_data/orcl/sn_data12.dbf' to '/backup/ocfs_data/orcl/sn_data12.dbf',
datafile '/ocfs_data/orcl/sn_data13.dbf' to '/backup/ocfs_data/orcl/sn_data13.dbf',
datafile '/ocfs_data/orcl/sn_data14.dbf' to '/backup/ocfs_data/orcl/sn_data14.dbf',
datafile '/ocfs_data/orcl/sn_data15.dbf' to '/backup/ocfs_data/orcl/sn_data15.dbf',
datafile '/ocfs_data/orcl/sn_data2.dbf' to '/backup/ocfs_data/orcl/sn_data2.dbf',
datafile '/ocfs_data/orcl/sn_data3.dbf' to '/backup/ocfs_data/orcl/sn_data3.dbf',
datafile '/ocfs_data/orcl/sn_data4.dbf' to '/backup/ocfs_data/orcl/sn_data4.dbf',
datafile '/ocfs_data/orcl/sn_data5.dbf' to '/backup/ocfs_data/orcl/sn_data5.dbf',
datafile '/ocfs_data/orcl/sn_data6.dbf' to '/backup/ocfs_data/orcl/sn_data6.dbf',
datafile '/ocfs_data/orcl/sn_data7.dbf' to '/backup/ocfs_data/orcl/sn_data7.dbf',
datafile '/ocfs_data/orcl/sn_data8.dbf' to '/backup/ocfs_data/orcl/sn_data8.dbf',
datafile '/ocfs_data/orcl/sn_data9.dbf' to '/backup/ocfs_data/orcl/sn_data9.dbf',
datafile '/ocfs_data/orcl/system01.dbf' to '/backup/ocfs_data/orcl/system01.dbf',
datafile '/ocfs_data/orcl/tools01.dbf' to '/backup/ocfs_data/orcl/tools01.dbf',
datafile '/ocfs_data/orcl/track_data1.dbf' to '/backup/ocfs_data/orcl/track_data1.dbf',
datafile '/ocfs_data/orcl/track_data2.dbf' to '/backup/ocfs_data/orcl/track_data2.dbf',
datafile '/ocfs_data/orcl/track_data3.dbf' to '/backup/ocfs_data/orcl/track_data3.dbf',
datafile '/ocfs_data/orcl/track_data4.dbf' to '/backup/ocfs_data/orcl/track_data4.dbf',
datafile '/ocfs_data/orcl/track_data5.dbf' to '/backup/ocfs_data/orcl/track_data5.dbf',
datafile '/ocfs_data/orcl/track_data6.dbf' to '/backup/ocfs_data/orcl/track_data6.dbf',
datafile '/ocfs_data/orcl/track_data7.dbf' to '/backup/ocfs_data/orcl/track_data7.dbf',
datafile '/ocfs_data/orcl/track_data8.dbf' to '/backup/ocfs_data/orcl/track_data8.dbf',
datafile '/ocfs_data/orcl/undotbs01.dbf' to '/backup/ocfs_data/orcl/undotbs01.dbf',
datafile '/ocfs_data/orcl/undotbs01_1.dbf' to '/backup/ocfs_data/orcl/undotbs01_1.dbf',
datafile '/ocfs_data/orcl/undotbs02.dbf' to '/backup/ocfs_data/orcl/undotbs02.dbf',
datafile '/ocfs_data/orcl/undotbs02_1.dbf' to '/backup/ocfs_data/orcl/undotbs02_1.dbf',
datafile '/ocfs_data/orcl/undotbs02_2.dbf' to '/backup/ocfs_data/orcl/undotbs02_2.dbf',
datafile '/ocfs_data/orcl/users01.dbf' to '/backup/ocfs_data/orcl/users01.dbf',
datafile '/ocfs_data/orcl/xdb01.dbf' to '/backup/ocfs_data/orcl/xdb01.dbf',
datafile '/ocfs_data2/orcl/ict_data07.dbf' to '/backup/ocfs_data2/orcl/ict_data07.dbf',
datafile '/ocfs_data2/orcl/ict_data08.dbf' to '/backup/ocfs_data2/orcl/ict_data08.dbf',
datafile '/ocfs_data2/orcl/ict_data09.dbf' to '/backup/ocfs_data2/orcl/ict_data09.dbf',
datafile '/ocfs_data2/orcl/ict_data10.dbf' to '/backup/ocfs_data2/orcl/ict_data10.dbf',
datafile '/ocfs_data2/orcl/ict_data11.dbf' to '/backup/ocfs_data2/orcl/ict_data11.dbf',
datafile '/ocfs_data2/orcl/ict_data12.dbf' to '/backup/ocfs_data2/orcl/ict_data12.dbf' ;
RELEASE CHANNEL XXXX;}
在 Copy datafile `/ocfs_data/orcl/xx.dbf' to `/backup/ocfs_data/orcl/xx.dbf'中.
第一个`/ocfs_data/orcl/xx.dbf'是目标服务器的數据文件地址. `/backup/ocfs_data/orcl/xx.dbf 是挂载到目标服务器上的dataguard的相应目錄.
假设脚本文件保存为 rman.txt 文件 .
說明:
需要先将将要成为dataguard服务器的文件存放目錄使用NFS映像至目标服务器(Primary DB Server ) 相关目錄.
具体步骤如下:
Linux下NFS的配置
2.3. NFS server端(在此处为Data Guard服务器)及客户端(Primary DB Server)设置:
2.3.1 在/etc/exports 发布挂载的目錄.
如: /data *(rw,no_root_squash)
/data为data guard server上分享的目錄,*表示允许任何主机分享,rw,no_root_squash为參數
代表意义如下:
rw: 可讀写的权限
ro: 只讀的权限
no_root_squash: 登入 NFS 主机使用分享目錄的使用者,如果是 root 的话,那么对于这个分享的目錄來說,他就具有 root 的权限!
root_squash: 在登入 NFS 主机使用分享之目錄的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者.
2.3.2 在Data Gurad DB Server上启动兩个相关服务
#/etc/rc.d/init.d/portmap start (or:#service portmap start)
#/etc/rc.d/init.d/nfs start (or:#service nfs start)
2.3.3. NFS客户端的设定(TARGET服务器, 即Primary database Server )
不用其它设定,直接挂载就可以了
#mount -t nfs dataguard_server_ip:/directory /mountpoint
/mountpoint 为Primary Database Server上的挂载点 .
如:
mount -t nfs 10.161.8.83:/data /backup
在Copy datafile
`/ocfs_data/orcl/xx.dbf' to `/backup/ocfs_data/orcl/xx.dbf'中.
第一个`/ocfs_data/orcl/xx.dbf'是目标服务器的數据文件地址. `/backup/ocfs_data/orcl/xx.dbf 是挂载到目标服务器上的dataguard的相应目錄.
2.4在目錄服务器(Data Guard Server) RMAN环境下执行以上的脚本
先rman連接目标服务器与目錄服务器 .
rman target sys/oracle@intel_rac1 catalog rman/rman(user/password必须为目标服务器上的拥有sysdba权限的用户.如:sys)
RMAN > @rman.txt
copy數据文件完成后,在目标服务器创建STANDBY CONTROLFILE
ALTER DTABASE CREATE STANDBY CONTROLFILE AS '..........'
2.5 COPY目标服务器归档日志至DATAGUARD.
2.6 RECOVER STANDBY DATATABASE.
2.7 测试DATAGUARD能否切换至只讀模式
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-84452/,如需转载,请注明出处,否则将追究法律责任。