如何从 Oracle 数据库创建发布(复制 Transact-SQL 编程)

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

创建 Oracle 发布

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

  2. 如果不存在远程分发服务器,请配置远程分发服务器。 有关详细信息,请参阅如何配置发布和分发(复制 Transact-SQL 编程)

  3. 在该 Oracle 发布服务器将使用的远程分发服务器上,执行 sp_adddistpublisher (Transact-SQL)。 将 @publisher 指定为该 Oracle 数据库实例的透明网络底层 (TNS) 名称,并将 @publisher_type 的值指定为 ORACLE 或 ORACLE GATEWAY。将从该 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) 以创建发布。 有关详细信息,请参阅如何创建发布(复制 Transact-SQL 编程)

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