1. 首页 > 软件安装教程 > 正文

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软件

# 1. 创建Oracle用户和组
# 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。

— 以SYSDBA身份登录主库
$ 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;

风哥提示:主库的参数配置是DataGuard成功的关键,需要确保所有参数正确设置。

3.3 创建密码文件

# 在主库创建密码文件
$ orapwd file=/oracle/app/oracle/product/19c/db_1/dbs/orapwfgedudb password=Oracle123 entries=10

3.4 配置监听器

# 编辑listener.ora文件(位于$ORACLE_HOME/network/admin)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = fgedudb01)(PORT = 1521))
)
)

# 启动监听器
$ lsnrctl start

# 检查监听器状态
$ lsnrctl status

4. 备库Oracle19c安装配置

在备库服务器上安装Oracle19c数据库软件,但暂不创建数据库。

4.1 安装Oracle19c软件

# 1. 创建Oracle用户和组
# 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.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 主库生成备库初始化参数文件

— 以SYSDBA身份登录主库
$ sqlplus / as sysdba

— 生成备库初始化参数文件
SQL> CREATE PFILE=’/tmp/initfgedudb_stby.ora’ FROM SPFILE;

5.2 修改备库初始化参数文件

# 编辑/tmp/initfgedudb_stby.ora文件,修改以下参数
*.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 主库执行备份

— 以SYSDBA身份登录主库
$ 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状态

— 以SYSDBA身份登录备库
$ 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 配置备库自动应用日志

— 以SYSDBA身份登录备库
$ sqlplus / as sysdba

— 启动MRP进程
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

6. DataGuard状态验证

现在验证DataGuard配置是否成功,检查主备库状态。学习交流加群风哥微信: itpux-com

6.1 主库状态检查

— 以SYSDBA身份登录主库
$ 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 备库状态检查

— 以SYSDBA身份登录备库
$ 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

生产环境建议:定期检查DataGuard同步状态,确保备库与主库保持一致。可以通过脚本监控MRP进程状态和日志应用情况。

7. 故障切换测试

进行故障切换测试,验证DataGuard在主库故障时的可用性。

7.1 主库故障模拟

— 以SYSDBA身份登录主库
$ sqlplus / as sysdba

— 模拟主库故障(强制关闭)
SQL> SHUTDOWN ABORT;

7.2 备库切换为主库

— 以SYSDBA身份登录备库
$ 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 原主库转换为备库

— 重新启动原主库到mount状态
$ 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补丁,确保安全性和稳定性
风哥提示:DataGuard配置完成后,需要定期进行维护和监控,确保在主库故障时能够快速切换到备库,保证业务连续性。

学习交流加群风哥QQ113257174

更多学习教程公众号风哥教程itpux_com

from:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息