1. 当前位置:网站首页 > Oracle相关

oracle+dataguard+cascade dataguard


环境参数

 

操作系统及版本:CentOS release 6.5 (Final)

 

oracle主机名:oracle.slb.com                 IP 地址:192.168.239.31

dataguard主机名:dataguard.slb.com          IP 地址:192.168.239.32

cascade dg 主机名:cascade.slb.com           IP 地址:192.168.239.33

 

oracle 软件版本:11.2.0.4.0

 

一、主库建立 oracle 数据库 slb

 

配置 /etc/hots 文件

三台机器都要配置

192.168.239.31     oracle.slb.com     oracle

192.168.239.32     dataguard.slb.com  dataguard

192.168.239.33     cascade.slb.com    cascade

 

[root@slb ~]# vi /etc/hosts

1.png



二、安装相关rpm

三台同样操作

传输相关rpm包到/home,目录下

进入相关目录进行rpm安装

[root@slb ~]# cd /home/rpm/

 

[root@slb rpm]# rpm -ivh * --force

 

2.png



三、配置相关系统参数

三台同样操作

[root@cascade rpm]# vi /etc/sysctl.conf

添加以下内容:

fs.file-max = 6815744

fs.aio-max-nr = 1048576

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

kernel.sem = 250 32000 100 128

kernel.shmmni = 4096

 

3.png




使系统参数生效

[root@slb rpm]# sysctl  -p

4.png




四、设置系统安全限制参数

三台同样操作

[root@cascade rpm]# vi /etc/security/limits.conf

添加以下内容:

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

oracle hard stack 10240

 

五、oracle 登录配置

三台同样操作

[root@dataguard rpm]# vi /etc/pam.d/login

添加以下内容:

session required pam_limits.so

 

六、更改系统配置文件

三台同样操作

[root@cascade rpm]# vi /etc/profile

添加以下内容:

if [ $USER = "oracle" ]; then

        if [ $SHELL = "/bin/ksh" ]; then

              ulimit -p 16384

              ulimit -n 65536

        else

        ulimit -u 16384 -n 65536

        fi

fi

 

七、添加用户组及用户

三台机器同样操作

[root@cascade rpm]# groupadd oinstall

[root@cascade rpm]# groupadd dba

[root@cascade rpm]# groupadd oper

[root@cascade rpm]# useradd -g oinstall -G dba,oper oracle

 

设置 oracle 用户密码(注意密码的复杂度,大小写英文加数字加符号)

[root@cascade rpm]# passwd oracle

5.png


6.png



八、创建数据库软件安装目录

三台机器同样操作

[root@slb rpm]# mkdir -p /home/oracle/app/oracle

[root@slb home]# chown -R oracle.oinstall /home/oracle/app

[root@slb home]# chmod -R 775 /home/oracle/app

 

九、配置oracle用户环境变量

Oracle 主机

[root@slb ~]# vi /home/oracle/.bash_profile

添加以下内容:

ORACLE_SID=slb

export ORACLE_SID

ORACLE_BASE=/home/oracle/app/oracle

export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_HOME

PATH=$PATH:$ORACLE_HOME/bin

export PATH

 

dataguard 主机

[root@dataguard rpm]# vi /home/oracle/.bash_profile

添加以下内容

ORACLE_SID=dg

export ORACLE_SID

ORACLE_BASE=/home/oracle/app/oracle

export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_HOME

PATH=$PATH:$ORACLE_HOME/bin

export PATH

 

cascade 主机

[root@cascade rpm]# vi /home/oracle/.bash_profile

添加以下内容

ORACLE_SID=casdg

export ORACLE_SID

ORACLE_BASE=/home/oracle/app/oracle

export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_HOME

PATH=$PATH:$ORACLE_HOME/bin

export PATH

 

十、将oracle 软件传到服务器并解压

三台机器同样操作

[root@slb home]# unzip p13390677_112040_Linux-x86-64_1of7.zip

[root@slb home]# unzip p13390677_112040_Linux-x86-64_2of7.zip

 

……

 

十一、授权 oracle 用户操作 database 目录

[root@slb home]# chown -R oracle.oinstall database

 

十二、使用oracle用户进行数据库软件安装

三台机器同样操作

[root@slb home]# su – oracle

[oracle@slb ~]$ cd /home/database

[oracle@slb database]$ ./runInstaller

7.png




十三、安装oracle软件

8.png



将勾清除


9.png


报错点Yes




10.png


跳过软件更新,点击next



11.png


只安装软件,点击next



12.png


选择单实例数据库安装,点击next



13.png


默认选项,点击next



14.png


安装企业版软件,点击next



15.png


点击next



16.png


点击next



17.png


点击next



18.png


19.png


安装相应rpm

