ORACLE 12C RAC+ADG搭建

记录自己搭建过程

1.系统环境

centos:7.7

oracle:12.2.0.1

2.IP规划

 PUBLIC-IPPRIVATE-IPVIPSCAN-IP
A-RAC1192.168.0.110.10.0.1192.168.0.10192.168.0.50
A-RAC2192.168.0.210.10.0.2192.168.0.20
B-RAC1192.168.0.310.10.0.3192.168.0.30192.168.0.60
B-RAC2192.168.0.410.10.0.4192.168.0.40

 

3.系统参数设置

说明,没有分开写的部分 4台机器配置相同

1.配置主机名

hostname arac1

vim /etc/hostname

arac1

其余3台相同操作

2.配置/etc/hosts

A-RAC1

vim /etc/hosts

192.168.0.1 arac1

192.168.0.2 arac2

10.10.0.1 arac1-pri

10.10.0.2 arac2-pri

192.168.0.10 arac1-vip

192.168.0.20 arac2-vip

192.168.0.50 arac-scan

192.168.0.60 brac-scan

A-RAC2相同

B-RAC按照IP规划配置

3,同步系统时间

ntpdate HOST

有网环境可以直接用aliyun的时间服务器

内网环境可以自己搭建一个ntp时间服务器

把同步时间加入到开机启动

chmod +x /etc/rc.d/rc.local

/usr/sbin/ntpdate HOST

4,配置双网卡

由于我的是双网卡,就没有这一步。

说明一下,一个网卡用于private-ip,主要用于oracle的心跳检测。

5.配置IP

6.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

7.关闭selinux
vim /etc/selinux/config
SELINUX=disabled

临时关闭(后面需要重启,可以不用这一步)

setenfoce 0

8.配置资源限制limits.conf
vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 3145728
oracle hard stack 3145728
oracle soft memlock 3145728
oracle hard memlock 3145728

grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 3145728
grid hard stack 3145728

9.配置/dev/shm
建议值为内存的80%
vim /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=50g 0 0

mount -o remount /dev/shm


10.配置内核参数
vim /etc/sysctl.d/97-oracledatabase-sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 13107200
kernel.shmmax = 53687091200
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_prot_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

kernel.shmmax的值为/dev/shm的值50*1024*1024*1024

kernel.shmall的值为kernel.shmmax/kernel.shmmni

生效

sysctl --system

验证
sysctl -a | grep shmmax
sysctl -a | grep shmall

11.添加账户
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
groupadd asmoper
groupadd asmdba

useradd -g oinstall -G dba,asmoper,asmadmin,asmdba grid
useradd -g oinstall -G dba,oper,asmdba,asmadmin oracle

passwd grid
passwd oracle

查看

id oracle
id grid

12.创建目录
mkdir -p /home/app/grid
mkdir -p /home/app/12.2.0.1/grid
mkdir -p /home/app/oracle/product/12.2.0.1/db_1
mkdir -p /home/app/oraInventory 
chown -R oracle:oinstall /home/app
chown -R grid:oinstall /home/app/grid
chown -R grid:oinstall /home/app/12.2.0.1
chown -R oracle:oinstall /home/app/oracle
chown grid:oinstall /home/app/oraInventory
chmod -R 755 /home/app

13.配置环境变量
进入arac1的grid账户
vim .bash_profile
export ORACLE_SID=+ASM1
export ORACLE_BASE=/home/app/grid
export ORACLE_HOME=/home/app/12.2.0.1/grid
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

进入arac2的grid账户
vim .bash_profile
export ORACLE_SID=+ASM2
export ORACLE_BASE=/home/app/grid
export ORACLE_HOME=/home/app/12.2.0.1/grid
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

进入brac1的oracle账户
vim .bash_profile
export ORACLE_SID=shdb1
export ORACLE_BASE=/home/app/oracle
export ORACLE_HOME=/home/app/oracle/product/12.2.0.1/db_s
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

