本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从 Oracle 数据库迁移到 Amazon f RDS or Oracle AWS Schema Conversion Tool
将 Oracle 架构和代码迁移到 Amazon RDS for Oracle 时需要考虑的一些事项:
-
AWS SCT 可以将目录对象添加到对象树中。目录对象是逻辑结构,每个结构代表服务器文件系统上的物理目录。您可以将目录对象与 DBMS _ LOB、_、UTL DBMS FILE _ FILE TRANSFER、DATAPUMP实用程序等包一起使用。
-
AWS SCT 支持将 Oracle 表空间转换为 Ama RDS zon for Oracle 数据库实例。Oracle 将数据存储在表空间中 (按逻辑) 和与相应表空间关联的数据文件中 (以物理方式)。在 Oracle 中,可以创建包含数据文件名的表空间。Amazon 仅RDS支持数据文件、日志文件和控制文件的 Oracle 托管文件 (OMF)。 AWS SCT 在转换过程中创建所需的数据文件。
-
AWS SCT 可以转换服务器级别的角色和权限。Oracle 数据库引擎采用了基于角色的安全机制。角色是可授予用户或从用户撤消的特权的集合。Amazon RDS 中名DBA为的预定义角色通常允许 Oracle 数据库引擎上的所有管理权限。以下权限不适用于使用 Oracle 引擎的 Amazon RDS 数据库实例上的DBA角色:
-
更改数据库
-
更改系统
-
创建任何目录
-
授予任何权限
-
授予任何角色
-
创建外部任务
您可以向 Amazon RDS for Oracle 用户角色授予所有其他权限,包括高级筛选和列权限。
-
-
AWS SCT 支持将 Oracle 任务转换为可以在 Amazon for Oracle 上运行RDS的任务。转换存在一些限制,其中包括:
-
不支持可执行文件作业。
-
不支持使用该ANYDATA数据类型作为参数的调度作业。
-
-
Oracle Real Application Clusters (RAC) One Node 是 Oracle Database 11g 版本 2 中引入的 Oracle 数据库企业版的一个选项。Amazon RDS for Oracle 不支持该RAC功能。要获得高可用性,请使用 Amazon RDS 多可用区。
在多可用区部署中,Amazon RDS 会自动在不同的可用区域预配置和维护同步备用副本。主数据库实例可以跨可用区同步复制到备用副本。此功能提供数据冗余,消除 I/O 冻结,并在系统备份期间将延迟峰值降至最小。
-
Oracle Spatial 提供了一种SQL架构和函数,可简化 Oracle 数据库中空间数据集合的存储、检索、更新和查询。Oracle Locator 提供的功能通常是支持基于互联网和无线服务的应用程序以及基于合作伙伴的GIS解决方案所必需的。Oracle Locator 是 Oracle Spatial 的有限子集。
要使用 Oracle Spatial 和 Oracle Locator 功能,请将LOCATOR选项或SPATIAL选项(互斥的)添加到数据库实例的选项组中。
在 Amazon RDS for Oracle 数据库实例上使用 Oracle Spatial 和 Oracle Locator 有一些先决条件:
-
该实例应使用 Oracle 企业版 12.1.0.2.v6 版或更高版本,或者 11.2.0.4.v10 版或更高版本。
-
该实例应位于虚拟私有云中 (VPC)。
-
该实例应该是可支持 Oracle 功能的数据库实例类。例如,db.m1.small、db.t1.micro、db.t2.micro 或 db.t2.small 数据库实例类不支持 Oracle Spatial。有关更多信息,请参阅 Oracle 的数据库实例类支持。
-
实例必须已启用“Auto Minor Version Upgrade (自动次要版本升级)”选项。PSU如果存在分数超过 9 CVSS 分的安全漏洞或其他已宣布的安全漏洞,Amazon 会将您的数据库实例RDS更新到最新的 Oracle。有关更多信息,请参阅
-
如果您的数据库实例是 11.2.0.4.v10 或更高版本,则必须安装该选项。XMLDB有关更多信息,请参阅
-
您应该拥有 Oracle 中的 Oracle Spatial 许可证。有关更多信息,请参阅 Oracle 文档中的 Oracle Spatial 和图表
。
-
-
Data Guard 随 Oracle Database Enterprise Edition 提供。要获得高可用性,请使用 Amazon RDS 多可用区功能。
在多可用区部署中,Amazon RDS 会自动在不同的可用区域预配置和维护同步备用副本。主数据库实例可以跨可用区同步复制到备用副本。此功能提供数据冗余,消除 I/O 冻结,并在系统备份期间将延迟峰值降至最小。
-
AWS SCT 支持在迁移到 Amazon RDS for Oracle 时转换 Oracle DBMS _ SCHEDULER 对象。 AWS SCT 评估报告指明是否可以转换计划对象。有关在 Amazon 中使用计划对象的更多信息RDS,请参阅亚马逊RDS文档。
-
对于 Oracle 到 Amazon RDS 进行的 Oracle 转换,支持数据库链接。数据库链接是一个数据库中的架构对象,允许您访问另一个数据库上的对象。另一个数据库不需要是 Oracle 数据库。但是,要访问非 Oracle 数据库,您必须使用 Oracle 异构服务。
创建数据库链接后,就可以在SQL语句中使用该链接来引用另一个数据库中的表、视图和 PL/ SQL 对象。要使用数据库链接,请在表、视图或 PL/ SQL 对象名称后面追加
@dblink
。您可以使用语句查询其他数据库中的表或视图。SELECT有关使用 Oracle 数据库链接的更多信息,请参阅 Oracle 文档。 有关使用亚马逊数据库链接的更多信息RDS,请参阅亚马逊RDS文档。
-
AWS SCT 评估报告提供了转化的服务器指标。这些有关 Oracle 实例的指标包括:
-
目标数据库实例的计算和内存容量。
-
不支持的 Oracle 功能,例如 Amazon RDS 不支持的真实应用程序集群。
-
磁盘读写负载
-
平均总磁盘吞吐量
-
服务器信息,如服务器名称、操作系统、主机名和字符集。
-
作为目标RDS的 Oracle 的权限
要迁移到 Amazon RDS for Oracle,请创建特权数据库用户。您可以使用以下代码示例:
CREATE USER
user_name
IDENTIFIED BYyour_password
; -- System privileges GRANT DROP ANY CUBE BUILD PROCESS TOuser_name
; GRANT ALTER ANY CUBE TOuser_name
; GRANT CREATE ANY CUBE DIMENSION TOuser_name
; GRANT CREATE ANY ASSEMBLY TOuser_name
; GRANT ALTER ANY RULE TOuser_name
; GRANT SELECT ANY DICTIONARY TOuser_name
; GRANT ALTER ANY DIMENSION TOuser_name
; GRANT CREATE ANY DIMENSION TOuser_name
; GRANT ALTER ANY TYPE TOuser_name
; GRANT DROP ANY TRIGGER TOuser_name
; GRANT CREATE ANY VIEW TOuser_name
; GRANT ALTER ANY CUBE BUILD PROCESS TOuser_name
; GRANT CREATE ANY CREDENTIAL TOuser_name
; GRANT DROP ANY CUBE DIMENSION TOuser_name
; GRANT DROP ANY ASSEMBLY TOuser_name
; GRANT DROP ANY PROCEDURE TOuser_name
; GRANT ALTER ANY PROCEDURE TOuser_name
; GRANT ALTER ANY SQL TRANSLATION PROFILE TOuser_name
; GRANT DROP ANY MEASURE FOLDER TOuser_name
; GRANT CREATE ANY MEASURE FOLDER TOuser_name
; GRANT DROP ANY CUBE TOuser_name
; GRANT DROP ANY MINING MODEL TOuser_name
; GRANT CREATE ANY MINING MODEL TOuser_name
; GRANT DROP ANY EDITION TOuser_name
; GRANT CREATE ANY EVALUATION CONTEXT TOuser_name
; GRANT DROP ANY DIMENSION TOuser_name
; GRANT ALTER ANY INDEXTYPE TOuser_name
; GRANT DROP ANY TYPE TOuser_name
; GRANT CREATE ANY PROCEDURE TOuser_name
; GRANT CREATE ANY SQL TRANSLATION PROFILE TOuser_name
; GRANT CREATE ANY CUBE TOuser_name
; GRANT COMMENT ANY MINING MODEL TOuser_name
; GRANT ALTER ANY MINING MODEL TOuser_name
; GRANT DROP ANY SQL PROFILE TOuser_name
; GRANT CREATE ANY JOB TOuser_name
; GRANT DROP ANY EVALUATION CONTEXT TOuser_name
; GRANT ALTER ANY EVALUATION CONTEXT TOuser_name
; GRANT CREATE ANY INDEXTYPE TOuser_name
; GRANT CREATE ANY OPERATOR TOuser_name
; GRANT CREATE ANY TRIGGER TOuser_name
; GRANT DROP ANY ROLE TOuser_name
; GRANT DROP ANY SEQUENCE TOuser_name
; GRANT DROP ANY CLUSTER TOuser_name
; GRANT DROP ANY SQL TRANSLATION PROFILE TOuser_name
; GRANT ALTER ANY ASSEMBLY TOuser_name
; GRANT CREATE ANY RULE SET TOuser_name
; GRANT ALTER ANY OUTLINE TOuser_name
; GRANT UNDER ANY TYPE TOuser_name
; GRANT CREATE ANY TYPE TOuser_name
; GRANT DROP ANY MATERIALIZED VIEW TOuser_name
; GRANT ALTER ANY ROLE TOuser_name
; GRANT DROP ANY VIEW TOuser_name
; GRANT ALTER ANY INDEX TOuser_name
; GRANT COMMENT ANY TABLE TOuser_name
; GRANT CREATE ANY TABLE TOuser_name
; GRANT CREATE USER TOuser_name
; GRANT DROP ANY RULE SET TOuser_name
; GRANT CREATE ANY CONTEXT TOuser_name
; GRANT DROP ANY INDEXTYPE TOuser_name
; GRANT ALTER ANY OPERATOR TOuser_name
; GRANT CREATE ANY MATERIALIZED VIEW TOuser_name
; GRANT ALTER ANY SEQUENCE TOuser_name
; GRANT DROP ANY SYNONYM TOuser_name
; GRANT CREATE ANY SYNONYM TOuser_name
; GRANT DROP USER TOuser_name
; GRANT ALTER ANY MEASURE FOLDER TOuser_name
; GRANT ALTER ANY EDITION TOuser_name
; GRANT DROP ANY RULE TOuser_name
; GRANT CREATE ANY RULE TOuser_name
; GRANT ALTER ANY RULE SET TOuser_name
; GRANT CREATE ANY OUTLINE TOuser_name
; GRANT UNDER ANY TABLE TOuser_name
; GRANT UNDER ANY VIEW TOuser_name
; GRANT DROP ANY DIRECTORY TOuser_name
; GRANT ALTER ANY CLUSTER TOuser_name
; GRANT CREATE ANY CLUSTER TOuser_name
; GRANT ALTER ANY TABLE TOuser_name
; GRANT CREATE ANY CUBE BUILD PROCESS TOuser_name
; GRANT ALTER ANY CUBE DIMENSION TOuser_name
; GRANT CREATE ANY EDITION TOuser_name
; GRANT CREATE ANY SQL PROFILE TOuser_name
; GRANT ALTER ANY SQL PROFILE TOuser_name
; GRANT DROP ANY OUTLINE TOuser_name
; GRANT DROP ANY CONTEXT TOuser_name
; GRANT DROP ANY OPERATOR TOuser_name
; GRANT DROP ANY LIBRARY TOuser_name
; GRANT ALTER ANY LIBRARY TOuser_name
; GRANT CREATE ANY LIBRARY TOuser_name
; GRANT ALTER ANY MATERIALIZED VIEW TOuser_name
; GRANT ALTER ANY TRIGGER TOuser_name
; GRANT CREATE ANY SEQUENCE TOuser_name
; GRANT DROP ANY INDEX TOuser_name
; GRANT CREATE ANY INDEX TOuser_name
; GRANT DROP ANY TABLE TOuser_name
; GRANT SELECT_CATALOG_ROLE TOuser_name
; GRANT SELECT ANY SEQUENCE TOuser_name
; -- Database Links GRANT CREATE DATABASE LINK TOuser_name
; GRANT CREATE PUBLIC DATABASE LINK TOuser_name
; GRANT DROP PUBLIC DATABASE LINK TOuser_name
; -- Server Level Objects (directory) GRANT CREATE ANY DIRECTORY TOuser_name
; GRANT DROP ANY DIRECTORY TOuser_name
; -- (for RDS only) GRANT EXECUTE ON RDSADMIN.RDSADMIN_UTIL TOuser_name
; -- Server Level Objects (tablespace) GRANT CREATE TABLESPACE TOuser_name
; GRANT DROP TABLESPACE TOuser_name
; -- Server Level Objects (user roles) /* (grant source privileges with admin option or convert roles/privs as DBA) */ -- Queues grant execute on DBMS_AQADM touser_name
; grant aq_administrator_role touser_name
; -- for Materialized View Logs creation GRANT SELECT ANY TABLE TOuser_name
; -- Roles GRANT RESOURCE TOuser_name
; GRANT CONNECT TOuser_name
;
在前面的示例中,替换 user_name
用你的用户名。然后,替换 your_password
使用安全的密码。
将 Oracle 转换为适用于 Oracle RDS 的 Amazon 时的限制
在将 Oracle 架构和代码迁移到 Amazon RDS for Oracle 时,您应该考虑一些限制:
Amazon RDS 中名DBA为的预定义角色通常允许 Oracle 数据库引擎上的所有管理权限。以下权限不适用于使用 Oracle 引擎的 Amazon RDS 数据库实例上的DBA角色:
-
更改数据库
-
更改系统
-
创建任何目录
-
授予任何权限
-
授予任何角色
-
创建外部任务
您可以向 Oracle RDS 用户角色授予所有其他权限。
-
-
Amazon f RDS or Oracle 支持传统审计、使用 DBMS _ FGA 包的精细审计,以及 Oracle 统一审计。
-
Amazon RDS for Oracle 不支持变更数据捕获 (CDC)。要CDC在数据库迁移期间和迁移之后执行,请使用 AWS Database Migration Service。