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

打印 上一主题 下一主题

主题 1580|帖子 1580|积分 4740

前言:在当今数字化期间,数据已成为企业最名贵的资产之一。而数据库作为数据存储和管理的核心工具,其重要性不问可知。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 数据库的运行需求:
  1. fs.aio-max-nr = 1048576
  2. fs.file-max = 6815744
  3. kernel.shmmax = 17179869184  # 一般为系统内存的50%
  4. kernel.shmall = 8388608        # 按照系统内存计算
  5. kernel.shmmni = 4096
  6. kernel.sem = 250 32000 100 128
  7. net.ipv4.ip_local_port_range = 9000 65500
  8. net.core.rmem_default = 262144
  9. net.core.rmem_max = 4194304
  10. net.core.wmem_default = 262144
  11. net.core.wmem_max = 1048576
复制代码
根据服务器的系统内存大小,调解 kernel.shmmax 和 kernel.shmall 的值。例如,对于 16GB 内存的服务器,kernel.shmmax 应设置为 8589934592,kernel.shmall 设置为 4194304。
保存文件后,执行 sysctl -p 命令使配置的参数立刻生效。
1.1.2 创建管理用户和组
在 Linux 系统中,创建专门的用户和组来管理 Oracle 数据库,以确保权限的安全性和规范性。执行以下命令:
  1. groupadd dba
  2. groupadd oinstall
  3. useradd oracle -g oinstall -G dba
  4. passwd oracle
复制代码
这将创建 dba 和 oinstall 两个组,以及 oracle 用户,并将 oracle 用户添加到 oinstall 组和 dba 组中。最后,为 oracle 用户设置登录密码。
1.1.3 创建数据目次
为 Oracle 数据库软件和实例创建安装目次,并设置正确的权限:
  1. mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
  2. chown -R oracle:oinstall /u01
  3. chmod -R 775 /u01
复制代码
这将在 /u01 目次下创建 Oracle 软件安装目次和实例数据目次,并将目次的所有者和所属组设置为 oracle 和 oinstall,同时赋予得当的权限。
1.1.4 修改用户资源限定
编辑 /etc/security/limits.conf 文件,在文件末端添加以下内容,以限定 Oracle 用户的资源使用:
  1. oracle  soft  nproc  2047
  2. oracle  hard  nproc  16384
  3. oracle  soft  nofile  1024
  4. oracle  hard  nofile  65536
复制代码
此外,还需要检查 /etc/security/limits.d/ 目次下是否有其他限定资源的配置文件,假如有,也需要进行相应的修改。
编辑 /etc/pam.d/login 文件,在文件末端添加以下内容:
  1. session required /lib64/security/pam_limits.so
  2. session required pam_limits.so
复制代码
编辑 /etc/profile 文件,在文件末端添加以下内容:
  1. if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
  2.     if [ $SHELL = "/bin/ksh" ]; then
  3.         ulimit -p 16384
  4.         ulimit -n 65536
  5.     else
  6.         ulimit -u 16384 -n 65536
  7.     fi
  8.     umask 022
  9. fi
复制代码
执行 source /etc/profile 命令使配置生效。
1.1.5 修改 Oracle 用户环境变量
编辑 /home/oracle/.bash_profile 文件,在文件末端添加以下内容,设置 Oracle 用户的环境变量:
  1. export TMP=/tmp
  2. export TMPDIR=$TMP
  3. export ORACLE_BASE=/u01/app/oracle
  4. export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
  5. export ORACLE_SID=orcl
  6. export PATH=$ORACLE_HOME/bin:$PATH
  7. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  8. export LANG="en_US.UTF-8"
  9. export NLS_LANG=american_AMERICA.AL32UTF8
  10. export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
  11. export CV_ASSUME_DISTID=OEL7
复制代码
执行 source /home/oracle/.bash_profile 命令使环境变量配置生效。
1.1.6 安装 Oracle 依赖
使用 yum 包管理器安装 Oracle 数据库所需的依赖包:
  1. 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
  2. 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 安装目次:
  1. su - oracle
  2. 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 文件中,根据实际环境修改以下关键参数:
  1. oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
  2. oracle.install.option=INSTALL_DB_SWONLY
  3. UNIX_GROUP_NAME=oinstall
  4. INVENTORY_LOCATION=/u01/app/oracle/oraInventory
  5. ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
  6. ORACLE_BASE=/u01/app/oracle
  7. oracle.install.db.InstallEdition=EE
  8. oracle.install.db.OSDBA_GROUP=dba
  9. oracle.install.db.OSOPER_GROUP=dba
  10. oracle.install.db.OSBACKUPDBA_GROUP=dba
  11. oracle.install.db.OSDGDBA_GROUP=dba
  12. oracle.install.db.OSKMDBA_GROUP=dba
  13. oracle.install.db.OSRACDBA_GROUP=dba
  14. oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
  15. oracle.install.db.config.starterdb.globalDBName=orcl
  16. oracle.install.db.config.starterdb.SID=orcl
  17. oracle.install.db.config.starterdb.characterSet=AL32UTF8
  18. oracle.install.db.config.starterdb.memoryOption=true
  19. oracle.install.db.config.starterdb.memoryLimit=2048
  20. oracle.install.db.config.starterdb.installExampleSchemas=false
  21. oracle.install.db.config.starterdb.password.ALL=oracle
