Oracle Database 19c 的 Linux 防火墙配置
在 CentOS 8 防火墙中允许 Oracle SQL* Net Listener 端口 1521/tcp。
[root@oracle-db-19c ~]# firewall-cmd --permanent --add-port=1521/tcp success [root@oracle-db-19c ~]# firewall-cmd --reload success
为 Oracle 用户配置 Linux 环境
以 oracle 用户身份连接。
[root@oracle-db-19c ~]# su - oracle [oracle@oracle-db-19c ~]$
编辑 oracle 用户的 .bash_profile 。
[oracle@oracle-db-19c ~]$ vi ~/.bash_profile
并在此文件的末尾添加以下配置。
# Oracle Settings export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=oracle-db-19c.onitroad.com export ORACLE_UNQNAME=cdb1 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1 export ORA_INVENTORY=/u01/app/oraInventory export ORACLE_SID=cdb1 export PDB_NAME=pdb1 export DATA_DIR=/u02/oradata 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
执行 .bash_profile 为当前会话设置环境。
[oracle@oracle-db-19c ~]$ source ~/.bash_profile
在 CentOS 8 上以静默模式安装 Oracle Database 19c
我们可以从 Oracle 网站下载 Oracle Database 19c。
我们需要创建一个免费的 Oracle Single Sign-On 帐户才能登录和下载。
我们已经下载了适用于 Linux 的 Oracle Database 19c (19.3) 并将其传输到 oracle 用户的主目录中。
将下载的 zip 文件解压到 ORACLE_HOME 目录。
[oracle@oracle-db-19c ~]$ unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
Oracle Database 19c 安装程序在检测 CentOS 8 操作系统时出现问题,但是,我们可以通过在开始安装之前设置环境变量来解决它。
[oracle@oracle-db-19c ~]$ export CV_ASSUME_DISTID=RHEL8.0
转到 ORACLE_HOME 目录并开始安装。
[oracle@oracle-db-19c ~]$ cd $ORACLE_HOME [oracle@oracle-db-19c dbhome_1]$ ./runInstaller -ignorePrereq -waitforcompletion -silent \ > oracle.install.option=INSTALL_DB_SWONLY \ > ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \ > UNIX_GROUP_NAME=oinstall \ > INVENTORY_LOCATION=${ORA_INVENTORY} \ > ORACLE_HOME=${ORACLE_HOME} \ > ORACLE_BASE=${ORACLE_BASE} \ > oracle.install.db.InstallEdition=EE \ > oracle.install.db.OSDBA_GROUP=dba \ > oracle.install.db.OSBACKUPDBA_GROUP=backupdba \ > oracle.install.db.OSDGDBA_GROUP=dgdba \ > oracle.install.db.OSKMDBA_GROUP=kmdba \ > oracle.install.db.OSRACDBA_GROUP=racdba \ > SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \ > DECLINE_SECURITY_UPDATES=true Launching Oracle Database Setup Wizard... The response file for this session can be found at: /u01/app/oracle/product/19.3.0/dbhome_1/install/response/db_2020-04-28_02-44-19PM.rsp You can find the log of this install session at: /tmp/InstallActions2020-04-28_02-44-19PM/installActions2020-04-28_02-44-19PM.log As a root user, execute the following script(s): 1. /u01/app/oraInventory/orainstRoot.sh 2. /u01/app/oracle/product/19.3.0/dbhome_1/root.sh Execute /u01/app/oraInventory/orainstRoot.sh on the following nodes: [oracle-db-19c] Execute /u01/app/oracle/product/19.3.0/dbhome_1/root.sh on the following nodes: [oracle-db-19c] Successfully Setup Software. Moved the install session logs to: /u01/app/oraInventory/logs/InstallActions2020-04-28_02-44-19PM
以 root 用户身份连接并执行安装后脚本。
[oracle@oracle-db-19c dbhome_1]$ su Password: Last login: Tue Apr 28 14:09:02 PKT 2020 on pts/2 [root@oracle-db-19c ~]# /u01/app/oraInventory/orainstRoot.sh Changing permissions of /u01/app/oraInventory. Adding read,write permissions for group. Removing read,write,execute permissions for world. Changing groupname of /u01/app/oraInventory to oinstall. The execution of the script is complete. [root@oracle-db-19c ~]# /u01/app/oracle/product/19.3.0/dbhome_1/root.sh Check /u01/app/oracle/product/19.3.0/dbhome_1/install/root_oracle-db-19c.onitroad.com_2020-04-28_15-01-30-090367646.log for the output of root script
Oracle Database 19c 已安装在 CentOS 8 服务器上。
在 CentOS 8 中调整内核参数
根据 Oracle Database 19c 的要求设置以下内核参数。
在 /etc/sysctl.d 目录下创建 98-oracle.conf 配置文件。
[root@oracle-db-19c ~]# vi /etc/sysctl.d/98-oracle.conf
并在此文件中添加以下内核参数集。
fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 kernel.panic_on_oops = 1 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500
现在使用 sysctl 命令重新加载内核参数。
[root@oracle-db-19c ~]# sysctl -p
为 Oracle 用户设置安全限制
在/etc/security/limits.d目录下创建30-oracle.conf配置文件,设置oracle用户的安全限制。
[root@oracle-db-19c ~]# vi /etc/security/limits.d/30-oracle.conf
并其中添加以下指令。
oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 oracle hard memlock 134217728 oracle soft memlock 134217728
为 Oracle Database 19c 创建用户和组
根据 Oracle Database 19c 的要求创建 Linux 用户和组。
[root@oracle-db-19c ~]# groupadd -g 1501 oinstall [root@oracle-db-19c ~]# groupadd -g 1502 dba [root@oracle-db-19c ~]# groupadd -g 1503 oper [root@oracle-db-19c ~]# groupadd -g 1504 backupdba [root@oracle-db-19c ~]# groupadd -g 1505 dgdba [root@oracle-db-19c ~]# groupadd -g 1506 kmdba [root@oracle-db-19c ~]# groupadd -g 1507 racdba [root@oracle-db-19c ~]# useradd -u 1501 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle [root@oracle-db-19c ~]# echo "oracle" | passwd oracle --stdin Changing password for user oracle. passwd: all authentication tokens updated successfully.
在 CentOS 8 中禁用透明 HugePages
Oracle 建议我们禁用 Transparent HugePages ,因为它们可能会导致访问内存延迟,从而导致 Oracle RAC 环境中的节点重新启动以及 Oracle 数据库单实例的性能问题或者延迟。
相反,Oracle 建议为基于 Linux 的操作系统使用标准 HugePages。
EL (Enterprise Linux) 6 或者更高版本中默认启用透明 HugePages。
验证我们的 CentOS 8 服务器上是否启用了 Transparent HugePages。
[root@oracle-db-19c ~]# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
[always] 标志表明我们的 CentOS 8 服务器正在使用 Transparent HugePages。
要禁用 Transparent HugePages,我们需要编辑 GRUB 配置。
[root@oracle-db-19c ~]# vi /etc/default/grub
在 GRUB_CMDLINE_LINUX 参数的末尾添加“transparent_hugepage=never”。
编辑后,该指令应如下所示。
GRUB_CMDLINE_LINUX="resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet transparent_hugepage=never"
使用修改后的配置生成 /boot/grub2/grub.cfg 文件。
[root@oracle-db-19c ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... done
重新启动 CentOS 8 机器使更改生效。
[root@oracle-db-19c ~]# systemctl reboot
重新启动后,再次检查 Transparent HugePages 的状态。
[root@oracle-db-19c ~]# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
透明 HugePages 现在已被禁用。
在 CentOS 8 上为 Oracle Database 19c 创建 SystemD 服务
要在 CentOS 8 上配置 Oracle Database 19c 的自动启动,我们必须编写一个 SystemD 服务。
[root@oracle-db-19c ~]# vi /usr/lib/systemd/system/dbora.service
在此文件中添加以下代码行。
[Unit] Description=Oracle Database Service After=network.target [Service] Type=forking ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.3.0/dbhome_1 ExecStop=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbshut /u01/app/oracle/product/19.3.0/dbhome_1 User=oracle TimeoutSec=300s [Install] WantedBy=multi-user.target
执行以下命令以通知 SystemD 有关单元文件的更改。
[root@oracle-db-19c ~]# systemctl daemon-reload
启用并启动 Oracle Database 19c 服务。
[root@oracle-db-19c ~]# systemctl enable --now dbora.service Created symlink /etc/systemd/system/multi-user.target.wants/dbora.service -> /usr/lib/systemd/system/dbora.service.
验证 Oracle Database 19c 服务的状态。
[root@oracle-db-19c ~]# systemctl status dbora.service -> dbora.service - Oracle Database Service Loaded: loaded (/usr/lib/systemd/system/dbora.service; enabled; vendor prese> Active: active (running) since Tue 2020-04-28 16:01:39 PKT; 3s ago Process: 27957 ExecStart=/u01/app/oracle/product/19.3.0/dbhome_1/bin/dbstart > Tasks: 57 (limit: 12367) Memory: 1.0G CGroup: /system.slice/dbora.service ->->28067 ora_pmon_cdb1 ->->28069 ora_clmn_cdb1 ->->28071 ora_psp0_cdb1 ->->28073 ora_vktm_cdb1
我们已经在 CentOS 8 服务器上成功安装了 Oracle Database 19c 并在该服务器中创建了一个数据库。
在静默模式下创建 Oracle 19c 多租户数据库
使用以下命令启动 Oracle 侦听器。
[oracle@oracle-db-19c ~]$ lsnrctl start LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 28-APR-2020 15:04:29 Copyright (c) 1991, 2019, Oracle. All rights reserved. Starting /u01/app/oracle/product/19.3.0/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 19.0.0.0.0 - Production Log messages written to /u01/app/oracle/diag/tnslsnr/oracle-db-19c/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle-db-19c.onitroad.com)(PORT=1521))) Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER ----------------------- Alias LISTENER Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 28-APR-2020 15:04:30 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u01/app/oracle/diag/tnslsnr/oracle-db-19c/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle-db-19c.onitroad.com)(PORT=1521))) The listener supports no services The command completed successfully
使用以下命令创建 Oracle 19c Multitenant 数据库。
[oracle@oracle-db-19c ~]$ dbca -silent -createDatabase \ > -templateName General_Purpose.dbc \ > -gdbname ${ORACLE_SID} -sid ${ORACLE_SID} \ > -responseFile NO_VALUE \ > -characterSet AL32UTF8 \ > -sysPassword V3ryStr@ng \ > -systemPassword V3ryStr@ng \ > -createAsContainerDatabase true \ > -numberOfPDBs 1 \ > -pdbName ${PDB_NAME} \ > -pdbAdminPassword V3ryStr@ng \ > -databaseType MULTIPURPOSE \ > -automaticMemoryManagement false \ > -totalMemory 800 \ > -storageType FS \ > -datafileDestination "${DATA_DIR}" \ > -redoLogFileSize 50 \ > -emConfiguration NONE \ > -ignorePreReqs Prepare for db operation 8% complete Copying database files 31% complete Creating and starting Oracle instance 32% complete 36% complete 40% complete 43% complete 46% complete Completing Database Creation 51% complete 53% complete 54% complete Creating Pluggable Databases 58% complete 77% complete Executing Post Configuration Actions 100% complete Database creation complete. For details check the logfiles at: /u01/app/oracle/cfgtoollogs/dbca/cdb1. Database Information: Global Database Name:cdb1 System Identifier(SID):cdb1 Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdb1/cdb1.log" for further details.
以 root 用户身份连接并执行以下命令以启用 Oracle 数据库的自动启动。
[oracle@oracle-db-19c ~]$ su Password: Last login: Tue Apr 28 15:01:17 PKT 2020 on pts/2 [root@oracle-db-19c ~]# sed -i 's/:N$/:Y/g' /etc/oratab
使用 sqlplus 命令连接到 SQL Shell。
[oracle@oracle-db-19c ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Tue Apr 28 15:57:06 2020 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>
启用 Oracle Managed File (OMF) 以简化数据库和数据库文件的创建。
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='/u02/oradata' SCOPE=BOTH; System altered.
在启动容器数据库时启用可插拔数据库的自动启动。
SQL> ALTER PLUGGABLE DATABASE PDB1 SAVE STATE; Pluggable database altered.
在 CentOS 8 中配置 SELinux 模式
持续将 SELinux 模式设置为 permissive。
[root@oracle-db-19c ~]# sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/sysconfig/selinux [root@oracle-db-19c ~]# setenforce permissive
在 CentOS 8 中配置本地 DNS 解析器
在 CentOS 8 以及其他 Linux 发行版上安装 Oracle Database 19c 之前,有必要配置正确的名称解析。
如果网络使用 DNS 服务器,那么我们可以在 DNS 服务器中配置名称解析,否则我们可以使用本地 DNS 解析器对 Oracle 数据库服务器进行名称解析。
在本地 DNS 解析器 (/etc/hosts) 文件中添加所需的名称解析指令。
[root@oracle-db-19c ~]# echo "192.168.1.206 oracle-db-19c.onitroad.com oracle-db-19c" >> /etc/hosts
在 CentOS 8 上安装 Oracle Database 19c 的必备软件包
Oracle Database 19c 需要一些软件包,因此,我们在继续之前安装这些软件包。
我们可以使用 dnf 命令安装 Oracle Database 19c 准备工作。
[root@oracle-db-19c ~]# dnf install -y bc \ > binutils \ > elfutils-libelf \ > elfutils-libelf-devel \ > fontconfig-devel \ > glibc \ > glibc-devel \ > ksh \ > libaio \ > libaio-devel \ > libXrender \ > libXrender-devel \ > libX11 \ > libXau \ > libXi \ > libXtst \ > libgcc \ > librdmacm-devel \ > libstdc++ \ > libstdc++-devel \ > libxcb \ > make \ > net-tools \ > smartmontools \ > sysstat \ > unzip \ > libnsl \ > libnsl2
为 Oracle Database 19c 创建目录
要安装 Oracle Database 19c 软件,请创建必要的目录并调整这些目录的所有权和权限。
[root@oracle-db-19c ~]# mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 [root@oracle-db-19c ~]# mkdir -p /u02/oradata [root@oracle-db-19c ~]# chown -R oracle:oinstall /u01 /u02 [root@oracle-db-19c ~]# chmod -R 775 /u01 /u02
在这里,我们创建了两个目录,用于 Oracle RDBMS 的 /u01 和用于 Oracle 数据库的 /u02.
Oracle Database 19c 是 Oracle 开发的多模型数据库。
Oracle Database 19c 通常用于 OLTP(在线事务处理)、DW(数据仓库)和混合 (OLTP + DW) 数据库工作负载。
Oracle Database 19c 在专有许可下分发,但可以从 Oracle 网站免费下载。
Oracle Database 19c 也可用于各种平台(包括 Linux 和 Microsoft Windows)的公共和私有云、exadata 和本地系统。
在本文中,我们将学习如何以静默模式在 CentOS 8 本地服务器上安装 Oracle Database 19c 并在该服务器上创建多租户数据库。