Oracle Linux 6.7 静默认安装Oracle 11g

Oracle Linux 6.7 静默认安装Oracle 11g
一. 软件版本
操作系统:Oracle Linux 6.7
数据库软件:Oracle Database Enterprise 11.2.4.0

二·安装环境准备
2.1修改IP地址

[root@sjjh ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:50:56:A3:94:C1
TYPE=Ethernet
UUID=d2f38815-5bc0-4ce4-8bdb-bbd48992ebe6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.10.10.101
NETMASK=255.255.255.0
GATEWAY=10.10.10.254

2.2关闭防火墙和SELinux

[root@sjjh ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: nat mangle filter [  OK  ]
iptables: Flushing firewall rules: [  OK  ]
iptables: Unloading modules: [  OK  ]
[root@sjjh ~]# chkconfig iptables off
[root@sjjh ~]# chkconfig libvirtd off
[root@sjjh ~]# chkconfig |grep libvirtd
libvirtd        0:off   1:off   2:off   3:off   4:off   5:off   6:off

2.3 配置本地YUM

[root@sjjh udev]# cd /etc/yum.repos.d/
[root@sjjh yum.repos.d]# ls -lrt
total 8
-rw-r--r--. 1 root root 4949 Sep 18 07:37 public-yum-ol6.repo
[root@sjjh yum.repos.d]# mv public-yum-ol6.repo public-yum-ol6.repo.bak
[root@sjjh yum.repos.d]# mkdir /mnt/vcdrom
[root@sjjh yum.repos.d]# mount -o loop -t iso9660  /soft/Oracle_Linux_Release_6_Update_7_for_x86_64.iso /mnt/vcdrom
[root@sjjh yum.repos.d]# echo "[base]
> name=jy
> baseurl=file:///mnt/vcdrom/
> gpgcheck=0
> enabled=1" > jy.repo

[root@sjjh yum.repos.d]# cat jy.repo
[base]
name=jy
baseurl=file:///mnt/cdrom/
gpgcheck=0
enabled=1

[root@sjjh yum.repos.d]# yum clean all
Loaded plugins: aliases, changelog, kabi, presto, refresh-packagekit, security, tmprepo, ulninfo, verify, versionlock
Loading support for kernel ABI
Cleaning repos: base
Cleaning up Everything
0 delta-package files removed, by presto

2.4创建用户和组
创建用户组

[root@sjjh yum.repos.d]# groupadd -g 54321 oinstall
[root@sjjh yum.repos.d]# groupadd -g 54322 dba
[root@sjjh yum.repos.d]# groupadd -g 54323 oper
[root@sjjh yum.repos.d]# groupadd -g 54324 backupdba
[root@sjjh yum.repos.d]# groupadd -g 54325 dgdba
[root@sjjh yum.repos.d]# groupadd -g 54326 kmdba
[root@sjjh yum.repos.d]# groupadd -g 54327 asmdba
[root@sjjh yum.repos.d]# groupadd -g 54328 asmoper
[root@sjjh yum.repos.d]# groupadd -g 54329 asmadmin
[root@sjjh yum.repos.d]# groupadd -g 54330 racdba
[root@sjjh yum.repos.d]# grep 543 /etc/group
oinstall:x:54321:
dba:x:54322:oracle
oper:x:54323:
backupdba:x:54324:
dgdba:x:54325:
kmdba:x:54326:
asmdba:x:54327:
asmoper:x:54328:
asmadmin:x:54329:
racdba:x:54330:

创建用户

[root@sjjh home]# useradd -u 54321 -g oinstall -G dba,asmadmin,asmdba,asmoper,backupdba,dgdba,kmdba,racdba,oper oracle
[root@sjjh home]# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

2.5创建相关目录

[root@sjjh home]# mkdir -p /u01/tmp
[root@sjjh home]# mkdir -p /u01/app/oracle/product/11.2.0.4/db
[root@sjjh home]# mkdir -p /u01/app/oraInventory
[root@sjjh home]# mkdir -p /u01/app/oracle/oradata
[root@sjjh home]# chown -R oracle:oinstall /u01
[root@sjjh home]# chmod -R 775 /u01

2.6安装软件包

[root@sjjh /]# yum install -y binutils compat-libcap1 compat-libstdc++-33 e2fsprogs e2fsprogs-libs elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC ksh libX11 libXau libXi libXtst libxcb smartmontools unixODBC-devel net-tools compat-libstdc++-33* unzip vim* perl
Loaded plugins: aliases, changelog, kabi, presto, refresh-packagekit, security, tmprepo, ulninfo, verify, versionlock
Loading support for kernel ABI
Setting up Install Process
base                                                                                                                                                                                                                | 3.7 kB     00:00 ...
base/primary_db                                                                                                                                                                                                     | 3.0 MB     00:00 ...
Package binutils-2.20.51.0.2-5.43.el6.x86_64 already installed and latest version
Package compat-libcap1-1.10-1.x86_64 already installed and latest version
Package compat-libstdc++-33-3.2.3-69.el6.x86_64 already installed and latest version
Package e2fsprogs-1.42.8-1.0.2.el6.x86_64 already installed and latest version
Package e2fsprogs-libs-1.42.8-1.0.2.el6.x86_64 already installed and latest version
Package elfutils-libelf-0.161-3.el6.x86_64 already installed and latest version
Package elfutils-libelf-devel-0.161-3.el6.x86_64 already installed and latest version
Package gcc-4.4.7-16.el6.x86_64 already installed and latest version
Package gcc-c++-4.4.7-16.el6.x86_64 already installed and latest version
Package glibc-2.12-1.166.el6.x86_64 already installed and latest version
Package glibc-devel-2.12-1.166.el6.x86_64 already installed and latest version
Package libaio-0.3.107-10.el6.x86_64 already installed and latest version
Package libaio-devel-0.3.107-10.el6.x86_64 already installed and latest version
Package libgcc-4.4.7-16.el6.x86_64 already installed and latest version
Package libstdc++-4.4.7-16.el6.x86_64 already installed and latest version
Package libstdc++-devel-4.4.7-16.el6.x86_64 already installed and latest version
Package 1:make-3.81-20.el6.x86_64 already installed and latest version
Package sysstat-9.0.4-27.el6.x86_64 already installed and latest version
Package unixODBC-2.2.14-14.el6.x86_64 already installed and latest version
Package ksh-20120801-28.el6.x86_64 already installed and latest version
Package libX11-1.6.0-6.el6.x86_64 already installed and latest version
Package libXau-1.0.6-4.el6.x86_64 already installed and latest version
Package libXi-1.7.2-2.2.el6.x86_64 already installed and latest version
Package libXtst-1.2.2-2.1.el6.x86_64 already installed and latest version
Package libxcb-1.9.1-3.el6.x86_64 already installed and latest version
Package 1:smartmontools-5.43-1.el6.x86_64 already installed and latest version
Package unixODBC-devel-2.2.14-14.el6.x86_64 already installed and latest version
Package net-tools-1.60-110.el6_2.x86_64 already installed and latest version
Package compat-libstdc++-33-3.2.3-69.el6.x86_64 already installed and latest version
Package unzip-6.0-2.el6_6.x86_64 already installed and latest version
Package 2:vim-minimal-7.4.629-5.el6.x86_64 already installed and latest version
Package 2:vim-filesystem-7.4.629-5.el6.x86_64 already installed and latest version
Package 2:vim-common-7.4.629-5.el6.x86_64 already installed and latest version
Package 2:vim-X11-7.4.629-5.el6.x86_64 already installed and latest version
Package 2:vim-enhanced-7.4.629-5.el6.x86_64 already installed and latest version
Package 4:perl-5.10.1-141.el6.x86_64 already installed and latest version
Nothing to do

检查已经安装的软件包

[root@sjjh /]# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils compat-libcap1 compat-libstdc++-33 e2fsprogs e2fsprogs-libs elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC ksh libX11 libXau libXi libXtst libxcb smartmontools unixODBC-devel net-tools unzip vim* perl
binutils-2.20.51.0.2-5.43.el6 (x86_64)
compat-libcap1-1.10-1 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64)
e2fsprogs-1.42.8-1.0.2.el6 (x86_64)
e2fsprogs-libs-1.42.8-1.0.2.el6 (x86_64)
elfutils-libelf-0.161-3.el6 (x86_64)
elfutils-libelf-devel-0.161-3.el6 (x86_64)
gcc-4.4.7-16.el6 (x86_64)
gcc-c++-4.4.7-16.el6 (x86_64)
glibc-2.12-1.166.el6 (x86_64)
glibc-2.12-1.166.el6 (i686)
glibc-devel-2.12-1.166.el6 (x86_64)
libaio-0.3.107-10.el6 (x86_64)
libaio-devel-0.3.107-10.el6 (x86_64)
libgcc-4.4.7-16.el6 (x86_64)
libgcc-4.4.7-16.el6 (i686)
libstdc++-4.4.7-16.el6 (x86_64)
libstdc++-devel-4.4.7-16.el6 (x86_64)
make-3.81-20.el6 (x86_64)
sysstat-9.0.4-27.el6 (x86_64)
unixODBC-2.2.14-14.el6 (x86_64)
ksh-20120801-28.el6 (x86_64)
libX11-1.6.0-6.el6 (x86_64)
libXau-1.0.6-4.el6 (x86_64)
libXi-1.7.2-2.2.el6 (x86_64)
libXtst-1.2.2-2.1.el6 (x86_64)
libxcb-1.9.1-3.el6 (x86_64)
smartmontools-5.43-1.el6 (x86_64)
unixODBC-devel-2.2.14-14.el6 (x86_64)
net-tools-1.60-110.el6_2 (x86_64)
unzip-6.0-2.el6_6 (x86_64)
package vim* is not installed
perl-5.10.1-141.el6 (x86_64)

2.7编辑hosts文件

[root@sjjh /]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.10.10.101 sjjh

2.8 修改系统内核参数

[root@sjjh /]# cat >> /etc/sysctl.conf < kernel.shmall = 4294967296
> kernel.sem = 250 32000 100 128
> kernel.shmmni = 4096
> kernel.shmmax = 429496729600
> net.ipv4.ip_local_port_range = 9000 65500
> net.core.rmem_default = 1048576
> net.core.rmem_max = 4194304
> net.core.wmem_default = 262144
> net.core.wmem_max = 1048576
> fs.file-max = 6815744
> fs.aio-max-nr = 1048576
> vm.swappiness = 0
> vm.dirty_background_ratio = 3
> vm.dirty_ratio = 20
> vm.dirty_expire_centisecs = 500
> vm.dirty_writeback_centisecs = 100
> vm.min_free_kbytes=524288
> net.ipv4.tcp_sack = 0
> net.ipv4.tcp_timestamps = 0
> net.ipv4.conf.default.rp_filter = 0
> net.ipv4.tcp_wmem = 262144
> net.ipv4.tcp_rmem = 4194304
> net.ipv4.ipfrag_high_thresh = 16777216
> net.ipv4.ipfrag_low_thresh = 15728640
> net.ipv4.ipfrag_time=60
> EOF

[root@sjjh /]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmall = 4294967296
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
kernel.shmall = 4294967296
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmmax = 429496729600
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.file-max = 6815744
fs.aio-max-nr = 1048576
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 20
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.min_free_kbytes = 524288
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.tcp_wmem = 262144
net.ipv4.tcp_rmem = 4194304
net.ipv4.ipfrag_high_thresh = 16777216
net.ipv4.ipfrag_low_thresh = 15728640
net.ipv4.ipfrag_time = 60

2.9 配置LIMITS限制参数

[root@sjjh /]# cat >> /etc/security/limits.conf < oracle          soft    nproc           16384
> oracle          hard    nproc           16384
> oracle          soft    nofile          65536
> oracle          hard    nofile          65536
> oracle          soft    memlock         26843545
> oracle          hard    memlock         26843545
> oracle          soft    stack           10240
> oracle          hard    stack           32768
> EOF

2.10配置PAM

[root@sjjh /]# echo "session    required     /lib64/security/pam_limits.so">>/etc/pam.d/login

2.11 配置系统环境变量

[root@sjjh /]# cat >> /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
> EOF

2.11 配置oracle用户环境变量

[oracle@sjjh ~]$ vi .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH


TEMP=/u01/tmp
TMPDIR=/u01/tmp
export TEMP TMPDIR
export LD_ASSUME_KERNEL=3.8.13
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db
export ORACLE_SID=sjjh
export ORACLE_UNQNAME=sjjh
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
umask=022
export PATH=$PATH:$ORACLE_HOME/rdbms/lib

[oracle@sjjh ~]$ source .bash_profile
[oracle@sjjh ~]$ echo $ORACLE_SID
sjjh

三·安装数据库软件
3.1解压安装包

[root@sjjh soft]# unzip p13390677_112040_Linux-x86-64_1of7.zip
[root@sjjh soft]# unzip p13390677_112040_Linux-x86-64_2of7.zip

3.2编写响应文件

[oracle@sjjh ~]$ vi dbinstall.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=sjjh
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=sjjh
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=false
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.config.starterdb.characterSet=
oracle.install.db.config.starterdb.memoryOption=false
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=SKIP_UPDATES
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=

3.3执行安装

[oracle@sjjh database]$ ./runInstaller -silent  -force -noconfig  -ignorePrereq -responseFile /home/oracle/dbinstall.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 1731157 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 16383 MB    Passed
Preparing to launch Oracle Universal Installer from /u01/tmp/OraInstall2022-09-18_10-03-38AM. Please wait ...[oracle@sjjh database]$ You can find the log of this install session at:
 /u01/app/oraInventory/logs/installActions2022-09-18_10-03-38AM.log


[oracle@sjjh database]$ ./runInstaller -silent  -force -noconfig  -ignorePrereq -responseFile /home/oracle/dbinstall.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 1731157 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 16383 MB    Passed
Preparing to launch Oracle Universal Installer from /u01/tmp/OraInstall2022-09-18_10-03-38AM. Please wait ...[oracle@sjjh database]$ You can find the log of this install session at:
 /u01/app/oraInventory/logs/installActions2022-09-18_10-03-38AM.log
The installation of Oracle Database 11g was successful.
Please check '/u01/app/oraInventory/logs/silentInstall2022-09-18_10-03-38AM.log' for more details.

As a root user, execute the following script(s):
        1. /u01/app/oraInventory/orainstRoot.sh
        2. /u01/app/oracle/product/11.2.0.4/db/root.sh


Successfully Setup Software.

3.4执行root.sh脚本

[root@sjjh /]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@sjjh /]# /u01/app/oracle/product/11.2.0.4/db/root.sh
Check /u01/app/oracle/product/11.2.0.4/db/install/root_sjjh_2022-09-18_10-11-40.log for the output of root script

四·创建数据库

4.1 配置监听

[oracle@sjjh ~]$ vi netca.rsp
[GENERAL]
RESPONSEFILE_VERSION="11.2"
CREATE_TYPE="CUSTOM"
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}

[oracle@sjjh ~]$ netca -silent -responsefile /home/oracle/netca.rsp

Parsing command line arguments:
    Parameter "silent" = true
    Parameter "responsefile" = /home/oracle/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
    Running Listener Control:
      /u01/app/oracle/product/11.2.0.4/db/bin/lsnrctl start LISTENER
    Listener Control complete.
    Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
[oracle@sjjh ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 18-SEP-2022 10:14:34

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                18-SEP-2022 10:14:19
Uptime                    0 days 0 hr. 0 min. 15 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0.4/db/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/sjjh/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sjjh)(PORT=1521)))
The listener supports no services
The command completed successfully

4.2创建配置数据库的响应文件

[oracle@sjjh ~]$ vi dbca.rsp
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "sjjh"
SID = "sjjh"
DB_UNIQUE_NAME = "sjjhp"
TEMPLATENAME = "General_Purpose.dbc"
characterSet = "ZHS16GBK"
nationalCharacterSet = "AL16UTF16"
sysPassword="xxzx7817600"
systemPassword="xxzx7817600"
storageType = "FS"
datafileDestination=/u01/app/oracle/oradata
recoveryAreaDestination=/u01/app/oracle/flash_recovery_area
totalMemory=2048
sampleSchema=TRUE

4.3 创建数据库

[oracle@sjjh ~]$ dbca -silent  -createDatabase -responseFile /home/oracle/dbca.rsp
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
57% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/sjjh/sjjh.log" for further details.

[oracle@sjjh ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 18-SEP-2022 10:52:25

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                18-SEP-2022 10:14:19
Uptime                    0 days 0 hr. 38 min. 6 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0.4/db/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/sjjh/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sjjh)(PORT=1521)))
Services Summary...
Service "sjjh" has 1 instance(s).
  Instance "sjjh", status READY, has 1 handler(s) for this service...
Service "sjjhXDB" has 1 instance(s).
  Instance "sjjh", status READY, has 1 handler(s) for this service...
The command completed successfully

[oracle@sjjh ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sun Sep 18 10:53:07 2022

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show parameter unique

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string      sjjh
SQL>

MySQL 5.7配置SSL连接

MySQL 5.7配置SSL连接

如果想服务能够部署自动支持安全连接,使用mysql_ssl_rsa_setup工具来创建缺省SSL与RSA文件

[root@cs2 bin]# ./mysql_ssl_rsa_setup --datadir=/mysqldata/mysql
Generating a 2048 bit RSA private key
......................................................................+++
..............................................................+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
.............+++
..............+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
.....................................+++
................................................+++
writing new private key to 'client-key.pem'
-----





启动mysql

[root@cs2 ~]# service mysqld start
Starting MySQL.. SUCCESS!

测试远程登录

-bash-4.2$ mysql -h 10.11.13.19 -P 3306 -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.22 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT DISTINCT CONCAT('User: [', user, '''@''', host, '];') AS USER_HOST FROM user;
+------------------------------------+
| USER_HOST                          |
+------------------------------------+
| User: [root'@'%];                  |
| User: [mysql.session'@'localhost]; |
| User: [mysql.sys'@'localhost];     |
+------------------------------------+
3 rows in set (0.05 sec)

通过ssl登录mysql服务器

[mysql@localhost ~]$ mysql -h 10.11.13.19 -P 3306 -u root -pabcd123 --ssl-cert=client-cert.pem --ssl-key=client-key.pem
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.26-log Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using  EditLine wrapper

Connection id:          7
Current database:
Current user:           root@10.11.13.19
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.7.26-log Source distribution
Protocol version:       10
Connection:             10.11.13.19 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    gb2312
Conn.  characterset:    gb2312
TCP port:               3306
Uptime:                 14 min 11 sec

Threads: 2  Questions: 13  Slow queries: 0  Opens: 108  Flush tables: 1  Open tables: 101  Queries per second avg: 0.015
--------------

mysql> show variables like 'have_ssl';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_ssl      | DISABLED |
+---------------+----------+
1 row in set (0.01 sec)

mysql> show variables like 'require_secure_transport';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| require_secure_transport | OFF   |
+--------------------------+-------+
1 row in set (0.00 sec)

mysql> show variables like '%ssl%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | DISABLED        |
| have_ssl      | DISABLED        |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+

从上面的查询结果可以看到SSL: Not in use,have_ssl和have_openssl为DISABLED,这说明实际上是没有启用ssl。

这是因为通过执行mysql_ssl_rsa_setup命令产生的pem文件的权限为root用户而不是mysql用户造成的,将这些pem文件的权限修改为mysql用户与组 权限不要太大,只用户权限为rw,组与其它用户需要r权限

[root@localhost mysql]# ls -lrt
30172
-rw-r-----. 1 mysql mysql 104857600 321 16:25 ib_logfile1
-rw-r-----. 1 mysql mysql 104857600 321 16:25 ib_logfile2
drwxr-x---. 2 mysql mysql        48 321 16:25 undo
-rw-r-----. 1 mysql mysql        56 321 16:25 auto.cnf
drwxr-x---. 2 mysql mysql      8192 321 16:25 performance_schema
drwxr-x---. 2 mysql mysql      4096 321 16:25 mysql
drwxr-x---. 2 mysql mysql      8192 321 16:25 sys
-rw-r-----. 1 mysql mysql       177 321 16:25 binlog.000001
-rw-r--r--. 1 mysql mysql      1679 321 16:26 ca-key.pem
-rw-r--r--. 1 mysql mysql      1107 321 16:26 ca.pem
-rw-r--r--. 1 root  root       1679 321 16:26 server-key.pem
-rw-r--r--. 1 root  root       1107 321 16:26 server-cert.pem
-rw-r--r--. 1 root  root      1675 321 16:26 client-key.pem
-rw-r--r--. 1 root  root      1107 321 16:26 client-cert.pem
-rw-r--r--. 1 root  root      1675 321 16:26 private_key.pem
-rw-r--r--. 1 root  root       451 321 16:26 public_key.pem
-rw-r-----. 1 mysql mysql    114688 524 17:00 ts2.ibd
-rw-r-----. 1 mysql mysql     98304 524 17:01 ts1.ibd
drwxr-x---. 2 mysql mysql        32 524 17:11 test
-rw-r-----. 1 mysql mysql      9352 621 10:46 binlog.000002
-rw-r-----. 1 mysql mysql       177 621 10:46 binlog.000003
-rw-r-----. 1 mysql mysql       154 9 9 19:55 binlog.000004
-rw-r-----. 1 mysql mysql       177 9 9 20:23 binlog.000005
-rw-r-----. 1 mysql mysql       177 9 9 20:38 binlog.000006
-rw-r-----. 1 mysql mysql       177 9 9 20:44 binlog.000007
-rw-r-----. 1 mysql mysql       122 9 9 20:44 ib_buffer_pool
-rw-r-----. 1 mysql mysql       248 9 9 20:44 binlog.index
-rw-r-----. 1 mysql mysql       154 9 9 20:44 binlog.000008
-rw-r-----. 1 mysql mysql         6 9 9 20:44 mysqld.pid
-rw-r-----. 1 mysql mysql  12582912 9 9 20:44 ibtmp1
-rw-r-----. 1 mysql mysql  10485760 9 9 20:44 ibdata1
-rw-r-----. 1 mysql mysql 104857600 9 9 20:44 ib_logfile0
-rw-r-----. 1 mysql mysql    107011 9 9 20:54 mysql.err

[root@localhost mysql]# chown -R mysql:mysql *.pem
[root@localhost mysql]# ls -lrt
30172
-rw-r-----. 1 mysql mysql 104857600 321 16:25 ib_logfile1
-rw-r-----. 1 mysql mysql 104857600 321 16:25 ib_logfile2
drwxr-x---. 2 mysql mysql        48 321 16:25 undo
-rw-r-----. 1 mysql mysql        56 321 16:25 auto.cnf
drwxr-x---. 2 mysql mysql      8192 321 16:25 performance_schema
drwxr-x---. 2 mysql mysql      4096 321 16:25 mysql
drwxr-x---. 2 mysql mysql      8192 321 16:25 sys
-rw-r-----. 1 mysql mysql       177 321 16:25 binlog.000001
-rw-r--r--. 1 mysql mysql      1679 321 16:26 ca-key.pem
-rw-r--r--. 1 mysql mysql      1107 321 16:26 ca.pem
-rw-r--r--. 1 mysql mysql      1679 321 16:26 server-key.pem
-rw-r--r--. 1 mysql mysql      1107 321 16:26 server-cert.pem
-rw-r--r--. 1 mysql mysql      1675 321 16:26 client-key.pem
-rw-r--r--. 1 mysql mysql      1107 321 16:26 client-cert.pem
-rw-r--r--. 1 mysql mysql      1675 321 16:26 private_key.pem
-rw-r--r--. 1 mysql mysql       451 321 16:26 public_key.pem
-rw-r-----. 1 mysql mysql    114688 524 17:00 ts2.ibd
-rw-r-----. 1 mysql mysql     98304 524 17:01 ts1.ibd
drwxr-x---. 2 mysql mysql        32 524 17:11 test
-rw-r-----. 1 mysql mysql      9352 621 10:46 binlog.000002
-rw-r-----. 1 mysql mysql       177 621 10:46 binlog.000003
-rw-r-----. 1 mysql mysql       154 9 9 19:55 binlog.000004
-rw-r-----. 1 mysql mysql       177 9 9 20:23 binlog.000005
-rw-r-----. 1 mysql mysql       177 9 9 20:38 binlog.000006
-rw-r-----. 1 mysql mysql       177 9 9 20:44 binlog.000007
-rw-r-----. 1 mysql mysql       122 9 9 20:44 ib_buffer_pool
-rw-r-----. 1 mysql mysql       248 9 9 20:44 binlog.index
-rw-r-----. 1 mysql mysql       154 9 9 20:44 binlog.000008
-rw-r-----. 1 mysql mysql         6 9 9 20:44 mysqld.pid
-rw-r-----. 1 mysql mysql  12582912 9 9 20:44 ibtmp1
-rw-r-----. 1 mysql mysql  10485760 9 9 20:44 ibdata1
-rw-r-----. 1 mysql mysql 104857600 9 9 20:44 ib_logfile0
-rw-r-----. 1 mysql mysql    107011 9 9 20:54 mysql.err

pem文件权限太多可能会出现如下错误

[mysql@localhost mysql]$ mysql -h 10.11.13.19 -P 3306 -u root -pabcd123 --ssl-cert=/mysqldata/mysql/client-cert.pem --ssl-key=/mysqldata/mysql/client-key.pem
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2026 (HY000): SSL connection error: SSL_CTX_set_default_verify_paths failed


[root@localhost mysql]# service mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!

[mysql@localhost mysql]$ mysql -h 10.11.13.19 -P 3306 -u root -pabcd123 --ssl-cert=/mysqldata/mysql/client-cert.pem --ssl-key=/mysqldata/mysql/client-key.pem
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.26-log Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using  EditLine wrapper

Connection id:          4
Current database:
Current user:           root@10.11.13.19
SSL:                    Cipher in use is DHE-RSA-AES256-SHA
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.7.26-log Source distribution
Protocol version:       10
Connection:             10.11.13.19 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    gb2312
Conn.  characterset:    gb2312
TCP port:               3306
Uptime:                 59 sec

Threads: 2  Questions: 11  Slow queries: 0  Opens: 108  Flush tables: 1  Open tables: 101  Queries per second avg: 0.186
--------------

创建用户限制用户必须用ssl登录

mysql> create user 'jy'@'%' identified by "123";
Query OK, 0 rows affected (0.02 sec)

mysql> grant all on *.* to 'jy'@'%' require ssl;
Query OK, 0 rows affected, 1 warning (0.02 sec)

虽然要求用ssl但是还是可以使用密码登录,是因为mysql.user表中的ssl_type=ANY

[mysql@localhost ~]$  mysql -h 10.11.13.19 -P 3306 -u jy -p123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.26-log Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using  EditLine wrapper

Connection id:          7
Current database:
Current user:           jy@10.11.13.19
SSL:                    Cipher in use is DHE-RSA-AES256-SHA
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.7.26-log Source distribution
Protocol version:       10
Connection:             10.11.13.19 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    gb2312
Conn.  characterset:    gb2312
TCP port:               3306
Uptime:                 50 min 18 sec

Threads: 2  Questions: 69  Slow queries: 0  Opens: 139  Flush tables: 1  Open tables: 132  Queries per second avg: 0.022
--------------

mysql> select * from user where user='jy'\G
ERROR 1046 (3D000): No database selected
mysql> select * from mysql.user where user='root'\G
*************************** 1. row ***************************
                  Host: %
                  User: jy
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y
         Shutdown_priv: Y
          Process_priv: Y
             File_priv: Y
            Grant_priv: Y
       References_priv: Y
            Index_priv: Y
            Alter_priv: Y
          Show_db_priv: Y
            Super_priv: Y
 Create_tmp_table_priv: Y
      Lock_tables_priv: Y
          Execute_priv: Y
       Repl_slave_priv: Y
      Repl_client_priv: Y
      Create_view_priv: Y
        Show_view_priv: Y
   Create_routine_priv: Y
    Alter_routine_priv: Y
      Create_user_priv: Y
            Event_priv: Y
          Trigger_priv: Y
Create_tablespace_priv: Y
              ssl_type: ANY
            ssl_cipher:
           x509_issuer:
          x509_subject:
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: *1AA476D99C1600C9D984E248FBF2FDE3A0BB256E
      password_expired: N
 password_last_changed: 2022-03-21 16:27:48
     password_lifetime: NULL
        account_locked: N
1 row in set (0.00 sec)

修改用户jy的ssl类型为x509

mysql> alter user 'jy'@'%' require x509
    -> ;
Query OK, 0 rows affected (0.01 sec)

在不指定ssl密钥时就不能登录了

[mysql@localhost ~]$ mysql -h 10.11.13.19 -P 3306 -u jy -p123
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'jy'@'10.11.13.19' (using password: YES)
[mysql@localhost ~]$  mysql -h 10.11.13.19 -P 3306 -u jy -p123 --ssl
mysql: [Warning] Using a password on the command line interface can be insecure.
WARNING: --ssl is deprecated and will be removed in a future version. Use --ssl-mode instead.
ERROR 1045 (28000): Access denied for user 'jy'@'10.11.13.19' (using password: YES)

指定ssl密钥进行登录

[mysql@localhost ~]$  mysql -h 10.11.13.19 -P 3306 -u jy -p123 --ssl-cert=/mysqldata/mysql/client-cert.pem --ssl-key=/mysqldata/mysql/client-key.pem
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.26-log Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit

如果指定ssl密钥进行登录时不指定密钥完整路径时会出现如下错误

[mysql@localhost ~]$  mysql -h 10.11.13.19 -P 3306 -u jy -p123 --ssl-cert=client-cert.pem --ssl-key=client-key.pem
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [ERROR] SSL error: Unable to get certificate from 'client-cert.pem'
ERROR 2026 (HY000): SSL connection error: Unable to get certificate

Oracle Linux 7.1 静默安装Oracle 18c RAC

Oracle Linux 7.1 静默安装Oracle 18c RAC
一·系统环境规则

1.1网络架构

                         节点1                        节点2
主机名                   18c1                         18c2               
Private IP            88.88.87.1                 88.88.87.2             
Public IP             10.10.13.171             10.10.13.172
VIP                   10.10.13.173             10.10.13.174
SCANIP                10.10.13.175/176/177   
SCAN_NAME             scan-18c

1.2 存储

共享磁盘                ASM磁盘                ASM磁盘组                 大小         冗余
/dev/sdb                /dev/asmdisk1          OCR                       50G          外部
/dev/sdc                /dev/asmdisk2          DATA                      50G          外部

1.3 软件版本
操作系统:Oracle Linux 7.1
集群软件: Oracle Clusterware 18.0.0
数据库软件:Oracle Database Enterprise 18.0.0

二·安装环境准备
2.1修改主机名和IP地址
修改主机名

[root@localhost ~]# hostnamectl set-hostname 18c1
[root@localhost ~]# hostnamectl set-hostname 18c2

2.2修改Private IP地址

[root@18c1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=ens33
UUID=934ab90a-5e97-496c-bd50-65cddd0a838f
DEVICE=ens33
ONBOOT=yes
IPADDR=88.88.87.1
NETMASK=255.255.255.0



[root@18c2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=ens33
UUID=934ab90a-5e97-496c-bd50-65cddd0a838f
DEVICE=ens33
ONBOOT=yes
IPADDR=88.88.87.2
NETMASK=255.255.255.0

2.3 修改Public IP地址

[root@18c1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=ens32
UUID=79732427-976c-4d80-b58d-dd81d62ebd17
DEVICE=ens32
ONBOOT=yes
IPADDR=10.10.13.171
NETMASK=255.255.255.0
GATEWAY=10.10.13.254

[root@18c2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=ens32
UUID=79732427-976c-4d80-b58d-dd81d62ebd17
DEVICE=ens32
ONBOOT=yes
IPADDR=10.10.13.172
NETMASK=255.255.255.0
GATEWAY=10.10.13.254

2.4 关闭时间同步服务

[root@18c1 ~]# systemctl stop chronyd
[root@18c1 ~]# systemctl disable chronyd
rm '/etc/systemd/system/multi-user.target.wants/chronyd.service'
[root@18c1 ~]# mv /etc/chrony.conf /etc/chrony.conf.bak


[root@18c2 ~]# systemctl stop chronyd
[root@18c2 ~]# systemctl disable chronyd
rm '/etc/systemd/system/multi-user.target.wants/chronyd.service'
[root@18c2 ~]# mv /etc/chrony.conf /etc/chrony.conf.bak

2.5关闭防火墙和SELinux

[root@18c1 ~]# setenforce 0
[root@18c1 ~]# sed -i "/^SELINUX=/s#enforcing#disabled#" /etc/selinux/config
[root@18c1 ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 


[root@18c2 ~]# setenforce 0
[root@18c2 ~]# sed -i "/^SELINUX=/s#enforcing#disabled#" /etc/selinux/config
[root@18c2 ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

2.6 配置本地YUM

[root@18c1 ~]# ls -lrt /etc/yum.repos.d/
total 4
-rw-r--r--. 1 root root 2323 Feb 16  2015 public-yum-ol7.repo
[root@18c1 ~]# mv /etc/yum.repos.d/public-yum-ol7.repo /etc/yum.repos.d/public-yum-ol7.repo.bak
[root@18c1 ~]# cat >> /etc/yum.repos.d/jy.repo < [base]
> name=jy
> baseurl=file:///run/media/root/OL-7.1\ Server.x86_64/  
> enabled=1
> gpgcheck=0
> multilib_policy=all
> EOF
[root@18c1 ~]# cat /etc/yum.repos.d/jy.repo
[base]
name=jy
baseurl=file:///run/media/root/OL-7.1\ Server.x86_64/  
enabled=1
gpgcheck=0
multilib_policy=all

[root@18c1 ~]# yum clean all
Loaded plugins: langpacks
Cleaning repos: base
Cleaning up everything
[root@18c1 ~]# yum makecache
Loaded plugins: langpacks
base                                                                                                                                                                                                                | 3.6 kB  00:00:00     
(1/4): base/group_gz                                                                                                                                                                                                | 134 kB  00:00:00     
(2/4): base/filelists_db                                                                                                                                                                                            | 3.4 MB  00:00:00     
(3/4): base/primary_db                                                                                                                                                                                              | 4.0 MB  00:00:00     
(4/4): base/other_db                                                                                                                                                                                                | 1.3 MB  00:00:00     
Metadata Cache Created



[root@18c2 ~]# ls -lrt /etc/yum.repos.d/
total 4
-rw-r--r--. 1 root root 2323 Feb 16  2015 public-yum-ol7.repo
[root@18c2 ~]# mv /etc/yum.repos.d/public-yum-ol7.repo /etc/yum.repos.d/public-yum-ol7.repo.bak
[root@18c2 ~]# cat >> /etc/yum.repos.d/jy.repo < [base]
> name=jy
> baseurl=file:///run/media/root/OL-7.1\ Server.x86_64/  
> enabled=1
> gpgcheck=0
> multilib_policy=all
> EOF
[root@18c2 ~]# cat /etc/yum.repos.d/jy.repo
[base]
name=jy
baseurl=file:///run/media/root/OL-7.1\ Server.x86_64/  
enabled=1
gpgcheck=0
multilib_policy=all



[root@18c2 ~]# yum makecache
Loaded plugins: langpacks
base                                                                                                                                                                                                                | 3.6 kB  00:00:00     
(1/4): base/group_gz                                                                                                                                                                                                | 134 kB  00:00:00     
(2/4): base/filelists_db                                                                                                                                                                                            | 3.4 MB  00:00:00     
(3/4): base/primary_db                                                                                                                                                                                              | 4.0 MB  00:00:00     
(4/4): base/other_db                                                                                                                                                                                                | 1.3 MB  00:00:00     
Metadata Cache Created

2.7 禁用NTP

[root@18c1 ~]# systemctl stop ntpd.service
[root@18c1 ~]# systemctl disable ntpd.service

[root@18c2 ~]# systemctl stop ntpd.service
[root@18c2 ~]# systemctl disable ntpd.service

2.8创建用户和组
创建用户组

[root@18c1 ~]# groupadd -g 54321 oinstall
[root@18c1 ~]# groupadd -g 54322 dba
[root@18c1 ~]# groupadd -g 54323 oper
[root@18c1 ~]# groupadd -g 54324 backupdba
[root@18c1 ~]# groupadd -g 54325 dgdba
[root@18c1 ~]# groupadd -g 54326 kmdba
[root@18c1 ~]# groupadd -g 54327 asmdba
[root@18c1 ~]# groupadd -g 54328 asmoper
[root@18c1 ~]# groupadd -g 54329 asmadmin
[root@18c1 ~]# groupadd -g 54330 racdba

[root@18c1 ~]# grep 543 /etc/group
oinstall:x:54321:
dba:x:54322:
oper:x:54323:
backupdba:x:54324:
dgdba:x:54325:
kmdba:x:54326:
asmdba:x:54327:
asmoper:x:54328:
asmadmin:x:54329:
racdba:x:54330:

[root@18c2 ~]# groupadd -g 54321 oinstall
[root@18c2 ~]# groupadd -g 54322 dba
[root@18c2 ~]# groupadd -g 54323 oper
[root@18c2 ~]# groupadd -g 54324 backupdba
[root@18c2 ~]# groupadd -g 54325 dgdba
[root@18c2 ~]# groupadd -g 54326 kmdba
[root@18c2 ~]# groupadd -g 54327 asmdba
[root@18c2 ~]# groupadd -g 54328 asmoper
[root@18c2 ~]# groupadd -g 54329 asmadmin
[root@18c2 ~]# groupadd -g 54330 racdba
[root@18c2 ~]# grep 543 /etc/group
oinstall:x:54321:
dba:x:54322:
oper:x:54323:
backupdba:x:54324:
dgdba:x:54325:
kmdba:x:54326:
asmdba:x:54327:
asmoper:x:54328:
asmadmin:x:54329:
racdba:x:54330:

创建用户

[root@18c1 ~]# useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,racdba grid
[root@18c1 ~]# useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
[root@18c1 ~]# passwd grid
Changing password for user grid.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@18c1 ~]# passwd oracle
Changing password for user oracle.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.


[root@18c2 ~]# useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,racdba grid
[root@18c2 ~]# useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
[root@18c2 ~]# passwd grid
Changing password for user grid.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@18c2 ~]# passwd oracle
Changing password for user oracle.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

2.9创建相关目录

[root@18c1 ~]# mkdir -p /u01/tmp
[root@18c1 ~]# mkdir -p /u01/app/18.3/grid
[root@18c1 ~]# mkdir -p /u01/app/grid
[root@18c1 ~]# mkdir -p /u01/app/oracle/product/18.3/db
[root@18c1 ~]# mkdir -p /u01/app/oraInventory
[root@18c1 ~]# chown -R grid:oinstall /u01
[root@18c1 ~]# chown oracle:oinstall /u01/app/oracle
[root@18c1 ~]# chmod -R 775 /u01/

[root@18c2 ~]# mkdir -p /u01/tmp
[root@18c2 ~]# mkdir -p /u01/app/18.3/grid
[root@18c2 ~]# mkdir -p /u01/app/grid
[root@18c2 ~]# mkdir -p /u01/app/oracle/product/18.3/db
[root@18c2 ~]# mkdir -p /u01/app/oraInventory
[root@18c2 ~]# chown -R grid:oinstall /u01
[root@18c2 ~]# chown oracle:oinstall /u01/app/oracle
[root@18c2 ~]# chmod -R 775 /u01/

2.10 安装软件包

[root@18c1 ~]# yum install -y bc binutils compat-libcap1 compat-libstdc++ elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python  python-configshell  python-rtslib python-six targetcli smartmontools sysstat gcc c-c++ gcc-info gcc-locale gcc48 gcc48-info gcc48-locale gcc48-c++
Loaded plugins: langpacks
Package bc-1.06.95-13.el7.x86_64 already installed and latest version
Package binutils-2.23.52.0.1-30.el7.x86_64 already installed and latest version
Package compat-libcap1-1.10-7.el7.x86_64 already installed and latest version
No package compat-libstdc++ available.
Package elfutils-libelf-0.160-1.el7.x86_64 already installed and latest version
Package glibc-2.17-78.0.1.el7.x86_64 already installed and latest version
Package glibc-devel-2.17-78.0.1.el7.x86_64 already installed and latest version
Package libaio-0.3.109-12.el7.x86_64 already installed and latest version
Package libX11-1.6.0-2.1.el7.x86_64 already installed and latest version
Package libXau-1.0.8-2.1.el7.x86_64 already installed and latest version
Package libXi-1.7.2-2.1.el7.x86_64 already installed and latest version
Package libXtst-1.2.2-2.1.el7.x86_64 already installed and latest version
Package libXrender-0.9.8-2.1.el7.x86_64 already installed and latest version
Package libgcc-4.8.3-9.el7.x86_64 already installed and latest version
Package libstdc++-4.8.3-9.el7.x86_64 already installed and latest version
Package libstdc++-devel-4.8.3-9.el7.x86_64 already installed and latest version
Package libxcb-1.9-5.el7.x86_64 already installed and latest version
Package 1:make-3.82-21.el7.x86_64 already installed and latest version
Package net-tools-2.0-0.17.20131004git.el7.x86_64 already installed and latest version
Package 1:nfs-utils-1.3.0-0.8.el7.x86_64 already installed and latest version
Package python-2.7.5-16.el7.x86_64 already installed and latest version
Package 1:python-configshell-1.1.fb14-1.el7.noarch already installed and latest version
Package python-rtslib-2.1.fb50-1.el7.noarch already installed and latest version
Package python-six-1.3.0-4.el7.noarch already installed and latest version
Package targetcli-2.1.fb37-3.el7.noarch already installed and latest version
Package 1:smartmontools-6.2-4.el7.x86_64 already installed and latest version
Package sysstat-10.1.5-7.el7.x86_64 already installed and latest version
Package gcc-4.8.3-9.el7.x86_64 already installed and latest version
No package c-c++ available.
No package gcc-info available.
No package gcc-locale available.
No package gcc48 available.
No package gcc48-info available.
No package gcc48-locale available.
No package gcc48-c++ available.
Resolving Dependencies
--> Running transaction check
---> Package elfutils-libelf-devel.x86_64 0:0.160-1.el7 will be installed
---> Package fontconfig-devel.x86_64 0:2.10.95-7.el7 will be installed
--> Processing Dependency: freetype-devel >= 2.1.4 for package: fontconfig-devel-2.10.95-7.el7.x86_64
--> Processing Dependency: pkgconfig(freetype2) for package: fontconfig-devel-2.10.95-7.el7.x86_64
--> Processing Dependency: pkgconfig(expat) for package: fontconfig-devel-2.10.95-7.el7.x86_64
---> Package ksh.x86_64 0:20120801-22.el7 will be installed
---> Package libXrender-devel.x86_64 0:0.9.8-2.1.el7 will be installed
--> Processing Dependency: pkgconfig(renderproto) >= 0.9 for package: libXrender-devel-0.9.8-2.1.el7.x86_64
--> Processing Dependency: pkgconfig(xproto) for package: libXrender-devel-0.9.8-2.1.el7.x86_64
--> Processing Dependency: pkgconfig(x11) for package: libXrender-devel-0.9.8-2.1.el7.x86_64
---> Package libaio-devel.x86_64 0:0.3.109-12.el7 will be installed
--> Running transaction check
---> Package expat-devel.x86_64 0:2.1.0-8.el7 will be installed
---> Package freetype-devel.x86_64 0:2.4.11-9.el7 will be installed
--> Processing Dependency: zlib-devel for package: freetype-devel-2.4.11-9.el7.x86_64
---> Package libX11-devel.x86_64 0:1.6.0-2.1.el7 will be installed
--> Processing Dependency: pkgconfig(xcb) >= 1.1.92 for package: libX11-devel-1.6.0-2.1.el7.x86_64
--> Processing Dependency: pkgconfig(xcb) for package: libX11-devel-1.6.0-2.1.el7.x86_64
---> Package xorg-x11-proto-devel.noarch 0:7.7-8.el7.1 will be installed
--> Running transaction check
---> Package libxcb-devel.x86_64 0:1.9-5.el7 will be installed
--> Processing Dependency: pkgconfig(xau) >= 0.99.2 for package: libxcb-devel-1.9-5.el7.x86_64
---> Package zlib-devel.x86_64 0:1.2.7-13.el7 will be installed
--> Running transaction check
---> Package libXau-devel.x86_64 0:1.0.8-2.1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================================================================================================================================
 Package                                                           Arch                                               Version                                                       Repository                                        Size
===========================================================================================================================================================================================================================================
Installing:
 elfutils-libelf-devel                                             x86_64                                             0.160-1.el7                                                   base                                              34 k
 fontconfig-devel                                                  x86_64                                             2.10.95-7.el7                                                 base                                             127 k
 ksh                                                               x86_64                                             20120801-22.el7                                               base                                             879 k
 libXrender-devel                                                  x86_64                                             0.9.8-2.1.el7                                                 base                                              16 k
 libaio-devel                                                      x86_64                                             0.3.109-12.el7                                                base                                              12 k
Installing for dependencies:
 expat-devel                                                       x86_64                                             2.1.0-8.el7                                                   base                                              56 k
 freetype-devel                                                    x86_64                                             2.4.11-9.el7                                                  base                                             354 k
 libX11-devel                                                      x86_64                                             1.6.0-2.1.el7                                                 base                                             978 k
 libXau-devel                                                      x86_64                                             1.0.8-2.1.el7                                                 base                                              14 k
 libxcb-devel                                                      x86_64                                             1.9-5.el7                                                     base                                             1.0 M
 xorg-x11-proto-devel                                              noarch                                             7.7-8.el7.1                                                   base                                             280 k
 zlib-devel                                                        x86_64                                             1.2.7-13.el7                                                  base                                              49 k

Transaction Summary
===========================================================================================================================================================================================================================================
Install  5 Packages (+7 Dependent packages)

Total download size: 3.7 M
Installed size: 12 M
Downloading packages:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                       15 MB/s | 3.7 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : xorg-x11-proto-devel-7.7-8.el7.1.noarch                                                                                                                                                                                1/12 
  Installing : libXau-devel-1.0.8-2.1.el7.x86_64                                                                                                                                                                                      2/12 
  Installing : libxcb-devel-1.9-5.el7.x86_64                                                                                                                                                                                          3/12 
  Installing : libX11-devel-1.6.0-2.1.el7.x86_64                                                                                                                                                                                      4/12 
  Installing : expat-devel-2.1.0-8.el7.x86_64                                                                                                                                                                                         5/12 
  Installing : zlib-devel-1.2.7-13.el7.x86_64                                                                                                                                                                                         6/12 
  Installing : freetype-devel-2.4.11-9.el7.x86_64                                                                                                                                                                                     7/12 
  Installing : fontconfig-devel-2.10.95-7.el7.x86_64                                                                                                                                                                                  8/12 
  Installing : libXrender-devel-0.9.8-2.1.el7.x86_64                                                                                                                                                                                  9/12 
  Installing : libaio-devel-0.3.109-12.el7.x86_64                                                                                                                                                                                    10/12 
  Installing : elfutils-libelf-devel-0.160-1.el7.x86_64                                                                                                                                                                              11/12 
  Installing : ksh-20120801-22.el7.x86_64                                                                                                                                                                                            12/12 
  Verifying  : ksh-20120801-22.el7.x86_64                                                                                                                                                                                             1/12 
  Verifying  : libXrender-devel-0.9.8-2.1.el7.x86_64                                                                                                                                                                                  2/12 
  Verifying  : zlib-devel-1.2.7-13.el7.x86_64                                                                                                                                                                                         3/12 
  Verifying  : libxcb-devel-1.9-5.el7.x86_64                                                                                                                                                                                          4/12 
  Verifying  : libX11-devel-1.6.0-2.1.el7.x86_64                                                                                                                                                                                      5/12 
  Verifying  : expat-devel-2.1.0-8.el7.x86_64                                                                                                                                                                                         6/12 
  Verifying  : xorg-x11-proto-devel-7.7-8.el7.1.noarch                                                                                                                                                                                7/12 
  Verifying  : elfutils-libelf-devel-0.160-1.el7.x86_64                                                                                                                                                                               8/12 
  Verifying  : libaio-devel-0.3.109-12.el7.x86_64                                                                                                                                                                                     9/12 
  Verifying  : fontconfig-devel-2.10.95-7.el7.x86_64                                                                                                                                                                                 10/12 
  Verifying  : freetype-devel-2.4.11-9.el7.x86_64                                                                                                                                                                                    11/12 
  Verifying  : libXau-devel-1.0.8-2.1.el7.x86_64                                                                                                                                                                                     12/12 

Installed:
  elfutils-libelf-devel.x86_64 0:0.160-1.el7          fontconfig-devel.x86_64 0:2.10.95-7.el7          ksh.x86_64 0:20120801-22.el7          libXrender-devel.x86_64 0:0.9.8-2.1.el7          libaio-devel.x86_64 0:0.3.109-12.el7         

Dependency Installed:
  expat-devel.x86_64 0:2.1.0-8.el7    freetype-devel.x86_64 0:2.4.11-9.el7    libX11-devel.x86_64 0:1.6.0-2.1.el7    libXau-devel.x86_64 0:1.0.8-2.1.el7    libxcb-devel.x86_64 0:1.9-5.el7    xorg-x11-proto-devel.noarch 0:7.7-8.el7.1   
  zlib-devel.x86_64 0:1.2.7-13.el7   

Complete!

安装compat-libstdc++-33-3.2.3-72.el7.i686.rpm,因为名字带有版本信息

[root@18c1 ~]# yum install  compat-libstdc++-33-3.2.3-72.el7.i686
Loaded plugins: langpacks
Resolving Dependencies
--> Running transaction check
---> Package compat-libstdc++-33.i686 0:3.2.3-72.el7 will be installed
--> Processing Dependency: libm.so.6 for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Processing Dependency: libgcc_s.so.1(GLIBC_2.0) for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Processing Dependency: libgcc_s.so.1(GCC_3.3) for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Processing Dependency: libgcc_s.so.1(GCC_3.0) for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Processing Dependency: libgcc_s.so.1 for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Processing Dependency: libc.so.6(GLIBC_2.3) for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Running transaction check
---> Package glibc.i686 0:2.17-78.0.1.el7 will be installed
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.17-78.0.1.el7.i686
--> Processing Dependency: libfreebl3.so for package: glibc-2.17-78.0.1.el7.i686
---> Package libgcc.i686 0:4.8.3-9.el7 will be installed
--> Running transaction check
---> Package nss-softokn-freebl.i686 0:3.16.2.3-9.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================================================================================================================================
 Package                                                          Arch                                              Version                                                        Repository                                         Size
===========================================================================================================================================================================================================================================
Installing:
 compat-libstdc++-33                                              i686                                              3.2.3-72.el7                                                   base                                              196 k
Installing for dependencies:
 glibc                                                            i686                                              2.17-78.0.1.el7                                                base                                              4.2 M
 libgcc                                                           i686                                              4.8.3-9.el7                                                    base                                               99 k
 nss-softokn-freebl                                               i686                                              3.16.2.3-9.el7                                                 base                                              186 k

Transaction Summary
===========================================================================================================================================================================================================================================
Install  1 Package (+3 Dependent packages)

Total download size: 4.6 M
Installed size: 16 M
Is this ok [y/d/N]: y
Downloading packages:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                       35 MB/s | 4.6 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libgcc-4.8.3-9.el7.i686                                                                                                                                                                                                 1/4 
  Installing : nss-softokn-freebl-3.16.2.3-9.el7.i686                                                                                                                                                                                  2/4 
  Installing : glibc-2.17-78.0.1.el7.i686                                                                                                                                                                                              3/4 
  Installing : compat-libstdc++-33-3.2.3-72.el7.i686                                                                                                                                                                                   4/4 
  Verifying  : compat-libstdc++-33-3.2.3-72.el7.i686                                                                                                                                                                                   1/4 
  Verifying  : glibc-2.17-78.0.1.el7.i686                                                                                                                                                                                              2/4 
  Verifying  : libgcc-4.8.3-9.el7.i686                                                                                                                                                                                                 3/4 
  Verifying  : nss-softokn-freebl-3.16.2.3-9.el7.i686                                                                                                                                                                                  4/4 

Installed:
  compat-libstdc++-33.i686 0:3.2.3-72.el7                                                                                                                                                                                                  

Dependency Installed:
  glibc.i686 0:2.17-78.0.1.el7                                               libgcc.i686 0:4.8.3-9.el7                                               nss-softokn-freebl.i686 0:3.16.2.3-9.el7                                              

Complete!


[root@18c2 ~]# yum install -y bc binutils compat-libcap1 compat-libstdc++ elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python  python-configshell  python-rtslib python-six targetcli smartmontools sysstat gcc c-c++ gcc-info gcc-locale gcc48 gcc48-info gcc48-locale gcc48-c++
Loaded plugins: langpacks
Package bc-1.06.95-13.el7.x86_64 already installed and latest version
Package binutils-2.23.52.0.1-30.el7.x86_64 already installed and latest version
Package compat-libcap1-1.10-7.el7.x86_64 already installed and latest version
No package compat-libstdc++ available.
Package elfutils-libelf-0.160-1.el7.x86_64 already installed and latest version
Package glibc-2.17-78.0.1.el7.x86_64 already installed and latest version
Package glibc-devel-2.17-78.0.1.el7.x86_64 already installed and latest version
Package libaio-0.3.109-12.el7.x86_64 already installed and latest version
Package libX11-1.6.0-2.1.el7.x86_64 already installed and latest version
Package libXau-1.0.8-2.1.el7.x86_64 already installed and latest version
Package libXi-1.7.2-2.1.el7.x86_64 already installed and latest version
Package libXtst-1.2.2-2.1.el7.x86_64 already installed and latest version
Package libXrender-0.9.8-2.1.el7.x86_64 already installed and latest version
Package libgcc-4.8.3-9.el7.x86_64 already installed and latest version
Package libstdc++-4.8.3-9.el7.x86_64 already installed and latest version
Package libstdc++-devel-4.8.3-9.el7.x86_64 already installed and latest version
Package libxcb-1.9-5.el7.x86_64 already installed and latest version
Package 1:make-3.82-21.el7.x86_64 already installed and latest version
Package net-tools-2.0-0.17.20131004git.el7.x86_64 already installed and latest version
Package 1:nfs-utils-1.3.0-0.8.el7.x86_64 already installed and latest version
Package python-2.7.5-16.el7.x86_64 already installed and latest version
Package 1:python-configshell-1.1.fb14-1.el7.noarch already installed and latest version
Package python-rtslib-2.1.fb50-1.el7.noarch already installed and latest version
Package python-six-1.3.0-4.el7.noarch already installed and latest version
Package targetcli-2.1.fb37-3.el7.noarch already installed and latest version
Package 1:smartmontools-6.2-4.el7.x86_64 already installed and latest version
Package sysstat-10.1.5-7.el7.x86_64 already installed and latest version
Package gcc-4.8.3-9.el7.x86_64 already installed and latest version
No package c-c++ available.
No package gcc-info available.
No package gcc-locale available.
No package gcc48 available.
No package gcc48-info available.
No package gcc48-locale available.
No package gcc48-c++ available.
Resolving Dependencies
--> Running transaction check
---> Package elfutils-libelf-devel.x86_64 0:0.160-1.el7 will be installed
---> Package fontconfig-devel.x86_64 0:2.10.95-7.el7 will be installed
--> Processing Dependency: freetype-devel >= 2.1.4 for package: fontconfig-devel-2.10.95-7.el7.x86_64
--> Processing Dependency: pkgconfig(freetype2) for package: fontconfig-devel-2.10.95-7.el7.x86_64
--> Processing Dependency: pkgconfig(expat) for package: fontconfig-devel-2.10.95-7.el7.x86_64
---> Package ksh.x86_64 0:20120801-22.el7 will be installed
---> Package libXrender-devel.x86_64 0:0.9.8-2.1.el7 will be installed
--> Processing Dependency: pkgconfig(renderproto) >= 0.9 for package: libXrender-devel-0.9.8-2.1.el7.x86_64
--> Processing Dependency: pkgconfig(xproto) for package: libXrender-devel-0.9.8-2.1.el7.x86_64
--> Processing Dependency: pkgconfig(x11) for package: libXrender-devel-0.9.8-2.1.el7.x86_64
---> Package libaio-devel.x86_64 0:0.3.109-12.el7 will be installed
--> Running transaction check
---> Package expat-devel.x86_64 0:2.1.0-8.el7 will be installed
---> Package freetype-devel.x86_64 0:2.4.11-9.el7 will be installed
--> Processing Dependency: zlib-devel for package: freetype-devel-2.4.11-9.el7.x86_64
---> Package libX11-devel.x86_64 0:1.6.0-2.1.el7 will be installed
--> Processing Dependency: pkgconfig(xcb) >= 1.1.92 for package: libX11-devel-1.6.0-2.1.el7.x86_64
--> Processing Dependency: pkgconfig(xcb) for package: libX11-devel-1.6.0-2.1.el7.x86_64
---> Package xorg-x11-proto-devel.noarch 0:7.7-8.el7.1 will be installed
--> Running transaction check
---> Package libxcb-devel.x86_64 0:1.9-5.el7 will be installed
--> Processing Dependency: pkgconfig(xau) >= 0.99.2 for package: libxcb-devel-1.9-5.el7.x86_64
---> Package zlib-devel.x86_64 0:1.2.7-13.el7 will be installed
--> Running transaction check
---> Package libXau-devel.x86_64 0:1.0.8-2.1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================================================================================================================================
 Package                                                           Arch                                               Version                                                       Repository                                        Size
===========================================================================================================================================================================================================================================
Installing:
 elfutils-libelf-devel                                             x86_64                                             0.160-1.el7                                                   base                                              34 k
 fontconfig-devel                                                  x86_64                                             2.10.95-7.el7                                                 base                                             127 k
 ksh                                                               x86_64                                             20120801-22.el7                                               base                                             879 k
 libXrender-devel                                                  x86_64                                             0.9.8-2.1.el7                                                 base                                              16 k
 libaio-devel                                                      x86_64                                             0.3.109-12.el7                                                base                                              12 k
Installing for dependencies:
 expat-devel                                                       x86_64                                             2.1.0-8.el7                                                   base                                              56 k
 freetype-devel                                                    x86_64                                             2.4.11-9.el7                                                  base                                             354 k
 libX11-devel                                                      x86_64                                             1.6.0-2.1.el7                                                 base                                             978 k
 libXau-devel                                                      x86_64                                             1.0.8-2.1.el7                                                 base                                              14 k
 libxcb-devel                                                      x86_64                                             1.9-5.el7                                                     base                                             1.0 M
 xorg-x11-proto-devel                                              noarch                                             7.7-8.el7.1                                                   base                                             280 k
 zlib-devel                                                        x86_64                                             1.2.7-13.el7                                                  base                                              49 k

Transaction Summary
===========================================================================================================================================================================================================================================
Install  5 Packages (+7 Dependent packages)

Total download size: 3.7 M
Installed size: 12 M
Downloading packages:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                      7.4 MB/s | 3.7 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : xorg-x11-proto-devel-7.7-8.el7.1.noarch                                                                                                                                                                                1/12 
  Installing : libXau-devel-1.0.8-2.1.el7.x86_64                                                                                                                                                                                      2/12 
  Installing : libxcb-devel-1.9-5.el7.x86_64                                                                                                                                                                                          3/12 
  Installing : libX11-devel-1.6.0-2.1.el7.x86_64                                                                                                                                                                                      4/12 
  Installing : expat-devel-2.1.0-8.el7.x86_64                                                                                                                                                                                         5/12 
  Installing : zlib-devel-1.2.7-13.el7.x86_64                                                                                                                                                                                         6/12 
  Installing : freetype-devel-2.4.11-9.el7.x86_64                                                                                                                                                                                     7/12 
  Installing : fontconfig-devel-2.10.95-7.el7.x86_64                                                                                                                                                                                  8/12 
  Installing : libXrender-devel-0.9.8-2.1.el7.x86_64                                                                                                                                                                                  9/12 
  Installing : libaio-devel-0.3.109-12.el7.x86_64                                                                                                                                                                                    10/12 
  Installing : elfutils-libelf-devel-0.160-1.el7.x86_64                                                                                                                                                                              11/12 
  Installing : ksh-20120801-22.el7.x86_64                                                                                                                                                                                            12/12 
  Verifying  : ksh-20120801-22.el7.x86_64                                                                                                                                                                                             1/12 
  Verifying  : libXrender-devel-0.9.8-2.1.el7.x86_64                                                                                                                                                                                  2/12 
  Verifying  : zlib-devel-1.2.7-13.el7.x86_64                                                                                                                                                                                         3/12 
  Verifying  : libxcb-devel-1.9-5.el7.x86_64                                                                                                                                                                                          4/12 
  Verifying  : libX11-devel-1.6.0-2.1.el7.x86_64                                                                                                                                                                                      5/12 
  Verifying  : expat-devel-2.1.0-8.el7.x86_64                                                                                                                                                                                         6/12 
  Verifying  : xorg-x11-proto-devel-7.7-8.el7.1.noarch                                                                                                                                                                                7/12 
  Verifying  : elfutils-libelf-devel-0.160-1.el7.x86_64                                                                                                                                                                               8/12 
  Verifying  : libaio-devel-0.3.109-12.el7.x86_64                                                                                                                                                                                     9/12 
  Verifying  : fontconfig-devel-2.10.95-7.el7.x86_64                                                                                                                                                                                 10/12 
  Verifying  : freetype-devel-2.4.11-9.el7.x86_64                                                                                                                                                                                    11/12 
  Verifying  : libXau-devel-1.0.8-2.1.el7.x86_64                                                                                                                                                                                     12/12 

Installed:
  elfutils-libelf-devel.x86_64 0:0.160-1.el7          fontconfig-devel.x86_64 0:2.10.95-7.el7          ksh.x86_64 0:20120801-22.el7          libXrender-devel.x86_64 0:0.9.8-2.1.el7          libaio-devel.x86_64 0:0.3.109-12.el7         

Dependency Installed:
  expat-devel.x86_64 0:2.1.0-8.el7    freetype-devel.x86_64 0:2.4.11-9.el7    libX11-devel.x86_64 0:1.6.0-2.1.el7    libXau-devel.x86_64 0:1.0.8-2.1.el7    libxcb-devel.x86_64 0:1.9-5.el7    xorg-x11-proto-devel.noarch 0:7.7-8.el7.1   
  zlib-devel.x86_64 0:1.2.7-13.el7   

Complete!

安装compat-libstdc++-33-3.2.3-72.el7.i686.rpm,因为名字带有版本信息

[root@18c2 ~]# yum install  compat-libstdc++-33-3.2.3-72.el7.i686
Loaded plugins: langpacks
Resolving Dependencies
--> Running transaction check
---> Package compat-libstdc++-33.i686 0:3.2.3-72.el7 will be installed
--> Processing Dependency: libm.so.6 for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Processing Dependency: libgcc_s.so.1(GLIBC_2.0) for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Processing Dependency: libgcc_s.so.1(GCC_3.3) for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Processing Dependency: libgcc_s.so.1(GCC_3.0) for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Processing Dependency: libgcc_s.so.1 for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Processing Dependency: libc.so.6(GLIBC_2.3) for package: compat-libstdc++-33-3.2.3-72.el7.i686
--> Running transaction check
---> Package glibc.i686 0:2.17-78.0.1.el7 will be installed
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.17-78.0.1.el7.i686
--> Processing Dependency: libfreebl3.so for package: glibc-2.17-78.0.1.el7.i686
---> Package libgcc.i686 0:4.8.3-9.el7 will be installed
--> Running transaction check
---> Package nss-softokn-freebl.i686 0:3.16.2.3-9.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================================================================================================================================
 Package                                                          Arch                                              Version                                                        Repository                                         Size
===========================================================================================================================================================================================================================================
Installing:
 compat-libstdc++-33                                              i686                                              3.2.3-72.el7                                                   base                                              196 k
Installing for dependencies:
 glibc                                                            i686                                              2.17-78.0.1.el7                                                base                                              4.2 M
 libgcc                                                           i686                                              4.8.3-9.el7                                                    base                                               99 k
 nss-softokn-freebl                                               i686                                              3.16.2.3-9.el7                                                 base                                              186 k

Transaction Summary
===========================================================================================================================================================================================================================================
Install  1 Package (+3 Dependent packages)

Total download size: 4.6 M
Installed size: 16 M
Is this ok [y/d/N]: y
Downloading packages:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                       73 MB/s | 4.6 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libgcc-4.8.3-9.el7.i686                                                                                                                                                                                                 1/4 
  Installing : nss-softokn-freebl-3.16.2.3-9.el7.i686                                                                                                                                                                                  2/4 
  Installing : glibc-2.17-78.0.1.el7.i686                                                                                                                                                                                              3/4 
  Installing : compat-libstdc++-33-3.2.3-72.el7.i686                                                                                                                                                                                   4/4 
  Verifying  : compat-libstdc++-33-3.2.3-72.el7.i686                                                                                                                                                                                   1/4 
  Verifying  : glibc-2.17-78.0.1.el7.i686                                                                                                                                                                                              2/4 
  Verifying  : libgcc-4.8.3-9.el7.i686                                                                                                                                                                                                 3/4 
  Verifying  : nss-softokn-freebl-3.16.2.3-9.el7.i686                                                                                                                                                                                  4/4 

Installed:
  compat-libstdc++-33.i686 0:3.2.3-72.el7                                                                                                                                                                                                  

Dependency Installed:
  glibc.i686 0:2.17-78.0.1.el7                                               libgcc.i686 0:4.8.3-9.el7                                               nss-softokn-freebl.i686 0:3.16.2.3-9.el7                                              

Complete!

检查已经安装的软件包

[root@18c1 ~]# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc binutils compat-libcap1 compat-libstdc++ elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python  python-configshell  python-rtslib python-six targetcli smartmontools sysstat
bc-1.06.95-13.el7 (x86_64)
binutils-2.23.52.0.1-30.el7 (x86_64)
compat-libcap1-1.10-7.el7 (x86_64)
package compat-libstdc++ is not installed
elfutils-libelf-0.160-1.el7 (x86_64)
elfutils-libelf-devel-0.160-1.el7 (x86_64)
fontconfig-devel-2.10.95-7.el7 (x86_64)
glibc-2.17-78.0.1.el7 (x86_64)
glibc-2.17-78.0.1.el7 (i686)
glibc-devel-2.17-78.0.1.el7 (x86_64)
ksh-20120801-22.el7 (x86_64)
libaio-0.3.109-12.el7 (x86_64)
libaio-devel-0.3.109-12.el7 (x86_64)
libX11-1.6.0-2.1.el7 (x86_64)
libXau-1.0.8-2.1.el7 (x86_64)
libXi-1.7.2-2.1.el7 (x86_64)
libXtst-1.2.2-2.1.el7 (x86_64)
libXrender-0.9.8-2.1.el7 (x86_64)
libXrender-devel-0.9.8-2.1.el7 (x86_64)
libgcc-4.8.3-9.el7 (x86_64)
libgcc-4.8.3-9.el7 (i686)
libstdc++-4.8.3-9.el7 (x86_64)
libstdc++-devel-4.8.3-9.el7 (x86_64)
libxcb-1.9-5.el7 (x86_64)
make-3.82-21.el7 (x86_64)
net-tools-2.0-0.17.20131004git.el7 (x86_64)
nfs-utils-1.3.0-0.8.el7 (x86_64)
python-2.7.5-16.el7 (x86_64)
python-configshell-1.1.fb14-1.el7 (noarch)
python-rtslib-2.1.fb50-1.el7 (noarch)
python-six-1.3.0-4.el7 (noarch)
targetcli-2.1.fb37-3.el7 (noarch)
smartmontools-6.2-4.el7 (x86_64)
sysstat-10.1.5-7.el7 (x86_64)


[root@18c2 ~]# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc binutils compat-libcap1 compat-libstdc++ elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python  python-configshell  python-rtslib python-six targetcli smartmontools sysstat
bc-1.06.95-13.el7 (x86_64)
binutils-2.23.52.0.1-30.el7 (x86_64)
compat-libcap1-1.10-7.el7 (x86_64)
package compat-libstdc++ is not installed
elfutils-libelf-0.160-1.el7 (x86_64)
elfutils-libelf-devel-0.160-1.el7 (x86_64)
fontconfig-devel-2.10.95-7.el7 (x86_64)
glibc-2.17-78.0.1.el7 (x86_64)
glibc-2.17-78.0.1.el7 (i686)
glibc-devel-2.17-78.0.1.el7 (x86_64)
ksh-20120801-22.el7 (x86_64)
libaio-0.3.109-12.el7 (x86_64)
libaio-devel-0.3.109-12.el7 (x86_64)
libX11-1.6.0-2.1.el7 (x86_64)
libXau-1.0.8-2.1.el7 (x86_64)
libXi-1.7.2-2.1.el7 (x86_64)
libXtst-1.2.2-2.1.el7 (x86_64)
libXrender-0.9.8-2.1.el7 (x86_64)
libXrender-devel-0.9.8-2.1.el7 (x86_64)
libgcc-4.8.3-9.el7 (x86_64)
libgcc-4.8.3-9.el7 (i686)
libstdc++-4.8.3-9.el7 (x86_64)
libstdc++-devel-4.8.3-9.el7 (x86_64)
libxcb-1.9-5.el7 (x86_64)
make-3.82-21.el7 (x86_64)
net-tools-2.0-0.17.20131004git.el7 (x86_64)
nfs-utils-1.3.0-0.8.el7 (x86_64)
python-2.7.5-16.el7 (x86_64)
python-configshell-1.1.fb14-1.el7 (noarch)
python-rtslib-2.1.fb50-1.el7 (noarch)
python-six-1.3.0-4.el7 (noarch)
targetcli-2.1.fb37-3.el7 (noarch)
smartmontools-6.2-4.el7 (x86_64)
sysstat-10.1.5-7.el7 (x86_64)

2.11编辑hosts文件

[root@18c1 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#public-ip
10.10.13.171      18c1
10.10.13.172      18c2

#public-vip
10.10.13.173      18c1-vip
10.10.13.174      18c2-vip

#prive-ip
88.88.87.1        18c1-priv
88.88.87.2        18c2-priv

#scan-ip
10.10.13.175      scan-18c
10.10.13.176      scan-18c
10.10.13.177      scan-18c

[root@18c2 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#public-ip
10.10.13.171      18c1
10.10.13.172      18c2

#public-vip
10.10.13.173      18c1-vip
10.10.13.174      18c2-vip

#prive-ip
88.88.87.1        18c1-priv
88.88.87.2        18c2-priv

#scan-ip
10.10.13.175      scan-18c
10.10.13.176      scan-18c
10.10.13.177      scan-18c

2.12 修改系统内核参数

[root@18c1 ~]# cat >> /etc/sysctl.conf < kernel.shmall = 4294967296
> kernel.sem = 510 65280 510 128
> kernel.shmmni = 4096
> kernel.shmmax = 429496729500
> net.ipv4.ip_local_port_range = 9000 65500
> net.core.rmem_default = 1048576
> net.core.rmem_max = 4194304
> net.core.wmem_default = 262144
> net.core.wmem_max = 1048576
> fs.file-max = 6815744
> fs.aio-max-nr = 1048576
> vm.swappiness = 0
> vm.dirty_background_ratio = 3
> vm.dirty_ratio = 80
> vm.dirty_expire_centisecs = 500
> vm.dirty_writeback_centisecs = 100
> net.ipv4.tcp_sack = 0
> net.ipv4.tcp_timestamps = 0
> net.ipv4.conf.default.rp_filter = 0
> net.ipv4.tcp_wmem = 262144
> net.ipv4.tcp_rmem = 4194304
> EOF


[root@18c2 ~]# cat >> /etc/sysctl.conf < kernel.shmall = 4294967296
> kernel.sem = 510 65280 510 128
> kernel.shmmni = 4096
> kernel.shmmax = 429496729500
> net.ipv4.ip_local_port_range = 9000 65500
> net.core.rmem_default = 1048576
> net.core.rmem_max = 4194304
> net.core.wmem_default = 262144
> net.core.wmem_max = 1048576
> fs.file-max = 6815744
> fs.aio-max-nr = 1048576
> vm.swappiness = 0
> vm.dirty_background_ratio = 3
> vm.dirty_ratio = 80
> vm.dirty_expire_centisecs = 500
> vm.dirty_writeback_centisecs = 100
> net.ipv4.tcp_sack = 0
> net.ipv4.tcp_timestamps = 0
> net.ipv4.conf.default.rp_filter = 0
> net.ipv4.tcp_wmem = 262144
> net.ipv4.tcp_rmem = 4194304
> EOF

[root@18c1 ~]# sysctl -p
kernel.shmall = 4294967296
kernel.sem = 510 65280 510 128
kernel.shmmni = 4096
kernel.shmmax = 429496729500
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.file-max = 6815744
fs.aio-max-nr = 1048576
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.tcp_wmem = 262144
net.ipv4.tcp_rmem = 4194304


[root@18c2 ~]# sysctl -p
kernel.shmall = 4294967296
kernel.sem = 510 65280 510 128
kernel.shmmni = 4096
kernel.shmmax = 429496729500
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.file-max = 6815744
fs.aio-max-nr = 1048576
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.tcp_wmem = 262144
net.ipv4.tcp_rmem = 4194304

2.13 配置LIMITS限制参数

[root@18c1 ~]# cat >> /etc/security/limits.conf < oracle          soft    nproc           2047
> oracle          hard    nproc           16384
> oracle          soft    nofile          65536
> oracle          hard    nofile          65536
> oracle          soft    memlock         3145728
> oracle          hard    memlock         3145728
> oracle          soft    stack           10240
> oracle          hard    stack           32768
> 
> grid          soft    nproc           2047
> grid          hard    nproc           16384
> grid          soft    nofile          65536
> grid          hard    nofile          65536
> grid          soft    memlock         3145728
> grid          hard    memlock         3145728
> grid          soft    stack           10240
> grid          hard    stack           32768
> EOF

[root@18c2 ~]# cat >> /etc/security/limits.conf < oracle          soft    nproc           2047
> oracle          hard    nproc           16384
> oracle          soft    nofile          65536
> oracle          hard    nofile          65536
> oracle          soft    memlock         3145728
> oracle          hard    memlock         3145728
> oracle          soft    stack           10240
> oracle          hard    stack           32768
> 
> grid          soft    nproc           2047
> grid          hard    nproc           16384
> grid          soft    nofile          65536
> grid          hard    nofile          65536
> grid          soft    memlock         3145728
> grid          hard    memlock         3145728
> grid          soft    stack           10240
> grid          hard    stack           32768
> EOF

2.14配置PAM

[root@18c1 ~]# cat  >> /etc/pam.d/login < session    required     /lib64/security/pam_limits.so 
> EOF

[root@18c2 ~]# cat  >> /etc/pam.d/login < session    required     /lib64/security/pam_limits.so 
> EOF

2.15 配置系统环境变量

[root@18c1 ~]# cat  >> /etc/pam.d/login < if [ \$USER = "oracle" ]; then  
>     if [ \$SHELL = "/bin/ksh" ]; then
>         ulimit -p 16384
>         ulimit -n 65536
>     else
>         ulimit -u 16384 -n 65536
>     fi
> fi
> 
> if [ \$USER = "grid" ]; then  
>     if [ \$SHELL = "/bin/ksh" ]; then
>         ulimit -p 16384
>         ulimit -n 65536
>     else
>         ulimit -u 16384 -n 65536
>     fi
> fi
> EOF

[root@18c2 ~]# cat  >> /etc/pam.d/login < if [ \$USER = "oracle" ]; then  
>     if [ \$SHELL = "/bin/ksh" ]; then
>         ulimit -p 16384
>         ulimit -n 65536
>     else
>         ulimit -u 16384 -n 65536
>     fi
> fi
> 
> if [ \$USER = "grid" ]; then  
>     if [ \$SHELL = "/bin/ksh" ]; then
>         ulimit -p 16384
>         ulimit -n 65536
>     else
>         ulimit -u 16384 -n 65536
>     fi
> fi
> EOF

2.16 配置grid用户环境变量

[grid@18c1 ~]$ vi .bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

TEMP=/u01/tmp
TMPDIR=/u01/tmp
export TEMP TMPDIR
export LD_ASSUME_KERNEL=3.8.13
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/18.3/grid
export ORACLE_SID=+ASM1
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
umask=022
export PATH=$PATH:$ORACLE_HOME/rdbms/lib


[grid@18c2 ~]$ vi .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

TEMP=/u01/tmp
TMPDIR=/u01/tmp
export TEMP TMPDIR
export LD_ASSUME_KERNEL=3.8.13
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/18.3/grid
export ORACLE_SID=+ASM2
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
umask=022
export PATH=$PATH:$ORACLE_HOME/rdbms/lib

2.17 配置oracle用户环境变量

[oracle@18c1 ~]$ vi .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

TEMP=/u01/tmp
TMPDIR=/u01/tmp
export TEMP TMPDIR
export LD_ASSUME_KERNEL=3.8.13
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/18.3/db
export ORACLE_SID=ora18c1
export ORACLE_UNQNAME=ora18c
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
umask=022
export PATH=$PATH:$ORACLE_HOME/rdbms/lib




[oracle@18c2 ~]$ vi .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

TEMP=/u01/tmp
TMPDIR=/u01/tmp
export TEMP TMPDIR
export LD_ASSUME_KERNEL=3.8.13
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/18.3/db
export ORACLE_SID=ora18c2
export ORACLE_UNQNAME=ora18c
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
umask=022
export PATH=$PATH:$ORACLE_HOME/rdbms/lib

2.18 配置ASM所需磁盘,编辑/etc/udev/rules.d/99-my-asmdevices.rules配置文件

[root@18c1 ~]# fdisk -l

Disk /dev/sdc: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000e39cc

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048   209715199   104344576   8e  Linux LVM

Disk /dev/mapper/ol-root: 98.4 GB, 98385788928 bytes, 192159744 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/ol-swap: 8455 MB, 8455716864 bytes, 16515072 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


[root@18c2 ~]# fdisk -l

Disk /dev/sdc: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000e39cc

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048   209715199   104344576   8e  Linux LVM

Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/ol-root: 98.4 GB, 98385788928 bytes, 192159744 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/ol-swap: 8455 MB, 8455716864 bytes, 16515072 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


[root@18c1 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdb
36000c2900cdc8c5166aa71fdb62b37b1
[root@18c1 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdc
36000c2976add1db1089450eb6795b7f1

[root@18c2 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdb
36000c2900cdc8c5166aa71fdb62b37b1
[root@18c2 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdc
36000c2976add1db1089450eb6795b7f1

[root@18c1 ~]# vi /etc/udev/rules.d/99-my-asmdevices.rules
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c2900cdc8c5166aa71fdb62b37b1", RUN+="/bin/sh -c 'mknod /dev/asmdisk01 b $major $minor; chown grid:asmadmin /dev/asmdisk01; chmod 0660 /dev/asmdisk01'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c2976add1db1089450eb6795b7f1", RUN+="/bin/sh -c 'mknod /dev/asmdisk02 b $major $minor; chown grid:asmadmin /dev/asmdisk02; chmod 0660 /dev/asmdisk02'"


[root@18c2 ~]# vi /etc/udev/rules.d/99-my-asmdevices.rules
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c2900cdc8c5166aa71fdb62b37b1", RUN+="/bin/sh -c 'mknod /dev/asmdisk01 b $major $minor; chown grid:asmadmin /dev/asmdisk01; chmod 0660 /dev/asmdisk01'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c2976add1db1089450eb6795b7f1", RUN+="/bin/sh -c 'mknod /dev/asmdisk02 b $major $minor; chown grid:asmadmin /dev/asmdisk02; chmod 0660 /dev/asmdisk02'"


[root@18c1 ~]# /sbin/udevadm trigger --type=devices --action=change
[root@18c1 ~]# ls -lrt /dev/asm*
brw-rw----. 1 grid asmadmin 8, 32 Sep 14 10:39 /dev/asmdisk02
brw-rw----. 1 grid asmadmin 8, 16 Sep 14 10:39 /dev/asmdisk01

[root@18c2 ~]# /sbin/udevadm trigger --type=devices --action=change
[root@18c2 ~]# ls -lrt /dev/asm*
brw-rw----. 1 grid asmadmin 8, 16 Sep 14 10:39 /dev/asmdisk01
brw-rw----. 1 grid asmadmin 8, 32 Sep 14 10:39 /dev/asmdisk02

三·安装集群软件
3.1解压grid软件

[grid@18c1 ~]$ cd /soft
[grid@18c1 soft]$ ls -lrt
total 9713788
-rw-r--r--. 1 oracle oinstall 4564649047 Mar 31  2019 LINUX.X64_180000_db_home.zip
-rw-r--r--. 1 grid   oinstall 5382265496 Mar 31  2019 LINUX.X64_180000_grid_home.zip

[grid@18c1 soft]$ unzip -q LINUX.X64_180000_grid_home.zip -d $ORACLE_HOME

3.2 安装CVU

[root@18c1 ~]# export CVUQDISK_GRP=oinstall; 
[root@18c1 ~]# rpm -ivh /u01/app/18.3/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:cvuqdisk-1.0.10-1                ################################# [100%]

把安装包复件到节点2

[root@18c1 ~]# scp /u01/app/18.3/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm 18c2:~ 
The authenticity of host '18c2 (10.10.13.172)' can't be established.
ECDSA key fingerprint is 33:bd:b1:91:b4:06:6d:e9:5a:e5:1c:e4:8a:98:e3:d8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '18c2,10.10.13.172' (ECDSA) to the list of known hosts.
root@18c2's password: 
cvuqdisk-1.0.10-1.rpm                                                                                                                                                                                    100% 8860     8.7KB/s   00:00    
[root@18c1 ~]# 

[root@18c2 ~]# export CVUQDISK_GRP=oinstall;
[root@18c2 ~]# rpm -ivh cvuqdisk-1.0.10-1.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:cvuqdisk-1.0.10-1                ################################# [100%]

3.3 配置SSH信任
给grid,oracle用户进行配置

[root@18c1 ~]# /u01/app/18.3/grid/oui/prov/resources/scripts/sshUserSetup.sh -user grid  -hosts "18c1 18c2" -advanced exverify -confirm
The output of this script is also logged into /tmp/sshUserSetup_2022-09-14-11-01-04.log
Hosts are 18c1 18c2
user is grid
Platform:- Linux 
Checking if the remote hosts are reachable
PING 18c1 (10.10.13.171) 56(84) bytes of data.
64 bytes from 18c1 (10.10.13.171): icmp_seq=1 ttl=64 time=0.034 ms
64 bytes from 18c1 (10.10.13.171): icmp_seq=2 ttl=64 time=0.020 ms
64 bytes from 18c1 (10.10.13.171): icmp_seq=3 ttl=64 time=0.020 ms
64 bytes from 18c1 (10.10.13.171): icmp_seq=4 ttl=64 time=0.018 ms
64 bytes from 18c1 (10.10.13.171): icmp_seq=5 ttl=64 time=0.037 ms

--- 18c1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.018/0.025/0.037/0.010 ms
PING 18c2 (10.10.13.172) 56(84) bytes of data.
64 bytes from 18c2 (10.10.13.172): icmp_seq=1 ttl=64 time=0.368 ms
64 bytes from 18c2 (10.10.13.172): icmp_seq=2 ttl=64 time=0.170 ms
64 bytes from 18c2 (10.10.13.172): icmp_seq=3 ttl=64 time=0.178 ms
64 bytes from 18c2 (10.10.13.172): icmp_seq=4 ttl=64 time=0.168 ms
64 bytes from 18c2 (10.10.13.172): icmp_seq=5 ttl=64 time=0.157 ms

--- 18c2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.157/0.208/0.368/0.080 ms
Remote host reachability check succeeded.
The following hosts are reachable: 18c1 18c2.
The following hosts are not reachable: .
All hosts are reachable. Proceeding further...
firsthost 18c1
numhosts 2
The script will setup SSH connectivity from the host 18c1 to all
the remote hosts. After the script is executed, the user can use SSH to run
commands on the remote hosts or copy files between this host 18c1
and the remote hosts without being prompted for passwords or confirmations.

NOTE 1:
As part of the setup procedure, this script will use ssh and scp to copy
files between the local host and the remote hosts. Since the script does not
store passwords, you may be prompted for the passwords during the execution of
the script whenever ssh or scp is invoked.

NOTE 2:
AS PER SSH REQUIREMENTS, THIS SCRIPT WILL SECURE THE USER HOME DIRECTORY
AND THE .ssh DIRECTORY BY REVOKING GROUP AND WORLD WRITE PRIVILEGES TO THESE
directories.

Do you want to continue and let the script make the above mentioned changes (yes/no)?
Confirmation provided on the command line

The user chose yes
Please specify if you want to specify a passphrase for the private key this script will create for the local host. Passphrase is used to encrypt the private key and makes SSH much more secure. Type 'yes' or 'no' and then press enter. In case you press 'yes', you would need to enter the passphrase whenever the script executes ssh or scp. no 
The estimated number of times the user would be prompted for a passphrase is 4. In addition, if the private-public files are also newly created, the user would have to specify the passphrase on one additional occasion. 
Enter 'yes' or 'no'.
yes

The user chose yes
Creating .ssh directory on local host, if not present already
Creating authorized_keys file on local host
Changing permissions on authorized_keys to 644 on local host
Creating known_hosts file on local host
Changing permissions on known_hosts to 644 on local host
Creating config file on local host
If a config file exists already at /root/.ssh/config, it would be backed up to /root/.ssh/config.backup.
Removing old private/public keys on local host
Running SSH keygen on local host
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
passphrase too short: have 4 bytes, need > 4
Generating public/private rsa key pair.
Saving the key failed: /root/.ssh/id_rsa.
Creating .ssh directory and setting permissions on remote host 18c1
THE SCRIPT WOULD ALSO BE REVOKING WRITE PERMISSIONS FOR group AND others ON THE HOME DIRECTORY FOR grid. THIS IS AN SSH REQUIREMENT.
The script would create ~grid/.ssh/config file on remote host 18c1. If a config file exists already at ~grid/.ssh/config, it would be backed up to ~grid/.ssh/config.backup.
The user may be prompted for a password here since the script would be running SSH on host 18c1.
Warning: Permanently added '18c1,10.10.13.171' (ECDSA) to the list of known hosts.
grid@18c1's password: 
Done with creating .ssh directory and setting permissions on remote host 18c1.
Creating .ssh directory and setting permissions on remote host 18c2
THE SCRIPT WOULD ALSO BE REVOKING WRITE PERMISSIONS FOR group AND others ON THE HOME DIRECTORY FOR grid. THIS IS AN SSH REQUIREMENT.
The script would create ~grid/.ssh/config file on remote host 18c2. If a config file exists already at ~grid/.ssh/config, it would be backed up to ~grid/.ssh/config.backup.
The user may be prompted for a password here since the script would be running SSH on host 18c2.
Warning: Permanently added '18c2,10.10.13.172' (ECDSA) to the list of known hosts.
grid@18c2's password: 
Done with creating .ssh directory and setting permissions on remote host 18c2.
Copying local host public key to the remote host 18c1
The user may be prompted for a password or passphrase here since the script would be using SCP for host 18c1.
grid@18c1's password: 
/root/.ssh/id_rsa.pub: No such file or directory
Done copying local host public key to the remote host 18c1
Copying local host public key to the remote host 18c2
The user may be prompted for a password or passphrase here since the script would be using SCP for host 18c2.
grid@18c2's password: 
/root/.ssh/id_rsa.pub: No such file or directory
Done copying local host public key to the remote host 18c2
cat: /root/.ssh/id_rsa.pub: No such file or directory
Creating keys on remote host 18c1 if they do not exist already. This is required to setup SSH on host 18c1.
grid@18c1's password: 
Generating public/private rsa key pair.
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
bf:e3:a6:88:97:da:e0:7f:46:6e:9f:1a:c7:9b:a1:35 grid@18c1
The key's randomart image is:
+--[ RSA 1024]----+
|                 |
|                 |
|                 |
|                 |
|        S        |
|        .o       |
|    .  +. E      |
|   . +o.==oB     |
|    +++++*B.     |
+-----------------+
Creating keys on remote host 18c2 if they do not exist already. This is required to setup SSH on host 18c2.
grid@18c2's password: 
Generating public/private rsa key pair.
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
ea:df:a7:75:09:21:8e:b2:c3:6d:03:28:c0:03:8c:c6 grid@18c2
The key's randomart image is:
+--[ RSA 1024]----+
|=                |
|+E               |
|oo        . .    |
| ..  .   o . .   |
|  . . o S . .    |
|   . . *     . . |
|      = +   . o  |
|     . o o ...   |
|      ... oo     |
+-----------------+
grid@18c1's password: 
grid@18c2's password: 
Updating authorized_keys file on remote host 18c1
grid@18c1's password: 
Updating known_hosts file on remote host 18c1
grid@18c1's password: 
The script will run SSH on the remote machine 18c1. The user may be prompted for a passphrase here in case the private key has been encrypted with a passphrase.
grid@18c1's password: 
Updating authorized_keys file on remote host 18c2
grid@18c2's password: 
Updating known_hosts file on remote host 18c2
grid@18c2's password: 
The script will run SSH on the remote machine 18c2. The user may be prompted for a passphrase here in case the private key has been encrypted with a passphrase.
grid@18c2's password: 
SSH setup is complete.

------------------------------------------------------------------------
Verifying SSH setup
===================
The script will now run the date command on the remote nodes using ssh
to verify if ssh is setup correctly. IF THE SETUP IS CORRECTLY SETUP,
THERE SHOULD BE NO OUTPUT OTHER THAN THE DATE AND SSH SHOULD NOT ASK FOR
PASSWORDS. If you see any output other than date or are prompted for the
password, ssh is not setup correctly and you will need to resolve the
issue and set up ssh again.
The possible causes for failure could be:
1. The server settings in /etc/ssh/sshd_config file do not allow ssh
for user grid.
2. The server may have disabled public key based authentication.
3. The client public key on the server may be outdated.
4. ~grid or ~grid/.ssh on the remote host may not be owned by grid.
5. User may not have passed -shared option for shared remote users or
may be passing the -shared option for non-shared remote users.
6. If there is output in addition to the date, but no password is asked,
it may be a security alert shown as part of company policy. Append the
additional text to the /sysman/prov/resources/ignoreMessages.txt file.
------------------------------------------------------------------------
--18c1:--
Running /usr/bin/ssh -x -l grid 18c1 date to verify SSH connectivity has been setup from local host to 18c1.
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL. Please note that being prompted for a passphrase may be OK but being prompted for a password is ERROR.
The script will run SSH on the remote machine 18c1. The user may be prompted for a passphrase here in case the private key has been encrypted with a passphrase.
grid@18c1's password: 
Wed Sep 14 11:03:09 CST 2022
------------------------------------------------------------------------
--18c2:--
Running /usr/bin/ssh -x -l grid 18c2 date to verify SSH connectivity has been setup from local host to 18c2.
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL. Please note that being prompted for a passphrase may be OK but being prompted for a password is ERROR.
The script will run SSH on the remote machine 18c2. The user may be prompted for a passphrase here in case the private key has been encrypted with a passphrase.
grid@18c2's password: 
Wed Sep 14 11:03:12 CST 2022
------------------------------------------------------------------------
------------------------------------------------------------------------
Verifying SSH connectivity has been setup from 18c1 to 18c1
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL.
grid@18c1's password: 
Wed Sep 14 11:03:16 CST 2022
------------------------------------------------------------------------
------------------------------------------------------------------------
Verifying SSH connectivity has been setup from 18c1 to 18c2
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL.
grid@18c1's password: 
Wed Sep 14 11:03:20 CST 2022
------------------------------------------------------------------------
-Verification from complete-
SSH verification complete.




[root@18c1 ~]# /u01/app/18.3/grid/oui/prov/resources/scripts/sshUserSetup.sh -user oracle  -hosts "18c1 18c2" -advanced exverify -confirm
The output of this script is also logged into /tmp/sshUserSetup_2022-09-14-11-04-24.log
Hosts are 18c1 18c2
user is oracle
Platform:- Linux 
Checking if the remote hosts are reachable
PING 18c1 (10.10.13.171) 56(84) bytes of data.
64 bytes from 18c1 (10.10.13.171): icmp_seq=1 ttl=64 time=0.027 ms
64 bytes from 18c1 (10.10.13.171): icmp_seq=2 ttl=64 time=0.025 ms
64 bytes from 18c1 (10.10.13.171): icmp_seq=3 ttl=64 time=0.018 ms
64 bytes from 18c1 (10.10.13.171): icmp_seq=4 ttl=64 time=0.023 ms
64 bytes from 18c1 (10.10.13.171): icmp_seq=5 ttl=64 time=0.016 ms

--- 18c1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.016/0.021/0.027/0.007 ms
PING 18c2 (10.10.13.172) 56(84) bytes of data.
64 bytes from 18c2 (10.10.13.172): icmp_seq=1 ttl=64 time=0.222 ms
64 bytes from 18c2 (10.10.13.172): icmp_seq=2 ttl=64 time=0.145 ms
64 bytes from 18c2 (10.10.13.172): icmp_seq=3 ttl=64 time=0.141 ms
64 bytes from 18c2 (10.10.13.172): icmp_seq=4 ttl=64 time=0.153 ms
64 bytes from 18c2 (10.10.13.172): icmp_seq=5 ttl=64 time=0.142 ms

--- 18c2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.141/0.160/0.222/0.033 ms
Remote host reachability check succeeded.
The following hosts are reachable: 18c1 18c2.
The following hosts are not reachable: .
All hosts are reachable. Proceeding further...
firsthost 18c1
numhosts 2
The script will setup SSH connectivity from the host 18c1 to all
the remote hosts. After the script is executed, the user can use SSH to run
commands on the remote hosts or copy files between this host 18c1
and the remote hosts without being prompted for passwords or confirmations.

NOTE 1:
As part of the setup procedure, this script will use ssh and scp to copy
files between the local host and the remote hosts. Since the script does not
store passwords, you may be prompted for the passwords during the execution of
the script whenever ssh or scp is invoked.

NOTE 2:
AS PER SSH REQUIREMENTS, THIS SCRIPT WILL SECURE THE USER HOME DIRECTORY
AND THE .ssh DIRECTORY BY REVOKING GROUP AND WORLD WRITE PRIVILEGES TO THESE
directories.

Do you want to continue and let the script make the above mentioned changes (yes/no)?
Confirmation provided on the command line

The user chose yes
Please specify if you want to specify a passphrase for the private key this script will create for the local host. Passphrase is used to encrypt the private key and makes SSH much more secure. Type 'yes' or 'no' and then press enter. In case you press 'yes', you would need to enter the passphrase whenever the script executes ssh or scp. no 
The estimated number of times the user would be prompted for a passphrase is 4. In addition, if the private-public files are also newly created, the user would have to specify the passphrase on one additional occasion. 
Enter 'yes' or 'no'.
yes

The user chose yes
Creating .ssh directory on local host, if not present already
Creating authorized_keys file on local host
Changing permissions on authorized_keys to 644 on local host
Creating known_hosts file on local host
Changing permissions on known_hosts to 644 on local host
Creating config file on local host
If a config file exists already at /root/.ssh/config, it would be backed up to /root/.ssh/config.backup.
Removing old private/public keys on local host
Running SSH keygen on local host
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Generating public/private rsa key pair.
Passphrases do not match.  Try again.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
3b:8c:65:92:69:ee:94:70:cf:7d:9b:66:73:12:9b:be root@18c1
The key's randomart image is:
+--[ RSA 1024]----+
|                 |
|                 |
|                 |
|       o         |
|    . * S        |
|     = X o  .    |
|      = * . .+   |
|     o   . .Bo.  |
|      .    +E=   |
+-----------------+
Creating .ssh directory and setting permissions on remote host 18c1
THE SCRIPT WOULD ALSO BE REVOKING WRITE PERMISSIONS FOR group AND others ON THE HOME DIRECTORY FOR oracle. THIS IS AN SSH REQUIREMENT.
The script would create ~oracle/.ssh/config file on remote host 18c1. If a config file exists already at ~oracle/.ssh/config, it would be backed up to ~oracle/.ssh/config.backup.
The user may be prompted for a password here since the script would be running SSH on host 18c1.
Warning: Permanently added '18c1,10.10.13.171' (ECDSA) to the list of known hosts.
oracle@18c1's password: 
Done with creating .ssh directory and setting permissions on remote host 18c1.
Creating .ssh directory and setting permissions on remote host 18c2
THE SCRIPT WOULD ALSO BE REVOKING WRITE PERMISSIONS FOR group AND others ON THE HOME DIRECTORY FOR oracle. THIS IS AN SSH REQUIREMENT.
The script would create ~oracle/.ssh/config file on remote host 18c2. If a config file exists already at ~oracle/.ssh/config, it would be backed up to ~oracle/.ssh/config.backup.
The user may be prompted for a password here since the script would be running SSH on host 18c2.
Warning: Permanently added '18c2,10.10.13.172' (ECDSA) to the list of known hosts.
oracle@18c2's password: 
Done with creating .ssh directory and setting permissions on remote host 18c2.
Copying local host public key to the remote host 18c1
The user may be prompted for a password or passphrase here since the script would be using SCP for host 18c1.
oracle@18c1's password: 
Done copying local host public key to the remote host 18c1
Copying local host public key to the remote host 18c2
The user may be prompted for a password or passphrase here since the script would be using SCP for host 18c2.
oracle@18c2's password: 
Done copying local host public key to the remote host 18c2
Creating keys on remote host 18c1 if they do not exist already. This is required to setup SSH on host 18c1.
Enter passphrase for key '/root/.ssh/id_rsa': 
Generating public/private rsa key pair.
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
d6:14:54:7b:fc:11:f3:99:4f:69:b0:66:a8:31:70:0f oracle@18c1
The key's randomart image is:
+--[ RSA 1024]----+
|       . Eo... o |
|        o o..oo B|
|         o.o.+o*o|
|         o+ o..oo|
|        S..     o|
|       .         |
|                 |
|                 |
|                 |
+-----------------+
Creating keys on remote host 18c2 if they do not exist already. This is required to setup SSH on host 18c2.
Enter passphrase for key '/root/.ssh/id_rsa': 
Generating public/private rsa key pair.
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
2f:de:18:db:83:fe:6f:e9:1a:59:9f:73:82:9f:62:31 oracle@18c2
The key's randomart image is:
+--[ RSA 1024]----+
|                 |
|                 |
|                 |
|                 |
|        S   .    |
|         . oEo . |
|        o.+ .+= .|
|       ..B..=. = |
|       .=.=Bo.o  |
+-----------------+
Enter passphrase for key '/root/.ssh/id_rsa': 
Enter passphrase for key '/root/.ssh/id_rsa': 
Updating authorized_keys file on remote host 18c1
Enter passphrase for key '/root/.ssh/id_rsa': 
Updating known_hosts file on remote host 18c1
Enter passphrase for key '/root/.ssh/id_rsa': 
The script will run SSH on the remote machine 18c1. The user may be prompted for a passphrase here in case the private key has been encrypted with a passphrase.
Enter passphrase for key '/root/.ssh/id_rsa': 
Updating authorized_keys file on remote host 18c2
Enter passphrase for key '/root/.ssh/id_rsa': 
Updating known_hosts file on remote host 18c2
Enter passphrase for key '/root/.ssh/id_rsa': 
The script will run SSH on the remote machine 18c2. The user may be prompted for a passphrase here in case the private key has been encrypted with a passphrase.
Enter passphrase for key '/root/.ssh/id_rsa': 
SSH setup is complete.

------------------------------------------------------------------------
Verifying SSH setup
===================
The script will now run the date command on the remote nodes using ssh
to verify if ssh is setup correctly. IF THE SETUP IS CORRECTLY SETUP,
THERE SHOULD BE NO OUTPUT OTHER THAN THE DATE AND SSH SHOULD NOT ASK FOR
PASSWORDS. If you see any output other than date or are prompted for the
password, ssh is not setup correctly and you will need to resolve the
issue and set up ssh again.
The possible causes for failure could be:
1. The server settings in /etc/ssh/sshd_config file do not allow ssh
for user oracle.
2. The server may have disabled public key based authentication.
3. The client public key on the server may be outdated.
4. ~oracle or ~oracle/.ssh on the remote host may not be owned by oracle.
5. User may not have passed -shared option for shared remote users or
may be passing the -shared option for non-shared remote users.
6. If there is output in addition to the date, but no password is asked,
it may be a security alert shown as part of company policy. Append the
additional text to the /sysman/prov/resources/ignoreMessages.txt file.
------------------------------------------------------------------------
--18c1:--
Running /usr/bin/ssh -x -l oracle 18c1 date to verify SSH connectivity has been setup from local host to 18c1.
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL. Please note that being prompted for a passphrase may be OK but being prompted for a password is ERROR.
The script will run SSH on the remote machine 18c1. The user may be prompted for a passphrase here in case the private key has been encrypted with a passphrase.
Enter passphrase for key '/root/.ssh/id_rsa': 
Wed Sep 14 11:06:55 CST 2022
------------------------------------------------------------------------
--18c2:--
Running /usr/bin/ssh -x -l oracle 18c2 date to verify SSH connectivity has been setup from local host to 18c2.
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL. Please note that being prompted for a passphrase may be OK but being prompted for a password is ERROR.
The script will run SSH on the remote machine 18c2. The user may be prompted for a passphrase here in case the private key has been encrypted with a passphrase.
Enter passphrase for key '/root/.ssh/id_rsa': 
Wed Sep 14 11:07:00 CST 2022
------------------------------------------------------------------------
------------------------------------------------------------------------
Verifying SSH connectivity has been setup from 18c1 to 18c1
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL.
Enter passphrase for key '/root/.ssh/id_rsa': 
Wed Sep 14 11:07:06 CST 2022
------------------------------------------------------------------------
------------------------------------------------------------------------
Verifying SSH connectivity has been setup from 18c1 to 18c2
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL.
Enter passphrase for key '/root/.ssh/id_rsa': 
Wed Sep 14 11:07:12 CST 2022
------------------------------------------------------------------------
-Verification from complete-
SSH verification complete.


[root@18c1 ~]# su - grid
Last login: Wed Sep 14 10:52:12 CST 2022 on pts/0
[grid@18c1 ~]$ ssh 18c2 date
Wed Sep 14 11:08:23 CST 2022
[grid@18c1 ~]$ ssh 18c1 date
Wed Sep 14 11:08:30 CST 2022
[grid@18c1 ~]$ exit
logout
[root@18c1 ~]# su - oracle
Last login: Wed Sep 14 10:34:49 CST 2022 on pts/0
[oracle@18c1 ~]$ ssh 18c2 date
Wed Sep 14 11:08:43 CST 2022
[oracle@18c1 ~]$ ssh 18c1 date
Wed Sep 14 11:08:48 CST 2022

[grid@18c2 ~]$ ssh 18c1 date
Wed Sep 14 11:09:13 CST 2022
[grid@18c2 ~]$ ssh 18c2 date
Wed Sep 14 11:09:17 CST 2022
[grid@18c2 ~]$ exit
logout
[root@18c2 ~]# su - oracle
Last login: Wed Sep 14 10:36:22 CST 2022 on pts/0
[oracle@18c2 ~]$ ssh 18c1 date
Wed Sep 14 11:09:33 CST 2022
[oracle@18c2 ~]$ ssh 18c2 date
Wed Sep 14 11:09:41 CST 2022

3.4 安装前环境检查GI

[grid@18c1 ~]$ $ORACLE_HOME/runcluvfy.sh  stage -pre crsinst -n  "18c1,18c2"  -fixup -verbose

根据提示修复检查的问题

[root@18c1 ~]# /u01/tmp/CVU_18.0.0.0.0_grid/runfixup.sh
All Fix-up operations were completed successfully.

[root@18c2 ~]# /u01/tmp/CVU_18.0.0.0.0_grid/runfixup.sh
All Fix-up operations were completed successfully.

3.5开始安装Grid软件

[grid@18c1 ~]$ vi grid.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v18.0.0
INVENTORY_LOCATION=/u01/app/oraInventory
oracle.install.option=CRS_CONFIG
ORACLE_BASE=/u01/app/grid
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin
oracle.install.crs.config.scanType=LOCAL_SCAN
oracle.install.crs.config.gpnp.scanName=scan-18c
oracle.install.crs.config.gpnp.scanPort=1521
oracle.install.crs.config.ClusterConfiguration=STANDALONE
oracle.install.crs.config.configureAsExtendedCluster=false
oracle.install.crs.config.clusterName=ora18c-cluster
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.clusterNodes=18c1:18c1-vip:HUB,18c2:18c2-vip:HUB
oracle.install.crs.config.networkInterfaceList=ens33:88.88.87.0:5,ens32:10.10.13.0:1
oracle.install.asm.configureGIMRDataDG=false
oracle.install.crs.config.useIPMI=false
oracle.install.asm.storageOption=ASM
oracle.install.asmOnNAS.configureGIMRDataDG=false
oracle.install.asm.SYSASMPassword=xxzx7817600
oracle.install.asm.diskGroup.name=OCR
oracle.install.asm.diskGroup.redundancy=EXTERNAL
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.disks=/dev/asmdisk01
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm*
oracle.install.asm.configureAFD=false
oracle.install.asm.monitorPassword=xxzx7817600
oracle.install.crs.configureRHPS=false
oracle.install.crs.config.ignoreDownNodes=false
oracle.install.config.managementOption=NONE
oracle.install.config.omsPort=0
oracle.install.crs.rootconfig.executeRootScript=false

[grid@18c1 ~]$ $ORACLE_HOME/gridSetup.sh -silent -force -noconfig -waitforcompletion -ignorePrereq -responseFile /home/grid/grid.rsp
Launching Oracle Grid Infrastructure Setup Wizard...

[WARNING] [INS-30011] The SYS password entered does not conform to the Oracle recommended standards.
   CAUSE: Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
   ACTION: Provide a password that conforms to the Oracle recommended standards.
[WARNING] [INS-30011] The ASMSNMP password entered does not conform to the Oracle recommended standards.
   CAUSE: Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
   ACTION: Provide a password that conforms to the Oracle recommended standards.
[WARNING] [INS-40109] The specified Oracle Base location is not empty on this server.
   ACTION: Specify an empty location for Oracle Base.
[WARNING] [INS-13013] Target environment does not meet some mandatory requirements.
   CAUSE: Some of the mandatory prerequisites are not met. See logs for details. /u01/tmp/GridSetupActions2022-09-14_11-40-40AM/gridSetupActions2022-09-14_11-40-40AM.log
   ACTION: Identify the list of failed prerequisite checks from the log: /u01/tmp/GridSetupActions2022-09-14_11-40-40AM/gridSetupActions2022-09-14_11-40-40AM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
 /u01/app/18.3/grid/install/response/grid_2022-09-14_11-40-40AM.rsp

You can find the log of this install session at:
 /u01/tmp/GridSetupActions2022-09-14_11-40-40AM/gridSetupActions2022-09-14_11-40-40AM.log

As a root user, execute the following script(s):
        1. /u01/app/oraInventory/orainstRoot.sh
        2. /u01/app/18.3/grid/root.sh

Execute /u01/app/oraInventory/orainstRoot.sh on the following nodes: 
[18c1, 18c2]
Execute /u01/app/18.3/grid/root.sh on the following nodes: 
[18c1, 18c2]

Run the script on the local node first. After successful completion, you can start the script in parallel on all other nodes.

Successfully Setup Software with warning(s).
As install user, execute the following command to complete the configuration.
        /u01/app/18.3/grid/gridSetup.sh -executeConfigTools -responseFile /home/grid/grid.rsp [-silent]


Moved the install session logs to:
 /u01/app/oraInventory/logs/GridSetupActions2022-09-14_11-40-40AM

节点一 执行root脚本

[root@18c1 /]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@18c1 /]# /u01/app/18.3/grid/root.sh
Check /u01/app/18.3/grid/install/root_18c1_2022-09-14_12-06-17-524505190.log for the output of root script

节点二 执行root脚本

[root@18c2 /]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@18c2 /]# /u01/app/18.3/grid/root.sh
Check /u01/app/18.3/grid/install/root_18c2_2022-09-14_12-26-02-499327120.log for the output of root script

[grid@18c1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.OCR.GHCHKPT.advm
               OFFLINE OFFLINE      18c1                     STABLE
               OFFLINE OFFLINE      18c2                     STABLE
ora.OCR.dg
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.helper
               OFFLINE OFFLINE      18c1                     STABLE
               OFFLINE OFFLINE      18c2                     IDLE,STABLE
ora.net1.network
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.ocr.ghchkpt.acfs
               OFFLINE OFFLINE      18c1                     volume /opt/oracle/r
                                                             hp_images/chkbase is
                                                             unmounted,STABLE
               OFFLINE OFFLINE      18c2                     STABLE
ora.ons
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.proxy_advm
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.18c1.vip
      1        ONLINE  ONLINE       18c1                     STABLE
ora.18c2.vip
      1        ONLINE  ONLINE       18c2                     STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       18c2                     STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       18c1                     STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       18c1                     STABLE
ora.MGMTLSNR
      1        OFFLINE OFFLINE                               STABLE
ora.asm
      1        ONLINE  ONLINE       18c1                     Started,STABLE
      2        ONLINE  ONLINE       18c2                     Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       18c1                     STABLE
ora.qosmserver
      1        ONLINE  ONLINE       18c1                     STABLE
ora.rhpserver
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       18c2                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       18c1                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       18c1                     STABLE
--------------------------------------------------------------------------------

3.6创建ASM磁盘组

[grid@18c1 ~]$ sqlplus / as sysasm

SQL*Plus: Release 18.0.0.0.0 - Production on Wed Sep 14 14:53:11 2022
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.


Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

SQL> create diskgroup DATA external REDUNDANCY disk '/dev/asmdisk02' ATTRIBUTE 'au_size'='4M', 'compatible.rdbms' = '18.0', 'compatible.asm' = '18.0';

Diskgroup created.

节点二执行挂载

[grid@18c2 ~]$ sqlplus / as sysasm

SQL*Plus: Release 18.0.0.0.0 - Production on Wed Sep 14 14:52:53 2022
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.


Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

SQL> alter diskgroup data mount;

Diskgroup altered.


[grid@18c1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.DATA.dg
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.OCR.GHCHKPT.advm
               OFFLINE OFFLINE      18c1                     STABLE
               OFFLINE OFFLINE      18c2                     STABLE
ora.OCR.dg
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.helper
               OFFLINE OFFLINE      18c1                     STABLE
               OFFLINE OFFLINE      18c2                     IDLE,STABLE
ora.net1.network
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.ocr.ghchkpt.acfs
               OFFLINE OFFLINE      18c1                     volume /opt/oracle/r
                                                             hp_images/chkbase is
                                                             unmounted,STABLE
               OFFLINE OFFLINE      18c2                     STABLE
ora.ons
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.proxy_advm
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.18c1.vip
      1        ONLINE  ONLINE       18c1                     STABLE
ora.18c2.vip
      1        ONLINE  ONLINE       18c2                     STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       18c2                     STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       18c1                     STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       18c1                     STABLE
ora.MGMTLSNR
      1        OFFLINE OFFLINE                               STABLE
ora.asm
      1        ONLINE  ONLINE       18c1                     Started,STABLE
      2        ONLINE  ONLINE       18c2                     Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       18c1                     STABLE
ora.qosmserver
      1        ONLINE  ONLINE       18c1                     STABLE
ora.rhpserver
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       18c2                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       18c1                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       18c1                     STABLE
--------------------------------------------------------------------------------

四·安装数据库软件
4.1 解压安装包

[oracle@18c1 ~]$ cd /soft
[oracle@18c1 soft]$ ls -lrt
total 9713788
-rw-r--r--. 1 oracle oinstall 4564649047 Mar 31  2019 LINUX.X64_180000_db_home.zip
-rw-r--r--. 1 grid   oinstall 5382265496 Mar 31  2019 LINUX.X64_180000_grid_home.zip

[oracle@18c1 soft]$ unzip -q LINUX.X64_180000_db_home.zip -d $ORACLE_HOME

4.2安装前检查

[grid@18c1 ~]$ORACLE_HOME/runcluvfy.sh stage -pre dbinst -n  "18c1,18c2"  -fixup -verbose
......
Execute "/u01/tmp/CVU_18.0.0.0.0_grid/runfixup.sh" as root user on nodes "18c2,18c1" to perform the fix up operations manually

Press ENTER key to continue after execution of "/u01/tmp/CVU_18.0.0.0.0_grid/runfixup.sh" has completed on nodes "18c2,18c1"

Fix: Group Membership: dba 

  Node Name                             Status                  
  ------------------------------------  ------------------------
  18c2                                  failed                  
  18c1                                  failed                  

ERROR: 
18c2: PRVG-9023 : Manual fix up command "/u01/tmp/CVU_18.0.0.0.0_grid/runfixup.sh" was not issued by root user on node "18c2"

18c1: PRVG-9023 : Manual fix up command "/u01/tmp/CVU_18.0.0.0.0_grid/runfixup.sh" was not issued by root user on node "18c1"

Result: 
"Group Membership: dba" could not be fixed on nodes "18c2,18c1"

Fix up operations for selected fixable prerequisites were unsuccessful on nodes "18c2,18c1"


[root@18c1 ~]# /u01/tmp/CVU_18.0.0.0.0_grid/runfixup.sh
All Fix-up operations were completed successfully.


[root@18c2 ~]# /u01/tmp/CVU_18.0.0.0.0_grid/runfixup.sh
All Fix-up operations were completed successfully.

4.3编写响应文件

[oracle@18c1 ~]$ vi dbinstall.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v18.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/18.3/db
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.CLUSTER_NODES=18c1,18c2
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

[oracle@18c1 ~]$ $ORACLE_HOME/runInstaller -silent  -force -noconfig  -ignorePrereq -responseFile /home/oracle/dbinstall.rsp
Launching Oracle Database Setup Wizard...

[WARNING] [INS-13013] Target environment does not meet some mandatory requirements.
   CAUSE: Some of the mandatory prerequisites are not met. See logs for details. /u01/app/oraInventory/logs/InstallActions2022-09-14_01-09-17PM/installActions2022-09-14_01-09-17PM.log
   ACTION: Identify the list of failed prerequisite checks from the log: /u01/app/oraInventory/logs/InstallActions2022-09-14_01-09-17PM/installActions2022-09-14_01-09-17PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
 /u01/app/oracle/product/18.3/db/install/response/db_2022-09-14_01-09-17PM.rsp

You can find the log of this install session at:
 /u01/app/oraInventory/logs/InstallActions2022-09-14_01-09-17PM/installActions2022-09-14_01-09-17PM.log

As a root user, execute the following script(s):
        1. /u01/app/oracle/product/18.3/db/root.sh

Execute /u01/app/oracle/product/18.3/db/root.sh on the following nodes: 
[18c1, 18c2]


Successfully Setup Software with warning(s).

4.4执行root.sh脚本

[root@18c1 oracle]# /u01/app/oracle/product/18.3/db/root.sh
Check /u01/app/oracle/product/18.3/db/install/root_18c1_2022-09-14_14-17-43-907653393.log for the output of root script
[root@18c1 oracle]# cat /u01/app/oracle/product/18.3/db/install/root_18c1_2022-09-14_14-17-43-907653393.log
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/18.3/db
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.

[root@18c2 18.3]# /u01/app/oracle/product/18.3/db/root.sh
Check /u01/app/oracle/product/18.3/db/install/root_18c2_2022-09-14_14-17-49-252045874.log for the output of root script
[root@18c2 18.3]# cat /u01/app/oracle/product/18.3/db/install/root_18c2_2022-09-14_14-17-49-252045874.log
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/18.3/db
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.

五·创建数据库

[oracle@18c1 ~]$ vi dbca.rsp
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
templateName=General_Purpose.dbc
gdbName=ora18c
sid=ora18c
databaseConfigType=RAC
responseFile=NO_VALUE
characterSet=ZHS16GBK
nationalCharacterSet=AL16UTF16
sysPassword=xxzx7817600
systemPassword=xxzx7817600
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=ora18cpdb
useLocalUndoForPDBs=TRUE
pdbAdminPassword=xxzx7817600
databaseType=MULTIPURPOSE
automaticMemoryManagement=false
totalMemory=3072
redoLogFileSize=50
emConfiguration=NONE
nodelist=18c1,18c2
storageType=ASM
diskGroupName=+DATA
datafileDestination=+DATA
asmsnmpPassword=xxzx7817600
sampleSchema=TRUE

[oracle@18c1 ~]$ dbca -ignorePreReqs -silent  -createDatabase   -responseFile /home/oracle/dbca.rsp
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
   CAUSE: 
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
   CAUSE: 
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'PDBADMIN' password entered does not conform to the Oracle recommended standards.
   CAUSE: 
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
7% complete
Copying database files
27% complete
Creating and starting Oracle instance
28% complete
31% complete
35% complete
37% complete
40% complete
Creating cluster database views
41% complete
53% complete
Completing Database Creation
57% complete
59% complete
60% complete
Creating Pluggable Databases
64% complete
80% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
 /u01/app/oracle/cfgtoollogs/dbca/ora18c.
Database Information:
Global Database Name:ora18c
System Identifier(SID) Prefix:ora18c
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ora18c/ora18c.log" for further details.

[grid@18c1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.DATA.dg
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.OCR.GHCHKPT.advm
               OFFLINE OFFLINE      18c1                     STABLE
               OFFLINE OFFLINE      18c2                     STABLE
ora.OCR.dg
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.helper
               OFFLINE OFFLINE      18c1                     STABLE
               OFFLINE OFFLINE      18c2                     IDLE,STABLE
ora.net1.network
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.ocr.ghchkpt.acfs
               OFFLINE OFFLINE      18c1                     volume /opt/oracle/r
                                                             hp_images/chkbase is
                                                             unmounted,STABLE
               OFFLINE OFFLINE      18c2                     STABLE
ora.ons
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
ora.proxy_advm
               ONLINE  ONLINE       18c1                     STABLE
               ONLINE  ONLINE       18c2                     STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.18c1.vip
      1        ONLINE  ONLINE       18c1                     STABLE
ora.18c2.vip
      1        ONLINE  ONLINE       18c2                     STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       18c2                     STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       18c1                     STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       18c1                     STABLE
ora.MGMTLSNR
      1        OFFLINE OFFLINE                               STABLE
ora.asm
      1        ONLINE  ONLINE       18c1                     Started,STABLE
      2        ONLINE  ONLINE       18c2                     Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       18c1                     STABLE
ora.ora18c.db
      1        ONLINE  ONLINE       18c1                     Open,HOME=/u01/app/o
                                                             racle/product/18.3/d
                                                             b,STABLE
      2        ONLINE  ONLINE       18c2                     Open,HOME=/u01/app/o
                                                             racle/product/18.3/d
                                                             b,STABLE
ora.qosmserver
      1        ONLINE  ONLINE       18c1                     STABLE
ora.rhpserver
      1        OFFLINE OFFLINE                               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       18c2                     STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       18c1                     STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       18c1                     STABLE
--------------------------------------------------------------------------------

也可以不指定响应文件直接使用命令行参数来执行

[oracle@18c1 ~]$ dbca -ignorePreReqs -silent -createDatabase -templateName General_Purpose.dbc -gdbName ora18c -sid ora18c -createAsContainerDatabase true -numberOfPDBs 1 -pdbName  ora18cpdb -pdbAdminPassword xxzx7817600 -sysPassword xxzx7817600 -systemPassword xxzx7817600 -datafileDestination 'data/' -redoLogFileSize 50   -storageType ASM  -responseFile NO_VALUE  -characterset ZHS16GBK -nationalCharacterSet AL16UTF16    -sampleSchema  true -automaticMemoryManagement false -totalMemory 3072 -databaseType MULTIPURPOSE -nodelist 18c1,18c2 -listeners ASMNET1LSNR_ASM,LISTENER,LISTENER_SCAN2
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
   CAUSE: 
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
   CAUSE: 
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'PDBADMIN' password entered does not conform to the Oracle recommended standards.
   CAUSE: 
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
7% complete
Copying database files
27% complete
Creating and starting Oracle instance
28% complete
31% complete
35% complete
37% complete
40% complete
Creating cluster database views
41% complete
53% complete
Completing Database Creation
57% complete
59% complete
60% complete
Creating Pluggable Databases
64% complete
80% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
 /u01/app/oracle/cfgtoollogs/dbca/ora18c.
Database Information:
Global Database Name:ora18c
System Identifier(SID) Prefix:ora18c
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ora18c/ora18c.log" for further details.

测试连接

[oracle@18c1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on Wed Sep 14 15:32:38 2022
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.


Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

SQL> desc v$version;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 BANNER                                             VARCHAR2(80)
 BANNER_FULL                                        VARCHAR2(160)
 BANNER_LEGACY                                      VARCHAR2(80)
 CON_ID                                             NUMBER



SQL> select * from v$version;

BANNER                                                                           BANNER_FULL                                                                                                                                                BANNER_LEGACY                                                                 CON_ID
-------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production           Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production                                                                                     Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production             0
                                                                                 Version 18.3.0.0.0


SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORA18CPDB                      READ WRITE NO

MySQL 拷贝一个InnoDB分区表到另一个实例

拷贝一个InnoDB分区表到另一个实例
这个过程演示了如何将一个InnoDB分区表从一个正在运行的MySQL服务器实例复制到另一个正在运行的实例。同样的过程,只要稍微做些调整,就可以在同一个实例上对InnoDB分区表执行完全恢复。

1.在源实例上,如果不存在分区表,则创建分区表。在下面的例子中,创建了一个包含三个分区(p0, p1, p2)的表

mysql> use test;
Database changed
mysql> create table t1(i int) engine=innodb partition by key(i) partitions 3;
Query OK, 0 rows affected (0.38 sec)

mysql> insert into t1 values(1),(2),(3),(4),(5),(6),(7),(8),(9);
Query OK, 9 rows affected (0.03 sec)
Records: 9  Duplicates: 0  Warnings: 0
mysql> select * from t1;
+------+
| i    |
+------+
|    4 |
|    5 |
|    1 |
|    6 |
|    7 |
|    2 |
|    3 |
|    8 |
|    9 |
+------+
9 rows in set (0.00 sec)

在/mysqldata/mysql/test目录中,对于三个分区都有一个单独的表空间(.ibd)文件:

[root@localhost ~]# cd /mysqldata/mysql/test
[root@localhost test]# ls -lrt
总用量 304
-rw-r-----. 1 mysql mysql    67 3月  15 16:53 db.opt
-rw-r-----. 1 mysql mysql  8554 3月  16 15:43 t1.frm
-rw-r-----. 1 mysql mysql 98304 3月  16 15:43 t1#P#p1.ibd
-rw-r-----. 1 mysql mysql 98304 3月  16 15:43 t1#P#p2.ibd
-rw-r-----. 1 mysql mysql 98304 3月  16 15:43 t1#P#p0.ibd

2.在目标实例上,创建相同的分区表:

mysql> use test;
Database changed
mysql> create table t1(i int) engine=innodb partition by key(i) partitions 3;
Query OK, 0 rows affected (0.20 sec)

在/mysqldata/mysql/test目录中,对于三个分区都有一个单独的表空间(.ibd)文件:

[root@localhost ~]# cd /mysqldata/mysql/test
[root@localhost test]# ls -lrt
总用量 304
-rw-r-----. 1 mysql mysql    67 3月  15 16:55 db.opt
-rw-r-----. 1 mysql mysql  8554 3月  16 15:45 t1.frm
-rw-r-----. 1 mysql mysql 98304 3月  16 15:45 t1#P#p0.ibd
-rw-r-----. 1 mysql mysql 98304 3月  16 15:45 t1#P#p1.ibd
-rw-r-----. 1 mysql mysql 98304 3月  16 15:45 t1#P#p2.ibd

3.在目标实例上,丢弃分区表的表空间。(在将表空间导入目标实例之前,必须丢弃附加到接收表的表空间。)

mysql> alter table t1 discard tablespace;
Query OK, 0 rows affected (0.09 sec)

组成分区表表空间的三个.ibd文件从/mysqldata/mysql/tes目录中被丢弃,留下以下文件

[root@localhost ~]# cd /mysqldata/mysql/test
[root@localhost test]# ls -lrt
总用量 16
-rw-r-----. 1 mysql mysql   67 3月  15 16:55 db.opt
-rw-r-----. 1 mysql mysql 8554 3月  16 15:45 t1.frm

4.在源实例上,运行FLUSH TABLES… FOR EXPORT用于暂停分区表并创建.cfg元数据文件

mysql> flush tables t1 for export;
Query OK, 0 rows affected (0.01 sec)

在源实例的/mysqldata/mysql/test目录中创建元数据(.cfg)文件,每个表空间(.ibd)文件对应一个元数据文件

[root@localhost ~]# cd /mysqldata/mysql/test
[root@localhost test]# ls -lrt
总用量 316
-rw-r-----. 1 mysql mysql    67 3月  15 16:53 db.opt
-rw-r-----. 1 mysql mysql  8554 3月  16 15:43 t1.frm
-rw-r-----. 1 mysql mysql 98304 3月  16 15:43 t1#P#p1.ibd
-rw-r-----. 1 mysql mysql 98304 3月  16 15:43 t1#P#p2.ibd
-rw-r-----. 1 mysql mysql 98304 3月  16 15:43 t1#P#p0.ibd
-rw-r-----. 1 mysql mysql   375 3月  16 16:00 t1#P#p1.cfg
-rw-r-----. 1 mysql mysql   375 3月  16 16:00 t1#P#p0.cfg
-rw-r-----. 1 mysql mysql   375 3月  16 16:00 t1#P#p2.cfg

FLUSH TABLES……FOR EXPORT语句确保对指定表的更改已刷新到磁盘,以便在实例运行时可以进行二进制表拷贝。当运行FLUSH TABLES … FOR EXPORT时,InnoDB会在数据库目录中为表的表空间文件生成一个.cfg元数据文件。.cfg文件中包含导入表空间文件时验证模式的元数据。FLUSH TABLES … FOR EXPORT只能在表上运行,而不能在单独的表分区上运行。

5.将.ibd和.cfg文件从源实例数据库目录复制到目标实例数据库目录。例如

[root@localhost test]# scp t1*.{ibd,cfg} mysql@192.168.1.243:/mysqldata/mysql/test/
mysql@192.168.1.243's password:
t1#P#p0.ibd                                                                                                                                                                                              100%   96KB  96.0KB/s   00:00
t1#P#p1.ibd                                                                                                                                                                                              100%   96KB  96.0KB/s   00:00
t1#P#p2.ibd                                                                                                                                                                                              100%   96KB  96.0KB/s   00:00
t1#P#p0.cfg                                                                                                                                                                                              100%  375     0.4KB/s   00:00
t1#P#p1.cfg                                                                                                                                                                                              100%  375     0.4KB/s   00:00
t1#P#p2.cfg                                                                                                                                                                                              100%  375     0.4KB/s   00:00
[root@localhost test]#

[root@localhost test]# ls -lrt
总用量 316
-rw-r-----. 1 mysql mysql    67 3月  15 16:55 db.opt
-rw-r-----. 1 mysql mysql  8554 3月  16 15:45 t1.frm
-rw-r-----. 1 mysql mysql 98304 3月  16 16:06 t1#P#p0.ibd
-rw-r-----. 1 mysql mysql 98304 3月  16 16:06 t1#P#p1.ibd
-rw-r-----. 1 mysql mysql 98304 3月  16 16:06 t1#P#p2.ibd
-rw-r-----. 1 mysql mysql   375 3月  16 16:06 t1#P#p0.cfg
-rw-r-----. 1 mysql mysql   375 3月  16 16:06 t1#P#p1.cfg
-rw-r-----. 1 mysql mysql   375 3月  16 16:06 t1#P#p2.cfg

6.在源实例上,使用unlock tables语句来释放由flush tables … for export所获取的锁:

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

在源实例上释放锁时,会向mysql日志文件写入删除.cfg文件的信息:

2022-03-16T08:08:27.653352Z 10 [Note] InnoDB: Deleting the meta-data file './test/t1#P#p0.cfg'
2022-03-16T08:08:27.653656Z 10 [Note] InnoDB: Deleting the meta-data file './test/t1#P#p1.cfg'
2022-03-16T08:08:27.654214Z 10 [Note] InnoDB: Deleting the meta-data file './test/t1#P#p2.cfg'
2022-03-16T08:08:27.654256Z 10 [Note] InnoDB: Resuming purge

7.在目标实例上,导入表空间:

mysql> select * from t1;
ERROR 1814 (HY000): Tablespace has been discarded for table 't1'
mysql> alter table t1 discard tablespace;
Query OK, 0 rows affected (0.09 sec)

mysql> alter table t1 import tablespace;
Query OK, 0 rows affected (0.46 sec)

mysql> select * from t1;
+------+
| i    |
+------+
|    4 |
|    5 |
|    1 |
|    6 |
|    7 |
|    2 |
|    3 |
|    8 |
|    9 |
+------+
9 rows in set (0.01 sec)

MySQL 传输表空间

将file-per-table表空间复制到另一个实例
如何将一个file-per-table表空间从一个MySQL实例复制到另一个实例中,也就是众所周知的可传输表空间特性。

有很多原因可以解释为什么你可以将一个InnoDB文件表空间复制到不同的实例中:
.在不增加生产服务器额外负载的情况下运行报表。

.在新的从服务器上为表设置相同的数据

.在出现问题或错误后恢复表或分区的备份版本。

.作为一种比mysqldump命令导入更快的移动数据的方法。数据立即可用,而不需要重新插入和重建索引

.将每个file-per-table表空间移动到具有更适合系统需求的存储介质的服务器。例如,您可能希望在SSD设备上有繁忙的表,或者在高容量HDD设备上有大型表。

限制和使用说明
.只有当innodb_file_per_table设置为ON(默认设置)时,才可以拷贝表空间。驻留在共享系统表空间中的表不能被静默。

.当一个表被静默时,只允许在受影响的表上执行只读事务

.在导入表空间时,页面大小必须与导入实例的页面大小相匹配。

.当foreign_key_checks设置为1时,对于父-子(主-外键)关系的表空间不支持DISCARD TABLESPACE。在丢弃父-子表的表空间之前,设置foreign_key_checks=0。分区InnoDB表不支持外键。

.ALTER TABLE……IMPORT TABLESPACE不会对导入的数据强制外键约束。如果表之间存在外键约束,那么所有表都应该在同一(逻辑)时间点导出。分区InnoDB表不支持外键。

.ALTER TABLE……IMPORT TABLESPACE 和 ALTER TABLE…IMPORT PARTITION…TABLESPACE不需要.cfg元数据文件来导入一个表空间。但是,如果导入时没有.cfg文件,则不会执行元数据检查,并且会发出类似于下面的警告:

Message: InnoDB: IO Read error: (2, No such file or directory) Error opening '.\
test\t.cfg', will attempt to import without schema verification
1 row in set (0.00 sec)

在期待没用模式不匹配的情况下,不使用.cfg文件进行导入可能会更方便。此外,在无法从.ibd文件收集元数据的崩溃恢复场景中,不需要.cfg文件就可以导入。

.由于.cfg元数据文件的限制,当为分区表导入表空间文件时,不会对分区类型或分区定义差异报告模式不匹配。列差异被报告。

.当在子分区表上运行ALTER TABLE … DISCARD PARTITION … TABLESPACE和ALTER TABLE … IMPORT PARTITION … TABLESPACE,分区和子分区表名都是允许的。当指定分区名时,该分区的子分区将包含在操作中。

.如果两个实例都有GA(通用可用性)状态,并且它们的版本在同一系列可以从另一个MySQL服务器实例导入表空间文件。否则,该文件必须是在导入它的同一个服务器实例上所创建

.在复制场景中,innodb_file_per_table必须在主节点和从节点上都设置为ON。

.在Windows环境下,InnoDB内部存储数据库、表空间和表名时使用小写字母。为了避免在区分大小写的操作系统(如Linux、UNIX)上的导入问题,请在创建数据库、表空间和表时使用小写名称。一种方便的方法是在创建数据库、表空间或表之前,在my.cnf或my.ini文件的[mysqld]部分中添加下面这一行:

[mysqld]
lower_case_table_names=1

.alter table … discard tablespace和alter table … import tabelspace不支持属于InnoDB通用表空间中的表。

.InnoDB表的默认行格式可以通过innodb_default_row_format配置选项进行配置。如果导入的表没有明确定义行格式(ROW_FORMAT),或者使用了ROW_FORMAT=DEFAULT,那么如果源实例上的innodb_default_row_format设置与目标实例上的innodb_default_row_format设置不一致,可能会导致模式不匹配错误

.在使用InnoDB表空间加密特性导出加密的表空间时,InnoDB除了生成一个.cfg元数据文件外,还会生成一个.cfp文件。在目标实例上执行ALTER TABLE…IMPORT TABLESPACE之前,必须将.cfp文件与.cfg文件和表空间文件一起复制到目标实例中。cfp文件包含一个传输密钥和一个加密的表空间密钥。在导入时,InnoDB使用传输密钥来解密表空间密钥。

传输表空间示例
例如1:复制一个InnoDB表到另一个实例
这个过程演示了如何将一个普通的InnoDB表从一个正在运行的MySQL服务器实例复制到另一个正在运行的实例。可以使用相同的过程在相同的实例上执行全表恢复,只是做了一些小小的调整。
1. 在源实例上,如果不存在表,则创建一个表:

mysql> use test;
Database changed
mysql> create table t(c1 int) engine=innodb;
Query OK, 0 rows affected (0.12 sec)

mysql> insert into t values(1);
Query OK, 1 row affected (0.16 sec)

2.在目标实例上,如果不存在表,则创建表:

mysql> use test;
Database changed
mysql> create table t(c1 int) engine=innodb;
Query OK, 0 rows affected (0.09 sec)

3.在目标实例上,丢弃现有的表空间。(在导入表空间之前,InnoDB必须丢弃连接到接收表空间的表空间。)

[mysql@localhost test]$ ls -lrt
总用量 112
-rw-r-----. 1 mysql mysql    67 3月  15 16:55 db.opt
-rw-r-----. 1 mysql mysql  8556 3月  15 16:57 t.frm
-rw-r-----. 1 mysql mysql 98304 3月  15 16:57 t.ibd

mysql> alter table t discard tablespace;
Query OK, 0 rows affected (0.17 sec)



[mysql@localhost test]$ ls -lrt
总用量 16
-rw-r-----. 1 mysql mysql   67 3月  15 16:55 db.opt
-rw-r-----. 1 mysql mysql 8556 3月  15 16:57 t.frm

4.在源实例上,运行FLUSH TABLES…FOR EXPORT将暂停表并创建.cfg元数据文件

mysql> flush tables t for export;
Query OK, 0 rows affected (0.00 sec)


[mysql@localhost test]$ ls -lrt
总用量 116
-rw-r-----. 1 mysql mysql    67 3月  15 16:53 db.opt
-rw-r-----. 1 mysql mysql  8556 3月  15 16:54 t.frm
-rw-r-----. 1 mysql mysql 98304 3月  15 16:54 t.ibd
-rw-r-----. 1 mysql mysql   371 3月  15 17:00 t.cfg

在InnoDB数据目录下创建元数据(.cfg)
注意:FLUSH TABLES …… FOR EXPORT在MySQL 5.6.6版本中可用。该语句确保对指定表的更改已刷新到磁盘,以便在实例运行时可以生成二进制表副本。当FLUSH TABLES … FOR EXPORT时,InnoDB会在表所在的数据库目录中生成一个.cfg文件。cfg文件中包含导入表空间文件时用于模式验证的元数据。

5.将.ibd文件和.cfg元数据文件从源实例复制到目标实例

[mysql@localhost test]$ scp t.{ibd,cfg} mysql@192.168.1.243:/mysqldata/mysql/test/
mysql@192.168.1.243's password:
t.ibd                                                                                                                                                                                                    100%   96KB  96.0KB/s   00:00
t.cfg                                                                                                                                                                                                    100%  371     0.4KB/s   00:00
[mysql@localhost test]$

在释放共享锁之前必须复制.ibd与.cfg文件。

6.在源实例上,使用unlock tables语句来释放由flush tables … for export所获取的锁:

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

7.在目标实例上,导入表空间:
mysql> alter table t import tablespace;
Query OK, 0 rows affected (0.15 sec)

mysql> desc t;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c1    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> select * from t;
+------+
| c1   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

可以看到表t从一个实例迁移到另一个实例上。

DM8 配置DMDSC主备环境(rac到单节点 )

配置DMDSC主备环境
DMDSC主备环境搭建和单节点主备环境搭建步骤类似,区别主要在于首先要准备DMDSC集群环境。

配置说明
DMDSC集群可以作为主库,也可以作为实时备库、即时备库或者异步备库,当DMDSC集群作为备库配置在数据守护系统中时,要将DMDSC集群作为一个整体配置在源库的dmarch.ini中,也就是DMDSC集群所有节点要配置在同一个归档配置项中,每个节点实例名以“/”分隔开来。

假如DMDSC集群有两个节点GRP1_RT_DSC01和GRP1_RT_DSC02,DMDSC集群要作为备库进行配置,其源库为A,则要在A的dmarch.ini文件中增加DMDSC集群的归档配置,这里以实时备库为例说明如下:

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_DSC01/GRP1_RT_DSC02

如果DMDSC集群要作为即时备库或者异步备库来配置,ARCH_DEST的配置方式和示例中是相同的,ARCH_TYPE则要分别替换为TIMELY或者ASYNC,中括号内的配置项名称中包含的归档类型也建议修改和ARCH_TYPE一致。

环境说明
下面以DMDSC集群和单节点之间搭建实时主备环境为例,对搭建步骤进行说明。

下列机器事先都安装了DM8,安装路径为’/dm8’,执行程序保存在’/dm8/bin’目录中,数据存放路径为’/dm8/data’。

各主备库的实例名建议采用“组名_守护环境_序号”的方式命名,方便按组区分不同实例,注意总长度不能超过16。本示例中组名为“GRP1”,配置为实时主备,主库DMDSC集群的三个节点实例名分别命名为“rac1”、“rac2”,备库命名为“rac_st”。

本次部署为2节点DSC为主库,单机达梦为物理备库

IP规划:

主机名	  服务ip	        心跳ip	        实例名	节点用途
dm8rac1	  10.10.13.201	10.10.13.201	rac1	rac节点1
dm8rac2	  10.10.13.202	10.10.13.202	rac2	rac节点2
dm8rac_st 10.10.13.227	10.10.13.227	rac_st	rac备库

端口规划:

实例名    port_num    mal_inst_dw_port    mal_host          mal_port    mal_dw_port  CSS端口	ASM端口	ASM的MAL端口	DCR检查实例端口
dm1       5236        5237                10.10.13.201      5238        5239         5240       5241    5242            5243
dm2       5236        5237                10.10.13.202      5238        5239         5240       5241    5242            5243
rac_st    5236        5237                10.10.13.227      5238        5239

DSC集群部署
共享存储

/dev/sdb	/dev/raw/raw1	dcr disk	10G
/dev/sdc	/dev/raw/raw2	voting disk	10G
/dev/sdd	/dev/raw/raw3	log disk	10G
/dev/sde	/dev/raw/raw4	data disk1	10G
/dev/sdf	/dev/raw/raw5	data disk2	10G
/dev/sdg	/dev/raw/raw6	data disk3	10G

二、操作系统配置
1、关闭防火墙和SELINUX

[root@gbase ~]# systemctl stop firewalld
[root@gbase ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@gbase ~]# systemctl status firewalld
   firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

Dec 06 17:22:42 gbase systemd[1]: Starting firewalld - dynamic firewall daemon...
Dec 06 17:22:48 gbase systemd[1]: Started firewalld - dynamic firewall daemon.
Dec 07 08:21:59 gbase systemd[1]: Stopping firewalld - dynamic firewall daemon...
Dec 07 08:22:00 gbase systemd[1]: Stopped firewalld - dynamic firewall daemon.

[root@gbase ~]# setenforce 0
[root@gbase ~]# sed -i s:^SELINUX=.*$:SELINUX=disabled:g /etc/selinux/config
[root@gbase ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted


[root@gbase ~]# systemctl stop firewalld
[root@gbase ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@gbase ~]# systemctl status firewalld
   firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

Dec 06 17:22:45 gbase systemd[1]: Starting firewalld - dynamic firewall daemon...
Dec 06 17:22:51 gbase systemd[1]: Started firewalld - dynamic firewall daemon.
Dec 07 08:19:39 gbase systemd[1]: Stopping firewalld - dynamic firewall daemon...
Dec 07 08:19:40 gbase systemd[1]: Stopped firewalld - dynamic firewall daemon.
[root@gbase ~]# setenforce 0
[root@gbase ~]# sed -i s:^SELINUX=.*$:SELINUX=disabled:g /etc/selinux/config
[root@gbase ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

2、修改主机名

[root@gbase ~]# hostname dm8rac1
[root@gbase ~]# sed -i s:^HOSTNAME=.*$:HOSTNAME=dm8rac1:g /etc/sysconfig/network
[root@gbase ~]# echo "
 > 10.10.13.201   dm8rac1
 > 10.10.13.202   dm8rac2" >> /etc/hosts
[root@gbase ~]# cat  /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

 10.10.13.201   dm8rac1
 10.10.13.202   dm8rac2


[root@gbase ~]# hostname dm8rac2
[root@gbase ~]# sed -i s:^HOSTNAME=.*$:HOSTNAME=dm8rac2:g /etc/sysconfig/network
[root@gbase ~]#
[root@gbase ~]# echo "
>  10.10.13.201   dm8rac1
>  10.10.13.202   dm8rac2" >> /etc/hosts
[root@gbase ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

 10.10.13.201   dm8rac1
 10.10.13.202   dm8rac2

三、 安装达梦软件

3.1检查Linux(Unix)系统信息

[root@dm8rac1 ~]# getconf LONG_BIT
64

[root@dm8rac2 ~]# getconf LONG_BIT
64

查询操作系统release信息

[root@dm8rac1 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.8 Beta (Maipo)

[root@dm8rac2 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.8 Beta (Maipo)

3.2创建安装用户
为了减少对操作系统的影响,用户不应该以root系统用户来安装和运行DM。用户可以在安装之前为DM创建一个专用的系统用户。
1. 创建安装用户组dinstall。

[root@dm8rac1 ~]# groupadd dinstall

[root@dm8rac2 ~]# groupadd dinstall

2. 创建安装用户dmdba。

[root@dm8rac1 ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

[root@dm8rac2 ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

3. 初始化用户密码。

[root@dm8rac1 ~]# passwd dmdba
Changing password for user dmdba.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

[root@dm8rac2 ~]# passwd dmdba
Changing password for user dmdba.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

3.3 Linux(Unix)下检查操作系统限制
在Linux(Unix)系统中,因为ulimit命令的存在,会对程序使用操作系统资源进行限制。为了使DM能够正常运行,建议用户检查当前安装用户的ulimit参数。

运行ulimit -a进行查询。如下图所示:

[root@dm8rac1 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31152
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31152
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

[root@dm8rac2 ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31152
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31152
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

参数使用限制:
1.data seg size
data seg size (kbytes, -d)
建议用户设置为1048576(即1GB)以上或unlimited(无限制),此参数过小将导致数据库启动失败。
2. file size
file size(blocks, -f)
建议用户设置为unlimited(无限制),此参数过小将导致数据库安装或初始化失败。
3. open files
open files(-n)
建议用户设置为65536以上或unlimited(无限制)。
4.virtual memory
virtual memory (kbytes, -v)
建议用户设置为1048576(即1GB)以上或unlimited(无限制),此参数过小将导致数据库启动失败。

如果用户需要为当前安装用户更改ulimit的资源限制,请修改文件/etc/security/limits.conf。

[root@dm8rac1 ~]# vi /etc/security/limits.conf
dmdba soft data unlimited
dmdba hard data unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536

[root@dm8rac2 ~]# vi /etc/security/limits.conf
dmdba soft data unlimited
dmdba hard data unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536

[root@dm8rac1 ~]# su - dmdba
[dmdba@dm8rac1 ~]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31152
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


[root@dm8rac2 ~]# su - dmdba
[dmdba@dm8rac2 ~]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31152
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

3.4.检查系统内存与存储空间
1.检查内存
为了保证DM的正确安装和运行,要尽量保证操作系统至少1GB的可用内存(RAM)。如果可用内存过少,可能导致DM安装或启动失败。用户可以
使用以下命令检查操作内存:
#获取内存总大小

[root@dm8rac1 ~]# grep MemTotal /proc/meminfo
MemTotal:        8009068 kB

[root@dm8rac12 ~]# grep MemTotal /proc/meminfo
MemTotal:        8009068 kB

#获取交换分区大小

[root@dm8rac1 ~]# grep SwapTotal /proc/meminfo
SwapTotal:       8257532 kB

[root@dm8rac2 ~]# grep SwapTotal /proc/meminfo
SwapTotal:       8257532 kB

#获取内存使用详情

[root@dm8rac1 ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:              7           0           6           0           0           6
Swap:             7           0           7

[root@dm8rac2 ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:              7           0           6           0           0           6
Swap:             7           0           7

2.检查存储空间
1) DM完全安装需要1GB的存储空间,用户需要提前规划好安装目录,预留足够的存储空间。用户在DM安装前也应该为数据库实例预留足够的存储空间,规划好数据路径和备份路径。用户可使用以下命令检查存储空间:
#查询目录/dm8可用空间

[root@dm8rac1 ~]# mkdir /dm8
[root@dm8rac1 ~]# chown -R dmdba:dinstall /dm8
[root@dm8rac1 ~]# chmod -R 775 /dm8

[root@dm8rac2 ~]# mkdir /dm8
[root@dm8rac2 ~]# chown -R dmdba:dinstall /dm8
[root@dm8rac2 ~]# chmod -R 775 /dm8

[root@dm8rac1 ~]# df -h /dm8
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   48G  5.6G   43G  12% /


[root@dm8rac2 ~]# df -h /dm8
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   48G  5.6G   43G  12% /

2) DM安装程序在安装时将产生临时文件,临时文件需要1GB的存储空间,临时文件目录默认为/tmp。用户可以使用以下命令检查存储空间。
如下图所示:

[root@dm8rac1 ~]# df -h /tmp
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   48G  5.6G   43G  12% /


[root@dm8rac2 ~]# df -h /tmp
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   48G  5.6G   43G  12% /

3.5.安装DM
创建目录/soft/dmsoft用来存储挂载iso文件后来显示软件包中的文件

[root@dm8rac1 ~]# cd /soft
[root@dm8rac1 soft]# unzip dm8_20211021_x86_rh6_64_ent.zip
Archive:  dm8_20211021_x86_rh6_64_ent.zip
   creating: dm8_20211021_x86_rh6_64_ent/
  inflating: dm8_20211021_x86_rh6_64_ent/dm8_20211021_x86_rh6_64_ent_8.1.2.84.iso
 extracting: dm8_20211021_x86_rh6_64_ent/dm8_20211021_x86_rh6_64_ent_8.1.2.84.iso_SHA256.txt
 extracting: dm8_20211021_x86_rh6_64_ent/verinfo.txt
[root@dm8rac1 soft]# ls -lrt
total 778320
drwxr-xr-x. 2 root root       132 Nov 12 13:43 dm8_20211021_x86_rh6_64_ent
-rw-r--r--. 1 root root 796998047 Nov 29 10:25 dm8_20211021_x86_rh6_64_ent.zip
[root@dm8rac1 soft]# mv dm8_20211021_x86_rh6_64_ent dm8
[root@dm8rac1 soft]# ls -lrt
total 778320
drwxr-xr-x. 2 root root       132 Nov 12 13:43 dm8
-rw-r--r--. 1 root root 796998047 Nov 29 10:25 dm8_20211021_x86_rh6_64_ent.zip

[root@dm8rac1 soft]# mkdir dmsoft
[root@dm8rac1 soft]# mount -t iso9660 -o loop dm8/dm8_20211021_x86_rh6_64_ent_8.1.2.84.iso  /soft/dmsoft
mount: /dev/loop0 is write-protected, mounting read-only

[root@dm8rac1 soft]# cd dmsoft
[root@dm8rac1 dmsoft]# ls -lrt
total 790160
-r-xr-xr-x. 1 root root   2802503 Oct 21 14:04 DM8 Install.pdf
-r-xr-xr-x. 1 root root 806320703 Oct 21 14:11 DMInstall.bin


[root@dm8rac12 ~]# cd /soft
[root@dm8rac2 soft]# unzip dm8_20211021_x86_rh6_64_ent.zip
Archive:  dm8_20211021_x86_rh6_64_ent.zip
   creating: dm8_20211021_x86_rh6_64_ent/
  inflating: dm8_20211021_x86_rh6_64_ent/dm8_20211021_x86_rh6_64_ent_8.1.2.84.iso
 extracting: dm8_20211021_x86_rh6_64_ent/dm8_20211021_x86_rh6_64_ent_8.1.2.84.iso_SHA256.txt
 extracting: dm8_20211021_x86_rh6_64_ent/verinfo.txt
[root@dm8rac2 soft]# ls -lrt
total 778320
drwxr-xr-x. 2 root root       132 Nov 12 13:43 dm8_20211021_x86_rh6_64_ent
-rw-r--r--. 1 root root 796998047 Nov 29 10:25 dm8_20211021_x86_rh6_64_ent.zip
[root@dm8rac2 soft]# mv dm8_20211021_x86_rh6_64_ent dm8
[root@dm8rac2 soft]# ls -lrt
total 778320
drwxr-xr-x. 2 root root       132 Nov 12 13:43 dm8
-rw-r--r--. 1 root root 796998047 Nov 29 10:25 dm8_20211021_x86_rh6_64_ent.zip

[root@dm8rac2 soft]# mkdir dmsoft
[root@dm8rac2 soft]# mount -t iso9660 -o loop dm8/dm8_20211021_x86_rh6_64_ent_8.1.2.84.iso  /soft/dmsoft
mount: /dev/loop0 is write-protected, mounting read-only

[root@dm8rac2 soft]# cd dmsoft
[root@dm8rac2 dmsoft]# ls -lrt
total 790160
-r-xr-xr-x. 1 root root   2802503 Oct 21 14:04 DM8 Install.pdf
-r-xr-xr-x. 1 root root 806320703 Oct 21 14:11 DMInstall.bin

在/soft/dmsoft目录下存在DMInstall.bin文件, DMInstall.bin文件就是DM的安装程序。在运行安装程序前,需要赋予DMInstall.bin文件执行权限。具体命令如下所示:

[root@dm8rac1 dmsoft]# chmod 755  DMInstall.bin
chmod: changing permissions of ‘DMInstall.bin’: Read-only file system


[root@dm8rac2 dmsoft]# chmod 755  DMInstall.bin
chmod: changing permissions of ‘DMInstall.bin’: Read-only file system

在现实中,许多Linux(Unix)操作系统上是没有图形化界面的,为了使DM能够在这些操作系统上顺利安装,DM提供了命令行的安装方式。在终端进入到安装程序所在文件夹,执行以下命令进行命令行安装:

[dmdba@dm8rac1 dmsoft]$ ./DMInstall.bin -i
Please select the installer's language (E/e:English C/c:Chinese) [E/e]:e
Extract install files.........
Welcome to DM DBMS Installer

Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:n

Whether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:y
TimeZone:
[ 1]: GTM-12=West Date Line
[ 2]: GTM-11=Samoa
[ 3]: GTM-10=Hawaii
[ 4]: GTM-09=Alaska
[ 5]: GTM-08=Pacific(America and Canada)
[ 6]: GTM-07=Arizona
[ 7]: GTM-06=Central(America and Canada)
[ 8]: GTM-05=East(America and Canada)
[ 9]: GTM-04=Atlantic(America and Canada)
[10]: GTM-03=Brasilia
[11]: GTM-02=Middle Atlantic
[12]: GTM-01=Azores
[13]: GTM=Greenwich Mean Time
[14]: GTM+01=Sarajevo
[15]: GTM+02=Cairo
[16]: GTM+03=Moscow
[17]: GTM+04=AbuDhabi
[18]: GTM+05=Islamabad
[19]: GTM+06=Dakar
[20]: GTM+07=BangKok,Hanoi
[21]: GTM+08=China
[22]: GTM+09=Seoul
[23]: GTM+10=Guam
[24]: GTM+11=Solomon
[25]: GTM+12=Fiji
[26]: GTM+13=Nukualofa
[27]: GTM+14=Kiribati
Please Select the TimeZone [21]:21

Installation Type:
1 Typical
2 Server
3 Client
4 Custom
Please Input the number of the Installation Type [1 Typical]:4
1 Server component
2 Client component
  2.1 Manager
  2.2 Monitor
  2.3 DTS
  2.4 Console
  2.5 Analyzer
  2.6 DISQL
3 DM Drivers
4 Manual component
5 DBMS Service
  5.1 Realtime Audit Service
  5.2 Job Service
  5.3 Instance Monitor Service
  5.4 Assistant Plug-In Service
Please Input the number of the Installation Type [1 2 3 4 5]:1 2 3 4 5
Require Space: 1242M

Please Input the install path [/home/dmdba/dmdbms]:/dm8
Available Space:39G
Please Confirm the install path(/dm8)? (Y/y:Yes N/n:No) [Y/y]:y

Pre-Installation Summary
Installation Location: /dm8
Require Space: 1242M
Available Space: 39G
Version Information:
Expire Date:
Installation Type: Custom
Confirm to Install? (Y/y:Yes N/n:No):y
2021-12-07 10:57:53
[INFO] Installing DM DBMS...
2021-12-07 10:57:54
[INFO] Installing BASE Module...
2021-12-07 10:57:56
[INFO] Installing SERVER Module...
2021-12-07 10:57:56
[INFO] Installing CLIENT Module...
2021-12-07 10:57:57
[INFO] Installing DRIVERS Module...
2021-12-07 10:57:57
[INFO] Installing MANUAL Module...
2021-12-07 10:57:57
[INFO] Installing SERVICE Module...
2021-12-07 10:58:03
[INFO] Move log file to log directory.
2021-12-07 10:58:05
[INFO] Installed DM DBMS completely.

Please execute the commands by root:
/dm8/script/root/root_installer.sh

End

以root用户来执行上面的脚本

[root@dm8rac1 ~]# /dm8/script/root/root_installer.sh
Move /dm8/bin/dm_svc.conf to /etc
Modify the files' mode of DM Server


[dmdba@dm8rac2 dmsoft]$ ./DMInstall.bin -i
Please select the installer's language (E/e:English C/c:Chinese) [E/e]:e
Extract install files.........
Welcome to DM DBMS Installer

Whether to input the path of Key File? (Y/y:Yes N/n:No) [Y/y]:n

Whether to Set The TimeZone? (Y/y:Yes N/n:No) [Y/y]:y
TimeZone:
[ 1]: GTM-12=West Date Line
[ 2]: GTM-11=Samoa
[ 3]: GTM-10=Hawaii
[ 4]: GTM-09=Alaska
[ 5]: GTM-08=Pacific(America and Canada)
[ 6]: GTM-07=Arizona
[ 7]: GTM-06=Central(America and Canada)
[ 8]: GTM-05=East(America and Canada)
[ 9]: GTM-04=Atlantic(America and Canada)
[10]: GTM-03=Brasilia
[11]: GTM-02=Middle Atlantic
[12]: GTM-01=Azores
[13]: GTM=Greenwich Mean Time
[14]: GTM+01=Sarajevo
[15]: GTM+02=Cairo
[16]: GTM+03=Moscow
[17]: GTM+04=AbuDhabi
[18]: GTM+05=Islamabad
[19]: GTM+06=Dakar
[20]: GTM+07=BangKok,Hanoi
[21]: GTM+08=China
[22]: GTM+09=Seoul
[23]: GTM+10=Guam
[24]: GTM+11=Solomon
[25]: GTM+12=Fiji
[26]: GTM+13=Nukualofa
[27]: GTM+14=Kiribati
Please Select the TimeZone [21]:21

Installation Type:
1 Typical
2 Server
3 Client
4 Custom
Please Input the number of the Installation Type [1 Typical]:4
1 Server component
2 Client component
  2.1 Manager
  2.2 Monitor
  2.3 DTS
  2.4 Console
  2.5 Analyzer
  2.6 DISQL
3 DM Drivers
4 Manual component
5 DBMS Service
  5.1 Realtime Audit Service
  5.2 Job Service
  5.3 Instance Monitor Service
  5.4 Assistant Plug-In Service
Please Input the number of the Installation Type [1 2 3 4 5]:1 2 3 4 5
Require Space: 1242M

Please Input the install path [/home/dmdba/dmdbms]:/dm8
Available Space:39G
Please Confirm the install path(/dm8)? (Y/y:Yes N/n:No) [Y/y]:y

Pre-Installation Summary
Installation Location: /dm8
Require Space: 1242M
Available Space: 39G
Version Information:
Expire Date:
Installation Type: Custom
Confirm to Install? (Y/y:Yes N/n:No):y
2021-12-07 10:57:53
[INFO] Installing DM DBMS...
2021-12-07 10:57:54
[INFO] Installing BASE Module...
2021-12-07 10:57:56
[INFO] Installing SERVER Module...
2021-12-07 10:57:56
[INFO] Installing CLIENT Module...
2021-12-07 10:57:57
[INFO] Installing DRIVERS Module...
2021-12-07 10:57:57
[INFO] Installing MANUAL Module...
2021-12-07 10:57:57
[INFO] Installing SERVICE Module...
2021-12-07 10:58:03
[INFO] Move log file to log directory.
2021-12-07 10:58:05
[INFO] Installed DM DBMS completely.

Please execute the commands by root:
/dm8/script/root/root_installer.sh

End

以root用户来执行上面的脚本

[root@dm8rac2 ~]# /dm8/script/root/root_installer.sh
Move /dm8/bin/dm_svc.conf to /etc
Modify the files' mode of DM Server

四、绑定UDEV
编辑/etc/udev/rules.d/60-raw.rules文件

ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdf", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="sdg", RUN+="/bin/raw /dev/raw/raw6 %N"

ACTION=="add", KERNEL=="raw[1-6]", OWNER="dmdba", GROUP="dinstall", MODE="660"

[root@dm8rac1 rules.d]# /sbin/udevadm trigger --type=devices --action=change

[root@dm8rac2 rules.d]# /sbin/udevadm trigger --type=devices --action=change

如果不能正常显示就重启操作系统

[root@dm8rac1 ~]# ls -lrt /dev/raw
total 0
crw-rw---- 1 root  disk     162, 0 Dec  7 14:59 rawctl
crw-rw---- 1 dmdba dinstall 162, 5 Dec  7 14:59 raw5
crw-rw---- 1 dmdba dinstall 162, 6 Dec  7 14:59 raw6
crw-rw---- 1 dmdba dinstall 162, 4 Dec  7 14:59 raw4
crw-rw---- 1 dmdba dinstall 162, 3 Dec  7 14:59 raw3
crw-rw---- 1 dmdba dinstall 162, 2 Dec  7 14:59 raw2
crw-rw---- 1 dmdba dinstall 162, 1 Dec  7 14:59 raw1

[root@dm8rac2 ~]# ls -lrt /dev/raw
total 0
crw-rw---- 1 root  disk     162, 0 Dec  7 14:59 rawctl
crw-rw---- 1 dmdba dinstall 162, 5 Dec  7 14:59 raw5
crw-rw---- 1 dmdba dinstall 162, 6 Dec  7 14:59 raw6
crw-rw---- 1 dmdba dinstall 162, 4 Dec  7 14:59 raw4
crw-rw---- 1 dmdba dinstall 162, 3 Dec  7 14:59 raw3
crw-rw---- 1 dmdba dinstall 162, 2 Dec  7 14:59 raw2
crw-rw---- 1 dmdba dinstall 162, 1 Dec  7 14:59 raw1

可以通过blockdev –getsize64 /dev/raw/raw1命令查看裸设备大小

[root@dm8rac1 ~]# blockdev --getsize64 /dev/raw/raw1
2147483648
[root@dm8rac1 ~]# blockdev --getsize64 /dev/raw/raw2
2147483648
[root@dm8rac1 ~]# blockdev --getsize64 /dev/raw/raw3
10737418240
[root@dm8rac1 ~]# blockdev --getsize64 /dev/raw/raw4
10737418240
[root@dm8rac1 ~]# blockdev --getsize64 /dev/raw/raw5
10737418240
[root@dm8rac1 ~]# blockdev --getsize64 /dev/raw/raw6
10737418240


[root@dm8rac2 ~]# blockdev --getsize64 /dev/raw/raw1
2147483648
[root@dm8rac2 ~]# blockdev --getsize64 /dev/raw/raw2
2147483648
[root@dm8rac3 ~]# blockdev --getsize64 /dev/raw/raw3
10737418240
[root@dm8rac4 ~]# blockdev --getsize64 /dev/raw/raw4
10737418240
[root@dm8rac5 ~]# blockdev --getsize64 /dev/raw/raw5
10737418240
[root@dm8rac6 ~]# blockdev --getsize64 /dev/raw/raw6
10737418240

五.配置dmdcr_cfg.ini文件
在2个节点的/dm8/data目录下创建配置文件dmdcr_cfg.ini,在文件中添加如下内容:

[dmdba@dm8rac1 ~]$ mkdir /dm8/data

[dmdba@dm8rac2 ~]$ mkdir /dm8/data

[dmdba@dm8rac1 data]$ vi dmdcr_cfg.ini
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635

[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 10.10.13.201
DCR_EP_PORT = 5240
[GRP_CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 10.10.13.202
DCR_EP_PORT = 5240

[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.10.13.201
DCR_EP_PORT = 5241
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.10.13.202
DCR_EP_PORT = 5241
DCR_EP_ASM_LOAD_PATH = /dev/raw

[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_RAC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_RAC]
DCR_EP_NAME = RAC1
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 5243
[GRP_RAC]
DCR_EP_NAME = RAC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 5243

[dmdba@dm8rac2 data]$ vi dmdcr_cfg.ini
DCR_N_GRP = 3
DCR_VTD_PATH = /dev/raw/raw2
DCR_OGUID = 63635

[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 10.10.13.201
DCR_EP_PORT = 5240
[GRP_CSS]
DCR_EP_NAME = CSS2
DCR_EP_HOST = 10.10.13.202
DCR_EP_PORT = 5240

[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 93360
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.10.13.201
DCR_EP_PORT = 5241
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93361
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 10.10.13.202
DCR_EP_PORT = 5241
DCR_EP_ASM_LOAD_PATH = /dev/raw

[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_RAC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 60
[GRP_RAC]
DCR_EP_NAME = RAC1
DCR_EP_SEQNO = 0
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 5243
[GRP_RAC]
DCR_EP_NAME = RAC2
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5236
DCR_CHECK_PORT = 5243

六.使用 DMASMCMD 工具初始化(任意一节点执行)

[dmdba@dm8rac1 ~]$ dmasmcmd
DMASMCMD V8
ASM>create dcrdisk '/dev/raw/raw1' 'dcr'
[Trace]The ASM initialize dcrdisk /dev/raw/raw1 to name DMASMdcr
Used time: 334.533(ms).
ASM>create votedisk '/dev/raw/raw2' 'vote'
[Trace]The ASM initialize votedisk /dev/raw/raw2 to name DMASMvote
Used time: 192.761(ms).
ASM>create asmdisk '/dev/raw/raw3' 'LOG0'
[Trace]The ASM initialize asmdisk /dev/raw/raw3 to name DMASMLOG0
Used time: 189.725(ms).
ASM>create asmdisk '/dev/raw/raw4' 'DATA0'
[Trace]The ASM initialize asmdisk /dev/raw/raw4 to name DMASMDATA0
Used time: 167.320(ms).
ASM>create asmdisk '/dev/raw/raw5' 'LOG1'
[Trace]The ASM initialize asmdisk /dev/raw/raw5 to name DMASMLOG1
Used time: 132.694(ms).
ASM>create asmdisk '/dev/raw/raw6' 'DATA1'
[Trace]The ASM initialize asmdisk /dev/raw/raw6 to name DMASMDATA1
Used time: 259.934(ms).
ASM>init dcrdisk '/dev/raw/raw1' from '/dm8/data/dmdcr_cfg.ini' identified by 'dameng123'
[Trace]DG 126 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[Trace]DG 126 allocate 4 extents for file 0xfe000002.
[Trace]DG 126 alloc 4 extents for 0xfe000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 00:00:02.531.
ASM>init votedisk '/dev/raw/raw2' from '/dm8/data/dmdcr_cfg.ini'
[Trace]DG 125 alloc one extent for inodes, addr(disk_id, disk_auno, extent_no):(0,0,1).
[Trace]DG 125 allocate 4 extents for file 0xfd000002.
[Trace]DG 125 alloc 4 extents for 0xfd000002, addr(disk_id, disk_auno, extent_no):(0, 0, 2)->(0, 0, 5), need_init = 1.
Used time: 00:00:01.089.
ASM>

七.准备DMASM 的 MAL 配置文件
在2个节点的/dm8/data目录下创建 DMASM 的 MAL 配置文件(命名为 dmasvrmal.ini),使用 DMASM 的所有节点都要配置,内容完全一样。

[dmdba@dm8rac1 data]$ vi dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 10.10.13.201
MAL_PORT = 5242

[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 10.10.13.202
MAL_PORT = 5242


[dmdba@dm8rac2 data]$ vi dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 10.10.13.201
MAL_PORT = 5242

[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 10.10.13.202
MAL_PORT = 5242

八.准备dmdcr.ini 配置文件
dmdcr.ini 是 dmcss、dmasmsvr、dmasmtool 工具的输入参数。记录了当前节点序列号以及 DCR 磁盘路径。在2个节点的/dm/dmdbms/data目录下创建dmdcr.ini 配置文件,dmdcr_path 相同,dmasvrmal.ini 文件内容也相同,dmdcr_seqo 分别为 0 和 1。
节点 1:

[dmdba@dm8rac1 data]$ vi dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm8/data/dmasvrmal.ini
DMDCR_SEQNO = 0

#ASM
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/dm8/data/dmdcr.ini

#DB
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmserver path=/dm8/data/config/rac1/dm.ini dcr_ini=/dm8/data/dmdcr.ini


节点2:

[dmdba@dm8rac2 data]$ vi dmdcr.ini
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/dm8/data/dmasvrmal.ini
DMDCR_SEQNO = 1

#ASM
DMDCR_ASM_RESTART_INTERVAL = 10
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr dcr_ini=/dm8/data/dmdcr.ini

#DB
DMDCR_DB_RESTART_INTERVAL = 30
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmserver path=/dm8/data/config/rac2/dm.ini dcr_ini=/dm8/data/dmdcr.ini

九.启动DMCSS、DMASM 服务程序
1、注册 DMCSS和DMASM服务
节点一:

[root@dm8rac1 ~]# /dm8/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm8/data/dmdcr.ini -p rac1
Created symlink from /etc/systemd/system/multi-user.target.wants/DmCSSServicerac1.service to /usr/lib/systemd/system/DmCSSServicerac1.service.
Finished to create the service (DmCSSServicerac1)
[root@dm8rac1 ~]# /dm8/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm8/data/dmdcr.ini -p rac1 -y DmCSSServicerac1
Created symlink from /etc/systemd/system/multi-user.target.wants/DmASMSvrServicerac1.service to /usr/lib/systemd/system/DmASMSvrServicerac1.service.
Finished to create the service (DmASMSvrServicerac1)

节点二:

[root@dm8rac2 ~]# /dm8/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dm8/data/dmdcr.ini -p rac2
Created symlink from /etc/systemd/system/multi-user.target.wants/DmCSSServicerac2.service to /usr/lib/systemd/system/DmCSSServicerac2.service.
Finished to create the service (DmCSSServicerac2)
[root@dm8rac2 ~]# /dm8/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dm8/data/dmdcr.ini -p rac2 -y DmCSSServicerac2
Created symlink from /etc/systemd/system/multi-user.target.wants/DmASMSvrServicerac2.service to /usr/lib/systemd/system/DmASMSvrServicerac2.service.
Finished to create the service (DmASMSvrServicerac2)

2、启动DMCSS和DMASM服务
节点一

[root@dm8rac1 ~]# service DmCSSServicerac1 start
Redirecting to /bin/systemctl start DmCSSServicerac1.service
[root@dm8rac1 ~]# ps -ef | grep dmdba
root      2952  2618  0 16:28 pts/0    00:00:00 su - dmdba
dmdba     2953  2952  0 16:28 pts/0    00:00:00 -bash
dmdba     3468     1  0 16:48 ?        00:00:00 /dm8/bin/dmcss dcr_ini=/dm8/data/dmdcr.ini
dmdba     3492     1  0 16:49 ?        00:00:00 /dm8/bin/dmasmsvr dcr_ini=/dm8/data/dmdcr.ini
root      3504  3205  0 16:49 pts/1    00:00:00 grep --color=auto dmdba

节点二

[root@dm8rac2 ~]# service DmCSSServicerac2 start
Redirecting to /bin/systemctl start DmCSSServicerac2.service
[root@dm8rac2 ~]# ps -ef | grep dmdba
root      2952  2619  0 16:28 pts/0    00:00:00 su - dmdba
dmdba     2953  2952  0 16:28 pts/0    00:00:00 -bash
dmdba     3456     1  0 16:49 ?        00:00:00 /dm8/bin/dmcss dcr_ini=/dm8/data/dmdcr.ini
dmdba     3480     1  1 16:49 ?        00:00:00 /dm8/bin/dmasmsvr dcr_ini=/dm8/data/dmdcr.ini
root      3496  3193  0 16:49 pts/1    00:00:00 grep --color=auto dmdba

css 服务启动后会自动拉起asm服务,因为在dmdcr.ini文件中配置自动拉起ASM和DB的操作。

十、创建DMASM磁盘组
在任意节点使用 dmasmtool 工具创建 DMASM 磁盘组。

[dmdba@dm8rac1 data]$ dmasmtool DCR_INI=/dm8/data/dmdcr.ini
DMASMTOOL V8
ASM>create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3'
Used time: 428.934(ms).
ASM>create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
Used time: 284.431(ms).
ASM>

十一、准备dminit.ini 配置文件
在2个节点的/dm8/data目录下创建 dminit.ini 配置文件,添加如下内容。 在2个节点都创建。

[dmdba@dm8rac1 data]$ vi dminit.ini
db_name = rac
system_path = +DMDATA/data
system = +DMDATA/data/rac/system.dbf
system_size = 128
roll = +DMDATA/data/rac/roll.dbf
roll_size = 128
main = +DMDATA/data/rac/main.dbf
main_size = 128
ctl_path = +DMDATA/data/rac/dm.ctl
ctl_size = 8
log_size = 256
dcr_path = /dev/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1

[RAC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dm8/data/config/rac1
port_num = 5236
mal_host = 10.10.13.201
mal_port = 5238
log_path = +DMLOG/log/rac0_log01.log
log_path = +DMLOG/log/rac0_log02.log

[RAC2] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dm8/data/config/rac2
port_num = 5236
mal_host = 10.10.13.202
mal_port = 5238
log_path = +DMLOG/log/rac1_log01.log
log_path = +DMLOG/log/rac1_log02.log


[dmdba@dm8rac2 data]$ vi dminit.ini
db_name = rac
system_path = +DMDATA/data
system = +DMDATA/data/rac/system.dbf
system_size = 128
roll = +DMDATA/data/rac/roll.dbf
roll_size = 128
main = +DMDATA/data/rac/main.dbf
main_size = 128
ctl_path = +DMDATA/data/rac/dm.ctl
ctl_size = 8
log_size = 256
dcr_path = /dev/raw/raw1 #dcr 磁盘路径,目前不支持 asm,只能是裸设备
dcr_seqno = 0
auto_overwrite = 1

[RAC1] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dm8/data/config/rac1
port_num = 5236
mal_host = 10.10.13.201
mal_port = 5238
log_path = +DMLOG/log/rac0_log01.log
log_path = +DMLOG/log/rac0_log02.log

[RAC2] #inst_name 跟 dmdcr_cfg.ini 中 DB 类型 group 中 DCR_EP_NAME 对应
config_path = /dm8/data/config/rac2
port_num = 5236
mal_host = 10.10.13.202
mal_port = 5238
log_path = +DMLOG/log/rac1_log01.log
log_path = +DMLOG/log/rac1_log02.log

十二、使用dminit初始化数据库
在任意节点启动 dminit 工具初始化数据库。dminit 执行完成后,会在 config_path 目录(/dm8/data/config/rac1 和/dm8/data/config/rac2)下生成配置文件 dm.ini 和 dmmal.ini。

[dmdba@dm8rac1 data]$ dminit control=/dm8/data/dminit.ini
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: +DMLOG/log/rac0_log01.log


 log file path: +DMLOG/log/rac0_log02.log


 log file path: +DMLOG/log/rac1_log01.log


 log file path: +DMLOG/log/rac1_log02.log

write to dir [+DMDATA/data/rac].
create dm database success. 2022-02-25 16:59:26

将节点一上的/dm8/data/config中的rac2配置目录复制到节点二:

[dmdba@dm8rac1 config]$ scp -r rac2 110.10.13.202:/dm8/data/config/
^C[dmdba@dm8rac1 config]$ scp -r rac2 10.10.13.202:/dm8/data/config/
The authenticity of host '10.10.13.202 (10.10.13.202)' can't be established.
ECDSA key fingerprint is SHA256:6O8c9WEeEYPbL4ncdRR1RsrjxxmfzPq9Tkq4/6uLSP4.
ECDSA key fingerprint is MD5:e1:73:3e:8d:79:be:5c:82:0f:c7:58:79:45:ad:df:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.13.202' (ECDSA) to the list of known hosts.
dmdba@10.10.13.202's password:
dmmal.ini                                                                                                                                                                                                100%  208     8.7KB/s   00:00
dm.ini                                                                                                                                                                                                   100%   53KB   3.0MB/s   00:00
sqllog.ini                                                                                                                                                                                               100%  481    15.3KB/s   00:00
[dmdba@dm8rac1 config]$

十三、启动数据库服务器
1、在2个节点分别注册DM 数据库服务:
节点一:

[root@dm8rac1 ~]# /dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm8/data/config/rac1/dm.ini -dcr_ini /dm8/data/dmdcr.ini -p rac1 -y DmASMSvrServicerac1
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicerac1.service to /usr/lib/systemd/system/DmServicerac1.service.
Finished to create the service (DmServicerac1)

节点二:

[root@dm8rac2 ~]# /dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm8/data/config/rac2/dm.ini -dcr_ini /dm8/data/dmdcr.ini -p rac2 -y DmASMSvrServicerac2
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicerac2.service to /usr/lib/systemd/system/DmServicerac2.service.
Finished to create the service (DmServicerac2)

这里可以手动启动数据库服务来启动数据库,也可以重启CSS服务来启动数据库,因为配置CSS会自动拉起数据库

[root@dm8rac1 ~]# service DmCSSServicerac1 start
Redirecting to /bin/systemctl start DmCSSServicerac1.service

[root@dm8rac1 ~]# ps -ef | grep dmdba
root      2952  2618  0 16:28 pts/0    00:00:00 su - dmdba
dmdba     2953  2952  0 16:28 pts/0    00:00:00 -bash
root      3680  3629  0 16:59 pts/2    00:00:00 su - dmdba
dmdba     3681  3680  0 16:59 pts/2    00:00:00 -bash
dmdba     4150     1  0 17:13 ?        00:00:00 /dm8/bin/dmcss dcr_ini=/dm8/data/dmdcr.ini
dmdba     4176     1  0 17:13 ?        00:00:00 /dm8/bin/dmasmsvr dcr_ini=/dm8/data/dmdcr.ini
dmdba     4274     1  1 17:14 ?        00:00:00 /dm8/bin/dmserver path=/dm8/data/config/rac1/dm.ini dcr_ini=/dm8/data/dmdcr.ini
root      4319  3205  0 17:14 pts/1    00:00:00 grep --color=auto dmdba

[root@dm8rac2 ~]# service DmCSSServicerac2 restart
Redirecting to /bin/systemctl restart DmCSSServicerac2.service
[root@dm8rac2 ~]# ps -ef | grep dmdba
root      2952  2619  0 16:28 pts/0    00:00:00 su - dmdba
dmdba     2953  2952  0 16:28 pts/0    00:00:00 -bash
root      3681  3630  0 17:00 pts/2    00:00:00 su - dmdba
dmdba     3682  3681  0 17:00 pts/2    00:00:00 -bash
dmdba     4124     1  0 17:13 ?        00:00:00 /dm8/bin/dmcss dcr_ini=/dm8/data/dmdcr.ini
dmdba     4148     1  0 17:13 ?        00:00:00 /dm8/bin/dmasmsvr dcr_ini=/dm8/data/dmdcr.ini
dmdba     4177     1  3 17:14 ?        00:00:00 /dm8/bin/dmserver path=/dm8/data/config/rac2/dm.ini dcr_ini=/dm8/data/dmdcr.ini
root      4203  3193  0 17:14 pts/1    00:00:00 grep --color=auto dmdba

DSC+单机的DW部署
为DSC集群配置实时备机(单机),组成数据守护集群(DW)

配置DSC集群监视器
任意节点新建监视器配置文件,执行以下命令:

[dmdba@dm8rac1 data]$ vi dmcssm.ini
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 10.10.13.201:5240
CSSM_CSS_IP = 10.10.13.202:5240
CSSM_LOG_PATH =/dm8/dmcssm/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32 MB
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

启动监视器,dmdba 用户执行,

"dmcssm.ini" [New] 9L, 439C written
[dmdba@dm8rac1 data]$ dmcssm ini_path=/dm8/data/dmcssm.ini
[monitor]         2022-02-25 20:49:03: CSS MONITOR V8
[monitor]         2022-02-25 20:49:03: CSS MONITOR SYSTEM IS READY.

[monitor]         2022-02-25 20:49:03: Wait CSS Control Node choosed...
[monitor]         2022-02-25 20:49:04: Wait CSS Control Node choosed succeed.

show

monitor current time:2022-02-25 20:49:08, n_group:3
=================== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 0] ========================================

[CSS1] auto check = TRUE, global info:
[ASM1] auto restart = TRUE
[RAC1] auto restart = TRUE

[CSS2] auto check = TRUE, global info:
[ASM2] auto restart = TRUE
[RAC2] auto restart = TRUE


ep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts
        2022-02-25 20:49:08    CSS1          0         5240    Control Node OPEN               WORKING      OK           TRUE         245896425         245896870
        2022-02-25 20:49:08    CSS2          1         5240    Normal Node  OPEN               WORKING      OK           TRUE         245897746         245898186

=================== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 1] ========================================

n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is TRUE
ep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts
        2022-02-25 20:49:08    ASM1          0         5241    Normal Node  OPEN               WORKING      OK           TRUE         245903152         245901946
        2022-02-25 20:49:08    ASM2          1         5241    Control Node OPEN               WORKING      OK           TRUE         245902734         245903157

=================== group[name = GRP_RAC, seq = 2, type = DB, Control Node = 0] ========================================

n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is TRUE
ep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts
        2022-02-25 20:49:08    RAC1          0         5236    Control Node OPEN               WORKING      OK           TRUE         80515155          80515546
        2022-02-25 20:49:08    RAC2          1         5236    Normal Node  OPEN               WORKING      OK           TRUE         80513792          80514195

==================================================================================================================

脱机备份DSC数据库
在监视器中关闭数据库实例,执行以下命令

ep stop GRP_RAC
[monitor]         2022-02-25 20:52:24: Notify CSS(seqno:0) set ep(RAC1)auto restart off
[monitor]         2022-02-25 20:52:25: Notify CSS(seqno:0) set ep(RAC1)auto restart off success
[monitor]         2022-02-25 20:52:25: Notify CSS(seqno:1) set ep(RAC2)auto restart off
[monitor]         2022-02-25 20:52:25: Notify CSS(seqno:1) set ep(RAC2)auto restart off success
[monitor]         2022-02-25 20:52:25: Set CSS auto restart off success
[monitor]         2022-02-25 20:52:25: Notify CSS(seqno:0) execute EP STOP(GRP_RAC)
[monitor]         2022-02-25 20:52:31: Notify current active CSS to do clear
[monitor]         2022-02-25 20:52:32: Clean request of CSS(0) success
[monitor]         2022-02-25 20:52:32: Clean request of CSS(1) success
[monitor]         2022-02-25 20:52:32: Command EP STOP GRP_RAC execute success

show

monitor current time:2022-02-25 20:52:39, n_group:3
=================== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 0] ========================================

[CSS1] auto check = TRUE, global info:
[ASM1] auto restart = TRUE
[RAC1] auto restart = FALSE

[CSS2] auto check = TRUE, global info:
[ASM2] auto restart = TRUE
[RAC2] auto restart = FALSE


ep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts
        2022-02-25 20:52:38    CSS1          0         5240    Control Node OPEN               WORKING      OK           TRUE         245896425         245897077
        2022-02-25 20:52:38    CSS2          1         5240    Normal Node  OPEN               WORKING      OK           TRUE         245897746         245898393

=================== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 1] ========================================

n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is TRUE
ep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts
        2022-02-25 20:52:38    ASM1          0         5241    Normal Node  OPEN               WORKING      OK           TRUE         245903152         245902153
        2022-02-25 20:52:38    ASM2          1         5241    Control Node OPEN               WORKING      OK           TRUE         245902734         245903364

=================== group[name = GRP_RAC, seq = 2, type = DB, Control Node = 255] ========================================

n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is FALSE
ep:     css_time               inst_name     seqno     port    mode         inst_status        vtd_status   is_ok        active       guid              ts
        2022-02-25 20:52:38    RAC1          0         5236    Normal Node  SHUTDOWN           SHUTDOWN     OK           FALSE        80515155          80515746
        2022-02-25 20:52:38    RAC2          1         5236    Normal Node  SHUTDOWN           SHUTDOWN     OK           FALSE        80513792          80514394

==================================================================================================================

使用dmrman工具备份数据库,dmdba用户执行
注册DmAP服务(可以不使用dmap,在使用dmrman时使用参数use_ap=2时)

[root@dm8rac1 ~]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)

启动DmAP服务

[root@dm8rac1 ~]# service DmAPService start
Redirecting to /bin/systemctl start DmAPService.service

[dmdba@dm8rac1 data]$ dmrman use_ap=2 dcr_ini=/dm8/data/dmdcr.ini
dmrman V8
RMAN> backup database '/dm8/data/config/rac1/dm.ini' full backupset '/dm8/data/racfullbak';
backup database '/dm8/data/config/rac1/dm.ini' full backupset '/dm8/data/racfullbak';
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[29267], file_lsn[29267]
EP[1]'s cur_lsn[29267]
EP[0] adjust cur_lsn from [29267] to [29267]
Processing backupset /dm8/data/racfullbak
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:01][Remaining:00:00:00]
backup successfully!
time used: 00:00:08.410

备份完成将备份文件拷贝到DSC备库(10.10.13.227上合适的目录)

[dmdba@dm8rac1 data]$ scp -r racfullbak 10.10.13.227:/dm8/data/
The authenticity of host '10.10.13.227 (10.10.13.227)' can't be established.
ECDSA key fingerprint is SHA256:6O8c9WEeEYPbL4ncdRR1RsrjxxmfzPq9Tkq4/6uLSP4.
ECDSA key fingerprint is MD5:e1:73:3e:8d:79:be:5c:82:0f:c7:58:79:45:ad:df:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.13.227' (ECDSA) to the list of known hosts.
dmdba@10.10.13.227's password:
racfullbak.bak                                                                                                                                                                                           100% 6262KB  29.3MB/s   00:00
racfullbak.meta                                                                                                                                                                                          100%   77KB   3.4MB/s   00:00
[dmdba@dm8rac1 data]$

备库创建实例
备库上使用 dmdba 用户执行实例初始化

[dmdba@dm8racst ~]$ dminit path=/dm8/data/  db_name=rac_st
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/rac_st/rac_st01.log


 log file path: /dm8/data/rac_st/rac_st02.log

write to dir [/dm8/data/rac_st].
create dm database success. 2022-02-25 21:25:01

使用DMDSC库的备份集还原恢复到单节点备库

[dmdba@dm8racst ~]$ dmrman use_ap=2
dmrman V8
RMAN> restore database '/dm8/data/rac_st/dm.ini' from backupset '/dm8/data/racfullbak';
restore database '/dm8/data/rac_st/dm.ini' from backupset '/dm8/data/racfullbak';
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:05][Remaining:00:00:00]
restore successfully.
time used: 00:00:05.801
RMAN> recover database '/dm8/data/rac_st/dm.ini' from backupset '/dm8/data/racfullbak';
recover database '/dm8/data/rac_st/dm.ini' from backupset '/dm8/data/racfullbak';
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[29267], file_lsn[29267]
no log generates while the backupset [/dm8/data/racfullbak] created
recover successfully!
time used: 296.715(ms)
RMAN> recover database '/dm8/data/rac_st/dm.ini' update db_magic;
recover database '/dm8/data/rac_st/dm.ini' update db_magic;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[29267], file_lsn[29267]
recover successfully!
time used: 00:00:01.048

修改DSC实例配置文件
RAC集群的2个节点都需要修改
rac1上 dmdba用户执行
vi /dm8/data/config/rac1/dm.ini
修改以下参数值

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态

ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间

ARCH_INI = 1 #开启归档模式

rac2上 dmdba用户执行
vi /dm8/data/config/rac2/dm.ini
修改以下参数值

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态

ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间

ARCH_INI = 1 #开启归档模式

修改DSC MAL系统配置文件
rac1上 dmdba用户执行

[dmdba@dm8rac1 data]$ vi /dm8/data/config/rac1/dmmal.ini
[mal_inst0]
mal_inst_name = RAC1
mal_host = 10.10.13.201
mal_port = 5238
mal_inst_host = 10.10.13.201
mal_inst_port = 5236
mal_dw_port = 5239
mal_inst_dw_port = 5237

[mal_inst1]
mal_inst_name = RAC2
mal_host = 10.10.13.202
mal_port = 5238
mal_inst_host = 10.10.13.202
mal_inst_port = 5236
mal_dw_port = 5239
mal_inst_dw_port = 5237

[mal_inst2]
mal_inst_name = RAC_ST
mal_host = 10.10.13.227
mal_port = 5238
mal_inst_host = 10.10.13.227
mal_inst_port = 5236
mal_dw_port = 5239
mal_inst_dw_port = 5237

rac2上 dmdba用户执行

[dmdba@dm8rac2 ~]$ vi /dm8/data/config/rac2/dmmal.ini
[mal_inst0]
mal_inst_name = RAC1
mal_host = 10.10.13.201
mal_port = 5238
mal_inst_host = 10.10.13.201
mal_inst_port = 5236
mal_dw_port = 5239
mal_inst_dw_port = 5237

[mal_inst1]
mal_inst_name = RAC2
mal_host = 10.10.13.202
mal_port = 5238
mal_inst_host = 10.10.13.202
mal_inst_port = 5236
mal_dw_port = 5239
mal_inst_dw_port = 5237

[mal_inst2]
mal_inst_name = RAC_ST
mal_host = 10.10.13.227
mal_port = 5238
mal_inst_host = 10.10.13.227
mal_inst_port = 5236
mal_dw_port = 5239
mal_inst_dw_port = 5237

配置DSC归档配置文件
RAC集群的2个节点都需要修改

rac1上 dmdba用户执行

[dmdba@dm8rac1 data]$ vi /dm8/data/config/rac1/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/arch_local
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 51200

[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = RAC2
ARCH_INCOMING_PATH = /dm8/data/arch_remote
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 51200

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = RAC_ST

rac2上 dmdba用户执行

[dmdba@dm8rac2 ~]$ vi /dm8/data/config/rac2/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/arch_local
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 51200

[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = RAC1
ARCH_INCOMING_PATH = /dm8/data/arch_remote
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 51200

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = RAC_ST

配置DSC数据守护配置文件
RAC集群的2个节点都需要修改

rac1上 dmdba用户执行

[dmdba@dm8rac1 data]$ vi /dm8/data/config/rac1/dmwatcher.ini
[GRP_RAC_DW]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 35 #本地实例故障认定时间
INST_OGUID = 100001 #守护系统唯一 OGUID 值
INST_INI = /dm8/data/config/rac1/dm.ini #dm.ini 配置文件路径
DCR_INI =/dm8/data/dmdcr.ini #dmdcr.ini 配置文件路径
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能

rac2上 dmdba用户执行

[dmdba@dm8rac2 ~]$ vi /dm8/data/config/rac2/dmwatcher.ini
[GRP_RAC_DW]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 35 #本地实例故障认定时间
INST_OGUID = 100001 #守护系统唯一 OGUID 值
INST_INI = /dm8/data/config/rac2/dm.ini #dm.ini 配置文件路径
DCR_INI =/dm8/data/dmdcr.ini #dmdcr.ini 配置文件路径
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能

修改备库实例配置文件
vi /dm8/data/rac_st/dm.ini
修改以下参数值

INSTANCE_NAME=RAC_ST #实例名

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态

ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间

ARCH_INI = 1 #开启归档模式

MAL_INI = 1 #开启MAL系统

配置备库归档配置文件

[dmdba@dm8racst rac_st]$ vi /dm8/data/rac_st/dmarch.ini
[ARCHIVE_LOCAL1]
arch_type =local
arch_dest = /dm8/data/arch
arch_file_size = 64
arch_space_limit = 51200

[ARCHIVE_REALTIME]
arch_type = realtime
arch_dest = RAC1/RAC2

[dmdba@dm8racst rac_st]$ vi /dm8/data/rac_st/dmmal.ini
[mal_inst0]
mal_inst_name = RAC1
mal_host = 10.10.13.201
mal_port = 5238
mal_inst_host = 10.10.13.201
mal_inst_port = 5236
mal_dw_port = 5239
mal_inst_dw_port = 5237

[mal_inst1]
mal_inst_name = RAC2
mal_host = 10.10.13.202
mal_port = 5238
mal_inst_host = 10.10.13.202
mal_inst_port = 5236
mal_dw_port = 5239
mal_inst_dw_port = 5237

[mal_inst2]
mal_inst_name = RAC_ST
mal_host = 10.10.13.227
mal_port = 5238
mal_inst_host = 10.10.13.227
mal_inst_port = 5236
mal_dw_port = 5239
mal_inst_dw_port = 5237

配置备库数据守护配置文件

[dmdba@dm8racst ~]$ vi /dm8/data/rac_st/dmwatcher.ini
[GRP_RAC_DW]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 35 #本地实例故障认定时间
INST_OGUID = 100001 #守护系统唯一 OGUID 值
INST_INI = /dm8/data/rac_st/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #关闭实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动

启动所有实例到mount状态
在rac1上启动实例,使用dmdba用户执行

[dmdba@dm8rac1 ~]$ dmserver path=/dm8/data/config/rac1/dm.ini dcr_ini=/dm8/data/dmdcr.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
hlck_sys_init, init g_drm_dest:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
lbs_sys_init, the length of g_master_map is 1451, fill it use ok_ep_arr:[0, 1], n_ok_ep:2!
check CSS cmd: START NOTIFY, cmd_seq: 29
Control Node change from 255 to 254
check CSS cmd: DCR_LOAD, cmd_seq: 30
check CSS cmd: EP START, cmd_seq: 33
Control Node change from 254 to 0
file lsn: 29267
check CSS cmd: EP START2, cmd_seq: 38
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
check CSS cmd: EP OPEN, cmd_seq: 43
iid page's trxid[8020]
NEXT TRX ID = 9024.
[!!!DSC INFO!!!] DSC crash process over!
check CSS cmd: EP REAL OPEN, cmd_seq: 46

在rac2上启动实例,使用dmdba用户执行

[dmdba@dm8rac2 ~]$ dmserver path=/dm8/data/config/rac2/dm.ini dcr_ini=/dm8/data/dmdcr.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
hpc_ini_info_pre_check end, code:0
hlck_sys_init, init g_drm_dest:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
lbs_sys_init, the length of g_master_map is 1451, fill it use ok_ep_arr:[0, 1], n_ok_ep:2!
check CSS cmd: DCR_LOAD, cmd_seq: 31
check CSS cmd: EP START, cmd_seq: 35
Control Node change from 255 to 0
mal_tsk_process_g_crash_lsn_bro, ep_seqno(0), crash_lsn(0)
mal_tsk_process_g_crash_lsn_bro, ep_seqno(1), crash_lsn(0)
check CSS cmd: EP START2, cmd_seq: 40
Control node start status: MOUNT
file lsn: 29267
begin redo pwr log collect, last ckpt lsn: 29267 ...
redo pwr log collect finished
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
check CSS cmd: EP OPEN, cmd_seq: 44
iid page's trxid[8021]
NEXT TRX ID = 9025.
check CSS cmd: EP REAL OPEN, cmd_seq: 47

在备库上启动实例,使用dmdba用户执行

[dmdba@dm8racst ~]$ dmserver path=/dm8/data/rac_st/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 29267
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

修改主备库模式
使用disql工具连接各实例,rac任意节点使用dmdba执行

这里需要注意的是rac是多实例单库,设置oguid是针对实例而言,rac两个实例都需要改,但是这种数据库为主库,则只需要选择一个节点执行即可。

[dmdba@dm8rac1 data]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 7.071(ms)
disql V8
SQL> sp_set_oguid(100001);
DMSQL executed successfully
used time: 312.734(ms). Execute id is 0.


[dmdba@dm8rac2 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 4.016(ms)
disql V8
SQL> sp_set_oguid(100001);
DMSQL executed successfully
used time: 263.902(ms). Execute id is 0.
SQL> alter database primary;
executed successfully
used time: 270.052(ms). Execute id is 0.


[dmdba@dm8racst dm8]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.887(ms)
disql V8
SQL> sp_set_oguid(100001);
DMSQL executed successfully
used time: 65.576(ms). Execute id is 0.
SQL> alter database standby;
executed successfully
used time: 41.479(ms). Execute id is 0.

启动所有节点守护进程
注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。

所有节点都需要注册,使用 root 用户执行

rac1 执行以下命令:
[root@dm8rac1 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/config/rac1/dmwatcher.ini -p rac1 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicerac1.service to /usr/lib/systemd/system/DmWatcherServicerac1.service.
Finished to create the service (DmWatcherServicerac1)

rac2 执行以下命令:

[root@dm8rac2 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/config/rac2/dmwatcher.ini -p rac2 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicerac2.service to /usr/lib/systemd/system/DmWatcherServicerac2.service.
Finished to create the service (DmWatcherServicerac2)

rac_st 执行以下命令:

[root@dm8racst ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/rac_st/dmwatcher.ini -p rac_st -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicerac_st.service to /usr/lib/systemd/system/DmWatcherServicerac_st.service.
Finished to create the service (DmWatcherServicerac_st)

以服务方式启动守护进程
rac1 执行以下命令:

[root@dm8rac1 ~]# service DmWatcherServicerac1 start
Redirecting to /bin/systemctl start DmWatcherServicerac1.service

rac2 执行以下命令

[root@dm8rac2 ~]# service DmWatcherServicerac2 start
Redirecting to /bin/systemctl start DmWatcherServicerac2.service

rac_st 执行以下命令:

[root@dm8racst ~]# service DmWatcherServicerac_st start
Redirecting to /bin/systemctl start DmWatcherServicerac_st.service

配置dmmonitor.ini

[dmdba@dm8racst1 data]$ vi dmmonitor.ini
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 64
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 0

[GRP_RAC_DW]
MON_INST_OGUID = 100001

MON_DW_IP = 10.10.13.201:5239/10.10.13.202:5239
MON_DW_IP = 10.10.13.227:5239

启动数据守护监视器:

[dmdba@dm8racst1 data]$ dmmonitor path=/dm8/data/dmmonitor.ini
[monitor]         2022-02-25 22:30:45: DMMONITOR[4.0] V8
[monitor]         2022-02-25 22:30:46: DMMONITOR[4.0] IS READY.

[monitor]         2022-02-25 22:30:46: Received message from(RAC2)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-25 22:30:46  STARTUP        OK        RAC1             OPEN        PRIMARY   VALID    3        31768           31768

[monitor]         2022-02-25 22:30:46: Received message from(RAC1)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-25 22:30:46  OPEN           OK        RAC1             OPEN        PRIMARY   VALID    3        31768           31768

[monitor]         2022-02-25 22:30:46: Received message from(RAC_ST)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-25 22:30:46  OPEN           OK        RAC_ST           OPEN        STANDBY   VALID    3        31768           31768

show
2022-02-25 22:31:20
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP_RAC_DW       100001      FALSE           MANUAL          FALSE


< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.201      5239         2022-02-25 22:31:20  GLOBAL    VALID     OPEN           RAC1             OK        2     2     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.201      5236       OK        RAC1             OPEN        PRIMARY   0          0            REALTIME  VALID    4195            31768           4195            31768           NONE
10.10.13.202      5236       OK        RAC2             OPEN        PRIMARY   1          0            REALTIME  VALID    2476            31768           2476            31768           NONE

< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.227      5239         2022-02-25 22:31:20  GLOBAL    VALID     OPEN           RAC_ST           OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.227      5236       OK        RAC_ST           OPEN        STANDBY   0          0            REALTIME  VALID    4188            31768           4188            31768           NONE

DATABASE(RAC_ST) APPLY INFO FROM (RAC1), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4195, 4195, 4195], (RLSN, SLSN, KLSN)[31768, 31768, 31768], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (31768)

DSC_SEQNO[1], (RSEQ, SSEQ, KSEQ)[2476, 2476, 2476], (RLSN, SLSN, KLSN)[31768, 31768, 31768], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (31768)


#================================================================================#

测试DSC+DW集群
使用disql工具连接任意rac节点,创建测试表test,并插入数据测试

[dmdba@dm8rac1 data]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is primary, state is open
login used time : 3.518(ms)
disql V8
SQL> create table test(id int);
executed successfully
used time: 140.246(ms). Execute id is 300.
SQL> insert into test values (1);
affect rows 1

used time: 1.927(ms). Execute id is 301.
SQL> commit;
executed successfully
used time: 12.186(ms). Execute id is 302.
SQL> select * from test;

LINEID     ID
---------- -----------
1          1

used time: 1.543(ms). Execute id is 303.

备库查询

[dmdba@dm8racst dm8]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is standby, state is open
login used time : 3.050(ms)
disql V8
SQL> select * from test;

LINEID     ID
---------- -----------
1          1

used time: 5.496(ms). Execute id is 200.

DM8动态增加读写分离集群节点

动态增加读写分离集群节点
配置读写分离集群
下列机器事先都安装了DM,安装路径为’/dm8’,执行程序保存在’/dm8/bin’目录中,数据存放路径为’/dm8/data’。

各主备库的实例名建议采用“组名_守护环境_序号”的方式命名,方便按组区分不同实例,注意总长度不能超过16。本示例中组名为“GRP1”,配置为读写分离集群,主库命名为“jy1”,备库分别命名为“jy2”和“jy3”。

机器名     IP地址                      初始状态                          操作系统
dm8rw1     10.10.13.213(对外)       主库 jy1                          redhat 7.8
           10.10.13.213(mal对内)

dm8rw2     10.10.13.214(对外)
           10.10.13.214(mal对内)     备库 jy2                          redhat 7.8

dm8rw3     10.10.13.215(对外)
           10.10.13.215(mal对内)     备库 jy3                          redhat 7.8

dm8rw4     10.10.13.216              确认监视器                       redhat 7.8



实例名              port_num             mal_inst_dw_port    mal_host                mal_port        mal_dw_port
jy1                 5236                 5237                10.10.13.213          5238            5239
jy2                 5236                 5237                10.10.13.214          5238            5239
jy3                 5236                 5237                10.10.13.215          5238            5239

安装DM数据库软件

数据准备
在主库机器上初始化数据库到目录/dm8/data:

[dmdba@dm8rw1 dm8]$ dminit path=/dm8/data db_name=jy instance_name=jy1 port_num=5236 page_size=8 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/jy/jy01.log


 log file path: /dm8/data/jy/jy02.log

write to dir [/dm8/data/jy].
create dm database success. 2022-01-18 21:10:20


创建DmAPService用于dmrman来执行备份
主库

[root@dm8rw1 bin]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)

[root@dm8rw1 bin]# service DmAPService start
Redirecting to /bin/systemctl start DmAPService.service

备库jy2

[root@dm8rw2 bin]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)

[root@dm8rw2 bin]# service DmAPService start
Redirecting to /bin/systemctl start DmAPService.service

备库jy3

[root@dm8rw3 bin]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)
[root@dm8rw3 bin]# service DmAPService start
Redirecting to /bin/systemctl start DmAPService.service

注册服务用于启动数据库

[root@dm8rw1 bin]# /dm8/script/root/dm_service_installer.sh -dm_ini /dm8/data/jy/dm.ini -p jy1 -t dmserver
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicejy1.service to /usr/lib/systemd/system/DmServicejy1.service.
Finished to create the service (DmServicejy1)

正常启动数据库并正常关闭

[root@dm8rw1 bin]# service DmServicejy1 start
Redirecting to /bin/systemctl start DmServicejy1.service

[dmdba@dm8rw1 jy]$ disql SySDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is open
login used time : 4.305(ms)
disql V8
SQL> select instance_name from v$instance;

LINEID     INSTANCE_NAME
---------- -------------
1          JY1

used time: 5.512(ms). Execute id is 53700.

[root@dm8rw1 bin]# service DmServicejy1 stop
Redirecting to /bin/systemctl stop DmServicejy1.service

备份主库

1. 正常关闭数据库

[root@dm8rw1 bin]# service DmServicejy1 stop
Redirecting to /bin/systemctl stop DmServicejy1.service

2.使用dmrman来进行冷备份

[dmdba@dm8rw1 jy]$ dmrman CTLSTMT="backup database '/dm8/data/jy/dm.ini' full backupset  '/dm8/jy1_full_bak_1'"
dmrman V8
backup database '/dm8/data/jy/dm.ini' full backupset '/dm8/jy1_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26788], file_lsn[26788]
Processing backupset /dm8/jy1_full_bak_1
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.468

将主库的备份复制备库:

[dmdba@dm8rw1 dm8]$ scp -r jy1_full_bak_1 10.10.13.214:/dm8
dmdba@10.10.13.214's password:
jy1_full_bak_1.bak                                                                                                                                                                                       100% 6334KB  24.8MB/s   00:00
jy1_full_bak_1.meta                                                                                                                                                                                      100%   77KB   4.2MB/s   00:00
[dmdba@dm8rw1 dm8]$ scp -r jy1_full_bak_1 10.10.13.215:/dm8
dmdba@10.10.13.215's password:
jy1_full_bak_1.bak                                                                                                                                                                                       100% 6334KB  10.9MB/s   00:00
jy1_full_bak_1.meta                                                                                                                                                                                      100%   77KB   1.2MB/s   00:00
[dmdba@dm8rw1 dm8]$

创建备库备库并恢复
备库jy2:

[dmdba@dm8rw2 dm8]$ dminit path=/dm8/data db_name=jy instance_name=jy2 port_num=5236 page_size=8 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/jy/jy01.log


 log file path: /dm8/data/jy/jy02.log

write to dir [/dm8/data/jy].
create dm database success. 2022-01-18 21:46:05

备库jy3:

[dmdba@dm8rw3 dm8]$ dminit path=/dm8/data db_name=jy instance_name=jy3 port_num=5236 page_size=8 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/jy/jy01.log


 log file path: /dm8/data/jy/jy02.log

write to dir [/dm8/data/jy].
create dm database success. 2022-01-18 21:46:37

恢复备库
备库jy2:

[dmdba@dm8rw2 ~]$ dmrman CTLSTMT="restore database '/dm8/data/jy/dm.ini' from backupset '/dm8/jy1_full_bak_1'"
dmrman V8
restore database '/dm8/data/jy/dm.ini' from backupset '/dm8/jy1_full_bak_1'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:05][Remaining:00:00:00]
restore successfully.
time used: 00:00:05.615

[dmdba@dm8rw2 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/jy/dm.ini' FROM BACKUPSET '/dm8/jy1_full_bak_1'"
dmrman V8
RECOVER DATABASE '/dm8/data/jy/dm.ini' FROM BACKUPSET '/dm8/jy1_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26788], file_lsn[26788]
no log generates while the backupset [/dm8/jy1_full_bak_1] created
recover successfully!
time used: 345.359(ms)

[dmdba@dm8rw2 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/jy/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/jy/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26788], file_lsn[26788]
recover successfully!
time used: 00:00:01.066

备库jy3:

[dmdba@dm8rw3 ~]$ dmrman CTLSTMT="restore database '/dm8/data/jy/dm.ini' from backupset '/dm8/jy1_full_bak_1'"
dmrman V8
restore database '/dm8/data/jy/dm.ini' from backupset '/dm8/jy1_full_bak_1'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:06][Remaining:00:00:00]
restore successfully.
time used: 00:00:06.606
[dmdba@dm8rw3 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/jy/dm.ini' FROM BACKUPSET '/dm8/jy1_full_bak_1'"
dmrman V8
RECOVER DATABASE '/dm8/data/jy/dm.ini' FROM BACKUPSET '/dm8/jy1_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26788], file_lsn[26788]
no log generates while the backupset [/dm8/jy1_full_bak_1] created
recover successfully!
time used: 323.405(ms)
[dmdba@dm8rw3 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/jy/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/jy/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26788], file_lsn[26788]
recover successfully!
time used: 00:00:01.069

配置操作
一.主库
配置dm.ini文件,配置以下参数

INSTANCE_NAME = jy1
PORT_NUM = 5236                             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60                   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                       #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2                       #不允许备库OFFLINE表空间
MAL_INI = 1                                 #打开MAL系统
ARCH_INI = 1                                #打开归档配置
RLOG_SEND_APPLY_MON = 64                    #统计最近64次的日志发送信息

配置dmmal.ini文件
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5               #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5           #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = jy1                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.213            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.213       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = jy2                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.214            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.214       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = jy3                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.215              #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.215       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口


[dmdba@dm8rw1 jy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = jy1
MAL_HOST = 10.10.13.213
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.213
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = jy2
MAL_HOST = 10.10.13.214
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.214
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = jy3
MAL_HOST = 10.10.13.215
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.215
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。
除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。当前实例jy1是主库,需要向即时备库jy2/jy3同步数据,因此即时归档的ARCH_DEST分别配置为jy2和jy3。

[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY                 #即时归档类型
ARCH_DEST = jy2                    #即时归档目标实例名
[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY                 #即时归档类型
ARCH_DEST = jy3                    #即时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL                  #本地归档类型
ARCH_DEST = /dm8/arch              #本地归档文件存放路径
ARCH_FILE_SIZE = 128               #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0               #单位Mb,0表示无限制,范围1024~4294967294M

[dmdba@dm8rw1 jy]$ vi dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = jy2

[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY
ARCH_DEST = jy3

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 222222                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/jy/dm.ini                           #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭


[dmdba@dm8rw1 jy]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 222222
INST_INI = /dm8/data/jy/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

配置备库jy2
配置dm.ini文件,配置以下参数

INSTANCE_NAME = jy2
PORT_NUM = 5236                             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60                   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                       #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2                       #不允许备库OFFLINE表空间
MAL_INI = 1                                 #打开MAL系统
ARCH_INI = 1                                #打开归档配置
RLOG_SEND_APPLY_MON = 64                    #统计最近64次的日志发送信息

配置dmmal.ini文件
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5               #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5           #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = jy1                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.213            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.213       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = jy2                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.214            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.214       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = jy3                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.215              #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.215       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口


[dmdba@dm8rw2 jy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = jy1
MAL_HOST = 10.10.13.213
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.213
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = jy2
MAL_HOST = 10.10.13.214
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.214
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = jy3
MAL_HOST = 10.10.13.215
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.215
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。

除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名

当前实例jy2是备库,守护系统配置完成后,可能在各种故障处理中,jy2切换为新的主库,正常情况下,jy1会切换为新的备库,需要向jy1和jy3同步数据,因此即时归档的ARCH_DEST分别配置为jy1和jy3。

[dmdba@dm8rw2 jy]$ vi dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = jy1

[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY
ARCH_DEST = jy3

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 222222                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/jy/dm.ini                           #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭


[dmdba@dm8rw2 jy]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 222222
INST_INI = /dm8/data/jy/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

配置备库jy3
配置dm.ini文件,配置以下参数

INSTANCE_NAME = jy3
PORT_NUM = 5236                             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60                   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                       #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2                       #不允许备库OFFLINE表空间
MAL_INI = 1                                 #打开MAL系统
ARCH_INI = 1                                #打开归档配置
RLOG_SEND_APPLY_MON = 64                    #统计最近64次的日志发送信息

配置dmmal.ini文件
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5               #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5           #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = jy1                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.213            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.213       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = jy2                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.214            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.214       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = jy3                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.215              #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.215       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口


[dmdba@dm8rw3 jy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = jy1
MAL_HOST = 10.10.13.213
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.213
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = jy2
MAL_HOST = 10.10.13.214
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.214
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = jy3
MAL_HOST = 10.10.13.215
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.215
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。

除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名

当前实例jy3是备库,守护系统配置完成后,可能在各种故障处理中,jy3切换为新的主库,正常情况下,jy1会切换为新的备库,需要向jy1和jy2同步数据,因此即时归档的ARCH_DEST分别配置为jy1和jy2。

[dmdba@dm215 jy]$ vi dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = jy1

[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY
ARCH_DEST = jy2

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 222222                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/jy/dm.ini                           #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭


[dmdba@dm8rw3 jy]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 222222
INST_INI = /dm8/data/jy/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

二:
主库启动到mount状态设置oguid

[dmdba@dm8rw1 ~]$ dmserver /dm8/data/jy/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 25300
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.


[dmdba@dm8rw1 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 3.177(ms)
disql V8
SQL> sp_set_oguid(222222);
DMSQL executed successfully
used time: 66.753(ms). Execute id is 0.
SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          26788                26788

used time: 3.112(ms). Execute id is 1.
SQL> select permanent_magic;

LINEID     PERMANENT_MAGIC
---------- ---------------
1          518889968

used time: 1.941(ms). Execute id is 2.

备库jy2启动到mount状态设置oguid

[dmdba@dm8rw2 ~]$ dmserver /dm8/data/jy/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 26788
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.



[dmdba@dm8rw2 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 5.278(ms)
disql V8
SQL> sp_set_oguid(222222);
DMSQL executed successfully
used time: 114.383(ms). Execute id is 0.
SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          26788                26788

used time: 19.022(ms). Execute id is 1.
SQL> select permanent_magic;

LINEID     PERMANENT_MAGIC
---------- ---------------
1          518889968

used time: 1.356(ms). Execute id is 2.

备库jy3启动到mount状态设置oguid

[dmdba@dm8rw3 ~]$ dmserver /dm8/data/jy/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 26788
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.


[dmdba@dm8rw3 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 5.145(ms)
disql V8
SQL> sp_set_oguid(222222);
DMSQL executed successfully
used time: 110.938(ms). Execute id is 0.
SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          26788                26788

used time: 14.513(ms). Execute id is 1.
SQL> select permanent_magic;

LINEID     PERMANENT_MAGIC
---------- ---------------
1          518889968

used time: 1.549(ms). Execute id is 2.

备库jy2注册服务用于启动数据库

[root@dm8rw2 ~]# /dm8/script/root/dm_service_installer.sh -dm_ini /dm8/data/jy/dm.ini -p jy2 -t dmserver
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicejy2.service to /usr/lib/systemd/system/DmServicejy2.service.
Finished to create the service (DmServicejy2)

备库jy3注册服务用于启动数据库

[root@dm8rw3 ~]# /dm8/script/root/dm_service_installer.sh -dm_ini /dm8/data/jy/dm.ini -p jy3 -t dmserver
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicejy3.service to /usr/lib/systemd/system/DmServicejy3.service.
Finished to create the service (DmServicejy3)

三:
主库以primary打开

[dmdba@dm8rw1 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.961(ms)
disql V8
SQL> alter database primary;
executed successfully
used time: 58.207(ms). Execute id is 0.

备库jy2以standby 打开

[dmdba@dm8rw2 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.221(ms)
disql V8
SQL> alter database standby;
executed successfully
used time: 145.716(ms). Execute id is 0.

备库jy3以standby 打开

[dmdba@dm8rw3 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.978(ms)
disql V8
SQL> alter database standby;
executed successfully
used time: 72.982(ms). Execute id is 0.

启动命令行工具DIsql,登录备库修改数据库为Standby模式如果当前数据库不是normal模式,需要先修改dm.ini中ALTER_MODE_STATUS值为1,允许修改数据库模式,修改Standby模式成功后再改回为0。如果是normal模式,请忽略下面的第1步和第3步。

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); ----第1步
SQL>alter database standby; ----第2步
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); ----第3步

四:
启动守护进程
启动各个主备库上的守护进程:
主库

[dmdba@dm8rw1 ~]$ dmwatcher /dm8/data/jy/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
show
2022-01-18 22:23:19
---------------------------------------------------------------------------
GROUP_NAME       TYPE      MODE      OGUID       MPP_FLAG  AUTO_RESTART DW_STATUS       DW_SUB_STATUS   DW_CTL_STATUS
GRP1             GLOBAL    AUTO      222222      FALSE     TRUE         RECOVERY        WAIT_SEND_ARCH  VALID

INST_OK   NAME             SVR_MODE  SYS_STATUS   RTYPE     FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
OK        JY1              PRIMARY   OPEN         TIMELY    4205            28044           4205            28044           4
---------------------------------------------------------------------------



备库jy2

[dmdba@dm8rw2 ~]$ dmwatcher /dm8/data/jy/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
show
2022-01-18 22:23:28
---------------------------------------------------------------------------
GROUP_NAME       TYPE      MODE      OGUID       MPP_FLAG  AUTO_RESTART DW_STATUS       DW_SUB_STATUS   DW_CTL_STATUS
GRP1             GLOBAL    AUTO      222222      FALSE     TRUE         OPEN            SUB_STATE_START VALID

INST_OK   NAME             SVR_MODE  SYS_STATUS   RTYPE     FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
OK        JY2              STANDBY   OPEN         TIMELY    4204            28044           4204            28044           0

DATABASE(JY2) APPLY INFO:
REDOS_PARALLEL_NUM (1)
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4205, 4205, 4205], (RLSN, SLSN, KLSN)[28044, 28044, 28044], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (28044)

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

备库jy3

[dmdba@dm8rw3 ~]$ dmwatcher /dm8/data/jy/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
show
2022-01-18 22:23:35
---------------------------------------------------------------------------
GROUP_NAME       TYPE      MODE      OGUID       MPP_FLAG  AUTO_RESTART DW_STATUS       DW_SUB_STATUS   DW_CTL_STATUS
GRP1             GLOBAL    AUTO      222222      FALSE     TRUE         OPEN            SUB_STATE_START VALID

INST_OK   NAME             SVR_MODE  SYS_STATUS   RTYPE     FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
OK        JY3              STANDBY   OPEN         TIMELY    4204            28044           4204            28044           0

DATABASE(JY3) APPLY INFO:
REDOS_PARALLEL_NUM (1)
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4205, 4205, 4205], (RLSN, SLSN, KLSN)[28044, 28044, 28044], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (28044)

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

也可以注册守护进程服务来进行启动
主库

[root@dm8rw1 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/jy/dmwatcher.ini -p jy1 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicejy1.service to /usr/lib/systemd/system/DmWatcherServicejy1.service.
Finished to create the service (DmWatcherServicejy1)

[root@dm8rw1 ~]# service DmWatcherServicejy1 start
Redirecting to /bin/systemctl start DmWatcherServicejy1.service

备库1

[root@dm8rw2 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/jy/dmwatcher.ini -p jy2 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicejy2.service to /usr/lib/systemd/system/DmWatcherServicejy2.service.
Finished to create the service (DmWatcherServicejy2)

[root@dm8rw2 ~]# service DmWatcherServicejy2 start
Redirecting to /bin/systemctl start DmWatcherServicejy2.service

备库2

[root@dm8rw3 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/jy/dmwatcher.ini -p jy3 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicejy3.service to /usr/lib/systemd/system/DmWatcherServicejy3.service.
Finished to create the service (DmWatcherServicejy3)

[root@dm8rw3 ~]# service DmWatcherServicejy3 start
Redirecting to /bin/systemctl start DmWatcherServicejy3.service

配置监视器
由于主库和即时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知即时备库接管为新的主库,具有自动故障处理的功能。

修改dmmonitor.ini配置确认监视器,其中MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。

MON_DW_CONFIRM = 1                          #确认监视器模式
MON_LOG_PATH = /dm8/data/log                #监视器日志文件存放路径
MON_LOG_INTERVAL = 60                       #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32                      #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0                     #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 222222                     #组GRP1的唯一OGUID值
                                            #以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
                                            #IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 10.10.13.213:5238
MON_DW_IP = 10.10.13.214:5238
MON_DW_IP = 10.10.13.215:5238


[dmdba@dm216 data]$ vi dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]
MON_INST_OGUID = 222222



MON_DW_IP = 10.10.13.213:5238
MON_DW_IP = 10.10.13.214:5238
MON_DW_IP = 10.10.13.215:5238

启动监视器:

[dmdba@dm8rw4 data]$ dmmonitor /dm8/data/dmmonitor.ini
[monitor]         2022-01-18 22:28:01: DMMONITOR[4.0] V8
[monitor]         2022-01-18 22:28:02: DMMONITOR[4.0] IS READY.

[monitor]         2022-01-18 22:28:02: Received message from(JY1)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-01-18 22:28:02  OPEN           OK        JY1              OPEN        PRIMARY   VALID    3        28044           28044

[monitor]         2022-01-18 22:28:02: Received message from(JY3)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-01-18 22:28:02  OPEN           OK        JY3              OPEN        STANDBY   VALID    3        28044           28044

[monitor]         2022-01-18 22:28:02: Received message from(JY2)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-01-18 22:28:02  OPEN           OK        JY2              OPEN        STANDBY   VALID    3        28044           28044

show
2022-01-18 22:28:11
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             222222      TRUE            AUTO            FALSE


< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.213      5239         2022-01-18 22:28:10  GLOBAL    VALID     OPEN           JY1              OK        1     1     OPEN        PRIMARY   DSC_OPEN       TIMELY    VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.213      5236       OK        JY1              OPEN        PRIMARY   0          0            TIMELY    VALID    4207            28044           4207            28044           NONE

< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.214      5239         2022-01-18 22:28:10  GLOBAL    VALID     OPEN           JY2              OK        1     1     OPEN        STANDBY   DSC_OPEN       TIMELY    VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.214      5236       OK        JY2              OPEN        STANDBY   0          0            TIMELY    VALID    4204            28044           4204            28044           NONE

DATABASE(JY2) APPLY INFO FROM (JY1), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4207, 4207, 4207], (RLSN, SLSN, KLSN)[28044, 28044, 28044], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (28044)


< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.215      5239         2022-01-18 22:28:10  GLOBAL    VALID     OPEN           JY3              OK        1     1     OPEN        STANDBY   DSC_OPEN       TIMELY    VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.215      5236       OK        JY3              OPEN        STANDBY   0          0            TIMELY    VALID    4204            28044           4204            28044           NONE

DATABASE(JY3) APPLY INFO FROM (JY1), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4207, 4207, 4207], (RLSN, SLSN, KLSN)[28044, 28044, 28044], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (28044)


#================================================================================#

测试数据同步
主库:

SQL> create table test(id number(10));
executed successfully
used time: 198.382(ms). Execute id is 103.
SQL> insert into test values(1);
affect rows 1

SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          29574                29574

used time: 0.350(ms). Execute id is 501.



used time: 1.182(ms). Execute id is 104.
SQL> commit;
executed successfully
used time: 12.799(ms). Execute id is 105.

备库jy2:

SQL> select * from test;

LINEID     ID
---------- --
1          1

used time: 2.615(ms). Execute id is 202.
SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          29574                29574

used time: 5.798(ms). Execute id is 0.

备库jy3:

SQL> select * from test;

LINEID     ID
---------- --
1          1

used time: 2.691(ms). Execute id is 202.
SQL> select file_LSN, cur_LSN from v$rlog;
LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          29574                29574

used time: 5.949(ms). Execute id is 0.

接口说明

DM多种客户端接口都支持读写分离集群连接设置,以下说明客户端连接服务器时如何设置读写分离属性,详细可参考《DM8程序员手册》。4

JDBC接口
在JDBC连接串中增加了两个连接属性:
n rwSeparate 是否使用读写分离系统,默认0;取值(0不使用,1使用)。
n rwPercent 分发到主库的事务占主备库总事务的百分比,有效值0~100,默认值25。
dm.jdbc.driver.DmDriver
jdbc:dm://192.168.0.206:5236?rwSeparate=1&rwPercent=10

当需要进行系统扩容,希望系统运行不中断,或者影响运行的时间尽可能短,可通过动态增加集群节点的方式进行。下面举例对读写分离集群进行
动态增加节点。

配置环境说明

机器名    IP地址            初始状态           操作系统
dm8rw5   10.10.13.226     主库 jy4           redhat 7.8

数据准备
新备库创建DmAPService用于dmrman来执行还原恢复

[root@dm8rw5 /]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)
[root@dm8rw5 /]# service DmAPService start
Redirecting to /bin/systemctl start DmAPService.service

1.对主库进行联机备份操作:

SQL> backup database backupset '/dm8/jy1_full_bak_2';
executed successfully
used time: 00:00:02.278. Execute id is 500.

2.将备份集复制到新备库:

[dmdba@dm8rw1 dm8]$ scp -r jy1_full_bak_2 10.10.13.226:/dm8
The authenticity of host '10.10.13.226 (10.10.13.226)' can't be established.
ECDSA key fingerprint is SHA256:6O8c9WEeEYPbL4ncdRR1RsrjxxmfzPq9Tkq4/6uLSP4.
ECDSA key fingerprint is MD5:e1:73:3e:8d:79:be:5c:82:0f:c7:58:79:45:ad:df:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.13.226' (ECDSA) to the list of known hosts.
dmdba@10.10.13.226's password:
jy1_full_bak_2.bak                                                                                                                                                                                       100%   15MB  23.0MB/s   00:00
jy1_full_bak_2_1.bak                                                                                                                                                                                     100%  156KB   4.7MB/s   00:00
jy1_full_bak_2.meta                                                                                                                                                                                      100%   85KB   6.0MB/s   00:00
[dmdba@dm8rw1 dm8]$

3.初始化新备库数据库

[dmdba@dm8rw5 ~]$ dminit path=/dm8/data db_name=jy instance_name=jy4 port_num=5236 page_size=8 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/jy/jy01.log


 log file path: /dm8/data/jy/jy02.log

write to dir [/dm8/data/jy].
create dm database success. 2022-02-16 16:50:23

恢复备库

[dmdba@dm8rw5 ~]$ dmrman CTLSTMT="restore database '/dm8/data/jy/dm.ini' from backupset '/dm8/jy1_full_bak_2'"
dmrman V8
restore database '/dm8/data/jy/dm.ini' from backupset '/dm8/jy1_full_bak_2'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:08][Remaining:00:00:00]
restore successfully.
time used: 00:00:08.834
[dmdba@dm8rw5 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/jy/dm.ini' FROM BACKUPSET '/dm8/jy1_full_bak_2'"
dmrman V8
RECOVER DATABASE '/dm8/data/jy/dm.ini' FROM BACKUPSET '/dm8/jy1_full_bak_2'
file dm.key not found, use default license!
Database mode = 1, oguid = 222222
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[29992], file_lsn[29992]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:02.730
[dmdba@dm8rw5 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/jy/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/jy/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 1, oguid = 222222
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[31068], file_lsn[31068]
recover successfully!
time used: 00:00:01.061

配置新备库
配置dm.ini
在dm8rw5机器上配置备库的实例名为jy4,dm.ini参数修改如下:

INSTANCE_NAME = jy         #实例名总长度不能超过16
PORT_NUM = 5236            #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60  #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0      #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2      #不允许备库OFFLINE表空间
MAL_INI = 1                #打开MAL系统
ARCH_INI = 1               #打开归档配置
RLOG_SEND_APPLY_MON = 64   #统计最近64次的日志重演信息

拷贝一份原系统dmmal.ini文件,并加上自己一项,最终配置如下:

MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = jy1
MAL_HOST = 10.10.13.213
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.213
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = jy2
MAL_HOST = 10.10.13.214
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.214
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = jy3
MAL_HOST = 10.10.13.215
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.215
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST4]
MAL_INST_NAME = jy4
MAL_HOST = 10.10.13.226
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.226
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[dmdba@dm8rw5 jy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = jy1
MAL_HOST = 10.10.13.213
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.213
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = jy2
MAL_HOST = 10.10.13.214
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.214
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = jy3
MAL_HOST = 10.10.13.215
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.215
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST4]
MAL_INST_NAME = jy4
MAL_HOST = 10.10.13.226
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.226
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。

[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = jy1

[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY
ARCH_DEST = jy2

[ARCHIVE_TIMELY3]
ARCH_TYPE = TIMELY
ARCH_DEST = jy3

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

[dmdba@dm8rw5 jy]$ vi dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = jy1

[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY
ARCH_DEST = jy2

[ARCHIVE_TIMELY3]
ARCH_TYPE = TIMELY
ARCH_DEST = jy3

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 222222
INST_INI = /dm8/data/jy/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

[dmdba@dm8rw5 jy]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 222222
INST_INI = /dm8/data/jy/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

注册守护进程服务

[root@dm8rw5 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/jy/dmwatcher.ini -p jy4 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicejy4.service to /usr/lib/systemd/system/DmWatcherServicejy4.service.
Finished to create the service (DmWatcherServicejy4)

启动备库
以mount方式启动备库

[dmdba@dm8rw5 ~]$ dmserver /dm8/data/jy/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 1, oguid = 222222
License will expire on 2022-10-21
file lsn: 31068
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

设置OGUID
启动命令行工具disql,登录备库设置OGUID值。

[dmdba@dm8rw5 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is primary, state is mount
login used time : 3.364(ms)
disql V8
SQL> sp_set_oguid(222222);
sp_set_oguid(222222);
[-720]:Dmwatcher is active, or current configuration(ALTER_MODE_STATUS) not allowed to alter database.
used time: 7.912(ms). Execute id is 0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL executed successfully
used time: 8.997(ms). Execute id is 1.
SQL> sp_set_oguid(222222);
DMSQL executed successfully
used time: 57.701(ms). Execute id is 2.

修改数据库模式
修改数据库为Standby模式:

SQL> alter database standby;
executed successfully
used time: 66.098(ms). Execute id is 0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL executed successfully
used time: 8.720(ms). Execute id is 3.

动态添加MAL配置
需要分别连接原系统中每个实例单独执行:
1.允许手工修改服务器的模式和状态。

[dmdba@dm8rw1 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is primary, state is open
login used time : 2.628(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL executed successfully
used time: 36.203(ms). Execute id is 600.


[dmdba@dm8rw2 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is standby, state is open
login used time : 4.421(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL executed successfully
used time: 140.819(ms). Execute id is 0.

[dmdba@dm8rw3 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is standby, state is open
login used time : 4.246(ms)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL executed successfully
used time: 127.831(ms). Execute id is 0

2.退出原系统所有守护进程。
注意守护进程退出后,需要等待对应实例dm.ini中配置的DW_INACTIVE_INTERVAL时间后才允许后续操作,否则未超过故障认定时间,服务器认为守护进程仍然处于活动状态,不允许手工修改服务器为mount状态。

[root@dm8rw1 ~]# service DmWatcherServicejy1 stop
Redirecting to /bin/systemctl stop DmWatcherServicejy1.service


[root@dm8rw2 ~]# service DmWatcherServicejy2 stop
Redirecting to /bin/systemctl stop DmWatcherServicejy2.service

[root@dm8rw3 ~]# service DmWatcherServicejy3 stop
Redirecting to /bin/systemctl stop DmWatcherServicejy3.service

3.修改数据库状态为MOUNT。

[dmdba@dm8rw1 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is primary, state is open
login used time : 2.628(ms)
disql V8
SQL> alter database mount;
executed successfully
used time: 47.587(ms). Execute id is 0.

[dmdba@dm8rw2 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is standby, state is open
login used time : 4.421(ms)
disql V8
SQL> alter database mount;
executed successfully
used time: 29.109(ms). Execute id is 0.

[dmdba@dm8rw3 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is standby, state is open
login used time : 4.246(ms)
disql V8
SQL> alter database mount;
executed successfully
used time: 37.954(ms). Execute id is 0.

4.重新修改ALTER_MODE_STATUS值为0,不允许手工修改服务器的模式和状态
jy1:

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL executed successfully
used time: 8.305(ms). Execute id is 602.

jy2:

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL executed successfully
used time: 8.565(ms). Execute id is 2.

jy3:

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL executed successfully
used time: 8.420(ms). Execute id is 2.

5.动态增加mal中jy4的相关配置信息
jy1:

SQL> SF_MAL_CONFIG(1,0);
DMSQL executed successfully
used time: 0.760(ms). Execute id is 603.
SQL> SF_MAL_INST_ADD('MAL_INST4','jy4','10.10.13.226',5238,'10.10.13.226',5236,5239,0,5237);
DMSQL executed successfully
used time: 1.085(ms). Execute id is 604.
SQL> SF_MAL_CONFIG_APPLY();
DMSQL executed successfully
used time: 0.816(ms). Execute id is 605.
SQL> SF_MAL_CONFIG(0,0);
DMSQL executed successfully
used time: 0.514(ms). Execute id is 606.

jy2:

SQL> SF_MAL_CONFIG(1,0);
DMSQL executed successfully
used time: 0.881(ms). Execute id is 3.
SQL> SF_MAL_INST_ADD('MAL_INST4','jy4','10.10.13.226',5238,'10.10.13.226',5236,5239,0,5237);
DMSQL executed successfully
used time: 1.306(ms). Execute id is 4.
SQL> SF_MAL_CONFIG_APPLY();
DMSQL executed successfully
used time: 0.827(ms). Execute id is 5.
SQL> SF_MAL_CONFIG(0,0);
DMSQL executed successfully
used time: 0.572(ms). Execute id is 6.

jy3:

SQL> SF_MAL_CONFIG(1,0);
DMSQL executed successfully
used time: 0.663(ms). Execute id is 3.
SQL> SF_MAL_INST_ADD('MAL_INST4','jy4','10.10.13.226',5238,'10.10.13.226',5236,5239,0,5237);
DMSQL executed successfully
used time: 1.168(ms). Execute id is 4.
SQL> SF_MAL_CONFIG_APPLY();
DMSQL executed successfully
used time: 0.815(ms). Execute id is 5.
SQL> SF_MAL_CONFIG(0,0);
DMSQL executed successfully
used time: 0.585(ms). Execute id is 6.

动态添加归档配置
分别连接原系统中的所有实例(此时处于MOUNT状态),动态添加dmarch.ini中归档节点
jy1:

SQL> alter database add archivelog 'DEST=jy4, TYPE=TIMELY';
executed successfully
used time: 1.596(ms). Execute id is 0.

jy2:

SQL> alter database add archivelog 'DEST=jy4, TYPE=TIMELY';
executed successfully
used time: 1.199(ms). Execute id is 0.

jy3:

SQL> alter database add archivelog 'DEST=jy4, TYPE=TIMELY';
executed successfully
used time: 1.357(ms). Execute id is 0.

修改监视器dmmonitor.ini
在dmmonitor.ini中添加新增的备库jy4:

[dmdba@dm8rw4 ~]$ vi /dm8/data/dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]
MON_INST_OGUID = 222222



MON_DW_IP = 10.10.13.213:5239
MON_DW_IP = 10.10.13.214:5239
MON_DW_IP = 10.10.13.215:5239
MON_DW_IP = 10.10.13.226:5239

启动所有守护进程以及监视器
分别启动主库和备库(包括jy4)的所有守护进程,最后启动监视器。
jy1:

[root@dm8rw1 ~]# service DmWatcherServicejy1 start
Redirecting to /bin/systemctl start DmWatcherServicejy1.service

jy2:

[root@dm8rw2 ~]# service DmWatcherServicejy2 start
Redirecting to /bin/systemctl start DmWatcherServicejy2.service

jy3:

[root@dm8rw3 ~]# service DmWatcherServicejy3 start
Redirecting to /bin/systemctl start DmWatcherServicejy3.service

jy4:

[root@dm8rw5 ~]# service DmWatcherServicejy4 start
Redirecting to /bin/systemctl start DmWatcherServicejy4.service


[dmdba@dm8rw4 ~]$ dmmonitor /dm8/data/dmmonitor.ini
[monitor]         2022-02-17 16:30:16: DMMONITOR[4.0] V8
[monitor]         2022-02-17 16:30:16: DMMONITOR[4.0] IS READY.

[monitor]         2022-02-17 16:30:16: Received message from(JY1)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-17 16:30:16  OPEN           OK        JY1              OPEN        PRIMARY   VALID    6        32418           32418

[monitor]         2022-02-17 16:30:16: Received message from(JY3)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-17 16:30:16  OPEN           OK        JY3              OPEN        STANDBY   VALID    6        32418           32418

[monitor]         2022-02-17 16:30:16: Received message from(JY2)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-17 16:30:16  OPEN           OK        JY2              OPEN        STANDBY   VALID    6        32418           32418

[monitor]         2022-02-17 16:30:16: Received message from(JY4)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-17 16:30:16  OPEN           OK        JY4              OPEN        STANDBY   VALID    6        32418           32418

DM8配置异步备库

配置异步备库
先搭建实时主备
下列机器事先都安装了DM,安装路径为’/dm8’,执行程序保存在’/dm8/bin’目录中,数据存放路径为’/dm8/data’。

各主备库的实例名建议采用“组名_守护环境_序号”的方式命名,方便按组区分不同实例,注意总长度不能超过16。本示例中组名为“GRP1”,配置为实时主备,主库命名为“hy1”,备库命名为“hy2”。

机器名     IP地址                  初始状态                         操作系统
dm222     10.10.13.222(对外)     主库 hy1                         redhat 7.8
          10.10.13.222(mal对内)


dm223    10.10.13.223(对外)
         10.10.13.223(mal对内)     备库 hy2                       redhat 7.8

dm225    10.10.13.225            确认监视器                       redhat 7.8


实例名       port_num             mal_inst_dw_port    mal_host                mal_port        mal_dw_port
hy1          5236                 5239                10.10.13.222          5237            5238
hy2          5236                 5239                10.10.13.223          5237            5238

数据准备
在主库机器上初始化数据库到目录/dm8/data:

[dmdba@dm222 dm8]$ dminit path=/dm8/data db_name=hy instance_name=hy1 port_num=5236 page_size=8 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/hy/hy01.log


 log file path: /dm8/data/hy/hy02.log

write to dir [/dm8/data/hy].
create dm database success. 2022-02-14 16:20:46

注册服务用于启动数据库

[root@dm222 ~]# /dm8/script/root/dm_service_installer.sh -dm_ini /dm8/data/hy/dm.ini -p hy1 -t dmserver
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicehy1.service to /usr/lib/systemd/system/DmServicehy1.service.
Finished to create the service (DmServicehy1)

正常启动数据库并正常关闭

[root@dm222 ~]# service DmServicehy1 start
Redirecting to /bin/systemctl start DmServicehy1.service
[root@dm222 ~]# ps -ef | grep dmserver
dmdba     8282     1 17 16:22 ?        00:00:02 /dm8/bin/dmserver path=/dm8/data/hy/dm.ini -noconsole
root      8373  8033  0 16:23 pts/2    00:00:00 grep --color=auto dmserver

[root@dm222 ~]# su - dmdba
Last login: Mon Feb 14 16:20:29 CST 2022 on pts/1
[dmdba@dm222 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is open
login used time : 2.616(ms)
disql V8
SQL>

[root@dm222 ~]# service DmServicehy1 stop
Redirecting to /bin/systemctl stop DmServicehy1.service

备份主库
1. 正常关闭数据库

[root@dm222 ~]# service DmServicehy1 stop
Redirecting to /bin/systemctl stop DmServicehy1.service

2.使用dmrman来进行冷备份

[dmdba@dm222 dm8]$ dmrman CTLSTMT="backup database '/dm8/data/hy/dm.ini' full backupset  '/dm8/hy1_full_bak_1'"
dmrman V8
backup database '/dm8/data/hy/dm.ini' full backupset '/dm8/hy1_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[25300], file_lsn[25300]
Processing backupset /dm8/hy1_full_bak_1
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.717

将主库的备份复制到备库:

[dmdba@dm222 dm8]$ scp -r hy1_full_bak_1 10.10.13.223:/dm8
The authenticity of host '10.10.13.223 (10.10.13.223)' can't be established.
ECDSA key fingerprint is SHA256:6O8c9WEeEYPbL4ncdRR1RsrjxxmfzPq9Tkq4/6uLSP4.
ECDSA key fingerprint is MD5:e1:73:3e:8d:79:be:5c:82:0f:c7:58:79:45:ad:df:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.13.223' (ECDSA) to the list of known hosts.
dmdba@10.10.13.223's password:
hy1_full_bak_1.bak                                                                                                                                                                                       100% 6334KB  12.8MB/s   00:00
hy1_full_bak_1.meta                                                                                                                                                                                      100%   77KB   1.6MB/s   00:00
[dmdba@dm222 dm8]$

创建备库备库并恢复

[dmdba@dm223 dm8]$ dminit path=/dm8/data db_name=hy instance_name=hy2 port_num=5236 page_size=8 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/hy/hy01.log


 log file path: /dm8/data/hy/hy02.log

write to dir [/dm8/data/hy].
create dm database success. 2022-02-14 16:35:20

恢复备库:

[dmdba@dm223 dm8]$ dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/hy/dm.ini' FROM BACKUPSET '/dm8/hy1_full_bak_1'"
dmrman V8
RESTORE DATABASE '/dm8/data/hy/dm.ini' FROM BACKUPSET '/dm8/hy1_full_bak_1'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:06][Remaining:00:00:00]
restore successfully.
time used: 00:00:06.384


[dmdba@dm223 dm8]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/hy/dm.ini' FROM BACKUPSET '/dm8/hy1_full_bak_1'"
dmrman V8
RECOVER DATABASE '/dm8/data/hy/dm.ini' FROM BACKUPSET '/dm8/hy1_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[25300], file_lsn[25300]
no log generates while the backupset [/dm8/hy1_full_bak_1] created
recover successfully!
time used: 359.697(ms)


[dmdba@dm223 dm8]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/hy/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/hy/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[25300], file_lsn[25300]
recover successfully!
time used: 00:00:01.074

配置操作
一.主库
配置dm.ini文件,配置以下参数:

配置dmmal.ini文件
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5           #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5       #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = HY1              #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.222          #MAL系统监听TCP连接的IP地址
MAL_PORT = 5237                  #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.222     #实例的对外服务IP地址
MAL_INST_PORT = 5236             #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5238               #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5239          #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = HY2              #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.223          #MAL系统监听TCP连接的IP地址
MAL_PORT = 5237                  #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.223     #实例的对外服务IP地址
MAL_INST_PORT = 5236             #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5238               #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5239          #实例监听守护进程TCP连接的端口

[dmdba@dm222 hy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = HY1
MAL_HOST = 10.10.13.222
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.222
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

[MAL_INST2]
MAL_INST_NAME = HY2
MAL_HOST = 10.10.13.223
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.223
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

配置dmarch.ini
修改dmarch.ini,配置本地归档和实时归档。
除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。当前实例HY1是主库,需要向HY2(实时备库)同步数据,因此实时归档的ARCH_DEST配置为HY2。

[ARCHIVE_REALTIME]                                #实时归档
ARCH_TYPE = REALTIME                              #实时归档类型
ARCH_DEST = HY2                                   #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL                                 #本地归档类型
ARCH_DEST = /dm8/data/hy/arch                     #本地归档文件存放路径
ARCH_FILE_SIZE = 128                              #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0                              #单位Mb,0表示无限制,范围1024~4294967294M

[dmdba@dm222 hy]$ vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = HY2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/hy/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 555555                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/hy/dm.ini                           #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭

[dmdba@dm222 hy]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 555555
INST_INI = /dm8/data/hy/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

以mount模式启动主库

[root@dm222 ~]# su - dmdba
Last login: Mon Feb 14 16:23:39 CST 2022 on pts/2
[dmdba@dm222 ~]$ dmserver /dm8/data/hy/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 25300
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

设置主库 OGUID

[dmdba@dm222 hy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.975(ms)
disql V8
SQL> sp_set_oguid(555555);
DMSQL executed successfully
used time: 115.785(ms). Execute id is 0.

修改主数据库模式

SQL> alter database primary;
executed successfully
used time: 185.004(ms). Execute id is 0.

将主库的dm.ini,dmmal.ini,dmarch.ini,dmwatcher.ini文件复制到备库

[dmdba@dm222 hy]$ scp dm*.ini 10.10.13.223:/dm8/data/hy
dmdba@10.10.13.223's password:
dmarch.ini                                                                                                                                                                                               100%  338    11.0KB/s   00:00
dm.ini                                                                                                                                                                                                   100%   52KB  20.4MB/s   00:00
dmmal.ini                                                                                                                                                                                                100%  545    60.2KB/s   00:00
dmwatcher.ini                                                                                                                                                                                            100%  613    77.0KB/s   00:00
[dmdba@dm222 hy]$

二.备库
备机修改相关配置
修改dm.ini

INSTANCE_NAME = HY2

修改dmarch.ini

[dmdba@dm223 hy]$ vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = HY1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/hy/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

dmwatcher.ini 和主库一致

注册服务用于启动数据库

[root@dm223 ~]# /dm8/script/root/dm_service_installer.sh -dm_ini /dm8/data/hy/dm.ini -p hy2 -t dmserver
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicehy2.service to /usr/lib/systemd/system/DmServicehy2.service.
Finished to create the service (DmServicehy2)

以mount方式启动备库

[dmdba@dm223 ~]$ dmserver /dm8/data/hy/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 25300
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

设置备库 OGUID

[dmdba@dm223 hy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 3.781(ms)
disql V8
SQL> sp_set_oguid(555555);
DMSQL executed successfully
used time: 53.436(ms). Execute id is 0.

修改备数据库模式

SQL> alter database standby;
executed successfully
used time: 130.946(ms). Execute id is 0.

注册并启动守护进程
主库

[root@dm222 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/hy/dmwatcher.ini -p hy1 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicehy1.service to /usr/lib/systemd/system/DmWatcherServicehy1.service.
Finished to create the service (DmWatcherServicehy1)
[root@dm222 ~]# service DmWatcherServicehy1 start
Redirecting to /bin/systemctl start DmWatcherServicehy1.service

备库

[root@dm223 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/hy/dmwatcher.ini -p hy2 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicehy2.service to /usr/lib/systemd/system/DmWatcherServicehy2.service.
Finished to create the service (DmWatcherServicehy2)
[root@dm223 ~]# service DmWatcherServicehy2 start
Redirecting to /bin/systemctl start DmWatcherServicehy2.service

查看file_lsn与cur_lsn主备库是否一致
主库

[dmdba@dm222 hy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is primary, state is open
login used time : 2.370(ms)
disql V8
SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          26559                26559

used time: 5.367(ms). Execute id is 600.

备库

[dmdba@dm223 hy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is standby, state is open
login used time : 1.921(ms)
disql V8
SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          26559                26559

used time: 18.396(ms). Execute id is 100.

配置监视器(基本要求,安装dm8的软件)
由于主库和实时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。

修改dmmonitor.ini配置确认监视器,其中MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。

MON_DW_CONFIRM = 1                          #确认监视器模式
MON_LOG_PATH = /dm8/data/log                #监视器日志文件存放路径
MON_LOG_INTERVAL = 60                       #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32                      #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0                     #不限定日志文件总占用空间

[GRP1]
MON_INST_OGUID = 555555                     #组GRP1的唯一OGUID值
                                            #以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
                                            #IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 10.10.13.222:5238
MON_DW_IP = 10.10.13.223:5238

[dmdba@dm225 data]$ vi dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]
MON_INST_OGUID = 555555


MON_DW_IP = 10.10.13.222:5238
MON_DW_IP = 10.10.13.223:5238

启动监视器:

[dmdba@dm225 data]$ dmmonitor /dm8/data/dmmonitor.ini
[monitor]         2022-02-14 17:11:11: DMMONITOR[4.0] V8
[monitor]         2022-02-14 17:11:11: DMMONITOR[4.0] IS READY.

[monitor]         2022-02-14 17:11:12: Received message from(HY1)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-14 17:11:11  OPEN           OK        HY1              OPEN        PRIMARY   VALID    2        26559           26559

[monitor]         2022-02-14 17:11:12: Received message from(HY2)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-14 17:11:11  OPEN           OK        HY2              OPEN        STANDBY   VALID    2        26559           26559

show
2022-02-14 17:11:23
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             555555      TRUE            AUTO            FALSE


< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.222      5238         2022-02-14 17:11:22  GLOBAL    VALID     OPEN           HY1              OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.222      5236       OK        HY1              OPEN        PRIMARY   0          0            REALTIME  VALID    4204            26559           4204            26559           NONE

< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.223      5238         2022-02-14 17:11:22  GLOBAL    VALID     OPEN           HY2              OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.223      5236       OK        HY2              OPEN        STANDBY   0          0            REALTIME  VALID    4200            26559           4200            26559           NONE

DATABASE(HY2) APPLY INFO FROM (HY1), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4204, 4204, 4204], (RLSN, SLSN, KLSN)[26559, 26559, 26559], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (26559)


#================================================================================#

主备同步测试
主库:

SQL> create table t1(id int);
executed successfully
used time: 56.331(ms). Execute id is 601.
SQL> insert into t1 values(1);
affect rows 1

used time: 0.832(ms). Execute id is 602.
SQL> commit;
executed successfully
used time: 2.878(ms). Execute id is 603.
SQL> select * from t1;

LINEID     ID
---------- -----------
1          1

used time: 1.172(ms). Execute id is 604.

备库:

SQL> select * from t1;

LINEID     ID
---------- -----------
1          1

used time: 2.349(ms). Execute id is 101.

在实际应用中,如果数据库规模很大,并且对数据的实时性要求不是很严格,则可以配置多个异步备库用于分担统计报表等任务。

这里以实时主备环境为例,仍然采用7.2 配置实时主备小节的配置环境,对异步备库的搭建步骤做举例说明,读写分离集群和MPP主备的异步备库搭建步骤是相同的,只需要根据实际情况调整配置项的具体值即可。

这里以一个异步备库为例,配置在主库HY1上,异步备库实例名为HY3。如果需要配置多个异步备库,对应的源实例配置可以参考主库HY1的配置步骤,异步备库自身的配置可以参考HY3的配置步骤。

源实例之间不能有相同的异步归档配置,避免同时向异步备库发送归档,导致异步备库数据乱掉的情况发生。

如果源实例自身出现故障,在故障恢复之前,都不会再发送归档到异步备库,所以如果有多个异步备库,可以考虑将异步备库分别配置到不同的源实例上。

环境说明
这里采用实时主备环境,增加一台机器用来部署异步备库,其他环境不变。

新增的机器事先安装了DM,安装路径为’/dm8’,执行程序保存在’/dm8/bin’目录中,数据存放路径为’/dm8/data’。

新增的异步备库实例名为“HY3”,按照“组名_守护环境_序号”的建议方式命名,注意总长度不能超过16。

机器名    IP地址             初始状态         操作系统              备注
dm224     10.10.13.224     异步备库HY3      redhat 7.8            10.10.13.224

数据准备
按照数据准备中的方法准备异步备库的数据。
如果实时主备守护环境已经处于运行状态,需要先正常退出主备库实例和守护进程。

先正常停止实时主备环境中的主库和备库
停止主库

[root@dm222 ~]# service DmWatcherServicehy1 stop
Redirecting to /bin/systemctl stop DmWatcherServicehy1.service
[root@dm222 ~]# ps -ef | grep dm.ini
root     29636 11271  0 16:47 pts/4    00:00:00 grep --color=auto dm.ini

停止备库

[root@dm223 ~]# service DmWatcherServicehy2 stop
Redirecting to /bin/systemctl stop DmWatcherServicehy2.service
[root@dm223 ~]# ps -ef | grep dm.ini
root     19132  5222  0 16:47 pts/3    00:00:00 grep --color=auto dm.ini

备份主库
1. 正常关闭数据库

[root@dm222 ~]# service DmServicehy1 stop
Redirecting to /bin/systemctl stop DmServicehy1.service

2.使用dmrman来进行冷备份

[dmdba@dm222 dm8]$ dmrman CTLSTMT="backup database '/dm8/data/hy/dm.ini' full to backup_file1 backupset  '/dm8/hy1_full_bak_2'"
dmrman V8
backup database '/dm8/data/hy/dm.ini' full to backup_file1 backupset '/dm8/hy1_full_bak_2'
file dm.key not found, use default license!
Database mode = 1, oguid = 555555
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
begin redo pwr log collect, last ckpt lsn: 26600 ...
redo pwr log collect finished
EP[0]'s cur_lsn[27968], file_lsn[27968]
Processing backupset /dm8/hy1_full_bak_2
[-8216]:Archive log absence, repair archive log with SQL 'repair archive log ...' in dmrman
[dmdba@dm222 dm8]$ dmrman
dmrman V8
RMAN> repair archivelog database '/dm8/data/hy/dm.ini'
repair archivelog database '/dm8/data/hy/dm.ini'
file dm.key not found, use default license!
Database mode = 1, oguid = 555555
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
begin redo pwr log collect, last ckpt lsn: 26600 ...
redo pwr log collect finished
EP[0]'s cur_lsn[27968], file_lsn[27968]
repair archive log successfully.
repair time used: 349.630(ms)
time used: 353.380(ms)
RMAN> exit
time used: 0.842(ms)
[dmdba@dm222 dm8]$ dmrman CTLSTMT="backup database '/dm8/data/hy/dm.ini' full  backupset  '/dm8/hy1_full_bak_2'"
dmrman V8
backup database '/dm8/data/hy/dm.ini' full backupset '/dm8/hy1_full_bak_2'
file dm.key not found, use default license!
Database mode = 1, oguid = 555555
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
begin redo pwr log collect, last ckpt lsn: 26600 ...
redo pwr log collect finished
EP[0]'s cur_lsn[27968], file_lsn[27968]
Processing backupset /dm8/hy1_full_bak_2
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:02.007

将主库的备份复制到异步备库:

[dmdba@dm222 dm8]$ scp -r hy1_full_bak_2 10.10.13.224:/dm8
The authenticity of host '10.10.13.224 (10.10.13.224)' can't be established.
ECDSA key fingerprint is SHA256:6O8c9WEeEYPbL4ncdRR1RsrjxxmfzPq9Tkq4/6uLSP4.
ECDSA key fingerprint is MD5:e1:73:3e:8d:79:be:5c:82:0f:c7:58:79:45:ad:df:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.13.224' (ECDSA) to the list of known hosts.
dmdba@10.10.13.224's password:
hy1_full_bak_2.bak                                                                                                                                                                                       100%   15MB  20.9MB/s   00:00
hy1_full_bak_2_1.bak                                                                                                                                                                                     100%  173KB   4.5MB/s   00:00
hy1_full_bak_2.meta                                                                                                                                                                                      100%   85KB  11.1MB/s   00:00
[dmdba@dm222 dm8]$

创建异步备库并恢复

[dmdba@dm224 dm8]$ dminit path=/dm8/data db_name=hy instance_name=hy3 port_num=5236 page_size=8 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/hy/hy01.log


 log file path: /dm8/data/hy/hy02.log

write to dir [/dm8/data/hy].
create dm database success. 2022-02-15 17:00:17

恢复异步备库:

[dmdba@dm224 dm8]$ dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/hy/dm.ini' FROM BACKUPSET '/dm8/hy1_full_bak_2'"
dmrman V8
RESTORE DATABASE '/dm8/data/hy/dm.ini' FROM BACKUPSET '/dm8/hy1_full_bak_2'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:07][Remaining:00:00:00]
restore successfully.
time used: 00:00:07.883
[dmdba@dm224 dm8]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/hy/dm.ini' FROM BACKUPSET '/dm8/hy1_full_bak_2'"
dmrman V8
RECOVER DATABASE '/dm8/data/hy/dm.ini' FROM BACKUPSET '/dm8/hy1_full_bak_2'
file dm.key not found, use default license!
Database mode = 1, oguid = 555555
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26600], file_lsn[26600]
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:02.881
[dmdba@dm224 dm8]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/hy/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/hy/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 1, oguid = 555555
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[27968], file_lsn[27968]
recover successfully!
time used: 00:00:01.067

配置主库HY1
配置dm.ini
在实时主备环境下配置dm.ini的基础上,打开定时器配置,其他配置不变。
#配置有异步归档时,打开定时器,定时同步归档到异备库

TIMER_INI = 1

配置dmmal.ini
在实时主备环境下配置dmmal.ini的基础上,增加异步备库HY3的mal配置项。

[MAL_INST3]
MAL_INST_NAME = HY3              #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.224          #MAL系统监听TCP连接的IP地址
MAL_PORT = 5237                  #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.224     #实例的对外服务IP地址
MAL_INST_PORT = 5236             #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5238               #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5239          #实例监听守护进程TCP连接的端口

[dmdba@dm222 hy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = HY1
MAL_HOST = 10.10.13.222
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.222
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

[MAL_INST2]
MAL_INST_NAME = HY2
MAL_HOST = 10.10.13.223
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.223
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

[MAL_INST3]
MAL_INST_NAME = HY3
MAL_HOST = 10.10.13.224
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.224
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

配置dmarch.ini
在实时主备环境下配置dmarchl.ini的基础上,增加异步归档的配置项。

[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC              #异步归档类型
ARCH_DEST = HY3                #异步归档目标实例名
ARCH_TIMER_NAME = RT_TIMER     #定时器名称,和dmtimer.ini中的名称一致

[dmdba@dm222 hy]$ vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = HY2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/hy/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC
ARCH_DEST = HY3
ARCH_TIMER_NAME = RT_TIMER

配置dmtimer.ini
配置dmtimer.ini,用于定时触发实例发送归档日志到异步备库。
下面示例中定时器配置为每天09:00:00触发主库发送归档日志到异步备库,可以根据实际情况再做调整。

[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1
FREQ_SUB_INTERVAL = 0
FREQ_MINUTE_INTERVAL = 0
START_TIME = 09:00:00
END_TIME = 09:00:00
DURING_START_DATE = 2022-02-15 17:30:00
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1

[dmdba@dm222 hy]$ vi dmtimer.ini
[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1
FREQ_SUB_INTERVAL = 0
FREQ_MINUTE_INTERVAL = 0
START_TIME = 09:00:00
END_TIME = 09:00:00
DURING_START_DATE = 2022-02-15 17:30:00
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1

配置备库HY2
该示例中备库上没有异步归档配置,但是由于dmmal.ini必须配置一致,因此需要修改备库上的dmmal.ini配置,其他已有的配置项不需要改动。

配置dmmal.ini
dmmal.ini中需要增加到异步备库HY3的mal配置项

[MAL_INST3]
MAL_INST_NAME = HY3              #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.224          #MAL系统监听TCP连接的IP地址
MAL_PORT = 5237                  #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.224     #实例的对外服务IP地址
MAL_INST_PORT = 5236             #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5238               #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5239          #实例监听守护进程TCP连接的端口

[dmdba@dm223 hy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = HY1
MAL_HOST = 10.10.13.222
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.222
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

[MAL_INST2]
MAL_INST_NAME = HY2
MAL_HOST = 10.10.13.223
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.223
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

[MAL_INST3]
MAL_INST_NAME = HY3
MAL_HOST = 10.10.13.224
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.224
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239


2022-02-17 16:11:11: The asynchronous standby database configuration is different between instance[HY1] and instance[HY2]

对实时备库也要配置异步归档,否则会报上面的错误信息

配置dm.ini
在实时主备环境下配置dm.ini的基础上,打开定时器配置,其他配置不变。
#配置有异步归档时,打开定时器,定时同步归档到异备库

TIMER_INI = 1

[dmdba@dm223 ~]$ vi /dm8/data/hy/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = HY1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/hy/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

[ARCHIVE_ASYNC]
ARCH_TYPE = ASYNC
ARCH_DEST = HY3
ARCH_TIMER_NAME = RT_TIMER


[dmdba@dm223 ~]$ vi /dm8/data/hy/dmtimer.ini
[RT_TIMER] #和dmarch.ini中的ARCH_TIMER_NAME一致
TYPE = 2
FREQ_MONTH_WEEK_INTERVAL = 1
FREQ_SUB_INTERVAL = 0
FREQ_MINUTE_INTERVAL = 0
START_TIME = 09:00:00
END_TIME = 23:59:59
DURING_START_DATE = 2022-02-15 17:30:00
DURING_END_DATE = 9999-12-31 23:59:59
NO_END_DATE_FLAG = 1
DESCRIBE = RT TIMER
IS_VALID = 1

配置异步备库HY3
配置dm.ini
在dm224机器上配置备库的实例名为HY31,dm.ini参数修改如下:

INSTANCE_NAME = HY3               #实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16
PORT_NUM = 5236                   #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60         #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0             #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2             #不允许备库OFFLINE表空间
MAL_INI = 1                       #打开MAL系统
ARCH_INI = 1                      #打开归档配置
RLOG_SEND_APPLY_MON = 64          #统计最近64次的日志重演信息

配置dmmal.ini
同一个守护进程组中,所有主备库必须使用相同的dmmal.ini配置文件

[dmdba@dm224 hy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = HY1
MAL_HOST = 10.10.13.222
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.222
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

[MAL_INST2]
MAL_INST_NAME = HY2
MAL_HOST = 10.10.13.223
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.223
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

[MAL_INST3]
MAL_INST_NAME = HY3
MAL_HOST = 10.10.13.224
MAL_PORT = 5237
MAL_INST_HOST = 10.10.13.224
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5239

配置dmarch.ini
本地守护类型的备库只需要配置本地归档。

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL                  #本地归档类型
ARCH_DEST = /dm8/data/hy/arch      #本地归档文件路径
ARCH_FILE_SIZE = 128               #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0               #单位Mb,0表示无限制,范围1024~4294967294M

[dmdba@dm224 hy]$ vi dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/hy/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为本地守护类型,异步备库不具备故障自动切换等功能,DW_MODE配置并不起作用,此处配置为MANUAL即可,另外异步备库不需要配置dmwatcher.ctl控制文件。

[GRP1]
DW_TYPE = LOCAL                                          #全局守护类型
DW_MODE = MANUAL                                         #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 555555                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/hy/dm.ini                           #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动

[dmdba@dm224 hy]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = LOCAL
DW_MODE = MANUAL
DW_ERROR_TIME = 10
INST_ERROR_TIME = 10
INST_OGUID = 555555
INST_INI = /dm8/data/hy/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver

启动主库

[root@dm222 ~]# service DmWatcherServicehy1 start
Redirecting to /bin/systemctl start DmWatcherServicehy1.service
[root@dm222 ~]# ps -ef | grep dm.ini
dmdba    11148     1  2 15:14 ?        00:00:00 /dm8/bin/dmserver /dm8/data/hy/dm.ini mount
root     11276 11271  0 15:15 pts/4    00:00:00 grep --color=auto dm.ini

启动实时备库

[root@dm223 ~]# service DmWatcherServicehy2 start
Redirecting to /bin/systemctl start DmWatcherServicehy2.service
[root@dm223 ~]# ps -ef | grep dm.ini
dmdba    31842     1  1 15:15 ?        00:00:00 /dm8/bin/dmserver /dm8/data/hy/dm.ini mount
root     31947  5222  0 15:15 pts/3    00:00:00 grep --color=auto dm.ini

以mount方式启动异步备库

[dmdba@dm224 hy]$ dmserver /dm8/data/hy/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 1, oguid = 555555
License will expire on 2022-10-21
file lsn: 27968
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

[dmdba@dm224 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is primary, state is mount
login used time : 3.554(ms)
disql V8
SQL> sp_set_oguid(555555);
sp_set_oguid(555555);
[-720]:Dmwatcher is active, or current configuration(ALTER_MODE_STATUS) not allowed to alter database.
used time: 8.410(ms). Execute id is 0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL executed successfully
used time: 8.953(ms). Execute id is 1.
SQL> sp_set_oguid(555555);
DMSQL executed successfully
used time: 66.419(ms). Execute id is 2.
SQL> alter database standby;
executed successfully
used time: 79.036(ms). Execute id is 0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL executed successfully
used time: 5.075(ms). Execute id is 3.

配置监视器
在实时主备配置监视器的配置基础上,需要增加到异步备库守护进程的“IP:PORT”信息,否则监视器无法收到异步备库消息,其他配置项不需要改动。

修改dmmonitor.ini配置确认监视器,增加到HY3守护进程的MON_DW_IP配置项,需要找到dmmal.ini中实例HY3的配置项信息,MON_DW_IP中的IP信息和dmmal.ini配置项中的MAL_HOST一致,PORT信息和dmmal.ini配置项中的MAL_DW_PORT配置项保持一致。

MON_DW_CONFIRM = 1                  #确认监视器模式
MON_LOG_PATH = /dm/data/log         #监视器日志文件存放路径
MON_LOG_INTERVAL = 60               #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32              #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0             #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 555555             #组GRP1的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 10.10.13.222:5238
MON_DW_IP = 10.10.13.223:5238
#新增到异步备库GRP1_LOCAL_01守护进程的连接信息
MON_DW_IP = 10.10.13.224:5238

[dmdba@dm225 data]$ vi dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]
MON_INST_OGUID = 555555


MON_DW_IP = 10.10.13.222:5238
MON_DW_IP = 10.10.13.223:5238
MON_DW_IP = 10.10.13.224:5238

启动守护进程
启动异步备库的守护进程:

[root@dm224 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/hy/dmwatcher.ini -p hy3 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicehy3.service to /usr/lib/systemd/system/DmWatcherServicehy3.service.
Finished to create the service (DmWatcherServicehy3)
[root@dm224 ~]# service DmWatcherServicehy3 start
Redirecting to /bin/systemctl start DmWatcherServicehy3.service

守护进程启动后,进入Startup状态,此时实例处于Mount状态,异步备库的守护进程会将本地实例自动Open,并切换守护进程自身为Open状态。

[dmdba@dm224 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is standby, state is open
login used time : 2.335(ms)
disql V8
SQL>

启动监视器
修改监视器配置后,需要重新启动监视器:

[dmdba@dm225 data]$ dmmonitor /dm8/data/dmmonitor.ini
[monitor]         2022-02-16 15:33:08: DMMONITOR[4.0] V8
[monitor]         2022-02-16 15:33:08: DMMONITOR[4.0] IS READY.

[monitor]         2022-02-16 15:33:08: Received message from(HY2)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-16 15:33:08  OPEN           OK        HY2              OPEN        STANDBY   NULL     4        29115           29115

[monitor]         2022-02-16 15:33:08: Received message from(HY3)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-16 15:33:08  OPEN           OK        HY3              OPEN        STANDBY   NULL     0        27968           27968

[monitor]         2022-02-16 15:33:08: Received message from(HY1)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-02-16 15:33:08  OPEN           OK        HY1              OPEN        PRIMARY   VALID    4        29115           29115

show
2022-02-17 16:20:32
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             555555      TRUE            AUTO            FALSE


< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.222      5238         2022-02-17 16:20:31  GLOBAL    VALID     OPEN           HY1              OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.222      5236       OK        HY1              OPEN        PRIMARY   0          0            REALTIME  VALID    4307            34882           4307            34882           NONE

< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.223      5238         2022-02-17 16:20:31  GLOBAL    VALID     OPEN           HY2              OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.223      5236       OK        HY2              OPEN        STANDBY   0          0            REALTIME  VALID    4301            34882           4301            34882           NONE

DATABASE(HY2) APPLY INFO FROM (HY1), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4306, 4306, 4307], (RLSN, SLSN, KLSN)[34882, 34882, 34882], N_TSK[0], TSK_MEM_USE[1024]
REDO_LSN_ARR: (34882)


ASYNC SOURCE INSTANCE: HY1

< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.224      5238         2022-02-17 16:20:32  LOCAL     VALID     OPEN           HY3              OK        1     1     OPEN        STANDBY   DSC_OPEN       NONE      NULL

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.224      5236       OK        HY3              OPEN        STANDBY   0          0            NONE      NULL     4276            34882           4276            34882           NONE

DATABASE(HY3) APPLY INFO FROM (HY1), REDOS_PARALLEL_NUM (1), ARCH_SEND_UNTIL_TIME[NONE], APPLY_UNTIL_TIME[FALSE]:
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4306, 4306, 4306], (RLSN, SLSN, KLSN)[34882, 34882, 34882], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (34882)

DM8配置MPP主备

配置MPP主备
为了提高MPP系统可靠性,克服由于单节点故障导致整个系统不能继续正常工作,DM在普通的MPP系统基础上,引入主备守护机制,将MPP节点作为主库节点,增加备库作为备份节点,必要时可切换为主库代替故障节点工作,提高系统的可靠性和可用性。

环境说明
本例配置2个MPP节点数,每个节点作为主库,与其备库组成一个守护组,因此需要配置两个守护组,取名分别为GRP1、GRP2,主库名为mpp01/mpp02,对应的备库实例名分别为mpp11/mpp12。

准备5台机器dm8mppdw1,dm8mppdw2,dm8mppdw3,dm8mppdw4和dm8mppdw5,dm8mppdw1和dm8mppdw2为主库,dm8mppdw3和dm8mppdw4和备库,dm8mppdw5部署监视器。

机器事先都安装了DM,安装路径为’/dm8’,执行程序保存在’/dm8/bin’目录中,数据存放路径为’/dm/data/mpp’。

机器名 IP地址 初始状态 操作系统

dm8mppdw1  10.10.13.217(对外)        主库 mpp01                         redhat 7.8
           10.10.13.217(mal对内)

dm8mppdw2  10.10.13.218(对外)
           10.10.13.218(mal对内)     主库 mpp02                         redhat 7.8

dm8mppdw3  10.10.13.219(对外)
           10.10.13.219(mal对内)     备库 mpp11                         redhat 7.8

dm8mppdw4  10.10.13.220(对外)
           10.10.13.220(mal对内)     备库 mpp12                         redhat 7.8


dm8mppdw5  10.10.13.221              确认监视器                         redhat 7.8

端口规划—主库

实例名              port_num             mal_inst_dw_port    mal_host                mal_port        mal_dw_port  mpp实例序号
mpp01               5236                 5237                10.10.13.217          5238            5239         0
mpp02               5236                 5237                10.10.13.218          5238            5239         1

端口规划—备库

实例名              port_num             mal_inst_dw_port    mal_host                mal_port        mal_dw_port  对应主库
mpp11               5236                 5237                10.10.13.219          5238            5239         mpp01
mpp12               5236                 5237                10.10.13.220          5238            5239         mpp02

守护进程规划

组名                实例名                     所在机器
grp1                mpp01                      10.10.13.217
                    mpp11                      10.10.13.219

grp2                mpp02                      10.10.13.218
                    mpp12                      10.10.13.220

安装DM数据库软件

数据准备
在主库机器上初始化数据库到目录/dm8/data:
mpp01:

[dmdba@dm8mppdw1 ~]$ dminit path=/dm8/data db_name=mpp01 instance_name=mpp01 port_num=5236 page_size=16 case_sensitive=1 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/mpp01/mpp0101.log


 log file path: /dm8/data/mpp01/mpp0102.log

write to dir [/dm8/data/mpp01].
create dm database success. 2022-01-20 16:50:09


mpp02:

[dmdba@dm8mppdw2 ~]$ dminit path=/dm8/data db_name=mpp02 instance_name=mpp02 port_num=5236 page_size=16 case_sensitive=1 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/mpp02/mpp0201.log


 log file path: /dm8/data/mpp02/mpp0202.log

write to dir [/dm8/data/mpp02].
create dm database success. 2022-01-20 16:50:41

创建DmAPService用于dmrman来执行备份
mpp01:

[root@dm8mppdw1 ~]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)

mpp02:

[root@dm8mppdw2 ~]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)

mpp11:

[root@dm8mppdw3 ~]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)

mpp12:

[root@dm8mppdw4 ~]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)

主库中注册服务用于启动数据库
mpp01:

[root@dm8mppdw1 ~]# /dm8/script/root/dm_service_installer.sh -dm_ini /dm8/data/mpp01/dm.ini -p mpp01 -t dmserver
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicempp01.service to /usr/lib/systemd/system/DmServicempp01.service.
Finished to create the service (DmServicempp01)

mpp02:

[root@dm8mppdw2 ~]# /dm8/script/root/dm_service_installer.sh -dm_ini /dm8/data/mpp02/dm.ini -p mpp02 -t dmserver
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicempp02.service to /usr/lib/systemd/system/DmServicempp02.service.
Finished to create the service (DmServicempp02)

正常启动主数据库并正常关闭
mpp01:

[root@dm8mppdw1 ~]# service DmServicempp01 start
Redirecting to /bin/systemctl start DmServicempp01.service

[dmdba@dm8mppdw1 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is open
login used time : 2.484(ms)
disql V8
SQL> select instance_name from v$instance;

LINEID     INSTANCE_NAME
---------- -------------
1          MPP01

used time: 5.715(ms). Execute id is 53700.

[root@dm8mppdw1 ~]# service DmServicempp01 stop
Redirecting to /bin/systemctl stop DmServicempp01.service

mpp02:

[root@dm8mppdw2 ~]# service DmServicempp02 start
Redirecting to /bin/systemctl start DmServicempp02.service

[dmdba@dm8mppdw2 ~]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is open
login used time : 2.821(ms)
disql V8
SQL> select instance_name from v$instance;

LINEID     INSTANCE_NAME
---------- -------------
1          MPP02

used time: 6.061(ms). Execute id is 53700.
SQL>

[root@dm8mppdw2 ~]# service DmServicempp02 stop
Redirecting to /bin/systemctl stop DmServicempp02.service

备份主库
1. 正常关闭数据库
mpp01:

[root@dm8mppdw1 ~]# service DmServicempp01 stop
Redirecting to /bin/systemctl stop DmServicempp01.service

mpp02:

[root@dm8mppdw2 ~]# service DmServicempp02 stop
Redirecting to /bin/systemctl stop DmServicempp02.service

2.使用dmrman来进行冷备份
mpp01:

[dmdba@dm8mppdw1 ~]$ dmrman CTLSTMT="backup database '/dm8/data/mpp01/dm.ini' full backupset  '/dm8/mpp01_full_bak_1'"
dmrman V8
backup database '/dm8/data/mpp01/dm.ini' full backupset '/dm8/mpp01_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[24618], file_lsn[24618]
Processing backupset /dm8/mpp01_full_bak_1
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.913

mpp02:

[dmdba@dm8mppdw2 ~]$ dmrman CTLSTMT="backup database '/dm8/data/mpp02/dm.ini' full backupset  '/dm8/mpp02_full_bak_1'"
dmrman V8
backup database '/dm8/data/mpp02/dm.ini' full backupset '/dm8/mpp02_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[24618], file_lsn[24618]
Processing backupset /dm8/mpp02_full_bak_1
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.750

将主库的备份复制备库:
将mpp01的备份复制到mpp11所在主机上:

[dmdba@dm8mppdw1 dm8]$ scp -r mpp01_full_bak_1 10.10.13.219:/dm8
The authenticity of host '10.10.13.219 (10.10.13.219)' can't be established.
ECDSA key fingerprint is SHA256:6O8c9WEeEYPbL4ncdRR1RsrjxxmfzPq9Tkq4/6uLSP4.
ECDSA key fingerprint is MD5:e1:73:3e:8d:79:be:5c:82:0f:c7:58:79:45:ad:df:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.13.219' (ECDSA) to the list of known hosts.
dmdba@10.10.13.219's password:
mpp01_full_bak_1.bak                                                                                                                                                                                     100% 9942KB  13.1MB/s   00:00
mpp01_full_bak_1.meta                                                                                                                                                                                    100%   77KB   3.4MB/s   00:00
[dmdba@dm8mppdw1 dm8]$

将mpp02的备份复制到mpp12所在主机上:

[dmdba@dm8mppdw2 dm8]$ scp -r mpp02_full_bak_1 10.10.13.220:/dm8
The authenticity of host '10.10.13.220 (10.10.13.220)' can't be established.
ECDSA key fingerprint is SHA256:6O8c9WEeEYPbL4ncdRR1RsrjxxmfzPq9Tkq4/6uLSP4.
ECDSA key fingerprint is MD5:e1:73:3e:8d:79:be:5c:82:0f:c7:58:79:45:ad:df:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.13.220' (ECDSA) to the list of known hosts.
dmdba@10.10.13.220's password:
mpp02_full_bak_1.bak                                                                                                                                                                                     100% 9942KB  16.7MB/s   00:00
mpp02_full_bak_1.meta                                                                                                                                                                                    100%   77KB   2.5MB/s   00:00
[dmdba@dm8mppdw2 dm8]$

创建备库备库并恢复
备库mpp11:

[dmdba@dm8mppdw3 dm8]$ dminit path=/dm8/data db_name=mpp01 instance_name=mpp11 port_num=5236 page_size=16 case_sensitive=1 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/mpp01/mpp0101.log


 log file path: /dm8/data/mpp01/mpp0102.log

write to dir [/dm8/data/mpp01].
create dm database success. 2022-01-24 15:04:44

备库mpp12:

[dmdba@dm8mppdw4 dm8]$ dminit path=/dm8/data db_name=mpp02 instance_name=mpp12 port_num=5236 page_size=16 case_sensitive=1 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/mpp02/mpp0201.log


 log file path: /dm8/data/mpp02/mpp0202.log

write to dir [/dm8/data/mpp02].
create dm database success. 2022-01-24 15:38:12

恢复备库
备库mpp11:

[dmdba@dm8mppdw3 dm8]$ dmrman CTLSTMT="restore database '/dm8/data/mpp01/dm.ini' from backupset '/dm8/mpp01_full_bak_1'"
dmrman V8
restore database '/dm8/data/mpp01/dm.ini' from backupset '/dm8/mpp01_full_bak_1'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:07][Remaining:00:00:00]
restore successfully.
time used: 00:00:07.659
[dmdba@dm8mppdw3 dm8]$
[dmdba@dm8mppdw3 dm8]$ dmrman CTLSTMT="recover database '/dm8/data/mpp01/dm.ini' from backupset '/dm8/mpp01_full_bak_1'"
dmrman V8
recover database '/dm8/data/mpp01/dm.ini' from backupset '/dm8/mpp01_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[24618], file_lsn[24618]
no log generates while the backupset [/dm8/mpp01_full_bak_1] created
recover successfully!
time used: 317.800(ms)
[dmdba@dm8mppdw3 dm8]$ dmrman CTLSTMT="recover database '/dm8/data/mpp01/dm.ini' UPDATE DB_MAGIC"
dmrman V8
recover database '/dm8/data/mpp01/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[24618], file_lsn[24618]
recover successfully!
time used: 00:00:01.080

备库mpp12:

[dmdba@dm8mppdw4 dm8]$ dmrman CTLSTMT="restore database '/dm8/data/mpp02/dm.ini' from backupset '/dm8/mpp02_full_bak_1'"
dmrman V8
restore database '/dm8/data/mpp02/dm.ini' from backupset '/dm8/mpp02_full_bak_1'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:07][Remaining:00:00:00]
restore successfully.
time used: 00:00:07.202
[dmdba@dm8mppdw4 dm8]$ dmrman CTLSTMT="recover database '/dm8/data/mpp02/dm.ini' from backupset '/dm8/mpp02_full_bak_1'"
dmrman V8
recover database '/dm8/data/mpp02/dm.ini' from backupset '/dm8/mpp02_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[24618], file_lsn[24618]
no log generates while the backupset [/dm8/mpp02_full_bak_1] created
recover successfully!
time used: 341.601(ms)
[dmdba@dm8mppdw4 dm8]$ dmrman CTLSTMT="recover database '/dm8/data/mpp02/dm.ini' UPDATE DB_MAGIC"
dmrman V8
recover database '/dm8/data/mpp02/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[24618], file_lsn[24618]
recover successfully!
time used: 00:00:01.058

配置操作
主库mpp01
配置dm.ini
配置dm.ini文件,配置以下参数:

INSTANCE_NAME = MPP01
PORT_NUM = 5236                             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60                   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                       #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2                       #不允许备库OFFLINE表空间
MAL_INI = 1                                 #打开MAL系统
ARCH_INI = 1                                #打开归档配置
MPP_INI = :1                                 #启用MPP配置
RLOG_SEND_APPLY_MON = 64                    #统计最近64次的日志发送信息

配置dmmal.ini
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5               #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5           #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = MPP01                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.217            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.217       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = MPP02                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.218            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.218       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = MPP11                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.219            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.219       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST4]
MAL_INST_NAME = MPP12                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.220            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.220       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[dmdba@dm8mppdw1 mpp01]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = MPP01
MAL_HOST = 10.10.13.217
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.217
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = MPP02
MAL_HOST = 10.10.13.218
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.218
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = MPP11
MAL_HOST = 10.10.13.219
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.219
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST4]
MAL_INST_NAME = MPP12
MAL_HOST = 10.10.13.220
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.220
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。
除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。当前实例mpp01是主库,需要向即时备库mpp11同步数据,因此即时归档的ARCH_DEST配置为mpp11。

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME               #即时归档类型
ARCH_DEST = MPP11                  #即时归档目标实例名

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL                  #本地归档类型
ARCH_DEST = /dm8/arch              #本地归档文件存放路径
ARCH_FILE_SIZE = 128               #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0               #单位Mb,0表示无限制,范围1024~4294967294M


[dmdba@dm8mppdw1 mpp01]$ vi dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = MPP11

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmmpp.ctl
mmpp.ctl是二进制文件,由dmmpp.ini文本通过dmctlcvt工具转换而来,dmmpp.ini配置项如下表:

[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = MPP01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = MPP02

[dmdba@dm8mppdw1 mpp01]$ vi dmmpp.ini
[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME = MPP01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME = MPP02

使用DM提供的工具dmctlcvt将dmmpp.ini转换成dmmpp.ctl,dmctlcvt工具在DM安装目录的“bin”子目录中。转换生成的dmmpp.ctl需要放在与dm.ini同一个目录。假设DM的安装路径为c盘根目录,下面的命令将dmmpp.ini转换为dmmpp.ctl,命令中的
“TYPE=2”参数表示将文本文件转换成控制文件,也可以使用“TYPE=1”参数进行逆向转换。

[dmdba@dm8mppdw1 mpp01]$ dmctlcvt type=2 src=/dm8/data/mpp01/dmmpp.ini dest=/dm8/data/mpp01/dmmpp.ctl
DMCTLCVT V8
convert txt to ctl success!

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 333333                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/mpp01/dm.ini                        #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭

[dmdba@dm8mppdw1 mpp01]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 333333
INST_INI = /dm8/data/mpp01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

主库mpp02
配置dm.ini
配置dm.ini文件,配置以下参数:

INSTANCE_NAME = MPP02
PORT_NUM = 5236                             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60                   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                       #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2                       #不允许备库OFFLINE表空间
MAL_INI = 1                                 #打开MAL系统
ARCH_INI = 1                                #打开归档配置
MPP_INI = 1                                 #启用MPP配置
RLOG_SEND_APPLY_MON = 64                    #统计最近64次的日志发送信息

配置dmmal.ini
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5               #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5           #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = MPP01                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.217            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.217       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = MPP02                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.218            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.218       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = MPP11                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.219            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.219       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST4]
MAL_INST_NAME = MPP12                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.220            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.220       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[dmdba@dm8mppdw2 mpp02]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = MPP01
MAL_HOST = 10.10.13.217
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.217
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = MPP02
MAL_HOST = 10.10.13.218
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.218
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = MPP11
MAL_HOST = 10.10.13.219
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.219
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST4]
MAL_INST_NAME = MPP12
MAL_HOST = 10.10.13.220
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.220
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。
除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。当前实例mpp02是主库,需要向即时备库mpp12同步数据,因此即时归档的ARCH_DEST配置为mpp12。

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME               #即时归档类型
ARCH_DEST = MPP12                  #即时归档目标实例名

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL                  #本地归档类型
ARCH_DEST = /dm8/arch              #本地归档文件存放路径
ARCH_FILE_SIZE = 128               #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0               #单位Mb,0表示无限制,范围1024~4294967294M


[dmdba@dm8mppdw2 mpp02]$ vi dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = MPP12

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmmpp.ctl
将主库mpp01上的dmpp.ctl拷贝过来

[dmdba@dm8mppdw1 mpp01]$ scp dmmpp.ctl 10.10.13.218:/dm8/data/mpp02/
The authenticity of host '10.10.13.218 (10.10.13.218)' can't be established.
ECDSA key fingerprint is SHA256:6O8c9WEeEYPbL4ncdRR1RsrjxxmfzPq9Tkq4/6uLSP4.
ECDSA key fingerprint is MD5:e1:73:3e:8d:79:be:5c:82:0f:c7:58:79:45:ad:df:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.13.218' (ECDSA) to the list of known hosts.
dmdba@10.10.13.218's password:
dmmpp.ctl                                                                                                                                                                                                100%   41KB   1.3MB/s   00:00
[dmdba@dm8mppdw1 mpp01]$

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP2]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 444444                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/mpp02/dm.ini                        #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭

[dmdba@dm8mppdw2 mpp02]$ vi dmwatcher.ini
[GRP2]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 444444
INST_INI = /dm8/data/mpp02/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

配置备库
mpp11
配置dm.ini
配置dm.ini文件,配置以下参数:

INSTANCE_NAME = MPP11
PORT_NUM = 5236                             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60                   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                       #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2                       #不允许备库OFFLINE表空间
MAL_INI = 1                                 #打开MAL系统
ARCH_INI = 1                                #打开归档配置
MPP_INI = 1                                 #启用MPP配置
RLOG_SEND_APPLY_MON = 64                    #统计最近64次的日志发送信息

配置dmmal.ini
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5               #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5           #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = MPP01                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.217            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.217       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = MPP02                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.218            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.218       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = MPP11                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.219            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.219       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST4]
MAL_INST_NAME = MPP12                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.220            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.220       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[dmdba@dm8mppdw3 mpp01]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = MPP01
MAL_HOST = 10.10.13.217
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.217
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = MPP02
MAL_HOST = 10.10.13.218
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.218
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = MPP11
MAL_HOST = 10.10.13.219
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.219
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST4]
MAL_INST_NAME = MPP12
MAL_HOST = 10.10.13.220
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.220
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。
除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。当前实例mpp11是备库,守护系统配置完成后,可能在各种故障处理中,mpp11切换为新的主库,正常情况下,mpp01会切换为新的备库,需要向
mpp01同步数据,因此即时归档的ARCH_DEST配置为mpp01

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME               #即时归档类型
ARCH_DEST = MPP01                  #即时归档目标实例名

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL                  #本地归档类型
ARCH_DEST = /dm8/arch              #本地归档文件存放路径
ARCH_FILE_SIZE = 128               #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0               #单位Mb,0表示无限制,范围1024~4294967294M


[dmdba@dm8mppdw3 mpp01]$ vi dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = MPP01

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmmpp.ctl
将主库mpp01上的dmpp.ctl拷贝过来

[dmdba@dm8mppdw1 mpp01]$ scp dmmpp.ctl 10.10.13.219:/dm8/data/mpp01/
dmdba@10.10.13.219's password:
dmmpp.ctl                                                                                                                                                                                                100%   41KB   1.4MB/s   00:00

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 333333                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/mpp01/dm.ini                        #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭

[dmdba@dm8mppdw3 mpp01]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 333333
INST_INI = /dm8/data/mpp01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

配置备库
mpp12
配置dm.ini
配置dm.ini文件,配置以下参数:

INSTANCE_NAME = MPP12
PORT_NUM = 5236                             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60                   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                       #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2                       #不允许备库OFFLINE表空间
MAL_INI = 1                                 #打开MAL系统
ARCH_INI = 1                                #打开归档配置
MPP_INI = 1                                 #启用MPP配置
RLOG_SEND_APPLY_MON = 64                    #统计最近64次的日志发送信息

配置dmmal.ini
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5               #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5           #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = MPP01                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.217            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.217       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = MPP02                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.218            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.218       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = MPP11                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.219            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.219       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST4]
MAL_INST_NAME = MPP12                #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.220            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.220       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[dmdba@dm8mppdw4 mpp02]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = MPP01
MAL_HOST = 10.10.13.217
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.217
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = MPP02
MAL_HOST = 10.10.13.218
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.218
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = MPP11
MAL_HOST = 10.10.13.219
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.219
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST4]
MAL_INST_NAME = MPP12
MAL_HOST = 10.10.13.220
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.220
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。
除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。当前实例mpp12是备库,守护系统配置完成后,可能在各种故障处理中,mpp12切换为新的主库,正常情况下,mpp02会切换为新的备库,需要向
mpp02同步数据,因此即时归档的ARCH_DEST配置为mpp02

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME               #即时归档类型
ARCH_DEST = MPP02                  #即时归档目标实例名

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL                  #本地归档类型
ARCH_DEST = /dm8/arch              #本地归档文件存放路径
ARCH_FILE_SIZE = 128               #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0               #单位Mb,0表示无限制,范围1024~4294967294M


[dmdba@dm8mppdw4 mpp02]$ vi dmarch.ini
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = MPP02

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmmpp.ctl
将主库mpp01上的dmpp.ctl拷贝过来

[dmdba@dm8mppdw1 mpp01]$ scp dmmpp.ctl 10.10.13.220:/dm8/data/mpp02
The authenticity of host '10.10.13.220 (10.10.13.220)' can't be established.
ECDSA key fingerprint is SHA256:6O8c9WEeEYPbL4ncdRR1RsrjxxmfzPq9Tkq4/6uLSP4.
ECDSA key fingerprint is MD5:e1:73:3e:8d:79:be:5c:82:0f:c7:58:79:45:ad:df:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.13.220' (ECDSA) to the list of known hosts.
dmdba@10.10.13.220's password:
dmmpp.ctl                                                                                                                                                                                                100%   41KB   2.1MB/s   00:00

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP2]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 444444                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/mpp02/dm.ini                        #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭

[dmdba@dm8mppdw2 mpp02]$ vi dmwatcher.ini
[GRP2]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 444444
INST_INI = /dm8/data/mpp02/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

主库启动到mount状态设置oguid
主库mpp01:

[dmdba@dm8mppdw1 ~]$ dmserver /dm8/data/mpp01/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 24618
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

启动命令行工具 DIsql,使用 MPP 类型为 LOCAL 方式,登录主库修改数据库为Primary 模式。)

[dmdba@dm8mppdw1 ~]$ disql SYSDBA/SYSDBA@localhost:5236#"{mpp_type=local}"

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.701(ms)
disql V8
SQL>

SQL> sp_set_oguid(333333);
DMSQL executed successfully
used time: 77.628(ms). Execute id is 0.

修改数据库模式

SQL> alter database primary;
executed successfully
used time: 91.249(ms). Execute id is 0.

主库mpp02:

[dmdba@dm8mppdw2 mpp02]$ dmserver /dm8/data/mpp02/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
begin redo pwr log collect, last ckpt lsn: 24618 ...
redo pwr log collect finished
main rfil[/dm8/data/mpp02/mpp0201.log]'s grp collect 0 valid pwr record, discard 0 invalid pwr record
EP[0]'s cur_lsn[24618], file_lsn[24618]
begin redo log recover, last ckpt lsn: 24618 ...
redo log recover finished
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

[dmdba@dm8mppdw2 mpp02]$ disql SYSDBA/SYSDBA@localhost:5236#"{mpp_type=local}"

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.835(ms)
disql V8
SQL> sp_set_oguid(444444);
DMSQL executed successfully
used time: 150.390(ms). Execute id is 0.
SQL>

修改数据库模式

SQL> alter database primary;
executed successfully
used time: 98.390(ms). Execute id is 0.

备库启动到mount状态设置oguid
备库mpp11:

[dmdba@dm8mppdw3 ~]$ dmserver /dm8/data/mpp01/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 24618
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

[dmdba@dm8mppdw3 mpp01]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 4.452(ms)
disql V8
SQL> sp_set_oguid(333333);
DMSQL executed successfully
used time: 148.410(ms). Execute id is 0.
SQL>

修改数据库模式

SQL> alter database standby;
executed successfully
used time: 114.912(ms). Execute id is 0.

备库mpp12:

[dmdba@dm8mppdw4 ~]$ dmserver /dm8/data/mpp02/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 24618
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.

[dmdba@dm8mppdw4 mpp02]$ disql SYSDBA/SYSDBA@localhost:5236#"{mpp_type=local}"

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.872(ms)
disql V8
SQL> sp_set_oguid(444444);
DMSQL executed successfully
used time: 55.134(ms). Execute id is 0.

修改数据库模式

SQL> alter database standby;
executed successfully
used time: 53.966(ms). Execute id is 0.

注册并启动守护进程
主库mpp01:

[root@dm8mppdw1 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/mpp01/dmwatcher.ini -p mpp01 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicempp01.service to /usr/lib/systemd/system/DmWatcherServicempp01.service.
Finished to create the service (DmWatcherServicempp01)

[root@dm8mppdw1 ~]# service DmWatcherServicempp01 start
Redirecting to /bin/systemctl start DmWatcherServicempp01.service

主库mpp02

[root@dm8mppdw2 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/mpp02/dmwatcher.ini -p mpp02 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicempp02.service to /usr/lib/systemd/system/DmWatcherServicempp02.service.
Finished to create the service (DmWatcherServicempp02)

[root@dm8mppdw2 ~]# service DmWatcherServicempp02 start
Redirecting to /bin/systemctl start DmWatcherServicempp02.service

备库mpp11:

[root@dm8mppdw3 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/mpp01/dmwatcher.ini -p mpp11 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicempp11.service to /usr/lib/systemd/system/DmWatcherServicempp11.service.
Finished to create the service (DmWatcherServicempp11)

[root@dm8mppdw3 ~]# service DmWatcherServicempp11 start
Redirecting to /bin/systemctl start DmWatcherServicempp11.service

备库mpp12:

[root@dm8mppdw4 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/mpp02/dmwatcher.ini -p mpp12 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicempp12.service to /usr/lib/systemd/system/DmWatcherServicempp12.service.
Finished to create the service (DmWatcherServicempp12)

[root@dm8mppdw4 ~]# service DmWatcherServicempp12 start
Redirecting to /bin/systemctl start DmWatcherServicempp12.service

查看file_lsn与cur_lsn主备库是否一致
主库mpp01:

SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          25877                25877

used time: 3.526(ms). Execute id is 700.

主库mpp02:

SQL>  select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          25877                25877

used time: 4.583(ms). Execute id is 700.

备库mpp11:

SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          25877                25877

used time: 1.855(ms). Execute id is 201.

备库mpp12:

SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          25877                25877

used time: 1.987(ms). Execute id is 201.

配置监视器
由于主备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知备库接管为新的主库,具有自动故障处理的功能。

修改dmmonitor.ini配置确认监视器,其中MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。

MON_DW_CONFIRM = 1                          #确认监视器模式
MON_LOG_PATH = /dm8/data/log                #监视器日志文件存放路径
MON_LOG_INTERVAL = 60                       #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32                      #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0                     #不限定日志文件总占用空间

[GRP1]
MON_INST_OGUID = 333333                     #组GRP1的唯一OGUID值
                                            #以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
                                            #IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 10.10.13.217:5239
MON_DW_IP = 10.10.13.219:5239

[GRP2]
MON_INST_OGUID = 444444                     #组GRP1的唯一OGUID值
                                            #以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
                                            #IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 10.10.13.218:5239
MON_DW_IP = 10.10.13.220:5239

[dmdba@dm8mppdw5 data]$ vi dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]
MON_INST_OGUID = 333333


MON_DW_IP = 10.10.13.217:5239
MON_DW_IP = 10.10.13.219:5239

[GRP2]
MON_INST_OGUID = 444444


MON_DW_IP = 10.10.13.218:5239
MON_DW_IP = 10.10.13.220:5239

启动监视器:

[dmdba@dm8mppdw5 data]$ dmmonitor /dm8/data/dmmonitor.ini
[monitor]         2022-01-28 09:29:19: DMMONITOR[4.0] V8
[monitor]         2022-01-28 09:29:19: DMMONITOR[4.0] IS READY.

[monitor]         2022-01-28 09:29:19: Received message from(MPP01)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-01-28 09:29:19  OPEN           OK        MPP01            OPEN        PRIMARY   VALID    2        25877           25877

[monitor]         2022-01-28 09:29:20: Received message from(MPP11)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-01-28 09:29:19  OPEN           OK        MPP11            OPEN        STANDBY   VALID    2        25877           25877

[monitor]         2022-01-28 09:29:20: Received message from(MPP02)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-01-28 09:29:19  OPEN           OK        MPP02            OPEN        PRIMARY   VALID    2        25877           25877

[monitor]         2022-01-28 09:29:20: Received message from(MPP12)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-01-28 09:29:19  OPEN           OK        MPP12            OPEN        STANDBY   VALID    2        25877           25877

show
2022-01-28 09:29:32
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             333333      TRUE            AUTO            TRUE


< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.217      5239         2022-01-28 09:29:31  GLOBAL    VALID     OPEN           MPP01            OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.217      5236       OK        MPP01            OPEN        PRIMARY   0          0            REALTIME  VALID    4213            25877           4213            25877           NONE

< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.219      5239         2022-01-28 09:29:31  GLOBAL    VALID     OPEN           MPP11            OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.219      5236       OK        MPP11            OPEN        STANDBY   0          0            REALTIME  VALID    4207            25877           4207            25877           NONE

DATABASE(MPP11) APPLY INFO FROM (MPP01), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4213, 4213, 4213], (RLSN, SLSN, KLSN)[25877, 25877, 25877], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (25877)


#--------------------------------------------------------------------------------#
2022-01-28 09:29:32
#--------------------------------------------------------------------------------#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP2             444444      TRUE            AUTO            TRUE


< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.218      5239         2022-01-28 09:29:31  GLOBAL    VALID     OPEN           MPP02            OK        1     1     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.218      5236       OK        MPP02            OPEN        PRIMARY   0          0            REALTIME  VALID    4217            25877           4217            25877           NONE

< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.220      5239         2022-01-28 09:29:31  GLOBAL    VALID     OPEN           MPP12            OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.220      5236       OK        MPP12            OPEN        STANDBY   0          0            REALTIME  VALID    4211            25877           4211            25877           NONE

DATABASE(MPP12) APPLY INFO FROM (MPP02), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4217, 4217, 4217], (RLSN, SLSN, KLSN)[25877, 25877, 25877], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (25877)


#================================================================================#

或者

[root@dm8mppdw5 ~]# /dm8/script/root/dm_service_installer.sh -monitor_ini /dm8/data/dmmonitor.ini -p mppdw -t dmmonitor
Created symlink from /etc/systemd/system/multi-user.target.wants/DmMonitorServicemppdw.service to /usr/lib/systemd/system/DmMonitorServicemppdw.service.
Finished to create the service (DmMonitorServicemppdw)

使用服务方式启动不能执行相关命令来显示监控信息所以一般不使用

验证
MPP 验证
在MPP主节点1(mpp01)创建测试表:

[dmdba@dm8mppdw1 ~]$ disql SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 3.571(ms)
disql V8
SQL> create table test as select * from sysobjects;
executed successfully
used time: 209.673(ms). Execute id is 900.

到MPP主节点2(mpp02)查询:MPP运行正常:

[dmdba@dm8mppdw2 mpp02]$ disql SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is primary, state is open
login used time : 3.175(ms)
disql V8
SQL> select count(*) from test;

LINEID     COUNT(*)
---------- --------------------
1          728

used time: 9.494(ms). Execute id is 415390.

数据守护验证
备库mpp11:

[dmdba@dm8mppdw3 mpp01]$ disql SYSDBA/SYSDBA@LOCALHOST:5236

Server[LOCALHOST:5236]:mode is standby, state is open
login used time : 2.944(ms)
disql V8
SQL> select count(*) from test;

LINEID     COUNT(*)
---------- --------------------
1          728

used time: 6.369(ms). Execute id is 300.

备库mpp12:

SQL> select count(*) from test;

LINEID     COUNT(*)
---------- --------------------
1          0

used time: 0.310(ms). Execute id is 201.

确认下守护进程的信息,运行是正常的:
备库mpp11:

SQL> select * from v$dmwatcher;

LINEID     N_GROUP     GROUP_NAME INST_NAME DW_TYPE DW_MODE AUTO_RESTART DW_STATUS DW_SUB_STATUS   LAST_MSG_TIME              SWITCH_COUNT CTL_NUM     INST_NUM    MAX_CONN_NUM
---------- ----------- ---------- --------- ------- ------- ------------ --------- --------------- -------------------------- ------------ ----------- ----------- ------------
1          1           GRP1       MPP11     GLOBAL  AUTO    1            OPEN      SUB_STATE_START 2022-01-28 11:08:34.000000 0            1           1           2

used time: 1.327(ms). Execute id is 203.
SQL> select * from v$mal_link_status;

LINEID     SRC_SITE DEST_SITE CTL_LINK_STATUS DATA_LINK_STATUS
---------- -------- --------- --------------- ----------------
1          MPP11    MPP01     CONNECTED       CONNECTED
2          MPP11    MPP02     CONNECTED       CONNECTED
3          MPP11    MPP12     CONNECTED       CONNECTED

used time: 0.798(ms). Execute id is 204.

备库mpp12:

SQL> select * from v$dmwatcher;

LINEID     N_GROUP     GROUP_NAME INST_NAME DW_TYPE DW_MODE AUTO_RESTART DW_STATUS DW_SUB_STATUS   LAST_MSG_TIME              SWITCH_COUNT CTL_NUM     INST_NUM    MAX_CONN_NUM
---------- ----------- ---------- --------- ------- ------- ------------ --------- --------------- -------------------------- ------------ ----------- ----------- ------------
1          1           GRP2       MPP12     GLOBAL  AUTO    1            OPEN      SUB_STATE_START 2022-01-28 11:08:30.000000 0            1           1           2

used time: 1.383(ms). Execute id is 203.
SQL> select * from v$mal_link_status;

LINEID     SRC_SITE DEST_SITE CTL_LINK_STATUS DATA_LINK_STATUS
---------- -------- --------- --------------- ----------------
1          MPP12    MPP01     CONNECTED       CONNECTED
2          MPP12    MPP02     CONNECTED       CONNECTED
3          MPP12    MPP11     CONNECTED       CONNECTED

used time: 0.986(ms). Execute id is 204.

DM8配置读写分离集群

配置读写分离集群
下列机器事先都安装了DM,安装路径为’/dm8’,执行程序保存在’/dm8/bin’目录中,数据存放路径为’/dm8/data’。

各主备库的实例名建议采用“组名_守护环境_序号”的方式命名,方便按组区分不同实例,注意总长度不能超过16。本示例中组名为“GRP1”,配置为读写分离集群,主库命名为“JY1”,备库分别命名为JY2”和“JY3”。


机器名     IP地址                    初始状态                          操作系统
dm8rw1     10.10.13.213(对外)       主库 jy1                          redhat 7.8
           10.10.13.213(mal对内)

dm8rw2     10.10.13.214(对外)
           10.10.13.214(mal对内)     备库 jy2                          redhat 7.8

dm8rw3     10.10.13.215(对外)
           10.10.13.215(mal对内)     备库 jy3                          redhat 7.8

dm8rw4     10.10.13.216              确认监视器                       redhat 7.8



实例名              port_num             mal_inst_dw_port    mal_host                mal_port        mal_dw_port
jy1                 5236                 5237                10.10.13.213          5238            5239
jy2                 5236                 5237                10.10.13.214          5238            5239
jy3                 5236                 5237                10.10.13.215          5238            5239

安装DM数据库软件

数据准备
在主库机器上初始化数据库到目录/dm8/data:

[dmdba@dm8rw1 dm8]$ dminit path=/dm8/data db_name=jy instance_name=jy1 port_num=5236 page_size=8 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/jy/jy01.log


 log file path: /dm8/data/jy/jy02.log

write to dir [/dm8/data/jy].
create dm database success. 2022-01-18 21:10:20


创建DmAPService用于dmrman来执行备份
主库

[root@dm8rw1 bin]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)

[root@dm8rw1 bin]# service DmAPService start
Redirecting to /bin/systemctl start DmAPService.service

备库jy2

[root@dm8rw2 bin]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)

[root@dm8rw2 bin]# service DmAPService start
Redirecting to /bin/systemctl start DmAPService.service

备库jy3

[root@dm8rw3 bin]# /dm8/script/root/dm_service_installer.sh -t dmap
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
Finished to create the service (DmAPService)
[root@dm8rw3 bin]# service DmAPService start
Redirecting to /bin/systemctl start DmAPService.service

注册服务用于启动数据库

[root@dm8rw1 bin]# /dm8/script/root/dm_service_installer.sh -dm_ini /dm8/data/jy/dm.ini -p jy1 -t dmserver
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicejy1.service to /usr/lib/systemd/system/DmServicejy1.service.
Finished to create the service (DmServicejy1)

正常启动数据库并正常关闭

[root@dm8rw1 bin]# service DmServicejy1 start
Redirecting to /bin/systemctl start DmServicejy1.service

[dmdba@dm8rw1 jy]$ disql SySDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is open
login used time : 4.305(ms)
disql V8
SQL> select instance_name from v$instance;

LINEID     INSTANCE_NAME
---------- -------------
1          JY1

used time: 5.512(ms). Execute id is 53700.

[root@dm8rw1 bin]# service DmServicejy1 stop
Redirecting to /bin/systemctl stop DmServicejy1.service

备份主库

1. 正常关闭数据库

[root@dm8rw1 bin]# service DmServicejy1 stop
Redirecting to /bin/systemctl stop DmServicejy1.service

2.使用dmrman来进行冷备份

[dmdba@dm8rw1 jy]$ dmrman CTLSTMT="backup database '/dm8/data/jy/dm.ini' full backupset  '/dm8/jy1_full_bak_1'"
dmrman V8
backup database '/dm8/data/jy/dm.ini' full backupset '/dm8/jy1_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26788], file_lsn[26788]
Processing backupset /dm8/jy1_full_bak_1
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.468



将主库的备份复制备库:

[dmdba@dm8rw1 dm8]$ scp -r jy1_full_bak_1 10.10.13.214:/dm8
dmdba@10.10.13.214's password:
jy1_full_bak_1.bak                                                                                                                                                                                       100% 6334KB  24.8MB/s   00:00
jy1_full_bak_1.meta                                                                                                                                                                                      100%   77KB   4.2MB/s   00:00
[dmdba@dm8rw1 dm8]$ scp -r jy1_full_bak_1 10.10.13.215:/dm8
dmdba@10.10.13.215's password:
jy1_full_bak_1.bak                                                                                                                                                                                       100% 6334KB  10.9MB/s   00:00
jy1_full_bak_1.meta                                                                                                                                                                                      100%   77KB   1.2MB/s   00:00
[dmdba@dm8rw1 dm8]$

创建备库备库并恢复
备库jy2:

[dmdba@dm8rw2 dm8]$ dminit path=/dm8/data db_name=jy instance_name=jy2 port_num=5236 page_size=8 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/jy/jy01.log


 log file path: /dm8/data/jy/jy02.log

write to dir [/dm8/data/jy].
create dm database success. 2022-01-18 21:46:05

备库jy3:

[dmdba@dm8rw3 dm8]$ dminit path=/dm8/data db_name=jy instance_name=jy3 port_num=5236 page_size=8 charset=0
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /dm8/data/jy/jy01.log


 log file path: /dm8/data/jy/jy02.log

write to dir [/dm8/data/jy].
create dm database success. 2022-01-18 21:46:37

恢复备库
备库jy2:

[dmdba@dm8rw2 ~]$ dmrman CTLSTMT="restore database '/dm8/data/jy/dm.ini' from backupset '/dm8/jy1_full_bak_1'"
dmrman V8
restore database '/dm8/data/jy/dm.ini' from backupset '/dm8/jy1_full_bak_1'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:05][Remaining:00:00:00]
restore successfully.
time used: 00:00:05.615

[dmdba@dm8rw2 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/jy/dm.ini' FROM BACKUPSET '/dm8/jy1_full_bak_1'"
dmrman V8
RECOVER DATABASE '/dm8/data/jy/dm.ini' FROM BACKUPSET '/dm8/jy1_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26788], file_lsn[26788]
no log generates while the backupset [/dm8/jy1_full_bak_1] created
recover successfully!
time used: 345.359(ms)

[dmdba@dm8rw2 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/jy/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/jy/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26788], file_lsn[26788]
recover successfully!
time used: 00:00:01.066

备库jy3:

[dmdba@dm8rw3 ~]$ dmrman CTLSTMT="restore database '/dm8/data/jy/dm.ini' from backupset '/dm8/jy1_full_bak_1'"
dmrman V8
restore database '/dm8/data/jy/dm.ini' from backupset '/dm8/jy1_full_bak_1'
file dm.key not found, use default license!
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:06][Remaining:00:00:00]
restore successfully.
time used: 00:00:06.606
[dmdba@dm8rw3 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/jy/dm.ini' FROM BACKUPSET '/dm8/jy1_full_bak_1'"
dmrman V8
RECOVER DATABASE '/dm8/data/jy/dm.ini' FROM BACKUPSET '/dm8/jy1_full_bak_1'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26788], file_lsn[26788]
no log generates while the backupset [/dm8/jy1_full_bak_1] created
recover successfully!
time used: 323.405(ms)
[dmdba@dm8rw3 ~]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/jy/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/jy/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[26788], file_lsn[26788]
recover successfully!
time used: 00:00:01.069


配置操作
一.主库
配置dm.ini文件,配置以下参数

INSTANCE_NAME = jy1
PORT_NUM = 5236                             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60                   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                       #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2                       #不允许备库OFFLINE表空间
MAL_INI = 1                                 #打开MAL系统
ARCH_INI = 1                                #打开归档配置
RLOG_SEND_APPLY_MON = 64                    #统计最近64次的日志发送信息

配置dmmal.ini文件
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5               #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5           #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = jy1                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.213            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.213       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = jy2                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.214            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.214       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = jy3                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.215              #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.215       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口


[dmdba@dm8rw1 jy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = jy1
MAL_HOST = 10.10.13.213
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.213
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = jy2
MAL_HOST = 10.10.13.214
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.214
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = jy3
MAL_HOST = 10.10.13.215
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.215
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。
除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。当前实例jy1是主库,需要向即时备库jy2/jy3同步数据,因此即时归档的ARCH_DEST分别配置为jy2和jy3。

[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY                 #即时归档类型
ARCH_DEST = jy2                    #即时归档目标实例名
[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY                 #即时归档类型
ARCH_DEST = jy3                    #即时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL                  #本地归档类型
ARCH_DEST = /dm8/arch              #本地归档文件存放路径
ARCH_FILE_SIZE = 128               #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0               #单位Mb,0表示无限制,范围1024~4294967294M

[dmdba@dm8rw1 jy]$ vi dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = jy2

[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY
ARCH_DEST = jy3

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 222222                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/jy/dm.ini                           #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭


[dmdba@dm8rw1 jy]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 222222
INST_INI = /dm8/data/jy/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

配置备库jy2
配置dm.ini文件,配置以下参数

INSTANCE_NAME = jy2
PORT_NUM = 5236                             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60                   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                       #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2                       #不允许备库OFFLINE表空间
MAL_INI = 1                                 #打开MAL系统
ARCH_INI = 1                                #打开归档配置
RLOG_SEND_APPLY_MON = 64                    #统计最近64次的日志发送信息

配置dmmal.ini文件
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5               #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5           #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = jy1                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.213            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.213       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = jy2                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.214            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.214       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = jy3                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.215              #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.215       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口


[dmdba@dm8rw2 jy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = jy1
MAL_HOST = 10.10.13.213
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.213
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = jy2
MAL_HOST = 10.10.13.214
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.214
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = jy3
MAL_HOST = 10.10.13.215
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.215
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。

除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名

当前实例jy2是备库,守护系统配置完成后,可能在各种故障处理中,jy2切换为新的主库,正常情况下,jy1会切换为新的备库,需要向jy1和jy3同步数据,因此即时归档的ARCH_DEST分别配置为jy1和jy3。

[dmdba@dm8rw2 jy]$ vi dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = jy1

[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY
ARCH_DEST = jy3

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 222222                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/jy/dm.ini                           #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭


[dmdba@dm8rw2 jy]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 222222
INST_INI = /dm8/data/jy/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

配置备库jy3
配置dm.ini文件,配置以下参数

INSTANCE_NAME = jy3
PORT_NUM = 5236                             #数据库实例监听端口
DW_INACTIVE_INTERVAL = 60                   #接收守护进程消息超时时间
ALTER_MODE_STATUS = 0                       #不允许手工方式修改实例模式/状态
ENABLE_OFFLINE_TS = 2                       #不允许备库OFFLINE表空间
MAL_INI = 1                                 #打开MAL系统
ARCH_INI = 1                                #打开归档配置
RLOG_SEND_APPLY_MON = 64                    #统计最近64次的日志发送信息

配置dmmal.ini文件
配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL = 5               #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5           #判定MAL链路断开的时间

[MAL_INST1]
MAL_INST_NAME = jy1                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.213            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.213       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST2]
MAL_INST_NAME = jy2                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.214            #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.214       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口

[MAL_INST3]
MAL_INST_NAME = jy3                  #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.10.13.215              #MAL系统监听TCP连接的IP地址
MAL_PORT = 5238                      #MAL系统监听TCP连接的端口
MAL_INST_HOST = 10.10.13.215       #实例的对外服务IP地址
MAL_INST_PORT = 5236                 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 5239                   #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5237              #实例监听守护进程TCP连接的端口


[dmdba@dm8rw3 jy]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = jy1
MAL_HOST = 10.10.13.213
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.213
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST2]
MAL_INST_NAME = jy2
MAL_HOST = 10.10.13.214
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.214
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

[MAL_INST3]
MAL_INST_NAME = jy3
MAL_HOST = 10.10.13.215
MAL_PORT = 5238
MAL_INST_HOST = 10.10.13.215
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237

配置dmarch.ini
修改dmarch.ini,配置本地归档和即时归档。

除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名

当前实例jy3是备库,守护系统配置完成后,可能在各种故障处理中,jy3切换为新的主库,正常情况下,jy1会切换为新的备库,需要向jy1和jy2同步数据,因此即时归档的ARCH_DEST分别配置为jy1和jy2。

[dmdba@dm215 jy]$ vi dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = jy1

[ARCHIVE_TIMELY2]
ARCH_TYPE = TIMELY
ARCH_DEST = jy2

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

配置dmwatcher.ini
修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL                                         #全局守护类型
DW_MODE = AUTO                                           #自动切换模式  生产建议设置成手动
DW_ERROR_TIME = 10                                       #远程守护进程故障认定时间
INST_RECOVER_TIME = 60                                   #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10                                     #本地实例故障认定时间
INST_OGUID = 222222                                      #守护系统唯一OGUID值
INST_INI = /dm8/data/jy/dm.ini                           #dm.ini配置文件路径
INST_AUTO_RESTART = 1                                    #打开实例的自动启动功能(建议设置成0)
INST_STARTUP_CMD = /dm8/bin/dmserver                     #命令行方式启动
RLOG_SEND_THRESHOLD = 0                                  #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0                                 #指定备库重演日志的时间阀值,默认关闭


[dmdba@dm8rw3 jy]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 222222
INST_INI = /dm8/data/jy/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

二:
主库启动到mount状态设置oguid

[dmdba@dm8rw1 ~]$ dmserver /dm8/data/jy/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 25300
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.


[dmdba@dm8rw1 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 3.177(ms)
disql V8
SQL> sp_set_oguid(222222);
DMSQL executed successfully
used time: 66.753(ms). Execute id is 0.
SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          26788                26788

used time: 3.112(ms). Execute id is 1.
SQL> select permanent_magic;

LINEID     PERMANENT_MAGIC
---------- ---------------
1          518889968

used time: 1.941(ms). Execute id is 2.

备库jy2启动到mount状态设置oguid

[dmdba@dm8rw2 ~]$ dmserver /dm8/data/jy/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 26788
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.



[dmdba@dm8rw2 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 5.278(ms)
disql V8
SQL> sp_set_oguid(222222);
DMSQL executed successfully
used time: 114.383(ms). Execute id is 0.
SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          26788                26788

used time: 19.022(ms). Execute id is 1.
SQL> select permanent_magic;

LINEID     PERMANENT_MAGIC
---------- ---------------
1          518889968

used time: 1.356(ms). Execute id is 2.

备库jy3启动到mount状态设置oguid

[dmdba@dm8rw3 ~]$ dmserver /dm8/data/jy/dm.ini mount
file dm.key not found, use default license!
version info: develop
DM Database Server x64 V8 1-2-84-21.10.21-149328-10032-ENT  startup...
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
Database mode = 0, oguid = 0
License will expire on 2022-10-21
file lsn: 26788
ndct db load finished
ndct second level fill fast pool finished
ndct third level fill fast pool finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.


[dmdba@dm8rw3 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 5.145(ms)
disql V8
SQL> sp_set_oguid(222222);
DMSQL executed successfully
used time: 110.938(ms). Execute id is 0.
SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          26788                26788

used time: 14.513(ms). Execute id is 1.
SQL> select permanent_magic;

LINEID     PERMANENT_MAGIC
---------- ---------------
1          518889968

used time: 1.549(ms). Execute id is 2.

备库jy2注册服务用于启动数据库

[root@dm8rw2 ~]# /dm8/script/root/dm_service_installer.sh -dm_ini /dm8/data/jy/dm.ini -p jy2 -t dmserver
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicejy2.service to /usr/lib/systemd/system/DmServicejy2.service.
Finished to create the service (DmServicejy2)

备库jy3注册服务用于启动数据库

[root@dm8rw3 ~]# /dm8/script/root/dm_service_installer.sh -dm_ini /dm8/data/jy/dm.ini -p jy3 -t dmserver
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicejy3.service to /usr/lib/systemd/system/DmServicejy3.service.
Finished to create the service (DmServicejy3)

三:
主库以primary打开

[dmdba@dm8rw1 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.961(ms)
disql V8
SQL> alter database primary;
executed successfully
used time: 58.207(ms). Execute id is 0.

备库jy2以standby 打开

[dmdba@dm8rw2 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.221(ms)
disql V8
SQL> alter database standby;
executed successfully
used time: 145.716(ms). Execute id is 0.

备库jy3以standby 打开

[dmdba@dm8rw3 jy]$ disql SYSDBA/SYSDBA@localhost:5236

Server[localhost:5236]:mode is normal, state is mount
login used time : 2.978(ms)
disql V8
SQL> alter database standby;
executed successfully
used time: 72.982(ms). Execute id is 0.

启动命令行工具DIsql,登录备库修改数据库为Standby模式如果当前数据库不是normal模式,需要先修改dm.ini中ALTER_MODE_STATUS值为1,允许修改数据库模式,修改Standby模式成功后再改回为0。如果是normal模式,请忽略下面的第1步和第3步。

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); ----第1步
SQL>alter database standby; ----第2步
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); ----第3步

四:
启动守护进程
启动各个主备库上的守护进程:
主库

[dmdba@dm8rw1 ~]$ dmwatcher /dm8/data/jy/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
show
2022-01-18 22:23:19
---------------------------------------------------------------------------
GROUP_NAME       TYPE      MODE      OGUID       MPP_FLAG  AUTO_RESTART DW_STATUS       DW_SUB_STATUS   DW_CTL_STATUS
GRP1             GLOBAL    AUTO      222222      FALSE     TRUE         RECOVERY        WAIT_SEND_ARCH  VALID

INST_OK   NAME             SVR_MODE  SYS_STATUS   RTYPE     FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
OK        JY1              PRIMARY   OPEN         TIMELY    4205            28044           4205            28044           4
---------------------------------------------------------------------------


备库jy2

[dmdba@dm8rw2 ~]$ dmwatcher /dm8/data/jy/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
show
2022-01-18 22:23:28
---------------------------------------------------------------------------
GROUP_NAME       TYPE      MODE      OGUID       MPP_FLAG  AUTO_RESTART DW_STATUS       DW_SUB_STATUS   DW_CTL_STATUS
GRP1             GLOBAL    AUTO      222222      FALSE     TRUE         OPEN            SUB_STATE_START VALID

INST_OK   NAME             SVR_MODE  SYS_STATUS   RTYPE     FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
OK        JY2              STANDBY   OPEN         TIMELY    4204            28044           4204            28044           0

DATABASE(JY2) APPLY INFO:
REDOS_PARALLEL_NUM (1)
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4205, 4205, 4205], (RLSN, SLSN, KLSN)[28044, 28044, 28044], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (28044)

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

备库jy3

[dmdba@dm8rw3 ~]$ dmwatcher /dm8/data/jy/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
show
2022-01-18 22:23:35
---------------------------------------------------------------------------
GROUP_NAME       TYPE      MODE      OGUID       MPP_FLAG  AUTO_RESTART DW_STATUS       DW_SUB_STATUS   DW_CTL_STATUS
GRP1             GLOBAL    AUTO      222222      FALSE     TRUE         OPEN            SUB_STATE_START VALID

INST_OK   NAME             SVR_MODE  SYS_STATUS   RTYPE     FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
OK        JY3              STANDBY   OPEN         TIMELY    4204            28044           4204            28044           0

DATABASE(JY3) APPLY INFO:
REDOS_PARALLEL_NUM (1)
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4205, 4205, 4205], (RLSN, SLSN, KLSN)[28044, 28044, 28044], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (28044)

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

也可以注册守护进程服务来进行启动
主库

[root@dm8rw1 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/jy/dmwatcher.ini -p jy1 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicejy1.service to /usr/lib/systemd/system/DmWatcherServicejy1.service.
Finished to create the service (DmWatcherServicejy1)

[root@dm8rw1 ~]# service DmWatcherServicejy1 start
Redirecting to /bin/systemctl start DmWatcherServicejy1.service

备库1

[root@dm8rw2 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/jy/dmwatcher.ini -p jy2 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicejy2.service to /usr/lib/systemd/system/DmWatcherServicejy2.service.
Finished to create the service (DmWatcherServicejy2)

[root@dm8rw2 ~]# service DmWatcherServicejy2 start
Redirecting to /bin/systemctl start DmWatcherServicejy2.service

备库2

[root@dm8rw3 ~]# /dm8/script/root/dm_service_installer.sh -watcher_ini /dm8/data/jy/dmwatcher.ini -p jy3 -t dmwatcher
Created symlink from /etc/systemd/system/multi-user.target.wants/DmWatcherServicejy3.service to /usr/lib/systemd/system/DmWatcherServicejy3.service.
Finished to create the service (DmWatcherServicejy3)

[root@dm8rw3 ~]# service DmWatcherServicejy3 start
Redirecting to /bin/systemctl start DmWatcherServicejy3.service

配置监视器
由于主库和即时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知即时备库接管为新的主库,具有自动故障处理的功能。

修改dmmonitor.ini配置确认监视器,其中MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。

MON_DW_CONFIRM = 1                          #确认监视器模式
MON_LOG_PATH = /dm8/data/log                #监视器日志文件存放路径
MON_LOG_INTERVAL = 60                       #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32                      #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0                     #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 222222                     #组GRP1的唯一OGUID值
                                            #以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
                                            #IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 10.10.13.213:5238
MON_DW_IP = 10.10.13.214:5238
MON_DW_IP = 10.10.13.215:5238


[dmdba@dm216 data]$ vi dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]
MON_INST_OGUID = 222222



MON_DW_IP = 10.10.13.213:5238
MON_DW_IP = 10.10.13.214:5238
MON_DW_IP = 10.10.13.215:5238

启动监视器:

[dmdba@dm8rw4 data]$ dmmonitor /dm8/data/dmmonitor.ini
[monitor]         2022-01-18 22:28:01: DMMONITOR[4.0] V8
[monitor]         2022-01-18 22:28:02: DMMONITOR[4.0] IS READY.

[monitor]         2022-01-18 22:28:02: Received message from(JY1)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-01-18 22:28:02  OPEN           OK        JY1              OPEN        PRIMARY   VALID    3        28044           28044

[monitor]         2022-01-18 22:28:02: Received message from(JY3)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-01-18 22:28:02  OPEN           OK        JY3              OPEN        STANDBY   VALID    3        28044           28044

[monitor]         2022-01-18 22:28:02: Received message from(JY2)
                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN
                  2022-01-18 22:28:02  OPEN           OK        JY2              OPEN        STANDBY   VALID    3        28044           28044

show
2022-01-18 22:28:11
#================================================================================#
GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG
GRP1             222222      TRUE            AUTO            FALSE


< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.213      5239         2022-01-18 22:28:10  GLOBAL    VALID     OPEN           JY1              OK        1     1     OPEN        PRIMARY   DSC_OPEN       TIMELY    VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.213      5236       OK        JY1              OPEN        PRIMARY   0          0            TIMELY    VALID    4207            28044           4207            28044           NONE

< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.214      5239         2022-01-18 22:28:10  GLOBAL    VALID     OPEN           JY2              OK        1     1     OPEN        STANDBY   DSC_OPEN       TIMELY    VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.214      5236       OK        JY2              OPEN        STANDBY   0          0            TIMELY    VALID    4204            28044           4204            28044           NONE

DATABASE(JY2) APPLY INFO FROM (JY1), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4207, 4207, 4207], (RLSN, SLSN, KLSN)[28044, 28044, 28044], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (28044)


< >
DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT
10.10.13.215      5239         2022-01-18 22:28:10  GLOBAL    VALID     OPEN           JY3              OK        1     1     OPEN        STANDBY   DSC_OPEN       TIMELY    VALID

EP INFO:
INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG
10.10.13.215      5236       OK        JY3              OPEN        STANDBY   0          0            TIMELY    VALID    4204            28044           4204            28044           NONE

DATABASE(JY3) APPLY INFO FROM (JY1), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4207, 4207, 4207], (RLSN, SLSN, KLSN)[28044, 28044, 28044], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (28044)


#================================================================================#

测试数据同步
主库:

SQL> create table test(id number(10));
executed successfully
used time: 198.382(ms). Execute id is 103.
SQL> insert into test values(1);
affect rows 1

SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          29574                29574

used time: 0.350(ms). Execute id is 501.



used time: 1.182(ms). Execute id is 104.
SQL> commit;
executed successfully
used time: 12.799(ms). Execute id is 105.

备库jy2:

SQL> select * from test;

LINEID     ID
---------- --
1          1

used time: 2.615(ms). Execute id is 202.
SQL> select file_LSN, cur_LSN from v$rlog;

LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          29574                29574

used time: 5.798(ms). Execute id is 0.

备库jy3:

SQL> select * from test;

LINEID     ID
---------- --
1          1

used time: 2.691(ms). Execute id is 202.
SQL> select file_LSN, cur_LSN from v$rlog;
LINEID     FILE_LSN             CUR_LSN
---------- -------------------- --------------------
1          29574                29574

used time: 5.949(ms). Execute id is 0.

接口说明

DM多种客户端接口都支持读写分离集群连接设置,以下说明客户端连接服务器时如何设置读写分离属性,详细可参考《DM8程序员手册》。4

JDBC接口
在JDBC连接串中增加了两个连接属性:
n rwSeparate 是否使用读写分离系统,默认0;取值(0不使用,1使用)。
n rwPercent 分发到主库的事务占主备库总事务的百分比,有效值0~100,默认值25。
dm.jdbc.driver.DmDriver
jdbc:dm://192.168.0.206:5236?rwSeparate=1&rwPercent=10