jdbc oracle 主备,Oracle 11g RAC到单实例ASM的物理Standby搭建

一、DG环境配置

此次搭建Standby的主库为:” RedHat 6.5+11G+RAC+ASM安装与配置(三节点)”,11g单实例ASM安装使用ASMLib的方式,不在使用UDEV方式,磁盘为本机磁盘,非远程挂载的磁盘。本次搭建包含了11g单实例ASM的详细安装过程。

1、基本环境

主库:

实例名:racdb1,racdb2,racdb3        DB_NAME:racdb              DB_UNIQUE_NAME:racdb

备库:

实例名:racdg                         DB_NAME:racdb              DB_UNIQUE_NAME:racdg

IP:172.16.1.15                       HOSTNAME:asm-standby

2、配置软件安装环境

A、安装oracle RAC所需的linux软件包

[root@asm-standby~] # yum –y install binutils* compat-libstdc++* compat-libcap1 * elfutils-libelf*elfutils-libelf-devel* elfutils-libelf-devel-static* gcc* gcc-c++* glibc*glibc-common* glibc-devel* glibc-headers* ksh* libaio* libaio-devel* libgcc*libgomp* libstdc++* libstdc++-devel* make* sysstat* unixODBC * unixODBC-devel*

B、配置内核参数

执行如下脚本:#!/bin/bash

prepareSystem(){

# Set SElinux to disabled mode regardless of its initial value

sed -i -e's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

setenforce 0

# stop iptables

/etc/init.d/iptables stop

chkconfig --level 0123456iptables off

chkconfig --level 0123456ip6tables off

}

Configure1(){

cat >> /etc/sysctl.conf<

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

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

EOF

}

Configure2(){

cat >>/etc/security/limits.conf <

oracle   soft  nproc  2047

oracle   hard  nproc  16384

oracle   soft  nofile 1024

oracle   hard  nofile 65536

grid   soft  nproc  2047

grid   hard  nproc  16384

grid   soft  nofile 1024

grid   hard  nofile 65536

EOF

}

Configure3(){

cat >> /etc/pam.d/login<

session    required     pam_limits.so

EOF

}

prepareSystem

Configure1 && sysctl -p

Configure2

Configure3

[root@asm-standby~] # sh confirure.sh

C、创建相关组和用户

创建组:

[root@ asm-standby ~] # groupadd oinstall

[root@ asm-standby ~] # groupadd asmadmin

[root@ asm-standby ~] # groupadd asmdba

[root@ asm-standby ~] # groupadd asmoper

[root@ asm-standby ~] # groupadd dba

[root@ asm-standby ~] # groupadd oper

创建grid用户:

节点一ORACLE_SID=+ASM

[root@ asm-standby ~] # useradd -g oinstall -G asmadmin,asmdba,asmoper,dba grid

这里和RAC安装时的所属组不同,多了一个dba组,若不添加此组则会导致数据文件无法写入ASM磁盘组。

[root@ asm-standby ~] # passwd grid

编辑grid用户的环境配置文件(~/.bash_profile),加入如下内容

export PS1="`/bin/hostname -s`-> "

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_SID=+ASM

export ORACLE_BASE=/u/app/grid

export ORACLE_HOME=/u/app/11.2.0/grid

export ORACLE_TERM=xterm

export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'

export TNS_ADMIN=$ORACLE_HOME/network/admin

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

exportCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

umask 022

创建ORACLE用户:

节点一:ORACLE_SID=racdg

[root@ asm-standby ~] # usermodd -g oinstall-G dba,oper,asmdba,asmadmin oracle

这里和RAC安装时的所属组不同,多了一个asmadmin组,若不添加此组则会导致在使用RMAN恢复时无写入ASM的权限,不过这里也可以通过修改$ORACLE_HOME/bin/oracle的权限来解决,chgrp asmadmin$ORACLE_HOME/bin/oracle,chmod 6751 $ORACLE_HOME/bin/oracle,(root用户下修改)

[root@ asm-standby ~] # passwd oracle

编辑oracle用户的环境配置文件(~/.bash_profile),加入如下内容

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_SID=racdg#这里你没看错,就是与主库的SID不同

export ORACLE_BASE=/u/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export ORACLE_UNQNAME=racdg

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORACLE_TERM=xterm

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/jdbc/lib

exportCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'

umask 022

创建软件安装目录:

[root@ asm-standby ~] # mkdir-p /u/app/grid

[root@ asm-standby ~] # mkdir-p /u/app/11.2.0/grid

[root@ asm-standby ~] # chown-R grid:oinstall /u/app

[root@ asm-standby ~] # mkdir-p /u/app/oracle

[root@ asm-standby ~] # chownoracle:oinstall /u/app/oracle

[root@ asm-standby ~] # chmod -R 775 /u

3、配置ASM磁盘

A、添加磁盘分区:

[root@ asm-standby ~]# fdisk -l | tail -n 4  #分区,但请勿格式化,也不要使用LVM方式分区

Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1         1306  10490413+  83 Linux

/dev/sdb2            1307        7834  52436160  83  Linux

/dev/sdb3            7835        13054 41929650   83  Linux

B、安装ASMlib包

关于ASMlib包需要注意的问题,需要根据OS内核版本选择对应的ASMlib包,RedHat 5的镜像中是自带,RedHat 6就需要费些功夫了,RedHat6.4之前的版本对应的ASMlib包相对较好查找,RedHat6.4之前使用kmod-oracleasm-2.0.6.rh1-2.el6.x86_64.rpm,RedHat6.5请具体

kmod-oracleasm-2.0.6.rh1-3.el6.x86_64.rpm

oracleasmlib-2.0.4-1.el6.x86_64.rpm

oracleasm-support-2.1.8-1.el6.x86_64.rpm

[root@ asm-standby ~]#uname–r        #查看OS内核版本

2.6.32-431.el6.x86_64

[root@ asm-standby ~]#rpm -qpR kmod-oracleasm-2.0.6.rh1-3.el6_5.x86_64.rpm|grep“2.6”

kernel >= 2.6.32-431.el6

kernel < 2.6.32-432.el6     #通过rpm –qpR知道此安装包支持的内核版本范围

[root@ asm-standby ~]#rpm –ivh kmod-oracleasm-2.0.6.rh1-3.el6_5.x86_64.rpm  #按顺序安装

[root@ asm-standby ~]#rpm –ivh oracleasmlib-2.0.4-1.el6.x86_64.rpm

[root@ asm-standby ~]#rpm –ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm

C、加载ASMlib模块

[root@ asm-standby ~]#whichoracleasm

/usr/sbin/oracleasm

[root@ asm-standby ~]#oracleasm configure –i  #创建/etc/sysconfig/oracleasm配置文件

9864a986b234e148cd085d2506fbf3fb.png

[root@ asm-standby ~]#oracleasm init  #创建/dev/oracleasm挂载点

eac7df405b7daaebeff8439674e0e34d.png

ASM相关服务

e8a679027cddfdf1a1076c3be7dc967c.png

D、创建ASM磁盘

[root@ asm-standby ~]#oracleasm createdisk VOL1/dev/sdb1

[root@ asm-standby ~]#oracleasm createdisk VOL2/dev/sdb2

[root@ asm-standby~]#oracleasm createdisk VOL3 /dev/sdb3

[root@ asm-standby ~]#oracleasm scandisks

[root@ asm-standby ~]#oracleasm listdisks

[root@ asm-standby ~]#ls –lh /dev/oracleasm/disks

以上命令均是调用/usr/lib/oracleasm/目录下的脚本,有兴趣的可以认真研究一下。

二、DG软件安装

1、安装GRID软件

[root@ asm-standby ~]#export display=0.0

[root@ asm-standby ~]#xhost +

[root@ asm-standby ~]#su - grid

[grid@ asm-standby grid]#./runInstaller    #进入OUI界面,只截取重要截图

832a01ae1039d9cc2aa8b9285689497a.png

这里说说选第二项,而不选第四项的理由:因为第二项是图形化安装和配置,会配置ASM实例,以后开机启动时,会随spfile自启动ASM实例。而如果选第四项的话,则需要使用asmca图形化界面配置ASM实例,启动时,不会随机启动,在安装完软件之后,还会提示执行如下的命令:

/u/app/11.2.0/grid/perl/bin/perl–l /u/app/11.2.0/grid/perl/lib –I /u/app/11.2.0/grid/crs/install /u/app/11.2.0/grid/crs/install/roothas.pl

2ed58d725445ec414fc869788c9f0a67.png

忽略[INS-32018]错误,这是因为按单实例的方式安装的话,Oracle是不建议将ORACLE_HOME建立在ORACLE_BASE之外的。点击“Yes”,软件会正常安装

96848a046bc29973af425959b7e84662.png

bf775dc3ad5f9539506665e0db9ff6fb.png

在root用户执行脚本:

[root@ asm-standby ~]# sh /u/app/oraInventory/orainstRoot.sh

[root@ asm-standby ~]# sh /u/app/11.2.0/grid/root.sh

2、安装ORACLE软件

[root@ asm-standby ~]#export display=0.0

[root@ asm-standby ~]#xhost +

[root@ asm-standby ~]#su - grid

[oracle@ asm-standby database]#./runInstaller    #进入OUI界面,只截取重要截图

24614d0fea620a5a5926d0ac33952106.png

4128cdef3f25891ae75eca24555e187e.png

执行脚本:

[root@ asm-standby~]# sh /u/app/oracle/product/11.2.0/db_1/root.sh

3、配置ASM磁盘组

之前在安装RAC时,使用的是图像化界面,这里不再使用,而是使用命令进行创建ASM磁盘组。

[root@ asm-standby ~]#su – grid

[grid@ asm-standby ~]#sqlplus / as sysasm

SQL>create diskgroup DATA external redundancydisk ‘ORCL:VOL2’;

SQL>create diskgroup ARCH external redundancydisk ‘ORCL:VOL3’;

这里说明一下如使用ASMLib建立ASM磁盘的话,则ASM磁盘路径为ORCL:ASMDISK_NAME,若使用UDEV方式建立的话,则在使用命令新增磁盘组或新增磁盘时,其磁盘路径为UDEV建立时的绝对路径。

[grid@asm-standby~]#crs_stat –t –v

f4a5a432f688ea4dad8ae13f487e436d.png

三、DG搭建

1、主库操作

A、查看主库

[oracle@ note1 ~]#sqlplus / as sysdba

SQL> select name,log_mode,protection_mode,force_loggingfrom v$database;

NAME     LOG_MODE     PROTECTION_MODE      FORCE_LOGGING

------   ----------  ---------------       -------------

RACDB    ARCHIVELOG   MAXIMUMPERFORMANCE  NO

SQL> alter database force logging;

Database altered

B、创建RAMN备份

[oracle@ note1~]#rman target /

RMAN> run {

allocate channel c1 type disk;

allocate channel c2 type disk;

backup database format ‘/u/rman/%d_%T_%U.full’;

sql ‘alter system archive log current’;

backup currnet controlfile for standby format‘/u/rman/%d_%T_%U.ctl’;

release channel c1;

release channel c2;

}

因新建的库,没有很频繁的归档切换,这里就不对归档进行备份。

C、创建pfile文件

[oracle@ note1 ~]#sqlplus / as sysdba

SQL>create pfile=’/u/rman/pfile. ora’ fromspfile;

接下来将RMAN备份集、pfile文件和密码文件拷贝到备库

[oracle@note1~]#ls –lh /u/rman

11cb566def87bfeeb182eaa577695ed7.png

[oracle@ note1~]#scp –r /u/rman/* 172.16.1.15:/u/rman/

[oracle@ note1~]#scp –r $ORACLE_HOME/dbs/orapwracdb1 172.16.1.15:$ORACLE_HOME/dbs/orapwracdg

2、备库操作

A、修改备库参数文件

修改前的参数文件:racdb1.__db_cache_size=956301312

racdb3.__db_cache_size=939524096

racdb2.__db_cache_size=889192448

racdb1.__java_pool_size=16777216

racdb3.__java_pool_size=16777216

racdb2.__java_pool_size=16777216

racdb1.__large_pool_size=16777216

racdb2.__large_pool_size=16777216

racdb3.__large_pool_size=16777216

racdb1.__pga_aggregate_target=1006632960

racdb3.__pga_aggregate_target=1006632960

racdb2.__pga_aggregate_target=1006632960

racdb1.__sga_target=1509949440

racdb3.__sga_target=1509949440

racdb2.__sga_target=1509949440

racdb1.__shared_io_pool_size=0

racdb3.__shared_io_pool_size=0

racdb2.__shared_io_pool_size=0

racdb1.__shared_pool_size=486539264

racdb3.__shared_pool_size=503316480

racdb2.__shared_pool_size=553648128

racdb1.__streams_pool_size=0

racdb3.__streams_pool_size=0

racdb2.__streams_pool_size=0

*.audit_file_dest='/u/app/oracle/admin/racdb/adump'

*.audit_trail='db'

*.cluster_database=true

*.compatible='11.2.0.0.0'

*.control_files='+DATA/racdb/controlfile/current.256.909939065','+ARCH/racdb/controlfile/current.256.909939067'

*.db_block_size=8192

*.db_create_file_dest='+DATA'

*.db_domain=''

*.db_name='racdb'

*.db_recovery_file_dest='+ARCH'

*.db_recovery_file_dest_size=6948913152

*.diagnostic_dest='/u/app/oracle'

*.dispatchers='(protocol=TCP)'

racdb3.instance_number=3

racdb2.instance_number=2

racdb1.instance_number=1

*.log_archive_dest_1='LOCATION=+ARCH'

*.log_archive_format='%t_%s_%r.dbf'

*.memory_target=2506096640

*.open_cursors=300

*.processes=300

*.remote_listener='cluster-scan:1521'

*.remote_login_passwordfile='exclusive'

*.sessions=335

*.shared_servers=20

racdb2.thread=2

racdb3.thread=3

racdb1.thread=1

racdb3.undo_tablespace='UNDOTBS3'

racdb2.undo_tablespace='UNDOTBS2'

racdb1.undo_tablespace='UNDOTBS1'

修改后的参数文件:racdg.__db_cache_size=956301312

racdg.__java_pool_size=16777216

racdg.__large_pool_size=16777216

racdg.__pga_aggregate_target=1006632960

racdg.__sga_target=1509949440

racdg.__shared_io_pool_size=0

racdg.__shared_pool_size=553648128

racdg.__streams_pool_size=0

*.audit_file_dest='/u/app/oracle/admin/racdg/adump'

*.audit_trail='db'

*.cluster_database=false

*.compatible='11.2.0.0.0'

*.control_files='+DATA/racdg/controlfile/current.256.909939065','+ARCH/racdg/controlfile/current.256.909939067'

*.db_block_size=8192

*.db_create_file_dest='+DATA'

*.db_domain=''

*.db_name='racdb'

*.db_recovery_file_dest='+ARCH'

*.db_recovery_file_dest_size=6948913152

*.diagnostic_dest='/u/app/oracle'

*.dispatchers='(protocol=TCP)'

*.log_archive_format='%t_%s_%r.dbf'

*.memory_target=2506096640

*.open_cursors=300

*.processes=300

*.remote_login_passwordfile='exclusive'

*.sessions=335

*.shared_servers=20

*.thread=1

*.undo_tablespace='UNDOTBS1'

*.db_unique_name='racdg'

*.FAL_CLIENT='racdg'

*.FAL_SERVER='racdb1','racdb2','racdb3'

*.LOG_ARCHIVE_CONFIG='dg_config=(racdb,racdg)'

*.LOG_ARCHIVE_DEST_1='LOCATION=+ARCH/RACDG/archivelog/valid_for=(all_logfiles,all_roles) db_unique_name=racdg'

*.LOG_ARCHIVE_DEST_2='SERVICE=racdb1 LGWRASYNC valid_for=(online_logfiles,primary_role) db_unique_name=racdb'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.STANDBY_FILE_MANAGEMENT=AUTO

*.DB_FILE_NAME_CONVERT='+DATA/RACDB/','+DATA/RACDG/','+ARCH/RACDB/','+ARCH/RACDG/'

*.LOG_FILE_NAME_CONVERT='+ARCH/RACDB/','+ARCH/RACDG/'

B、RAC主库、备库TNSNAMES.ORA文件:RACDB =

(DESCRIPTION =

(ADDRESS= (PROTOCOL = TCP)(HOST = 172.16.1.10)(PORT = 1521))

(ADDRESS= (PROTOCOL = TCP)(HOST = 172.16.1.11)(PORT = 1521))

(CONNECT_DATA =

(SERVER= DEDICATED)

(SERVICE_NAME = racdb)

)

)

RACDB1 =

(DESCRIPTION =

(ADDRESS= (PROTOCOL = TCP)(HOST = 172.16.1.7)(PORT = 1521))

(CONNECT_DATA =

(SERVER= DEDICATED)

(SERVICE_NAME = racdb)

(INSTANCE_NAME = racdb1)

)

)

RACDB2 =

(DESCRIPTION =

(ADDRESS= (PROTOCOL = TCP)(HOST = 172.16.1.8)(PORT = 1521))

(CONNECT_DATA =

(SERVER= DEDICATED)

(SERVICE_NAME = racdb)

(INSTANCE_NAME = racdb2)

)

)

RACDB3 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST =172.16.1.9)(PORT = 1521))

(CONNECT_DATA =

(SERVER= DEDICATED)

(SERVICE_NAME = racdb)

(INSTANCE_NAME = racdb3)

)

)

RACDG =

(DESCRIPTION =

(ADDRESS= (PROTOCOL = TCP)(HOST = 172.16.1.15)(PORT = 1521))

(CONNECT_DATA =

(SERVER= DEDICATED)

(SERVICE_NAME = racdg)

)

)

C、创建备库

[oracle@ asm-standby ~]#mkdir –p /u/app/oracle/admin/racdg/adump

[oracle@ asm-standby ~]#sqlplus / as sysdba

SQL> startup nomount pfile=’/u/rman/pfile.ora’;

SQL> create spfile from pfile=’/u/rman/pfile.ora’;

SQL> shutdown immediate;

SQL> startup nomount;

[oracle@ asm-standby~]#rman target /

RMAN> restore standby controlfile from‘/u/rman/RACDB_20160504_05r4ogte_1_1.ctl’;

RMAN>sql ‘alter database mount standby database’;

RMAN>restore database;

81f2ae7f7f717e12dddffa379b5236a1.png

[oracle@ asm-standby~]#sqlplus / as sysdba

SQL>recover managed standby database disconnectfrom session;

#现在执行这个是为将ONLINELOG目录建立起来,因为数据字典中有LOGFILE的记录,会根据记录建立LOGFILE,若不执行的话,在ASMCMD中是看不到ONLINELOG目录的。

SQL>alter database recover managed standbydatabase cancel;

D、添加主库参数

[oracle@ note1~]#sqlplus / as sysdba

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

SQL>alter system setlog_archive_config=’dg_config=(racdg,racdb)’ scope=both;

SQL>alter system set fal_server=’racdg’scope=both;

SQL>alter system setlog_archive_dest_1=’LOCATION=+ARCH valid_for=(all_logfiles,all_roles)db_unique_name=racdb’ scope=both;

SQL>alter system set log_arhive_dest_2=’SERVICE=racdg LGWR ASYNC valid_for=(online_logfiles,primary_role)db_unique_name=racdg' scope=both;

SQL>alter system setlog_archive_dest_state_1=ENABLE scope=both;

SQL>alter system set log_archive_dest_state_2=ENABLE scope=both;

SQL>alter system archive log current;

备库查看归档是否传过来了

SQL>select sequence#,applied from v$archived_log;

F、创建Standby redolog

RAC数据库:Standby Redo Log组数=(所有节点中日志组数最大值 + 1) * RAC节点数

[oracle@ asm-standby~]#sqlplus / as sysdba

SQL>alter database add standby logfile thread 1 ('+ARCH') size 50m ;

Database altered.

SQL> /

Database altered.

SQL> /

Database altered.

SQL> /

Database altered.

SQL>c/1/2

l* alter database add standby logfile thread 2 ('+ARCH') size 50m

SQL>/

Database altered.

SQL> /

Database altered.

SQL> /

Database altered.

SQL> /

Database altered.

SQL>c/2/3

l* alter database add standby logfile thread 3 ('+ARCH') size 50m

SQL>/

Database altered.

SQL> /

Database altered.

SQL> /

Database altered.

SQL> /

Database altered.

SQL>recover managed standby database usingcurrent logfile disconnect from session;

查看归档是否同步:

42a348d8e26c4e8ae7e8c0e843ab6e93.png

总结:

Oracle 11g RAC到单实例ASM的物理Standby搭建其实与使用普通文件无很大区别,只需要将单实例ASM的安装结合起来就没事困难的。在搭建过程中,可能出问题最头痛的就是归档无法从主库中传到备库,经常遇到的error is 1034主备库密码不一致的问题,error is 12520 TNS无法连通问题,这些都较好解决。error1033的话基本上就是备库配置有问题了,主库无法访问备库造成的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值