共用方式為


Oracle 訂閱者

從 SQL Server 2005 開始,SQL Server 支援透過 Oracle 提供的 Oracle OLE DB 提供者,將訂閱推送至 Oracle。

設定 Oracle 訂閱者

若要設定 Oracle 訂閱者,請遵循下列步驟:

  1. 在 SQL Server 散發者上安裝及設定 Oracle 用戶端網路軟體和 Oracle OLE DB 提供者,讓散發者可以連接到 Oracle 訂閱者。 Oracle 用戶端網路軟體應該是最新的可用版本。 Oracle 建議使用者安裝最新版本的用戶端軟體。 因此,客戶端軟體通常比資料庫軟體版本還新。 安裝軟體的最直接方式是在 Oracle 用戶端磁碟上使用 Oracle 通用安裝程式。 在 Oracle 通用安裝程式中,您將提供下列資訊:

    資訊 說明
    Oracle Home 這是 Oracle 軟體安裝目錄的路徑。 接受預設值 (C:\oracle\ora90 或類似路徑),或輸入另一個路徑。 如需 Oracle 首頁的詳細資訊,請參閱本主題稍後的一節。
    Oracle 首頁名稱 Oracle 主路徑的別名。
    安裝類型 在 Oracle 10g 中,選取 [ 運行時間 ] 或 [ 系統管理員安裝] 選項。
  2. 建立訂閱者的 TNS 名稱。 TNS(透明網路基底)是 Oracle 資料庫所使用的通訊層。 TNS 服務名稱是網路上已知 Oracle 資料庫實例的名稱。 當您設定與 Oracle 資料庫的連線時,您會指派 TNS 服務名稱。 復寫會使用 TNS 服務名稱來識別訂閱者及建立連線。

    Oracle 通用安裝程式完成之後,請使用 Net Configuration Assistant 來設定網路連線能力。 您必須提供四項資訊,才能設定網路連線。 Oracle 資料庫管理員會在設定資料庫和接聽程式時設定網路設定,如果您沒有,應該可以提供此資訊。 您必須執行下列作業:

    行動 說明
    識別資料庫 識別資料庫的方法有兩種。 第一個方法會使用 Oracle 系統識別碼 (SID),而且可在每個 Oracle 版本中使用。 第二個方法會使用服務名稱,從 Oracle 8.0 版開始提供。 這兩種方法都會使用建立資料庫時所設定的值,而且用戶端網路設定必須使用與系統管理員在設定資料庫接聽程式時所使用的相同命名方法。
    識別資料庫的網路別名 您必須指定用來存取 Oracle 資料庫的網路別名。 網路別名基本上是建立資料庫時所設定之遠端 SID 或服務名稱的指標;在不同的 Oracle 版本和產品中,它已被數個名稱所參考,包括 Net Service Name 和 TNS 別名。 當您登入時,SQL*Plus 會提示此別名作為「主機字串」參數。
    選取網路協定 選取您想要支持的適當通訊協定。 大部分的應用程式都使用 TCP。
    指定主機資訊以識別資料庫接聽程式 主機是 Oracle 接聽程式執行所在電腦的名稱或 DNS 別名,通常是資料庫所在的相同電腦。 對於某些通訊協定,您必須提供其他資訊。 例如,如果您選取 [TCP],則必須提供接聽程式接聽目標資料庫的連線要求埠。 預設 TCP 組態會使用埠 1521。
  3. 建立快照或交易發行集,將其啟用於非 SQL Server 訂閱者,然後為訂閱者建立推送訂閱。 如需詳細資訊,請參閱 建立非 SQL Server 訂閱者的訂閱

設定目錄許可權

在 Distributor 上執行 SQL Server 服務的帳戶,必須具有安裝 Oracle 用戶端網路軟體之目錄及所有子目錄的讀取和執行權限。

測試 SQL Server 發佈者與 Oracle 發布者之間的連線能力

在 Net Configuration Assistant 的結尾附近,可能會有一個選項可測試與 Oracle 訂閱者的連線。 測試連線之前,請確定 Oracle 資料庫實例已上線,且 Oracle 接聽程式正在執行。 如果測試失敗,請連絡負責您嘗試連線之資料庫的 Oracle DBA。

成功連線到 Oracle 訂閱者之後,嘗試使用您為訂閱的散發代理程式設定的相同帳戶和密碼登入資料庫:

  1. 點擊開始,然後點擊執行

  2. 輸入 cmd 並按兩下 [確定]。

  3. 在命令提示字元中,輸入:

    sqlplus <UserSchemaLogin>/<UserSchemaPassword>@<NetServiceName>

    例如:sqlplus replication/$tr0ngPasswerd@Oracle90Server

  4. 如果網路設定成功,登入將會成功,您會看到提示 SQL

