Oracle 數據庫標準版轉換為企業版
前言
很多 Oracle 數據庫在初始安裝的時候選擇了標準版,而相對企業版來說就少了:RAC、ASM、DataGuard、閃回功能、分區表等等一些很實用的功能:
SELECT *
FROM v$option
WHERE parameter IN ('Oracle Data Guard',
'Active Data Guard',
'Flashback Table',
'Flashback Database',
'Online Index Build',
'Partitioning');
PARAMETER VALUE
-------------------------------------------------
Partitioning FALSE
Online Index Build FALSE
Oracle Data Guard FALSE
Flashback Table FALSE
Flashback Database FALSE
Active Data Guard FALSE
那么如何將標準版升級到企業版呢?Oracle 給我們提供了具體方案:
- How to Convert Database from Standard to Enterprise Edition (till 11gR2)? (Doc ID 117048.1)。
下面我就來測試一下升級過程!
環境準備
主機名 | IP地址 | 主機版本 | Oracle 版本 | 實例名 |
orcl | 10.211.55.100 | rhel8.6 | 19.15 SE2 | orcl |
正式轉換
Oracle 創建數據庫均使用相同的 ??SQL.BSQ?
? 腳本,因此數據庫在內部幾乎相同,轉換過程不是很復雜。
備份數據庫
首先,出于數據安全考慮,轉換前進行一次備份:
run {
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup database include current controlfile format '/backup/backdb_%d_%T_%t_%s_%p';
backup archivelog all format '/backup/arch_%d_%T_%t_%s_%p';
release channel c1;
release channel c2;
}
確保備份成功:
select input_type,
status,
to_char(start_time,
'yyyy-mm-dd hh24:mi:ss'),
to_char(end_time,
'yyyy-mm-dd hh24:mi:ss'),
input_bytes_display,
output_bytes_display,
time_taken_display,
COMPRESSION_RATIO
from v$rman_backup_job_details
order by 3 desc;
最好把參數文件、密碼文件以及監聽文件:
cp -r $ORACLE_HOME/dbs /soft/
cp -r $ORACLE_HOME/network/admin /soft/
關閉數據庫
關閉數據庫相關的所有服務:
lsnrctl stop
sqlplus / as sysdba<<EOF
shu immediate
exit
EOF
卸載 Oracle SE 軟件
這里的卸載不建議使用 ??deinstall?
??,建議使用 ??runInstaller?
?? 來卸載 ??ORACLE_HOME?
?:
$ORACLE_HOME/oui/bin/runInstaller -silent -detachHome -invPtrLoc /etc/oraInst.loc ORACLE_HOME=$ORACLE_HOME
使用以上命令 ??$ORACLE_HOME?
?? 下的所有文件和目錄都被保留,實際上沒有從 ??$ORACLE_HOME?
?? 文件系統中刪除任何內容。它只是從 ??Oracle Central Inventory?
?? 中刪除了該特定 ??$ORACLE_HOME?
? 的所有信息。
可參考 MOS 文檔:Behaviour of the Oracle De-install/Deinstall/Uninstall Utility in 11gR2 (Doc ID 1363753.1)。
安裝 Oracle EE 軟件
由于舊的 ORACLE_HOME 沒有刪除,所以建議創建新的 ORACLE_HOME 目錄:
## 創建新的 ORACLE_HOME
mkdir -p /u01/app/oracle/product/19.3.0/db1
## 修改環境變量
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/db1
## 解壓 DB 軟件至新的 ORACLE_HOME
unzip -q LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
## 解壓 OPatch 補丁包
unzip -q -o p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME
## 安裝 RU 補丁和 Oracle EE 軟件(需要調用圖形化界面)
cd $ORACLE_HOME
./runInstaller -applyRU /soft/33806152
## 執行 root.sh
/u01/app/oracle/product/19.3.0/db1/root.sh
至此,Oracle EE 安裝完成。
啟動數據庫
啟動數據庫之前,需要將原先的 ??$ORACLE_HOME/dbs?
?? 下的參數文件、密碼文件拷貝到新的 ??$ORACLE_HOME?
? 下:
## 恢復參數文件和密碼文件
cd /soft/dbs
cp orapworcl $ORACLE_HOME/dbs
cp spfileorcl.ora $ORACLE_HOME/dbs
## 恢復監聽文件
cd /soft/admin
cp listener.ora $ORACLE_HOME/network/admin
cp sqlnet.ora $ORACLE_HOME/network/admin
cp tnsnames.ora $ORACLE_HOME/network/admin
啟動監聽和數據庫:
lsnrctl start
sqlplus / as sysdba<<EOF
startup
exit
EOF
此時再次查詢版本以及可選功能:
-- 查看數據庫版本
SQL> select banner_full from v$version;
BANNER_FULL
----------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.15.0.0.0
-- 查看可選功能
SELECT *
FROM v$option
WHERE parameter IN ('Oracle Data Guard',
'Active Data Guard',
'Flashback Table',
'Flashback Database',
'Online Index Build',
'Automatic Storage Management',
'Partitioning',
'Real Application Clusters');
PARAMETER VALUE
-------------------------------------------------
Partitioning TRUE
Online Index Build TRUE
Oracle Data Guard TRUE
Flashback Table TRUE
Flashback Database TRUE
Active Data Guard TRUE
此時已經轉換成功。
執行升級腳本
運行 ??catalog.sql?
?? 和 ??catproc.sql?
? 腳本:
sqlplus / as sysdba @?/rdbms/admin/catalog.sql
sqlplus / as sysdba @?/rdbms/admin/catproc.sql
這兩個腳本的執行可能不是在所有情況下都是強制性的,但最好運行它們,因為數據字典的復雜性,我們無法確保創建所有 EE 對象。
編譯無效對象
最后,重新編譯數據庫中的所有無效對象:
sqlplus / as sysdba @?/rdbms/admin/utlrp.sql
注意事項
在整個轉換過程中,有哪些需要注意的點:
- 確保你的企業版服務器軟件的版本號(和補丁版本)與原始標準版服務器軟件的版本相同。
- Windows 系統,必須在重新安裝軟件后重新創建數據庫服務(通過 ORADIM)。