在Ubuntu上升级Oracle数据库的详细步骤
升级前必须完整备份数据库,确保数据安全。常用方法:
rman target /
进入RMAN命令行,执行BACKUP DATABASE PLUS ARCHIVELOG FORMAT '/path/to/backup/%U';
,备份数据库及归档日志。expdp
工具导出用户数据,如expdp system/password@db schemas=HR DIRECTORY=DATA_PUMP_DIR dumpfile=hr.dmp logfile=expdp_hr.log
。sudo apt update && sudo apt install alien libaio1 unixodbc unixodbc-dev build-essential
(alien
用于转换RPM包,libaio
是Oracle必需的异步I/O库)。Oracle官方针对Ubuntu提供的软件包多为DEB格式,若下载的是RPM包,需用alien
转换为DEB:
sudo alien -d --scripts oracle-database-x.x.x-x.el7.x86_64.rpm
(--scripts
保留安装脚本,避免权限问题)。转换后使用sudo dpkg -i oracle-database_x.x.x-x_amd64.deb
安装。
编辑~/.bash_profile
(用户级)或/etc/profile
(系统级),添加以下变量(以Oracle 23ai为例):
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/23ai/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
执行source ~/.bash_profile
使变量生效。
编辑/etc/sysctl.conf
,添加或修改以下参数(满足Oracle对系统资源的要求):
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
执行sudo sysctl -p
使参数生效。编辑/etc/security/limits.conf
,添加Oracle用户的资源限制:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
若使用DEB包,可通过静默方式安装,避免图形界面依赖:
sudo dpkg -i --force-all oracle-database-x.x.x-x_amd64.deb
安装完成后,执行sudo /u01/app/oraInventory/orainstRoot.sh
(配置库存目录权限)和sudo /u01/app/oracle/product/23ai/dbhome_1/root.sh
(配置系统环境)。
若使用图形界面,运行./runInstaller
(位于安装包目录),按照向导步骤安装:
/u01/app/oracle/product/23ai/dbhome_1
)→配置Oracle Inventory目录(如/u01/app/oraInventory
)→选择“创建和配置数据库”(可选,若需立即创建数据库)。root.sh
脚本。DBUA是Oracle提供的图形化升级工具,简化升级流程:
dbua
(或在终端输入/u01/app/oracle/product/23ai/dbhome_1/bin/dbua
)。orcl
)→ 点击“下一步”,DBUA会自动检查预升级条件(如兼容性、备份完整性)。catupgrd.sql
)迁移数据字典。若需通过命令行升级,执行以下步骤:
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP UPGRADE;
@?/rdbms/admin/catupgrd.sql -- 主升级脚本
@?/rdbms/admin/utlrp.sql -- 编译无效对象(如存储过程、触发器)
ALTER SYSTEM SET COMPATIBLE = '23.0.0' SCOPE=SPFILE; -- 设置为新版本兼容级别
SHUTDOWN IMMEDIATE;
STARTUP;
登录数据库,执行以下命令确认版本:
SELECT * FROM v$version; -- 查看数据库版本
SELECT * FROM product_component_version; -- 查看组件版本
输出应显示新版本(如“Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0”)。
查看升级日志文件,确认是否有错误:
$ORACLE_BASE/cfgtoollogs/dbua/log/
(DBUA升级)或$ORACLE_HOME/cfgtoollogs/catupgrd/
(手动升级)。catupgrd.sql
的执行日志,若有错误需根据提示修复。SELECT COUNT(*) FROM dual;
,确认数据库响应正常。若升级成功,可删除旧版本Oracle软件以释放空间:
sudo rm -rf /u01/app/oracle/product/19c # 替换为旧版本目录
确保所有连接数据库的客户端(如SQL Developer、JDBC驱动)升级到与新版本兼容的版本,避免连接问题。
升级后监控数据库性能(如CPU、内存、磁盘IO),调整SGA/PGA参数(如SGA_TARGET
、PGA_AGGREGATE_TARGET
)以优化性能。
注意事项: