乐趣区

关于ipv6:干货速看CentOS7Oracle-19c安装并开启IPv6监听带你一文打尽

写在开篇

近日,工信部印发了对于贯彻落实《推动 IPv6 规模部署行动计划》的告诉,额。。。不好意思,跑题了!其实也没有跑题,本篇就是想要讲跟 IPV6 无关的货色。当初很多最新版的组件都默认反对 IPV6 了,比方 Nginx、PHP、MySQL 等等。那么本篇专门解说一下 Oracle 19C 如何开启对 IPV6 的反对,从装置到配置、到 IPV6 监听的配置,一文打尽。

对于 IPV6 的基础知识,笔者后续会找工夫,专门输入一篇文章分享给大家。

前戏热身

  1. Oracle OUI 静默装置要点概述

    Oracle OUI 静默装置,即 Oracle OUI Silent Installations,之所以能实现静默,是因为底层通过三个 response files 指定了一些必须的配置项的具体设置,管理员能够通过批改这三个 response file,针对本人的状况进行定制配置,从而实现静默装置。这三个 response files,阐明如下:$ORACLE_HOME/install/response/db_install.rsp: 静默式装置或降级 oracle 二进制包时应用;$ORACLE_HOME/assistants/dbca/dbca.rsp: 静默式装置、配置、删除数据库实例时应用;$ORACLE_HOME/assistants/netca/netca.rsp: 静默式配置 oracle 数据库的网络监听时应用;在执行静默装置前,最好备份这三个文件。
  2. 最低硬件配置
  3. 内存至多 8G: grep MemTotal /proc/meminfo
  4. SWAP 分区至多 8G: grep SwapTotal /proc/meminfo
  5. 磁盘空间至多 10g,其中 /tmp 目录下空间至多 2g: df -h
  6. 下载相干安装包
  7. preinstall rpm 包下载链接:https://yum.oracle.com/repo/O…
  8. zip 安装包的下载链接:https://www.oracle.com/databa…
  9. 操作系统的初始化工作
  10. 配置 /etc/hosts 和 /etc/hostname;
  11. 配置 selinux 为 permissive 或 disabled:波及文件 /etc/selinux/config 和命令 setenforce Permissive
  12. 敞开防火墙:systemctl stop/disalbe firewalld

