on  it road.com

在 CentOS 7 中调整 SELinux 模式

将 SELinux 设置为 Permissive 模式。

[root@oracle-01 ~]# sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/sysconfig/selinux
[root@oracle-01 ~]# setenforce permissive

为 Oracle Database 18c 创建目录

我们使用以下两个目录,一个用于 RDBMS 软件,另一个用于 Oracle 数据库。

[root@oracle-01 ~]# mkdir -p /u01/app/oracle/product/18.3.0/dbhome_1
[root@oracle-01 ~]# mkdir -p /u02/oradata
[root@oracle-01 ~]# chown -R oracle:oinstall /u01 /u02
[root@oracle-01 ~]# chmod -R 775 /u01 /u02

在 CentOS 7 上以静默模式安装 Oracle Database 18c

我们已经从 Oracle 网站下载了适用于 Linux 的 Oracle Database 18c (18.3),并使用 WinSCP 将 zip 文件传输到我们的 CentOS 7 虚拟机。

切换到 oracle 用户并解压下载的 zip 文件。

[root@oracle-01 ~]# su - oracle
[oracle@oracle-01 ~]# unzip LINUX.X64_180000_db_home.zip -d $ORACLE_HOME

以静默模式启动 Oracle Database 18c 安装。

[oracle@oracle-01 ~]$ cd $ORACLE_HOME
[oracle@oracle-01 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...
[WARNING] [INS-13014] Target environment does not meet some optional requirements.
   CAUSE: Some of the optional prerequisites are not met. See logs for details. installActions2019-03-20_10-26-13PM.log
   ACTION: Identify the list of failed prerequisite checks from the log: installActions2019-03-20_10-26-13PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
 /u01/app/oracle/product/18.3.0/dbhome_1/install/response/db_2019-03-20_10-26-13PM.rsp
You can find the log of this install session at:
 /tmp/InstallActions2019-03-20_10-26-13PM/installActions2019-03-20_10-26-13PM.log
As a root user, execute the following script(s):
        1. /u01/app/oraInventory/orainstRoot.sh
        2. /u01/app/oracle/product/18.3.0/dbhome_1/root.sh
Execute /u01/app/oraInventory/orainstRoot.sh on the following nodes:
[oracle-01]
Execute /u01/app/oracle/product/18.3.0/dbhome_1/root.sh on the following nodes:
[oracle-01]

Successfully Setup Software with warning(s).
Moved the install session logs to:
 /u01/app/oraInventory/logs/InstallActions2019-03-20_10-26-13PM

Oracle Universal Installer 发出警告,因为我们在具有 2 GB 内存 的系统上进行安装,而 Oracle 建议至少 8 GB 内存 用于 Oracle Database 18c 安装。
因此,我们可以放心地忽略此警告。

已安装 Oracle 数据库 18c。
现在以 root 用户身份连接并执行安装后脚本。

[root@oracle-01 ~]# /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-01 ~]# /u01/app/oracle/product/18.3.0/dbhome_1/root.sh
Check /u01/app/oracle/product/18.3.0/dbhome_1/install/root_oracle-01.onitroad.com_2019-03-20_22-42-29-680074976.log for the output of root script

在 CentOS 7 上安装 Oracle Database 18c 必备包

使用 yum 命令安装必备软件包。

[root@oracle-01 ~]# yum install -y bc binutils compat-libcap1 compat-libstdc++-33 glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender-devel libXrender libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat net-tools nfs-utils gcc-c++
在 CentOS 7 上安装 Oracle Database 18c

Oracle Database 18c 是 Oracle 关系数据库管理系统或者 RDBMS 的最新版本,是一个多模型数据库。

Oracle 数据库常用于在线事务处理/OLTP 和数据仓库/DW 环境。
Oracle Database 18c 也可用于公共和私有云、Exadata 和本地系统。

在本文中,我们将以静默模式在 CentOS 7 本地服务器上安装 Oracle Database 18c。

在 CentOS 7 中为 Oracle 用户设置安全限制

执行以下命令为 oracle 用户设置安全限制。

[root@oracle-01 ~]# cat >> /etc/security/limits.d/30-oracle.conf << EOF
> 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
> EOF

在 CentOS 7 中设置环境变量

使用以下命令为 oracle 用户设置环境变量。

[root@oracle-01 ~]# su - oracle
[oracle@oracle-01 ~]$ cat >> ~/.bash_profile << EOF
> # Oracle Settings
> export TMP=/tmp
> export TMPDIR=$TMP
>
> export ORACLE_HOSTNAME=oracle-01.onitroad.com
> export ORACLE_UNQNAME=cdb1
> export ORACLE_BASE=/u01/app/oracle
> export ORACLE_HOME=$ORACLE_BASE/product/18.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
> EOF

在静默模式下创建 Oracle 18c 多租户数据库

手动启动默认的 Oracle 监听器。

[oracle@oracle-01 ~]$ lsnrctl start
LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 20-MAR-2019 22:47:53
Copyright (c) 1991, 2018, Oracle.  All rights reserved.
Starting /u01/app/oracle/product/18.3.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 18.0.0.0.0 - Production
Log messages written to /u01/app/oracle/diag/tnslsnr/oracle-01/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle-01.onitroad.com)(PORT=1521)))
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
-----------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 18.0.0.0.0 - Production
Start Date                20-MAR-2019 22:47:53
Uptime                    0 days 0 hr. 0 min. 1 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle-01/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle-01.onitroad.com)(PORT=1521)))
The listener supports no services
The command completed successfully

在静默模式下创建一个 Oracle 18c 多租户数据库,如下所示。

[oracle@oracle-01 ~]$ dbca -silent -createDatabase \
> -templateName General_Purpose.dbc \
> -gdbname ${ORACLE_SID} -sid  ${ORACLE_SID} \
> -responseFile NO_VALUE \
> -characterSet AL32UTF8 \
> -sysPassword 123 \
> -systemPassword 123 \
> -createAsContainerDatabase true \
> -numberOfPDBs 1 \
> -pdbName ${PDB_NAME} \
> -pdbAdminPassword 123 \
> -databaseType MULTIPURPOSE \
> -automaticMemoryManagement false \
> -totalMemory 800 \
> -storageType FS \
> -datafileDestination "${DATA_DIR}" \
> -redoLogFileSize 50 \
> -emConfiguration NONE \
> -ignorePreReqs
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 doirt [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 doirt [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'PDBADMIN' password entered does not conform to the Oracle recommended standards.
   CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 doirt [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
   ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
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.

我们设置了一个简单的密码,因此 dbca 向我们发出警告。

以 root 身份连接并执行以下命令以启用 CDB1 数据库的自动重启。

[root@oracle-01 ~]# sed -i 's/:N$/:Y/g' /etc/oratab

使用 sqlplus 连接到 CDB1 并启用 Oracle Managed Files (OMF)。

[oracle@oracle-01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Wed Mar 20 23:56:25 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='/u02/oradata' SCOPE=BOTH;
System altered.

更改PDB1,使其在CDB1 Database 的数据库启动时自动打开。

SQL> ALTER PLUGGABLE DATABASE PDB1 SAVE STATE;
Pluggable database altered.

在 CentOS 7 中调整内核参数

根据 Oracle Database 18c 的要求设置以下内核参数。

[root@oracle-01 ~]# cat >> /etc/sysctl.d/98-oracle.conf << EOF
> 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
> EOF
[root@oracle-01 ~]# sysctl -p

在 CentOS 7 中禁用透明大页面(Transparent Hugepages )

透明大页面可能会导致运行时内存分配延迟。
因此,为避免性能问题,Oracle 建议在开始安装之前禁用透明大页面。
Oracle 建议我们改用 Standard Hugepages 以提高性能。

验证我们的 CentOS 7 服务器上是否启用了透明大页面。

[root@oracle-01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

[always] 标志表明我们的 CentOS 7 服务器正在使用 Transparent Hugepages。

要禁用透明大页面,我们必须编辑 GRUB 配置。

[root@oracle-01 ~]# vi /etc/default/grub

查找 GRUB_CMDLINE_LINUX 并在最后添加 transparent_hugepage=never。
编辑此指令后应如下所示。

GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never"

使用修改后的配置生成 /etc/grub.cfg 文件。

[root@oracle-01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-07fcd178406f4b3ca09084082364afba
Found initrd image: /boot/initramfs-0-rescue-07fcd178406f4b3ca09084082364afba.img
done

重新启动机器以验证配置。

[root@oracle-01 ~]# systemctl reboot

重新启动后,再次检查 Transparent HugePages 的状态。

[root@oracle-01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

透明 Hugepages 已被禁用。

创建 Oracle Database 18c 用户和组

根据 Oracle Database 18c 的要求创建 OS 用户和组。

[root@oracle-01 ~]# groupadd -g 1501 oinstall
[root@oracle-01 ~]# groupadd -g 1502 dba
[root@oracle-01 ~]# groupadd -g 1503 oper
[root@oracle-01 ~]# groupadd -g 1504 backupdba
[root@oracle-01 ~]# groupadd -g 1505 dgdba
[root@oracle-01 ~]# groupadd -g 1506 kmdba
[root@oracle-01 ~]# groupadd -g 1507 racdba
[root@oracle-01 ~]# useradd -u 1501 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle
[root@oracle-01 ~]# echo "oracle" | passwd oracle --stdin
Changing password for user oracle.
passwd: all authentication tokens updated successfully.

在 CentOS 7 中配置本地 DNS 解析器

要配置名称解析,我们可以使用中央 DNS 服务器,也可以使用本地 DNS 解析器。
为简单起见,我们为我们的服务器使用本地 DNS 解析器。

以 root 用户身份使用 ssh 连接到 oracle-01.onitroad.com 并执行以下命令。

[root@oracle-01 ~]# cat >> /etc/hosts << EOF
> 192.168.1.148 oracle-01.onitroad.com oracle-01
> EOF

使用 ping 命令验证名称解析。

[root@oracle-01 ~]# ping oracle-01.onitroad.com
PING oracle-01.onitroad.com (192.168.1.148) 56(84) bytes of data.
64 bytes from oracle-01.onitroad.com (192.168.1.148): icmp_seq=1 ttl=64 time=0.053 ms
64 bytes from oracle-01.onitroad.com (192.168.1.148): icmp_seq=2 ttl=64 time=0.068 ms

CentOS 7 防火墙中的开放服务端口

在 Linux 防火墙中允许 Oracle SQL* Net Listener 端口 1521/tcp。

[root@oracle-01 ~]# firewall-cmd --permanent --add-port=1521/tcp
success
[root@oracle-01 ~]# firewall-cmd --reload
success

在 CentOS 7 中自动启动 Oracle 18c 数据库和监听器

要自动启动 Oracle 18c 数据库和监听器,我们必须创建一个 systemd 服务,如下所示:

[root@oracle-01 ~]# vi /usr/lib/systemd/system/dbora.service

并其中添加以下指令。

[Unit]
Description=Oracle Database Service
After=network.target

[Service]
Type=forking
ExecStart=/u01/app/oracle/product/18.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/18.3.0/dbhome_1
ExecStop=/u01/app/oracle/product/18.3.0/dbhome_1/bin/dbshut /u01/app/oracle/product/18.3.0/dbhome_1
User=oracle
TimeoutSec=300s

[Install]
WantedBy=multi-user.target

启动并启用 dbora.service。

[root@oracle-01 ~]# systemctl daemon-reload
[root@oracle-01 ~]# systemctl enable dbora.service
Created symlink from /etc/systemd/system/multi-user.target.wants/dbora.service to /usr/lib/systemd/system/dbora.service.
[root@oracle-01 ~]# systemctl start dbora.service
[root@oracle-01 ~]# systemctl status dbora.service
-> dbora.service - Oracle Database Service
   Loaded: loaded (/usr/lib/systemd/system/dbora.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-03-21 09:13:28 PKT; 1min 31s ago
  Process: 12004 ExecStart=/u01/app/oracle/product/18.3.0/dbhome_1/bin/dbstart /u01/app/oracle/product/18.3.0/dbhome_1 (code=exited, status=0/SUCCESS)
 Main PID: 10315 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/dbora.service
           ->->12017 /u01/app/oracle/product/18.3.0/dbhome_1/bin/tnslsnr LISTEN...
           ->->12128 ora_pmon_cdb1
Mar 21 09:13:28 oracle-01.onitroad.com systemd[1]: Started Oracle Database Ser...
Hint: Some lines were ellipsized, use -l to show in full.

我们已经在 CentOS 7 服务器上成功安装了 Oracle Database 18c。

日期:2020-09-17 00:11:35 来源:oir作者:oir