設定 Oracle 發行者

適用於:SQL Server

「Oracle 發行者」之發行集的建立方式與典型的快照式及交易式發行集的建立方式相同,但是在從「Oracle 發行者」端建立發行集之前,您必須完成下列步驟 (步驟一、三和四在本主題中有詳細描述):

  1. 使用提供的指令碼在 Oracle 資料庫中建立複寫管理使用者。

  2. 對於您發行的資料表,則在每個資料表上直接 (不透過角色) 將 SELECT 權限授與您在步驟一中建立的 Oracle 管理使用者。

  3. 在「Microsoft SQL Server 散發者」上安裝 Oracle 用戶端軟體和 OLE DB 提供者,然後停止並重新啟動 SQL Server 執行個體。 如果「散發者」在 64 位元平台上執行,則必須使用 Oracle OLE DB 提供者的 64 位元版本。

  4. 在 SQL Server 散發者端將 Oracle 資料庫設為發行者。

SQL Server 支援下列交易式和快照式複寫的異質性案例:

  • 將資料從 SQL Server 發行到非 SQL Server 訂閱者。

  • 將資料發佈至 Oracle 或從 Oracle 發佈資料有以下限制:

情境 2016 或更早版本 2017 年或之後
從 Oracle 複寫 只支援 Oracle 10g 或更早版本 只支援 Oracle 10g 或更早版本
複寫到 Oracle 最高可達 Oracle 12c 不支援

對非 SQL Server 訂閱者進行的異質複寫已淘汰。 Oracle Publishing 已淘汰。 若要移動資料,請使用異動資料擷取和 SSIS 建立方案。

如需可以從 Oracle 資料庫複寫的物件清單,請參閱 Oracle 發行者的設計考量與限制。

注意

您必須是 sysadmin 固定伺服器角色的成員,才能啟用「發行者」或「散發者」並建立 Oracle 發行集或從 Oracle 發行集建立訂閱。

在 Oracle 資料庫中建立複寫管理員使用者綱要

複寫代理程式連接到 Oracle 資料庫並在您必須建立的使用者結構描述內容中執行作業。 此結構描述必須被授與許多權限,這些權限會列示在下一節中。 此結構描述擁有 Microsoft SQL Server 複寫程序在 Oracle 發行者上所建立的所有物件,但不包括公用同義字 MSSQLSERVERDISTRIBUTOR。 如需 Oracle 資料庫中建立的物件的詳細資訊,請參閱< Objects Created on the Oracle Publisher>。

注意

以 CASCADE 選項刪除 MSSQLSERVERDISTRIBUTOR 公用同義字及已設定的 Oracle 複寫使用者,會從 Oracle 發行者中移除所有複寫物件。

已提供一個範例指令碼,以協助設定 Oracle 複寫使用者綱要。 安裝 SQL Server 後,可在以下目錄中取得此指令碼:<drive>:\\Program Files\Microsoft SQL Server\<InstanceName>\MSSQL\Install\oracleadmin.sql。 它也包含在< Script to Grant Oracle Permissions>主題中。

使用具有 DBA 權限的帳戶連接到 Oracle 資料庫並執行指令碼。 此指令碼會提示輸入複寫管理使用者結構描述的使用者與密碼,以及要在其中建立物件的預設資料表空間 (資料表空間必須已經存在於 Oracle 資料庫中)。 如需如何為物件指定其他資料表空間的資訊,請參閱管理 Oracle 資料表空間。 可以選擇任何使用者名稱和強式密碼,但是需將兩者都記下來,因為稍後當您將 Oracle 資料庫設為「發行者」時必須提供此資訊。 建議僅將此結構描述用於複寫所需的物件;請勿在此結構描述中建立要發行的資料表。

手動建立使用者綱要

如果您手動建立複寫管理使用者結構描述,則必須直接或透過資料庫角色,將下列權限授與該結構描述。

  • 建立 PUBLIC SYNONYM 並刪除 PUBLIC SYNONYM

  • CREATE PROCEDURE

  • CREATE SEQUENCE

  • 建立會話

您還必須直接 (不透過角色) 授與使用者下列權限:

  • 創造任何一個 TRIGGER。 只有在快照複寫和交易式複寫中才需要此項目。

  • CREATE TABLE

  • CREATE VIEW

在 SQL Server 散發者上安裝和設定 Oracle 用戶端網路軟體

您必須在「SQL Server 散發者」上安裝並設定 Oracle 用戶端網路軟體和 Oracle OLE DB 提供者,如此「散發者」才能連接到「Oracle 發行者」。 安裝該軟體後,請在安裝該軟體的資料夾上設定適當的權限,然後停止並重新啟動 SQL Server 執行個體,確定所有的設定都已更新 (權限會在<設定目錄權限>一節中描述)。

注意

Oracle 用戶端網路軟體必須是最新的可用版本。 Oracle 建議使用者安裝最新版本的用戶端軟體。 因此用戶端軟體的版本通常比資料庫軟體的版本還要新。

安裝和設定用戶端網路軟體最直接的方法是使用 Oracle Client 磁碟上的 Oracle Universal Installer 和 Net Configuration Assistant。

在 Oracle Universal Installer 中,您必須提供下列資訊:

資訊 描述
Oracle Home 這是到 Oracle 軟體之安裝目錄的路徑。 接受預設路徑 (C:\oracle\ora90 或類似路徑) 或輸入其他路徑。 如需有關 Oracle Home 的詳細資訊,請參閱本主題後面的「Oracle Home 的注意事項」。
Oracle Home 名稱 Oracle Home 路徑的別名。
安裝類型 在 Oracle 10g 中,選取 [管理員] 安裝選項。

