ApressExpertOracleGoldenGate - BasicReplication (2)

接上篇ApressExpertOracleGoldenGate - BasicReplication (1)
http://blog.itpub.net/29047826/viewspace-1323516/


确认管理进程状态


管理进程用来管理所有其他进程和资源。在启动抽取进程和复制进程之前,我们需要确保源端和目标端的管理进程处于运行状态。它是所有进程中第一个启动的。如果管理进程没有运行是无法启动复制进程的。在最基本的管理进程参数文件中需要包含端口号(port number)

GGSCI (server) 1> edit params MGR
-------------------------------------------------------------------
-- GoldenGate Manager
-------------------------------------------------------------------
port 7840

通过INFO MGR命令可以确认管理进程是否在运行
GGSCI (sourceserver) 1> info manager

Manager is running (IP port sourceserver.7840).

如果GoldenGate管理进程没有运行,可以使用下面的命令:

GGSCI (sourceserver) 1> start manager


接下来开始配置GoldenGate Local Extract

配置Local Extract

现在已经确定管理进程处于运行状态,让我们配置Local Extract。为此我们需要配置一个参数文件用来捕获HR Sechma下的所有DML变化。

然我们从这个事例的Local Extract参数开始

GGSCI (sourceserver) 1> edit params LHREMD1
Extract LHREMD1

-------------------------------------------------------------------
-- Local extract for HR schema
-------------------------------------------------------------------

SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
USERID GGER@SourceDB, PASSWORD userpw
ExtTrail dirdat/l1
Table HR.*;


EXTRACT

我们可以使用Extract参数来定义抽取组。给抽取组起一个便于理解的名字,当出现问题需要迅速停止进程,重新启动进程的操作显得格外重要。
  • 进程类型,抽取进程、投递进程或者复制进程
  • 正如human resources、payroll、rales或者billing应用程序使用这个进程。
  • 进程所在的环境是可能是开发环境也可能是生产环境。
  • 如果抽取进程组被命名为LHREMD1,让我们看看命名的依据。L表示Local Extract。HREM表示HR shcema下的应用程序employee表。D表示运行在开发环境,1表示该应用程序下的第一个抽取进程组。我们可以增加并行提取组来提升性能。

SETENV

我们可以使用SETENV参数来覆盖默认的环境设置参数。在这个演示用例中明确的指定了NLS_LANG为AMERICAN_AMERICA.AL32UTF8。 如果NLS_LANG不正确,会导致复制失败。对于Local Extract,NLS_LANG参数需要和源端数据库字符集相匹配。可以通过下面的SQL语句来确认数据库字符集。

SQL> select * from v$nls_parameters where parameter like '%NLS_CHARACTERSET%';

PARAMETER          VALUE
----------------- ----------
NLS_CHARACTERSET  US7ASCII


使用SETENV参数还可以向NLS_LANG添加环境变量。例如,Oracle数据库的ORACLE_HOME,ORACLE_SID。 在这个例子中我们用源端数据库的网络TNS别名来替代环境变量。

SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.1.0")
SETENV (ORACLE_SID = "SourceDB")

USERID

之前我们为Goldengate创建了访问数据库的用户,并赋予了正确的权限。使用USERID参数我们可以指定Goldengate连接源端数据库所需的用户名和密码。其中密码可以采取加密的方式。

注意:Extract参数需要写在配置文件的开始位置。

接下来让我们看看EXTTRAIL参数

我们可以使用EXTTRAIL参数来,指定两个字母来命名local Extract文件,保存已经提交的事物。在这个例子中,trial文件保留Local Extract从HR事物中抽取的变化。然后再由投递进程通过网络发送到目标端服务器。

trail文件通常被写在GoldengGate软件安装目录下的dirdat目录。在这个例子中,我们给trail文件命名为l1。GoldenGate自动在字母后面补充6为数字作为序列的完整文件名。比如在dirdat目录下的第一个trail文件的名字为l1000000,当这个文件被写满,Goldengate会创建下一个trail文件名为l1000001,然后是l1000002以此类推。

TABLE

使用TABLE参数来指定源端需要获取变换的表。该参数是一个符合参数,含有许多的选项来提供我们过滤数据行,匹配数据列,转换数据等等。现在我们保持简单的配置,让Goldengate抽取HR schema下所有表的数据变化。可以采用通配符*号来完成这个设置。这样比列出每一个HR下要复制的表名方便的多。这个设置的前提是源端和目标端HR schema下所有结构都相同。

