在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
)以優化性能。
注意事項: