Ubuntu环境下Oracle数据库升级详细步骤
升级前必须对现有数据库进行完整备份,确保数据可恢复。推荐使用Oracle RMAN工具(推荐方式)或expdp/impdp工具:
rman target /
RUN {
ALLOCATE CHANNEL c1 TYPE DISK;
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL c1;
}
expdp username/password@old_sid schemas=schema_name directory=DATA_PUMP_DIR dumpfile=schema_name.dmp logfile=expdp_schema_name.log
/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
sudo apt update
sudo apt install alien libaio1 unixodbc
sudo alien -dv oracle-package.rpm
sudo dpkg --install oracle-package.deb
编辑~/.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
使用SQL*Plus以SYSDBA
身份登录,执行立即关闭:
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> EXIT;
sqlplus / as sysdba
SQL> STARTUP UPGRADE;
dbua
按照向导步骤操作,DBUA会自动处理预升级检查、脚本执行和后升级配置;@?/rdbms/admin/catalog.sql # 创建数据字典视图
@?/rdbms/admin/catproc.sql # 创建PL/SQL包
@?/rdbms/admin/utlrp.sql # 编译无效对象
退出SQL*Plus并重启数据库:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
验证版本信息:
SELECT * FROM v$version;
SELECT * FROM dba_registry;
SELECT COUNT(*) FROM dba_objects WHERE status = 'INVALID';
SELECT SYSDATE FROM dual;
);修改应用程序配置文件中的数据库连接字符串,指向新版本数据库的SID
或Service Name
(如从old_db
改为new_db
)。