Oracle Home 的注意事項

Oracle 支援應用程式二進位檔的並排安裝,但在任一時間,複製功能只能使用一組二進位檔。 每組二進位檔都會與 Oracle Home 相關聯;二進位檔位於 \bin 的目錄中 %ORACLE_HOME%。 您必須確定複寫與 Oracle 訂閱者建立連線時,會使用正確的二進位檔集(特別是最新版的用戶端網路軟體)。

使用 SQL Server 服務和 SQL Server Agent 服務所使用的帳戶登入散發者,並設定適當的環境變數。 %ORACLE_HOME% 變數應該設定為參照您在安裝用戶端網路軟體時指定的安裝點。 %PATH% 必須將 %ORACLE_HOME% \bin 目錄包含為遇到的第一個 Oracle 項目。 如需設定環境變數的相關信息,請參閱 Windows 檔。

備註

如果您在 SQL Server 散發者上有多個 Oracle 首頁,請確定散發代理程式使用最新的 Oracle OLE DB 提供者。 在某些情況下,當您更新 SQL Server 散發者上的用戶端元件時,Oracle 預設不會更新 OLE DB 提供者。 卸載舊的 OLE DB 提供者,並安裝最新的 OLE DB 提供者。 如需安裝和卸載提供者的詳細資訊,請參閱 Oracle 檔。

Oracle 訂閱者的考慮

除了 非 SQL Server 訂閱者主題中涵蓋的考慮之外,在複寫至 Oracle 訂閱者時,請考慮下列問題:

  • Oracle 會將空字串和 NULL 值視為 NULL。 如果您將 SQL Server 數據行定義為 NOT NULL,並將數據行復寫至 Oracle 訂閱者,這很重要。 若要避免將變更套用至 Oracle 訂閱者時發生失敗,您必須執行下列其中一項:

    • 請確定未將空字串插入已發佈資料表中做為數據行值。

    • 如果可以接受在散發代理歷程記錄中接收到失敗通知並繼續處理,請使用 -SkipErrors 參數。 指定 Oracle 錯誤碼 1400 (-SkipErrors1400)。

    • 修改產生的建立數據表腳本,從任何可能具有相關聯空字串的字元數據行中移除 NOT NULL 屬性,並使用 sp_addarticle 的 參數,提供修改過的腳本做為發行項@creation_script的自定義建立腳本。

  • Oracle 訂閱者支援0x4071的架構選項。 如需架構選項的詳細資訊,請參閱 sp_addarticle (Transact-SQL)。

將數據類型從 SQL Server 對應至 Oracle

下表顯示當數據復寫至執行 Oracle 的訂閱者時所使用的數據類型對應。

SQL Server 資料類型 Oracle 數據類型
bigint 數位(19,0)
binary(1-2000) RAW(1-2000)
binary(2001-8000) BLOB
bit 數字(1)
char(1-2000) CHAR(1-2000)
char(2001-4000) VARCHAR2(2001-4000)
char(4001-8000) CLOB
date 日期
datetime 日期
datetime2(0-7) Oracle 9 和 Oracle 10 的 TIMESTAMP(7) ;適用於 Oracle 8 的 VARCHAR(27)
datetimeoffset(0-7) 對於 Oracle 9 和 Oracle 10 的 TIMESTAMP(7)含時區;適用於 Oracle 8 的 VARCHAR(34)
decimal(1-38, 0-38) 數字(1-38,0-38)
float(53) 浮動
float 浮動
geography BLOB
geometry BLOB
hierarchyid BLOB
image BLOB
int 數位(10,0)
money 數值(19,4)
nchar(1-1000) CHAR(1-1000)
nchar(1001-4000) NCLOB
ntext NCLOB
numeric(1-38, 0-38) 數字(1-38,0-38)
nvarchar(1-1000) VARCHAR2(1-2000)
nvarchar(1001-4000) NCLOB
nvarchar(max) NCLOB
real 真實
smalldatetime 日期
smallint 數字(5,0)
smallmoney 數字(10,4)
sql_variant N/A
sysname VARCHAR2(128)
text CLOB
time(0-7) VARCHAR(16)
timestamp RAW(8)
tinyint 數字(3,0)
uniqueidentifier CHAR(38)
varbinary(1-2000) RAW(1-2000)
varbinary(2001-8000) BLOB
varchar(1-4000) VARCHAR2(1-4000)
varchar(4001-8000) CLOB
varbinary(max) BLOB
varchar(max) CLOB
xml NCLOB

另請參閱

非 SQL Server 訂閱者
訂閱發行集