渣渣兔 发表于 2025-4-10 01:21:35

Oracle19c 数据库实战:从单机摆设到 DG 高可用架构搭建

前言:在当今数字化期间,数据已成为企业最名贵的资产之一。而数据库作为数据存储和管理的核心工具,其重要性不问可知。Oracle 数据库作为环球领先的贸易数据库管理系统,以其卓越的性能、可靠性和强大的功能,广泛应用于企业的关键业务系统中。无论是大型企业的 ERP、CRM 系统,还是金融、电信等行业的核心业务数据库,Oracle 都以其出色的性能和稳固性赢得了用户的信赖。
Oracle 19c 是 Oracle 公司推出的一个重要版本,它在性能优化、安全性增强以及多租户管理等方面进行了大量改进和创新。Oracle 19c 不但支持最新的硬件和操纵系统,还引入了很多新特性,如增强的分区表功能、更高效的内存管理以及更智能的查询优化器等。这些改进使得 Oracle 19c 可以或许更好地满足当代企业对数据库性能和扩展性的需求。
在企业级应用中,数据库的高可用性和数据安全性是至关重要的。Oracle 提供了多种高可用性解决方案,此中 Data Guard(DG)是最为常用和强大的一种。Oracle Data Guard 通过在主库和备库之间实时同步数据,确保在发生故障时可以或许快速切换到备库,从而实现业务的连续性。DG 不但可以防止数据丢失,还能在主库发生故障时提供快速的规复本领,极大地进步了系统的可用性和可靠性。
本文将详细介绍 Oracle 19c 数据库的单机摆设以及 DG 高可用架构的搭建过程。通过详细的步骤和实际操纵,读者可以快速掌握怎样在生产环境中摆设和配置 Oracle 数据库,并实现高可用性架构。无论是数据库管理员、系统工程师还是开辟人员,本文都将为您提供实用的参考和指导。
在接下来的内容中,我们将从环境预备、单机摆设、DG 配置到常见问题解决等多个方面进行详细讲授。通过本文的介绍,您将可以或许快速掌握 Oracle 19c 数据库的摆设和管理技能,为您的企业应用提供强大的数据支持。
让我们开始这段 Oracle 19c 数据库实战之旅吧!
一、Oracle 19c 单机摆设

1.1 环境预备

在开始安装 Oracle 19c 之前,需要对服务器环境进行一系列的配置和预备,以确保安装过程顺利进行。
1.1.1 修改内核参数
编辑 /etc/sysctl.conf 文件,添加以下内容以调解系统内核参数,适应 Oracle 数据库的运行需求:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 17179869184# 一般为系统内存的50%
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
根据服务器的系统内存大小,调解 kernel.shmmax 和 kernel.shmall 的值。例如,对于 16GB 内存的服务器,kernel.shmmax 应设置为 8589934592,kernel.shmall 设置为 4194304。
保存文件后,执行 sysctl -p 命令使配置的参数立刻生效。
1.1.2 创建管理用户和组
在 Linux 系统中,创建专门的用户和组来管理 Oracle 数据库,以确保权限的安全性和规范性。执行以下命令:
groupadd dba
groupadd oinstall
useradd oracle -g oinstall -G dba
passwd oracle
这将创建 dba 和 oinstall 两个组,以及 oracle 用户,并将 oracle 用户添加到 oinstall 组和 dba 组中。最后,为 oracle 用户设置登录密码。
1.1.3 创建数据目次
为 Oracle 数据库软件和实例创建安装目次,并设置正确的权限:
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01
这将在 /u01 目次下创建 Oracle 软件安装目次和实例数据目次,并将目次的所有者和所属组设置为 oracle 和 oinstall,同时赋予得当的权限。
1.1.4 修改用户资源限定
编辑 /etc/security/limits.conf 文件,在文件末端添加以下内容,以限定 Oracle 用户的资源使用:
oraclesoftnproc2047
oraclehardnproc16384
oraclesoftnofile1024
oraclehardnofile65536
此外,还需要检查 /etc/security/limits.d/ 目次下是否有其他限定资源的配置文件,假如有,也需要进行相应的修改。
编辑 /etc/pam.d/login 文件,在文件末端添加以下内容:
session required /lib64/security/pam_limits.so
session required pam_limits.so
编辑 /etc/profile 文件,在文件末端添加以下内容:
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
      ulimit -p 16384
      ulimit -n 65536
    else
      ulimit -u 16384 -n 65536
    fi
    umask 022
