OGG


1 簡介
  Oracle Golden Gate軟件是一種基於日志的結構化數據復制備份軟件,它通過解析源數據庫在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到目標數據庫,從而實現源數據庫與目標數據庫同步。Oracle Golden Gate可以在異構的IT基礎結構(包括幾乎所有常用操作系統平台和數據庫平台)之間實現大量數據亞秒一級的實時復制,從而在可以在應急系統、在線報表、實時數據倉庫供應、交易跟蹤、數據同步、集中/分發、容災、數據庫升級和移植、雙業務中心等多個場景下應用。同時,Oracle Golden Gate可以實現一對一、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構

2 GoldenGate安裝
   2.1 GoldenGate的獲取
  Oracle GoldenGate(下文簡稱ogg)軟件可以通過ORACLE官方網站進行下載,根據ORACLE的版本及操作系統來下載對應版本的ogg,官方下載地址:http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html
    2.2 GoldenGate的安裝
          ogg安裝非常簡單,但需在源數據庫和目標數據庫服務器上均安裝ogg軟件即可,具體請參考以下步驟:
          1) 將壓縮包解壓到系統目錄/oracle/ogg (該路徑可以根據需要自行選擇)
          2)、 進入/oracle/ogg目錄,運行./ggsci,進入ogg管理控制台
          3)、 在ogg控制台輸入命令: create subdirs ,讓ogg創建其需要用到的目錄
          4)、 手工在ogg目錄下創建discard文件夾,mkdir  discard
          5)、 配置操作系統環境變量(請確保環境變量配置了ORACLE_HOME和ORACLE_SID)(如果不配置環境變量的話,以下涉及的路徑都需要用絕對路徑)export LD_LIBRARY_PATH=/oradata/ogg:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
          6)、 在ORACLE中創建ogg專屬用戶
        [oracle@local ~]$ sqlplus /nolog
        SQL> conn / as sysdba
        SQL> create user ogg identified by ogg;  (注:賬號密碼根據實際情況設置)
        SQL> grant connect,resource to ogg;
        SQL> grant unlimited tablespace to ogg;
        SQL> grant execute on utl_file to ogg;
           7)、 為新創建的ogg用戶執行配置腳本
            在ogg的安裝目錄下登陸sqlplus,使用sys登陸sqlplus,然后執行如下配置
             [oracle@local ~]$ sqlplus /nolog
             SQL> conn / as sysdba
             SQL> @marker_setup.sql
             SQL> @ddl_setup.sql;
             SQL> @role_setup.sql;
             SQL> grant GGS_GGSUSER_ROLE to ogg;
             SQL> @ddl_enable.sql;
             進入ogg控制台,測試用戶是否創建成功
              GGSCI (local) 1> dblogin userid ogg
              Password: ogg
              Successfully logged into database.
            通過上述步驟,ogg就安裝成功了。
3 單項復制的配置
    為了能讓ogg成功的將源數據庫及目標數據庫進行同步,下面還需要對ogg及oracle進行一系列配置(ogg支持多種復制方式,比如單項復制、雙向復制等等,因實際需要,本文僅介紹單項復制相關配置)。
首先說說ogg的一些概念:
    1)、 Manager:ogg所有服務必須依賴Manager,Manger如同ogg的總調度。
    2)、  Extract :ogg用來獲取源數據庫數據更新的,將變更的數據發送到目標數據庫
    3)、 Replicat :ogg用來接收源數據庫的更新,一旦源數據庫Extract將數據發送過來后,Replicat會自動將更新腳本同步到目標數據庫。
    3.1 源服務器配置
        1)、開啟ORACLE歸檔模式,設置日志模式
            [oracle@local ~]$ sqlplus /nolog
            SQL> conn / as sysdba
            SQL> shutdown immediate;
            SQL> startup mount;
            SQL> alter database archivelog;
            SQL> alter database force logging;
            SQL> alter database add supplemental log data;
            SQL> alter database open;
        2)、 回收站功能會影響同步,需要關閉回收站
               SQL>alter session set recyclebin=off;
              SQL>alter system set recyclebin=off;(如果不成功可以使用alter system set recyclebin=off deferred;)
        3)、配置環境變量NLS_LANG(不配置中文同步會亂碼)
              首先在oracle中查詢select userenv( 'language') from dual;
              然后將查詢的結果配置到linux環境變量中
              如export NLS_LANG=” SIMPLIFIED CHINESE_CHINA.ZHS16GBK”
     4)、登陸ogg控制台,設置需要進行同步的oracle表
          GGSCI (local) 1> dblogin userid ogg
          GGSCI (local) 1> add trandata dbuser.*
     5)、配置ogg manager&啟動manager(配置界面操作類似vi)
          GGSCI (local) 1> edit param mgr
           PORT 7809
          GGSCI (local) 1> info all(查看當前mgr狀態)
          GGSCI (local) 1> start manager(啟動manager,啟動完后可以用info all再次查看狀態)
     6)、 添加一個ogg extract進程,用於抽取源服務器數據
          GGSCI (local) 1> add extract ext4,tranlog,begin now (增加一個抽取進程ext4,ext4名                
           字可以根據需要修改)
          GGSCI (local) 1> add exttrail D: \app\Administrator\product\11.2.0\ogg11\dirdat\wf,extract ext4 (將ext4抽取的源數據變更數據寫到該文件夾,沒有設置系統環境變量的用絕對地址)
         GGSCI (local) 1> add rmttrail c:\app\Administrator\product\11.2.0\gg11\dirdat\wf,extract ext4(傳遞的路徑)
         GGSCI (local) 1> edit params ext4 (修改ext4的配置參數,txt文檔)
           extract ext4
           setenv (ORACLE_SID=REGULATORY)
           setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
           userid ogg,password oggPssword01
           rmthost 162.16.162.24,mgrport 7809 
           rmttrail C:\app\Administrator\product\11.2.0\gg11\dirdat\wf
           ddl include mapped all objname ihms2012syn_login.*;
           table ihms2012syn_login.*;配置完成后可以通過info all查看到新添加的extract的狀態
     7)、啟動ogg extract命令
           GGSCI (local) 1> start extract ext4 (等目標服務器ogg配置成功后再啟動ext)

    3.2 目標服務器配置
        1)、登陸ogg控制台
             GGSCI (local) 1> dblogin userid ogg
        2)、配置ogg manager&啟動manager(配置界面操作類似vi)
            GGSCI (local) 1> edit param mgr
            PORT 7809
            DYNAMICPORTLIST 7840-7850  --遠程隊列端口范圍
            GGSCI (local) 1> info all(查看當前mgr狀態)
        3)、 添加一個ogg replicat進程,用於更新目標服務器數據
            GGSCI (local) 1> edit params ./GLOBAL
            GSSCHEMA ogg
            CHECKPOINTTABLE ogg.checkpoint
            GGSCI (local) 2> dblogin userid ogg
                  Password: ogg
            Successfully logged into database.
            GGSCI (local) 3> add checkpointtable ogg.checkpoint
            Successfully created checkpoint table ogg.CHECKPOINT.
            GGSCI (local) 4> ADD replicat rep2 EXTTRAIL /hom/wangfan/ggs/dirdat/wf,                 checkpointtable ogg.checkpoint(沒有設置系統變量的就用絕對地址)
            GGSCI (local) 5> edit param rep2
           --Replicat group --(replicat實例)
           replicat rep2
           setenv (ORACLE_SID=jjzlfbackup)
           setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)
           --source and target definitions
           ASSUMETARGETDEFS
           --target database login --
           userid ogg, password ogg
           --file for dicarded transaction --
           discardfile /oracle/ogg/discard/rep2_discard.txt, append, megabytes 10
           --ddl support DDL
           DDL INCLUDE  MAPPED ALL objname dbuser.*;
           DDLERROR DEFAULT IGNORE RETRYOP
          --Specify table mapping ---
          map dbuser.*, target dbuser.*;
          配置完成后可以通過info all查看到新添加的extract的狀態
       4)、啟動ogg manager & replicat命令
         GGSCI (local) 1> start manager
         GGSCI (local) 1> start replicat rep2
       最后參考源服務器配置,啟動ext4

4 維護相關
      4.1 OGG常用命令
       啟動manager:start manager
       啟動extract:start extract extn
       啟動replicat:start replicat repn
       停止manager:stop manager
       停止 extract:stop extract extn
       停止replicat:stop replicat repn
       刪除extract:delete extract extn
       刪除replicat:delete extract repn
       查看ogg狀態:info all
       修改manager參數:edit params mgr
       修改extract參數:edit params extn
       修改replicat參數:edit params repn
       修改全局參數:edit params ./GLOBAL
       更新抽取
     4.2 OGG日志路徑
        $OGG_HOME/ggserr.log
     4.3 OGG開機自啟
           操作系統設置(linux):
        1)、用oracle用戶建立/oracle/ogg/autostart/info.txt,文件內容如下:
               sh dat
               start mgr
        2)、chmod x info.txt
        3)、用oracle用戶建立/oracle/ogg/autostart/startmgr.sh,文件內如下:
          /oracle/ogg/ggsci paramfile /oracle/ogg/autostart/info.txt >> /oracle/ogg/autostart/log.txt
        4)、chmod x startmgr.sh
        5)、用root用戶編輯 /etc/rc.local ,添加如下信息:
            su - oracle -c "/oracle/ogg/autostart/startmgr.sh"

