您可以使用 Data Replication从 Oracle 复制数据。
要为 Oracle 数据设置复制,请首先将 Oracle 数据库配置为源,然后创建连接。
支持的版本
Oracle 19c R1 (19.1)+
限制
只能复制某些 Oracle 数据类型。 请参阅 支持的 Oracle 数据类型。
将 Oracle 配置为源
在使用 Oracle 连接启动复制之前,需要确保满足数据库,用户帐户和模式需求。
配置 Oracle 数据库。 配置 Oracle 连接时,系统会提示您输入希望 Data Replication 从中复制数据的 Oracle 数据库的名称。 在创建连接之前,请确保此 Oracle 数据库存在,并确保您创建和设置有权访问该数据库的数据库用户。 Data Replication 支持在同一数据库中的多个模式中找到的映射表。 确保通过
enable_goldengate_replication
参数启用 Oracle XStream。在创建 Oracle 连接之前,必须提前准备某些 Oracle XStream 配置。
启用
enable_goldengate_replication
。 您需要在源数据库上设置enable_goldengate_replication
系统参数,以在 Oracle中启用 XStream 复制功能。 您可以使用以下语句:ALTER SYSTEM SET enable_goldengate_replication=TRUE SCOPE=BOTH
Oracle RAC 中的所有实例都必须具有相同的设置。 请参阅Oracle文档,了解启用该参数对数据库的影响。
为 Oracle 数据库创建用户帐户。
从 Oracle 数据库复制数据时, Data Replication 会处理数据库日志。 您可以配置 Data Replication 以进行本地捕获,其中日志在您复制的模式所在的数据库中进行处理。 或者,您可以配置 Data Replication 以使用单独的 Oracle XStream 连接来处理不同数据库中的日志。 如果使用本地捕获,那么需要单个 Oracle 连接。 如果使用单独的 Oracle XStream 数据库进行日志处理,那么将需要两个 Oracle 连接: 一个用于连接到包含要复制的模式的数据库,另一个用于连接到 Oracle XStream 处理日志的数据库。 此日志处理数据库可以是 Oracle 下游数据库。
查看 Oracle 用户的必需特权。 在配置 Oracle 连接之前,请查看 Oracle 用户所需的特权列表。 您需要通过运行 SQL 脚本将这些特权授予用户。
以下样本脚本可帮助向 Oracle 数据库用户和 "日志处理数据库" 用户提供相应的特权。
样本脚本 createuser-ora-nodba.sql
复制此脚本,并替换尖括号中的值。 运行此脚本以创建用于从 Oracle复制数据的 Oracle 数据库用户。
/* _______________________________________________________ {COPYRIGHT-TOP} _____
** Licensed Materials - Property of IBM
** IBM Data Replication Cartridge for IBM Cloud Pak for Data
** 5900ASF
**
** (c) Copyright IBM Corp. 2001, 2022 All rights reserved.
**
** The following sample of source code ("Sample") is owned by International
** Business Machines Corporation or one of its subsidiaries ("IBM") and is
** copyrighted and licensed, not sold. You may use, copy, modify, and
** distribute the Sample in any form without payment to IBM.
**
** The Sample code is provided to you on an "AS IS" basis, without warranty of
** any kind. IBM HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR
** IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do
** not allow for the exclusion or limitation of implied warranties, so the above
** limitations or exclusions may not apply to you. IBM shall not be liable for
** any damages you suffer as a result of using, copying, modifying or
** distributing the Sample, even if IBM has been advised of the possibility of
** such damages.
* ________________________________________________________ {COPYRIGHT-END} _____*/
--This script does not grant dba to the data replication user.
-- create user
CREATE user <user> identified by <password>
default tablespace <tablespace_name> temporary tablespace <temporary_tablespace_name>;
-- Grant basic roles
grant connect to <user>;
grant resource to <user>;
grant select_catalog_role to <user>;
grant unlimited tablespace to <user>;
-- Table DDL permissions
grant create any table to <user>;
grant alter any table to <user>;
grant drop any table to <user>;
grant lock any table to <user>;
-- Table DML permissions
grant select any table to <user>;
grant flashback any table to <user>;
grant insert any table to <user>;
grant update any table to <user>;
grant delete any table to <user>;
-- Index and view DDL permissions
grant create any index to <user>;
grant alter any index to <user>;
grant drop any index to <user>;
grant create any view to <user>;
grant drop any view to <user>;
-- Procedure permissions
grant create any procedure to <user>;
grant execute any procedure to <user>;
-- Permission to perform select on the v_$ tables
grant select any dictionary to <user>;
-- General system views
grant select on sys.v_$database to <user>;
grant select on sys.v_$controlfile to <user>;
grant select on sys.v_$version to <user>;
grant select on sys.nls_database_parameters to <user>;
-- Archive and redo logs
grant select on sys.v_$log to <user>;
grant select on sys.v_$logfile to <user>;
grant select on sys.v_$archived_log to <user>;
grant select on sys.v_$log_history to <user>;
-- Sessions and transactions
grant alter session to <user>;
grant select on sys.v_$session to <user>;
grant select on sys.gv_$session to <user>;
grant select on sys.v_$transaction to <user>;
grant select on sys.v_$mystat to <user>;
-- Tables, indexes, columns and related views
grant select on sys.all_coll_types to <user>;
grant select on sys.all_type_attrs to <user>;
grant select on sys.dba_tables to <user>;
grant select on sys.dba_tab_comments to <user>;
grant select on sys.dba_tab_columns to <user>;
grant select on sys.dba_col_comments to <user>;
grant select on sys.dba_indexes to <user>;
grant select on sys.dba_ind_columns to <user>;
grant select on sys.all_constraints to <user>;
grant select on sys.dba_constraints to <user>;
grant select on sys.all_cons_columns to <user>;
grant select on sys.dba_cons_columns to <user>;
grant select on sys.tab$ to <user>;
grant select on sys.ind$ to <user>;
grant select on sys.lob$ to <user>;
grant select on sys.col$ to <user>;
grant select on sys.icol$ to <user>;
grant select on sys.coltype$ to <user>;
grant select on sys.attrcol$ to <user>;
grant select on sys.ccol$ to <user>;
grant select on sys.cdef$ to <user>;
-- Miscellaneous other objects
grant select on sys.obj$ to <user>;
grant select on sys.dba_mviews to <user>;
grant select on sys.dba_objects to <user>;
grant select on sys.dba_sequences to <user>;
grant select on sys.hist_head$ to <user>;
grant select on sys.resource_cost to <user>;
-- Storage
grant select on sys.dba_tablespaces to <user>;
grant select on sys.dba_rollback_segs to <user>;
-- Permissions
grant select on sys.dba_users to <user>;
grant select on sys.dba_sys_privs to <user>;
grant select on sys.dba_tab_privs to <user>;
grant select on sys.dba_profiles to <user>;
grant select on sys.dba_roles to <user>;
grant select on sys.user$ to <user>;
grant select on user_role_privs to <user>;
exit;
样本脚本 createuser-ora-xstream.sql
复制此脚本并替换尖括号中的值。 运行样本脚本 createuser-ora-nodba.sql
,然后再运行 createuser-ora-xstream.sql
。 如果将 Data Replication 配置为使用本地捕获,其中日志与复制的模式在同一数据库中进行处理,请对同一数据库运行 createuser-ora-nodba.sql
和 createuser-ora-xstream.sql
,并对 <user>
使用相同的值。 如果您希望 Oracle XStream 进程在与您复制的模式不同的数据库中进行日志记录,那么可以选择指定其他用户并对该数据库运行脚本。
/* _______________________________________________________ {COPYRIGHT-TOP} _____
** Licensed Materials - Property of IBM
** IBM Data Replication Cartridge for IBM Cloud Pak for Data
** 5900ASF
**
** (c) Copyright IBM Corp. 2001, 2022 All rights reserved.
**
** The following sample of source code ("Sample") is owned by International
** Business Machines Corporation or one of its subsidiaries ("IBM") and is
** copyrighted and licensed, not sold. You may use, copy, modify, and
** distribute the Sample in any form without payment to IBM.
**
** The Sample code is provided to you on an "AS IS" basis, without warranty of
** any kind. IBM HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR
** IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do
** not allow for the exclusion or limitation of implied warranties, so the above
** limitations or exclusions may not apply to you. IBM shall not be liable for
** any damages you suffer as a result of using, copying, modifying or
** distributing the Sample, even if IBM has been advised of the possibility of
** such damages.
* ________________________________________________________ {COPYRIGHT-END} _____*/
-- This script is a continuation of createuser-ora-nodba.sql script with
-- additional changes needed for data replication user as well as XStream Log
-- Processing Database user. Process all needed privileges from the script
-- createuser-ora-nodba.sql prior to continuing with this script.
-- XStream privileges on data replication User
-- Expected to be used for DBMS_CAPTURE_ADM.BUILD
-- to define XStream Capture initialization points
grant execute on DBMS_CAPTURE_ADM to <user>;
-- Optional privilege that is expected to be used on
-- the target engine required for Recursion Prevention
-- in Bidirectional replication.
grant execute on DBMS_XSTREAM_ADM to <user>;
-- Enable enable_goldengate_replication
-- You need to set the enable_goldengate_replication system parameter on your source
-- database to enable XStream replication capability in Oracle.
ALTER SYSTEM SET enable_goldengate_replication=TRUE SCOPE=BOTH;
-- to enable the enable_goldengate_replication system parameter.
-- All instances in Oracle RAC must have the same setting. Refer to Oracle documentation
-- for further understanding on the impact of enabling this parameter on your database.
-- Setting up Oracle XStream user account.
-- Most work in data replication is done using the Oracle user account.
-- When data replication needs to interact with Oracle XStream it will use the Oracle XStream account.
-- An Oracle XStream account needs sufficient privileges to comply with Oracle XStream user requirements.
-- In a Pluggable database environment, the Oracle user account has all the granted access to the
-- Pluggable database when replication is configured for a pluggable database, whereas the XStream
-- user account has to be defined in the root container database as per Oracle XStream requirements.
-- All Oracle XStream related objects are defined and managed in the container database in this case.
CALL DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => <Log Processing Database User>,
privilege_type => 'CAPTURE');
exit;
配置日志处理数据库。 创建 Data Replication 资产时,系统会提示您输入希望 Data Replication 使用的 Oracle 日志处理数据库的名称。 此数据库提供一个 XStream 出站数据库, Data Replication 连接到该数据库,并连接到该数据库以处理由 Oracle XStream API 提供的逻辑更改记录。 对于本地 Oracle XStream 捕获和出站服务器,这是与之前相同的数据库。 对于可插入数据库,日志处理数据库是根容器数据库。 对于下游捕获,日志处理数据库是下游数据库。 日志处理数据库还需要enable_gol登革热复制。
可选: 配置下游日志处理数据库。 需要执行若干步骤来配置实时下游捕获或归档日志下游捕获。 查看 Oracle XStream 文档以配置数据库链接和日志文件传输。
设置 Oracle XStream 用户帐户。 Data Replication 中的大部分工作是通过使用 Oracle 用户帐户完成的。 当 Data Replication 需要与 Oracle XStream 交互时,它将使用 Oracle XStream 帐户。 Oracle XStream 帐户需要足够的特权以符合 Oracle XStream 用户需求。 在可插拔数据库环境中,当为可插拔数据库配置复制时, Oracle 用户帐户具有对可插拔数据库的所有授权访问权。 但是,必须根据 Oracle XStream 需求在根容器数据库中定义 XStream 用户帐户。 在此情况下,所有与 Oracle XStream 相关的组件都在根容器数据库中定义和管理。 您可以使用 DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE ,用于授予 XStream 用户帐户特权。 Oracle XStream 出站数据库凭证区分大小写。 有关详细信息,请查阅Oracle文档。
为数据库元数据表创建模式或选择现有模式。 配置 Data Replication时,必须指定此模式。
在项目中连接到 Oracle
对于 专用连接,要连接到未外部化到因特网的数据库 (例如,在防火墙后) ,必须设置 安全连接。
要在Cloud Pak for Data as a Service项目中连接Oracle,请参阅Oracle连接。
启动 Data Replication
要创建 Data Replication 资产:
- 单击项目中的 资产 选项卡。
- 单击 新建资产> 复制数据。
- 输入名称。
- 单击 连接。
- 在 "源选项"页面,从连接列表中选择现有Oracle,或单击 "添加连接"创建新连接。
- Oracle 连接需要其他参数。 您有两个 Oracle XStream 选项 :a. 选择 本地捕获 以处理与源连接在同一数据库中的日志。 a. 选择单独的 Oracle XStream 连接以在单独的数据库中处理日志。 i. 如果未选择 实时下游捕获,那么您的选项包括 PDB/CDB 和归档日志下游捕获。 i. 如果选择 实时下游捕获,那么将使用单独的 Oracle XStream 连接来处理其他数据库中的日志。
- 单击 选择数据,选择模式,并 (可选) 从模式中选择表。
- 在目标选项页面,从列表中选择Oracle连接。
- 在"审查"页面,审查摘要,然后单击 "创建"。