news 2026/6/4 12:04:35

告别RPM包!在Ubuntu 22.04上把Oracle 11g XE的安装包‘转正’成DEB的保姆级教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别RPM包!在Ubuntu 22.04上把Oracle 11g XE的安装包‘转正’成DEB的保姆级教程

在Ubuntu 22.04上将Oracle 11g XE从RPM转换为DEB的完整指南

1. 理解包格式转换的必要性

对于习惯使用Debian系Linux发行版的开发者来说,遇到只有RPM格式的软件包总是令人头疼。Oracle 11g XE就是一个典型案例——官方仅提供RPM包,而我们需要在Ubuntu上安装。这时候,alien工具就成为了解决问题的关键。

包格式转换不仅仅是简单的文件格式变化,它涉及到软件包内部结构的重组和依赖关系的重新映射。RPM和DEB虽然都是Linux下的软件包格式,但它们在以下方面存在显著差异:

  • 打包结构:RPM使用cpio归档,而DEB使用ar归档
  • 脚本位置:pre/post安装脚本的存放位置不同
  • 依赖声明:依赖项的命名规范存在差异
  • 配置文件处理:配置文件标记和管理方式不同

理解这些差异有助于我们在转换过程中预见和解决问题。alien工具的作用就是自动处理这些差异,尽可能生成一个能在目标系统上正常工作的DEB包。

2. 准备工作与环境配置

2.1 系统要求检查

在开始之前,请确保您的Ubuntu 22.04系统满足以下要求:

  • 至少2GB内存(推荐4GB)
  • 10GB可用磁盘空间
  • 64位系统架构
  • 已安装sudo权限的账户

可以通过以下命令检查系统信息:

# 检查系统版本 lsb_release -a # 检查内存 free -h # 检查磁盘空间 df -h # 检查架构 uname -m

2.2 安装必要工具

转换过程需要一些基础工具,执行以下命令安装:

sudo apt update sudo apt install -y alien libaio1 unixodbc unzip

这些工具的作用分别是:

  • alien:RPM到DEB的转换工具
  • libaio1:异步IO库,Oracle数据库必需
  • unixodbc:ODBC支持
  • unzip:解压工具

3. RPM到DEB的转换过程

3.1 获取并解压Oracle 11g XE RPM包

假设您已经获得了Oracle 11g XE的RPM包(通常名为oracle-xe-11.2.0-1.0.x86_64.rpm.zip),首先需要解压:

unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip -d oracle-xe

解压后,RPM文件通常位于oracle-xe/Disk1/目录下。

3.2 使用alien进行转换

进入包含RPM文件的目录并执行转换:

cd oracle-xe/Disk1/ sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm

关键参数说明:

  • --scripts:保留包中的安装/卸载脚本
  • -d:转换为DEB格式(而不是默认的生成所有格式)

转换完成后,您会得到一个.deb文件,通常命名为oracle-xe_11.2.0-2_amd64.deb

注意:转换过程可能会显示一些警告信息,特别是关于脚本语法差异的警告。大多数情况下这些警告可以忽略,但如果出现错误(error)则需要特别注意。

3.3 处理转换后的依赖问题

由于Ubuntu和RHEL/CentOS的库命名习惯不同,转换后的包可能会有依赖问题。常见的解决方法:

  1. 使用dpkg -I检查生成的DEB包的依赖项:
dpkg -I oracle-xe_11.2.0-2_amd64.deb
  1. 如果报告缺少依赖,可以尝试以下方法:
    • 在Ubuntu中找到等效的包
    • 使用equivs创建虚拟包
    • 使用--nodeps强制安装(不推荐)

4. 安装前的系统配置

4.1 内核参数调整

Oracle数据库对Linux内核参数有特定要求,创建配置文件:

sudo tee /etc/sysctl.d/60-oracle.conf <<EOF # Oracle 11g XE内核参数 fs.file-max=6815744 net.ipv4.ip_local_port_range=9000 65000 kernel.sem=250 32000 100 128 kernel.shmmax=536870912 EOF

应用这些参数:

sudo service procps start sudo sysctl -p /etc/sysctl.d/60-oracle.conf

4.2 共享内存设置

Oracle使用/dev/shm作为共享内存区域,需要确保正确配置:

sudo tee /etc/rc2.d/S01shm_load <<'EOF' #!/bin/sh case "$1" in start) mkdir /var/lock/subsys 2>/dev/null touch /var/lock/subsys/listener rm /dev/shm 2>/dev/null mkdir /dev/shm 2>/dev/null mount -t tmpfs shmfs -o size=2048m /dev/shm ;; *) echo error exit 1 ;; esac EOF sudo chmod 755 /etc/rc2.d/S01shm_load

4.3 解决chkconfig依赖

Oracle安装脚本使用RHEL的chkconfig工具,在Ubuntu上需要模拟:

sudo tee /sbin/chkconfig <<'EOF' #!/bin/bash # Oracle 11gR2 XE installer chkconfig hack for Ubuntu file=/etc/init.d/oracle-xe if [[ ! `tail -n1 $file | grep INIT` ]]; then echo >> $file echo '### BEGIN INIT INFO' >> $file echo '# Provides: OracleXE' >> $file echo '# Required-Start: $remote_fs $syslog' >> $file echo '# Required-Stop: $remote_fs $syslog' >> $file echo '# Default-Start: 2 3 4 5' >> $file echo '# Default-Stop: 0 1 6' >> $file echo '# Short-Description: Oracle 11g Express Edition' >> $file echo '### END INIT INFO' >> $file fi update-rc.d oracle-xe defaults 80 01 EOF sudo chmod 755 /sbin/chkconfig

5. 安装与配置Oracle 11g XE

5.1 安装转换后的DEB包

使用dpkg安装转换后的包:

sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb

如果遇到依赖问题,可以先运行:

sudo apt --fix-broken install

5.2 数据库初始配置

运行配置脚本:

sudo /etc/init.d/oracle-xe configure

配置过程中会询问以下信息:

  1. HTTP端口(默认8080)
  2. 数据库监听端口(默认1521)
  3. SYS和SYSTEM账户密码
  4. 是否随系统启动(建议选择是)

5.3 环境变量设置

为了便于使用Oracle工具,需要设置环境变量。编辑/etc/profile文件,在末尾添加:

# Oracle Settings TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe; export ORACLE_HOME ORACLE_SID=XE; export ORACLE_SID ORACLE_TERM=xterm; export ORACLE_TERM PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH TNS_ADMIN=$ORACLE_HOME/network/admin LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi

使配置立即生效:

source /etc/profile

5.4 启动与验证服务

启动Oracle服务:

sudo systemctl start oracle-xe

检查服务状态:

sudo systemctl status oracle-xe

正常运行的输出应显示"active (running)"状态。

6. 数据库连接与管理

6.1 使用SQL*Plus连接

使用system账户连接数据库:

sqlplus system/您设置的密码@XE

或者以sysdba身份连接:

sqlplus sys/您设置的密码@XE as sysdba

6.2 基本数据库操作

连接成功后,可以执行SQL语句。例如检查版本:

SELECT * FROM v$version;

创建测试用户:

CREATE USER testuser IDENTIFIED BY testpass; GRANT CONNECT, RESOURCE TO testuser;

6.3 使用Oracle Application Express

Oracle 11g XE包含一个基于Web的管理界面,可以通过以下URL访问:

http://localhost:8080/apex

使用您在安装过程中设置的管理员凭据登录。

7. 常见问题与解决方案

7.1 安装过程中的常见错误

错误现象可能原因解决方案
依赖不满足Ubuntu中包名不同使用apt search查找等效包
内存不足/dev/shm太小确保按照前文配置了足够的共享内存
监听器启动失败端口冲突检查1521端口是否被占用

7.2 性能调优建议

对于资源有限的开发环境,可以考虑以下优化:

  1. 减少SGA大小:
ALTER SYSTEM SET sga_max_size=512M SCOPE=spfile; ALTER SYSTEM SET sga_target=512M SCOPE=spfile;
  1. 调整PGA大小:
ALTER SYSTEM SET pga_aggregate_target=256M SCOPE=spfile;
  1. 重启数据库使更改生效:
SHUTDOWN IMMEDIATE; STARTUP;

7.3 日常维护命令

  • 启动数据库:
sudo systemctl start oracle-xe
  • 停止数据库:
sudo systemctl stop oracle-xe
  • 查看监听器状态:
lsnrctl status
  • 备份数据库(使用数据泵):
expdp system/密码@XE schemas=SCHEMA_NAME directory=DATA_PUMP_DIR dumpfile=backup.dmp logfile=backup.log

8. 扩展应用与进阶技巧

8.1 远程连接配置

默认情况下,Oracle 11g XE只允许本地连接。要启用远程访问:

  1. 编辑$ORACLE_HOME/network/admin/listener.ora,确保包含:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) ) )
  1. 编辑$ORACLE_HOME/network/admin/tnsnames.ora,确保包含:
XE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 主机名)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) )
  1. 重启监听器:
lsnrctl stop lsnrctl start

8.2 与其他工具的集成

  1. 与Python集成:使用cx_Oracle库