OGG各組參數說明:
源mgr:
MANAGER進程參數配置說明:
PORT:指定服務監聽端口;這里以7839為例,默認端口為7809
DYNAMICPORTLIST:動態端口:可以制定最大256個可用端口的動態列表,當指定的端口不可用時,管理進程將會從列表中選擇一個可用的端口,源端和目標段的Collector、Replicat、GGSCI進程通信也會使用這些端口;
COMMENT:注釋行,也可以用--來代替;
AUTOSTART:指定在管理進程啟動時自動啟動哪些進程;
AUTORESTART:自動重啟參數設置:本處設置表示每3分鍾嘗試重新啟動所有EXTRACT進程,共嘗試5次;
PURGEOLDEXTRACTS:定期清理trail文件設置:本處設置表示對於超過3天的trail文件進行刪除。
LAGREPORT、LAGINFO、LAGCRITICAL:
定義數據延遲的預警機制:本處設置表示MGR進程每隔1小時檢查EXTRACT的延遲情況,如果超過了30分鍾就把延遲作為信息記錄到錯誤日志中,如果延遲超過了45分鍾,則把它作為警告寫到錯誤日志中。

EXTRACT組:
EXTRACT進程參數配置說明:
SETENV:配置系統環境變量
USERID/ PASSWORD:指定OGG連接數據庫的用戶名和密碼,這里使用3.4部分中創建的數據庫用戶OGG;
COMMENT:注釋行,也可以用--來代替;
TABLE:定義需復制的表,后面需以;結尾
TABLEEXCLUDE:定義需要排除的表,如果在TABLE參數中使用了通配符,可以使用該參數指定排除掉得表。
GETUPDATEAFTERS|IGNOREUPDATEAFTERS:
是否在隊列中寫入后影像,缺省復制
GETUPDATEBEFORES| IGNOREUPDATEBEFORES:
是否在隊列中寫入前影像,缺省不復制
GETUPDATES|IGNOREUPDATES:
是否復制UPDATE操作,缺省復制
GETDELETES|IGNOREDELETES:
是否復制DELETE操作,缺省復制
GETINSERTS|IGNOREINSERTS:
是否復制INSERT操作,缺省復制
GETTRUNCATES|IGNORETRUNDATES:
是否復制TRUNCATE操作,缺省不復制;
RMTHOST:指定目標系統及其GoldengateManager進程的端口號,還用於定義是否使用壓縮進行傳輸,本例中的compress為壓縮傳輸;
RMTTRAIL:指定寫入到目標斷的哪個隊列;
EXTTRAIL:指定寫入到本地的哪個隊列;
SQLEXEC:在extract進程運行時首先運行一個SQL語句;
PASSTHRU:禁止extract進程與數據庫交互,適用於Data Pump傳輸進程;
REPORT:定義自動定時報告;
STATOPTIONS:定義每次使用stat時統計數字是否需要重置;
REPORTCOUNT:報告已經處理的記錄條數統計數字;
TLTRACE:打開對於數據庫日志的跟蹤日志;
DISCARDFILE:定義discardfile文件位置,如果處理中油記錄出錯會寫入到此文件中;
DBOPTIONS:指定對於某種特定數據庫所需要的特殊參數;
TRANLOGOPTIONS:指定在解析數據庫日志時所需要的特殊參數,例如:對於裸設備,可能需要加入以下參數 rawdeviceoggset 0
WARNLONGTRANS:指定對於超過一定時間的長交易可以在gsserr.log里面寫入警告信息,本處配置為每隔3分鍾檢查一次場交易,對於超過2小時的進行警告;

配置復制進程
REPLICAT進程參數配置說明:
ASSUMETARGETDEFS:假定兩端數據結構一致使用此參數;
SOURCEDEFS:假定兩端數據結構不一致,使用此參數指定源端的數據結構定義文件,該文件需要由GlodenGate工具產生。
MAP:用於指定源端與目標端表的映射關系;
MAPEXCLUDE:用於使用在MAP中使用*匹配時排除掉指定的表;
REPERROR:定義出錯以后進程的響應,一般可以定義為兩種:
ABEND,即一旦出現錯誤即停止復制,此為缺省配置;
DISCARD,出現錯誤后繼續復制,只是把錯誤的數據放到discard文件中。
DISCARDFILE:定義discardfile文件位置,如果處理中油記錄出錯會寫入到此文件中;
SQLEXEC:在進程運行時首先運行一個SQL語句;
GROUPTRANSOPS:將小交易合並成一個大的交易進行提交,減少提交次數,降低系統IO消耗。
MAXTRANSOPS:將大交易拆分,每XX條記錄提交一次。
TABLEEXCLUDE <schema>.<materialized view>

OGG設置:
在ogg中主進程是manager進程,使用startmgr啟動。可以在mgr進程中添加一些參數用來在啟動mgr進程的同時啟動extract和replicat進程。
     1、以下是extract端的mgr參數配置
  GGSCI (gg01) 130> edit params mgr
  PORT 7809
  DYNAMICPORTLIST 7800-7909
  --啟動mgr進程啟動啟動extract進程
  AUTOSTART EXTRACT *
  --extract異常終止時會自動啟動,每5分鍾嘗試重新啟動所有的extract進程,一共嘗試3次,5分鍾清零
  AUTORESTART EXTRACT *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 10
 
    2、配置目標端replicat進程自啟動,在mgr參數中添加如下
 GGSCI (gg02) 140> edit params mgr
 PORT 7809
 --動態端口,當指定端口不可用時,會從以下列表中選擇一個可用端口
 DYNAMICPORTLIST 7800-7909
 --自動啟動replicat進程
 AUTOSTART REPLICAT *
 --當replicat進程異常終止時會自動啟動,每5分鍾嘗試重新啟動所有的replicat進程,一共嘗試5次
 AUTORESTART REPLICAT *, WAITMINUTES 2, RETRIES 5
 --mgr每隔1小時檢查extract延時情況,超5分鍾作為信息記錄log中,超過7分鍾作為警告記錄log中
 LAGREPORTHOURS 1
 LAGINFOMINUTES 5
 LAGCRITICALMINUTES 7
 --刪除10天前的trail文件
 PURGEOLDEXTRACTS /oracle/ogg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 10


OGG同步序列
1.目標及源服務器均以sys登錄sqlplus安裝sequence.sql
2.源:grant execute on ogg.updateSequence to ogg; grant execute on ogg.updateSequence to ihms2012syn_login;
3目標:GRANT EXECUTE on ogg.replicateSequence TO ogg; GRANT EXECUTE on ogg.replicateSequence TO ihms2012syn_login;
4.停止extract相關進程:edit param extractname;
  txt文檔中加入sequence ihms2012syn_login.*;

OGG抽取或復制出現錯誤
1.停止mgr
2.停止extract、replicat進程,刪除目的端dirdat所有文件。
3.刪除對應extract、replicat進程、刪除檢查點。
4.重建檢查點、重建進程。
5啟動replicat、然后啟動extract

         
         情況一:如果重新設置抓取文件和復制文件的話會丟失a_15歸檔數據。
                 停止進程 replicat 、extract
                 源 alter extract  exihms, extseqno 3, extrba 0
                    extseqno 3就是生成的文件名,extrba 數字 表示日志文件中的第幾行開始讀取
                    alter  extract  exihms ,extseqno 3, extrba 0的意思就是新生成一個wf000003文件。
                    alter extract exihms,tranlog,begin 2013-12-26 15:00
                     從某一時刻抽取歸檔日志。(這個設置很重要)
                 目標 alter rep2, extseqno 3,extrba 0
                    從wf000003文件的第一行開始讀取
          
          情況二:通過ogg文件夾中的logdump進行日志分析,然后使用alter rep2,  extseqno  3,extrba  0 精確的跳過錯誤行。
        情況三:缺什么補什么,本例中只要在目標數據庫建立一個同名的可更新的物化視圖。重啟replicat即可。


OGG配置實驗
2013-12-27:1.說明源與目標服務器均要求配置完成並啟動mgr進程
            2.配置源extract、目標replicat進程后先不啟動(replicat也可imp之后配置)
            3.源數據庫停機exp,exp導出之后開啟extract進程,源服務器可開始正常工作。extract會自動向目標服務器的指定dirdat文件夾中推送                  同步文件(此文件夾最好為空,有利用設定開始節點)
            4.目標機imp
            5.imp結束后alter repname,extseqno 0,extrba 0設置replicat從第一個文件的第一行開始讀取
            6.開啟replicat
            7.此方案減少源服務器的停機時間。

OGG出錯 ogg-01168
數據同步出問題的表沒有主鍵,客戶執行insert的時候沒有問題,在執行update的時候報了上面的錯誤。以上的報錯涉及三個參數,KEYCOLS,ALLOWNOOPUPDATES,APPLYNOOPUPDATES。下面我們分別討論這3個參數:

        1)KEYCOLS
        KEYCOLS關鍵字用於對沒有主鍵的表,指定能夠唯一標識數據的字段,這樣Oracle GoldenGate同樣可以完成數據的同步(同步UPDATE操作)。
        將目標數據庫的replicat配置修改為:
