阅读量:42
Ubuntu环境下Oracle数据库升级升级指南
一、升级前准备
1. 备份数据库
升级前必须对数据库进行全量备份,确保数据安全。推荐使用RMAN工具,命令如下:
rman target / run {
allocate channel c1 type disk;
backup database plus archivelog; # 备份数据库及归档日志
release channel c1;
}
同时备份关键配置文件(如/etc/oratab、$ORACLE_HOME/network/admin/tnsnames.ora、$ORACLE_HOME/dbs/init)。
2. 检查系统要求
- 内核参数调整:修改
/etc/sysctl.conf,确保以下参数满足新版本Oracle要求(以12c及以上为例):
执行fs.file-max = 6815744 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500sysctl -p使参数生效。 - 用户资源限制:编辑
/etc/security/limits.conf,添加Oracle用户(如oracle)的限制:oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 - 关闭防火墙与SELinux:临时禁用防火墙和SELinux(生产环境需谨慎评估风险):
sudo ufw disable sudo setenforce 0
3. 下载新版本软件
从Oracle官方网站下载适用于Ubuntu的新版本Oracle Database软件包(通常为RPM或DEB格式)。若下载的是RPM包,需转换为DEB格式(Ubuntu原生支持DEB):
sudo alien -dv oracle-package.rpm # -d表示生成DEB包,-v显示详细过程
4. 安装依赖项
安装Oracle运行所需的依赖库,避免安装过程中报错:
sudo apt update
sudo apt install alien libaio1 unixodbc libc6:i386 libstdc++6:i386 libaio-dev -y
5. 创建Oracle目录并配置环境变量
- 创建Oracle软件和数据库目录(如
/u01/app/oracle/product/19c/dbhome_1),并设置权限:sudo mkdir -p /u01/app/oracle/product/19c/dbhome_1 sudo chown -R oracle:oinstall /u01/app/oracle sudo chmod -R 775 /u01/app/oracle - 配置Oracle用户环境变量(编辑
~/.bash_profile):执行export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1 export ORACLE_SID=orcl # 替换为你的数据库SID export PATH=$ORACLE_HOME/bin:$PATH export NLS_LANG='AMERICAN_AMERICA.UTF8'source ~/.bash_profile使配置生效。
二、执行升级操作
1. 停止数据库服务
以SYSDBA身份登录,关闭数据库(确保无活动会话):
sqlplus / as sysdba
SQL> shutdown immediate;
SQL> exit;
2. 安装新版本Oracle软件
- 静默安装(推荐):使用
dpkg命令静默安装转换后的DEB包,避免图形界面依赖:sudo dpkg -i oracle-19c-database-home_19.0.0.0.0-1_amd64.deb - 图形界面安装:运行安装程序(如
./runInstaller),按照向导完成软件安装(需手动指定安装目录和环境变量)。
3. 执行数据库升级
- 使用DBUA(Database Upgrade Assistant,推荐):
DBUA是Oracle提供的图形化升级工具,可自动处理升级脚本和兼容性检查。启动命令:
按照向导选择“升级现有数据库”,指定数据库SID和数据文件位置,点击“开始升级”即可。dbua - 手动升级:
若选择手动升级,需登录数据库并运行升级脚本(以11g升级到19c为例):sqlplus / as sysdba SQL> @?/rdbms/admin/catalog.sql # 升级数据字典 SQL> @?/rdbms/admin/catproc.sql # 升级PL/SQL包 SQL> @?/rdbms/admin/utlrp.sql # 重新编译无效对象 SQL> shutdown immediate; SQL> startup; # 启动数据库
4. 验证升级结果
重启数据库后,检查版本信息确认升级成功:
sqlplus / as sysdba
SQL> select * from v$version;
SQL> exit;
输出应显示新版本的Oracle Database版本号(如“Oracle Database 19c Enterprise Edition Release 19.0.0.0.0”)。
三、升级后操作
1. 数据迁移(跨版本升级需执行)
若升级过程中未自动迁移数据,可使用expdp(导出)和impdp(导入)工具迁移数据:
# 导出原数据库数据
expdp username/password@原数据库 schemas=模式名 dumpfile=expdp.dmp
# 导入到新数据库
impdp username/password@新数据库 schemas=模式名 dumpfile=expdp.dmp
2. 更新应用程序连接
修改应用程序配置文件中的数据库连接字符串,确保指向新版本的数据库(如修改JDBC URL、Oracle客户端版本)。
3. 清理与测试
- 删除旧版本残留文件(如旧版本的
$ORACLE_HOME目录,需确认备份无误后操作)。 - 测试应用程序功能(如登录、查询、事务处理),确保升级后业务正常运行。
4. 监控系统性能
升级后监控系统资源使用情况(如CPU、内存、磁盘I/O),调整SGA_TARGET、PGA_AGGREGATE_TARGET等参数优化性能。
四、注意事项
- 测试环境验证:务必在测试环境中完成升级流程,验证兼容性和业务逻辑,避免生产环境故障。
- 依赖冲突处理:若安装过程中出现依赖冲突,需手动卸载冲突的包(如
sudo apt remove 冲突包名)或调整依赖关系。 - 官方文档参考:不同版本的Oracle Database升级步骤可能存在差异,需参考Oracle官方升级指南(如《Oracle Database升级脚本》)获取版本特异性要求。