从 Oracle 数据库创建发布

适用于SQL Server

本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 从 SQL Server 中的数据库中创建发布。

本主题内容

开始之前

先决条件

  • 在创建发布之前,必须在 Microsoft SQL Server 分发服务器上安装 Oracle 软件,并配置 Oracle 数据库。 有关详细信息,请参阅配置 Oracle 发布服务器

使用 SQL Server Management Studio

可以使用新建发布向导,从 Oracle 数据库创建快照发布或事务发布。

首次从 Oracle 数据库创建发布时,必须在 SQL Server 分发服务器上标识 Oracle 发布服务器(对于来自同一数据库的后续发布,不需要执行此操作)。 标识 Oracle 发布服务器的操作可以从新建发布向导或“分发服务器属性 - <分发服务器>”对话框中完成;本主题介绍“分发服务器属性 - <分发服务器>”对话框。

在 SQL Server 分发服务器上标识 Oracle 发布服务器

  1. 在 SQL Server Management Studio 中,连接到要将 Oracle 发布服务器用作分发服务器的 SQL Server 实例,然后展开服务器节点。

  2. 右键单击 “复制” 文件夹,然后单击 “分发服务器属性”

  3. 在“分发服务器属性 - <分发服务器>”对话框的“发布服务器”页上,依次单击“添加”和“添加 Oracle 发布服务器”

  4. “连接到服务器” 对话框中,单击 “选项” 按钮。

  5. “登录” 选项卡上:

    1. 输入 Oracle 数据库实例名称,或者选择 “服务器实例” 组合框中的 “浏览更多”

    2. 选择 “Oracle 标准身份验证” (建议)或 “Windows 身份验证”

      如果选择了“Windows 身份验证”,则必须将 Oracle 服务器配置为允许使用 Windows 凭据进行连接(有关详细信息,请参阅 Oracle 文档),并且当前必须使用为复制管理用户架构指定的同一 Windows 帐户进行登录。

    3. 如果选择 “Oracle 标准身份验证”,则在配置过程中,请输入在 Oracle 发布服务器上创建的复制管理用户架构的登录名和密码。

  6. “连接属性” 选项卡上,选择 “网关”“完整”发布服务器类型。

    “完整” 选项用于为快照和事务发布提供所支持的完整的 Oracle 发布功能集。 “网关” 选项提供特定的设计优化,以提高复制作为系统间的网关时的性能。 如果计划在多个事务发布中发布同一个表,则无法使用 “网关” 选项。 如果选择 “网关”,则一个表可以最多出现在一个事务发布中或出现在任意数量的快照发布中。

  7. 单击 “连接”,创建到 Oracle 发布服务器的连接,并配置该连接以进行复制。 “连接至服务器”对话框关闭,将返回到“分发服务器属性 - < 分发服务器 >”对话框。

    注意

    如果网络配置出现问题,则在此将收到一条错误。 如果连接 Oracle 数据库时遇到问题,请参阅 Troubleshooting Oracle Publishers中的“SQL Server 分发服务器无法连接到 Oracle 数据库实例”部分。

  8. 选择“确定”

从 Oracle 数据库创建发布

  1. 连接到要将 Oracle 发布服务器用作分发服务器的 SQL Server 实例,然后展开服务器节点。

  2. 展开 “复制” 文件夹。

  3. 右键单击 “本地发布” 文件夹,然后单击 “新建 Oracle 发布”

  4. 在新建发布向导的 “Oracle 发布服务器” 页上,选择 Oracle 发布服务器。 如果未显示 Oracle 发布服务器,请单击 “添加 Oracle 发布服务器”,逐步执行上一过程中的步骤。

  5. “发布类型” 页上,选择 “快照发布”“事务发布”

  6. “项目” 页上,选择要发布的数据库对象。

    也可以通过展开表并清除一个或多个列的复选框,来筛选掉表列。 单击 “项目属性” 可以查看和修改项目属性,还可以根据需要指定备用数据类型映射。 有关数据类型映射的详细信息,请参阅为 Oracle 发布服务器指定数据类型映射

  7. 也可以在 “筛选表行” 页上,应用筛选器发布一个或多个表的数据子集。

  8. 仅在创建所有对象并将所有所需数据添加到订阅数据库后,才能清除 “快照代理” 页上的 “立即创建快照”

  9. “代理安全性” 页上,指定快照代理(适用于所有发布)和日志读取器代理(适用于事务发布)的凭据。 代理将使用指定的 Microsoft Windows 帐户上下文运行并连接到 SQL Server 分发服务器。 代理使用指定为复制管理用户架构的帐户上下文建立到 Oracle 数据库的连接。 有关详细信息,请参阅配置 Oracle 发布服务器

    有关每个代理所需权限的详细信息,请参阅 Replication Agent Security ModelReplication Security Best Practices

  10. “向导操作” 页上,根据需要,可以选择为发布编写脚本。 有关详细信息,请参阅 Scripting Replication

  11. “完成该向导” 页上,指定发布的名称。