[root@dataguard home]# rpm -ivh pdksh-5.2.14-30.x86_64.rpm --force –nodeps


20.png



点击check again 按钮



21.png


仍然报错,但实际已安装,oracle 软件抽抽了,勾选ignore all,点击next



22.png


点击yes



23.png


Install



24.png


执行相应脚本


25.png



使用root用户登录linux

[root@slb home]# /home/oracle/app/oraInventory/orainstRoot.sh

[root@slb home]# /home/oracle/app/oracle/product/11.2.0/db_1/root.sh


26.png



点击ok



27.png


Close




十四、使用dbca创建数据库

[root@slb home]# su – oracle

[oracle@slb ~]$ dbca



28.png


点击Next



29.png


点击Next



30.png

点击next


31.png


点击next



32.png


勾取消,点击next



33.png


点击next



34.png


点击next



35.png

勾选归档模式,启用归档,点击next


36.png


点击next



37.png

38.png


选择字符集,点击next



39.png


点击next



40.png


点击finish



41.png


点击ok



42.png

43.png


点击exit

 

完成数据库安装




十五、安装监听

[oracle@slb ~]$ netca

44.png



点击next



45.png


点击next



46.png


点击next



47.png


点击next



48.png


点击next



49.png


点击next



50.png


点击next



51.png


点击next



52.png


点击next



53.png


点击next



54.png


点击next



55.png


点击next



56.png


点击next



57.png


点击next



58.png


点击next



59.png


点击next



60.png


点击change login


61.png


输入system密码,建库时创建的,点击ok



62.png


点击next



63.png


点击next



64.png


点击next



65.png


点击next



66.png


点击finish




十六、主库创建备库所用的standby control file

创建备份目录

[oracle@slb ~]$ mkdir -p /home/oracle/dg_backup

 

创建备库的控制文件

SQL> alter database create standby controlfile as '/home/oracle/dg_backup/const.bkp';

67.png




十七、主库全库备份用以在备库还原恢复数据库

[oracle@slb ~]$ rman target /

68.png




备份脚本如下:

run {

allocate channel c1 type disk;

allocate channel c2 type disk;

backup as compressed backupset incremental level 0 database format '/home/oracle/dg_backup/full_%s_%t_%p.bkp';

sql 'alter system switch logfile';

backup archivelog all format '/home/oracle/dg_backup/arc_%s_%t_%p.bkp';

}

69.png


70.png



将备份集传递到dataguard

 

十八、备库创建pfile文件

进入dbs目录

[oracle@dataguard dbs]$ cd /home/oracle/app/oracle/product/11.2.0/db_1/dbs/

71.png




复制模板文件并重命名

[oracle@dataguard dbs]$ cp init.ora initdg.ora

72.png




十九、编辑pfile文件并创建相应目录

[oracle@dataguard dbs]$ vi initdg.ora

修改内容如下:

db_name='slb'

memory_target=500M

processes = 150

audit_file_dest='/home/oracle/app/oracle/admin/dg/adump'

audit_trail ='db'

db_block_size=8192

db_domain=''

db_recovery_file_dest='/home/oracle/app/oracle/fast_recovery_area'

db_recovery_file_dest_size=2G

diagnostic_dest='/home/oracle/app/oracle'

dispatchers='(PROTOCOL=TCP) (SERVICE=DGXDB)'

open_cursors=300

remote_login_passwordfile='EXCLUSIVE'

undo_tablespace='UNDOTBS1'

# You may want to ensure that control files are created on separate physical

# devices

control_files = ('/home/oracle/app/oracle/oradata/dg/control01.ctl', '/home/oracle/app/oracle/oradata/dg/control02.ctl')

compatible ='11.2.0.4.0'

73.png




创建相关目录

[oracle@dataguard ~]$ mkdir -p /home/oracle/app/oracle/admin/dg/adump

[oracle@dataguard ~]$ mkdir -p /home/oracle/app/oracle/oradata/dg

[oracle@dataguard ~]$ mkdir -p /home/oracle/app/oracle/fast_recovery_area

 

二十、将数据库启动到nomount状态并恢复standby controlfile

启动数据库到nomount状态

RMAN> startup nomount

74.png




恢复standby 控制文件

RMAN> restore controlfile to '/home/oracle/app/oracle/oradata/dg/control01.ctl' from '/home/oracle/dg_backup/const.bkp';

75.png



RMAN> restore controlfile to '/home/oracle/app/oracle/oradata/dg/control02.ctl' from '/home/oracle/dg_backup/const.bkp';

76.png




二十一、将数据库启动到mount状态并加载备份集文件

将数据库启动到mount状态

RMAN> startup mount

77.png




加载备份及文件

RMAN> catalog start with '/home/oracle/dg_backup';

78.png




二十二、将数据文件重命名并进行还原

创建相关脚本

Vi restore.sh

# profile

export ORACLE_SID=dg

export ORACLE_BASE=/home/oracle/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

 

 

if [ -f /tmp/rename.rman ];then

    rm -rf /tmp/rename.rman;

fi

 

sqlplus -S /nolog << EOF

conn / as sysdba

set trimspool on;

set linesize 120;

set pagesize 2000;

set newpage 1;

set heading off;

set feedback off;

set term off;

spool /tmp/rename.rman;

select 'run {' from dual;

select 'set newname for datafile '|| file#||' to ''/home/oracle/app/oracle/oradata/dg/'||substr(name,instr(name,'/',-1)+1)||''';' as isql from

v\$datafile;

select 'set newname for tempfile '|| file#||' to ''/home/oracle/app/oracle/oradata/dg//'||substr(name,instr(name,'/',-1)+1)||''';' as isql from

v\$tempfile;

select 'restore database;' from dual;

select 'switch datafile all;' from dual;

select 'switch tempfile all;' from dual;

select '}' from dual;

spool off;

EOF

79.png




为脚本授权执行权限

[oracle@dataguard ~]$ chmod +x restore.sh




二十三、运行restore脚本

[oracle@dataguard ~]$ ./restore.sh

80.png




此脚本输出在临时文件/tmp/rename.rman中,故在rman中运行此脚本以还原数据库

RMAN> @/tmp/rename.rman

81.png


82.png


完成还原




二十四、恢复数据库

RMAN> recover database;

83.png




二十五、创建spfile并重启数据库到mount状态

SQL> shutdown immediate

84.png




SQL> create spfile from pfile;

85.png




SQL> startup mount

86.png




二十六、配置主、备库静态监听

主库配置静态监听

进入监听目录

/home/oracle/app/oracle/product/11.2.0/db_1/network/admin

 

编辑listener.ora 文件

添加以下内容:

SID_LIST_LISTENER=

  (SID_LIST=

    (SID_DESC=

      (GLOBAL_DBNAME=slb)

      (SID_NAME=slb)

      (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/db_1)

    )

  )


87.png



Reload 监听

[oracle@slb admin]$ lsnrctl reload

88.png




查看主库监听状态

[oracle@slb admin]$ lsnrctl status

89.png




主库静态监听配置完成

 

备库配置静态监听

进入监听目录

/home/oracle/app/oracle/product/11.2.0/db_1/network/admin

 

编辑listener.ora 文件

添加以下内容:

SID_LIST_LISTENER=

  (SID_LIST=

    (SID_DESC=

      (GLOBAL_DBNAME=dg)

      (SID_NAME=dg)

      (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/db_1)

    )

  )

90.png




Reload 监听

[oracle@dataguard admin]$ lsnrctl reload

91.png




查看主库监听状态

92.png




备库静态监听配置完成

 

二十七、配置tnsnames.ora文件

主库备库同样配置

Vi tnsnames.ora

配置信息如下:

SLB =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = slb.slb.com)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = slb)

    )

  )

 

DG =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = dataguard.slb.com)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = dg)

    )

  )

测试连通性

[oracle@slb admin]$ tnsping slb


93.png



[oracle@slb admin]$ tnsping dg

94.png




二十八、备库配置数据库参数

SQL> alter system set db_unique_name='dg' scope=spfile;

95.png




SQL> alter system set log_archive_config='DG_CONFIG=(slb,dg)' scope=spfile;

96.png




SQL> alter system set fal_server='slb' scope=spfile;

97.png




SQL> alter system set fal_client='dg' scope=spfile;

98.png




SQL> alter system set standby_file_management=auto scope=spfile;

99.png




SQL> alter system set db_file_name_convert='/home/oracle/app/oracle/oradata/slb','/home/oracle/app/oracle/oradata/dg' scope=spfile;

100.png




SQL> alter system set log_file_name_convert='/home/oracle/app/oracle/oradata/slb','/home/oracle/app/oracle/oradata/dg' scope=spfile;

101.png




重启备库到mount状态,以使以上参数生效

SQL> shutdown immediate

102.png




SQL> startup mount

103.png



二十九、主库配置数据库参数并将密码文件传输到备库上进行重命名

修改主库数据库参数

SQL> alter system set log_archive_config='DG_CONFIG=(slb,dg)';

104.png




SQL> alter system set log_archive_dest_2='SERVICE=dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) DB_UNIQUE_NAME=dg';

105.png




传输密码文件到备库上进行重命名

[oracle@slb dbs]$ scp orapwslb oracle@dataguard:/home/oracle/app/oracle/product/11.2.0/db_1/dbs/orapwdg



三十、备库创建standby logfile