fi
执行 source /etc/profile 命令使配置生效。
1.1.5 修改 Oracle 用户环境变量
编辑 /home/oracle/.bash_profile 文件,在文件末端添加以下内容,设置 Oracle 用户的环境变量:
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG="en_US.UTF-8"
export NLS_LANG=american_AMERICA.AL32UTF8
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
export CV_ASSUME_DISTID=OEL7
执行 source /home/oracle/.bash_profile 命令使环境变量配置生效。
1.1.6 安装 Oracle 依赖
使用 yum 包管理器安装 Oracle 数据库所需的依赖包:
yum install -y bc binutils-* compat-libcap1-* compat-libstdc++-* e2fsprogs-1.41.12-* e2fsprogs-libs-* glibc-* glibc-devel-* ksh libaio-* libaio-devel-* libX11-* libXau-* libXi-* libXtst-* libgcc-* libstdc++-* libstdc++-devel-* libxcb-* libXrender libXrender-devel make-* net-tools-* nfs-utils-* smartmontools-* sysstat-* gcc-c++*ksh libaio-devel libstdc++-devellibnsl
yum -y install compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc-devel ksh libaio-devel libaio-devel sysstat elfutils-libelf-devel fontconfig-devel libxcb smartmontools libX11 libXau libXtst libXrender libXrender-devel
1.2 数据库安装

1.2.1 上传并解压安装包
将 Oracle 19c 的安装包 LINUX.X64_193000_db_home.zip 上传到 /home/oracle 目次下。使用 unzip 命令解压安装包到指定的 Oracle 安装目次:
su - oracle
unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1
1.2.2 编辑配置文件
编辑以下三个配置文件,分别用于 Oracle 软件安装、数据库配置和网络配置:


[*]db_install.rsp:位于 /u01/app/oracle/product/19.0.0/dbhome_1/install/response/ 目次下,复制到 /home/oracle/etc 目次进行编辑。
[*]dbca.rsp:位于 /u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/ 目次下,复制到 /home/oracle/etc 目次进行编辑。
[*]netca.rsp:位于 /u01/app/oracle/product/19.0.0/dbhome_1/assistants/netca/ 目次下,复制到 /home/oracle/etc 目次进行编辑。
在 db_install.rsp 文件中,根据实际环境修改以下关键参数:
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oracle/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=2048
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.password.ALL=oracle
在 dbca.rsp 文件中,修改以下参数以配置数据库实例:
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=orcl
sid=orcl
databaseConfigType=SI
templateName=General_Purpose.dbc
sysPassword=oracle
systemPassword=oracle
oracleHomeUserPassword=oracle
dbsnmpPassword=oracle
datafileDestination=/u01/app/oracle/oradata
recoveryAreaDestination=/u01/app/oracle/flash_recovery_area
netca.rsp 文件在本次安装中不做修改。
1.2.3 静默安装 Oracle 软件
在 Oracle 安装目次下执行以下命令,开始静默安装 Oracle 19c 软件:
cd /u01/app/oracle/product/19.0.0/dbhome_1
./runInstaller -silent -responseFile /home/oracle/etc/db_install.rsp
安装过程中大概会出现一些告诫信息,如 INS-13014,提示目的环境不满足某些可选要求。此时,可以根据日记文件中的提示进行手动调解,大概在安装完成后根据实际环境进行优化。
安装完成后,根据提示以 root 用户身份执行以下两个脚本,完成安装的最后步骤:
su - root
sh /u01/app/oraInventory/orainstRoot.sh
sh /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
1.2.4 配置监听
使用 netca 命令以静默模式配置 Oracle 监听器:
netca -silent -responsefile /home/oracle/etc/netca.rsp
配置完成后,可以通过 lsnrctl status 命令查看监听器的状态,确保监听器已乐成启动并正常运行。
1.2.5 静默创建数据库
使用 dbca 命令以静默模式创建 Oracle 数据库实例:
dbca -createDatabase -silent -responseFile /home/oracle/etc/dbca.rsp
创建过程中,dbca 会按照配置文件中的参数逐步创建数据库,并在完成后提供详细的日记信息。可以通过查看日记文件 /u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log 来了解创建过程中的详细环境。
1.2.6 验证安装结果
通过 lsnrctl status 命令查看监听器状态,确认数据库服务已正确注册到监听器上。使用 sqlplus / as sysdba 登录到数据库,执行以下命令查看数据库的状态:
select status from v$instance;
假如返回结果为 OPEN,则表示数据库已乐成打开并正常运行。
1.3 常见问题及解决方法

