Oracle安装-Oracle12cR2 RAC DataGuard集群安装配置 FOR RHEL/OEL7 Linux详细过程
1. 硬件环境要求
在安装Oracle 12cR2 RAC DataGuard集群之前,必须确保硬件环境满足最低要求。更多学习教程www.fgedu.net.cn
节点1:fgedudb01.fgedu.net.cn,IP:192.168.1.51
节点2:fgedudb02.fgedu.net.cn,IP:192.168.1.52
# 备库RAC集群(2节点)
节点1:fgedudb03.fgedu.net.cn,IP:172.16.1.51
节点2:fgedudb04.fgedu.net.cn,IP:172.16.1.52
# 存储配置
主库:SAN存储,磁盘组:dgfgsystem、dgfgdata01、dgfgdata02、dgfgarchive
备库:SAN存储,磁盘组:dgfgsystem、dgfgdata01、dgfgdata02、dgfgarchive
# 内存要求
每个节点:至少32GB内存(生产环境建议64GB以上)
# 存储要求
系统盘:100GB
Oracle软件:100GB
数据盘:根据业务需求,建议1TB以上
归档日志:建议500GB以上
备份空间:建议数据量的2-3倍
2. 操作系统准备
在所有节点上进行操作系统准备,包括内核参数配置、依赖包安装等。学习交流加群风哥微信: itpux-com
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
# 安装依赖包
# yum install -y oracle-database-preinstall-12c
# 配置内核参数
# vi /etc/sysctl.conf
# 添加以下内容
fs.file-max = 6815744
kernel.shmmax = 34359738368
kernel.shmall = 8388608
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
vm.swappiness = 10
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
# 使内核参数生效
# sysctl -p
# 配置用户资源限制
# vi /etc/security/limits.conf
# 添加以下内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock 3145728
oracle hard memlock 3145728
# 禁用透明大内存页
# vi /etc/default/grub
GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap transparent_hugepage=never numa=off”
# 重新生成grub配置
# grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启系统
# reboot
3. 主库RAC集群安装
在主库节点上安装Oracle 12cR2 RAC集群,包括Grid Infrastructure和数据库软件。学习交流加群风哥QQ113257174
3.1 Grid Infrastructure安装
# mkdir -p /oracle/app/grid
# mkdir -p /oracle/app/oraInventory
# chown -R grid:oinstall /oracle/app/grid
# chown -R grid:oinstall /oracle/app/oraInventory
# chmod -R 775 /oracle
# 配置grid用户环境变量
$ vi ~/.bash_profile
export ORACLE_BASE=/oracle/app/grid
export ORACLE_HOME=/oracle/app/12.2.0/grid
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export TMP=/tmp
export TMPDIR=/tmp
export DISPLAY=:0.0
# 解压Grid安装包
$ unzip -q linuxx64_12201_grid_home.zip -d /oracle/app/12.2.0/grid
# 执行图形化安装
$ cd /oracle/app/12.2.0/grid
$ ./gridSetup.sh
# 安装过程中的关键步骤:
# 1. 选择”Install and Configure Oracle Grid Infrastructure for a Cluster”
# 2. 选择”Configure a Standard Cluster”
# 3. 输入集群名称:fgedudb-cluster
# 4. 输入SCAN名称:fgedudb-scan.fgedu.net.cn,SCAN IP:192.168.1.50
# 5. 添加节点信息:fgedudb01、fgedudb02
# 6. 选择网络接口:public、private
# 7. 存储选项:选择”Use Oracle ASM”
# 8. 创建磁盘组:dgfgsystem(用于OCR和投票盘)
# 9. 设置ASM密码
# 10. 完成安装并运行root脚本
3.2 数据库软件安装
$ vi ~/.bash_profile
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/12.2.0/db_1
export ORACLE_SID=fgedudb1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export TMP=/tmp
export TMPDIR=/tmp
export DISPLAY=:0.0
# 解压数据库安装包
$ unzip -q linuxx64_12201_database.zip -d /oracle/app/oracle/product/12.2.0/
# 执行图形化安装
$ cd /oracle/app/oracle/product/12.2.0/database
$ ./runInstaller
# 安装过程中的关键步骤:
# 1. 选择”Install database software only”
# 2. 选择”Oracle Real Application Clusters database installation”
# 3. 添加节点:fgedudb01、fgedudb02
# 4. 选择企业版
# 5. 完成安装并运行root脚本
3.3 创建数据库
$ dbca
# 创建过程中的关键步骤:
# 1. 选择”Create a database”
# 2. 选择”Advanced configuration”
# 3. 选择”Oracle Real Application Clusters database”
# 4. 输入全局数据库名:fgedudb.fgedu.net.cn
# 5. 输入SID前缀:fgedudb
# 6. 选择存储类型:ASM
# 7. 选择磁盘组:dgfgdata01
# 8. 配置快速恢复区:dgfgarchive
# 9. 启用归档模式
# 10. 配置数据库字符集:AL32UTF8
# 11. 完成数据库创建
4. 备库RAC集群安装
在备库节点上安装Oracle 12cR2 RAC集群,步骤与主库类似。更多学习教程公众号风哥教程itpux_com
# 安装数据库软件(步骤同主库)
# 注意:备库不需要创建数据库,将通过DataGuard复制主库
5. DataGuard配置
配置主备库之间的DataGuard关系,包括网络配置、参数设置和日志传输。
5.1 主库配置
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
# 启用强制日志
SQL> ALTER DATABASE FORCE LOGGING;
# 设置主库参数
SQL> ALTER SYSTEM SET log_archive_config=’DG_CONFIG=(fgedudb,fgedudb_stby)’ scope=both;
SQL> ALTER SYSTEM SET log_archive_dest_1=’LOCATION=+dgfgarchive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=fgedudb’ scope=both;
SQL> ALTER SYSTEM SET log_archive_dest_2=’SERVICE=fgedudb_stby ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=fgedudb_stby’ scope=both;
SQL> ALTER SYSTEM SET log_archive_dest_state_1=ENABLE scope=both;
SQL> ALTER SYSTEM SET log_archive_dest_state_2=ENABLE scope=both;
SQL> ALTER SYSTEM SET fal_client=’fgedudb’ scope=both;
SQL> ALTER SYSTEM SET fal_server=’fgedudb_stby’ scope=both;
SQL> ALTER SYSTEM SET standby_file_management=AUTO scope=both;
# 创建备库密码文件
$ orapwd file=$ORACLE_HOME/dbs/orapwfgedudb password=Oracle123 force=y
# 复制密码文件到备库所有节点
$ scp $ORACLE_HOME/dbs/orapwfgedudb oracle@fgedudb03:/oracle/app/oracle/product/12.2.0/db_1/dbs/
$ scp $ORACLE_HOME/dbs/orapwfgedudb oracle@fgedudb04:/oracle/app/oracle/product/12.2.0/db_1/dbs/
# 配置监听
# 在主库所有节点上配置tnsnames.ora
$ vi $ORACLE_HOME/network/admin/tnsnames.ora
FGEDUDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb-scan.fgedu.net.cn)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgedudb.fgedu.net.cn)
)
)
FGEDUDB_STBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb-stby-scan.fgedu.net.cn)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgedudb_stby.fgedu.net.cn)
)
)
5.2 备库配置
$ vi $ORACLE_HOME/dbs/initfgedudb1.ora
DB_NAME=fgedudb
DB_UNIQUE_NAME=fgedudb_stby
CONTROL_FILES=’+dgfgsystem/fgedudb_stby/controlfile/current.256.1000000000′
LOG_ARCHIVE_CONFIG=’DG_CONFIG=(fgedudb,fgedudb_stby)’
LOG_ARCHIVE_DEST_1=’LOCATION=+dgfgarchive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=fgedudb_stby’
LOG_ARCHIVE_DEST_2=’SERVICE=fgedudb ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=fgedudb’
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
FAL_CLIENT=’fgedudb_stby’
FAL_SERVER=’fgedudb’
STANDBY_FILE_MANAGEMENT=AUTO
# 配置监听
# 在备库所有节点上配置tnsnames.ora(同主库)
# 启动备库到nomount状态
SQL> STARTUP NOMOUNT pfile=’$ORACLE_HOME/dbs/initfgedudb1.ora’;
# 使用RMAN从主库复制数据
$ rman target sys/Oracle123@fgedudb auxiliary sys/Oracle123@fgedudb_stby
RMAN> duplicate target database for standby from active database nofilenamecheck;
# 启动备库到mount状态
SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
# 启动日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
6. 状态验证
验证DataGuard配置是否正确,包括主备库状态、日志传输和应用情况。from:www.itpux.com
6.1 主库状态验证
SQL> SELECT database_role, open_mode FROM v$database;
DATABASE_ROLE OPEN_MODE
—————- ——————–
PRIMARY READ WRITE
# 检查归档日志状态
SQL> SELECT status, error FROM v$archive_dest WHERE dest_id=2;
STATUS ERROR
——— ——————–
VALID
# 检查日志传输状态
SQL> SELECT sequence#, first_time, next_time, applied FROM v$archived_log ORDER BY sequence# DESC;
SEQUENCE# FIRST_TIME NEXT_TIME APPLIED
——— ——————- ——————- ———
100 2026-04-02 10:00:00 2026-04-02 10:05:00 YES
99 2026-04-02 09:55:00 2026-04-02 10:00:00 YES
98 2026-04-02 09:50:00 2026-04-02 09:55:00 YES
6.2 备库状态验证
SQL> SELECT database_role, open_mode FROM v$database;
DATABASE_ROLE OPEN_MODE
—————- ——————–
PHYSICAL STANDBY MOUNTED
# 检查日志应用状态
SQL> SELECT process, status, sequence# FROM v$managed_standby;
PROCESS STATUS SEQUENCE#
——— ———— ———-
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CONNECTED 0
MRP0 APPLYING_LOG 100
RFS IDLE 0
RFS IDLE 0
RFS IDLE 100
RFS IDLE 0
# 检查备库归档日志
SQL> SELECT sequence#, first_time, next_time, applied FROM v$archived_log ORDER BY sequence# DESC;
SEQUENCE# FIRST_TIME NEXT_TIME APPLIED
——— ——————- ——————- ———
100 2026-04-02 10:00:00 2026-04-02 10:05:00 YES
99 2026-04-02 09:55:00 2026-04-02 10:00:00 YES
98 2026-04-02 09:50:00 2026-04-02 09:55:00 YES
7. 故障切换测试
进行故障切换测试,确保在主库故障时备库能够成功接管。
SQL> SHUTDOWN ABORT;
# 在备库执行故障切换
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
SQL> ALTER DATABASE OPEN;
# 验证新主库状态
SQL> SELECT database_role, open_mode FROM v$database;
DATABASE_ROLE OPEN_MODE
—————- ——————–
PRIMARY READ WRITE
# 原主库恢复为备库
# 启动原主库到mount状态
SQL> STARTUP MOUNT;
# 转换为备库
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
# 启动日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
8. 生产环境建议
以下是Oracle 12cR2 RAC DataGuard集群在生产环境中的建议配置。
– 使用专用的网络进行主备库之间的日志传输
– 确保网络带宽至少为10Gbps
– 配置网络冗余,避免单点故障
– 主备库使用相同配置的存储设备
– 配置足够的空间用于归档日志和备份
– 定期检查存储性能和空间使用情况
– 配置Oracle Enterprise Manager监控DataGuard状态
– 设置日志传输和应用的告警机制
– 定期检查备库的同步状态
– 在主库和备库都配置RMAN备份
– 定期进行全库备份和增量备份
– 测试备份的可恢复性
– 定期应用Oracle补丁
– 监控数据库性能,及时调整参数
– 定期进行健康检查
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
