1介绍
从Oracle database 18c开始,Linux上单实例Oracle 数据库的安装就可以使用rpm包来进行了。从我接触到的范围来看,这种安装方式好像没有得到广泛的认可和大规模的使用。大部分dba还是使用此前广泛使用的图形化界面或者是静默安装来进行数据库的安装和部署。其中的一个原因是很多应用系统部署的还是Oracle 11G,12C。另一个原因大概是在进行数据库部署时,为了谨慎起见,还是采用自己比较熟悉的方式比较有把握。
其实,使用rpm包安装数据库的步骤比图形化和静默安装都简单了不少,不仅可以减少数据库安装部署的工作量,也可以降低数据库部署的门槛,只要会安装linux软件包,就可以完成数据库的安装。不过,在安装完成之后,需要对数据库的参数进行适当的优化才能投入使用。
2 rpm包安装单实例Oracle数据库的限制
在选择使用rpm包安装数据库之前,最好先了解一下这种安装方式的限制,确认通过这种方式安装的数据库能够满足要求,省得做无用功。根据Oracle官网,这种安装方式有以下几个限制:
- 不能用来打补丁。打补丁还是要用Opatch。
- 标准版2不提供rpm包。后面这个2是官网上的,具体是什么意思不太清楚。
- 不能用来升级数据库。升级数据库还是走以前的升级数据库的流程。
- 最后一个不是限制,应该是个说明。这种方式支持在同一台服务器上不同的目录安装多个版本的数据库。
上面这几条限制大概是说了,这种安装方式只能用来安装数据库,不能用来升级或者打补丁,企业版是提供rpm包的,标准版是否支持需要进一步查证。
3 rpm安装包的准备
使用rpm包安装Oracle数据库需要下载两个包,一个是预安装包,一个是安装包。从官网上看到的安装包的名字的一个例子是oracle-database-ee-19c-1.0-1.x86_64.rpm,这里面oracle-database-ee-19c是数据库名字,1.0是版本,-1是发布号,x86_64是处理器架构。出了下载安装包之外,有一个预安装包最好也下载一下。这个包是用来做安装前的准备工作的,不是安装时必须要用到的。但是,使用这个包可以自动完成大部分安装准备工作,少敲很多命令。说得详细一点,这个预安装包可以替我们完成下面几个工作:
- 自动下载安装grid和数据库安装需要的软件包。
- 创建oracle用户和oinstall、dba组
- 设置sysctl.conf、系统启动参数和驱动器参数
- 设置软硬资源限制
- 根据内核版本设置其它参数
- Linux x86_64 机器上在核心中设置numa=off
4 安装oracle-database-preinstall包
使用下面的命令安装预安装包
[root@localhost ~]# rpm -ivh oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm
安装首先检测依赖的软件包是否安装,这次安装就报了以下警告信息
error: Failed dependencies: compat-libcap1 is needed by oracle-database-preinstall-19c-1.0-3.el7.x86_64 glibc-devel is needed by oracle-database-preinstall-19c-1.0-3.el7.x86_64 ksh is needed by oracle-database-preinstall-19c-1.0-3.el7.x86_64 libaio-devel is needed by oracle-database-preinstall-19c-1.0-3.el7.x86_64 libstdc++-devel is needed by oracle-database-preinstall-19c-1.0-3.el7.x86_64 nfs-utils is needed by oracle-database-preinstall-19c-1.0-3.el7.x86_64 psmisc is needed by oracle-database-preinstall-19c-1.0-3.el7.x86_64 xorg-x11-utils is needed by oracle-database-preinstall-19c-1.0-3.el7.x86_64 xorg-x11-xauth is needed by oracle-database-preinstall-19c-1.0-3.el7.x86_64
使用下面的命令安装以下上面显示缺失的软件包
[root@localhost ~]# yum install compat-libcap1 glibc-devel libaio-devel libstdc++-devel nfs-utils psmisc xorg-x11-utils xorg-x11-xauth ksh
......
......
Complete!
然后再次安装原装包
[root@localhost ~]# rpm -ivh oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm
warning: oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:oracle-database-preinstall-19c-1.################################# [100%]
5 检查以下安装后的效果
预安装包会完成数据库安装前的准备工作,包括创建用户、设置操作系统核心参数等。这里看一下预安装包对操作系统核心参数的调整。
[root@localhost ~]# sysctl -p
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
可以看到,核心参数已经改成了Oracle的推荐值,再看一下核心参数的配置文件
[root@localhost etc]# cat sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
# oracle-database-preinstall-19c setting for fs.file-max is 6815744
fs.file-max = 6815744
# oracle-database-preinstall-19c setting for kernel.sem is '250 32000 100 128'
kernel.sem = 250 32000 100 128
# oracle-database-preinstall-19c setting for kernel.shmmni is 4096
kernel.shmmni = 4096
# oracle-database-preinstall-19c setting for kernel.shmall is 1073741824 on x86_64
kernel.shmall = 1073741824
# oracle-database-preinstall-19c setting for kernel.shmmax is 4398046511104 on x86_64
kernel.shmmax = 4398046511104
# oracle-database-preinstall-19c setting for kernel.panic_on_oops is 1 per Orabug 19212317
kernel.panic_on_oops = 1
# oracle-database-preinstall-19c setting for net.core.rmem_default is 262144
net.core.rmem_default = 262144
# oracle-database-preinstall-19c setting for net.core.rmem_max is 4194304
net.core.rmem_max = 4194304
# oracle-database-preinstall-19c setting for net.core.wmem_default is 262144
net.core.wmem_default = 262144
# oracle-database-preinstall-19c setting for net.core.wmem_max is 1048576
net.core.wmem_max = 1048576
# oracle-database-preinstall-19c setting for net.ipv4.conf.all.rp_filter is 2
net.ipv4.conf.all.rp_filter = 2
# oracle-database-preinstall-19c setting for net.ipv4.conf.default.rp_filter is 2
net.ipv4.conf.default.rp_filter = 2
# oracle-database-preinstall-19c setting for fs.aio-max-nr is 1048576
fs.aio-max-nr = 1048576
# oracle-database-preinstall-19c setting for net.ipv4.ip_local_port_range is 9000 65500
net.ipv4.ip_local_port_range = 9000 65500
可以看到,预安装包设置的每一参数前面都有注释说明。
6 使用rpm包安装数据库
oracle-database-preinstall包安装完成后,如果没有报错,下一步就可以使用rpm包安装数据库了。命令及输出如下:
[root@localhost ~]# rpm -ivh oracle-database-ee-19c-1.0-1.x86_64.rpm
warning: oracle-database-ee-19c-1.0-1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:oracle-database-ee-19c-1.0-1 ################################# [100%]
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure a sample Oracle Database you can execute the following service configuration script as root: /etc/init.d/oracledb_ORCLCDB-19c configure
7 运行服务配置脚本创建数据库
rpm包安装完成后,可以使用上面提示的脚本创建数据库,也可以使用数据库创建助手dbca创建数据库。
7.1 使用服务配置脚本创建数据库
[root@localhost init.d]# pwd
/etc/init.d ##服务脚本在/etc/init.d目录下
[root@localhost init.d]# ./oracledb_ORCLCDB-19c configure
Configuring Oracle Database ORCLCDB.
Prepare for db operation
8% complete
Copying database files
31% complete
Creating and starting Oracle instance
32% complete
......
46% complete
Completing Database Creation
51% 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:
/opt/oracle/cfgtoollogs/dbca/ORCLCDB.
Database Information:
Global Database Name:ORCLCDB
System Identifier(SID):ORCLCDB
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details.
Database configuration completed successfully. The passwords were auto generated, you must change them by connecting to the database using 'sqlplus / as sysdba' as the oracle user
数据库创建成功了,数据库的sys密码是自动生成的,需要登录到数据库更改密码。登录到数据库之前需要设置以下环境变量,根据安装命令的输出,设置oracle用户的环境变量如下:
[oracle@localhost ~]$ export ORACLE_SID=ORCLCDB
[oracle@localhost ~]$ export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 ##这里不能加反斜线
[oracle@localhost ~]$ export PATH=$PATH:$ORACLE_HOME/bin
设置完之后就可以登录数据库了
[oracle@localhost dbhome_1]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jan 27 22:06:13 2023
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> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 READ WRITE NO
7.2 创建非容器数据库
上面用安装助手创建的数据库是容器数据库,安装助手自动创建了一个可插拔的pdb数据库,如果要使用非容器数据库,可以把安装助手创建的数据库drop掉,然后用dbca数据配置助手创建重新创建一个,具体步骤如下:
先删去已创建的数据库,同样是调用安装服务脚本,不同的是,这里执行的delete命令
[root@localhost init.d]# ./oracledb_ORCLCDB-19c delete
Detecting existing Listeners...
Deleting Oracle Listener....
Detecting existing Oracle Databases...
Deleting Oracle Database ORCLCDB.
[WARNING] [DBT-19202] The Database Configuration Assistant will delete the Oracle instances and datafiles for your database. All information in the database will be destroyed.
Prepare for db operation
32% complete
Connecting to database
35% complete
......
65% complete
Updating network configuration files
68% complete
Deleting instance and datafiles
84% complete
100% complete
Database deletion completed.
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB0.log" for further details.
这个安装服务脚本先删除监听,然后调用dbca删除数据库。删除完成后,就可以使用dbca创建数据库了,先编辑一个响应文件,格式及内容如下
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0 gdbName=ORCL templateName=/opt/oracle/product/19c/dbhome_1/assistants/dbca/templates/General_Purpose.dbc sysPassword=system123 systemPassword=system123 datafileDestination= characterSet=UTF8
响应文件为大多数参数提供了默认值。上面文件里responseFileVersion,templateName是必须填的,其他的都可以采用默认值。使用这个响应文件,创建数据库
[oracle@dbserver ~]$ dbca -silent -createDatabase -responseFile /home/oracle/dbca.rsp
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
Prepare for db operation
10% complete
Copying database files
40% complete
Creating and starting Oracle instance
42% complete
......
60% complete
Completing Database Creation
66% complete
69% complete
70% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/ORCL.
Database Information:
Global Database Name:ORCL
System Identifier(SID):ORCL
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCL/ORCL.log" for further details.
关于sys密码的告警信息并不影响数据库的创建。创建完之后,需要再创建监听,配置以下oracle用户的环境变量就可以登录数据库了。
这里需要注意的一点是,由于上面的响应文件里没有内存设置参数,创建的数据库的内存参数配置是oracle默认的设置,这个设置需要根据服务器的内存配置和数据库的要求进行配置,如果直接使用,很大概率会有性能问题。