“使用 Transact-SQL”

在将 Oracle 数据库配置为发布服务器后,可以使用系统存储过程创建事务或快照发布,方法与从 Microsoft SQL Server 发布服务器创建发布相同。

创建 Oracle 发布

  1. 将 Oracle 数据库配置为发布服务器。 有关详细信息,请参阅配置 Oracle 发布服务器

  2. 如果不存在远程分发服务器,请配置远程分发服务器。 有关详细信息,请参阅 Configure Publishing and Distribution

  3. 在 Oracle 发布服务器将使用的远程分发服务器上,执行 sp_adddistpublisher (Transact-SQL)。 为 @publisher 指定 Oracle 数据库实例的透明网络底层 (TNS) 名称,为 @publisher_type 指定值 ORACLEORACLE GATEWAYSpecify 从 Oracle 发布服务器连接到远程 SQL Server 分发服务器时使用的以下安全模式之一:

    • 若要使用 Oracle 标准身份验证(默认值),请将 @security_mode 的值指定为 0,并将 @login@password分别指定为 Oracle 发布服务器上创建的复制管理用户架构在配置过程中所设定的登录名和密码。

      重要

      如果可能,请在运行时提示用户输入安全凭据。 如果将凭据存储在脚本文件中,则必须确保文件的安全以防受到未经授权的访问。

    • 若要使用 Windows 身份验证,请将 @security_mode 的值指定为 1

      注意

      若要使用 Windows 身份验证,Oracle 服务器必须配置为允许使用 Windows 凭据的连接(有关更多信息,请参见 Oracle 文档);而且,您当前必须使用为复制管理用户架构指定的同一 Microsoft Windows 帐户登录到计算机。

  4. 为发布数据库创建日志读取器代理作业。

    • 如果不确定是否存在针对某个已发布数据库的日志读取器代理作业,请在 Oracle 发布服务器在分发数据库中使用的分发服务器上执行 sp_helplogreader_agent (Transact-SQL)。 为 @publisher指定 Oracle 发布服务器的名称。 如果结果集为空,则必须创建一个日志读取器代理作业。

    • 如果已经存在针对该发布数据库的日志读取器代理作业,请继续执行步骤 5。

    • 在 Oracle 发布服务器在分发数据库中使用的分发服务器上,执行 sp_addlogreader_agent (Transact-SQL)。 为 @job_login@job_password指定运行该代理所用的 Windows 凭据。

      注意

      @job_login 参数必须与步骤 3 中提供的登录名匹配。 不要提供发布服务器安全信息。 日志读取器代理使用步骤 3 中提供的安全信息连接到发布服务器。

  5. 在分发数据库中的分发服务器上,执行 sp_addpublication (Transact-SQL) 以创建发布。 有关详细信息,请参阅 Create a Publication

  6. 在分发数据库中的分发服务器上,执行 sp_addpublication_snapshot (Transact-SQL)。 将 @publication 指定为在步骤 4 中使用的发布名称,并为 @job_name@password指定运行快照代理所用的 Windows 凭据。 若要在连接到发布服务器时使用 Oracle 标准身份验证,还必须将 @publisher_security_mode 指定为 0 值,并为 @publisher_login@publisher_password指定 Oracle 登录信息。 此操作将为发布创建一个快照代理作业。

另请参阅

配置 Oracle 发布服务器
发布数据和数据库对象
为 Oracle 发布服务器配置事务集作业(复制 Transact-SQL 编程)
Oracle 发布概述
授予 Oracle 权限的脚本