Oracle Universal Installer 完成之後,請使用 Net Configuration Assistant 設定網路連接性。 您必須提供四項資訊來設定網路連接性。 Oracle 資料庫管理員會在設定資料庫與接聽程式時設定網路組態,如果您沒有此一資訊,管理員應該能夠提供。 您必須執行下列工作:

動作 描述
識別資料庫 有兩種方法可以識別資料庫。 第一種方法使用 Oracle 系統識別碼 (SID),每個 Oracle 版本都有。 第二種方法使用服務名稱,從 Oracle 8.0 版開始提供。 這兩種方法都使用在建立資料庫時設定的值,重要的是,用戶端網路組態必須使用相同於管理員在設定資料庫接聽程式時,所使用的命名方法。
識別資料庫的網路別名 您必須指定一個用於存取 Oracle 資料庫的網路別名。 當您在 SQL Server 散發者上將 Oracle 資料庫指定為發行者時,也要提供此別名。 網路別名實質上是指向在建立資料庫時設定之遠端 SID 或服務名稱的指標;不同的 Oracle 版本與產品中所使用的稱呼各有不同,包括網路服務名稱 (Net Service Name) 和 TNS 別名 (TNS Alias)。 您登入時,SQL*Plus 會提示以「Host String」參數輸入這個別名。
選取網路通訊協定 選取您要支援的適當通訊協定。 大多數應用程式使用 TCP。
指定識別資料庫接聽程式的主機資訊 主機是 Oracle 接聽程式所執行之電腦 (通常與資料庫所在的電腦相同) 的名稱或 DNS 別名。 針對某些通訊協定,您必須提供其他的資訊。 例如,如果您選取 TCP,就必須提供接聽程式用來接聽目標資料庫連線要求的連接埠。 預設 TCP 組態使用通訊埠 1521。

設定目錄權限

必須授與「散發者」端執行 SQL Server 服務時所用的帳戶,對安裝 Oracle 用戶端網路軟體之目錄 (及所有子目錄) 的讀取和執行權限。

測試 SQL Server 散發者與 Oracle 發行者之間的連線

在 Net Configuration Assistant 接近尾聲時,可能會出現一個可測試與 Oracle Publisher 連線的選項。 在您測試連接之前,請確定 Oracle 資料庫執行個體有上線,而且 Oracle 接聽程式正在執行。 如果測試不成功,請連絡負責您想要連接之資料庫的 Oracle DBA (Oracle 資料庫管理員)。

成功連線到 Oracle Publisher 之後,請嘗試使用與您所建立的複寫管理使用者結構描述相關聯的帳戶和密碼登入資料庫。 當以 SQL Server 服務使用的 Windows 帳戶執行時,必須執行下列項目:

  1. 按一下 [開始] ,然後按一下 [執行] 。

  2. 輸入 cmd ,然後按一下 [確定] 。

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

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

    例如: sqlplus replication/$tr0ngPasswerd@Oracle90Server

  4. 如果網路組態成功,登入會成功,您也會看到 SQL 提示字元。

  5. 如果您遇到連接到 Oracle 資料庫的問題,請參閱在< Troubleshooting Oracle Publishers>中的「SQL Server 散發者無法連接到 Oracle 資料庫執行個體」一節。

Oracle Home 的注意事項

Oracle 支援應用程式二進位編碼檔案的並存安裝,但是複寫時,一次只能使用一組二進位編碼檔案。 每一個二進位編碼檔案與一個 Oracle Home 相關聯;二進位編碼檔案是在 %ORACLE_HOME%\bin 目錄下。 當複寫連線到 Oracle Publisher 時,您必須確保使用正確的一組二進位檔案,尤其是用戶端網路軟體的最新版本。

利用 SQL Server 服務與 SQL Server Agent 服務使用的帳戶登入散發者,並設定適當的環境變數。 %ORACLE_HOME% 變數應設定為參考您安裝用戶端網路軟體時指定的安裝點。 %PATH% 必須包含 %ORACLE_HOME% \bin 目錄,做為遇到的第一個 Oracle 項目。 如需有關設定環境變數的資訊,請參閱 Windows 文件集。

在 SQL Server 散發者端將 Oracle 資料庫設為發行者

「Oracle 發行者」通常使用遠端「散發者」;您必須設定 SQL Server 的執行個體充當「Oracle 發行者」的「散發者」 (「Oracle 發行者」只能使用一個「散發者」,但是單一「散發者」可以服務多個「 Oracle 發行者」)。 設定「散發者」之後,透過 SQL Server Management Studio、Transact-SQL 或 Replication Management Objects (RMO) 將 Oracle 資料庫執行個體視為「SQL Server 散發者」端的「發行者」。 如需設定「散發者」的詳細資訊,請參閱 設定散發。

注意

Oracle 發行者的名稱不得與其 SQL Server 散發者同名,也不得與任何使用相同散發者的 SQL Server 發行者同名。

將 Oracle 資料庫視為「發行者」時,您必須選擇 Oracle 發行選項:[完整] 或 [Oracle 閘道]。 識別發行者之後,除非卸除並重新設定發行者,否則無法變更此選項。 [完整] 選項旨在為 Oracle 發行中的快照式發行和交易式發行提供所有受支援的完整功能。 [Oracle 閘道] 選項在複寫充當系統間閘道的情況下提供特定的設計最佳化以增進效能。

在「SQL Server 散發者」端識別「Oracle 發行者」後,複寫會建立名稱與 Oracle 資料庫之 TNS 服務名稱相同的連結伺服器。 此連結伺服器僅供複寫使用。 若您必須透過連結伺服器連線來連接到「Oracle 發行者」,請建立另一個 TNS 服務名稱,然後在呼叫 sp_addlinkedserver (Transact-SQL) 時使用這個名稱。

若要設定 Oracle 發行者並建立發行集,請參閱< Create a Publication from an Oracle Database>。