进入brac2的oracle账户
vim .bash_profile
export ORACLE_SID=shdb2
export ORACLE_BASE=/home/app/oracle
export ORACLE_HOME=/home/app/oracle/product/12.2.0.1/db_s
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

14.修改nsswitch.conf
vim /etc/nsswitch.conf
hosts: files dns myhostname
改为
hosts: files dns nis

15.关闭透明大页

查看
cat /sys/kernel/mm/transparent_hugepage/enabled

应该是always状态

vim /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rgb quiet transparent_hugepage=never"

生效

grub2-mkconfig -o /boot/grub2/grub.cfg

 

16.网卡名更改
vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rgb quiet transparent_hugepage=never net.ifnames=0 biosdevname=0"
grub2-mkconfig -o /boot/grub2/grub.cfg

vim /etc/udev/rules.d.70-persistent-ipoib.rules
arac1
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{TYPE}=="32", ATTR{address}=="MAC地址", NAME="eth0"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{TYPE}=="32", ATTR{address}=="MAC地址", NAME="eth1"
arac2
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{TYPE}=="32", ATTR{address}=="MAC地址", NAME="eth0"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{TYPE}=="32", ATTR{address}=="MAC地址", NAME="eth1"

brac1
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{TYPE}=="32", ATTR{address}=="MAC地址", NAME="eth0"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{TYPE}=="32", ATTR{address}=="MAC地址", NAME="eth1"
brac2
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{TYPE}=="32", ATTR{address}=="MAC地址", NAME="eth0"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{TYPE}=="32", ATTR{address}=="MAC地址", NAME="eth1"

MAC地址可以通过ifconfig查看

注意点,MAC地址和后面的网卡名一一对应!

到处可以!!!重启系统!!!让步骤15 16生效

17.禁止ntp服务
systemctl stop chronyd
systemctl disable chronyd
mv /etc/chrony.conf /etc/chrony.conf.bak

18.禁止avahi-daemon服务(有的机器没有该服务,没有不影响)
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service

19.配置network文件
vim /etc/sysconfig/network
NOZEROCONF=yes

20.添加共享磁盘

本机是通过系统挂载的共享盘,这步没有

如果是通过VMWARE做的虚拟机,可以百度一下,很方便做两个共享盘

21.配置共享磁盘

查看有多少盘可用 
fdisk -l
使用UDEV方式做ASM
利用UUID绑定盘符
查看UUID
/usr/lib/udev/scsi_id -g -u -d /dev/sdb
/usr/lib/udev/scsi_id -g -u -d /dev/sdc
 

arac
vim /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="UUID", RUN+="/bin/sh -c 'mknod /dev/asmdisk1 b $major $minor; chown grid:asmadmin /dev/asmdisk1; chmod 0660 /dev/asmdisk1'" 
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="UUID", RUN+="/bin/sh -c 'mknod /dev/asmdisk2 b $major $minor; chown grid:asmadmin /dev/asmdisk2; chmod 0660 /dev/asmdisk2'" 

brac
vim /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="UUID", RUN+="/bin/sh -c 'mknod /dev/asmdisk1 b $major $minor; chown grid:asmadmin /dev/asmdisk1; chmod 0660 /dev/asmdisk1'" 
KERNEL=="sd*", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="UUID", RUN+="/bin/sh -c 'mknod /dev/asmdisk2 b $major $minor; chown grid:asmadmin /dev/asmdisk2; chmod 0660 /dev/asmdisk2'" 

注意:上面的UUID要换成查询出来的UUID值

重启UDEV
systemctl restart systemd-udevd.service
udevadm control --reload-rules
/sbin/udevadm trigger --type=devices --action=add

查看

ll /dev/asm*

如果不成功,试试这个命令

/sbin/udevadm trigger --type=devices --action=change

查看

ll /dev/asm*

(两边都要配置 )

4,安装GRID软件

安装grid在grid账户下安装

解压grid.zip
将所有文件移动到/home/app/12.2.0.1/grid

安装前验证
./runcluvfy.sh stage -pre crsinst -n arac1,arac2 -verbose