注意TABLE参数结束后需要一个写一个 ;号

添加Extract

现在我们已经配置了Extract参数,下一步添加抽取进程组(Extract)。可以通过GGSCI输入下面的命令

GGSCI (sourceserver) > ADD EXTRACT LHREMD1, TRANLOG, BEGIN NOW
GGSCI (sourceserver) > ADD EXTTRAIL dirdat/l1, EXTRACT LHREMD1, MEGABYTES 100

第一个命令ADD EXTRACT,使用参数文件中配置的名称LHREMD1来创建。Extract添加后会在源端trail文件中创建checkpoint和数据库事务的执行进度。ADD EXTRACT后面的TRANLOG参数命令告诉OGG使用源端数据库的事务日志。在Oracle数据库中redo logs就是源。BEGIN NOW的意思是Extract一开始启动,抽取进程就立刻从源端抽取变化。我们也可以任意指定一个时间戳,或是一个队列文件号(trail-file number)来启动抽取进程。

ADD EXTTRAIL命令将本地队列文件(local extract trail file)分配给提取进程HREMD1,并规定其大小为100MB。队列文件的默认大小为10MB。考略到性能方面受到的影响,我们应该给队列文件设置一个满足事务量的尺寸来避免OGG频繁创建它。

一点提示:我们可以将ADD EXTRACT这样的命令写入diroby目录下的obey file。然后在GGSCI命令行提示符后面执行obey文件。在以后需要重新执行或是要修改命令的时候可以有所参考。

现在来看看如何启动和停止抽取进程(Extract)

启动和停止抽取进程

在添加了抽取进程后,我们需要启动它开始捕获数据变化,如下例所示:
GGSCI (sourceserver) > START EXTRACT LHREMD1


停止进程使用下面的命令。当你需要修改配置参数时,需要停止进程,修改参数,重新启动进程。这时候就会用到这个命令。
GGSCI (sourceserver) > STOP EXTRACT LHREMD1

确认抽取进程

当抽取进程启动后,可以通过INFO EXTRACT命令来确认状态其状态为running。如果是STOPPRD或者ABENDED就由问题了。

GGSCI (sourceserver) 2> info extract LHREMD1

EXTRACT    LHREMD1  Last Started 2011-01-15 13:53  Status RUNNING
Checkpoint Lag      00:00:00 (updated 00:00:08 ago)
Log Read Checkpoint  Oracle Redo Logs

                    2011-01-17 22:55:08  Seqno 3261, RBA 7135232

如果抽取进程没有运行,我们需要从OGG错误日志中查找问题。错误日志名为ggserr.log存放在OGG软件的默认安装目录下。Linux下通常为$OGG_HOME/ggserr.log

如果抽取进程不能启动,先看看是否有明显的错误,比如OGG访问数据的user ID和密码是否正确,或者写错了参数文件。同时确认一下源端数据库是否处于运行状态。

从INFO命令可以看到源端抽取进程处于RUNNING状态。Checkpoint log是写入队列文件中的最后一个检查点和这个记录被OGG执行的时间延迟。目前状况下还没有任何延迟。如果出现了数值很大的checkpoint lag,就意味着系能出现问题了或者是抽取进程在获取一个大容量的数据变化。这时候可以查看源端Oracle的redo日志最后的检查点读取时间(read checkpoint time),事务日志的序列号Seqno,和该事务日志的RBA。

在INFO命令后面加上DETAIL选项可以看到更多有关抽取进程的信息。通过这个命令能找到一些有用的报表,这些报表提供了更多的有用信息

GGSCI (sourceserver) 3> info ext LHREMD1, detail

EXTRACT    LHREMD1  Last Started 2011-01-15 13:53  Status RUNNING
Checkpoint Lag      00:00:00 (updated 00:00:01 ago)
Log Read Checkpoint  Oracle Redo Logs

                    2011-01-17 22:57:50  Seqno 3262, RBA 138240
  Target Extract Trails:

Remote Trail Name
dirdat/l1
Extract Source

/data/SourceDB/database/redo01_01.rdo
/data/SourceDB/database/redo01_01.rdo
/data/SourceDB/database/redo01_01.rdo
/data/SourceDB/database/redo02_01.rdo
Not Available

Seqno 3

RBA    Max MB
1489      100
End

