Ogg: Sybase to Oracle個人

来源:http://www.cnblogs.com/tan-java/archive/2016/08/21/5791739.html
-Advertisement-
Play Games

摘要: sybase版本:Sybase15(源端) Oracle版本:11g(目標端) Goldengate版本:11.2.0.1.0(源端),12c(目標端) 個人博客:www.czhiying.cn Goldengate同步原理: Oracle GoldenGate軟體是一種基於日誌的結構化數據 ...


摘要:

  • sybase版本:Sybase15(源端)
  • Oracle版本:11g(目標端)
  • Goldengate版本:11.2.0.1.0(源端),12c(目標端)
  • 個人博客:www.czhiying.cn

Goldengate同步原理:

   Oracle GoldenGate軟體是一種基於日誌的結構化數據複製備份軟體,它通過解析源資料庫線上日誌或歸檔日誌獲得數據的增量變化,再將這些變化應用到目標資料庫,從而實現源資料庫與目標資料庫同步。參考圖如下:

ogg同步原理圖

  從上圖可以知道,Ogg的同步實現方式有兩種:

  1. 在源端建立Extract進程捕獲日誌變化,形成Ogg自身定義的Trail文件,Trail文件不保存在本地,通過網路方式,直接傳輸到目的端;然後目的端通過Replicat進程解析Trail文件,將變化支付到目標端資料庫;
  2. 在 源端建立Extract進程捕獲日誌變化,形成Ogg自身定義的Trail文件,Trail文件保存在本地,然後在源端建立Data Pump進程(實際也是Extract進程,不過職能不同,我們在叫法上將其區分);然後通過Data Pump進程將產生的Trail文件傳輸到目的端;然後目的端通過Replicat進程解析Trail文件,將變化支付到目標端資料庫;

  既然存在兩種同步方式,存在即有理,但是我還是推薦使用第二種方式同步數據。因為這樣本地有保存Trail文件,有保障一點。所以我下麵的介紹也是基於第二種方式來進行同步的。

同步思路:

  1. 由於源資料庫和目標資料庫屬於異構關係,表結構不同,故需要使用Ogg提供的表結構定義工具將源資料庫的表結構定義出來,提供給目標資料庫解析。
  2. 數據同步存在數據初始化和數據增量同步。故此,在準備進行數據初始化時,需保證Ogg對源資料庫的捕獲進程為開啟狀態。這樣,便可以實現源/目標資料庫的數據一致性。

同步步驟:

  1. 源端sybase建立goldengate同步用戶,需要許可權 sa_role,replication_role;
  2. 在需要同步的庫上,開啟第二事務截斷點;

假設需要同步的庫是test,則使用isql進入sybase命令行後,執行

use test

go

dbcc settrunc(ltm,valid)

go

目的:ogg的捕獲進程可以成功捕獲到事務日誌變化的保證;如果沒有開啟此選項,extract進程啟動將會失敗,各位可以試驗一下。其實,如果沒有開啟此選項,當你使用ggsci進行添加附加日誌的時候,ggsci也會提醒你沒有開啟某個庫的第二事務截斷點選項。

註意:這裡的ltm選項可以說又愛又恨啊,為什麼這麼說呢,請看我另外一篇文章。

  3.進入ggsci控制台,使用dblogin訪問資料庫,添加表級附加日誌;

進入ggsci控制台後,使用命令:

dblogin sourcedb 數據源,userid 用戶名,password 密碼

註意:因為gg是oracle的產品,所以其他的資料庫需要使用odbc建立數據源,讓oracle能訪問到其資料庫,如何建立數據源,可以去上度娘,這裡就不做介紹了。

success後使用命令添加附加日誌:

add trandata test.test; (這裡的test.test的意思是,對test庫下的test表添加附加日誌。)

成功添加的話,將會看到enable的相關信息,同時,如果這裡沒對同步庫開啟ltm選項的話,將會看到一條提醒,不過不用擔心,你過會再去開啟也行,反正在extract進程啟動之前開啟就行。

  4.配置ogg針對源資料庫(Sybase資料庫)的捕獲進程;

prm文件:

EXTRACT ext_test   --捕獲進程名稱

sourcedb test,userid sa,password 123456

EXTTRAIL dirdat/te

DISCARDFILE dirrpt/ext_test.dsc , APPEND

REPORTCOUNT EVERY 10000 RECORDS, RATE

GETTRUNCATES

table dbo.test;  --聲明需要捕獲數據變化的表

ggsci控制台:

edit params ext_test(將會創建一個ext_test.prm的參數文件,將上述參數複製進該文件)

add extract ext_test,tranlog,begin now(創建extract進程)