根据验证报告解决相关问题

说明:

ntp不通过可以不用理会

dns不通过可以不用理会

/etc/relove.conf问题可以不用理会

ssh对等性问题暂时不用理会,后面安装时grid会自动配置

主要解决的问题是ksh,libaio-devel,cvuqdisk 3个RPM依赖

cvuqdisk在刚解压出来的文件夹下的cv/rpm目录里面,

ksh,libaio-devel可以在安装镜像中找到,可以在网上下载,我推荐在安装镜像盘中找,版本一定要一模一样。

安装rmp -ivh *.rpm

验证通过后安装GRID
./gridSteup.sh

弹出图型界面。

由于这是安装完成之后的总结,这里就不贴图安装的每一步截图了。网上应该能搜索到。

查看状态
crs_stat -t

[root@bjdb1 ~]# crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SM.lsnr ora....er.type ONLINE    ONLINE    arac1       
ora.DATA.dg    ora....up.type ONLINE    ONLINE    arac1       
ora.DG_LS.lsnr ora....er.type ONLINE    ONLINE    arac1       
ora....ER.lsnr ora....er.type ONLINE    ONLINE    arac1       
ora....AF.lsnr ora....er.type OFFLINE   OFFLINE               
ora....N1.lsnr ora....er.type ONLINE    ONLINE    arac1       
ora.MGMTLSNR   ora....nr.type ONLINE    ONLINE    arac1       
ora.asm        ora.asm.type   ONLINE    ONLINE    arac1       
ora....B1.lsnr application    ONLINE    ONLINE    arac1       
ora....B1.lsnr application    ONLINE    ONLINE    arac1       
ora.bjdb1.ons  application    ONLINE    ONLINE    arac1       
ora.bjdb1.vip  ora....t1.type ONLINE    ONLINE    arac1       
ora....B2.lsnr application    ONLINE    ONLINE    arac2       
ora....B2.lsnr application    ONLINE    ONLINE    arac2       
ora.bjdb2.ons  application    ONLINE    ONLINE    arac2       
ora.bjdb2.vip  ora....t1.type ONLINE    ONLINE    arac2       
ora.chad       ora.chad.type  ONLINE    ONLINE    arac1       
ora.cvu        ora.cvu.type   ONLINE    ONLINE    arac1       
ora.lritst.db  ora....se.type ONLINE    ONLINE    arac1       
ora.mgmtdb     ora....db.type ONLINE    ONLINE    arac1       
ora....network ora....rk.type ONLINE    ONLINE    arac1       
ora.ons        ora.ons.type   ONLINE    ONLINE    arac1       
ora.qosmserver ora....er.type ONLINE    ONLINE    arac1       
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    arac1  

或者
crsctl stat res -t

a两台机器安装完成后,在b两台机器按照同样步骤安装

root下
关闭集群,
crsctl stop has (2个节点都要执行)
crsctl stop cluster -all (一个节点执行就行)

5,安装oracle

进入oracle账户

解压安装文件
进入database

./runInstaller

安装步骤一步步安装(主库可以选择只安装数据库软件,数据库通过dbca创建)

b集群上只用安装数据库软件,不用dbca创建数据库

注意,这里只用选择在一台机器上安装oracle,grid会自动在另外集群机器上安装,brac同样是

arac通过dbca安装数据库

oralce账户下运行dbca命令进入图形化界面安装数据库

 

6.配置ADG

写在前面,RAC+ADG和单实例oracle数据库的ADG有一点点区别,12C版本的RAC使用了共享库存储spfile.ora文件和密码文件。主库通过grid安装的数据库时,密码文件和spfile.ora文件已经存储在ASM文件系统中,这部分可不用设置,不同的是备库spfile.ora文件和密码文件的存放。我个人做法是从主库中拷贝密码文件出来,分别放到备库两个节点上,这个11G的做法相同,网上说把密码文件放到ASM共享存储中,我试过一直,没成功,还望有大佬指教下。等下我会把我的做法写下来,望大佬指教。

