Install


mkdir /oracle/app/oracle/product/gg

GGATE_HOME=/oracle/app/oracle/product/gg
export GGATE_HOME
cd $GGATE
_HOME


[oracle@localhost gg]$ unzip /oracle/fbo_ggs_Linux_x64_112100_ora11g_64bit.zip
Archive:  /oracle/fbo_ggs_Linux_x64_112100_ora11g_64bit.zip
  inflating: fbo_ggs_Linux_x64_ora11g_64bit.tar 
  inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.0.pdf 
  inflating: Oracle GoldenGate 11.2.1.0 README.txt 
[oracle@localhost gg]$

tar -xf fbo_ggs_Linux_x64_ora11g_64bit.tar

[oracle@localhost gg]$ ls
bcpfmt.tpl                 ddl_trace_on.sql                    libicuuc.so.38
bcrypt.txt                 defgen                              libxerces-c.so.28
cfg                        demo_more_ora_create.sql            libxml2.txt
chkpt_ora_create.sql       demo_more_ora_insert.sql            logdump
cobgen                     demo_ora_create.sql                 marker_remove.sql
convchk                    demo_ora_insert.sql                 marker_setup.sql
db2cntl.tpl                demo_ora_lob_create.sql             marker_status.sql
ddl_cleartrace.sql         demo_ora_misc.sql                   mgr
ddlcob                     demo_ora_pk_befores_create.sql      notices.txt
ddl_ddl2file.sql           demo_ora_pk_befores_insert.sql      oggerr
ddl_disable.sql            demo_ora_pk_befores_updates.sql     OGG_WinUnix_Rel_Notes_11.2.1.0.0.pdf
ddl_enable.sql dirjar Oracle GoldenGate 11.2.1.0 README.txt
ddl_filter.sql             dirprm                              params.sql
ddl_nopurgeRecyclebin.sql  emsclnt                             prvtclkm.plb
ddl_ora10.sql              extract                             pw_agent_util.sh
ddl_ora10upCommon.sql      fbo_ggs_Linux_x64_ora11g_64bit.tar  remove_seq.sql
ddl_ora11.sql              freeBSD.txt                         replicat
ddl_ora9.sql               ggcmd                               retrace
ddl_pin.sql                ggMessage.dat                       reverse
ddl_purgeRecyclebin.sql    ggsci                               role_setup.sql
ddl_remove.sql             help.txt                            sequence.sql
ddl_session1.sql           jagent.sh                           server
ddl_session.sql            keygen                              sqlldr.tpl
ddl_setup.sql              libantlr3c.so                       tcperrs
ddl_status.sql             libdb-5.2.so                        ucharset.h
ddl_staymetadata_off.sql   libgglog.so                         ulg.sql
ddl_staymetadata_on.sql    libggrepo.so                        UserExitExamples
ddl_tracelevel.sql         libicudata.so.38                    usrdecs.h
ddl_trace_off.sql          libicui18n.so.38                    zlib.txt


[oracle@localhost gg]$ ./ggsci
./ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory
[oracle@localhost gg]$

small fix :

[oracle@localhost gg]$ export LD_LIBRARY_PATH=$GGATE:$ORACLE_HOME/lib:
[oracle@localhost gg]$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.0 OGGCORE_11.2.1.0.0_PLATFORMS_120131.1910_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Feb  1 2012 00:55:59

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.



GGSCI (localhost.localdomain) 1>

Create the necessary working directories for GG.


GGSCI (localhost.localdomain) 1> create subdirs

Creating subdirectories under current directory /oracle/app/oracle/product/gg


Parameter files                /oracle/app/oracle/product/gg/dirprm: already exists
Report files                   /oracle/app/oracle/product/gg/dirrpt: created
Checkpoint files               /oracle/app/oracle/product/gg/dirchk: created
Process status files           /oracle/app/oracle/product/gg/dirpcs: created
SQL script files               /oracle/app/oracle/product/gg/dirsql: created
Database definitions files     /oracle/app/oracle/product/gg/dirdef: created
Extract data files             /oracle/app/oracle/product/gg/dirdat: created
Temporary files                /oracle/app/oracle/product/gg/dirtmp: created
Stdout files                   /oracle/app/oracle/product/gg/dirout: created



GGSCI (localhost.localdomain) 2>


Destination-side


We must repeat all the above steps on the destination side.


Source database


The GoldenGate software having been installed successfully, we must prepare the source database for replication.

    Switch the database to archivelog mode:

shutdown immediate
startup mount
alter database archivelog;
alter database open;

    Enable minimal supplemental logging:

Enabling database-level supplemental logging

Oracle GoldenGate requires enabling database-level supplemental logging.

1.  Log in to SQL*Plus as a user with ALTER SYSTEM privilege, and then issue the following
                           command to enable minimal supplemental logging at the database level. This logging
                           is required to process updates to primary keys and chained rows.


                           ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

2.  To start the supplemental logging, switch the log files.

                           ALTER SYSTEM SWITCH LOGFILE;

3.  Verify that supplemental logging is enabled at the database level with this command:

                           SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

SUPPLEME
--------
YES


    Prepare the database to support ddl replication (optional).

    a) Turn off recyclebin for the database . . .

alter system set recyclebin=off scope=spfile;


. . . and bounce it.

Create schema for ddl support replication . . .

create user ggate identified by qwerty default tablespace GG_TBS temporary tablespace temp;

     . . . and grant the necessary privileges to the new user..

cd $GGATE
    
grant connect,resource,unlimited tablespace to ggate;
grant execute on utl_file to ggate;


        Create the GLOBALS parameter file either using vi or ggsci like

        From the Oracle GoldenGate installation location, run GGSCI and enter the following
        ommand

                            EDIT PARAMS ./GLOBALS

                                      NOTE     The ./ portion of this command must be used, because the GLOBALS file must
                                               reside at the root of the Oracle GoldenGate installation file.


                            Specify the name of the DDL schema by adding the following parameter to the GLOBALS file.

                             GGSCHEMA   ggate

    Exit all Oracle sessions, including those of SQL*Plus, those of business applications,
    those of the Oracle GoldenGate processes, and those of any other software that uses
    Oracle. Prevent the start of any new sessions.


    Run scripts for creating all necessary objects for support ddl replication:
    Run SQL*Plus and log in as a user that has SYSDBA privilege. This privilege is required
    to install the DDL trigger in the SYS schema, which is required by Oracle. All other DDL
    objects are installed in the schema that you created in step 1.

    Run the marker_setup.sql script.

    @marker_setup.sql

    ❍    Supply the name of the Oracle GoldenGate schema when prompted, and then press Enter to execute the script.

    ❍   This script installs support for the Oracle GoldenGate DDL marker system.

Enter Oracle GoldenGate schema name: ggate


Marker setup table script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GGATE

MARKER TABLE
-------------------------------
OK

MARKER SEQUENCE
-------------------------------
OK

Script complete.
SQL>

    Run the ddl_setup.sql script. You are prompted to specify the name of the DDL schema from step 1.

    @ddl_setup.sql



Using GGATE as a Oracle GoldenGate schema name.

Working, please wait ...

DDL replication setup script complete, running verification script...
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GGATE

CLEAR_TRACE STATUS:

Line/pos                                 Error
---------------------------------------- -----------------------------------------------------------------
No errors                                No errors

CREATE_TRACE STATUS:

Line/pos                                 Error
---------------------------------------- -----------------------------------------------------------------
No errors                                No errors

TRACE_PUT_LINE STATUS:

Line/pos                                 Error
---------------------------------------- -----------------------------------------------------------------
No errors                                No errors

INITIAL_SETUP STATUS:

Line/pos                                 Error
---------------------------------------- -----------------------------------------------------------------
No errors                                No errors

DDLVERSIONSPECIFIC PACKAGE STATUS:

Line/pos                                 Error
---------------------------------------- -----------------------------------------------------------------
No errors                                No errors

DDLREPLICATION PACKAGE STATUS:

Line/pos                                 Error
---------------------------------------- -----------------------------------------------------------------
No errors                                No errors

DDLREPLICATION PACKAGE BODY STATUS:

Line/pos                                 Error
---------------------------------------- -----------------------------------------------------------------
No errors                                No errors

DDL HISTORY TABLE
-----------------------------------
OK

DDL HISTORY TABLE(1)
-----------------------------------
OK

DDL DUMP TABLES
-----------------------------------
OK

DDL DUMP COLUMNS
-----------------------------------
OK

DDL DUMP LOG GROUPS
-----------------------------------
OK

DDL DUMP PARTITIONS
-----------------------------------
OK

DDL DUMP PRIMARY KEYS
-----------------------------------
OK

DDL SEQUENCE
-----------------------------------
OK