在 Oracle 19c 的安装过程中,大概会碰到一些常见问题,以下是两个典范的例子及其解决方法:
1.3.1 共享库文件缺失问题
在执行安装命令时,大概会碰到如下错误:
/u01/app/oracle/product/19.0.0/dbhome_1/perl/bin/perl: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory
这是由于系统缺少 libnsl.so.1 共享库文件所致。可以通过以下命令安装缺失的库文件来解决问题:
yum install libnsl -y
1.3.2 操纵系统标识问题
在安装过程中,大概会出现 INS-08101 错误,提示操纵系统标识不匹配。此时,可以通过设置环境变量 CV_ASSUME_DISTID 来指定操纵系统标识为 OEL7,以解决此问题:
echo "export CV_ASSUME_DISTID=OEL7" >> /home/oracle/.bash_profile
source /home/oracle/.bash_profile
二、Oracle 19c DG 模式搭建

DG(Data Guard)模式是 Oracle 数据库提供的高可用性解决方案,通过在主库和备库之间同步数据,实现数据的实时备份和高可用性。以下是 DG 模式搭建的详细步骤。
2.1 备库环境预备

在备库服务器上,执行与主库相同的步骤 7.1 至 7.4,确保备库的目次结构和 Oracle 软件版本与主库完全同等。
2.2 主库配置

2.2.1 数据库备份
使用 RMAN(Recovery Manager)对主库进行全库备份,为后续的 DG 配置提供基础数据:
rman target /
backup database;
list backupset;
2.2.2 打开数据库 Forced Logging 模式
执行以下 SQL 命令,打开数据库的 Forced Logging 模式,确保所有数据修改操纵都生成日记,避免备库数据出现不同等:
alter database force logging;
2.2.3 设置数据库为归档模式
将数据库设置为归档模式,以保存所有的重做日记文件,供备库进行数据同步:
archive log list;
shutdown immediate;
startup mount;
alter database archivelog;
archive log list;
2.2.4 创建密码文件
使用 orapwd 命令创建密码文件,以便在数据库未启动时也能进行身份验证:
orapwd file=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/spfile$ORACLE_SID.ora password='orcl@12345' entries=10
2.2.5 添加联机日记文件
为主库添加联机日记文件,以进步数据同步的服从和可靠性:
alter database add standby logfile group 4('/u01/app/oracle/oradata/orcl/redo04.log') size 200m;
alter database add standby logfile group 5('/u01/app/oracle/oradata/orcl/redo05.log') size 200m;
alter database add standby logfile group 6('/u01/app/oracle/oradata/orcl/redo06.log') size 200m;
alter database add standby logfile group 7('/u01/app/oracle/oradata/orcl/redo07.log') size 200m;
2.2.6 修改主库参数文件
使用以下命令将服务器参数文件(spfile)转换为文本参数文件(pfile),以便进行修改:
create pfile from spfile;
在生成的 init$ORACLE_SID.ora 文件中,修改以下参数以配置 DG 模式:
*.db_unique_name='pr123'
*.log_archive_config='dg_config=(pr123,st124)'
*.log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/archive valid_for=(all_logfiles,all_roles) db_unique_name=pr123'
*.log_archive_dest_2='service=st124 reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=st124'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.standby_file_management='auto'
*.fal_server='pr123'
*.fal_client='st124'
*.log_file_name_convert='st124','pr123'
修改完成后,使用以下命令重新创建 spfile 并重启数据库:
alter database nomount;
create spfile from pfile;
alter database open;
2.3 备库配置

2.3.1 创建规复目次
在备库服务器上,创建与主库结构相同的目次,包括 admin、fast_recovery_area 和 oradata 等目次,以便后续的数据规复操纵。
2.3.2 修改监听和网络配置
将主库的 listener.ora 和 tnsnames.ora 文件复制到备库的相应目次中,并根据备库的 IP 地点修改监听文件中的主机信息。确保主库和备库之间的网络连通性,可以通过 tnsping 命令进行测试:
tnsping st124# 在主库上执行
tnsping pr123# 在备库上执行
2.3.3 拷贝参数文件
将主库配置好的 init$ORACLE_SID.ora 参数文件拷贝至备库的 /u01/app/oracle/product/19.0.0/dbhome_1/dbs/ 目次中,并根据备库的实际环境进行修改:
*.db_unique_name='st124'
*.log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/archive valid_for=(all_logfiles,all_roles) db_unique_name=st124'
*.log_archive_dest_2='service=pr123 reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=pr123'
*.fal_server='pr123'
*.fal_client='st124'
2.3.4 创建 SPFILE
在备库上,使用以下命令创建 spfile 并启动数据库到 nomount 状态:
create spfile from pfile='/u01/app/oracle/product/19.0.0/dbhome_1/dbs/init$ORACLE_SID.ora';create pfile from spfile;
alter database nomount; 2.3.5 规复备库
确保主库处于 open 状态,备库处于 nomount 状态。在主库上执行以下 RMAN 命令,通过网络将主库的数据直接复制到备库,创建备库实例:
rman target sys/******@pr123 auxiliary sys/******@st124
duplicate target database for standby from active database nofilenamecheck;
规复完成后,检查主备库中的文件是否同等,并重新创建联机重做日记:
alter database drop logfile group 4;
alter database drop logfile group 5;
alter database drop logfile group 6;
alter database drop logfile group 7;
alter database add standby logfile '/u01/app/oracle/oradata/orcl/redo04.log' SIZE 200m;
alter database add standby logfile '/u01/app/oracle/oradata/orcl/redo05.log' SIZE 200m;
alter database add standby logfile '/u01/app/oracle/oradata/orcl/redo06.log' SIZE 200m;
alter database add standby logfile '/u01/app/oracle/oradata/orcl/redo07.log' SIZE 200m;
2.4 启动数据同步

在备库上,执行以下命令启动数据同步:
alter database recover managed standby database using current logfile disconnect from session;
2.5 验证 DG 模式状态

在主库和备库上,分别执行以下命令查看实例名、日记序号等信息,确保数据同步正常进行,且不存在日记间隙(GAP):
show parameter instance_name;
select max(sequence#) from v$archived_log;
select FIRST_TIME,NEXT_TIME, APPLIED,SEQUENCE# from v$archived_log order by SEQUENCE#;
在主库上执行 Alter system switch logfile; 命令测试切换日记,观察备库的日记应用环境。
通过以上步骤,您就可以乐成搭建一个高可用的 Oracle 19c DG 模式环境,为企业的关键业务数据提供可靠的保障。https://i-blog.csdnimg.cn/img_convert/bcb3a1e8d3a5a8f568047f211c385b52.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Oracle19c 数据库实战:从单机摆设到 DG 高可用架构搭建