Ubuntu環境下Oracle數據庫升級流程
升級前必須對現有數據庫進行完整備份,確保數據可恢復。常用工具及命令:
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
preupgrade.jar,用于預檢查兼容性問題)。Ubuntu需安裝Oracle運行所需的庫文件:
sudo apt update
sudo apt install alien libaio1 unixodbc unixodbc-dev libmotif-common libmotif4
編輯/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)添加限制:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
Oracle官網下載的Linux版本多為RPM格式,需轉換為DEB格式(Ubuntu原生支持):
sudo alien -d oracle-database-19c-x86_64.rpm
使用dpkg安裝轉換后的DEB包:
sudo dpkg --install oracle-database-19c-x86_64.deb
編輯oracle用戶的~/.bash_profile,添加以下內容(根據實際路徑調整):
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/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
dbua
SYSDBA身份登錄SQL*Plus:sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
STARTUP UPGRADE;
@?/rdbms/admin/catupgrd.sql
@?/rdbms/admin/utlrp.sql -- 編譯無效對象
SHUTDOWN IMMEDIATE;
STARTUP;
SELECT * FROM v$version;
輸出應顯示目標版本(如“Oracle Database 19c Enterprise Edition Release 19.0.0.0.0”)。
$ORACLE_HOME目錄(確認備份后);/etc/oratab文件,移除舊版本條目。preupgrade.jar輸出的日志修復問題(如缺失參數、權限不足);exec dbms_stats.gather_schema_stats('SCHEMA_NAME');),優化SQL執行計劃。提示:升級前務必在測試環境驗證流程,避免生產環境故障。建議參考Oracle官方升級指南(如《Oracle Database升級手冊》)獲取版本特異性要求。