一、概述
本文主要阐述基于ASM 构建 Oracle 12c RAC数据库的过程说明
1、系统版本要求
- 确保 Oracle Linux 版本为 6 或更高版本。
- 确保两个节点的 Oracle Linux 内核版本为 2.6.32 或更高版本。
2、系统安装要求
安装 Oracle Linux 7,就像安装基本服务器一样,更具体地说,它应该是一个至少具有 4G+ 交换空间、禁用防火墙、selinux为disabled,并安装了如下软件包组:
- Server with GUI
- Hardware Monitoring Utilities
- Large Systems Performance
- Network file system client
- Performance Tools
- Compatibility Libraries
- Development Tools
在Linux 7及以上的网络适配器称为 enp0s3、enp0s8 和 enp0s9,在以前的 Linux 版本中,它们分别是 eth0、eth1 和 eth2。
3、架构图
二、配置操作系统
1、Oracle 安装先决条件
执行自动设置或手动设置以完成基本先决条件。所有安装都需要附加设置。
(1)自动设置
如果您计划使用“oracle-database-server-12cR2-preinstall”软件包来执行所有先决条件设置,可以通过执行如下命令。
# yum install oracle-database-server-12cR2-preinstall -y
早期版本的 Oracle Linux 需要按照http://public-yum.oracle.com上的说明手动设置 Yum 存储库。
建议对系统进行全面的更新,但这不是必须的操作。
# yum update -y
(2)手动设置
如果您尚未使用“
oracle-database-server-12cR2-preinstall”软件包来执行所有先决条件,则需要手动执行以下安装任务。
2、设置/etc/sysctl.conf
将以下行添加到“/etc/sysctl.conf”文件或名为“/etc/sysctl.d/98-oracle.conf”的文件中。
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
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
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
运行以一下命令使当前修改内核参数生效。
/sbin/sysctl -p
# 或
/sbin/sysctl -p /etc/sysctl.d/98-oracle.conf
3、修改oarcle参数的shell限制
将以下行添加到名为“/etc/security/limits.d/oracle-database-server-12cR2-preinstall.conf”的文件中。
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
4、安装系统软件包
除了基本操作系统安装之外,还必须以 root 用户身份登录时安装以下软件包。这包括某些软件包的 64 位和 32 位版本。
# From Public Yum or ULN
yum install binutils -y
yum install compat-libstdc++-33 -y
yum install compat-libstdc++-33.i686 -y
yum install gcc -y
yum install gcc-c++ -y
yum install glibc -y
yum install glibc.i686 -y
yum install glibc-devel -y
yum install glibc-devel.i686 -y
yum install ksh -y
yum install libgcc -y
yum install libgcc.i686 -y
yum install libstdc++ -y
yum install libstdc++.i686 -y
yum install libstdc++-devel -y
yum install libstdc++-devel.i686 -y
yum install libaio -y
yum install libaio.i686 -y
yum install libaio-devel -y
yum install libaio-devel.i686 -y
yum install libXext -y
yum install libXext.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install libXi -y
yum install libXi.i686 -y
yum install make -y
yum install sysstat -y
yum install unixODBC -y
yum install unixODBC-devel -y
yum install zlib-devel -y
yum install zlib-devel.i686 -y
5、创建新组和用户
groupadd -g 1000 oinstall
groupadd -g 1100 asmadmin
groupadd -g 1200 dba
groupadd -g 1300 asmdba
groupadd -g 1301 asmoper
groupadd -g 1400 oper
/usr/sbin/useradd -u 1001 -g oinstall -G asmadmin,asmdba,asmoper grid
/usr/sbin/useradd -u 1000 -g oinstall -G dba,asmdba,oper oracle
echo "grid" | passwd --stdin grid
echo "oracle" | passwd --stdin oracle
三、其他设置
无论您进行手动设置还是自动设置,都必须执行以下步骤。
1、设置/etc/hosts解析
127.0.0.1 localhost.localdomain localhost
# Public
192.168.56.101 ol7-122-rac1.localdomain ol7-122-rac1
192.168.56.102 ol7-122-rac2.localdomain ol7-122-rac2
# Private
192.168.1.101 ol7-122-rac1-priv.localdomain ol7-122-rac1-priv
192.168.1.102 ol7-122-rac2-priv.localdomain ol7-122-rac2-priv
# Virtual
192.168.56.103 ol7-122-rac1-vip.localdomain ol7-122-rac1-vip
192.168.56.104 ol7-122-rac2-vip.localdomain ol7-122-rac2-vip
# SCAN
#192.168.56.105 ol7-122-scan.localdomain ol7-122-scan
#192.168.56.106 ol7-122-scan.localdomain ol7-122-scan
#192.168.56.107 ol7-122-scan.localdomain ol7-122-scan
SCAN 地址在主机文件中被注释掉,因为它必须使用 DNS 进行解析,因此它可以在与公共 IP 位于同一子网上的 3 个地址之间进行循环。可以使用BIND或Dnsmasq在主机上配置 DNS ,这要简单得多。如果您使用 Dnsmasq,请将 RAC 特定条目放入主机“/etc/hosts”文件中,取消注释 SCAN 条目,然后重新启动 Dnsmasq。
确保“/etc/resolv.conf”文件包含指向正确名称服务器的名称服务器条目。另外,如果“域”和“搜索”条目都存在,请注释掉其中之一。对于此安装,我的“/etc/resolv.conf”如下所示。
#domain localdomain
search localdomain
nameserver 192.168.56.1
2、关闭selinux
通过编辑“/etc/selinux/config”文件,确保selinux设置如下:
SELINUX=disabled
3、关闭firewall
# systemctl stop firewalld
# systemctl disable firewalld
4、确保 NTP(OL7/RHEL7 上的 Chrony)已启用
# systemctl enable chronyd
# systemctl restart chronyd
# chronyc -a 'burst 4/4'
# chronyc -a makestep
5、oracle用户的 Bash 配置文件
两节点都需要配置,添加如下内容:
cat >> .bash_profile << EOF
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOSTNAME=rac1<-->rac2; export ORACLE_HOSTNAME
ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
DB_HOME=$ORACLE_BASE/product/12.2.0.1/db_1; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=orcl1<-->orcl2; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PS1=[`hostname`'@$PWD']$
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
EOF
exit
6、grid用户环境变量
#grid
su - grid
.bash_profile
ORACLE_SID=+ASM1<-->+ASM2; export ORACLE_SID
ORACLE_HOME=/u01/app/12.2.0.1/grid; export ORACLE_HOME
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PS1=[`hostname`'@$PWD']$
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
7、创建相关用户及目录
mkdir -p /u01/app/12.2.0.1/grid
chown -R grid:oinstall /u01
mkdir -p /u01/app/oracle/product/12.2.0.1/db_1
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
8、配置ASM存储
方法二:通过命令创建
本次安装使用了oracleasmlib管理asm磁盘
首先从linux-kernel安装kmod-oracleasm,这是linux源中自带的,是linux支持oracleasm的软件包
然后从oracle官网下载oracleasmlib和oracleasm-support
/usr/sbin/oracleasm configure -i #两个节点
二、配置ASMlib,再使用ASMlib之前,必须运行配置脚本准备驱动程序:
使用root执行:/etc/init.d/oracleasm configure
[root@yft 1234]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
[root@yft 1234]# /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
/etc/init.d/oracleasm enable #两个节点
/etc/init.d/oracleasm start #两个节点
/usr/sbin/oracleasm listdisks
/usr/sbin/oracleasm querydisks
/usr/sbin/oracleasm createdisk NAME /path
/usr/sbin/oracleasm scandisks #一个节点创建磁盘后,另一个节点扫描磁盘即可
#本次创建的磁盘
/etc/init.d/oracleasm createdisk VOLCRS01 /dev/vdb1
/etc/init.d/oracleasm createdisk VOLCRS02 /dev/vdc1
/etc/init.d/oracleasm createdisk VOLCRS03 /dev/vdd1
/etc/init.d/oracleasm createdisk VOLDATA01 /dev/vdb2
/etc/init.d/oracleasm createdisk VOLDATA02 /dev/vdc2
/etc/init.d/oracleasm createdisk VOLDATA03 /dev/vdd2
附件:asm包下载地址http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html。
四、 Install Grid Infrastructure
export SOFTWARE_LOCATION=/media/sf_12.2.0.1/
cd /u01/app/12.2.0.1/grid
unzip -q $SOFTWARE_LOCATION/linuxx64_12201_grid_home.zip
我可以使用此编辑的响应文件 ( grid_config.rsp ) 和以下命令以静默模式运行配置。
cd /u01/app/12.2.0.1/grid
./gridSetup.sh -silent -responseFile /tmp/grid_config.rsp
相反,这是交互式配置。
cd /u01/app/12.2.0.1/grid
./gridSetup.sh
选择“为新集群配置 Oracle Grid Infrastructure”选项,然后单击“下一步”按钮。
单击“下一步”按钮接受“配置 Oracle 独立集群”选项。
输入集群名称“ol7-122-cluster”、SCAN 名称“ol7-122-scan”和 SCAN 端口“1521”,然后单击“下一步”按钮。
在“集群节点信息”屏幕上,单击“添加”按钮。
输入集群中第二个节点的详细信息,然后单击“确定”按钮。
单击“SSH 连接...”按钮并输入“oracle”用户的密码。单击“设置”按钮配置 SSH 连接,完成后单击“测试”按钮进行测试。测试完成后,单击“下一步”按钮。
检查公共和专用网络是否指定正确。如果显示 NAT 接口,请记住将其标记为“不使用”。单击“下一步”按钮。
单击“下一步”按钮接受“使用块设备配置 ASM”选项。
选择“否”选项,因为在这种情况下我们不想为 GIMR 创建单独的磁盘组。单击“下一步”按钮。
将冗余设置为“外部”,单击“更改发现路径”按钮并将路径设置为“/dev/oracleasm/*”。返回主屏幕并选择所有 4 个磁盘。取消选中“Configure Oracle ASM Filter Driver”选项,然后单击“Next”按钮。
输入凭据并单击“下一步”按钮。
单击“下一步”按钮接受默认 IPMI 选项。
不要在 EM 注册。单击“下一步”按钮。
我们使用单个用户和组管理 ASM 添加数据库,因此将组设置为“dba”并单击“下一步”按钮。单击“是”按钮接受后续对话框中的警告。
输入 Oracle Base 位置“/u01/app/oracle”,然后单击“下一步”按钮。我们已经为后面的数据库安装预先创建了目录,因此通过单击“是”按钮忽略后续有关 Oracle Base 不为空的警告。
单击“下一步”按钮接受默认清单目录。
如果您希望根脚本自动运行,请输入相关凭据。我更喜欢手动运行它们。单击“下一步”按钮。
等待先决条件检查完成。如果您有任何问题,请使用“修复并再次检查”按钮。完成可能的修复后,选中“全部忽略”复选框,然后单击“下一步”按钮。对于此类安装,“物理内存”和“网络时间协议 (NTP)”测试可能会失败。还行吧。
如果您对摘要信息感到满意,请单击“安装”按钮。
等待安装进行。
出现提示时,在每个节点上运行配置脚本。
等待配置助手完成。
如果任何配置步骤失败,您应该检查指定的日志,看看该错误是否是一个严重的错误。我收到的唯一错误是时间同步错误(PRVG-13606..
PRVG-13606:chrony 守护进程未与节点上的任何外部时间源同步...
如果您没有任何阻碍,可以通过单击“下一步”按钮安全地忽略错误。
单击“关闭”按钮退出安装程序。
Grid Infrastructure安装现已完成。我们可以使用以下命令检查安装的状态。
$ grid_env
$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
ONLINE ONLINE ol7-122-rac1 STABLE
ONLINE ONLINE ol7-122-rac2 STABLE
ora.DATA.dg
ONLINE ONLINE ol7-122-rac1 STABLE
ONLINE ONLINE ol7-122-rac2 STABLE
ora.LISTENER.lsnr
ONLINE ONLINE ol7-122-rac1 STABLE
ONLINE ONLINE ol7-122-rac2 STABLE
ora.chad
ONLINE ONLINE ol7-122-rac1 STABLE
ONLINE ONLINE ol7-122-rac2 STABLE
ora.net1.network
ONLINE ONLINE ol7-122-rac1 STABLE
ONLINE ONLINE ol7-122-rac2 STABLE
ora.ons
ONLINE ONLINE ol7-122-rac1 STABLE
ONLINE ONLINE ol7-122-rac2 STABLE
ora.proxy_advm
OFFLINE OFFLINE ol7-122-rac1 STABLE
OFFLINE OFFLINE ol7-122-rac2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE ol7-122-rac2 STABLE
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE ol7-122-rac2 STABLE
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE ol7-122-rac2 STABLE
ora.MGMTLSNR
1 ONLINE ONLINE ol7-122-rac2 169.254.137.110 192.
168.1.102,STABLE
ora.asm
1 ONLINE ONLINE ol7-122-rac1 Started,STABLE
2 ONLINE ONLINE ol7-122-rac2 Started,STABLE
3 OFFLINE OFFLINE STABLE
ora.cvu
1 ONLINE ONLINE ol7-122-rac1 STABLE
ora.mgmtdb
1 ONLINE ONLINE ol7-122-rac2 Open,STABLE
ora.ol7-122-rac1.vip
1 ONLINE ONLINE ol7-122-rac1 STABLE
ora.ol7-122-rac2.vip
1 ONLINE ONLINE ol7-122-rac2 STABLE
ora.qosmserver
1 ONLINE ONLINE ol7-122-rac1 STABLE
ora.scan1.vip
1 ONLINE ONLINE ol7-122-rac2 STABLE
ora.scan2.vip
1 ONLINE ONLINE ol7-122-rac2 STABLE
ora.scan3.vip
1 ONLINE ONLINE ol7-122-rac2 STABLE
--------------------------------------------------------------------------------
$
我可以使用此编辑的响应文件 ( db_install.rsp ) 和以下命令以静默模式运行 OUI 。
$ db_env
$ cd /media/sf_12.2.0.1/database
$ ./runInstaller -silent -ignoreSysPrereqs -showProgress -responseFile /tmp/db_install.rsp
相反,这是交互式视图。
$ db_env
$ cd /media/sf_12.2.0.1/database
$ ./runInstaller
取消选中安全更新复选框,然后单击“下一步”按钮,然后在随后的警告对话框中单击“是”。
选择“仅安装数据库软件”选项,然后单击“下一步”按钮。
单击“下一步”按钮接受“Oracle Real Application Clusters 数据库安装”选项。
确保两个节点都被选中,然后单击“下一步”按钮。
选择“企业版”选项,然后单击“下一步”按钮。
输入“/u01/app/oracle”作为 Oracle 库,输入“/u01/app/oracle/product/12.2.0.1/db_1”作为软件位置,然后单击“下一步”按钮。
选择所需的操作系统组,然后单击“下一步”按钮。在本例中,我们仅使用“dba”组。
等待先决条件检查完成。如果有任何问题,请单击“修复并再次检查”按钮,或选中“全部忽略”复选框并单击“下一步”按钮。
如果您对摘要信息感到满意,请单击“安装”按钮。
等待安装进行。
出现提示时,在每个节点上运行配置脚本。当脚本在每个节点上运行后,单击“确定”按钮。
单击“关闭”按钮退出安装程序。
五、创建数据库
确保“ol7-122-rac1”和“ol7-122-rac2”已启动,然后以oracle用户登录“ol7-122-rac1”并启动数据库创建助手(DBCA)。
我可以使用此编辑的响应文件 ( dbca.rsp ) 和以下命令以静默模式运行 DBCA 。
db_env
dbca -silent -responseFile /tmp/dbca.rsp
相反,这是交互式模式。
$ db_env
$ dbca
选择“创建数据库”选项并单击“下一步”按钮。
选择“典型配置”选项。输入容器数据库名称 (cdbrac)、可插入数据库名称 (pdb1) 和管理员密码。单击“下一步”按钮。
等待先决条件检查完成。如果有任何问题,请修复它们,或选中“全部忽略”复选框并单击“下一步”按钮。如果没有问题,您将直接进入摘要屏幕。如果您对摘要信息感到满意,请单击“完成”按钮。
等待数据库创建发生。
如果您想修改密码,请点击“密码管理”按钮。完成后,单击“关闭”按钮。
至此 RAC 数据库创建完成。
六、检查RAC状态
有多种方法可以检查 RAC 的状态。该srvctl实用程序显示 RAC 数据库的当前配置和状态。
$ srvctl config database -d cdbrac
Database unique name: cdbrac
Database name: cdbrac
Oracle home: /u01/app/oracle/product/12.2.0.1/db_1
Oracle user: oracle
Spfile: +DATA/CDBRAC/PARAMETERFILE/spfile.306.938083453
Password file: +DATA/CDBRAC/PASSWORD/pwdcdbrac.285.938081999
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group:
Database instances: cdbrac1,cdbrac2
Configured nodes: ol7-122-rac1,ol7-122-rac2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
$
$ srvctl status database -d cdbrac
Instance cdbrac1 is running on node ol7-122-rac1
Instance cdbrac2 is running on node ol7-122-rac2
$
该V$ACTIVE_INSTANCES视图还可以显示实例的当前状态。
$ sqlplus / as sysdba
SQL*Plus:2017 年 3 月 8 日星期三 11:04:42 发布 12.2.0.1.0 版本,
版权所有 (c) 1982,2016,Oracle。版权所有。
连接到:
Oracle Database 12c 企业版版本 12.2.0.1.0 - 64 位生产
SQL> SELECT inst_name FROM v$active_instances;
INST_NAME
------------------------------------------------- -------------------------------
ol7-122-rac1.localdomain:cdbrac1
ol7-122-rac2.localdomain:cdbrac2
SQL >