ORACLE LINUX 11G RAC 单实例DATAGUARD - 图文 联系客服

发布时间 : 星期六 文章ORACLE LINUX 11G RAC 单实例DATAGUARD - 图文更新完毕开始阅读d8641a48fe4733687e21aa86

十三、 目标库:建立所需目录结构:

oracle下:

mkdir -p /app/oracle/admin/oem_dg/adump mkdir -p /oradata/oem_dg/controlfile/

mkdir -p /app/oracle/diag/rdbms/oem_dg/oem/trace/cdump root下:

mkdir /backup

chown oracle:oinstall /backup

十四、 目标库:修改tnsnames,添加源库和目标库配置

OEM =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = scan11g.fawcar.com.cn)(PORT = 1521)) (CONNECT_DATA =

(SERVER = DEDICATED) (SERVICE_NAME = oem) ) )

OEM_DG =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST=10.135.161.241)(PORT = 1521)) (CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oem_dg) (SID=oem) ) )

OEM1 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST=10.135.33.170)(PORT = 1521)) (CONNECT_DATA =

(SERVER = DEDICATED) (SERVICE_NAME = oem) (SID=oem1) ) )

OEM2 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST=10.135.33.171)(PORT = 1521)) (CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oem) (SID=oem2) ) )

十五、 目标库:nomount启动数据库:

export ORACLE_SID=oem

sqlplus sys as sysdba

startup nomount pfile='/app/standby_pfile.ora';

报错,这个问题是由于设置SGA的大小超过了操作系 统/dev/shm的大小:

这里MEMORY_TARGET设置为4096M,而/dev/shm仅有2983M

Oracle在metalink的文档:Doc ID:Note:460506.1中进行了说明。解决这个问题只有两个方 法,一种是修改初始化参数,使得初始化参数中SGA的设置小于/dev/shm的大小,另一种方法就是调整/dev/shm的 大小。

通过/dev/fstab修改/dev/shm大小,如下:

启动数据库:

十六、 源库端:rman建立dataguard数据库:

rman target / auxiliary sys/Oracle11@oem_dg

DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK;

十七、 目标库:创建spfile

create spfile from pfile='/app/standby_pfile.ora';

十八、 源库:设置为最大可用模式。 alter database set standby database to maximize availability;

十九、 目标库:启动日志应用:

alter database recover managed standby database disconnect from session;

二十、 测试效果:

源库:

create table my as select * from user_tables;

alter system switch logfile;

目标库:

tail –f /app/oracle/diag/rdbms/oem_dg/oem/trace/ alert_oem.log

二十一、

检查日志传输:

SELECT a.th, a.seq transfered, b.seq archived

FROM (SELECT local.thread# th, MAX (local.sequence#) seq FROM (SELECT thread#, sequence# FROM v$archived_log WHERE dest_id = 1) local WHERE local.sequence# IN (SELECT sequence# FROM v$archived_log

WHERE dest_id = 2 AND thread# = local.thread#) GROUP BY local.thread#) a,

(SELECT thread# th, MAX (sequence#) seq FROM v$archived_log WHERE dest_id = 1 GROUP BY thread#) b WHERE a.th = b.th ORDER BY 1;