将数据库从内部迁移到Azure云
由于Oracle决定逐步淘汰单实例数据库、许多组织已将单实例Oracle数据库转换为多租户容器数据库。这样、可以使用最大可用性选项将一组称为PDB的容器数据库轻松地重新定位到云、从而最大限度地减少迁移期间的停机时间。
但是、如果您仍有一个Oracle数据库实例、则可以先将其转换为多租户容器数据库、然后再尝试PDB重新定位。
以下各节详细介绍了在这两种情况下将内部Oracle数据库迁移到Azure云的相关信息。
将单个实例非CDB转换为多租户CDB中的PDB
如果您仍有单实例Oracle数据库、则无论是否要将其迁移到云、都必须将其转换为多租户容器数据库、因为Oracle不久将停止支持单实例数据库。
以下过程会将单个实例数据库作为可插拔数据库或PDB插入容器数据库。
-
在与单实例数据库相同的主机上单独构建Shell容器数据库
ORACLE_HOME
。 -
关闭单个实例数据库并在只读模式下重新启动它。
-
运行
DBMS_PDB.DESCRIBE
用于生成数据库元数据的操作步骤。 -
关闭单实例数据库。
-
启动容器数据库。
-
运行
DBMS_PDB.CHECK_PLUG_COMPATIBILITY
用于确定非CDB是否与CDB兼容的函数。如果输出为Yes、则表示非CDB兼容、您可以继续执行下一步。
如果输出为no、则表示非CDB不兼容、您可以检查
PDB_PLUG_IN_VIOLATIONS
查看其不兼容的原因。必须先更正所有违规、然后才能继续。例如、任何版本或修补程序不匹配的问题都应通过运行升级或opatch实用程序来解决。更正违规后、运行DBMS_PDB.CHECK_PLUG_COMPATIBILITY
再次确认、以确保非CDB与CDB兼容。 -
插入单个实例非CDB。
如果主机上没有足够的空间、则 NOCOPY
选项可用于创建PDB。在这种情况下、单实例非CDB在作为PDB插入后不可用、因为PDB已使用原始数据文件。请确保在转换之前创建备份、以便在发生任何错误时可以恢复运行。 -
如果源单实例非CDB与目标CDB之间的版本不同、则在转换后开始PDB升级。对于相同版本的转换、可以跳过此步骤。
查看中的升级日志文件
/home/oracle
目录。 -
打开可插拔数据库、检查PDB插件违规、然后重新编译无效对象。
-
执行
noncdb_to_pdb.sql
更新数据词典。关闭并重新启动容器数据库。ndb已退出受限模式。
通过PDB重新定位将内部Oracle数据库迁移到Azure
使用最大可用性选项的Oracle PDB重新定位采用PDB热克隆技术、这样、在PDB复制到目标时、可以使用源PDB。切换时、用户连接会自动重定向到目标PDB。因此、无论PDB的大小如何、都可以最大限度地减少停机时间。NetApp提供了一个基于Ansible的工具包、用于自动执行迁移操作步骤。
-
在Azure公共云中使用相同版本和修补程序级别在Azure虚拟机上创建CDB。
-
从Ansible控制器克隆自动化工具包的副本。
-
阅读README文件中的说明。
-
为源和目标Oracle服务器配置Ansible主机变量文件、并为数据库服务器主机的配置文件配置名称解析。
-
在Ansible控制器上安装Ansible控制器前提条件。
-
对内部服务器执行任何迁移前任务。
admin用户是内部Oracle服务器主机上具有sudo权限的管理用户。管理员用户使用密码进行身份验证。 -
执行从内部环境到目标Azure Oracle主机的Oracle PDB重新定位。
Ansible控制器可以位于内部或Azure云中。控制器需要连接到内部Oracle服务器主机和Azure Oracle VM主机。内部Oracle服务器主机和Azure Oracle VM主机之间的Oracle数据库端口(如1521)处于打开状态。
其他Oracle数据库迁移选项
有关其他迁移选项、请参见Microsoft文档: "Oracle数据库迁移决策过程"。