spfile.ora通过在主库创建,传输到备库中的方式完成。

开始从主库拷贝数据时,先让备库一台机器建立静态监听,然后从备库拷贝主库数据,然后通过srv命名将两台备库机器加入到集群,备库操纵完成。

 

 

主库配置,在任意节点都可。

startup mount

配置归档命名格式

alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';

配置归档存储路径(注意+data/arch地址要先创建)

创建+data/arch
asmcmd
cd data
mkdir arch

alter system set log_archive_dest_1='LOCATION=+data/arch' scope=spfile sid='*';

shutdown immediate

(两个数据库都要关闭)

startup mount (在一个数据库上,另外一个数据库可以先不用打开)

开启归档

alter database archivelog;

开启强制归档

alter database force logging;

打开数据库

alter database open;

查看是否开启归档

archive log list

设置DG主备库

alter system set log_archive_config='DG_CONFIG=(arac,brac)' scope=both sid='*';

注意,arac为主库db_unique_name,brac为备库db_unique_name

主库

alter system set log_archive_dest_1='LOCATION=+data/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=arac' scope=both sid='*';

设置主库的归档传输tns,传输方式

alter system set log_archive_dest_2='SERVICE=tnsbrac LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=lritst' scope=both sid='*';

设置备库处理文件模式

alter system set standby_file_management=auto scope=both sid='*';

设置主库对备库的data文件的路径转换(如果不做主备切换,可以不用设置)

alter system set db_file_name_convert='+DATA/brac/datafile','+DATA/arac/datafile','+DATA/brac/tempfile','+DATA/arac/tempfile' scope=spfile sid='*';

设置主库对备库的log文件的路径转换(如果不做主备切换,可以不用设置)

alter system set log_file_name_convert='+DATA/brac/onlinelog','+DATA/arac/onlinelog' scope=spfile sid='*';

设置主库tns(如果不做主备切换,可以不用设置)

alter system set fal_client='tnsarac' scope=both sid='*';

设置备库tns(如果不做主备切换,可以不用设置)
alter system set fal_server='tnsbrac' scope=both sid='*';

主库必要参数设置完成!!!

主库tns配置

tnsarac =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = arac-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = arac)
    )
  )

tnsbrac =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = brac-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = brac)
    )
  )

把tnsnames.ora文件发送到arac2机器上

开始在备库一台机器上建立静态监听,使用主库发送过去的pfile.ora文件启动到nomount状态。

在主库上登录数据库

sqlplus / as sysdba

create pfile='/tmp/pfile.ora' from spfile.ora

把pfile.ora文件传输到brac1机器上。

修改后的备库可以使用的pfile.ora文件

brac2.__data_transfer_cache_size=0
brac1.__data_transfer_cache_size=0
brac2.__db_cache_size=16844324864
brac1.__db_cache_size=16844324864
brac2.__inmemory_ext_roarea=0
brac1.__inmemory_ext_roarea=0
brac2.__inmemory_ext_rwarea=0
brac1.__inmemory_ext_rwarea=0
brac2.__java_pool_size=268435456
brac1.__java_pool_size=268435456
brac2.__large_pool_size=335544320
brac1.__large_pool_size=335544320
brac1.__oracle_base='/home/app/oracle'#ORACLE_BASE set from environment
brac2.__oracle_base='/home/app/oracle'#ORACLE_BASE set from environment
brac2.__pga_aggregate_target=6845104128
brac1.__pga_aggregate_target=6845104128
brac2.__sga_target=20401094656
brac1.__sga_target=20401094656
brac2.__shared_io_pool_size=536870912
brac1.__shared_io_pool_size=536870912
brac2.__shared_pool_size=2348810240
brac1.__shared_pool_size=2348810240
brac2.__streams_pool_size=0
brac1.__streams_pool_size=0
*.aq_tm_processes=0
*.audit_file_dest='/home/app/oracle/admin/brac/adump'
*.audit_trail='db'
*.cluster_database=TRUE
*.compatible='12.2.0'
*.control_files='+DATA/BRAC/CONTROLFILE/current.286.1035718389'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_file_name_convert='+DATA/arac/datafile','+DATA/brac/datafile','+DATA/arac/tempfile','+DATA/brac/tempfile'
*.db_name='rac'
*.db_unique_name='brac'
*.diagnostic_dest='/home/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=bracXDB)'
*.fal_client='tnsarac'
*.fal_server='tnsbrac'

family:dw_helper.instance_mode='read-only'
brac1.instance_number=1
brac2.instance_number=2
*.local_listener='-oraagent-dummy-'
*.log_archive_config='DG_CONFIG=(brac,arac)'
*.log_archive_dest_1='LOCATION=+data/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=brac'
*.log_archive_dest_2='SERVICE=tnsarac LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=arac'

*.log_archive_format='%t_%s_%r.arc'
*.log_file_name_convert='+DATA/arac/onlinelog','+DATA/brac/onlinelog'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=6475m
*.processes=1280
*.remote_login_passwordfile='exclusive'
*.sga_target=19422m
*.standby_file_management='AUTO'
brac2.thread=2
brac1.thread=1
*.undo_tablespace='UNDOTBS1'
brac2.undo_tablespace='UNDOTBS2'

红字部分时需要修改主库发送过来的pfile.ora文件的,其他的名字部分可以统一替换(:%s/arac/brac/g)

创建文件夹

mkdir -p /home/app/oracle/admin/brac/adump

备库启动到nomount状态

sqlplus / as sysdba

startup nomount pfile='/PATH/PFILE.ORA'

备库配置静态监听

SID_LIST_LISTENER1 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = brac)
      (ORACLE_HOME = /home/app/oracle/product/12.2.0.1/db_s)
      (SID_NAME = brac1)
    )
  )
LISTENER1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.3)(PORT = 1521))
    )
  )

红字备份需要特别注意

启动静态监听

lsnrctl start listener1

查看监听状态

lsnrctl status listener1

主库tnsnames.ora增加连接brac1的tns(两台都增加)

tnsbrac1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.3)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = brac)
    )
  )

在主库测试连接

tnsping tnsbrac1

sqlplus sys/PASSWORD@tnsbrac1 as sysdba

在备库brac1配置tsnnames.ora

tnsarac =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = arac-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = arac)
    )
  )

tnsbrac =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = brac-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = brac)
    )
  )

tnsbrac1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.3)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = brac)
    )
  )

(可以拷贝主库tnsnames.ora)

同时测试连接性

tnsping tbsarac

sqlplus sys/PASSWORD@tnsarac as sysdba

连接性没问题之后 开始从主库备份数据

在备库brac1上操作

rman target sys/PASSWORD@tnsarac auxiliary sys/PASSWORD@tnsbrac1

连接成功之后执行命令(连接成功时brac1一定是nomount状态)

duplicate target database for standby from active database nofilenamecheck;

备注过程中出现问题一般会是文件夹没有创建的问题,根据错误对应解决即可

 

备份数据完成之后,开始将brac1节点和brac2节点加入到brac集群中

在brac1上操作

在备份数据时会在BRAC 的ASM文件系统中产生一个spiflebrac1.ora文件,删掉,根据修改好的pfile文件重建spfile.ora

asmcmd rm -rf +data/spiflebrac1.ora

登录数据库

sqlplus / as sysdba

shutdown immediate

startup mount pfile='/tmp/pfile.ora'

create spfile from pfile;

在ASM中会再次发现spiflebrac1.ora

srvctl add database -db brac -dbname rac -oraclehome /home/app/oracle/product/12.2.0.1/db_s -dbtype RAC -role PHYSICAL_STANDBY

srvctl add instance -db brac  -instance brac1   -node brac1 

srvctl add instance -db brac   -instance brac2   -node brac2 

srvctl modify database -db brac  -diskgroup DATA 

srvctl modify database -db brac  -spfile '+data/spiflebrac1.ora'

 

查看brac信息

srvctl config database -d brac

 