MAP CCENSE.ST_CARDOPERATORSTATTMP, TARGET CCENSE.ST_CARDOPERATORSTATTMP, KEYCOLS(cardsfid)
        重啟目標數據庫的replicat進程即可完成數據的同步,但需要注意的是,使用這種方式必須把所有的表列出來,不能指定為<username>.*。

        2)ALLOWNOOPUPDATES
        
        官方文檔解釋如下:
ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES
Valid for Replicat
Use ALLOWNOOPUPDATES and NOALLOWNOOPUPDATES to control how Replicat responds to a “noop”
operation. A no-op operation is one in which there is no effect on the target table. The
following are some examples of how this can occur.
● The source table has a column that does not exist in the target table, or has a column
that was excluded from replication (with a COLSEXCEPT clause). In either case, if that
source column is updated, there will be no target column name to use in the SET clause
within the Replicat SQL statement.
● An update is made that sets a column to the same value as the current one. The
database does not log the new value, because it did not really change. However, Oracle
GoldenGate extracts the operation as a change record because the primary key was
logged — but there is no column value for the SET clause in the Replicat SQL statement.
By default (NOALLOWNOOPUPDATES), Replicat abends with an error because these types of
operations do not update the database. With ALLOWNOOPUPDATES, Replicat ignores the
operation instead of abending. The statistics reported by Replicat will show that an update
was made, but the database will not be updated.
You can use the internal parameter APPLYNOOPUPDATES to force the update to be applied.
APPLYNOOPUPDATES overrides ALLOWNOOPUPDATES. If both are specified then updates with
only key columns will be applied. By default, Oracle GoldenGate will abend with the
following message if it only has source key columns but there is no key defined for the target table.

2011-01-25 02:28:42 GGS ERROR 160 Encountered an update for target
table TELLER, which has no unique key defined. KEYCOLS can be used to
define a key. Use ALLOWNOOPUPDATES to process the update without applying
it to the target database. Use APPLYNOOPUPDATES to force the update to
be applied using all columns in both the SET and WHERE clause.

Exceptions when error-handling is in place
If ALLOWNOOPUPDATES is specified when the HANDLECOLLISIONS or INSERTMISSINGUPDATES
parameters are being used, and if Oracle GoldenGate has all of the target key values, then
Oracle GoldenGate will not ignore the update, but instead will apply it using all key
columns in the SET clause and the WHERE clause (invoking APPLYNOOPUPDATES behavior). This
is necessary so Oracle GoldenGate can detect if the row being updated is missing. If it is,
then Oracle GoldenGate turns the update into an insert.
Default NOALLOWNOOPUPDATES (only applies if the table does not have a key)
Syntax ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES 

        該參數的含義就是在同步到目標數據庫的時候忽略出現的NO-OP操作,NO-OP操作包括目標數據庫沒有主數據庫的字段(兩邊數據庫字段不同),還有一種情況是執行UPDATE語句修改的數據和原有數據一樣,沒有發生變化。以上兩種情況叫做NO-OP操作,遭遇NO-OP操作gg會被終止。

         3)APPLYNOOPUPDATES 
        該參數的含義就是不忽略出現的NO-OP操作,而是在目標數據庫強制執行UPDATE修改操作,且只更新鍵值數據(主鍵或KEYCOLS指定的鍵值),如果表沒有主鍵,也沒有使用KEYCOLS關鍵字指定字段,那么將更新表數據的所有字段,如果沒有相應記錄,將INSERT新插入一條。
        官方文檔解釋如下:

APPLYNOOPUPDATES | NOAPPLYNOOPUPDATES
Valid for Replicat
Use APPLYNOOPUPDATES to force a “no-op” update to be applied using all columns in both the
SET and WHERE clauses. See ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES for a description of
“no-op.”
APPLYNOOPUPDATES uses whatever data is in the trail. If there is a primary key update
record, it uses the before columns from the source. If there is a regular (non-key) update,
it assumes that the after value is the same as the before value (otherwise it would be a
primary key update). The preceding assumes source and target keys are identical. If they
are not, you must use a KEYCOLS clause in the TABLE statement on the source.
Default NOAPPLYNOOPUPDATES
Syntax APPLYNOPUPDATES | NOAPPLYNOPUPDATES

        請注意,我們在討論NO-OP操作的時候,NO-OP操作並不包含UPDATE沒有主鍵的表,所以我們遇到的這個問題和ALLOWNOOPUPDATES和APPLYNOOPUPDATES這兩個參數沒有關系。通過實踐證明,在replicat配置文件中加入這兩個參數(或只加入ALLOWNOOPUPDATE參數),在更新沒有主鍵,也沒有指定KEYCOLS字段的表的時候同樣會報錯。對沒有主鍵,但加上了KEYCOLS字段后的表執行UPDATE操作成功同步了數據。

        如果沒有在源數據庫啟用記錄表的supplement log,同樣會收到以上的報錯,原因是在於沒有記錄沒有主鍵表的supplement log數據,並將其傳遞到目標數據庫,執行以下操作可以啟用記錄表的supplement log:
cd $GGHOME
./ggsci
dblogin userid <username>,password <password>
add trandata <username>.<tablename>
         完成以上操作之后,可以解決由此問題導致的update不能同步。


ora-01403  no data found的處理
此錯誤可能為源端與目標端表結構不同或數據不同而造成。
處理過程:停止源端與目標端進程,
源端:
從日志表中刪除問題對象名稱
Delete trandata 用戶名.對象名
刪除此表,重新新建此表,恢復數據。
添加至日志中。
Add trandata 用戶名.對象名

目標端:
從日志表中刪除問題對象名稱
Delete trandata 用戶名.對象名
刪除此表,重新新建此表,恢復數據。
添加至日志中。
Add trandata 用戶名.對象名

開啟源端進程。
開啟目標端進程。

一次恢復流程
源庫和目標庫的expdp、impdp
1、源庫select current_scn from v$database  確定scn。
2、修改scn號為上面當前值,從源庫導出。
expdp directory=EXPDIR FLASHBACK_SCN= 9015228145167 schemas=tjrealms2014_login dumpfile=bdc.dmp
3、目標庫導入數據impdp dumpfile=hp.dmp directory=dump_dir schemas=Xxx_login
4、生成expdp、impdp的sql:create directory dump_dir as 'e:\app\expdp';select * from dba_directories;
5、impdp dumpfile=hp.dmp directory=dump_dir schemas=Xxx_login
6、start repHp,aftercsn 9015228145167

————————————————————————————————————————————————————————————————————————————————————————————

==================================================================================================================================================================

1 簡介

  Oracle Golden Gate軟件是一種基於日志的結構化數據復制備份軟件,它通過解析源數據庫在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到目標數據庫,從而實現源數據庫與目標數據庫同步。Oracle Golden Gate可以在異構的IT基礎結構(包括幾乎所有常用操作系統平台和數據庫平台)之間實現大量數據亞秒一級的實時復制,從而在可以在應急系統、在線報表、實時數據倉庫供應、交易跟蹤、數據同步、集中/分發、容災、數據庫升級和移植、雙業務中心等多個場景下應用。同時,Oracle Golden Gate可以實現一對一、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構

 

2 GoldenGate安裝

   2.1 GoldenGate的獲取

  Oracle GoldenGate(下文簡稱ogg)軟件可以通過ORACLE官方網站進行下載,根據ORACLE的版本及操作系統來下載對應版本的ogg,官方下載地址:http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

    2.2 GoldenGate的安裝

          ogg安裝非常簡單,但需在源數據庫和目標數據庫服務器上均安裝ogg軟件即可,具體請參考以下步驟:

          1) 將壓縮包解壓到系統目錄/oracle/ogg (該路徑可以根據需要自行選擇)

          2)、 進入/oracle/ogg目錄,運行./ggsci,進入ogg管理控制台

          3)、 在ogg控制台輸入命令: create subdirs ,讓ogg創建其需要用到的目錄

          4)、 手工在ogg目錄下創建discard文件夾,mkdir  discard

          5)、 配置操作系統環境變量(請確保環境變量配置了ORACLE_HOME和ORACLE_SID)(如果不配置環境變量的話,以下涉及的路徑都需要用絕對路徑)export LD_LIBRARY_PATH=/oradata/ogg:$ORACLE_HOME/lib:$LD_LIBRARY_PATH

          6)、 在ORACLE中創建ogg專屬用戶

        [oracle@local ~]$ sqlplus /nolog

        SQL> conn / as sysdba

        SQL> create user ogg identified by ogg;  (注:賬號密碼根據實際情況設置)

        SQL> grant connect,resource to ogg;

        SQL> grant unlimited tablespace to ogg;

        SQL> grant execute on utl_file to ogg;

           7)、 為新創建的ogg用戶執行配置腳本

            在ogg的安裝目錄下登陸sqlplus,使用sys登陸sqlplus,然后執行如下配置

             [oracle@local ~]$ sqlplus /nolog

             SQL> conn / as sysdba

             SQL> @marker_setup.sql

             SQL> @ddl_setup.sql;

             SQL> @role_setup.sql;

             SQL> grant GGS_GGSUSER_ROLE to ogg;

             SQL> @ddl_enable.sql;

             進入ogg控制台,測試用戶是否創建成功

              GGSCI (local) 1> dblogin userid ogg

              Password: ogg

              Successfully logged into database.

            通過上述步驟,ogg就安裝成功了。