add exttrail dirdat/te,extract ext_test,megabytes 100(創建exttrail,既抓取數據後記錄到本地trail文件)

啟動extract進程:

start ext_test

如無意外,進程啟動成功。如果這裡啟動失敗的話,請使用命令,view report ext_test,查看錯誤報告,如果解決不了,可留下評論,博主看到會幫你解決。

  5.源端配置、啟動數據泵進程

目的:由於Ogg將捕獲到的數據變化記錄為自身定義的trail文件並存放於本地文件中,故需要使用數據泵進程將這些trail文件遠程投遞到目標機上。

ggsci控制台:

edit params dp_test

參數文件配置:

EXTRACT dp_test
sourcedb test,userid sa,password 123456
RMTHOST 127.0.0.1(準備投遞的遠程主機Ip), MGRPORT 7810(遠程主機mgr進程的埠號)
RMTTRAIL D:\ogg112101_ggs_Windows_x86_ora11g_32bit\dirdat\du
discardfile  dirrpt/dumpdsc.dsc,append,megabytes 1024
TABLE dbo.test;

add extract dp_test,exttrailsource dirdat/te(這裡創建數據泵進程,trail源是剛剛捕獲進程設置的trail路徑)

add rmttrail D:\ogg112101_ggs_Windows_x86_ora11g_32bit\dirdat\du,extract dp_test,megabytes 100(這裡創建rmttrail定義)

start dp_test

如無意外,進程成功開啟。這裡要註意的一點是,準備投遞過去的那臺電腦,必須先安裝好ogg,由於博主這裡是使用同一臺電腦,所以博主這裡安裝了兩個Ogg,一個for sybase,一個for oracle,兩個是不同埠的。

  6.目標端配置、啟動應用進程

目的:將源端投遞過來的trail文件進行解密、分析,將源端的增量數據同步更新到目標資料庫。

目標端ggsci:

edit params rep_test

參數文件配置:

REPLICAT rep_test
SOURCEDEFS dirdef/def_test.def
USERID ogg, PASSWORD 123456
Discardfile dirrpt/rep_test.dsc,append,megabytes 1024
REPERROR (DEFAULT, discard)
Map dbo.test, TARGET ogg.TEST;

Dblogin userid ogg, password 123456(訪問oracle資料庫,目的是建checkpoint表)

Add checkpointtable ogg.chkpt_test(表名隨意,有意義就行)

add replicat rep_test,exttrail dirdat/du,CHECKPOINTTABLE ogg.chkpt_test(這裡的exttrail,是指源端投遞過來的trail文件)

start rep_test

啟動成功,即可在sybase端試試插入數據,更新數據,刪除數據,是否會進行同步。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • UITabBarController 定製 特點 用法 1.準備好你的tabBar圖片及其他圖片(哈哈哈!!!!),我的圖片都放在了Assets.xcassets中. 2.導入本工程中的Categroy文件夾, 其中包含: HexColor.h/.m(設置顏色的), NSString+Renderi ...
  • 設置註釋模板的入口:Window->Preference->Java->Code Style->Code Template 然後展開Comments節點就是所有需設置註釋的元素。本文現就每一個元素逐一給大家介紹一下。 文件(Files)註釋標簽: 1 2 3 4 5 6 7 8 /** * @Tit ...
  • ...
  • 偶然中發現Android Studio的工程文件夾比ADT Bundle的大很多。用Android Studio新建一個空工程,工程文件夾大小為30M,運行一次後大小為40M。同樣用ADT Bundle新建一個空工程,工程文件夾大小為1.5M,運行一次後大小為3.8M。天哪!Android Stud ...
  • _checkAllIntroduceTextView = [[UITextView alloc] initWithFrame:CGRectMake(10, 0, kScreenWidth-20, kScreenHeight)]; _checkAllIntroduceTextView.backgrou ...
  • 首先就是你的Github主頁了. 第二步點擊進入一個repository(倉庫) 第三步點擊右上的setting 將此頁面滑動到最下麵找個這個 點擊刪除即可! ...
  • 該系列教程概述與目錄:http://www.cnblogs.com/chengyujia/p/5787111.html 一、繪製三角形 在上一篇文章中,我們已經新建了虛擬方向鍵的自定義控制項DirectionKeys類,下麵我們繼續。 本項目中的虛擬方向鍵的背景是4個三角形組成的矩形,其實是4個三角形 ...
  • 在webView的delegate回調方法 - (void)webViewDidFinishLoad:(UIWebView *)webView;中寫上一下語句即可 //字體大小 [webView stringByEvaluatingJavaScriptFromString:@"document.ge ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...