Oracle 数据库目前是世界最为领先的数据库,也是很多有钱的企业使用的数据库,与开源数据库不一样的是 Oracle 数据库针对企业用户是收费,而且费用也不是一些小公司能承受的起的,和 SQL Server 一样针对是企业级应用市场。我第一次接触 Oracle 数据库是 2017 年的时候,培训使用过 Oracle 课程,但是目前我用的最多还是 MySQL 数据库,因为它是开源和免费的,商业场景使用没有法律顾虑,而 Oracle 针对教育使用是免费的,如果商业使用那么就要付费。最近在闲逛的时候发现 Oracle 有一款 Oracle Database Express Edition ,有核心数 2 颗和内存大小 2G 限制和磁盘数据大小 12G 限制,适用于小型应用程序和我这种想体验 Oracle 最新特性的开发人员。


准备工作

Oracle XE RPM 安装包去 Oracle 官方网站下载 Oracle DataBase Express Edition 选择对应版本,我使用的 Linux 版本和 AMD 架构 CPU ,也可以在通过 SFTP 上传下载好的 rpm 包到服务器中,如果服务器在没有连接到外网的情况下。我目前使用的 DigitalOcean 所提供的 IaaS 服务,他们家没有提供 rhel8 的 ISO 文件需要自己去 rhel 控制中创建 .vmdk 文件上传到 DO 中,目前 Oracle XE 是原生支持 rhel8 和 oel8 的系统,其他发行版本 Linux 安装过程中会提示 yum repo 仓库密钥错误或者一些莫名其妙的错误。

由于 Oracle XE 要求硬件最低配置是 1G 内存和 12GB 磁盘,如果未达到要求安装过程中会提示安装失败,最好使用 2G 内存机器。

如果使用的 RHEL 系统初始化完成之后,必须对系统进行注册和检查极好状态,可以运行下面的命令:

# 查看系统当其系统发行版本
cat /etc/redhat-release
# 检查是否注册
subscription-manager identity
# 注册系统
subscription-manager register
# 检查订阅列表
subscription-manager list --available
# 检查订阅状态
subscription-manager status

没有特殊情况一般都会显示注册成功。


安装 Oracle XE

在安装 Oracle DataBase Express Edition 之前会需要检查依赖 libaio 软件包,因为 Oracle XE 版本采用了 AIO 模型,这个库 libaio 为异步 I/O 提供了 Linux 原生 API 被 Oracle XE 程序所采用。从这里就可以看出来 Oracle 数据库在这方面技术领先性,目前大部分网络和磁盘 IO 程序还是用的 NIO 或者 BIO 的方式。

# 检查依赖是否安装
rpm -qa | grep libaio
# 如果没有就安装,并且安装一些依赖软件
yum install -y libaio vim wget
# 安装一些开发工具依赖
yum -y groupinstall "Development Tools" 

安装过程中可能会提示没有安装 compat-openssl10 依赖包,这是需要手动下载并且安装到系统中:

# 下载依赖
wget https://repo.almalinux.org/almalinux/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-4.el8_6.x86_64.rpm
# 安装依赖
yum install -y compat-openssl10-1.0.2o-4.el8_6.x86_64.rpm

Oracle XE 相比其他免费的数据库安装起来要复杂,其他开源数据库大部分不用考虑主机名和主机 IP 映射关系,在安装之前一定要保持主机名和 IP 地址是对应的,否则后面安装会提示 No valid IP Address returned for the host,需要自己手动更改 hostname 和 hosts 文件中的记录。

接下来下载对应的 Oracle EX 版本的软件安装包,分别为 oracle-database-preinstall-21coracle-database-xe-21c 软件包,这是 Oracle Database Express Edition 所依赖的包,安装之下命令:

# 下载软件包,必须提前安装
wget https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm
# 这里连接会超时,不是永久外链
wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm

下载速度完全取决于网络带宽和本地磁盘写入速度,下载完整执行 yum -y localinstall oracle-database-xe* 命令进行安装,安装过程中会进行事务测试时间可能需要 10 分钟左右,如果没有依赖包缺失问题都会安装成功。

