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)。
 
友情链接
鄂ICP备19019357号-22