3 單項復制的配置

    為了能讓ogg成功的將源數據庫及目標數據庫進行同步,下面還需要對ogg及oracle進行一系列配置(ogg支持多種復制方式,比如單項復制、雙向復制等等,因實際需要,本文僅介紹單項復制相關配置)。

首先說說ogg的一些概念:

    1)、 Manager:ogg所有服務必須依賴Manager,Manger如同ogg的總調度。

    2)、  Extract :ogg用來獲取源數據庫數據更新的,將變更的數據發送到目標數據庫

    3)、 Replicat :ogg用來接收源數據庫的更新,一旦源數據庫Extract將數據發送過來后,Replicat會自動將更新腳本同步到目標數據庫。

    3.1 源服務器配置

        1)、開啟ORACLE歸檔模式,設置日志模式

            [oracle@local ~]$ sqlplus /nolog

            SQL> conn / as sysdba

            SQL> shutdown immediate;

            SQL> startup mount;

            SQL> alter database archivelog;

            SQL> alter database force logging;

            SQL> alter database add supplemental log data;

            SQL> alter database open;

        2)、 回收站功能會影響同步,需要關閉回收站

               SQL>alter session set recyclebin=off;

              SQL>alter system set recyclebin=off;(如果不成功可以使用alter system set recyclebin=off deferred;)

        3)、配置環境變量NLS_LANG(不配置中文同步會亂碼)

              首先在oracle中查詢select userenv( 'language') from dual;

              然后將查詢的結果配置到linux環境變量中

              如export NLS_LANG=” SIMPLIFIED CHINESE_CHINA.ZHS16GBK”

     4)、登陸ogg控制台,設置需要進行同步的oracle表

          GGSCI (local) 1> dblogin userid ogg

          GGSCI (local) 1> add trandata dbuser.*

     5)、配置ogg manager&啟動manager(配置界面操作類似vi)

          GGSCI (local) 1> edit param mgr

           PORT 7809

          GGSCI (local) 1> info all(查看當前mgr狀態)

          GGSCI (local) 1> start manager(啟動manager,啟動完后可以用info all再次查看狀態)

     6)、 添加一個ogg extract進程,用於抽取源服務器數據

          GGSCI (local) 1> add extract ext4,tranlog,begin now (增加一個抽取進程ext4,ext4名                

           字可以根據需要修改)

          GGSCI (local) 1> add exttrail D: \app\Administrator\product\11.2.0\ogg11\dirdat\wf,extract ext4 (將ext4抽取的源數據變更數據寫到該文件夾,沒有設置系統環境變量的用絕對地址)

         GGSCI (local) 1> add rmttrail c:\app\Administrator\product\11.2.0\gg11\dirdat\wf,extract ext4(傳遞的路徑)

         GGSCI (local) 1> edit params ext4 (修改ext4的配置參數,txt文檔)

           extract ext4

           setenv (ORACLE_SID=REGULATORY)

           setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)

           userid ogg,password oggPssword01

           rmthost 162.16.162.24,mgrport 7809 

           rmttrail C:\app\Administrator\product\11.2.0\gg11\dirdat\wf

           ddl include mapped all objname ihms2012syn_login.*;

           table ihms2012syn_login.*;配置完成后可以通過info all查看到新添加的extract的狀態

     7)、啟動ogg extract命令

           GGSCI (local) 1> start extract ext4 (等目標服務器ogg配置成功后再啟動ext)

 

    3.2 目標服務器配置

        1)、登陸ogg控制台

             GGSCI (local) 1> dblogin userid ogg

        2)、配置ogg manager&啟動manager(配置界面操作類似vi)

            GGSCI (local) 1> edit param mgr

            PORT 7809

            DYNAMICPORTLIST 7840-7850  --遠程隊列端口范圍

            GGSCI (local) 1> info all(查看當前mgr狀態)

        3)、 添加一個ogg replicat進程,用於更新目標服務器數據

            GGSCI (local) 1> edit params ./GLOBAL

            GSSCHEMA ogg

            CHECKPOINTTABLE ogg.checkpoint

            GGSCI (local) 2> dblogin userid ogg

                  Password: ogg

            Successfully logged into database.

            GGSCI (local) 3> add checkpointtable ogg.checkpoint

            Successfully created checkpoint table ogg.CHECKPOINT.

            GGSCI (local) 4> ADD replicat rep2 EXTTRAIL /hom/wangfan/ggs/dirdat/wf,                 checkpointtable ogg.checkpoint(沒有設置系統變量的就用絕對地址)

            GGSCI (local) 5> edit param rep2

           --Replicat group --(replicat實例)

           replicat rep2

           setenv (ORACLE_SID=jjzlfbackup)

           setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)

           --source and target definitions

           ASSUMETARGETDEFS

           --target database login --

           userid ogg, password ogg

           --file for dicarded transaction --

           discardfile /oracle/ogg/discard/rep2_discard.txt, append, megabytes 10

           --ddl support DDL

           DDL INCLUDE  MAPPED ALL objname dbuser.*;

           DDLERROR DEFAULT IGNORE RETRYOP

          --Specify table mapping ---

          map dbuser.*, target dbuser.*;

          配置完成后可以通過info all查看到新添加的extract的狀態

       4)、啟動ogg manager & replicat命令

         GGSCI (local) 1> start manager

         GGSCI (local) 1> start replicat rep2

       最后參考源服務器配置,啟動ext4

 

4 維護相關

      4.1 OGG常用命令

       啟動manager:start manager

       啟動extract:start extract extn

       啟動replicat:start replicat repn

       停止manager:stop manager

       停止 extract:stop extract extn

       停止replicat:stop replicat repn

       刪除extract:delete extract extn

       刪除replicat:delete extract repn

       查看ogg狀態:info all

       修改manager參數:edit params mgr

       修改extract參數:edit params extn

       修改replicat參數:edit params repn

       修改全局參數:edit params ./GLOBAL

       更新抽取

     4.2 OGG日志路徑

        $OGG_HOME/ggserr.log

     4.3 OGG開機自啟

           操作系統設置(linux):

        1)、用oracle用戶建立/oracle/ogg/autostart/info.txt,文件內容如下:

               sh dat

               start mgr

        2)、chmod x info.txt

        3)、用oracle用戶建立/oracle/ogg/autostart/startmgr.sh,文件內如下:

          /oracle/ogg/ggsci paramfile /oracle/ogg/autostart/info.txt >> /oracle/ogg/autostart/log.txt

        4)、chmod x startmgr.sh

        5)、用root用戶編輯 /etc/rc.local ,添加如下信息:

            su - oracle -c "/oracle/ogg/autostart/startmgr.sh"

 

OGG各組參數說明:

源mgr:

MANAGER進程參數配置說明:

PORT:指定服務監聽端口;這里以7839為例,默認端口為7809

DYNAMICPORTLIST:動態端口:可以制定最大256個可用端口的動態列表,當指定的端口不可用時,管理進程將會從列表中選擇一個可用的端口,源端和目標段的Collector、Replicat、GGSCI進程通信也會使用這些端口;

COMMENT:注釋行,也可以用--來代替;

AUTOSTART:指定在管理進程啟動時自動啟動哪些進程;

AUTORESTART:自動重啟參數設置:本處設置表示每3分鍾嘗試重新啟動所有EXTRACT進程,共嘗試5次;

PURGEOLDEXTRACTS:定期清理trail文件設置:本處設置表示對於超過3天的trail文件進行刪除。

LAGREPORT、LAGINFO、LAGCRITICAL:

定義數據延遲的預警機制:本處設置表示MGR進程每隔1小時檢查EXTRACT的延遲情況,如果超過了30分鍾就把延遲作為信息記錄到錯誤日志中,如果延遲超過了45分鍾,則把它作為警告寫到錯誤日志中。

 

EXTRACT組:

EXTRACT進程參數配置說明:

SETENV:配置系統環境變量

USERID/ PASSWORD:指定OGG連接數據庫的用戶名和密碼,這里使用3.4部分中創建的數據庫用戶OGG;

COMMENT:注釋行,也可以用--來代替;

TABLE:定義需復制的表,后面需以;結尾

TABLEEXCLUDE:定義需要排除的表,如果在TABLE參數中使用了通配符,可以使用該參數指定排除掉得表。

GETUPDATEAFTERS|IGNOREUPDATEAFTERS:

是否在隊列中寫入后影像,缺省復制

GETUPDATEBEFORES| IGNOREUPDATEBEFORES:

是否在隊列中寫入前影像,缺省不復制

GETUPDATES|IGNOREUPDATES:

是否復制UPDATE操作,缺省復制

GETDELETES|IGNOREDELETES:

是否復制DELETE操作,缺省復制

GETINSERTS|IGNOREINSERTS:

是否復制INSERT操作,缺省復制

GETTRUNCATES|IGNORETRUNDATES:

是否復制TRUNCATE操作,缺省不復制;

RMTHOST:指定目標系統及其GoldengateManager進程的端口號,還用於定義是否使用壓縮進行傳輸,本例中的compress為壓縮傳輸;

RMTTRAIL:指定寫入到目標斷的哪個隊列;

EXTTRAIL:指定寫入到本地的哪個隊列;

SQLEXEC:在extract進程運行時首先運行一個SQL語句;

PASSTHRU:禁止extract進程與數據庫交互,適用於Data Pump傳輸進程;

REPORT:定義自動定時報告;

STATOPTIONS:定義每次使用stat時統計數字是否需要重置;