由于主库日志是3组,故备库standby logfile group 需要4组,将主库的日志重建,大小均设为1G

 

SQL> alter database add standby logfile group 4 '/home/oracle/app/oracle/oradata/dg/rest01.log' size 1G;


106.png



SQL> alter database add standby logfile group 5 '/home/oracle/app/oracle/oradata/dg/rest02.log' size 1G;

107.png




SQL> alter database add standby logfile group 6 '/home/oracle/app/oracle/oradata/dg/rest03.log' size 1G;

108.png




SQL> alter database add standby logfile group 7 '/home/oracle/app/oracle/oradata/dg/rest04.log' size 1G;

109.png




三十一、备库启动实时日志应用进程

SQL> alter database recover managed standby database using current logfile disconnect from session;

110.png




主库切换日志,验证备库是否应用


SQL> alter system switch logfile;


111.png




查看主备库告警日志

主库日志

112.png




备库日志

113.png




 

Oracle + dataguard 配置完成

 

三十二、配置cascade dataguard listener.oratnsnames.ora

[oracle@cascade admin]$ vi listener.ora

更新listener.ora

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = cascade.slb.com)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

 

ADR_BASE_LISTENER = /home/oracle/app/oracle

 

SID_LIST_LISTENER=

  (SID_LIST=

    (SID_DESC=

      (GLOBAL_DBNAME=casdg)

      (SID_NAME=casdg)

      (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/db_1)

    )

  )


118.png



Reload listener

[oracle@cascade admin]$ lsnrctl reload

115.png




查看监听状态

[oracle@cascade admin]$ lsnrctl status

116.png




配置tnsnames.ora文件

DG =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = dataguard.slb.com)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = dg)

    )

  )

 

CASDG =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = cascade.slb.com)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = casdg)

    )

  )

 117.png



三十三、修改dataguard tnsnames.ora文件

更改为以下内容:

SLB =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = slb.slb.com)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = slb)

    )

  )

 

DG =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = dataguard.slb.com)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = dg)

    )

  )

 

CASDG =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = cascade.slb.com)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = casdg)

    )

  )


118.png



三十四、将dataguard端的密码文件传递到cascade dataguard,并进行重命名操作

[oracle@dataguard dbs]$ scp orapwdg oracle@cascade:/home/oracle/app/oracle/product/11.2.0/db_1/dbs/orapwcasdg

119.png




三十五、在cascade 端还原恢复slb数据库

【见dataguard还原恢复slb数据库相关步骤】

 

三十六、cascade 端设置数据库系统参数

SQL> alter system set db_unique_name='casdg' scope=spfile;

120.png



121.png



SQL> alter system set fal_server='dg' scope=spfile;

122.png




SQL> alter system set fal_client='casdg' scope=spfile;

123.png




SQL> alter system set standby_file_management=auto scope=spfile;

124.png




SQL> alter system set db_file_name_convert='/home/oracle/app/oracle/oradata/dg','/home/oracle/app/oracle/oradata/casdg' scope=spfile;

125.png




SQL> alter system set log_file_name_convert='/home/oracle/app/oracle/oradata/dg','/home/oracle/app/oracle/oradata/casdg' scope=spfile;

126.png




三十七、创建cascade standby logfile group并重启数据库

SQL> alter database add standby logfile group 4 '/home/oracle/app/oracle/oradata/casdg/redost01.log' size 1g;

127.png




SQL> alter database add standby logfile group 5 '/home/oracle/app/oracle/oradata/casdg/redost02.log' size 1g;

128.png




SQL> alter database add standby logfile group 6 '/home/oracle/app/oracle/oradata/casdg/redost03.log' size 1g;

129.png




SQL> alter database add standby logfile group 7 '/home/oracle/app/oracle/oradata/casdg/redost04.log' size 1g;

130.png




重启数据库到mount状态




三十八、dataguard 端修改数据库参数

SQL> alter system set log_archive_config='DG_CONFIG=(slb,dg,casdg)';

131.png




SQL> alter system set log_archive_dest_2='SERVICE=casdg LGWR ASYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=casdg';

132.png




三十九、cascade 端开启日志应用进程并进行同步校验

SQL> alter database recover managed standby database disconnect from session;

133.png




主库切换日志

SQL> alter system switch logfile;

134.png




主库日志信息如下:

135.png




Dataguard 库日志信息如下:

136.png




Cascade 库日志信息如下:

137.png



相关oracle + dataguard + cascade dataguard 架构数据库已搭建完成







本文最后更新于2017-8-31,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
版权说明

本文地址:https://www.chensj.net/?post=97
未标注转载均为本站远程,转载请注明文章出处:

联系我们

在线咨询:点击这里给我发消息

微信号:chensj923

工作日:9:00-23:00,节假日休息

扫码关注