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 仓库密钥错误或者一些莫名其妙的错误。
# 查看系统当其系统发行版本
cat /etc/redhat-release
# 检查是否注册
subscription-manager identity
# 注册系统
subscription-manager register
# 检查订阅列表
subscription-manager list --available
# 检查订阅状态
subscription-manager status
没有特殊情况一般都会显示注册成功。
安装 Oracle XE
# 检查依赖是否安装
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
No valid IP Address returned for the host
,需要自己手动更改 hostname 和 hosts
文件中的记录。
接下来下载对应的 Oracle EX 版本的软件安装包,分别为 oracle-database-preinstall-21c
和 oracle-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!
/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
用户,在用户根目录中的 ~/.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
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
允许远程登录功能,也可以通过浏览器查看 Oracle EM Express 界面。
总的来说在裸机操作系统之上通过 rpm 软件包安装 Oracle 要解决很多依赖和环境问题,如果图方便推荐使用 Docker 安装 Oracle 数据库,现在大环境好像不用 Docker 就很 LowB 一样,没有必要使用就不要强制使用,但具体取决于你的具体需求和应用场景,如果需要更高的性能或更大的控制权,则原生安装 Oracle 数据库可能更适合。