- 前言
編寫本手冊的目的是為系統管理員以及相關操作人員提供 Oracle Goldengat 軟
件的日常維護和使用的技術參考;
3
ORACLE
第二章 OGG 日常維護操作指南
- 啟動 Goldenagate
- 用 oracle 用戶登錄生產數據庫主機系統
- 進入 OGG 安裝目錄/ggs,執行./ggsci 進入命令行模式;
- 啟動源端管理進程
Copyright OGG Software, Inc. 1995-2007
GGSCI > start mgr // 啟動 manager 進程
- 啟動所有進程
Copyright OGG Software, Inc. 1995-2007
GGSCI > start ext * //啟動所有抽取進程
- 查看進程狀態是否為 Running(表示已經啟動);
Copyright OGG Software, Inc. 1995-2007
GGSCI > info ext | *//查看所有進程信息 |
SCI > start rep * | //啟動所有投遞進程 |
- 查看進程狀態是否為 Running(表示已經啟動);
Copyright OGG Software, Inc. 1995-2007
GGSCI > info er * //查看所有進程信息
說明:GGSCI > start er *是啟動所有進程,如果只啟動一個進程命令為 start <
進程名>。例如進程名稱為 dpesz,則啟動命令為 start dpesz。
- 停止 OGG
- 用 oracle 用戶登陸主機系統;
4
ORACLE
- 進入 OGG 安裝目錄/ggs,執行./ggsci 進入命令行模式
- 驗證 OGG 的抽取進程重起所需的日志是否存在,對各個 extXX 進程分別執 行命令:
Copyright OGG Software, Inc. 1995-2007
GGSCI>info extXX,showch //查詢 extXX 進程回滾檢查點
Read Checkpoint #1
Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 1
Sequence #: 9671 //在節點 1 上回滾需要的檢查點日志序列號
RBA: 239077904
Timestamp: 2008-05-20 11:39:07.000000
SCN: 2195.1048654191
Redo File: Not available
Current Checkpoint (position of last record read in the data source): Thread #: 1
Sequence #: 9671 RBA: 239377476
Timestamp: 2008-05-20 11:39:10.000000
SCN: 2195.1048654339
Redo File: Not Available
Read Checkpoint #2
Recovery Checkpoint (position of oldest unprocessed transaction in the data source):
Thread #: 2
Sequence #: 5287 //在節點 2 上回滾需要的檢查點日志序列號
RBA: 131154160
Timestamp: 2008-05-20 11:37:42.000000
SCN: 2195.1048640151
Redo File: /dev/rredo07
Current Checkpoint (position of last record read in the data source):
Thread #: 2
Sequence #: 5287
5
ORACLE
RBA: 138594492
Timestamp: 2008-05-20 11:39:14.000000
SCN: 2195.1048654739
Redo File: /dev/rredo07
查看 Recovery Checkpoint 所需要讀取的最古老日志序列號“9671”“5287”標
明的歸檔日志以及以后的日志文件在當前的歸檔目錄中是否完全存在;如果存在則
可以停止生產數據庫主機上的 ext 進程;
- 停止生產中心的相關進程;
Copyright OGG Software, Inc. 1995-2007
1)檢查 exthy 進程是否將數據全部抓取出來
進入 OGG 控制台,執行:info all 查看 OGG 進程狀態。再執行:lag ext exthy 確
認結果為:At EOF, no more records to process. 再執行 send ext exthy,showtrans 如
果沒有查到結果,(關鍵顯示信息如下: not transaction founds)則可進行下一步,執
行:info exthy,detail,記錄下顯示內容的 remote 部分顯示的 seqno 和 extrba 的數值;
再執行 info dpehy ,記錄下顯示的 seqno 和 extrba 的數值,和上一步執行的結果進
行比較,兩個結果相同,表示 exthy 進程處理完所有的數據。
2) info dpehy,detail,記錄下顯示內容的 remote 部分顯示的 seqno 和 extrba 的數
值,提供給 rephy 來使用。
3)檢查 dpe 是否將數據全部傳輸到目標端
登陸 OGG 控制台執行 info rephy 記錄下顯示的 seqno 和 extrba 的數值,如果兩個
結果相同,表示 dpewf 進程處理完所有數據
4)停止 exthy 和 dpehy 進程
GGSCI>stop exthy
GGSCI>stop dpehy
5)多次執行 Info rephy,檢查隊列的 rba 的數值是否還在變化,如果無變化 ,表
示數據已經都同步完畢 則可進行下一步
6
ORACLE
6)stop rephy
7)執行 info all,所有進程都是 STOPPED,表示正常
4、執行 info all,所有進程都是 STOPPED,表示正常
說明:只有在需要停止 ext 進程時,才需要如此檢測,dpe、rep 進程則不需要;
stop er *表示停止所有進程,只停止一個進程命令為 stop <進程名>。例如進程名稱
為 dpesz,則啟動命令為 start dpehy;
- 查看進程信息
OGG 所有進程狀態共有 3 種:
- Running:正常運行
- Stopped:正常停止或未能啟動
- Abended:異常中斷;
正常的情況下,進程為 Running 或則 Stopped 狀態;一旦出現 Abended 狀態,需
查詢相關的報告文件和 dsc 文件以定位錯誤;
進入 OGG 安裝目錄並執行./ggsci 進入命令行模式;
3.1 查詢所有進程狀態 | ||||||
命令:GGSCI > info all | ||||||
Copyright OGG Software, Inc. 1995-2007 | ||||||
GGSCI (P595B_ctaisdb) 2> info all | //查詢所有進程信息 | |||||
Program | Status | Group | Lag | Time Since Chkpt | ||
MANAGER | RUNNING | |||||
EXTRACT | RUNNING | EXTKJ | 00:00:00 | 00:00:07 | ||
EXTRACT | RUNNING | DPEKJ | 00:00:00 | 00:00:09 | ||
EXTRACT | RUNNING | EXTSZ | 00:00:00 | 00:00:00 | ||
7
ORACLE
EXTRACT RUNNING DPESZ 00:00:00 00:00:00
3.2 查詢相關進程狀態
命令:GGSCI > info <進程名>,如 repxx/extxx/dpexx 查看單個進程狀態;
輸出示例如下:
Copyright OGG Software, Inc. 1995-2007 | |||
GGSCI (P595B_ctaisdb) 2> info extxx | //查詢進程 extsz 信息 | ||
EXTRACT | EXTSZ | Last Started 2008-05-11 14:49Status RUNNING | |
Checkpoint Lag | 00:00:00 (updated 00:00:01 ago) | ||
Log Read Checkpoint | File Not Available | ||
2008-05-20 11:39:02 Thread 1, Seqno 9671, RBA 238663364 | |||
Log Read Checkpoint | File /dev/rredo07 |
2008-05-20 11:39:03 Thread 2, Seqno 5287, RBA 138279848
3.3 查看進程檢查點信息
命令:GGSCI > info <進程名>,showch
示例如下:
Copyright OGG Software, Inc. 1995-2007
GGSCI>info extXX,showch //查詢 extXX 進程回滾檢查點
Read Checkpoint #1
Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 1
Sequence #: 9671 //在節點 1 上回滾需要的檢查點日志序列號
RBA: 239077904
Timestamp: 2008-05-20 11:39:07.000000
SCN: 2195.1048654191
Redo File: Not available
8
ORACLE
Current Checkpoint (position of last record read in the data source): Thread #: 1
Sequence #: 9671 RBA: 239377476
Timestamp: 2008-05-20 11:39:10.000000
SCN: 2195.1048654339
Redo File: Not Available
Read Checkpoint #2
Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 2
Sequence #: 5287 //在節點 2 上回滾需要的檢查點日志序列號
RBA: 131154160
Timestamp: 2008-05-20 11:37:42.000000
SCN: 2195.1048640151
Redo File: /dev/rredo07
Current Checkpoint (position of last record read in the data source): //當前檢查點
Thread #: 2 Sequence #: 5287
RBA: 138594492
Timestamp: 2008-05-20 11:39:14.000000
SCN: 2195.1048654739
Redo File: /dev/rredo07
說明:查看單個進程的檢查點詳細信息,包括讀取到什么位置,寫到什么位置。
特別需要注意 Recovery Checkpoint,這個檢查點記錄的是當前最早沒有提交的事務
開始的日志,如果下次需要重起則需要讀這個日志,要保證其沒有被刪除
3.4 查看進程報告
命令:GGSCI > view report <進程名>
例如 repsz 查看復制進程報告。一般在進程出現 abended 后可以在報告里面找到
9
ORACLE
錯誤信息。
示例如下:
Copyright OGG Software, Inc. 1995-2007
GGSCI > view report repsz
***********************************************************************
OGG Delivery for Oracle Version v9.5.1.1 Build 006
AIX 5L (optimized 64-bit), Oracle 9.2.0 on Nov 30 2007 11:47:10 Copyright OGG Software, Inc. 1995-2007
Starting at 2008-04-24 23:10:17
***********************************************************************
Operating System Version:
AIX
Version 5, Release 3
Node: zjzbnhdb03
Machine: 00CE7A8F4C00
soft limit | hard limit | |||
Address Space Size: | unlimited | unlimited | ||
Heap Size | : | unlimited | unlimited | |
File Size | : | unlimited | unlimited | |
CPU Time | : | unlimited | unlimited |
Process id: 1335310
***********************************************************************
** Running with the following parameters **
***********************************************************************
replicat repsz // 進程名
userid OGG, password *************
10
ORACLE
REPORT AT 01:59 //報告時間
reportrollover at 02:00 –handlecollisions –reperror default,discard
discardfile /oradata/OGG/repxm.dsc,append,megabytes 100m –ddlerror default discard
assumetargetdefs allownoopupdates dynamicresolution numfiles 3000
MAP ctais2.* ,TARGET ctais2.*;
Database Version:
Oracle9i Enterprise Edition Release 9.2.0.7.0 – 64bit Production
PL/SQL Release 9.2.0.7.0 – Production
CORE 9.2.0.7.0 Production
TNS for IBM/AIX RISC System/6000: Version 9.2.0.7.0 – Production
NLSRTL Version 9.2.0.7.0 – Production
Database Language and Character Set:
NLS_LANG = “AMERICAN_AMERICA.US7ASCII”
NLS_LANGUAGE = “AMERICAN”
NLS_TERRITORY = “AMERICA”
NLS_CHARACTERSET = “US7ASCII”
For further information on character set settings, please refer to user manual.
***********************************************************************
** Run Time Messages **
***********************************************************************
Opened trail file /oradata /OGG/dirdat/xm000000 at 2008-04-24 23:10:19
11
ORACLE
Wildcard MAP resolved (entry CTAIS2.*):
MAP CTAIS2.DM_CZRY, TARGET ctais2.DM_CZRY; Using following columns in default map by name:
CZRY_DM, SWJG_DM, CZRY_MC, SWRY_DM, QX_SWJG_DM, XM_NSRSBH, XYBZ, YXBZ
- 配置自動刪除隊列文件
- 以 oracle 用戶登錄系統,進入安裝目錄執行./ggsci;
- 執行 edit param mgr 編輯管理進程參數,加入或修改以下行
Copyright OGG Software, Inc. 1995-2007
GGSCI>edit param mgr //編輯 Manager 參數
purgeoldextracts /<OGG 安裝目錄>/dirdat/*, usecheckpoint, minkeepdays 7
其中,第一個參數為隊列位置,*可匹配備份中心所有隊列文件;第二個參數表
示是首先要保證滿足檢查點需要,不能刪除未處理隊列;第三個參數表示最小保留
多少天,后面的數字為天數。例如,如果希望只保留隊列/ggs/dirdat/xm 文件 10 天,
可以配置如下:
purgeoldextracts /oraclelog1/OGG/dirdat/xm, usecheckpoint, minkeepdays 10
3) 停止 MGR 進程,修改好參數后重啟該進程
Copyright OGG Software, Inc. 1995-2007
GGSCI > stop mgr
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)? y //輸入 y 確認停止 mgr 進程
Sending STOP request to MANAGER …
Request processed.
Manager stopped.
Copyright OGG Software, Inc. 1995-2007
GGSCI > start mgr
12
ORACLE
Manager started.
注:臨時停止 mgr 進程並不影響數據復制。
- 配置啟動 mgr 時自動啟動 extract 和 replicat 進程
- 以 OGG 用戶登錄系統,進入安裝目錄執行./ggsci;
- 執行 edit param mgr 編輯管理進程參數,加入以下行
AUTOSTART ER *
Copyright OGG Software, Inc. 1995-2007
GGSCI>edit param mgr //編輯 Manager 參數
3) 停止 MGR 進程,修改好參數后重啟該進程
Copyright OGG Software, Inc. 1995-2007
GGSCI > stop mgr //關閉進程 Manager
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)? y //輸入 y 確認停止 mgr 進程
Sending STOP request to MANAGER …
Request processed.
Manager stopped.
GGSCI > start mgr //啟動 Manager
Manager started.
注意:一般建議不用自動啟動,而是手工啟動,便於觀察狀態驗證啟動是否
成功,同時也便於客戶自己修改參數。
- 配置 mgr 定時自動重啟 extract 和 replicat 進程
OGG 具有自動重起 extract 或者 replicat 進程的功能,能夠自動恢復如網絡中
斷、數據庫臨時掛起等引起的錯誤,在系統恢復后自動重起相關進程,無需人工介
入。
1) 以 oracle 用戶登錄系統,進入安裝目錄執行 ggsci 進入命令行界面;
13
ORACLE
2) 執行 edit param mgr 編輯管理進程參數,加入以下行
AUTORESTART ER *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60
Copyright OGG Software, Inc. 1995-2007 GGSCI>edit param mgr //編輯 Manager 參數
以上參數表示每 5 分鍾嘗試重新啟動所有進程,共嘗試三次。以后每 60 分鍾
清零,再按照每 5 分鍾嘗試一次共試 3 次。
3) 停止 MGR 進程,修改好參數后重啟該進程,使修改后的參數文件生效
GGSCI > stop mgr //停止進程 Manager
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)? y //輸入 y 確認停止 mgr 進程
Sending STOP request to MANAGER …
Request processed.
Manager stopped.
GGSCI > start mgr //啟動進程 Manager
Manager started.
- 長交易的管理
在停止抽取進程前需要通過命令檢查是否存在長交易,以防止下次啟動無法找
到歸檔日志:
命令格式 gsci> info 進程名, showch
示例如下:
Copyright OGG Software, Inc. 1995-2007
ggsci> info extsz,showch //查詢進程 extsz 未提交長交易檢查點位置
Read Checkpoint #1
….
Recovery Checkpoint (position of oldest unprocessed transaction in the data source):
14
ORACLE
Thread #: 1
Sequence #: 9671
RBA: 239077904
Timestamp: 2008-05-20 11:39:07.000000
SCN: 2195.1048654191
Redo File: Not available
Current Checkpoint (position of last record read in the data source):
Thread #: 1
Sequence #: 9671
RBA: 239377476
Timestamp: 2008-05-20 11:39:10.000000
SCN: 2195.1048654339
Redo File: Not Available
Read Checkpoint #2
…..
Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 2
Sequence #: 5287 RBA: 131154160
Timestamp: 2008-05-20 11:37:42.000000
SCN: 2195.1048640151
Redo File: /dev/rredo07
Current Checkpoint (position of last record read in the data source):
Thread #: 2
Sequence #: 5287
RBA: 138594492
Timestamp: 2008-05-20 11:39:14.000000
SCN: 2195.1048654739
15
ORACLE
為了方便長交易的管理,OGG 提供了一些命令來幫助客戶和應用開發商
查找到對應長交易,並在 OGG 中予以提交或者回滾。
(一) 查看長交易
命令格式:> send extract <進程名> , showtrans [thread n] [count n]
其中,<進程名>為所要察看的進程名,如 extsz/extxm/extjx 等;Thread n 是
可選的,表示只查看其中一個節點上的未提交交易;Count n 也是可選的,表示只顯
示 n 條記錄。例如下面命令:
Copyright OGG Software, Inc. 1995-2007
Ggsci> send extract extsz , showtrans thread 1 count 10 //查詢 extsz 進程中節點 1 上最長
的 10 個交易
Sending showtrans request to EXTRACT EXTSZ
No transactions found
Oldest redo log file necessary to restart Extract is:
Redo Log Sequence Number 2, RBA 7890448.
輸出結果是以時間降序排列的所有未提交交易列表,通過 xid 可以查找到對應的
事務,請應用開發商和 DBA 幫助可以查找出未提交原因,通過數據庫予以提交或者
回滾后 OGG 的 checkpoint 會自動向前滾動。
(二) 使用 OGG 命令跳過或接受長交易
在 OGG 中強制提交或者回滾指定事務,可以通過以下命令:
跳過交易命令格式
Ggsci> SEND EXTRACT <進程名>, SKIPTRANS <5.17.27634> THREAD <2>
強制認為該交易已經提交命令格式
Ggsci>SEND EXTRACT <進程名>, FORCETRANS <5.17.27634> THREAD <1>
說明:使用這些命令只會讓 OGG 進程跳過或者認為該交易已經提交,但
並不改變數據庫中的交易,他們依舊存在於數據庫中。因此,強烈建議使用數據庫
16
ORACLE
中提交或者回滾交易而不是使用 OGG 處理。
(三) 配置長交易告警
可以在 extract 進程中配置長交易告警,參數設置如下所示:
Copyright OGG Software, Inc. 1995-2007
ggsci> edit param extsz //編輯進程 extsz 參數
在參數文件中增加如下:
warnlongtrans 12h, checkintervals 10m
exttrail /backup/OGG/dirdat/sz
….
以上表示 OGG 會每隔 10 分鍾檢查一下長交易,如果有超過 12 個小時的
長交易,OGG 會在根目錄下的 ggserr.log 里面加入一條告警信息。可以通過察看
ggserr.log 或者在 ggsci 中執行 view ggsevt 命令查看這些告警信息。以上配置可以有
助於及時發現長交易並予以處理。
- 源端和目標端數據庫增減復制表
(一) 增加復制表
在當前進程參數中,通過顯式列表的來匹配表,增加表后必須要修改配置文件,
還要為新增的表添加附加日志。步驟如下:
源端:
GGSCI 〉STOP EXT*
GGSCI> INFO ALL
目標端:
GGSCI>STOP REP*
GGSCI>INFO ALL
源端:
GGSCI>dblogin userid OGG, password XXXXXXX
GGSCI > info trandata <schema>.<table name>
17
ORACLE
如果不是 enable 則需要手動加入:
GGSCI > add trandata <schema>.<table name>
GGSCI>START EXT*
目標端:
GGSCI>START REP*
另外,當前 OGG 自動復制新增表的增刪改等 DML 操作,但不復制 DDL 操作, 所以對於新增表請首先在目標端建立表結構。如果有外鍵和 trigger,需要在目標
表臨時禁止該外鍵和 trigger。
(二) 減少復制表
如果有的表不再需要,可以在源端 drop 掉,然后到目標 drop 掉,在 OGG 的
復制參數中把該表排除掉即可。
如果其中幾個表依然存在,只是無需 OGG 復制,則可以通過以下步驟排除:
- 在源端系統上首先根據節2 描述驗證所需歸檔日志存在后通過 stop extXX 停止對應的 extXX 進程;
- 在目標端系統上 ggsci 中執行 stop repXX 停止目標端的復制進程;
- 在源端修改 ext 進程的參數文件排除所不復制的表:
Ggsci> edit param extXX
……
tableexclude hxods.TMP_*; tableexclude hxods.BAK_*; tableexclude hxods.MLOG$_*; tableexclude hxods.RUPD$_*; tableexclude hxods.KJ_*;
tableexclude myschema.mytable;
table hxods.*;
…….
在文件定義 table 的行前面加入一行“tableexclude <schema>.<tablename>;” 注
意寫全 schema 和表的名稱。
4) 在目標端修改 rep 進程參數,同樣排除該表:
18
ORACLE
GGSCI>edit param repXX
在 map 前面加入一行:
–mapexclude HXODS.SHOULIXINXI
mapexclude myschema.mytable
MAP HSODS.* ,TARGET HXODS.*;
5) 在目標端系統上啟動復制進程 repXX
GGSCI > start repXX
6) 在源端系統上啟動源端的抓取進程 extXX
GGSCI > start extXX
即可進入正常復制狀態。
- 修改表結構
當數據庫需要復制的表結構有所改變,如增加列,改變某些列的屬性如長度等表
結構改變后,可以按照下列步驟執行:
- 按照本文前面所述操作順序停止源和目標端各抽取及投遞進程(注意停源端 抽取要驗證一下歸檔日志是否存在防止無法重起),無需停止 manager 進程;
- 修改目標表結構;
- 修改源表結構;
- 如果表有主鍵,並且本次修改未修改主鍵,則可以直接啟動源和目標所有進 程繼續復制,完成本次修改;否則,如果表無主鍵或者本次修改了主鍵則需
繼續執行下列步驟;
Copyright OGG Software, Inc. 1995-2007
ggsci> dblogin userid go mldengate, password XXXXXX //登陸數據庫
Successfully logged into database.
ggsci> delete trandata schema.mytable //刪除表的附加日志
Logging of supplemental redo log data disabled for table schema.mytable ggsci> add trandata schema.mytable //增加表的附加日志
Logging of supplemental redo log data is disabled for table schema.mytable
- 如果表超過了 32 列則上述操作可能會報錯,此時需要手工進行處理,請參 考附錄三中如何手動為表刪除和增加附加日志。
- 重新啟動源端和目標端的抓取和復制進程。
19
ORACLE
- 使用 imp 導入數據的注意事項
使用 imp 工具導入數據時,由於該操作寫日志,OGG 支持復制通過 imp 導入的
數據,但不支持創建表的操作,需要在目標端事先創建表然后再在源端導入。
需要注意的是,每次 imp 都是一個 oracle 事務,如果導入的表過大(如超過 10G),
有可能超過 OGG 所配置的最大內存,請首先咨詢 OGG 技術支持。
- 表的重新再同步
如果是某些表由於各種原因造成兩邊數據不一致,需要重新進行同步,但實際業
務始終 24 小時可用,不能提供時間窗口,則可以參照以下步驟。(因較為復雜,使
用需謹慎!)
確認 ext/dpe/rep 進程均無較大延遲,否則等待追平再執行操作;
停止目標端的 rep 進程;
注意:步驟 3-5 為將源端數據通過 exp/imp 導入到目標端,客戶也可以選擇其它
初始化方式,比如 expdp/impdp。
在源端獲得當前的 scn 號。例如:
select dbms_flashback.get_system_change_number from dual;
以下以獲得的 scn 號為 1176681 為例
在源端使用 exp 導出所需重新初始化的表或者幾張表數據,並且指定到剛才記下
的 scn 號。例如:
exp <username>/<password> tables=ctais2.SB_ZSXX grants=n statistics=none triggers=n compress=n FLASHBACK_SCN=1176681
通過 ftp 傳輸到目標端;
在目標端,使用 imp 導入數據;
nohup imp OGG/XXXXX file=nanhai.dmp fromuser=ctais2 touser=ctais2 ignore=y
&
如果這些表有外鍵,在目標端檢查這些外鍵並禁止它們(記得維護 dirsql 下的禁
20
ORACLE
止和啟用外鍵的腳本 SQL);
編輯目標端對應的 rep 參數文件,在其 map 里面加入一個過濾條件,只對這些重
新初始化的表應用指定 scn 號之后的記錄(一定要注意不要修改本次初始化之外的其
它表,會造成數據丟失!):
map source.mytab, target target.mytab, filter ( @GETENV (“TRANSACTION”,
“CSN”) > 1176681 ) ;
確認參數無誤后,啟動目標端的 rep 進程;
使用 info repxx 或者 lag repxx 直到該進程追上,停止該進程去掉 filter 即可進入
正常復制。
- OGG 復制軟件升級
當源端和目標端要進行 OGG 升級時,請首先咨詢 OGG 技術支持人員。如升級
后版本無特殊要求,其操作參考如下:
1) 按正常步驟停止當前版本抓取端的進程。
OGG Command Interpreter for Oracle
Version v9.5.1.0 Build 012
Windows (optimized), Oracle 10.1.0 on Oct 29 2007 20:10:55
Copyright OGG Software, Inc. 1995-2007
GGSCI (FILESRV) 1> stop er * //停止所有的進程
EXTRACT EXTSZ is already stopped.
Sending STOP request to EXTRACT EXTSZ …
Request processed.
GGSCI > info er * //查詢進程信息
EXTRACT EXTSZ Last Started 2008-07-03 02:01 Status STOPPED //進程已經停
止
Checkpoint Lag 00:00:00 (updated 11:30:25 ago)
21
ORACLE
Log Read Checkpoint ………….
記錄反饋信息
OGG Command Interpreter for Oracle
Version v9.5.1.0 Build 012
Windows (optimized), Oracle 10.1.0 on Oct 29 2007 20:10:55
Copyright OGG Software, Inc. 1995-2007
GGSCI (FILESRV) 4> stop mgr | //停止進程 Manager | ||||
Manager is already stopped. | |||||
GGSCI (FILESRV) 5> info all | //查詢所有進程狀態 | ||||
Program | Status | Group | Lag | Time Since Chkpt | |
MANAGER | STOPPED | ||||
EXTRACT | STOPPED | EXTT1 | 00:00:00 | 11:33:38 | |
EXTRACT | STOPPED | EXTT3 | 00:00:00 | 00:05:00 | |
記錄反饋信息
- 按正常步驟停止目標備份端進程。(同第一步類似)
GGSCI > stop er *
GGSCI > info er *
GGSCI > stop mgr
記錄反饋信息
- 將舊的系統下所有文件打包備份;
- 將最新版本的軟件包 MV 到根目錄下解包安裝覆蓋舊的系統。
$ gzip -d XXXXXXX.tar.gz | //解壓縮安裝文件 |
$ tar xvf XXXXXXX.tar | //解壓縮安裝文件 |
5) 按同樣步驟升級備份數據庫主機 OGG 軟件。
22
ORACLE
- 查看設置信息是否與原版本一致,重新啟動源數據庫主機的抓取和復制進程。查 看運行狀態。
GGSCI > info er *
GGSCI > start mgr;啟動源端 ggs 軟件
GGSCI > start mgr;啟動備份端 ggs 軟件
按正常步驟啟動源端復制進程。
GGSCI > start er *
GGSCI > info er *
按正常步驟啟動目標端復制進程。
GGSCI > start rep *
GGSCI > info rep *
7) 版本升級結束。
- 數據庫升級
在數據庫升級之前應提前通報給 OGG,以便於確定復制軟件是否支持最新版本。
如果需要升級 OGG 軟件參考前面的升級步驟,如果不需要升級 OGG,則只需停止
OGG 進程進行升級,然后升級完畢重新啟動即可。
- 操作系統升級
在數據庫升級之前應提前通報給 OGG,以便於確定復制軟件是否支持最新版本。
如果需要升級 OGG 軟件參考前面的升級步驟,如果不需要升級 OGG,則只需停止
OGG 進程進行升級,然后升級完畢重新啟動即可。
- 數據庫用戶密碼加密
- OGG 的 dirprm 目錄下存放着所有參數文件,其中密碼可以使用明文或者加 密方式保存,如果需要使用加密密碼,請使用下列步驟:
GGSCI > encrypt password mypassword //生成密鑰
23
ORACLE
No key specified, using default key..
Encrypted password: AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGAEMCQFFBZHVC
將參數文件中原來的明文行
userid ggs, password mypassword
改為密文
userid ggs, password AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGAEMCQFFBZHVC,
encryptkey default
然后重新啟動進程即可
附錄一 OGG 對數據類型和對的限制
1.OGG 對數據類型和對象的限制
1.1OGG 數據類型支持
- 支持Numeric(數字類型),包括NUMBER、BINARY FLOAT、BINARY DOUBLE。 暫不支持BINARY_INTEGER和PLS_INTEGER。
- 支持所有Character(字符類型),包括CHAR、VARCHAR2、LONG、NCHAR、 NVARCHAR2。
- 支持大對象,包括CLOB、NCLOB、BLOB。但不支持BFILE
- 支持Binary(二進制類型),包括RAW和LONG RAW。
- 支持Date及timestamp類型。支持除了TIMEZONE_REGION和TIMEZONE_ABBR 類型的所有TIMESTAMP類型。
- 暫不支持多字節的XML類型。
- 支持用戶自定義類型(UDT),源端的UDT與目標端的UDT的必須相同。
- 其它支持的數據類型,包括ROWID、VARRAY、INTERVAL DAY、INTERVAL YEAR。
- OGG暫不支持的其它數據類型:
ANYDATA and ANYDATASET
ANYTYPE
MLSLABEL
24
ORACLE
URITYPE
UROWID
1.2OGG 特殊對象支持
1.2.1 有條件支持物化視圖(Materialized views)
在以下有條件限制中支持:
- 源表必須有唯一主鍵
- OGG不支持物化視圖使用”WITH ROWID”來創建,但當物化視圖LOG(不是物 化視圖自己)用”WITH ROWID”來創建時,OGG是支持的。
- 物化視圖必須是使用單個表,而不能包含joins生成的表。
- OGG不支持truncates物化視圖,但支持使用“DELETE FROM”來替代。
- 索引組織表(Index organized tables)通過物化視圖復制
- 對於OGG基於LOG的復制方式,IOT表無法直接從日志中抽取,但是可以為 IOT表建立物化視圖,通過復制該物化視圖的變化實現IOT數據變化的復制。
- 其它不支持對象
- Clustered tables。
- Nested tables。OGG只支持該類表的增加和刪除,不支持嵌入對象的更新。
- 使用壓縮(COMPRESS)選項生成或修改的表
- Views(視圖)
- Synonyms(同義表)
- REFs
2.OGG 不支持的特殊操作
以下特殊操作由於不寫日志,OGG 無法予以復制:
- Direct-path table loads(由於不進行寫 LOG 操作)
Oracle 插入數據有兩種方式:
25
ORACLE
a、常規插入:重新使用 table 中的自由空間,在已有數據中插入新數據;
維護引用完整性約束。
b、Direct-Path 插入:在表中已有數據之后插入新數據;數據直接插入數據
文件,繞過 buffer cache;已有數據中的自由空間沒有被重新利用;忽略了
引用完整性約束。Direct-Path 可以 disable redo log 和 undo log,導致 OGG
無法通過日志捕捉到數據變化。
常見的 Direct Path Load 包括:
- insert into table as select….
- create table xxx as select…
如果遇到上述操作,一般這些表數據不是原生數據,可以在復制中排除掉這
些表並通過定時備份等方式予以復制。
- /*+ APPEND */ hint。如果在應用中使用該 hint,則不會寫日志,OGG 無
法復制。
- /*+ BUFFER */ hint。如果在應用中使用該 hint,則不會寫日志,OGG 無
法復制。
- OGG 支持 imp 操作
由於 imp 操作寫日志,OGG 能夠支持 imp 操作。但由於不復制 DDL 操作,需
要事前在目標端建立表結構。如果 imp 的表過大,有可能引起 OGG 內存不夠用,報
出 105 錯誤。因此,請在使用 imp 前咨詢 OGG 技術支持。
- 數據庫和應用日常維護注意事項
4.1 Oracle 9i 中 redo parallelism 必須設置為 1
OGG基於log的復制方式,在oracle10g上可以將log_parallelism參數最大可以
設置到8,這個參數控制了並行產生REDO LOG的處理數量。但在oracle10g以下的版
本,OGG只支持該參數為1。請不要修改這個參數,否則會造成抽取數據不完整。
4.2 為表設置主鍵或者唯一索引
OGG使用主鍵和唯一索引在源和目標定位需要更新或者刪除的數據,應用開發新
26
ORACLE
增表應當盡可能帶有主鍵和唯一索引。
同時,增加主鍵也有利於提高目標端數據投遞的速度,減小復制延遲和降低資源
消耗。
4.3 保留 3-7 天歸檔日志
OGG只復制已經提交的交易,如果不提交則不會復制到目標端。在停止復制並重
新啟動時,需要找到以前沒有提交交易開始的日志。
因此,為了保證OGG能夠重新啟動,請保留3-7天歸檔日志。
4.4 避免使用不寫日志的操作
OGG 只復制日志中的交易,應當避免在應用和數據庫維護中使用 Direct Path 等
不寫日志的操作,這些操作無法復制,會導致兩端數據不一致。 OGG 復制的限制
和約束。