REPORTCOUNT:報告已經處理的記錄條數統計數字;

TLTRACE:打開對於數據庫日志的跟蹤日志;

DISCARDFILE:定義discardfile文件位置,如果處理中油記錄出錯會寫入到此文件中;

DBOPTIONS:指定對於某種特定數據庫所需要的特殊參數;

TRANLOGOPTIONS:指定在解析數據庫日志時所需要的特殊參數,例如:對於裸設備,可能需要加入以下參數 rawdeviceoggset 0

WARNLONGTRANS:指定對於超過一定時間的長交易可以在gsserr.log里面寫入警告信息,本處配置為每隔3分鍾檢查一次場交易,對於超過2小時的進行警告;

 

配置復制進程

REPLICAT進程參數配置說明:

ASSUMETARGETDEFS:假定兩端數據結構一致使用此參數;

SOURCEDEFS:假定兩端數據結構不一致,使用此參數指定源端的數據結構定義文件,該文件需要由GlodenGate工具產生。

MAP:用於指定源端與目標端表的映射關系;

MAPEXCLUDE:用於使用在MAP中使用*匹配時排除掉指定的表;

REPERROR:定義出錯以后進程的響應,一般可以定義為兩種:

ABEND,即一旦出現錯誤即停止復制,此為缺省配置;

DISCARD,出現錯誤后繼續復制,只是把錯誤的數據放到discard文件中。

DISCARDFILE:定義discardfile文件位置,如果處理中油記錄出錯會寫入到此文件中;

SQLEXEC:在進程運行時首先運行一個SQL語句;

GROUPTRANSOPS:將小交易合並成一個大的交易進行提交,減少提交次數,降低系統IO消耗。

MAXTRANSOPS:將大交易拆分,每XX條記錄提交一次。

TABLEEXCLUDE <schema>.<materialized view>

 

OGG設置:

在ogg中主進程是manager進程,使用startmgr啟動。可以在mgr進程中添加一些參數用來在啟動mgr進程的同時啟動extract和replicat進程。

     1、以下是extract端的mgr參數配置

  GGSCI (gg01) 130> edit params mgr

  PORT 7809

  DYNAMICPORTLIST 7800-7909

  --啟動mgr進程啟動啟動extract進程

  AUTOSTART EXTRACT *

  --extract異常終止時會自動啟動,每5分鍾嘗試重新啟動所有的extract進程,一共嘗試3次,5分鍾清零

  AUTORESTART EXTRACT *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 10

 

    2、配置目標端replicat進程自啟動,在mgr參數中添加如下

 GGSCI (gg02) 140> edit params mgr

 PORT 7809

 --動態端口,當指定端口不可用時,會從以下列表中選擇一個可用端口

 DYNAMICPORTLIST 7800-7909

 --自動啟動replicat進程

 AUTOSTART REPLICAT *

 --當replicat進程異常終止時會自動啟動,每5分鍾嘗試重新啟動所有的replicat進程,一共嘗試5次

 AUTORESTART REPLICAT *, WAITMINUTES 2, RETRIES 5

 --mgr每隔1小時檢查extract延時情況,超5分鍾作為信息記錄log中,超過7分鍾作為警告記錄log中

 LAGREPORTHOURS 1

 LAGINFOMINUTES 5

 LAGCRITICALMINUTES 7

 --刪除10天前的trail文件

 PURGEOLDEXTRACTS /oracle/ogg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 10

 

 

OGG同步序列

1.目標及源服務器均以sys登錄sqlplus安裝sequence.sql

2.源:grant execute on ogg.updateSequence to ogg; grant execute on ogg.updateSequence to ihms2012syn_login;

3目標:GRANT EXECUTE on ogg.replicateSequence TO ogg; GRANT EXECUTE on ogg.replicateSequence TO ihms2012syn_login;

4.停止extract相關進程:edit param extractname;

  txt文檔中加入sequence ihms2012syn_login.*;

 

OGG抽取或復制出現錯誤

1.停止mgr

2.停止extract、replicat進程,刪除目的端dirdat所有文件。

3.刪除對應extract、replicat進程、刪除檢查點。

4.重建檢查點、重建進程。

5啟動replicat、然后啟動extract

 

         

         情況一:如果重新設置抓取文件和復制文件的話會丟失a_15歸檔數據。

                 停止進程 replicat 、extract

                 源 alter extract  exihms, extseqno 3, extrba 0

                    extseqno 3就是生成的文件名,extrba 數字 表示日志文件中的第幾行開始讀取

                    alter  extract  exihms ,extseqno 3, extrba 0的意思就是新生成一個wf000003文件。

                    alter extract exihms,tranlog,begin 2013-12-26 15:00

                     從某一時刻抽取歸檔日志。(這個設置很重要)

                 目標 alter rep2, extseqno 3,extrba 0

                    從wf000003文件的第一行開始讀取

          

          情況二:通過ogg文件夾中的logdump進行日志分析,然后使用alter rep2,  extseqno  3,extrba  0 精確的跳過錯誤行。

        情況三:缺什么補什么,本例中只要在目標數據庫建立一個同名的可更新的物化視圖。重啟replicat即可。

 

 

OGG配置實驗

2013-12-27:1.說明源與目標服務器均要求配置完成並啟動mgr進程

            2.配置源extract、目標replicat進程后先不啟動(replicat也可imp之后配置)

            3.源數據庫停機exp,exp導出之后開啟extract進程,源服務器可開始正常工作。extract會自動向目標服務器的指定dirdat文件夾中推送                  同步文件(此文件夾最好為空,有利用設定開始節點)

            4.目標機imp

            5.imp結束后alter repname,extseqno 0,extrba 0設置replicat從第一個文件的第一行開始讀取

            6.開啟replicat

            7.此方案減少源服務器的停機時間。

 

OGG出錯 ogg-01168

數據同步出問題的表沒有主鍵,客戶執行insert的時候沒有問題,在執行update的時候報了上面的錯誤。以上的報錯涉及三個參數,KEYCOLS,ALLOWNOOPUPDATES,APPLYNOOPUPDATES。下面我們分別討論這3個參數:

 

        1)KEYCOLS

        KEYCOLS關鍵字用於對沒有主鍵的表,指定能夠唯一標識數據的字段,這樣Oracle GoldenGate同樣可以完成數據的同步(同步UPDATE操作)。

        將目標數據庫的replicat配置修改為:

MAP CCENSE.ST_CARDOPERATORSTATTMP, TARGET CCENSE.ST_CARDOPERATORSTATTMP, KEYCOLS(cardsfid)

        重啟目標數據庫的replicat進程即可完成數據的同步,但需要注意的是,使用這種方式必須把所有的表列出來,不能指定為<username>.*。

 

        2)ALLOWNOOPUPDATES

        

        官方文檔解釋如下:

ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES

Valid for Replicat

Use ALLOWNOOPUPDATES and NOALLOWNOOPUPDATES to control how Replicat responds to a “noop”

operation. A no-op operation is one in which there is no effect on the target table. The

following are some examples of how this can occur.

● The source table has a column that does not exist in the target table, or has a column

that was excluded from replication (with a COLSEXCEPT clause). In either case, if that

source column is updated, there will be no target column name to use in the SET clause

within the Replicat SQL statement.

● An update is made that sets a column to the same value as the current one. The

database does not log the new value, because it did not really change. However, Oracle

GoldenGate extracts the operation as a change record because the primary key was

logged — but there is no column value for the SET clause in the Replicat SQL statement.

By default (NOALLOWNOOPUPDATES), Replicat abends with an error because these types of

operations do not update the database. With ALLOWNOOPUPDATES, Replicat ignores the

operation instead of abending. The statistics reported by Replicat will show that an update

was made, but the database will not be updated.

You can use the internal parameter APPLYNOOPUPDATES to force the update to be applied.

APPLYNOOPUPDATES overrides ALLOWNOOPUPDATES. If both are specified then updates with

only key columns will be applied. By default, Oracle GoldenGate will abend with the

following message if it only has source key columns but there is no key defined for the target table.

 

2011-01-25 02:28:42 GGS ERROR 160 Encountered an update for target

table TELLER, which has no unique key defined. KEYCOLS can be used to

define a key. Use ALLOWNOOPUPDATES to process the update without applying

it to the target database. Use APPLYNOOPUPDATES to force the update to

be applied using all columns in both the SET and WHERE clause.

 

Exceptions when error-handling is in place

If ALLOWNOOPUPDATES is specified when the HANDLECOLLISIONS or INSERTMISSINGUPDATES

parameters are being used, and if Oracle GoldenGate has all of the target key values, then

Oracle GoldenGate will not ignore the update, but instead will apply it using all key

columns in the SET clause and the WHERE clause (invoking APPLYNOOPUPDATES behavior). This

is necessary so Oracle GoldenGate can detect if the row being updated is missing. If it is,

then Oracle GoldenGate turns the update into an insert.

Default NOALLOWNOOPUPDATES (only applies if the table does not have a key)