import cx_Oracle conn = cx_Oracle.connect('system/密码@localhost/XE') cursor = conn.cursor() cursor.execute("SELECT * FROM v$version") for row in cursor: print(row) conn.close()
  1. 与PHP集成:使用OCI8扩展
<?php $conn = oci_connect('system', '密码', 'localhost/XE'); $stid = oci_parse($conn, 'SELECT * FROM v$version'); oci_execute($stid); while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { var_dump($row); } oci_close($conn); ?>

8.3 监控与日志分析

重要的日志文件位置:

  • 警报日志:$ORACLE_BASE/diag/rdbms/xe/XE/trace/alert_XE.log
  • 监听器日志:$ORACLE_HOME/network/log/listener.log
  • 审计日志:$ORACLE_BASE/admin/XE/adump/

可以使用以下命令监控数据库性能:

-- 查看当前会话 SELECT sid, serial#, username, status FROM v$session; -- 查看资源使用情况 SELECT * FROM v$sysmetric WHERE metric_name IN ('CPU Usage Per Sec', 'Database CPU Time Ratio');

9. 迁移与备份策略

9.1 数据库导出与导入

  1. 使用数据泵导出整个数据库:
expdp system/密码@XE full=y directory=DATA_PUMP_DIR dumpfile=full.dmp logfile=full.log
  1. 导入到另一台服务器:
impdp system/密码@XE full=y directory=DATA_PUMP_DIR dumpfile=full.dmp logfile=imp.log

9.2 表空间管理

创建新的表空间:

CREATE TABLESPACE test_ts DATAFILE '/u01/app/oracle/oradata/XE/test_ts.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

调整现有表空间大小:

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/XE/users01.dbf' RESIZE 200M;

9.3 用户权限管理

创建角色并分配权限:

CREATE ROLE app_developer; GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO app_developer; CREATE USER dev_user IDENTIFIED BY devpass; GRANT app_developer TO dev_user; ALTER USER dev_user QUOTA UNLIMITED ON users;

10. 安全加固建议

10.1 基本安全措施

  1. 更改默认密码:
ALTER USER system IDENTIFIED BY 新密码; ALTER USER sys IDENTIFIED BY 新密码;
  1. 启用审计:
AUDIT CREATE SESSION BY ACCESS; AUDIT CREATE ANY TABLE BY ACCESS;
  1. 限制网络访问:
BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL( acl => 'restrict.xml', description => 'Restrict network access', principal => 'PUBLIC', is_grant => FALSE, privilege => 'connect' ); DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( acl => 'restrict.xml', principal => 'SCHEMA_NAME', is_grant => TRUE, privilege => 'connect' ); DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL( acl => 'restrict.xml', host => '*', lower_port => 1, upper_port => 9999 ); END; /

10.2 定期维护任务

  1. 收集统计信息:
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCHEMA_NAME');
  1. 检查无效对象:
SELECT owner, object_name, object_type FROM dba_objects WHERE status = 'INVALID';
  1. 清理旧数据:
PURGE RECYCLEBIN;

10.3 备份策略实施

建议的备份方案:

  1. 每日增量备份:
expdp system/密码@XE schemas=SCHEMA_NAME directory=DATA_PUMP_DIR dumpfile=incr_%U.dmp logfile=incr.log incremental=yes
  1. 每周完整备份:
expdp system/密码@XE full=y directory=DATA_PUMP_DIR dumpfile=full_%U.dmp logfile=full.log
  1. 备份控制文件和参数文件:
ALTER DATABASE BACKUP CONTROLFILE TO TRACE; CREATE PFILE='/path/to/initXE.ora' FROM SPFILE;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 12:03:52

如何快速掌握网页媒体提取:猫抓插件的完整资源嗅探指南

如何快速掌握网页媒体提取&#xff1a;猫抓插件的完整资源嗅探指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法下载网页视频而烦恼吗…

作者头像 李华
网站建设 2026/6/4 11:59:28

高效解锁网易云音乐NCM加密文件:Windows图形界面完整解决方案

高效解锁网易云音乐NCM加密文件&#xff1a;Windows图形界面完整解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经在网易云音乐下载了心爱的…

作者头像 李华
网站建设 2026/6/4 11:57:35

基于TDA2030桥接模式的35W音频功放设计与制作全解析

1. 项目概述与核心思路 手头一台老旧的飞利浦5.1家庭影院功放板坏了&#xff0c;拆开一看&#xff0c;负责驱动低音炮的TDA2030功放芯片已经烧毁&#xff0c;连带周边几个元件也遭了殃。与其费劲去找一块可能已经停产的替换板&#xff0c;不如自己动手&#xff0c;用更经典的方…

作者头像 李华