【OGG】经典版21c在ORACLE数据库上的安装部署-1

环境介绍

虚拟机 192.168.56.50

操作系统: Oracle Linux7.9

数据库:Oracle19c

OGG:Oracle GoldenGate21.3

安装步骤

 参考文献

Performing an Interactive Installation with OUI

安装过程首先按照交互界面进行安装,再保存响应文件,最后简单描述通过响应文件静默安装。

1.        交互式安装

(1) 安装前准备

su - oracle
mkdir /home/oracle/ogg21  ##将作为安装时的主目录
mkdir /home/oracle/stage  ##临时目录
cd /home/oracle/stage
# 将安装包213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip传输到该目录,再解压
unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
cd /home/oracle/stage/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1

 (2)安装交互界面

# 启动交互安装界面
. runInstaller

选择安装选项页面上,选择要安装的 Oracle GoldenGate 版本,然后单击下一步继续

 软件位置选择一个新的目录/home/oracle/ogg21,管理端口默认即可

 

 这里单独保存一下响应文件,后续可以用它作为静默安装的模板,响应文件主要内容参考如下:


######################################################################
## 这个可以用于OGG的静默安装
## IMPORTANT NOTE: 这个文件的读权限必须授予oracle用户或管理员用户
######################################################################

#这个参数不要改
oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v21_1_0

#指定支持的数据库版本(及以下)
INSTALL_OPTION=ORA21c

#OGG主目录
SOFTWARE_LOCATION=/home/oracle/ogg21

#启动管理进程
START_MANAGER=true

#指定管理进程端口号
MANAGER_PORT=7809

#指定客户端安装位置,必须在SOFTWARE_LOCATION下,且开启管理进程
DATABASE_LOCATION=/home/oracle/ogg21/instantclient

# 以下是数据库相关的参数
INVENTORY_LOCATION=/u01/app/oraInventory
UNIX_GROUP_NAME=oinstall

 最后点击安装即可。

2.        静默安装(可选)

可以使用响应文件,进行静默安装,在完成安装准备后,如果要进行静默安装,可以用上述响应文件,启动静默模式,具体启动方式如下:

# 响应文件放到/home/oracle/stage
./runInstaller -silent -nowait -responseFile /home/oracle/stage/ogginstall.rsp

OGG配置

参考文献:Understanding What’s Supported

1.        数据库环境准备 

(1) 环境变量(oracle)

vi ~/.bash_profile
# 添加
export OGG_HOME=/home/oracle/ogg21
export PATH=$OGG_HOME:$ORACLE_HOME/bin:/usr/sbin:/usr/local/bin:$PATH
export LD_LIBRARY_PATH=$OGG_HOME:$ORACLE_HOME/lib:/lib:/usr/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin

source ~/.bash_profile

(2) 创建OGG工作目录

cd $OGG_HOME
ggsci
CREATE SUBDIRS

如果安装时启用了START_MANAGER=true,则已经自动生成,为了确保工作目录执行一下也无妨。

(3)为OGG准备数据库

开启OGG复制(根容器)

show parameter GOLDENGATE
alter system set ENABLE_GOLDENGATE_REPLICATION=true scope=both;
alter system set streams_pool_size='100M' scope=both;

开启闪回查询(根容器)

show parameter undo_
alter system set UNDO_MANAGEMENT=AUTO scope=both;
# 单位:秒
alter system set UNDO_RETENTION=86400 scope=both;

提示:计算 undo_space= UNDO_RETENTION * UPS + overhead

(4)启用数据库归档和附加日志(根容器)

shutdown immediate
!mkdir /home/oracle/archive_log
STARTUP MOUNT
ALTER DATABASE ARCHIVELOG;
startup
ALTER SYSTEM SET db_recovery_file_dest='/home/oracle/archive_log' scope=both;
SELECT supplemental_log_data_min, force_logging FROM v$database;

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE FORCE LOGGING;

ALTER SYSTEM SWITCH LOGFILE;

 (5)创建OGG专用数据库用户及表空间(PDB)