Syntax ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES 

 

        該參數的含義就是在同步到目標數據庫的時候忽略出現的NO-OP操作,NO-OP操作包括目標數據庫沒有主數據庫的字段(兩邊數據庫字段不同),還有一種情況是執行UPDATE語句修改的數據和原有數據一樣,沒有發生變化。以上兩種情況叫做NO-OP操作,遭遇NO-OP操作gg會被終止。

 

         3)APPLYNOOPUPDATES 

        該參數的含義就是不忽略出現的NO-OP操作,而是在目標數據庫強制執行UPDATE修改操作,且只更新鍵值數據(主鍵或KEYCOLS指定的鍵值),如果表沒有主鍵,也沒有使用KEYCOLS關鍵字指定字段,那么將更新表數據的所有字段,如果沒有相應記錄,將INSERT新插入一條。

        官方文檔解釋如下:

 

APPLYNOOPUPDATES | NOAPPLYNOOPUPDATES

Valid for Replicat

Use APPLYNOOPUPDATES to force a “no-op” update to be applied using all columns in both the

SET and WHERE clauses. See ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES for a description of

“no-op.”

APPLYNOOPUPDATES uses whatever data is in the trail. If there is a primary key update

record, it uses the before columns from the source. If there is a regular (non-key) update,

it assumes that the after value is the same as the before value (otherwise it would be a

primary key update). The preceding assumes source and target keys are identical. If they

are not, you must use a KEYCOLS clause in the TABLE statement on the source.

Default NOAPPLYNOOPUPDATES

Syntax APPLYNOPUPDATES | NOAPPLYNOPUPDATES

 

        請注意,我們在討論NO-OP操作的時候,NO-OP操作並不包含UPDATE沒有主鍵的表,所以我們遇到的這個問題和ALLOWNOOPUPDATES和APPLYNOOPUPDATES這兩個參數沒有關系。通過實踐證明,在replicat配置文件中加入這兩個參數(或只加入ALLOWNOOPUPDATE參數),在更新沒有主鍵,也沒有指定KEYCOLS字段的表的時候同樣會報錯。對沒有主鍵,但加上了KEYCOLS字段后的表執行UPDATE操作成功同步了數據。

 

        如果沒有在源數據庫啟用記錄表的supplement log,同樣會收到以上的報錯,原因是在於沒有記錄沒有主鍵表的supplement log數據,並將其傳遞到目標數據庫,執行以下操作可以啟用記錄表的supplement log:

cd $GGHOME

./ggsci

dblogin userid <username>,password <password>

add trandata <username>.<tablename>

         完成以上操作之后,可以解決由此問題導致的update不能同步。

 

 

ora-01403  no data found的處理

此錯誤可能為源端與目標端表結構不同或數據不同而造成。

處理過程:停止源端與目標端進程,

源端:

從日志表中刪除問題對象名稱

Delete trandata 用戶名.對象名

刪除此表,重新新建此表,恢復數據。

添加至日志中。

Add trandata 用戶名.對象名

 

目標端:

從日志表中刪除問題對象名稱

Delete trandata 用戶名.對象名

刪除此表,重新新建此表,恢復數據。

添加至日志中。

Add trandata 用戶名.對象名

 

開啟源端進程。

開啟目標端進程。

 

一次恢復流程

源庫和目標庫的expdp、impdp

1、源庫select current_scn from v$database  確定scn。

2、修改scn號為上面當前值,從源庫導出。

expdp directory=EXPDIR FLASHBACK_SCN= 9015228145167 schemas=tjrealms2014_login dumpfile=bdc.dmp

3、目標庫導入數據impdp dumpfile=hp.dmp directory=dump_dir schemas=Xxx_login

4、生成expdp、impdp的sql:create directory dump_dir as 'e:\app\expdp';select * from dba_directories;

5、impdp dumpfile=hp.dmp directory=dump_dir schemas=Xxx_login

6、start repHp,aftercsn 9015228145167

 

 

 

 

 

1 簡介  Oracle Golden Gate軟件是一種基於日志的結構化數據復制備份軟件,它通過解析源數據庫在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到目標數據庫,從而實現源數據庫與目標數據庫同步。Oracle Golden Gate可以在異構的IT基礎結構(包括幾乎所有常用操作系統平台和數據庫平台)之間實現大量數據亞秒一級的實時復制,從而在可以在應急系統、在線報表、實時數據倉庫供應、交易跟蹤、數據同步、集中/分發、容災、數據庫升級和移植、雙業務中心等多個場景下應用。同時,Oracle Golden Gate可以實現一對一、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構
2 GoldenGate安裝   2.1 GoldenGate的獲取  Oracle GoldenGate(下文簡稱ogg)軟件可以通過ORACLE官方網站進行下載,根據ORACLE的版本及操作系統來下載對應版本的ogg,官方下載地址:http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html    2.2 GoldenGate的安裝          ogg安裝非常簡單,但需在源數據庫和目標數據庫服務器上均安裝ogg軟件即可,具體請參考以下步驟:          1) 將壓縮包解壓到系統目錄/oracle/ogg (該路徑可以根據需要自行選擇)          2)、 進入/oracle/ogg目錄,運行./ggsci,進入ogg管理控制台          3)、 在ogg控制台輸入命令: create subdirs ,讓ogg創建其需要用到的目錄          4)、 手工在ogg目錄下創建discard文件夾,mkdir  discard          5)、 配置操作系統環境變量(請確保環境變量配置了ORACLE_HOME和ORACLE_SID)(如果不配置環境變量的話,以下涉及的路徑都需要用絕對路徑)export LD_LIBRARY_PATH=/oradata/ogg:$ORACLE_HOME/lib:$LD_LIBRARY_PATH          6)、 在ORACLE中創建ogg專屬用戶        [oracle@local ~]$ sqlplus /nolog        SQL> conn / as sysdba        SQL> create user ogg identified by ogg;  (注:賬號密碼根據實際情況設置)        SQL> grant connect,resource to ogg;        SQL> grant unlimited tablespace to ogg;        SQL> grant execute on utl_file to ogg;           7)、 為新創建的ogg用戶執行配置腳本            在ogg的安裝目錄下登陸sqlplus,使用sys登陸sqlplus,然后執行如下配置             [oracle@local ~]$ sqlplus /nolog             SQL> conn / as sysdba             SQL> @marker_setup.sql             SQL> @ddl_setup.sql;             SQL> @role_setup.sql;             SQL> grant GGS_GGSUSER_ROLE to ogg;             SQL> @ddl_enable.sql;             進入ogg控制台,測試用戶是否創建成功              GGSCI (local) 1> dblogin userid ogg              Password: ogg              Successfully logged into database.            通過上述步驟,ogg就安裝成功了。3 單項復制的配置    為了能讓ogg成功的將源數據庫及目標數據庫進行同步,下面還需要對ogg及oracle進行一系列配置(ogg支持多種復制方式,比如單項復制、雙向復制等等,因實際需要,本文僅介紹單項復制相關配置)。首先說說ogg的一些概念:    1)、 Manager:ogg所有服務必須依賴Manager,Manger如同ogg的總調度。    2)、  Extract :ogg用來獲取源數據庫數據更新的,將變更的數據發送到目標數據庫    3)、 Replicat :ogg用來接收源數據庫的更新,一旦源數據庫Extract將數據發送過來后,Replicat會自動將更新腳本同步到目標數據庫。    3.1 源服務器配置        1)、開啟ORACLE歸檔模式,設置日志模式            [oracle@local ~]$ sqlplus /nolog            SQL> conn / as sysdba            SQL> shutdown immediate;            SQL> startup mount;            SQL> alter database archivelog;            SQL> alter database force logging;            SQL> alter database add supplemental log data;            SQL> alter database open;        2)、 回收站功能會影響同步,需要關閉回收站               SQL>alter session set recyclebin=off;              SQL>alter system set recyclebin=off;(如果不成功可以使用alter system set recyclebin=off deferred;)        3)、配置環境變量NLS_LANG(不配置中文同步會亂碼)              首先在oracle中查詢select userenv( 'language') from dual;              然后將查詢的結果配置到linux環境變量中              如export NLS_LANG=” SIMPLIFIED CHINESE_CHINA.ZHS16GBK”     4)、登陸ogg控制台,設置需要進行同步的oracle表          GGSCI (local) 1> dblogin userid ogg          GGSCI (local) 1> add trandata dbuser.*     5)、配置ogg manager&啟動manager(配置界面操作類似vi)          GGSCI (local) 1> edit param mgr           PORT 7809          GGSCI (local) 1> info all(查看當前mgr狀態)          GGSCI (local) 1> start manager(啟動manager,啟動完后可以用info all再次查看狀態)     6)、 添加一個ogg extract進程,用於抽取源服務器數據          GGSCI (local) 1> add extract ext4,tranlog,begin now (增加一個抽取進程ext4,ext4名                           字可以根據需要修改)          GGSCI (local) 1> add exttrail D: \app\Administrator\product\11.2.0\ogg11\dirdat\wf,extract ext4 (將ext4抽取的源數據變更數據寫到該文件夾,沒有設置系統環境變量的用絕對地址)         GGSCI (local) 1> add rmttrail c:\app\Administrator\product\11.2.0\gg11\dirdat\wf,extract ext4(傳遞的路徑)         GGSCI (local) 1> edit params ext4 (修改ext4的配置參數,txt文檔)           extract ext4           setenv (ORACLE_SID=REGULATORY)           setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)           userid ogg,password oggPssword01           rmthost 162.16.162.24,mgrport 7809            rmttrail C:\app\Administrator\product\11.2.0\gg11\dirdat\wf           ddl include mapped all objname ihms2012syn_login.*;           table ihms2012syn_login.*;配置完成后可以通過info all查看到新添加的extract的狀態     7)、啟動ogg extract命令           GGSCI (local) 1> start extract ext4 (等目標服務器ogg配置成功后再啟動ext)
    3.2 目標服務器配置        1)、登陸ogg控制台             GGSCI (local) 1> dblogin userid ogg        2)、配置ogg manager&啟動manager(配置界面操作類似vi)            GGSCI (local) 1> edit param mgr            PORT 7809            DYNAMICPORTLIST 7840-7850  --遠程隊列端口范圍            GGSCI (local) 1> info all(查看當前mgr狀態)        3)、 添加一個ogg replicat進程,用於更新目標服務器數據            GGSCI (local) 1> edit params ./GLOBAL            GSSCHEMA ogg            CHECKPOINTTABLE ogg.checkpoint            GGSCI (local) 2> dblogin userid ogg                  Password: ogg            Successfully logged into database.            GGSCI (local) 3> add checkpointtable ogg.checkpoint            Successfully created checkpoint table ogg.CHECKPOINT.            GGSCI (local) 4> ADD replicat rep2 EXTTRAIL /hom/wangfan/ggs/dirdat/wf,                 checkpointtable ogg.checkpoint(沒有設置系統變量的就用絕對地址)            GGSCI (local) 5> edit param rep2           --Replicat group --(replicat實例)           replicat rep2           setenv (ORACLE_SID=jjzlfbackup)           setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)           --source and target definitions           ASSUMETARGETDEFS           --target database login --           userid ogg, password ogg           --file for dicarded transaction --           discardfile /oracle/ogg/discard/rep2_discard.txt, append, megabytes 10           --ddl support DDL           DDL INCLUDE  MAPPED ALL objname dbuser.*;           DDLERROR DEFAULT IGNORE RETRYOP          --Specify table mapping ---          map dbuser.*, target dbuser.*;          配置完成后可以通過info all查看到新添加的extract的狀態       4)、啟動ogg manager & replicat命令         GGSCI (local) 1> start manager         GGSCI (local) 1> start replicat rep2       最后參考源服務器配置,啟動ext4
