温馨提示×

Ubuntu Oracle数据库升级步骤

小樊
62
2025-09-23 11:10:28
栏目: 云计算

Ubuntu环境下Oracle数据库升级详细步骤

一、升级前准备

1. 备份数据库

升级前必须对现有数据库进行完整备份,确保数据可恢复。推荐使用Oracle RMAN工具(推荐方式)或expdp/impdp工具:

  • RMAN全备份(含归档日志)
    rman target /
    RUN {
      ALLOCATE CHANNEL c1 TYPE DISK;
      BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
      RELEASE CHANNEL c1;
    }
    
  • expdp导出(可选补充):针对特定Schema或表进行逻辑备份:
    expdp username/password@old_sid schemas=schema_name directory=DATA_PUMP_DIR dumpfile=schema_name.dmp logfile=expdp_schema_name.log
    

2. 检查系统兼容性

  • 确认Ubuntu系统满足新版本Oracle的要求(如内核版本、文件系统类型、内存大小等);
  • 调整内核参数(编辑/etc/sysctl.conf):
    fs.file-max = 6815744
    kernel.sem = 250 32000 100 128
    net.ipv4.ip_local_port_range = 9000 65500
    
    执行sysctl -p使参数生效;
  • 修改用户资源限制(编辑/etc/security/limits.conf):
    oracle   soft   nproc    2047
    oracle   hard   nproc    16384
    oracle   soft   nofile   1024
    oracle   hard   nofile   65536
    

3. 下载并安装新版本Oracle软件

  • 从Oracle官方网站下载对应Ubuntu架构(如x86_64)的新版本Oracle Database软件(如12c、19c、21c的DEB包);
  • 安装必要依赖:
    sudo apt update
    sudo apt install alien libaio1 unixodbc
    
  • 转换RPM包为DEB格式(若下载的是RPM包):
    sudo alien -dv oracle-package.rpm
    
  • 安装Oracle软件:
    sudo dpkg --install oracle-package.deb
    

4. 配置环境变量

编辑~/.bash_profile(或~/.bashrc),添加以下变量(根据实际路径调整):

export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1  # 新版本Oracle Home
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

使配置生效:

source ~/.bash_profile

二、执行升级

1. 关闭旧版本数据库

使用SQL*Plus以SYSDBA身份登录,执行立即关闭:

sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> EXIT;

2. 启动数据库到升级模式

sqlplus / as sysdba
SQL> STARTUP UPGRADE;

3. 运行升级脚本

  • 自动升级(推荐):使用Database Upgrade Assistant(DBUA)图形化工具:
    dbua
    
    按照向导步骤操作,DBUA会自动处理预升级检查、脚本执行和后升级配置;
  • 手动升级:若选择命令行方式,执行以下脚本:
    @?/rdbms/admin/catalog.sql      # 创建数据字典视图
    @?/rdbms/admin/catproc.sql      # 创建PL/SQL包
    @?/rdbms/admin/utlrp.sql        # 编译无效对象
    

4. 完成升级

退出SQL*Plus并重启数据库:

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

验证版本信息:

SELECT * FROM v$version;

三、升级后检查

1. 验证数据库状态

  • 检查数据字典一致性:
    SELECT * FROM dba_registry;
    
  • 确认无效对象是否已编译(无记录则正常):
    SELECT COUNT(*) FROM dba_objects WHERE status = 'INVALID';
    

2. 测试功能与性能

  • 执行基本查询(如SELECT SYSDATE FROM dual;);
  • 运行应用程序关键业务流程,验证数据完整性和功能兼容性。

3. 更新应用程序连接

修改应用程序配置文件中的数据库连接字符串,指向新版本数据库的SIDService Name(如从old_db改为new_db)。

四、注意事项

  • 测试环境验证:务必先在测试环境完成升级流程,确认无问题后再应用于生产环境;
  • 回滚计划:保留旧版本Oracle软件和备份数据,以便升级失败时快速回退;
  • 文档查阅:参考Oracle官方升级指南(如《Oracle Database升级脚本》),确保符合版本特定要求;
  • 监控资源:升级过程中监控系统资源(CPU、内存、磁盘空间),避免因资源不足导致失败。

0