在数据库软件的安装中,Oracle数据库的安装是比较复杂的,尤其是在linux和unix操作系统上安装oracle数据库,涉及到很多步骤,交互式安装要配置xmanager连接,静默安装需要熟悉Oracle的原理、安装配置的步骤及响应文件,稍有不慎就会出错。
在oracle安装的过程中,最容易发生的错误就是安装过程中图形界面弹不出来,还有一个最容易忽视的地方就是hostname为默认设置,配置在ip loopback端口上,导致dbca和netca运行过程中报错导致安装终止,这个问题在交互式图形安装和静默安装下都存在。
因此, 在安装Oracle数据库时,尤其时第一次安装时,一定要仔细阅读oracle公司的相应操作系统安装文档,就是有安装经验的也要十分小心,否则,无意中搞错了容易忽视的细节,就会安装失败。
现在,这种情况得到了改善,oracle公司提供了rpm安装包,在很大程度上简化了数据库的安装,降低了数据库的安装门槛,避免了对xmanager图形管理系统的依赖。本文以oracle 21c的安装为例,在centos 8上使用rpm进行数据库的安装。
oracle提供了两个rpm包,
oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm
使用这两个包,可以很容易完成数据库安装,这两个包都可以从oracle官网下载,下载是要注意操作系统的架构、版本。
1 安装预安装包
安装Oracle数据库的需要安装的第一个包时preinstall包,可以运行rpm命令直接安装。
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# rpm -ivh oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
warning: oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
error: Failed dependencies:
compat-openssl10 is needed by oracle-database-preinstall-21c-1.0-1.el8.x86_64
ksh is needed by oracle-database-preinstall-21c-1.0-1.el8.x86_64
libnsl is needed by oracle-database-preinstall-21c-1.0-1.el8.x86_64
nfs-utils is needed by oracle-database-preinstall-21c-1.0-1.el8.x86_64
xorg-x11-utils is needed by oracle-database-preinstall-21c-1.0-1.el8.x86_64
xorg-x11-xauth is needed by oracle-database-preinstall-21c-1.0-1.el8.x86_64
这里报错的原因是这个preinstall包依赖的包没有安装,造成依赖检查失败,解决的办法也简单,把它需要的安装包安装一下就可以了。我这里用的服务器是阿里云的ECS,安装操作系统时已经配置好了yam源,直接用yam软件安装上面提示的包。
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# yum install compat-openssl10
Installed:
compat-openssl10-1:1.0.2o-3.el8.x86_64
Complete!
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# yum install compat-openssl10 ksh libnsl nfs-utils xorg-x11-utils xorg-x11-xauth
Installed:
gssproxy-0.8.0-19.el8.x86_64 keyutils-1.5.10-9.el8.x86_64 ksh-20120801-254.el8.x86_64
libICE-1.0.9-15.el8.x86_64 libSM-1.2.3-1.el8.x86_64 libX11-xcb-1.6.8-5.el8.x86_64
libXcomposite-0.4.4-14.el8.x86_64 libXi-1.7.10-1.el8.x86_64 libXinerama-1.1.4-1.el8.x86_64
libXmu-1.1.3-1.el8.x86_64 libXrandr-1.5.2-1.el8.x86_64 libXt-1.1.5-12.el8.x86_64
libXtst-1.2.3-7.el8.x86_64 libXv-1.0.11-7.el8.x86_64 libXxf86dga-1.1.5-1.el8.x86_64
libXxf86misc-1.0.4-1.el8.x86_64 libXxf86vm-1.1.4-9.el8.x86_64 libdmx-1.1.4-3.el8.x86_64
libnsl-2.28-164.el8.x86_64 libverto-libevent-0.3.0-5.el8.x86_64 nfs-utils-1:2.3.3-46.el8.x86_64
rpcbind-1.2.5-8.el8.x86_64 xorg-x11-utils-7.5-28.el8.x86_64 xorg-x11-xauth-1:1.0.9-12.el8.x86_64
Complete!
从命令的输出可以看到,上面提示的缺失的包已经安装成功。解决了依赖问题后,重新安装上面的preinstall包。
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# rpm -ivh oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
warning: oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:oracle-database-preinstall-21c-1.################################# [100%]
preinstall包安装成功。
2 安装oracle21C企业版
包名字里面ee的意思是企业版。
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# rpm -ivh oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm
warning: oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:oracle-database-ee-21c-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-21c configure
根据上面的信息,在oracle包安装完成后,还运行了post installation 脚本,脚本运行完后,提示安装成功,可以配置数据库了。
3 配置数据库
根据上面的安装提示,运行 /etc/init.d/oracledb_ORCLCDB-21c configure命令可以创建一个示例数据库,这个命令以root的身份运行。
[root@iZ2ze0t8khaprrpfvmevjiZ ~]# /etc/init.d/oracledb_ORCLCDB-21c configure
Configuring Oracle Database ORCLCDB.
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
安装过程中,在这个点停了很长时间,一度以为安装服务器死机了,查看ECS控制台,监控显示的结果如下:
CPU的利用率并不高,云盘读写的100多兆,云盘的iops倒不是很高,从上面这个图来看,这个云盘读写100多兆显示为一条直线,长时间没有什么变化,重新打开一个终端会话,连接至这台ECS,用iostat查看,读流量和写流量并不是一直不变,而是一直都有变化,方才确认这台服务器没有死机。看来,ECS的监控还是有问题的,它的采样周期较长,短期的变化看不出来,如果只依据ECS的监控结果来判断,会得到错误的结论,看来,判断系统是否故障时,还需要使用多个工具,多种技术手段,综合多方面的信息审慎的进行判断,才不会得出错误的结论。
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.
数据库配置成功完成,密码自动产生,需要登录数据库设置成自己想要的密码,命令也输出了数据库信息:
全局数据库名称和实例标识符都是ORCLCDB。
4 登录数据库
登录配置好的数据库,需要切换到oracle用户下,登录前需要设置几个环境变量
export ORACLE_HOME=/opt/oracle/product/21c/dbhome_1
export ORACLE_SID=ORCLCDB
export CHARSET=AL32UTF8
export PATH=$PATH:$ORACLE_HOME/bin
可以手动运行上面的命令,也可以将上面的命令加到oracle用户家目录的.bash_profile文件中,这样每次登录用户会自动设置这几个环境变量。
运行sqlplus命令就可以登录到数据库。
[oracle@iZ2ze0t8khaprrpfvmevjiZ ~]$sqlplus / as sysdba
oracle 21C 不再支持非可插拔数据库,只支持可插拔容器数据库,配置数据库时自动创建了一个容器数据库和一个可插拔数据库。使用上面sqlplus命令登录的是容器数据库,使用下面命令切换到可插拔数据库。
SQL> alter session set container=ORCLPDB1;
Session altered.
也可以切换会容器数据库,容器数据库的名字为cdb$root
SQL> alter session set container=cdb$root;
Session altered.
用show命令可以查看当前的容器名
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
配置完的数据库第一次启动时可插拔的数据库是打开的,处于open状态,如果重启了数据库实例,只有容器数据库是打开的,可插拔数据库则处于mount状态,使用下面命令可以打开可插拔数据库。
SQL> alter pluggable database open;
Pluggable database altered.
如果要直接登录可插拔数据库,oracle已经为我们创建了一个服务,oracle的监听器也对创建的服务进行监听。假设我们在可插拔数据库orclpdb1 上已经创建了名为test,密码为test123的用户,使用下面命令可以直接登录到可插拔数据库orclpdb1,后面的操作就和非可插拔数据库没什么区别了。
[oracle@iZ2ze0t8khaprrpfvmevjiZ ~]$ sqlplus test/test123@iZ2ze0t8khaprrpfvmevjiZ/orclpdb1