4 維護相關      4.1 OGG常用命令       啟動manager:start manager       啟動extract:start extract extn       啟動replicat:start replicat repn       停止manager:stop manager       停止 extract:stop extract extn       停止replicat:stop replicat repn       刪除extract:delete extract extn       刪除replicat:delete extract repn       查看ogg狀態:info all       修改manager參數:edit params mgr       修改extract參數:edit params extn       修改replicat參數:edit params repn       修改全局參數:edit params ./GLOBAL       更新抽取     4.2 OGG日志路徑        $OGG_HOME/ggserr.log     4.3 OGG開機自啟           操作系統設置(linux):        1)、用oracle用戶建立/oracle/ogg/autostart/info.txt,文件內容如下:               sh dat               start mgr        2)、chmod x info.txt        3)、用oracle用戶建立/oracle/ogg/autostart/startmgr.sh,文件內如下:          /oracle/ogg/ggsci paramfile /oracle/ogg/autostart/info.txt >> /oracle/ogg/autostart/log.txt        4)、chmod x startmgr.sh        5)、用root用戶編輯 /etc/rc.local ,添加如下信息:            su - oracle -c "/oracle/ogg/autostart/startmgr.sh"
OGG各組參數說明:源mgr:MANAGER進程參數配置說明:PORT:指定服務監聽端口;這里以7839為例,默認端口為7809DYNAMICPORTLIST:動態端口:可以制定最大256個可用端口的動態列表,當指定的端口不可用時,管理進程將會從列表中選擇一個可用的端口,源端和目標段的Collector、Replicat、GGSCI進程通信也會使用這些端口;COMMENT:注釋行,也可以用--來代替;AUTOSTART:指定在管理進程啟動時自動啟動哪些進程;AUTORESTART:自動重啟參數設置:本處設置表示每3分鍾嘗試重新啟動所有EXTRACT進程,共嘗試5次;PURGEOLDEXTRACTS:定期清理trail文件設置:本處設置表示對於超過3天的trail文件進行刪除。LAGREPORT、LAGINFO、LAGCRITICAL:定義數據延遲的預警機制:本處設置表示MGR進程每隔1小時檢查EXTRACT的延遲情況,如果超過了30分鍾就把延遲作為信息記錄到錯誤日志中,如果延遲超過了45分鍾,則把它作為警告寫到錯誤日志中。
EXTRACT組:EXTRACT進程參數配置說明:SETENV:配置系統環境變量USERID/ PASSWORD:指定OGG連接數據庫的用戶名和密碼,這里使用3.4部分中創建的數據庫用戶OGG;COMMENT:注釋行,也可以用--來代替;TABLE:定義需復制的表,后面需以;結尾TABLEEXCLUDE:定義需要排除的表,如果在TABLE參數中使用了通配符,可以使用該參數指定排除掉得表。GETUPDATEAFTERS|IGNOREUPDATEAFTERS:是否在隊列中寫入后影像,缺省復制GETUPDATEBEFORES| IGNOREUPDATEBEFORES:是否在隊列中寫入前影像,缺省不復制GETUPDATES|IGNOREUPDATES:是否復制UPDATE操作,缺省復制GETDELETES|IGNOREDELETES:是否復制DELETE操作,缺省復制GETINSERTS|IGNOREINSERTS:是否復制INSERT操作,缺省復制GETTRUNCATES|IGNORETRUNDATES:是否復制TRUNCATE操作,缺省不復制;RMTHOST:指定目標系統及其GoldengateManager進程的端口號,還用於定義是否使用壓縮進行傳輸,本例中的compress為壓縮傳輸;RMTTRAIL:指定寫入到目標斷的哪個隊列;EXTTRAIL:指定寫入到本地的哪個隊列;SQLEXEC:在extract進程運行時首先運行一個SQL語句;PASSTHRU:禁止extract進程與數據庫交互,適用於Data Pump傳輸進程;REPORT:定義自動定時報告;STATOPTIONS:定義每次使用stat時統計數字是否需要重置;REPORTCOUNT:報告已經處理的記錄條數統計數字;TLTRACE:打開對於數據庫日志的跟蹤日志;DISCARDFILE:定義discardfile文件位置,如果處理中油記錄出錯會寫入到此文件中;DBOPTIONS:指定對於某種特定數據庫所需要的特殊參數;TRANLOGOPTIONS:指定在解析數據庫日志時所需要的特殊參數,例如:對於裸設備,可能需要加入以下參數 rawdeviceoggset 0WARNLONGTRANS:指定對於超過一定時間的長交易可以在gsserr.log里面寫入警告信息,本處配置為每隔3分鍾檢查一次場交易,對於超過2小時的進行警告;
配置復制進程REPLICAT進程參數配置說明:ASSUMETARGETDEFS:假定兩端數據結構一致使用此參數;SOURCEDEFS:假定兩端數據結構不一致,使用此參數指定源端的數據結構定義文件,該文件需要由GlodenGate工具產生。MAP:用於指定源端與目標端表的映射關系;MAPEXCLUDE:用於使用在MAP中使用*匹配時排除掉指定的表;REPERROR:定義出錯以后進程的響應,一般可以定義為兩種:ABEND,即一旦出現錯誤即停止復制,此為缺省配置;DISCARD,出現錯誤后繼續復制,只是把錯誤的數據放到discard文件中。DISCARDFILE:定義discardfile文件位置,如果處理中油記錄出錯會寫入到此文件中;SQLEXEC:在進程運行時首先運行一個SQL語句;GROUPTRANSOPS:將小交易合並成一個大的交易進行提交,減少提交次數,降低系統IO消耗。MAXTRANSOPS:將大交易拆分,每XX條記錄提交一次。TABLEEXCLUDE <schema>.<materialized view>
OGG設置:在ogg中主進程是manager進程,使用startmgr啟動。可以在mgr進程中添加一些參數用來在啟動mgr進程的同時啟動extract和replicat進程。     1、以下是extract端的mgr參數配置  GGSCI (gg01) 130> edit params mgr  PORT 7809  DYNAMICPORTLIST 7800-7909  --啟動mgr進程啟動啟動extract進程  AUTOSTART EXTRACT *  --extract異常終止時會自動啟動,每5分鍾嘗試重新啟動所有的extract進程,一共嘗試3次,5分鍾清零  AUTORESTART EXTRACT *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 10     2、配置目標端replicat進程自啟動,在mgr參數中添加如下 GGSCI (gg02) 140> edit params mgr PORT 7809 --動態端口,當指定端口不可用時,會從以下列表中選擇一個可用端口 DYNAMICPORTLIST 7800-7909 --自動啟動replicat進程 AUTOSTART REPLICAT * --當replicat進程異常終止時會自動啟動,每5分鍾嘗試重新啟動所有的replicat進程,一共嘗試5次 AUTORESTART REPLICAT *, WAITMINUTES 2, RETRIES 5 --mgr每隔1小時檢查extract延時情況,超5分鍾作為信息記錄log中,超過7分鍾作為警告記錄log中 LAGREPORTHOURS 1 LAGINFOMINUTES 5 LAGCRITICALMINUTES 7 --刪除10天前的trail文件 PURGEOLDEXTRACTS /oracle/ogg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 10