GGS_TEMP_COLS
-----------------------------------
OK

GGS_TEMP_UK
-----------------------------------
OK

DDL TRIGGER CODE STATUS:

Line/pos                                 Error
---------------------------------------- -----------------------------------------------------------------
No errors                                No errors

DDL TRIGGER INSTALL STATUS
-----------------------------------
OK

DDL TRIGGER RUNNING STATUS
------------------------------------------------------------------------------------------------------------------------
ENABLED

STAYMETADATA IN TRIGGER
------------------------------------------------------------------------------------------------------------------------
OFF

DDL TRIGGER SQL TRACING
------------------------------------------------------------------------------------------------------------------------
0

DDL TRIGGER TRACE LEVEL
------------------------------------------------------------------------------------------------------------------------
0

LOCATION OF DDL TRACE FILE
------------------------------------------------------------------------------------------------------------------------
/oracle/app/oracle/diag/rdbms/prim/PRIM/trace/ggs_ddl_trace.log

Analyzing installation status...


STATUS OF DDL REPLICATION
------------------------------------------------------------------------------------------------------------------------
SUCCESSFUL installation of DDL Replication software components

Script complete.
SQL>

Run the role_setup.sql script.

@role_setup.sql

❍   At the prompt, supply the DDL schema name.

❍   The script drops and creates the role that is needed for DDL synchronization, and
         it grants DML permissions on the Oracle GoldenGate DDL objects.

Enter GoldenGate schema name:ggate
ecrit file role_setup_set.txt

Procedure PL/SQL terminee avec succes.


Role setup script complete

Grant this role to each user assigned to the Extract, GGSCI, and Manager processes, by using the following SQL command:

GRANT GGS_GGSUSER_ROLE TO <loggedUser>

where <loggedUser> is the user assigned to the GoldenGate processes.

Grant the role that was created (default name is GGS_GGSUSER_ROLE to all Oracle GoldenGate Extract users.
You may need to make multiple grants if the processes have different user names.


grant GGS_GGSUSER_ROLE to ggate;

Run the ddl_enable.sql script to enable the DDL trigger.

@ddl_enable.sql

Declencheur modifie.

To install and use the optional performance tool
To improve the performance of the DDL trigger, make the ddl_pin script part of the database
startup. It must be invoked with the Oracle GoldenGate DDL user name, as in:

@ddl_pin ggate

This script pins the PL/SQL package that is used by the trigger into memory. If executing
this script from SQL*Plus, connect as SYSDBA from the Oracle GoldenGate installation
directory. This script relies on the Oracle dmbs_shared_pool system package, so install that
package before using ddl_pin.


Create test schemas for replication.


I will create a replication from schema sender to schema receiver (the receiving schema can be on the same database or on another).

a) Source database:

create user sender identified by qwerty default tablespace users temporary tablespace temp;
grant connect,resource,unlimited tablespace to sender;

b) Destination database:

create user receiver identified by qwerty default tablespace users temporary tablespace temp;
grant connect,resource,unlimited tablespace to receiver;

Replication


We’re going to create the simplest replication without the GG data pump (we can add it later).
Our goal is to create ddl and ddl replication from the sender schema on the source database to receiver schema on the destination.

Replication also works if you’re using only one database. This is replication between schemas.

    Create and start manager on the source and the destination.

    Source:


./ggsci
    
    GGSCI (localhost) 4> info all
    
    Program     Status      Group       Lag           Time Since Chkpt
    MANAGER     STOPPED
    
    GGSCI (localhost) 6> edit params mgr
    
PORT 7809

this edit param mgr creates a file $GG_HOME/dirprm/mgr.prm containing PORT 7809
    
    GGSCI (localhost) 7> start manager
    
    Manager started.

    We can check status of our processes:
    GGSCI (localhost) 8> info all
    
    Program     Status      Group       Lag           Time Since Chkpt
    
    MANAGER     RUNNING

when can check at the OS level for the manager process

GGSCI (dbserver01) 1> shell pgrep mgr -lf

10 async/mgr
3156 /usr/libexec/gdmgreeter
14305 ./mgr PARAMFILE /oracle/app/oracle/product/gg/dirprm/mgr.prm REPORTFILE /oracle/app/oracle/product/gg/dirrpt/MGR.rpt PROCESSID MGR PORT 7809

  Create the extract group on the source side:


    GGSCI (localhost) 1> add extract ext1, tranlog, begin now
    
    EXTRACT added.
    
    GGSCI (localhost) 2> add exttrail /oracle/app/oracle/product/gg/dirdat/lt, extract ext1
    
    EXTTRAIL added.
    
    GGSCI (localhost) 3> edit params ext1

    Add the following lines to the new parameter file for our extract:

-- Set some envs
SETENV (ORACLE_HOME = "/oracle/app/oracle/product/11.2.0/dbhome_1")
SETENV (ORACLE_SID = "PRIM")
SETENV (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")

--extract group--
extract ext1
--connection to database--
userid ggate, password qwerty
--hostname and port for trail--
rmthost dbserver02, mgrport 7809
--path and name for trail--
rmttrail /oracle/app/oracle/product/gg/dirdat/lt
--DDL support
ddl include mapped objname sender.*;
--DML
table sender.*;


    We can check our processes again:
    GGSCI (localhost) 6>
info all
    
    Program     Status      Group       Lag           Time Since Chkpt
    
    MANAGER     STOPPED
    
    EXTRACT     STOPPED     EXT1        00:00:00      00:10:55

  Create replicat on the destination side:


    [oracle@db2 gg]$ cd $GG_HOME
    
    [oracle@db2 gg]$ ./ggsci
    
    add checkpoint table to the destination database
    
    GGSCI (db2) 1> edit params ./GLOBALS
    
    and put following lines to the global parameter file:
    
    GGSCHEMA ggate
    CHECKPOINTTABLE ggate.checkpoint

    
    ~
    
    GGSCI (db2) 2> dblogin userid ggate, password qwerty
    
 
    Successfully logged into database.
    
    GGSCI (db2) 3> add checkpointtable ggate.checkpoint
    
    Successfully created checkpoint table ggate.checkpoint.

    

  Create replicat group:

    
    GGSCI (db2) 4> add replicat rep1, exttrail /oracle/app/oracle/product/gg/dirdat/lt,checkpointtable ggate.checkpoint
    
    REPLICAT added.
    

  Create parameter file for replicat:

    
    GGSCI (db2) 5> edit params rep1

    And put following lines in the parameter file:

--Replicat group --
replicat rep1
--source and target definitions
ASSUMETARGETDEFS
--target database login --
userid ggate, password qwerty
--file for dicarded transaction --
discardfile /oracle/app/oracle/product/gg/discard/rep1_discard.txt, append, megabytes 10
--ddl support
DDL
--Specify table mapping ---
map sender.*, target receiver.*;

  Start extract and replicat:


    Source:
    GGSCI (dbserver01) 14> start extract ext1

    GGSCI (dbserver01) 5> shell ps -elf | grep extract 

0 S oracle   17276 16727  0  80   0 - 50046 hrtime 11:59 ?        00:00:00 /oracle/app/oracle/product/gg/extract PARAMFILE /oracle/app/oracle/product/gg/dirprm/ext1.prm REPORTFILE /oracle/app/oracle/product/gg/dirrpt/EXT1.rpt PROCESSID EXT1 USESUBDIRS

0 S oracle   17312 17260  0  80   0 - 15961 wait   11:59 pts/3    00:00:00 sh -c ps -elf | grep extract
0 S oracle   17314 17312  0  80   0 - 15813 pipe_w 11:59 pts/3    00:00:00 grep extract


    Destination:
    GGSCI (dbserver02) 5> start replicat rep1
    Check all processes.

    Source:

    GGSCI (localhost) 8> info all
    
    Program     Status      Group       Lag           Time Since Chkpt
    
    MANAGER     RUNNING
    
    EXTRACT     RUNNING     EXT1        00:00:00      00:00:05

    Destination:

    GGSCI (localhost) 8> info all
    
    Program     Status      Group       Lag           Time Since Chkpt
    
    MANAGER     RUNNING
    
    REPLICAT    RUNNING     REP1        00:00:00      00:00:00

    Our replication has been successfully created.

6. Checking

Now we can check our replication. We will create some tables in the sender schema on the source, insert some rows, and check how it will replicate to destination side.

    Source database:

create table sender.test_tab_1 (id number,rnd_str varchar2(12));
insert into sender.test_tab_1 values (1,'test_1');
commit;

    Destination database:

select * from receiver.test_tab_1;
    
    ID RND_STR
    ---------- ------------
    1 test_1

Our GoldenGate DDL and DML replication is now working. The table was created on the destination side and data were replicated.
GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