Begin

  2011-01-15 13:53  2011-01-17 22:57
  2011-01-13 22:29  2011-01-15 13:53
  2011-01-05 02:13  2011-01-13 22:29
  2010-12-16 15:28  2011-01-05 02:13

* Initialized *  2010-12-16 15:28

Current directory

Report file
Parameter file
Checkpoint file
Process file
Stdout file
Error log

/gger/ggs

/gger/ggs/dirrpt/LHREMD1.rpt
/gger/ggs/dirprm/LHREMD1.prm
/gger/ggs/dirchk/LHREMD1.cpe
/gger/ggs/dirpcs/LHREMD1.pce
/gger/ggs/dirout/LHREMD1.out
/gger/ggs/ggserr.log


最后使用stats命令来显示抽取进程已经捕获了多少个DML变化。在本例中,才进程开始到现在已经处理了4个插入语句,2个删除语句。

GGSCI (sourceserver) 2> stats ext LHREMD1
Sending STATS request to EXTRACT LHREMD1 ...
Start of Statistics at 2011-01-18 18:50:38.
Output to /gger/ggs/dirdat/l1:

Extracting from HR.EMPLOYEES to HR.EMPLOYEES:

*** Total statistics since 2011-01-15 13:54:52 ***
        Total inserts                                4.00
        Total updates                                0.00
        Total deletes                                2.00
        Total discards                              0.00
        Total operations                            6.00


抽取进程我们就说到这,下面开始投递进程。

开启投递进程

现在抽取进程已经启动,我们可以继续配置,添加并开启投递进程。首先注意一个概念,投递进程也是抽取进程的一种,它从源端的队列文件读取数据后通过网络发送到目标端并创建远程队列(remote trail)。

在这个例子中,我们配置的投递进程读取已经被LHREMD1抽取到L1队列中的数据,再通过网络投递到目标端,由复制进程Replicat接收后执行

投递进程的配置

在GGSCI使用下面的命令来编辑参数文件


GGSCI (sourceserver) 1> edit params PHREMD1
Extract PHREMD1

-------------------------------------------------------------------
-- Data Pump extract for HR schema
-------------------------------------------------------------------

PassThru

RmtHost targetserver, MgrPort 7840
RmtTrail dirdat/l2

Table HR.* ;

现在让我们来看看每个参数的具体含义。同抽取进程一样,投递进程的配置参数也有很多个。我们这里只介绍本例相关的参数。

EXTRACT

从第一个关键字Extract就可以看出投递进程其实也是抽取进程的一种。后面的参数为该进程的名字PHREMD1。和抽取进程一样,该名字不要超过8个字符。在本例中抽取进程PHREMD1的命名含义为:P表示data pump,也就是投递进程。其它部分和抽取进程的参数含义相同。


小提示:投递进程不需要指定SETENV。只有抽取进程和复制进程的参数中才需要添加此参数。

接下来看看PASSTHRU参数

PASSTHRU

如果源端和目标端的数据结构一致,不需要做过滤、字段映射这些操作的话可以为投递进程配置PASSTHRU参数。OGG认为表一致的概念是列明相同,数据类型相同,语义相同和出现的额顺序也相同。使用PASSTHRU可以使OGG不再从数据库中查询表定义信息,绕过此步骤的好处是可以提升性能。

RMTHOST

PASSTHRU和MGRPORT是目标端服务器的地址和管理进程正在使用的端口号。它告诉投递进程将源端队列发送目的地。我们需要源端到目标端管理进程的端口是畅通的。有时候,可能会需要在参数文件中制定多个目标端,将队列文件发送到不同的服务器。

RMTTRAIL

我们可以使用MGRPORT为投递进程命名远端队列文件名,和源端队列文件一样也是由2个字母开头。在这个例子中,使用l2来表示远端的队列。源端的使用l1.投递进程从L1源端队列读取数据后投递到目标端的l2队列文件。远端队列文件的名字也是有6个字母来不全l2后面的名字,如l2
000000,然后是l2000001,l2000002以此类推。

TABLE


TABLE参数又一次出现,和抽取进程中的描述一样。在本例中,使用通配符为制定投递范围是HR shcema下所有表。如果需要可以在这里过滤、转换要发送的数据。

投递进程的添加

现在我们已经设置了投递进程参数,下一步来添加投递进程。

GGSCI (sourceserver) > ADD EXTRACT PHREMD1, EXTTRAILSOURCE dirdat/l1
GGSCI (sourceserver) > ADD RMTTRAIL dirdat/l2, EXTRACT PHREMD1, MEGABYTES 100