OGG同步序列1.目標及源服務器均以sys登錄sqlplus安裝sequence.sql2.源:grant execute on ogg.updateSequence to ogg; grant execute on ogg.updateSequence to ihms2012syn_login;3目標:GRANT EXECUTE on ogg.replicateSequence TO ogg; GRANT EXECUTE on ogg.replicateSequence TO ihms2012syn_login;4.停止extract相關進程:edit param extractname;  txt文檔中加入sequence ihms2012syn_login.*;
OGG抽取或復制出現錯誤1.停止mgr2.停止extract、replicat進程,刪除目的端dirdat所有文件。3.刪除對應extract、replicat進程、刪除檢查點。4.重建檢查點、重建進程。5啟動replicat、然后啟動extract
                  情況一:如果重新設置抓取文件和復制文件的話會丟失a_15歸檔數據。                 停止進程 replicat 、extract                 源 alter extract  exihms, extseqno 3, extrba 0                    extseqno 3就是生成的文件名,extrba 數字 表示日志文件中的第幾行開始讀取                    alter  extract  exihms ,extseqno 3, extrba 0的意思就是新生成一個wf000003文件。                    alter extract exihms,tranlog,begin 2013-12-26 15:00                     從某一時刻抽取歸檔日志。(這個設置很重要)                 目標 alter rep2, extseqno 3,extrba 0                    從wf000003文件的第一行開始讀取                    情況二:通過ogg文件夾中的logdump進行日志分析,然后使用alter rep2,  extseqno  3,extrba  0 精確的跳過錯誤行。        情況三:缺什么補什么,本例中只要在目標數據庫建立一個同名的可更新的物化視圖。重啟replicat即可。

OGG配置實驗2013-12-27:1.說明源與目標服務器均要求配置完成並啟動mgr進程            2.配置源extract、目標replicat進程后先不啟動(replicat也可imp之后配置)            3.源數據庫停機exp,exp導出之后開啟extract進程,源服務器可開始正常工作。extract會自動向目標服務器的指定dirdat文件夾中推送                  同步文件(此文件夾最好為空,有利用設定開始節點)            4.目標機imp            5.imp結束后alter repname,extseqno 0,extrba 0設置replicat從第一個文件的第一行開始讀取            6.開啟replicat            7.此方案減少源服務器的停機時間。
OGG出錯 ogg-01168數據同步出問題的表沒有主鍵,客戶執行insert的時候沒有問題,在執行update的時候報了上面的錯誤。以上的報錯涉及三個參數,KEYCOLS,ALLOWNOOPUPDATES,APPLYNOOPUPDATES。下面我們分別討論這3個參數:
        1)KEYCOLS        KEYCOLS關鍵字用於對沒有主鍵的表,指定能夠唯一標識數據的字段,這樣Oracle GoldenGate同樣可以完成數據的同步(同步UPDATE操作)。        將目標數據庫的replicat配置修改為:MAP CCENSE.ST_CARDOPERATORSTATTMP, TARGET CCENSE.ST_CARDOPERATORSTATTMP, KEYCOLS(cardsfid)        重啟目標數據庫的replicat進程即可完成數據的同步,但需要注意的是,使用這種方式必須把所有的表列出來,不能指定為<username>.*。
        2)ALLOWNOOPUPDATES                官方文檔解釋如下:ALLOWNOOPUPDATES | NOALLOWNOOPUPDATESValid for ReplicatUse ALLOWNOOPUPDATES and NOALLOWNOOPUPDATES to control how Replicat responds to a “noop”operation. A no-op operation is one in which there is no effect on the target table. Thefollowing are some examples of how this can occur.● The source table has a column that does not exist in the target table, or has a columnthat was excluded from replication (with a COLSEXCEPT clause). In either case, if thatsource column is updated, there will be no target column name to use in the SET clausewithin the Replicat SQL statement.● An update is made that sets a column to the same value as the current one. Thedatabase does not log the new value, because it did not really change. However, OracleGoldenGate extracts the operation as a change record because the primary key waslogged — but there is no column value for the SET clause in the Replicat SQL statement.By default (NOALLOWNOOPUPDATES), Replicat abends with an error because these types ofoperations do not update the database. With ALLOWNOOPUPDATES, Replicat ignores theoperation instead of abending. The statistics reported by Replicat will show that an updatewas made, but the database will not be updated.You can use the internal parameter APPLYNOOPUPDATES to force the update to be applied.APPLYNOOPUPDATES overrides ALLOWNOOPUPDATES. If both are specified then updates withonly key columns will be applied. By default, Oracle GoldenGate will abend with thefollowing message if it only has source key columns but there is no key defined for the target table.
2011-01-25 02:28:42 GGS ERROR 160 Encountered an update for targettable TELLER, which has no unique key defined. KEYCOLS can be used todefine a key. Use ALLOWNOOPUPDATES to process the update without applyingit to the target database. Use APPLYNOOPUPDATES to force the update tobe applied using all columns in both the SET and WHERE clause.
Exceptions when error-handling is in placeIf ALLOWNOOPUPDATES is specified when the HANDLECOLLISIONS or INSERTMISSINGUPDATESparameters are being used, and if Oracle GoldenGate has all of the target key values, thenOracle GoldenGate will not ignore the update, but instead will apply it using all keycolumns in the SET clause and the WHERE clause (invoking APPLYNOOPUPDATES behavior). Thisis necessary so Oracle GoldenGate can detect if the row being updated is missing. If it is,then Oracle GoldenGate turns the update into an insert.Default NOALLOWNOOPUPDATES (only applies if the table does not have a key)Syntax ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES 
        該參數的含義就是在同步到目標數據庫的時候忽略出現的NO-OP操作,NO-OP操作包括目標數據庫沒有主數據庫的字段(兩邊數據庫字段不同),還有一種情況是執行UPDATE語句修改的數據和原有數據一樣,沒有發生變化。以上兩種情況叫做NO-OP操作,遭遇NO-OP操作gg會被終止。
         3)APPLYNOOPUPDATES         該參數的含義就是不忽略出現的NO-OP操作,而是在目標數據庫強制執行UPDATE修改操作,且只更新鍵值數據(主鍵或KEYCOLS指定的鍵值),如果表沒有主鍵,也沒有使用KEYCOLS關鍵字指定字段,那么將更新表數據的所有字段,如果沒有相應記錄,將INSERT新插入一條。        官方文檔解釋如下:
APPLYNOOPUPDATES | NOAPPLYNOOPUPDATESValid for ReplicatUse APPLYNOOPUPDATES to force a “no-op” update to be applied using all columns in both theSET and WHERE clauses. See ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES for a description of“no-op.”APPLYNOOPUPDATES uses whatever data is in the trail. If there is a primary key updaterecord, it uses the before columns from the source. If there is a regular (non-key) update,it assumes that the after value is the same as the before value (otherwise it would be aprimary key update). The preceding assumes source and target keys are identical. If theyare not, you must use a KEYCOLS clause in the TABLE statement on the source.Default NOAPPLYNOOPUPDATESSyntax APPLYNOPUPDATES | NOAPPLYNOPUPDATES
        請注意,我們在討論NO-OP操作的時候,NO-OP操作並不包含UPDATE沒有主鍵的表,所以我們遇到的這個問題和ALLOWNOOPUPDATES和APPLYNOOPUPDATES這兩個參數沒有關系。通過實踐證明,在replicat配置文件中加入這兩個參數(或只加入ALLOWNOOPUPDATE參數),在更新沒有主鍵,也沒有指定KEYCOLS字段的表的時候同樣會報錯。對沒有主鍵,但加上了KEYCOLS字段后的表執行UPDATE操作成功同步了數據。
        如果沒有在源數據庫啟用記錄表的supplement log,同樣會收到以上的報錯,原因是在於沒有記錄沒有主鍵表的supplement log數據,並將其傳遞到目標數據庫,執行以下操作可以啟用記錄表的supplement log:cd $GGHOME./ggscidblogin userid <username>,password <password>add trandata <username>.<tablename>         完成以上操作之后,可以解決由此問題導致的update不能同步。

ora-01403  no data found的處理此錯誤可能為源端與目標端表結構不同或數據不同而造成。處理過程:停止源端與目標端進程,源端:從日志表中刪除問題對象名稱Delete trandata 用戶名.對象名刪除此表,重新新建此表,恢復數據。添加至日志中。Add trandata 用戶名.對象名
目標端:從日志表中刪除問題對象名稱Delete trandata 用戶名.對象名刪除此表,重新新建此表,恢復數據。添加至日志中。Add trandata 用戶名.對象名
開啟源端進程。開啟目標端進程。
一次恢復流程源庫和目標庫的expdp、impdp1、源庫select current_scn from v$database  確定scn。2、修改scn號為上面當前值,從源庫導出。expdp directory=EXPDIR FLASHBACK_SCN= 9015228145167 schemas=tjrealms2014_login dumpfile=bdc.dmp3、目標庫導入數據impdp dumpfile=hp.dmp directory=dump_dir schemas=Xxx_login4、生成expdp、impdp的sql:create directory dump_dir as 'e:\app\expdp';select * from dba_directories;5、impdp dumpfile=hp.dmp directory=dump_dir schemas=Xxx_login6、start repHp,aftercsn 9015228145167

————————————————版權聲明:本文為CSDN博主「大巧不工」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。原文鏈接:https://blog.csdn.net/saijie1983/article/details/101926093


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM