Oracle 19c 数据库实战:从单机部署到 DG 高可用架构搭建

news/2025/3/10 14:57:28/文章来源:https://www.cnblogs.com/zhoutuo/p/18762712

前言:在当今数字化时代,数据已成为企业最宝贵的资产之一。而数据库作为数据存储和管理的核心工具,其重要性不言而喻。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.shmmaxkernel.shmall 的值。例如,对于 16GB 内存的服务器,kernel.shmmax 应设置为 8589934592kernel.shmall 设置为 4194304

保存文件后,执行 sysctl -p 命令使配置的参数立即生效。

1.1.2 创建管理用户和组

在 Linux 系统中,创建专门的用户和组来管理 Oracle 数据库,以确保权限的安全性和规范性。执行以下命令:

groupadd dba
groupadd oinstall
useradd oracle -g oinstall -G dba
passwd oracle

这将创建 dbaoinstall 两个组,以及 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 软件安装目录和实例数据目录,并将目录的所有者和所属组设置为 oracleoinstall,同时赋予适当的权限。

1.1.4 修改用户资源限制

编辑 /etc/security/limits.conf 文件,在文件末尾添加以下内容,以限制 Oracle 用户的资源使用:

oracle  soft  nproc  2047
oracle  hard  nproc  16384
oracle  soft  nofile  1024
oracle  hard  nofile  65536

此外,还需要检查 /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" ]; thenif [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fiumask 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++-devel  libnsl
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 创建恢复目录

在备库服务器上,创建与主库结构相同的目录,包括 adminfast_recovery_areaoradata 等目录,以便后续的数据恢复操作。

2.3.2 修改监听和网络配置

将主库的 listener.oratnsnames.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 模式环境,为企业的关键业务数据提供可靠的保障。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896825.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

002TypeScript开发实战

如果读取不到,情况下: 1、建好项目后我们在这里写一个ts语法,让项目跑起来npm run dev 2、在src中新建文件demo.vue

拯救你的排版噩梦,搞定Deepseek到WPS的完美转换!

我们在使用DeepSeek时,好不容易生成的文案复制到WPS之后,排版却全部乱掉了。别急,今天教你一招,让排版从此不再乱!第一步:下载LibreOffice。打开这个网址:http://www.libreoffice.org 点击顶部的“Download”,选择第一个菜单,然后点击黄色按钮开始下载。如果觉得浏览…

Deepseek学习随笔(16)--- 腾讯研究院发布:AI图景解码50个年度关键词(附网盘链接)

随着人工智能技术的迅猛发展,AI正在深刻改变我们的生活和工作方式。腾讯研究院发布的《AI图景解码50个年度关键词》报告,通过梳理50个关键词,全面展现了AI领域的最新进展、技术趋势和未来方向。这份报告不仅为AI从业者提供了宝贵的参考,也为普通读者打开了了解AI的窗口。本…

不再头痛!算法备案自评估报告要点分析

算法备案材料包含众多报告,其中最难的莫过于《算法安全自评估报告》。本人经手过几十份该材料,今天就结合个人经验总结下自评估报告的要点及一些容易踩的坑,希望可以帮助大家。有其它问题也可以参考这篇文章了解。 一、自评估报告常见问题 1、前后矛盾 报告内部的算法、风控…

C语言中标准输出的缓冲机制

什么是缓冲区 缓存区是内存空间的一部分,再内存中,内存空间会预留一定的存储空间,这些存储空间是用来缓冲输入和输出的数据,预留的这部分空间就叫做缓冲区。 其中缓冲区还会根据对应的是输入设备还是输出设备分为输入缓冲区和输出缓冲区。 为什么需要缓冲? 直接操作硬件(…

k8s回调函数-cnblog

回调函数 Kubernetes 为容器提供了生命周期回调。 回调使容器能够了解其管理生命周期中的事件,并在执行相应的生命周期回调时运行在处理程序中实现的代码。Kubernetes 支持 PostStart 和 PreStop 事件。 当一个容器启动后,Kubernetes 将立即发送 PostStart 事件;在容器被终结…

Transfomer 中的强制教学(Teacher Forcing)

在预测阶段, 我们希望输入 "天雷滚滚我好怕怕" 和 "[cls]" 能预测出下一个token: 劈 于是我们在训练阶段,我们的输入是 "天雷滚滚我好怕怕" 和 “[cls]劈得我浑身掉渣渣”, 由于我们希望"[cls]" 能预测出 “劈” 字。 我们在损失函…

jenkins安装后可用插件版本需要高版本的jenkins才能使用

首先我们直接用清华镜像源https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/,比如我们要找Jenkins2.429对应版本 emmmm,没有429,427凑合用吧 获取这个地址,放到updatesite 进服务器,找到default.json,替换掉它,然后重启jenkins。 cp default.json default.json.ba…

​党政机关数字化转型必备:10款信创认证项目管理工具深度测评

党政机关数字化转型是适应时代发展、提升治理效能的关键举措。在这一过程中,信创认证项目管理工具发挥着至关重要的作用。它们不仅能助力项目高效推进,还能保障信息安全与合规性。以下将对10款信创认证项目管理工具进行深度测评,为党政机关在数字化转型道路上的工具选择提供…

材料焊接工艺大全-芯晨微纳(河南) -专注于激光代加工

一、材料焊接中的“焊接力” 材料焊接,准确说应该为“材料互联”,是通过物理力、化学力、机械作用力等方式将原本相互隔离的材料连为一体的过程。 物理力中的四种基本力是万有引力、电磁力、强相互作用力和弱相互作用力。具体的,按性质(根据它们的物理性质来命名和分类)分…

Zabbix 7.2 + Grafana 中文全自动安装ISO镜像

简介 ​基于Zabbix 官方的Alma Linux 8 作为基础镜像。镜像源都改为国内大学镜像站,自动联网安装Zabbix+Grafana。安装中文字体、Zabbix和Grafana也配置默认中文。Zabbix 也指定中文字体,绘图无乱码。配置时区为东八区,Zabbix配置Web时区也为东八区。Grafana自动安装zabbix源…

第十八章 项目绩效域(2025年详细解析版)

目录导学太极八卦与项目管理体系项目管理整体框架图绩效域原则和绩效域的关系18.1 干系人绩效域干系人绩效域概述定义预期目标绩效要点 :促进干系人参与目的作用促进干系人参与要做的六项活动与其他绩效域的相互作用(了解)关联为什么要促进干系人参与?为什么干系人重要?执…