第一条命令ADD EXTRACT,使用配置文件中的命令来创建一个投递进程。ADD EXTRACT后面的EXTTRAILSOURCE命令告诉OGG投递进程需要读取的本地队列在哪里。本例的队列目录为dirdat/l1。投递时间可以选择立刻,或者制定一个时间戳,或者一个队列文件号。

ADD RMTTRAIL命令为远程队列dirdat/l2指定相对应的投递进程PHREMD1,文件大小为100MB。默认大小是10MB。为了性能我们适当做出调整,避免国语频繁的创建新的远程队列文件


GGSCI为我们提供了帮助手册,例如hlep ADD EXTRACT

投递进程的启动与停止

在添加了投递进程后,我们需要启动它,开始处理源端队列文件的记录。

GGSCI (sourceserver) > START EXTRACT PHREMD1

如果需要修改投递进程的参数,需要使用下面的命令将进程停止,修改后再重新启动。

GGSCI (sourceserver) > STOP EXTRACT PHREMD1

当投递进程已经启动后,可以通过INFO EXTRACT命令来确认其运行。
GGSCI (sourceserver) 2> info extract PHREMD1

EXTRACT    PHREMD1  Last Started 2011-01-14 10:25  Status RUNNING
Checkpoint Lag      00:00:00 (updated 00:00:01 ago)
Log Read Checkpoint  File dirdat/l1000001

                    2011-01-17 15:05:33.485076  RBA 977

我们看到此时的状态为RUNNING,如果出现的时STOPPED或者ABENDED就出问题了。和抽取进程一样需要从错误日志中去查找原因。有时候错误很简单,就是参数文件中写错或者源端的队列文件丢失,归档日志丢失等。另外确保目标端的管理进程端口和源端数据库畅通。

在INFO命令后面加上DETAIL选项可以看到更多有关抽取进程的信息。通过这个命令能找到一些有用的报表,这些报表提供了更多的有用信息

GGSCI (sourceserver) 3> info ext PHREMD1, detail

EXTRACT    PHREMD1  Last Started 2011-01-23 16:28
Checkpoint Lag      00:00:00 (updated 00:00:00 ago)
Log Read Checkpoint  File dirdat/l1000009

                    First Record  RBA 3431
  Target Extract Trails:

  Remote Trail Name
  dirdat/l2
  Extract Source                          Begin

Status RUNNING

  dirdat/l1000009
  dirdat/l1000009
  dirdat/l1000007
  dirdat/l1000005
  dirdat/l1000004
  dirdat/l1000004
  dirdat/l1000000

Current directory

Report file
Parameter file
Checkpoint file
Process file
Stdout file
Error log

2011-01-20 14:04  First Record
2011-01-14 10:22  2011-01-20 14:04
2011-01-12 10:59  2011-01-14 10:22
2011-01-07 08:38  2011-01-12 10:59
2011-01-07 08:38  2011-01-07 08:38

/gger/ggs/ora10

/gger/ggs/dirrpt/PHREMD1.rpt
/gger/ggs/dirprm/PHREMD1.prm
/gger/ggs/dirchk/PHREMD1.cpe
/gger/ggs/dirpcs/PHREMD1.pce
/gger/ggs/dirout/PHREMD1.out
/gger/ggs/ggserr.log

* Initialized *
* Initialized *

2011-01-07 08:38
First Record

最后通过stats命令可以看到投递进程处理了多少个DML操作。

GGSCI (sourceserver) 2> stats ext PHREMD1
Sending STATS request to EXTRACT PHREMD1 ...
Start of Statistics at 2011-01-18 18:50:38.
Output to /gger/ggs/dirdat/l2:

Extracting from HR.EMPLOYEES to HR.EMPLOYEES:

Seqno        RBA
    4      1151

End

Max MB 100

CHAPTER 4 ■ BASIC REPLICATION

69

CHAPTER 4 ■ BASIC REPLICATION

*** Total statistics since 2011-01-15 13:54:52 ***
        Total inserts                                4.00
        Total updates                                0.00
        Total deletes                                2.00
        Total discards                              0.00
        Total operations                            6.00

在抽取进程和投递进程都开启后,我们将进入下一个环节,复制进程Replicat。由于篇幅今天就写到这里。

未完待续...

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29047826/viewspace-1327279/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29047826/viewspace-1327279/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值