--# 在根容器中创建指定用户和表空间
alter session set container=cdb$root;
select name from v$datafile;
# 表空间必须在所有pdb中单独创建
create tablespace ggtbs datafile'/u01/app/oracle/oradata/PRODCDB/datafile/ggtbs01.dbf' size 50m autoextend on;
alter session set container=pdbprod1;
select name from v$datafile;
create tablespace ggtbs datafile'/u01/app/oracle/oradata/PRODCDB/E89D97CFEB1F66DEE055688B8B725DDD/datafile/ggtbs01.dbf' size 50m autoextend on;
alter session set container=cdb$root;
create user c##gguser identified by Cloud_4u default tablespace ggtbs quota unlimited on ggtbs container=all;
--# 授权
GRANT FLASHBACK ANY TABLE TO c##gguser container=all;
--GRANT FLASHBACK ON schema.table TO c##gguser container=all;
--3. 给gguser授权 
GRANT RESOURCE,CONNECT ,SELECT_CATALOG_ROLE ,dba TO c##gguser container=all;
ALTER USER c##gguser DEFAULT ROLE ALL container=all;
GRANT CREATE SESSION TO c##gguser container=all;
GRANT ALTER SESSION TO c##gguser container=all;
GRANT SELECT ANY TRANSACTION TO c##gguser container=all;
GRANT SELECT ANY DICTIONARY TO c##gguser container=all;
GRANT FLASHBACK ANY TABLE TO c##gguser container=all;
GRANT SELECT ANY TABLE TO c##gguser container=all;
GRANT UNLIMITED TABLESPACE TO c##gguser container=all;
-- ggts表空间配额不限制
ALTER USER c##gguser QUOTA UNLIMITED ON ggtbs container=all;
-- 闪回对象操作权限 
GRANT EXECUTE ON SYS.DBMS_FLASHBACK TO c##gguser container=all;
GRANT FLASHBACK ON SYS.USER_SOURCE TO c##gguser container=all;
--4. ogg管理员权限(在根容器和所有pdb中分别执行)
exec dbms_goldengate_auth.grant_admin_privilege('c##gguser');
alter session set container=pdbprod1;
exec dbms_goldengate_auth.grant_admin_privilege('c##gguser');

(6)创建登录凭证

cd $OGG_HOME
ggsci
add credentialstore
alter credentialstore add user c##gguser@PRODCDB,password Cloud_4u alias ggprod1 domain ogg

## 补充:要删除凭证
delete credentialstore

提示1:oracle数据库的连接字符串在tnsnames.ora中设置,ggsci要使用必须先设置TNS_ADMIN环境变量,指明tnsnames.ora所在目录 

提示2:在后面抽取进程注册时如果是容器数据库,则必须连接到跟容器才能注册

测试ggsci
cd $OGG_HOME
ggsci
# 登录方式1
dblogin userid gguser@pdbprod1,password Cloud_4u
------##出现以下信息表示能连通--------
Successfully logged into database PDBPROD1.

# 登录方式2
DBLOGIN USERIDALIAS ggprod1 domain ogg
------##出现以下信息表示能连通--------
Successfully logged into database PDBPROD1.

后续服务进程的配置启动关闭都要先连接到目标库才能操作。

(7)创建测试表

alter session set container=pdbprod1;
create tablespace testtbs datafile'/u01/app/oracle/oradata/PRODCDB/E89D97CFEB1F66DEE055688B8B725DDD/datafile/testtbs01.dbf' size 50m autoextend on;
create user test identified by Cloud_4u default tablespace testtbs quota unlimited on testtbs;
grant connect,resource to test;
create table test.demo (id number constraint PK_DEMO primary KEY,cname varchar(30));

2. 配置启动管理进程

这一步在安装时我们已经选择启用管理进程。如果没有启用管理进程,则按如下步骤配置

cd $OGG_HOME
ggsci
edit params mgr
# 添加如下内容
port 7809
DYNAMICPORTLIST 7840-7850
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints,minkeepdays 7

# 启动进程
start mgr
# 查看状态
info mgr
---------
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING
MANAGER     STOPPED                                           
#如果是stop状态可以去dirrpt文件夹下找到相应的MGR.rpt为最近一次启动的状态报告,一般检查参数关键词是否拼写错误。
# 查看报告
view report mgr

MANAGER进程参数说明:
     port:指定服务监听端口,默认端口7809。
     DYNAMICPORTLIST:动态端口列表,最大可指定256个动态端口,当指定port不可用时,管理进程会从列表中选择一个可用的端口。
     AUTORESTART:由于网络等原因造成抽取进程中止,每3分钟尝试重启所有extract进程,共尝试5次,建议配置。
     PURGEOLDEXTRACTS:自动删除过期队列,凡超过7天且已完成同步的所有./dirdat文件下的文件将被删除,建议配置。

3. 配置抽取进程 

edit params e1
# 添加
EXTRACT e1
SETENV (NLS_LANG="AMERICAN_AMERICA.UTF8")
USERIDALIAS ggprod1 domain ogg
DISCARDFILE ./dirrpt/e1.dsc, APPEND, MEGABYTES 1024
EXTTRAIL ./dirdat/e1
GETTRUNCATES
NOCOMPRESSDELETES FETCHMISSINGCOLUMNS
NOCOMPRESSDELETES
NOCOMPRESSUPDATES
SOURCECATALOG pdbprod1
TABLE TEST.DEMO;

参数简单说明 

EXTRACT extora -- Extract组名
-- 客户端的编码,如果oracle字符串编码不是UTF8会转为UTF8
SETENV (NLS_LANG="AMERICAN_AMERICA.UTF8")  
-- 连接Oracle服务器的信息,最好OGG与Oracle安装在同一台机器上
USERID oggtest@172.32.150.13:1521/nlpass01, PASSWORD 123456
-- discard文件,出错时可查看详细信息
DISCARDFILE ./dirrpt/extora.dsc, APPEND, MEGABYTES 1024
-- Trail文件路径,会生成多个Trail文件,文件名为前缀e1+文件编号,前缀不能超过2个字符
EXTTRAIL ./dirdat/e1
--支持truncate
GETTRUNCATES
-- 捕获delete、update不使用压缩方式
NOCOMPRESSDELETES FETCHMISSINGCOLUMNS
NOCOMPRESSDELETES
NOCOMPRESSUPDATES

--如果是pdb数据库,需要指定源的pdb名称

SOURCECATALOG pdbprod1
-- 需要捕获的表,每个表一行,全部列出,包含schema名
TABLE PAASTEST.ACT_EVT_LOG;

创建抽取组

ADD EXTRACT e1,TRANLOG,BEGIN NOW

 注册抽取组

register extract e1, database CONTAINER (pdbprod1)

补充1:要删除抽取组的步骤如下

删除Extract组:
GGSCI >DELETE EXTRACT e1
GGSCI >unregister extract e1, database

创建跟踪文件

ADD EXTTRAIL ./dirdat/e1, EXTRACT e1, MEGABYTES 200

 提示:跟踪文件的前缀名不能超过2个字符(英文或数字)

 补充2:要删除跟踪文件步骤如下

DELETE EXTTRAIL ./dirdat/e1
rm $OGG_HOME/dirdat/e1*

 启动或停止抽取进程

#启动:
start extract e1
停止:
#stop extract e1
查看状态:
info e1
stats e1
status e1
# 如果成功运行,会在本地Trail路径下应该生成文件,如果出错,查看错误原因:
view report e1

4. 配置PUMP进程

(1)创建参数文件

DBLOGIN USERIDALIAS ggprod1 domain ogg
edit param p1
# 添加
EXTRACT p1
PASSTHRU
RMTHOST 192.168.56.52, MGRPORT 7089, COMPRESS
RMTTRAIL ./dirdat/r1
SOURCECATALOG pdbprod1
TABLE test.*;

提示:RMTTRAIL(跟踪文件)名前缀不能超过2个字符(英文或数字) 

(2)创建pump组和跟踪文件

ADD EXTRACT p1, EXTTRAILSOURCE ./dirdat/e1
ADD RMTTRAIL ./dirdat/r1, EXTRACT p1, MEGABYTES 200

提示: EXTTRAILSOURCE是抽取进程中定义的抽取跟踪文件(确保一致)

Pump进程本质上也是一个EXTRACT进程,只是通过参数配置实现不同的功能,所以它的配置流程和抽取进程是一样的。 为了便于管理,抽取进程和pump进程采用数字结对命名,即抽取进程如果是序号1,那么其对应的pump进程也采用序号1,比如这里的抽取进程e1对应的pump进程是p1

(3)先启动目标端的管理进程

(4)启动和停止

start extract p1
#查看状态:
stats p1
status p1
info p1
#如果成功运行,在远程的Trail目录下应该生成文件,如果出错,查看错误内容:
view report p1

最后用info all命令检查所有进程是否正常,如下图