再brac中配置redo

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
+DATA/LRITST/ONLINELOG/group_1.407.1036078397
+DATA/LRITST/ONLINELOG/group_2.406.1036078397
+DATA/LRITST/ONLINELOG/group_3.405.1036078399
+DATA/LRITST/ONLINELOG/group_4.404.1036078399

 

备库
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 21  ('+data/brac/redo/redo11.redo') size 200M;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 22  ('+data/brac/redo/redo12.redo') size 200M;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 23  ('+data/brac/redo/redo13.redo') size 200M;
ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 24  ('+data/brac/redo/redo14.redo') size 200M;
ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 25  ('+data/brac/redo/redo15.redo') size 200M;
ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 26  ('+data/brac/redo/redo16.redo') size 200M;

如果做主备切换,在主库也要配置

ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 21  ('+data/arac/redo/stredo11.redo') size 200M;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 22  ('+data/arac/redo/stredo12.redo') size 200M;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 23  ('+data/arac/redo/stredo13.redo') size 200M;
ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 24  ('+data/arac/redo/stredo14.redo') size 200M;
ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 25  ('+data/arac/redo/stredo15.redo') size 200M;
ALTER DATABASE ADD STANDBY LOGFILE thread 2 GROUP 26  ('+data/arac/redo/stredo16.redo') size 200M;

 

 

关闭所有数据库实例

srvctl stop database -d brac

打开所有数据库实例

srvctl start database -d brac 

处理密码文件

在主库操作

查看密码文件位置

srvctl config database -d arac

asmcmd pwcopy +data/PATH/PASSWORD /tmp/pwdrac

复制密码文件到brac各个节点的$ORACLE_HOME/db下s,并更名为initpwSID

例如在brac1,密码文件命名为initpwbrac1,brac2上密码文件为initpwbrac2

 

登录BRAC1数据库

查询数据库状态

select open_Mode,DATABASE_ROLE from v$database;


SQL> select open_Mode,DATABASE_ROLE from v$database;

OPEN_MODE            DATABASE_ROLE
-------------------- ----------------
READ ONLY               PHYSICAL STANDBY

开启实时同步

alter database recover managed standby database disconnect;

再次查看状态

SQL> select open_Mode,DATABASE_ROLE from v$database;

OPEN_MODE            DATABASE_ROLE
-------------------- ----------------
READ ONLY WITH APPLY PHYSICAL STANDBY

出现READ ONLY WITH APPLY状态表示开启了实时同步状态

 

到此,RAC-ADG算是搭建完成!!!!

 

主备切换

切换前查看状态

select open_mode,database_role,protection_mode,protection_level,switchover_status from v$database;

保证数据都是同步状态

 

12C的语法很简单

在主库

alter database switchover to DB_NAME;

然后两边重启
备库开启实时应用模式

 

说些题外话,说说我走的弯路

12C 密码文件和SPFILE.ORA文件都是在ASM中,但是我配置备库的密码文件到ASM中,主库始终报密码不匹配的错误

我的做法是:

从主库拷贝密码文件到备库

将密码文件拷贝进ASM中,(其中有一个坑就是拷贝不进去,解决办法在另一篇记录中有说明)

pwcopy --dbuniquename brac /home/oracle/orapwrac +data/brac/password/pwdbrac

srvctl modify database -db brac -pwfile '+data/brac/password/pwdbrac'

srvctl update database -db brac

(我重新启动数据库也不生效 srvctl start database -db brac)

还望大佬指教,这种设置12C共享密码为什么会失败,小弟不胜感激

 

再记录点安装过程碰到的不同步的问题。

问题1,主库查询

select dest_id,status,error from v$archive_dest where dest_id='2';

error显示 TNS connect time out

我实际的问题是brac的端口没有打开,如果出现      问题应该从网络连接方面找原因

问题2,

error显示ORA-16191: Primary log shipping client not logged on standby

这个问题是密码问题,按上述步骤把复制的密码分别命名并放在$ORACLE_HOME/dbs下可解决。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值