[root@orcale-xe ~]# yum -y localinstall oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm         
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 0:04:28 ago on Mon Mar 20 12:25:20 2023.
Dependencies resolved.
================================================================================================
 Package                          Architecture     Version         Repository              Size
================================================================================================
Installing:
 oracle-database-xe-21c           x86_64           1.0-1           @commandline           2.2 G

Transaction Summary
================================================================================================
Install  1 Package

Total size: 2.2 G
Installed size: 5.8 G
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                        1/1 
  Running scriptlet: oracle-database-xe-21c-1.0-1.x86_64                                    1/1 
  Installing       : oracle-database-xe-21c-1.0-1.x86_64                                    1/1 
  Running scriptlet: oracle-database-xe-21c-1.0-1.x86_64                                    1/1 
[INFO] Executing post installation scripts...
[INFO] Oracle home installed successfully and ready to be configured.
To configure Oracle Database XE, optionally modify the parameters in '/etc/sysconfig/oracle-xe-21c.conf' and then execute '/etc/init.d/oracle-xe-21c configure' as root.

  Verifying        : oracle-database-xe-21c-1.0-1.x86_64                                    1/1 

Installed:
  oracle-database-xe-21c-1.0-1.x86_64                                                           

Complete!

当整个安装过程中执行完成之后,在尾部提示 Oracle XE 的配置文件路 /etc/sysconfig/oracle-xe-21c.conf ,最关键一步为设置 Oracle XE 管理员账号密码,执行 /etc/init.d/oracle-xe-18c configure 命令,也可以通过下面命令一键配置:

(echo "password"; echo "password";) | /etc/init.d/oracle-xe-21c configure >> XEsilentinstall.log 2>&1

至此初步的 Oracle XE 软件包安装和初始化完成。


配置环境

安装完成之后要配置整个 Oracle 数据库的用户环境,让在系统中随时随地生效和能被正确的使用,先切换到 oracle 用户,在用户根目录中的 ~/.bash_profile 文件中添加 Oracle 的安装目录:

# vim ~/.bash_profile
# Oracle 安装目录
export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE
# Oracle SID 是 System IDentifier 的缩写,启动之后实例名
export ORACLE_SID=XE
# Oracle 的官方 bin 目录
export PATH=$PATH:/opt/oracle/product/21c/dbhomeXE/bin/
# 刷新环境变量
source ~/.bash_profile

至此可以从 Linux CLI 执行 Oracle RDBMS 命令,执行 lsnrctl 命令检查 Oracle Listener 的状态,执行 sqlplus / as sysdba 即可连接到 Oracle 数据库 XE 实例,管理 Oracle XE 服务进程的命令如下:

# 查看数据库状态
/etc/init.d/oracle-xe-21c status
# 关闭数据库
/etc/init.d/oracle-xe-21c stop
# 开启数据库
/etc/init.d/oracle-xe-21c start

当配置设置完成之后如果需要远程网络访问必须允许数据库端口能被外部访问到,在防火墙中添加对应的端口,数据库连接为 1521 ,另外是 Oracle EM Express 端口 5500 ,Oracle EM Express 允许通过浏览器访问和管理 Oracle XE 数据库。

# 先安装 firewalld 管理工具
yum install -y firewalld
# 设置 1521 5500 端口
systemctl start firewalld
firewall-cmd --permanent --zone=public --add-port={1521,5500}/tcp
firewall-cmd --reload

如果需要远程通过 SQLDeveloper 连接到数据库,必须在服务器命令行 sqlplus 中执行 EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); 允许远程登录功能,也可以通过浏览器查看 Oracle EM Express 界面。

总的来说在裸机操作系统之上通过 rpm 软件包安装 Oracle 要解决很多依赖和环境问题,如果图方便推荐使用 Docker 安装 Oracle 数据库,现在大环境好像不用 Docker 就很 LowB 一样,没有必要使用就不要强制使用,但具体取决于你的具体需求和应用场景,如果需要更高的性能或更大的控制权,则原生安装 Oracle 数据库可能更适合。


其他资料

便宜 VPS vultr
最后修改:2023 年 07 月 05 日
如果觉得我的文章对你有用,请随意赞赏 🌹 谢谢 !