GGSCI (host50 as c##gguser@PRODCDB/CDB$ROOT) 23> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     E1          01:03:56      00:00:02    
EXTRACT     RUNNING     P1          00:00:00      00:00:02  

则说明基本配置没有问题,进程已经处于运行状态。

5.  ORACLE目标端的复制进程

先决条件,目标端参照上面的步骤完成OGG的安装部署(可不需要抽取和pump进程)和数据库准备。 如果目标端是多租户数据库,需要添加pdb的登录凭证,复制进程参数文件中必须指定目标库非根容器

alter credentialstore add user c##gguser@PDBPROD1,password Cloud_4u alias ggpdb1 domain ogg

(1)创建参数文件

DBLOGIN USERIDALIAS ggprod1 domain ogg
edit params r1
# 添加

REPLICAT r1
USERIDALIAS ggpdb1 domain ogg
discardfile ./dirrpt/r1.dsc,purge
ASSUMETARGETDEFS
MAP pdbprod1.test.demo, TARGET test.demo,KEYCOL(ID);

(2)添加检查点表

ADD CHECKPOINTTABLE pdbprod1.c##gguser.oggcheck

 (3)添加复制进程组

ADD REPLICAT r1, EXTTRAIL ./dirdat/r1, CHECKPOINTTABLE pdbprod1.c##gguser.oggcheck

重要提示:这里./dirdat/r1不是随便写的,要与源端pump进程参数文件中的RMTTRAIL参数后面的配置一致,否则目标端进程起来后不会因为找不到目标日志而报错,但是数据却无法同步到目标库的表。

(4)启动进程

start r1

# 查看状态
state r1
status r1
view r1
view report r1

附件1:目标端为PG异构数据库的同步配置

下面为同步到postgresql数据库,在目标端的复制进程配置

数据库准备,由于OGG不支持oracle之外的数据的DDL,所以目标端需手工建好目标表

psql -d test_db -U postgres
create table test_schema.demo_ora (id bigint,cname text,
    CONSTRAINT pk_demo_ora PRIMARY KEY (id));
# 在目标端操作,假设目标端已经完成oGG的安装和管理进程的配置,参见PG篇的部署
cd $OGG_HOME
ggsci

DBLOGIN SOURCEDB pg_tgt USERIDALIAS ggpg
ADD CHECKPOINTTABLE ggsch.oggcheck_forora
# 提示删除检查点表:delete checkpointtable <...>
edit params repora
# 添加
REPLICAT repora
SETENV (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")
TARGETDB pg_tgt USERIDALIAS ggpg
discardfile ./dirrpt/repora.dsc,purge
ALLOWNOOPUPDATES
INSERTMISSINGUPDATES
RESTARTCOLLISIONS
HANDLECOLLISIONS
BATCHSQL BATCHERRORMODE
MAP test.demo, TARGET test_schema.demo_ora,KEYCOLS(ID);
#保存退出
# 添加REPLICAT
ADD REPLICAT repora, EXTTRAIL ./dirdat/re, CHECKPOINTTABLE ggsch.oggcheck_forora

# 启动replicat(前提是目标端的管理进程已启动)
start repora

附件2:问题回顾

通过这一轮的实践,总结自己遇到的几个问题点:

(1)源端如果是多租户数据库,那么在源端进行抽取,pump进程参数文件配置的时候要加入SOURCECATALOG 参数,用来指明针对的pdb名称,例如本例:SOURCECATALOG pdbprod1;

(2)数据库准备中,如果是多租户数据库,则要在根容器中创建通用账户即C##开头的用户,并在所有pdb中生效;

(3)目标端如果是多租户数据库,那么在复制进程参数配置时要指定连接到目标pdb,所以在准备的时候要添加一个连接到pdb的用户凭证方便使用;

(4)oracle版创建连接凭证的时候最好指定域(domain),使用凭证时也要指定到域,某些情况下默认域会找不到连接凭证

(5)在创建复制进程组的时候(ADD REPLICAT ..., EXTTRAIL ...)REPLICAT后的名称必须和复制进程参数文件中的REPLICAT参数后的定义名称一致,EXTTRAIL后的内容必须和源端pump进程参数文件中的RMTTRAIL 参数定义的内容一致

(6)最容易出错的地方还是这几个参数文件的参数的配置,了解这些参数的含义还是很有必要的,熟悉以后才能对排查各类故障有的放矢。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows10系统中,安装Oracle21c数据库并进行配置可以按照以下步骤进行: 1. 首先,确保你已经下载Oracle21c安装文件,并解压缩到一个目录中。 2. 打开解压缩后的目录,在其中找到“setup.exe”文件,并运行该文件。 3. 选择“单击此处以安装数据库”,然后点击“下一步”。 4. 在“选择安装选项”页面上,选择“创建和配置数据库”,然后点击“下一步”。 5. 在“系统类别”页面上,选择“服务器类”以便安装完整的数据库软件。 6. 在“数据库类型”页面上,选择“单实例数据库安装”,然后点击“下一步”。 7. 在“软件位置”页面上,选择你想要安装Oracle软件的目录,并点击“下一步”。 8. 在“数据库配置”页面上,选择“创建数据库”选项,并填写数据库的名称、字符集、管理员密码等信息。 9. 接下来,你可以选择数据库的存储选项、网络配置选项以及其他高级选项。根据你的需求进行选择,并点击“下一步”。 10. 在“配置操作系统组”页面上,你可以选择是否将数据库用户添加到操作系统组中。根据需要进行选择,并点击“下一步”。 11. 在“安装选项”页面上,选择你想要安装的组件和语言,并点击“下一步”。 12. 在“检查”页面上,系统会自动检查系统环境是否满足安装要求。如果没有问题,点击“下一步”。 13. 在“摘要”页面上,确认你的安装选项,并点击“安装”按钮。 14. 安装过程需要一些时间,请耐心等待。 15. 当安装完成后,点击“关闭”按钮。 至此,Oracle21c数据库安装和配置完成了。你可以根据需要进行进一步的优化和配置,例如配置环境变量、优化服务等。同时,如果你想要卸载Oracle21c数据库,可以参考先前提到的中的方法或者在控制面板中使用卸载程序进行卸载。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值