Oracle容灾-Oracle19c DataGuard单机安装配置 FOR RHEL/OEL7 Linux详细过程
1. 硬件环境要求
在配置Oracle19c DataGuard之前,必须确保主库和备库的硬件环境满足以下要求。更多学习教程www.fgedu.net.cn
| 硬件组件 | 最低要求 | 生产环境建议 |
|---|---|---|
| CPU | 4核 | 8核以上 |
| 内存 | 16GB | 32GB以上 |
| 磁盘空间 | 500GB | 1TB以上(根据数据量调整) |
| 网络 | 千兆网卡 | 万兆网卡 |
2. 操作系统准备
本文以Red Hat Enterprise Linux 7.9为例,主库和备库均使用相同操作系统版本。
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
# 检查系统内存
# free -h
total used free shared buff/cache available
Mem: 32G 2.1G 28G 300M 1.5G 28G
# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 15G 35G 30% /
/dev/sdb1 1.5T 100G 1.4T 7% /oracle
# 关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
# 关闭SELinux
# setenforce 0
# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
3. 主库Oracle19c安装配置
首先在主库服务器上安装Oracle19c数据库软件并创建数据库。
3.1 安装Oracle19c软件
# groupadd oinstall
# groupadd dba
# groupadd oper
# groupadd backupdba
# groupadd dgdba
# groupadd kmdba
# useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba oracle
# passwd oracle
# 2. 创建安装目录
# mkdir -p /oracle/app/oracle/product/19c/db_1
# mkdir -p /oracle/app/oracle/oradata
# mkdir -p /oracle/app/oracle/archive
# mkdir -p /oracle/app/oraInventory
# chown -R oracle:oinstall /oracle
# 3. 配置环境变量
# su – oracle
$ vi ~/.bash_profile
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/19c/db_1
export ORACLE_SID=fgedudb
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT=”YYYY-MM-DD HH24:MI:SS”
export TMP=/tmp
export TMPDIR=/tmp
$ source ~/.bash_profile
# 4. 安装依赖包
# yum install -y oracle-database-preinstall-19c
# yum install -y smartmontools xclock xauth
# 5. 配置内核参数
# vi /etc/sysctl.conf
fs.file-max = 6815744
kernel.shmmax = 17179869184
kernel.shmall = 4194304
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
# 6. 启动图形安装
# su – oracle
$ cd /media
$ ./runInstaller
# 按照安装向导完成安装
3.2 主库参数配置
安装完成后,需要配置主库的参数以支持DataGuard。
$ sqlplus / as sysdba
— 启用归档模式
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_dest_1=’LOCATION=/oracle/app/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=fgedudb’ SCOPE=SPFILE;
— 设置主库唯一名称
SQL> ALTER SYSTEM SET db_unique_name=’fgedudb’ SCOPE=SPFILE;
— 配置DataGuard相关参数
SQL> ALTER SYSTEM SET log_archive_config=’DG_CONFIG=(fgedudb,fgedudb_stby)’ SCOPE=SPFILE;
SQL> ALTER SYSTEM SET log_archive_dest_2=’SERVICE=fgedudb_stby ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=fgedudb_stby’ SCOPE=SPFILE;
SQL> ALTER SYSTEM SET log_archive_dest_state_2=ENABLE SCOPE=SPFILE;
SQL> ALTER SYSTEM SET remote_login_passwordfile=EXCLUSIVE SCOPE=SPFILE;
SQL> ALTER SYSTEM SET standby_file_management=AUTO SCOPE=SPFILE;
SQL> ALTER SYSTEM SET fal_server=fgedudb_stby SCOPE=SPFILE;
SQL> ALTER SYSTEM SET fal_client=fgedudb SCOPE=SPFILE;
— 重启数据库使参数生效
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
3.3 创建密码文件
$ orapwd file=/oracle/app/oracle/product/19c/db_1/dbs/orapwfgedudb password=Oracle123 entries=10
3.4 配置监听器
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb01)(PORT = 1521))
)
)
# 启动监听器
$ lsnrctl start
# 检查监听器状态
$ lsnrctl status
4. 备库Oracle19c安装配置
在备库服务器上安装Oracle19c数据库软件,但暂不创建数据库。
4.1 安装Oracle19c软件
# groupadd oinstall
# groupadd dba
# groupadd oper
# groupadd backupdba
# groupadd dgdba
# groupadd kmdba
# useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba oracle
# passwd oracle
# 2. 创建安装目录
# mkdir -p /oracle/app/oracle/product/19c/db_1
# mkdir -p /oracle/app/oracle/oradata
# mkdir -p /oracle/app/oracle/archive
# mkdir -p /oracle/app/oraInventory
# chown -R oracle:oinstall /oracle
# 3. 配置环境变量
# su – oracle
$ vi ~/.bash_profile
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/19c/db_1
export ORACLE_SID=fgedudb_stby
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT=”YYYY-MM-DD HH24:MI:SS”
export TMP=/tmp
export TMPDIR=/tmp
$ source ~/.bash_profile
# 4. 安装依赖包
# yum install -y oracle-database-preinstall-19c
# yum install -y smartmontools xclock xauth
# 5. 启动图形安装,选择”仅安装数据库软件”
# su – oracle
$ cd /media
$ ./runInstaller
# 按照安装向导完成安装
4.2 复制密码文件
# scp oracle@fgedudb01:/oracle/app/oracle/product/19c/db_1/dbs/orapwfgedudb /oracle/app/oracle/product/19c/db_1/dbs/orapwfgedudb_stby
4.3 配置监听器和tnsnames.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb02)(PORT = 1521))
)
)
# 编辑tnsnames.ora文件
FGEDUDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb01)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgedudb)
)
)
FGEDUDB_STBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb02)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgedudb_stby)
)
)
# 启动监听器
$ lsnrctl start
5. DataGuard配置
现在开始配置DataGuard,包括备库初始化和主备库同步。
5.1 主库生成备库初始化参数文件
$ sqlplus / as sysdba
— 生成备库初始化参数文件
SQL> CREATE PFILE=’/tmp/initfgedudb_stby.ora’ FROM SPFILE;
5.2 修改备库初始化参数文件
*.db_unique_name=’fgedudb_stby’
*.fal_server=’fgedudb’
*.fal_client=’fgedudb_stby’
*.log_archive_dest_1=’LOCATION=/oracle/app/oracle/archive 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’
# 将修改后的参数文件复制到备库
# scp /tmp/initfgedudb_stby.ora oracle@fgedudb02:/oracle/app/oracle/product/19c/db_1/dbs/
5.3 主库执行备份
$ sqlplus / as sysdba
— 执行全库备份
SQL> ALTER DATABASE BEGIN BACKUP;
— 复制数据文件到备库
# scp -r /oracle/app/oracle/oradata/fgedudb oracle@fgedudb02:/oracle/app/oracle/oradata/
SQL> ALTER DATABASE END BACKUP;
— 生成当前控制文件用于备库
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘/tmp/control01.ctl’;
— 复制控制文件到备库
# scp /tmp/control01.ctl oracle@fgedudb02:/oracle/app/oracle/oradata/fgedudb/
— 复制当前归档日志到备库
# scp -r /oracle/app/oracle/archive/* oracle@fgedudb02:/oracle/app/oracle/archive/
5.4 备库启动到Mount状态
$ sqlplus / as sysdba
— 使用备库初始化参数文件启动到nomount状态
SQL> STARTUP NOMOUNT PFILE=’/oracle/app/oracle/product/19c/db_1/dbs/initfgedudb_stby.ora’;
— 加载备库控制文件
SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
5.5 配置备库自动应用日志
$ sqlplus / as sysdba
— 启动MRP进程
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
6. DataGuard状态验证
现在验证DataGuard配置是否成功,检查主备库状态。学习交流加群风哥微信: itpux-com
6.1 主库状态检查
$ sqlplus / as sysdba
— 检查主库角色
SQL> SELECT database_role FROM v$database;
DATABASE_ROLE
—————-
PRIMARY
— 检查归档日志状态
SQL> SELECT group#, status, archived FROM v$log;
GROUP# STATUS ARCHIVED
———- —————- ——–
1 CURRENT NO
2 INACTIVE YES
3 INACTIVE YES
— 检查归档目标状态
SQL> SELECT dest_id, status, error FROM v$archive_dest_status WHERE dest_id IN (1,2);
DEST_ID STATUS ERROR
———- ——— ——————–
1 VALID
2 VALID
6.2 备库状态检查
$ sqlplus / as sysdba
— 检查备库角色
SQL> SELECT database_role FROM v$database;
DATABASE_ROLE
—————-
PHYSICAL STANDBY
— 检查MRP进程状态
SQL> SELECT process, status FROM v$managed_standby;
PROCESS STATUS
——— ————
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
ARCH CONNECTED
RFS IDLE
RFS IDLE
RFS IDLE
MRP0 APPLYING_LOG
— 检查备库同步状态
SQL> SELECT sequence#, applied FROM v$archived_log ORDER BY sequence# DESC;
SEQUENCE# APPLIED
———- ———
10 YES
9 YES
8 YES
7 YES
6 YES
7. 故障切换测试
进行故障切换测试,验证DataGuard在主库故障时的可用性。
7.1 主库故障模拟
$ sqlplus / as sysdba
— 模拟主库故障(强制关闭)
SQL> SHUTDOWN ABORT;
7.2 备库切换为主库
$ sqlplus / as sysdba
— 停止日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
— 执行故障切换
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
— 打开数据库
SQL> ALTER DATABASE OPEN;
— 验证新主库状态
SQL> SELECT database_role FROM v$database;
DATABASE_ROLE
—————-
PRIMARY
7.3 原主库转换为备库
$ sqlplus / as sysdba
SQL> STARTUP MOUNT;
— 转换为备库
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
— 启动日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
8. 生产环境建议
- 定期备份主库和备库,确保数据安全
- 监控DataGuard同步状态,设置告警机制
- 定期进行故障切换测试,确保DataGuard在紧急情况下能够正常工作
- 配置网络带宽足够的网络连接,确保日志传输顺畅
- 使用Oracle Data Guard Broker管理DataGuard,简化管理操作
- 定期更新Oracle补丁,确保安全性和稳定性
学习交流加群风哥QQ113257174
更多学习教程公众号风哥教程itpux_com
from:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