进入主题

  1. 执行装置前主动配置
  2. 下载对应版本的 preinstall rpm 包(该 rpm 包能够用来在正式装置前执行一些必要的配置);

    ># yum localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 
  3. 该步骤主动在操作系统上创立了 oracle 零碎用户:

    ># id oracle
    uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
  4. 筹备对立装置的门路

    ># mkdir /opt/u01
    ># mkdir /opt/u02
    ># ln -s /opt/u01 /
    ># ln -s /opt/u02 /
  5. 创立 oracle 运行时必须的目录并赋权

    ># mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
    ># mkdir -p /u02/oradata
    ># mkdir /u02/flash_recovery_area
    ># chown -R oracle:oinstall /opt/u01 /opt/u02
    ># chmod -R 775 /opt/u01 /opt/u02
  6. 创立配置环境变量的辅助脚本,和数据库启停的辅助脚本,并赋权

    ># su - oracle
    >$ touch /home/oracle/scripts/setEnv.sh
    >$ touch /home/oracle/scripts/start_all.sh
    >$ touch /home/oracle/scripts/stop_all.sh
    >$ chown -R oracle:oinstall /home/oracle/scripts
    >$ chmod u+x /home/oracle/scripts/*.sh
  7. setEnv.sh 脚本具体内容如下:

    cat > /home/oracle/scripts/setEnv.sh <<EOF
    # Oracle Settings
    export TMP=/tmp
    export TMPDIR=$TMP
    export ORACLE_HOSTNAME=oracle19csvr
    export ORACLE_UNQNAME=cdb1
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
    export ORA_INVENTORY=/u01/app/oraInventory
    export ORACLE_SID=zabbix
    export PDB_NAME=pdb1_zabbix
    export DATA_DIR=/u02/oradata
    export PATH=/usr/sbin:/usr/local/bin:$PATH
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    EOF
  8. start_all.sh 脚本具体内容如下:

    cat > /home/oracle/scripts/start_all.sh <<EOF
    #!/bin/bash
    . /home/oracle/scripts/setEnv.sh
    export ORAENV_ASK=NO
    . oraenv
    export ORAENV_ASK=YES
    dbstart \$ORACLE_HOME
    EOF
  9. stop_all.sh 脚本具体内容如下:

    cat > /home/oracle/scripts/stop_all.sh <<EOF
    #!/bin/bash
    . /home/oracle/scripts/setEnv.sh
    export ORAENV_ASK=NO
    . oraenv
    export ORAENV_ASK=YES
    dbshut \$ORACLE_HOME
    EOF
  10. 配置环境变量 /home/oracle/.bash_profile,援用上述环境变量配置辅助脚本

    >$ echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile
    >$ source .bash_profile 
  11. 须要留神

     留神:上述环境变量辅助脚本 setEnv 中的配置项 ORACLE_SID=zabbix 和 PDB_NAME=pdb1_zabbix,跟后文 dbca 配置文件 $oracle_home/assistants/dbca/dbca.rsp 中的配置项 sid=zabbix 和 pdbName=pdb1_zabbix 是一一响应的。
  12. 上传 oracle19c 二进制安装包并解压
  13. 上传到 /u01/app/oracle/product/19.0.0/dbhome_1 门路下并解压

    cd /u01/app/oracle/product/19.0.0/dbhome_1
    unzip LINUX.X64_193000_db_home.zip
  14. 配置静默装置配置文件 db_install.rsp
  15. 配置文件在 LINUX.X64_193000_db_home.zip 中的 install 目录下,更改前先备份

    cd /u01/app/oracle/product/19.0.0/dbhome_1/install/response/
    cp -a db_install.rsp {,db_install.rsp.bak.20220202}
  • 重点批改项如下,/u01/app/oracle/product/19.0.0/dbhome_1/install/response/db_install.rsp

    oracle.install.option=INSTALL_DB_SWONLY
    UNIX_GROUP_NAME=oinstall
    INVENTORY_LOCATION=/u01/app/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=oinstall
    oracle.install.db.OSOPER_GROUP=oinstall
    oracle.install.db.OSBACKUPDBA_GROUP=oinstall
    oracle.install.db.OSDGDBA_GROUP=oinstall
    oracle.install.db.OSKMDBA_GROUP=oinstall
    oracle.install.db.OSRACDBA_GROUP=oinstall
    oracle.install.db.rootconfig.executeRootScript=false
  1. 执行静默装置前,能够执行以下命令,查看各种配置项是否配置正确

    >$ /u01/app/oracle/product/19.0.0/dbhome_1/runInstaller -executePrereqs -silent -responseFile /u01/app/oracle/product/19.0.0/dbhome_1/install/response/db_install.rsp
    Launching Oracle Database Setup Wizard...
    
    Prerequisite checks executed successfully.
    Moved the install session logs to:
     /u01/app/oraInventory/logs/InstallActions2022-02-02_11-06-47AM
  2. 执行静默装置

    >$ /u01/app/oracle/product/19.0.0/dbhome_1/runInstaller -silent -responseFile /u01/app/oracle/product/19.0.0/dbhome_1/install/response/db_install.rsp

  3. 依据 runInstaller 装置时的提醒,切换应用 root 执行提醒中的两个脚本文件

    >$ sh /u01/app/oraInventory/orainstRoot.sh
    >$ sh /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
  4. 从执行后果的提醒能够看出,root.sh 执行时创立了配置文件 /etc/oratab
  5. 配置文件 /etc/oratab,是 oracle 运行时的一个比拟重要的配置文件,后续的 dbca 命令会更新该配置文件
  6. 验证装置后果
  7. 应用 sqlplus 验证软件包装置后果
  8. 上述步骤实现后,oracle 所有的二进制文件都曾经装置结束,能够通过 sqlplus 命令验证下装置后果

  1. 应用 NetCA 配置 oracle 监听服务
  2. 通过 netca 静默式配置监听服务
  3. 这里应用了默认配置,未对该配置文件做任何批改

    >$ netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp
  4. 执行这一步是为了主动生成 listener.ora

开始进入低潮局部

  1. 新增 IPV6 的监听地址与端口
  2. 查找监听文件 listener.ora 并进行批改

    >$ vim /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    
    LISTENER =
      (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = fd15:4ba5:5a2b:1008::5)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.8)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
      )
    
    SID_LIST_LISTENER =
      (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ZABBIX.DB)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = zabbix)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = PDB1_ZABBIX.DB)
      (SID_NAME = zabbix)
    )
    )
    ADR_BASE_LISTENER=/u01/app/oracle
  3. listener.ora 是服务器端用的,oracle 监听程序,就是读的这个文件,外面有 oracle 服务器端的 socket 监听地址和端口(
    如果要想局域网中的其他人,可能拜访我本地的 oracle,要把我本机的地址写进去,如 192.168.11.8、fd15:4ba5:5a2b:1008::5
  4. 启动监听和查看监听状态

    >$ lsnrctl start # 启动
    >$ lsnrctl status

  5. 应用 DBCA 创立 Oracle 数据库实例
  6. DBCA,即 Database Configuration Assistant(数据库配置助手),能够用来创立 Oracle 数据库实例;
  7. DBCA 即反对 GUI 互动模式,也反对 SILENT 静默模式;
  8. 静默模式下须要更改配置文件 /u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/dbca.rsp
  9. 改变前最好备份,重点批改项如下:

    gdbName=zabbix.db
    sid=zabbix
    createAsContainerDatabase=true
    pdbName=pdb1_zabbix
    pdbAdminPassword=Root.123456
    templateName=General_Purpose.dbc
    sysPassword=Root.123456
    systemPassword=Root.123456 
    dbsnmpPassword=Root.123456
    datafileDestination=/u02/oradata
    recoveryAreaDestination=/u02/flash_recovery_area
    characterSet=UTF8
    nationalCharacterSet=UTF8
    listeners=LISTENER
    databaseType=OLTP
    sampleSchema=true
  10. gdbName: 数据库的全局数据库名称
  11. sid: 数据库的零碎标识符 (SID)
  12. createAsContainerDatabase: 将数据库创立为容器数据库的标记
  13. pdbName: 如果须要创立一个或多个 pdb,请指定 pdbname/pdbanme 前缀
  14. pdbAdminPassword: PDB 管理员用户明码
  15. templateName: 模板名称
  16. sysPassword: SYS 用户明码
  17. systemPassword: SYSTEM 用户的明码
  18. dbsnmpPassword: DBSNMP 用户明码
  19. datafileDestination: 数据文件的地位
  20. recoveryAreaDestination: 数据文件的地位
  21. characterSet: 数据库字符集
  22. nationalCharacterSet: 数据库的国家字符集
  23. listeners: 指定要向其注册数据库的侦听器列表。默认状况下,为 $ORACLE_HOME/network/admin/listener.ora 中指定的所有侦听器配置数据库
  24. databaseType: 用于指定内存百分比时的内存调配
  25. sampleSchema: 指定是否将示例模式增加到您的数据库
  26. 开始通过 dbca 命令静默式创立数据库

    >$ dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/dbca.rsp
  27. 数据库创立实现后,应用 lsnrctl status 验证下监听状态

    [oracle@oracle19csvr admin]$ lsnrctl status
    
    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 05-FEB-2022 10:20:57
    
    Copyright (c) 1991, 2019, Oracle.  All rights reserved.
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=fd15:4ba5:5a2b:1008::5)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date                02-FEB-2022 22:16:06
    Uptime                    2 days 12 hr. 4 min. 51 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle19csvr/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fd15:4ba5:5a2b:1008::5)(PORT=1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.8)(PORT=1521)))
    Services Summary...
    Service "86b637b62fdf7a65e053f706e80a27ca.db" has 1 instance(s).
      Instance "zabbix", status READY, has 1 handler(s) for this service...
    Service "d70b94075c19d292e055000000000005.db" has 1 instance(s).
      Instance "zabbix", status READY, has 1 handler(s) for this service...
    Service "pdb1_zabbix.db" has 1 instance(s).
      Instance "zabbix", status READY, has 1 handler(s) for this service...
    Service "zabbix.db" has 1 instance(s).
      Instance "zabbix", status READY, has 1 handler(s) for this service...
    Service "zabbixXDB.db" has 1 instance(s).
      Instance "zabbix", status READY, has 1 handler(s) for this service...
    The command completed successfully
    [oracle@oracle19csvr admin]$ 
  28. 数据库创立实现后,通过 sqlplus 尝试登录验证下

    [oracle@oracle19csvr admin]$ sqlplus sys/Root.123456@zabbix as sysdba 
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Sat Feb 5 10:17:47 2022
    Version 19.3.0.0.0
    
    Copyright (c) 1982, 2019, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.3.0.0.0
    
    SQL> 
  29. 上述命令“sqlplus sys/Root.123456@zabbix as sysdba”中应用的 zabbix 是配置文件 dbca.rsp 中指定的 sid=zabbix,是 oracle 数据库的 System identifier (SID),;
  30. 上述命令执行胜利后,登录的是根容器 CDB$ROOT,若要切换到某个可插拔数据库 pdb,能够应用命令 alter session set container=pdbName;。
  31. 增加对可插拔数据库实例的监听,以及让其反对 ipv6 的侦听
  32. 如果应用 dbca 创立数据库时创立了可插拔数据库 pdb,则须要更改配置文件 tnsnames.ora,增加对可插拔数据库实例的监听;
  33. 配置文件门路:/u01/app/oracle/product/19.0.0/dbhome_1/network/admin/tnsnames.ora
  34. 配置结束的 tnsname.ora 内容如下:

    ZABBIX =
      (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.8)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = fd15:4ba5:5a2b:1008::5)(PORT = 1521)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ZABBIX)
    )
      )
    PDB1_ZABBIX.DB =
      (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.8)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = fd15:4ba5:5a2b:1008::5)(PORT = 1521)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PDB1_ZABBIX.DB)
    )
      )
  35. 可见增加了对可插拔数据库实例 pdb1_zabbix 的监听配置(pdb1_zabbix 是通过配置文件 dbca.rsp 的配置项 pdbName=pdb1_zabbix 指定的)
  36. tnsnames.ora 是记录客户端拜访数据库的本地配置,客户端是通过 tnsnames.ora 来辨认连贯服务器的,如果你没有增加 tnsnames.ora, 那么你就连贯不上服务器的
  37. 应用命令 tnsping 验证对可插拔数据库 pdb 的监听配置是否正确:

    [oracle@oracle19csvr admin]$ tnsping pdb1_zabbix
    
    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 05-FEB-2022 10:49:34
    
    Copyright (c) 1997, 2019, Oracle.  All rights reserved.
    
    Used parameter files:
    /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/sqlnet.ora
    
    
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.8)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = fd15:4ba5:5a2b:1008::5)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pdb1_zabbix)))
    OK (20 msec)

写在最初

好了,终于完结了,整个过程下来能够说是“含辛茹苦”啊!一直的碰到问题,解决问题。一直的掉到坑里,再从坑里爬出来。在本篇中笔者并没有把所遇到的问题分享进去。因为碰到的问题是形形色色呀!如果您也想在 Oracle 19C 将 IPV6 的监听玩起来,说不定遇到的问题会和笔者不一样,那就仁者见仁,智者见智了。本文只是抛砖引玉,望能和宽广敌人一起交换哈。十分感谢您的关注,望多多点赞、转发。

本文转载于:https://mp.weixin.qq.com/s/1a…

退出移动版