复制代码
在 dbca.rsp 文件中,修改以下参数以配置数据库实例:
  1. responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
  2. gdbName=orcl
  3. sid=orcl
  4. databaseConfigType=SI
  5. templateName=General_Purpose.dbc
  6. sysPassword=oracle
  7. systemPassword=oracle
  8. oracleHomeUserPassword=oracle
  9. dbsnmpPassword=oracle
  10. datafileDestination=/u01/app/oracle/oradata
  11. recoveryAreaDestination=/u01/app/oracle/flash_recovery_area
复制代码
netca.rsp 文件在本次安装中不做修改。
1.2.3 静默安装 Oracle 软件
在 Oracle 安装目次下执行以下命令,开始静默安装 Oracle 19c 软件:
  1. cd /u01/app/oracle/product/19.0.0/dbhome_1
  2. ./runInstaller -silent -responseFile /home/oracle/etc/db_install.rsp
复制代码
安装过程中大概会出现一些告诫信息,如 INS-13014,提示目的环境不满足某些可选要求。此时,可以根据日记文件中的提示进行手动调解,大概在安装完成后根据实际环境进行优化。
安装完成后,根据提示以 root 用户身份执行以下两个脚本,完成安装的最后步骤:
  1. su - root
  2. sh /u01/app/oraInventory/orainstRoot.sh
  3. sh /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
复制代码
1.2.4 配置监听
使用 netca 命令以静默模式配置 Oracle 监听器:
  1. netca -silent -responsefile /home/oracle/etc/netca.rsp
复制代码
配置完成后,可以通过 lsnrctl status 命令查看监听器的状态,确保监听器已乐成启动并正常运行。
1.2.5 静默创建数据库
使用 dbca 命令以静默模式创建 Oracle 数据库实例:
  1. 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 登录到数据库,执行以下命令查看数据库的状态:
  1. select status from v$instance;
复制代码
假如返回结果为 OPEN,则表示数据库已乐成打开并正常运行。
1.3 常见问题及解决方法

在 Oracle 19c 的安装过程中,大概会碰到一些常见问题,以下是两个典范的例子及其解决方法:
1.3.1 共享库文件缺失问题
在执行安装命令时,大概会碰到如下错误:
  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 共享库文件所致。可以通过以下命令安装缺失的库文件来解决问题:
  1. yum install libnsl -y
复制代码
1.3.2 操纵系统标识问题
在安装过程中,大概会出现 INS-08101 错误,提示操纵系统标识不匹配。此时,可以通过设置环境变量 CV_ASSUME_DISTID 来指定操纵系统标识为 OEL7,以解决此问题:
  1. echo "export CV_ASSUME_DISTID=OEL7" >> /home/oracle/.bash_profile
  2. 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 配置提供基础数据:
  1. rman target /
  2. backup database;
  3. list backupset;
复制代码
2.2.2 打开数据库 Forced Logging 模式
执行以下 SQL 命令,打开数据库的 Forced Logging 模式,确保所有数据修改操纵都生成日记,避免备库数据出现不同等:
  1. alter database force logging;
复制代码
2.2.3 设置数据库为归档模式
将数据库设置为归档模式,以保存所有的重做日记文件,供备库进行数据同步:
  1. archive log list;
  2. shutdown immediate;
  3. startup mount;
  4. alter database archivelog;
  5. archive log list;
复制代码
2.2.4 创建密码文件
使用 orapwd 命令创建密码文件,以便在数据库未启动时也能进行身份验证:
  1. orapwd file=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/spfile$ORACLE_SID.ora password='orcl@12345' entries=10
复制代码
2.2.5 添加联机日记文件
为主库添加联机日记文件,以进步数据同步的服从和可靠性:
  1. alter database add standby logfile group 4('/u01/app/oracle/oradata/orcl/redo04.log') size 200m;
  2. alter database add standby logfile group 5('/u01/app/oracle/oradata/orcl/redo05.log') size 200m;
  3. alter database add standby logfile group 6('/u01/app/oracle/oradata/orcl/redo06.log') size 200m;
  4. alter database add standby logfile group 7('/u01/app/oracle/oradata/orcl/redo07.log') size 200m;
复制代码
2.2.6 修改主库参数文件
使用以下命令将服务器参数文件(spfile)转换为文本参数文件(pfile),以便进行修改:
  1. create pfile from spfile;
复制代码
在生成的 init$ORACLE_SID.ora 文件中,修改以下参数以配置 DG 模式:
  1. *.db_unique_name='pr123'
  2. *.log_archive_config='dg_config=(pr123,st124)'
  3. *.log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/archive valid_for=(all_logfiles,all_roles) db_unique_name=pr123'
  4. *.log_archive_dest_2='service=st124 reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=st124'
  5. *.log_archive_dest_state_1='ENABLE'
  6. *.log_archive_dest_state_2='ENABLE'
  7. *.standby_file_management='auto'
  8. *.fal_server='pr123'
  9. *.fal_client='st124'
  10. *.log_file_name_convert='st124','pr123'
复制代码
修改完成后,使用以下命令重新创建 spfile 并重启数据库:
  1. alter database nomount;
  2. create spfile from pfile;
  3. alter database open;
复制代码
2.3 备库配置

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

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

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表