Oracle Database 19c 是 Oracle 公司发布的最新版多模式数据库管理系统,可以用于 OLTP(联机事务处理)和 DW(数据仓库)以及混合模式(OLTP+DW)数据工作流。虽然 Oracle Database 19c 是非自由软件,但是它可以从 Oracle 的官方网站免费下载并使用。

Oracle Database 19c 还可以从一些云服务商提供的云产品中免费获得预安装版本。

本文将详细讲解如何在 CentOS 8 系统静默安装 Oracle Database 19c 并创建一个多租户数据库服务器。

1] 系统环境说明

  • 操作系统:CentOS 8.1
  • 主机名:oracle-db-19c
  • IP 地址:172.16.200.1

2] 更新操作系统

在安装和配置服务器前,将 Linux 操作系统的软件包更新到最新是一个良好的习惯,这不仅可以降低软件兼容性风险,还可以有效提升系统稳定性。

对于 CentOS 8 系统,可以使用如下命令进行系统更新:

# dnf update -y

3] 配置本地主机解析

在安装 Oracle Database 19c 之前,需要为主机名配置好主机解析。主机解析可以通过 DNS 服务器完成,当然,如果没有 DNS 服务器,修改本地”/etc/hosts”文件也可以达到同样效果:

# echo "172.16.200.1 oracle-db-19c" >> /etc/hosts

4] 禁用 CentOS 8 系统 Transparent HugePages

Oracle 官方推荐禁用系统 Transparent HugePages(透明大页)功能,因为该功能可能会导致 Oracle RAC 群集访问内存时节点重启以及单实例节点主机性能存在问题。于是,Oracle 官方推荐 Linux 系统采用 Standard HugePages(标准大页)。

而在 Red Hat 的 Linux 发行版中,透明大页自 EL 6.0 后会默认启用。

使用如下命令来判断 CentOS 8 系统是否启用了透明大页:

# cat /sys/kernel/mm/transparent_hugepage/enabled

图.1 查看 CentOS 系统 Transparent HugePages 状态

如图.1 所示,透明大页启用状态为”[always]”,表示系统启用了该功能。

禁用此功能的话,需要修改 GRUB 配置项,添加禁用透明大页的启动项参数。

修改”/etc/default/grub”文件,修改内容如下:

GRUB_CMDLINE_LINUX="resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet transparent_hugepage=never"

配置文件修改完成后,使用如下命令重新生成 GRUB 配置并重启主机让配置生效:

# grub2-mkconfig -o /boot/grub2/grub.cfg
# systemctl reboot

主机重新启动成功后,再次使用之前的命令查看透明大页状态,如果显示为”[never]”,则表示透明大页功能已经关闭。

图.2 CentOS 系统成功禁用透明大页

5] 安装 Oracle Database 19c CentOS 8 系统依赖包

由于数据库服务器采用静默方式安装,为避免出错,在安装数据库之前,需要把 Oracle 程序依赖包安装至系统。依赖包同样采用 dnf 方式安装:

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

6] 创建 Oracle 19c 使用的用户和属组

用以下命令创建 Oracle 19c 需要使用的用户及属组:

# groupadd -g 6001 oinstall
# groupadd -g 6002 dba
# groupadd -g 6003 oper
# groupadd -g 6004 backupdba
# groupadd -g 6005 dgdba
# groupadd -g 6006 kmdba
# groupadd -g 6007 racdba
# useradd -u 6001 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle
# echo "oracle" | passwd oracle --stdin

此时,就创建了一个用户 oracle,并设置其密码为”oracle”。

7] 设置 Oracle 用户的安全权限

在”/etc/security/limits.d”目录中创建一个 oracle 用户的权限文件”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

8] 调整 CentOS 8系统参数

根据 Oracle 19c 的要求,创建 Oracle 参数文件”/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 -p

9] 配置 SELinux 以及放行防火墙端口

使用如下命令将 SELinux 设置为”permissive”模式,并放行 Oracle 侦听的 1521 端口:

# sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/sysconfig/selinux
# setenforce permissive
# firewall-cmd --permanent --add-port=1521/tcp
# firewall-cmd --reload

10] 创建 Oracle 19c 的工作目录以及数据库目录

为了成功安装 Oracle 数据库,需要创建如下目录并更改目录属主权限:

# mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
# mkdir -p /u02/oradata
# chown -R oracle:oinstall /u01 /u02
# chmod -R 775 /u01 /u02

我们这里创建了两个目录,其中”/u01″用于存放数据库管理系统软件,而”/u02″用于存放数据库文件。

11] 配置 Oracle 用户环境变量

切换到 oracle  用户,变修改该用户的环境变量文件”.bash_profile”:

# su - oracle
# vi .bash_profile

环境变量内容如下:

# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=oracle-db-19c
export ORACLE_UNQNAME=oradb
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=oradb
export PDB_NAME=pdb
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

注意环境变量的设置已经包含了 Oracle 数据库的各种基本参数设置,包括”ORACLE_BASE”和”ORACLE_HOME”等,这些设置与之前创建的目录相对应,并且设置了”ORACLE_SID”为”oradb”。

环境变量设置完成后,使用如下命令让配置生效:

$ source ~/.bash_profile

12] 静默安装 Oracle Database 19c 数据库管理系统

首先从 Oracle 官方网站下载 Oracle Database 19c 的 Linux 版压缩包,下载虽然是免费的,但是需要一个 Oracle 用户帐号,反正注册起来也不麻烦,不妨注册一个,一直有用。

现在, 我们已经将压缩包下载,并放置在 oracle 用户的家目录,然后解压缩安装包:

$ unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME

Oracle Database 19c 的安装工具对于识别 CentOS 8 系统存在一些问题,但是我们可以通过设置环境变量加以解决:

$ export CV_ASSUME_DISTID=RHEL8.0

最后,进入”ORACLE_HOME”目录进入静默安装:

$ cd $ORACLE_HOME
$ ./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

命令执行完之后,就进入漫长的等待,直到出现如下提示:

图.3 静默安装 Oracle 19c 数据库

事实上静默安装同可视化安装达到的效果一致,熟悉响应文件或是安装器的同学可以尝试。看到安装成功的信息后,就根据提示内容切换到 root 用户执行两个初始化脚本,生成数据字典:

$ su -
# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/oracle/product/19.3.0/dbhome_1/root.sh

13] 使用 dbca 工具静默创建数据库

创建数据库前首先启动侦听,以便数据库自动注册:

$ lsnrctl start

之后,就使用如下命令通过 dbca 工具静默创建数据库:

dbca -silent -createDatabase \
 -templateName General_Purpose.dbc \
 -gdbname ${ORACLE_SID} -sid  ${ORACLE_SID} \
 -responseFile NO_VALUE \
 -characterSet AL32UTF8 \
 -sysPassword 1qazXSW@ \
 -systemPassword 1qazXSW@ \
 -createAsContainerDatabase true \
 -numberOfPDBs 1 \
 -pdbName ${PDB_NAME} \
 -pdbAdminPassword 1qazXSW@ \
 -databaseType MULTIPURPOSE \
 -automaticMemoryManagement false \
 -totalMemory 800 \
 -storageType FS \
 -datafileDestination "${DATA_DIR}" \
 -redoLogFileSize 50 \
 -emConfiguration NONE \
 -ignorePreReqs

之后同样是漫长的等待,命令的意思就是指定创建数据库的各种选项,可以与可视化安装时的各个步骤相对应。

数据库创建成功后,会看到如下信息:

图.4 静默方式创建数据库

至此,一个名为”oradb”的数据库就创建完成了。

登录到数据库,查看数据库实例状态,并查看一下侦听状态,确保数据库服务器可用:

图.5 查看数据库服务器及侦听状态

以上就是关于CentOS 8 系统安装 Oracle 19c 数据库的全部内容。

发表评论

您的电子邮箱地址不会被公开。