使用ora2pg迁移Oracle19c到PG13并使用OGG配置实时同步

举报
小麦苗DB宝 发表于 2022/07/06 15:32:43 2022/07/06
【摘要】 一、项目目标 二、环境配置 2.1、环境规划 2.2、申请主机环境 2.3、源端使用swingbench生成压测数据 2.3.1、安装swingbench 2.3.2、使用swingbench生成数据 三、使用ora2pg迁移Oracle 19.3数据到PG13.2 3.1、Ora2Pg 介绍 3.1.1、Ora2Pg 简介 3.1.2、ora2pg 时允许指定的所有命令行参数 3.2、安...

一、项目目标

1、使用ora2pg迁移Oracle 19.3数据到PG13.2

  • 使用swingbench压测生成oracle数据
  • 部署ora2pg工具,实现Oracle数据迁移到PG数据库

2、配置OGG实时同步并实现告警

  • 部署OGG 19.1,配置实时同步
  • 配置OGG director的监控告警功能
  • 用swingbench压测生成批量事务,测试OGG实时同步功能

二、环境配置

2.1、环境规划

DG环境规划:

项目 Oracle源库 PG目标库
db 类型 单实例 单实例
db version 19.3.0.0.0 13.2
OS版本 CentOS7.6 64位 CentOS7.6 64位
OS hostname lhrora19c lhrpg13
IP地址 192.168.68.66 192.168.68.67
dbname lhrsdb lhrdb
监听端口 1521 5432
映射的主机端口 1528 25432
SOFT_HOME /opt/oracle/product/19c/dbhome_1 /pg13/pg13
安装用户 oracle pg13
同步用户 SOE soe

软件安装:

主机 需要的软件
源端(192.168.68.66) Oracle 19c database、swingbench、ogg软件
目标端(192.168.68.67) PG 13.2、ora2pg、ogg软件

2.2、申请主机环境

-- 创建本次的网络
docker network create --subnet=192.168.68.0/16 mhalhr
docker network inspect mhalhr


-- 创建Oracle主机,已安装Oracle 19c数据库
docker rm -f lhrora19c
docker run -itd -h lhrora19c --name lhrora19c  \
  -p 11521:1521 -p 15500:5500 -p 15501:5501  -p 13389:3389 \
  --network mhalhr --ip 192.168.68.66 \
  --privileged=true \
  lhrbest/oracle19clhr_rpm_db_12.2.0.3:2.0 init


-- 创建PG主机,已安装PG 13数据库
docker rm -f lhrpg13
docker run -d --name lhrpg13 -h lhrpg13 \
  --net=mhalhr --ip 192.168.68.67 \
  -p 25432:5432  \
  -v /sys/fs/cgroup:/sys/fs/cgroup \
  --privileged=true \
  lhrbest/lhrpgall:1.0 /usr/sbin/init


-- 添加网卡
docker network connect bridge lhrora19c
docker network connect bridge lhrpg13



-- 重启主机
docker restart lhrora19c  lhrpg13
  
-- 进入主机
docker exec -it lhrora19c bash
docker exec -it lhrpg13 bash


2.3、源端使用swingbench生成压测数据

2.3.1、安装swingbench

下载地址:

http://www.dominicgiles.com/downloads.html

每个swingbench的zip 包里都包含了Linux/Unix 和Windows 文件,所以只需要从官方下载之后,解压缩就可以了。解压之后bin目录下是linux的,winbin目录下是windows的。

需要jdk 1.8环境。


wget https://github.com/domgiles/swingbench-public/releases/download/production/swingbenchlatest.zip
unzip swingbenchlatest.zip -d /usr/local
chown -R oracle.oinstall /usr/local/swingbench/



su - oracle
cat >> ~/.bash_profile <<"EOF"
export JAVA_HOME=/opt/oracle/product/19c/dbhome_1/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export PATH=/usr/local/swingbench/bin:$PATH

EOF

source ~/.bash_profile

2.3.2、使用swingbench生成数据

-- 启动数据库和监听
. oraenv
lhrsdb


lsnrctl start

sqlplus / as sysdba
startup
alter user system identified by lhr;

-- swingbench造数据
oewizard  -s -create -c /usr/local/swingbench/wizardconfigs/oewizard.xml -create \
-version 2.0  -cs //192.168.68.66:1521/lhrsdb -dba "sys as sysdba" -dbap lhr -dt thin \
-ts users -u SOE -p lhr -allindexes  -scale 0.001  -tc 16 -v -cl

-s是静默,-create表示创建数据,-c是指定配置文件,就是oewizard.xml,-version指定swingbench版本,-cs表示数据库连接串,-dba表示连接到oracle数据库的用户,-dbap表示连接到oracle数据库的密码,-dt表示连接类型,-ts是指定表空间为users, -u表示压测的用户,-p表示压测用户的密码,-scale是数据量,1就是1G,0.001就是1Mb数据,-tc 是并发度,-allindexes是支持所有的索引类型,-v显示详细信息,-cl表示运行在字符模式。

数据量:

SYS@lhrsdb> col TABLE_NAME format a30
SYS@lhrsdb> SELECT a.table_name,a.num_rows FROM dba_tables a where a.OWNER='SOE'  ;

TABLE_NAME             NUM_ROWS
-------------------- ----------
CUSTOMERS                  1000
ADDRESSES                  1500
CARD_DETAILS               1500
WAREHOUSES                 1000
ORDER_ITEMS                7168
ORDERS                     1430
INVENTORIES              898934
PRODUCT_INFORMATION        1000
LOGON                      2383
PRODUCT_DESCRIPTIONS       1000
ORDERENTRY_METADATA           0

11 rows selected.

SYS@lhrsdb> select object_type,count(*) from dba_objects where owner='SOE' group by object_type;

OBJECT_TYPE                                      COUNT(*)
---------------------------------------------- ----------
INDEX                                                  27
PACKAGE BODY                                            1
PACKAGE                                                 1
SEQUENCE                                                5
TABLE                                                  11
VIEW                                                    2

6 rows selected.

SYS@lhrsdb> select sum(bytes)/1024/1024 from dba_segments where owner='SOE';

SUM(BYTES)/1024/1024
--------------------
              279.25

三、使用ora2pg迁移Oracle 19.3数据到PG13.2

3.1、Ora2Pg 介绍

3.1.1、Ora2Pg 简介

Ora2Pg 是一个免费的工具,用于将 Oracle 或MySQL数据库迁移到 PostgreSQL 数据库里。它连接到 Oracle或MySQL 数据库,自动扫描并抽取其结构和数据,然后生成用于实现迁移的SQL 脚本,利用该脚本可以将数据库结构和数据加载到 PostgreSQL 数据库中。

最新版的 Ora2Pg 新功能:

- Export full database schema (tables, views, sequences, indexes), with
  unique, primary, foreign key and check constraints.
- Export grants/privileges for users and groups.
- Export range/list partitions and sub partitions.
- Export a table selection (by specifying the table names).
- Export Oracle schema to a PostgreSQL 8.4+ schema.
- Export predefined functions, triggers, procedures, packages and
  package bodies.
- Export full data or following a WHERE clause.
- Full support of Oracle BLOB object as PG BYTEA.
- Export Oracle views as PG tables.
- Export Oracle user defined types.
- Provide some basic automatic conversion of PLSQL code to PLPGSQL.
- Works on any platform.
- Export Oracle tables as foreign data wrapper tables.
- Export materialized view.
- Show a  report of an Oracle database content.
- Migration cost assessment of an Oracle database.
- Migration difficulty level assessment of an Oracle database.
- Migration cost assessment of PL/SQL code from a file.
- Migration cost assessment of Oracle SQL queries stored in a file.
- Generate XML ktr files to be used with Penthalo Data Integrator (Kettle)
- Export Oracle locator and spatial geometries into PostGis.
- Export DBLINK as Oracle FDW.
- Export SYNONYMS as views.
- Export DIRECTORY as external table or directory for external_file extension.
- Full MySQL export just like Oracle database.
- Dispatch a list of SQL orders over multiple PostgreSQL connections
- Perform a diff between Oracle and PostgreSQL database for test purpose.

3.1.2、ora2pg 时允许指定的所有命令行参数

Usage: ora2pg [-dhpqv --estimate_cost --dump_as_html] [--option value]

-a | --allow str  : 指定允许导出的对象列表,使用逗号分隔。也可以与 SHOW_COLUMN 选项一起使用。
-b | --basedir dir: 设置默认的导出目录,用于存储导出结果。
-c | --conf file  : 设置非默认的配置文件,默认配置文件为 /etc/ora2pg/ora2pg.conf。
-d | --debug      : 使用调试模式,输出更多详细信息。
-D | --data_type STR : 通过命令行设置数据类型转换。
-e | --exclude str: 指定导出时排除的对象列表,使用逗号分隔。也可以与 SHOW_COLUMN 选项一起使用。
-h | --help       : 显示帮助信息。
-g | --grant_object type : 导出指定类型的对象上的授权信息,取值参见 GRANT_OBJECT 配置项。
-i | --input file : 指定要导入的 Oracle PL/SQL 代码文件,导入文件时不需要连接到 Oracle 数据库。
-j | --jobs num   : 设置用于发送数据到 PostgreSQL 的并发进程数量。
-J | --copies num : 设置用于从 Oracle 导出数据的并发连接数量。
-l | --log file   : 设置日志文件,默认为 stdout。
-L | --limit num  : 导出数据时,每次写入磁盘之前在内存中缓冲的记录数量,默认值为 10000。
-m | --mysql      : 导出 MySQL 数据库。
-n | --namespace schema : 设置需要导出的 Oracle 模式。
-N | --pg_schema schema : 设置 PostgreSQL 中的搜索路径 search_path。
-o | --out file   : 设置导出的 SQL 文件的存储路径。默认值为当前目录下的 output.sql 文件。
-p | --plsql      : 启用 PLSQL 代码到 PLPGSQL 代码的转换。
-P | --parallel num: 同时导出多个表,设置并发数量。
-q | --quiet      : 不显示进度条。
-s | --source DSN : 设置 Oracle DBI 数据源。
-t | --type export: 设置导出类型。该参数将会覆盖配置文件中的导出类型(TYPE)。
-T | --temp_dir DIR: 为多个同时运行的 ora2pg 脚本指定不同的临时存储目录。
-u | --user name  : 设置连接 Oracle 数据库连接的用户名。也可以使用 ORA2PG_USER 环境变量。
-v | --version    : 显示 Ora2Pg 版本信息并退出。
-w | --password pwd : 设置连接 Oracle 数据库的用户密码。也可以使用 ORA2PG_PASSWD 环境变量。
--forceowner      : 导入数据时,强制 ora2pg 将导入 PostgreSQL 的表和序列的拥有者设置为连接 Oracle 数据库时的用户。如果设置为指定的用户名,所有导入的对象属于该用户。默认情况下,对象的拥有者为连接 Pg 数据库的用户。
--nls_lang code: 设置 Oracle 客户端的 NLS_LANG 编码。
--client_encoding code: 设置 PostgreSQL 客户端编码。
--view_as_table str: 将视图导出为表,多个视图使用逗号分隔。
--estimate_cost   : 在 SHOW_REPORT 结果中输出迁移成本评估信息。
--cost_unit_value minutes: 成本评估单位,使用分钟数表示。默认值为 5 分钟,表示一个 PostgreSQL 专家迁移所需的时间。如果是第一次迁移,可以设置为 10 分钟。
   --dump_as_html     : 生成 HTML 格式的迁移报告,只能与 SHOW_REPORT 选项一起使用。默认的报告是一个简单的文本文件。
   --dump_as_csv      : 与上个参数相同,但是生成 CSV 格式的报告。
   --dump_as_sheet    : 生成迁移评估时,为每个数据库生成一行 CSV 记录。
   --init_project NAME: 创建一个ora2pg 项目目录结构。项目的顶级目录位于根目录之下。
   --project_base DIR : 定义ora2pg 项目的根目录,默认为当前目录。
   --print_header     : 与 --dump_as_sheet 一起使用,输出 CSV 标题信息。
   --human_days_limit num : 设置迁移评估级别从 B 升到 C 所需的人工日数量。默认值为 5 人工日。
   --audit_user LIST  : 设置查询 DBA_AUDIT_TRAIL 表时需要过滤的用户名,多个用户使用逗号分隔。该参数只能用于 SHOW_REPORT 和 QUERY 导出类型。
   --pg_dsn DSN       : 设置在线导入时的 PostgreSQL 数据源。
   --pg_user name     : 设置连接 PostgreSQL 的用户名。
   --pg_pwd password  : 设置连接 PostgreSQL 的用户密码。
   --count_rows       : 在 TEST 方式下执行真实的数据行数统计。
   --no_header        : 在导出文件中不添加 Ora2Pg 头部信息。
   --oracle_speed     : 用于测试 Oracle 发送数据的速度。不会真的处理或者写入数据。
   --ora2pg_speed     : 用于测试 Ora2Pg 发送转换后的数据的速度。不会写入任何数据。

如果执行成功,ora2pg 返回 0;如果出现错误,返回 1 。如果某个子进程被中断,并且用户收到了警告信息:“WARNING: an error occurs during data export. Please check what’s happen.”,ora2pg 将会返回 2 。大多数情况下是内存溢出(OOM)的问题,可以先尝试减小 DATA_LIMIT 参数的值。

对于开发者而言,可以在 ora2pg Perl 脚本中添加自定义的选项;因为 ora2pg.conf 文件中的所有配置选项都会以小写形式传递给新建的 Ora2Pg 对象实例。参考 ora2pg 代码以添加自定义的选项。

3.2、安装Ora2Pg

官网:https://ora2pg.darold.net/

GitHub:https://github.com/darold/ora2pg

文档:https://ora2pg.darold.net/documentation.html

下载:https://sourceforge.net/projects/ora2pg/

为使安装能够顺利通过,在安装 Ora2Pg 之前必须先确保系统已经安装了 Perl 模块以及 DBI、DBD::Oracle 模块。若需要直接导入到 PostgreSQL 则还需要安装 DBD::Pg 模块。


-- 在编译安装了PG的机器上安装ora2pg



-- 安装依赖包,perl版本5.10以上
yum install -y gcc perl-DBD-Pg perl perl-devel perl-DBI  perl-CPAN bzip2  \
perl-ExtUtils-eBuilder perl-ExtUtils-MakeMaker perl-Time-HiRes perl-tests  perf cpan


perl -MCPAN -e 'install DBI'
perl -MCPAN -e 'install DBD::Oracle'
perl -MCPAN -e 'install DBD::Pg'


-- =============安装“DBI”=============

perl -MCPAN -e 'install DBI'

wget http://www.cpan.org/authors/id/T/TI/TIMB/DBI-1.643.tar.gz
tar -zxvf DBI-1.643.tar.gz
cd DBI-1.643
perl Makefile.PL
make &&  make install



-- =============安装“DBD::Oracle”=============
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
wget https://download.oracle.com/otn_software/linux/instantclient/211000/oracle-instantclient-jdbc-21.1.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/211000/oracle-instantclient-devel-21.1.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/211000/oracle-instantclient-sqlplus-21.1.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/211000/oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm

docker cp oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm    lhrpg13:/soft/
docker cp oracle-instantclient-devel-21.1.0.0.0-1.x86_64.rpm	lhrpg13:/soft/
docker cp oracle-instantclient-jdbc-21.1.0.0.0-1.x86_64.rpm	lhrpg13:/soft/
docker cp oracle-instantclient-sqlplus-21.1.0.0.0-1.x86_64.rpm  lhrpg13:/soft/
rpm -ivh *.rpm

cat >> /root/.bashrc << "EOF"
export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
EOF

source  /root/.bashrc

-- 在线安装
export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
perl -MCPAN -e 'install DBD::Oracle'

-- 离线编译安装
wget http://www.cpan.org/authors/id/M/MJ/MJEVANS/DBD-Oracle-1.80.tar.gz
tar -zxvf DBD-Oracle-1.80.tar.gz
cd DBD-Oracle-1.80
perl Makefile.PL
make -j 8 && make install


-- =============安装“DBD::Pg”=============
-- /pg13/pg13/bin/pg_config
perl -MCPAN -e 'install DBD::Pg'


wget http://www.cpan.org/authors/id/T/TU/TURNSTEP/DBD-Pg-3.14.2.tar.gz
export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
tar -zxvf DBD-Pg-3.14.2.tar.gz
cd DBD-Pg-3.14.2
perl Makefile.PL  # 输入/pg13/pg13/bin/pg_config
make -j 8 && make install



-- =============安装“ora2pg”=============
wget https://udomain.dl.sourceforge.net/project/ora2pg/21.1/ora2pg-21.1.tar.bz2
-- wget https://codeload.github.com/darold/ora2pg/tar.gz/refs/tags/v21.1
tar xjf ora2pg-21.1.tar.bz2
cd ora2pg-21.1/
perl Makefile.PL
make && make install

[root@lhrpg13 ~]# which ora2pg
/usr/local/bin/ora2pg
[root@lhrpg13 ~]# ora2pg --version
Ora2Pg v21.1






-- 检查所有软件是否已安装
cat > /root/check.pl <<"EOF"
#!/usr/bin/perl
use strict;
use ExtUtils::Installed;
my $inst= ExtUtils::Installed->new();
my @modules = $inst->modules();
foreach(@modules)
{
        my $ver = $inst->version($_) || "???";
        printf("%-12s --  %s\n", $_, $ver);  
}
exit;
EOF



[root@lhrpg13 ~]# perl /root/check.pl 
DBD::Oracle  --  1.80
DBD::Pg      --  3.14.2
DBI          --  1.643
Ora2Pg       --  21.1
Perl         --  5.16.3

3.3、创建配置文件

配置参考: https://ora2pg.darold.net/documentation.html#CONFIGURATION

首先从示例文件复制一份,然后根据实际情况更改配置文件相关参数:

cp /etc/ora2pg/ora2pg.conf.dist /etc/ora2pg/ora2pg.conf

cat /etc/ora2pg/ora2pg.conf.dist  | grep -v ^# | grep -v ^$ >  /etc/ora2pg/ora2pg.conf

[root@lhrpg13 ora2pg]# cat /etc/ora2pg/ora2pg.conf.dist  | grep -v ^# | grep -v ^$ | wc -l
113

大约110多个参数。

3.3.1、导出表结构的配置文件

-- 表结构、约束(主外键等)、索引等
cat > /etc/ora2pg/ora2pg_table_ddl.conf <<"EOF"
ORACLE_HOME        /usr/lib/oracle/21/client64
ORACLE_DSN         dbi:Oracle:host=192.168.68.66;sid=lhrsdb;port=1521
#ORACLE_DSN        dbi:Oracle:tns_ora19c
ORACLE_USER        system
ORACLE_PWD         lhr
SCHEMA             SOE
EXPORT_SCHEMA      1
CREATE_SCHEMA      1
TYPE               TABLE
PG_NUMERIC_TYPE    0
PG_INTEGER_TYPE    1
DEFAULT_NUMERIC    float
SKIP               fkeys checks
#SKIP              keys pkeys ukeys indexes checks
NLS_LANG           AMERICAN_AMERICA.UTF8
OUTPUT_DIR         /tmp
OUTPUT             ora2pg_table_ddl.sql

PG_VERSION         13

EOF

3.3.2、导出其它对象的配置文件


cat > /etc/ora2pg/ora2pg_other_ddl.conf <<"EOF"
ORACLE_HOME        /usr/lib/oracle/21/client64
ORACLE_DSN         dbi:Oracle:host=192.168.68.66;sid=lhrsdb;port=1521
#ORACLE_DSN        dbi:Oracle:tns_ora19c
ORACLE_USER        system
ORACLE_PWD         lhr
SCHEMA             SOE
EXPORT_SCHEMA      1
CREATE_SCHEMA      1
TYPE               PACKAGE,PROCEDURE,TRIGGER,FUNCTION,VIEW,GRANT,SEQUENCE,MVIEW,TYPE,SYNONYM
PG_NUMERIC_TYPE    0
PG_INTEGER_TYPE    1
DEFAULT_NUMERIC    float
SKIP               fkeys
#SKIP              keys pkeys ukeys indexes checks
NLS_LANG           AMERICAN_AMERICA.UTF8
OUTPUT_DIR         /tmp
OUTPUT             ora2pg_other_ddl.sql

PG_VERSION         13

EOF

3.3.3、导出表数据的配置文件

cat > /etc/ora2pg/ora2pg_table_data.conf <<"EOF"
ORACLE_HOME        /usr/lib/oracle/21/client64
ORACLE_DSN         dbi:Oracle:host=192.168.68.66;sid=lhrsdb;port=1521
#ORACLE_DSN        dbi:Oracle:tns_ora19c
ORACLE_USER        system
ORACLE_PWD         lhr
SCHEMA             SOE
TYPE               COPY
PG_NUMERIC_TYPE    0
PG_INTEGER_TYPE    1
DEFAULT_NUMERIC    float
SKIP               fkeys checks
#SKIP              fkeys pkeys ukeys indexes checks
NLS_LANG           AMERICAN_AMERICA.UTF8
OUTPUT_DIR         /tmp
OUTPUT             ora2pg_table_data.sql

PG_DSN             dbi:Pg:dbname=lhrdb;host=192.168.68.67;port=5432
PG_USER            postgres
PG_PWD             lhr
PG_SCHEMA          soe
PG_VERSION         13

EOF

👉 注意:若去掉PG_DSN、PG_USER和PG_PWD参数的注释,则会将数据直接导入到PG中,而不会导出到中间文件。

3.4、使用ora2pg迁移数据

3.4.1、迁移全部表结构

如果在配置文件里指定的type包含了COPY,导完表结构后,表的数据也会随之导出,加-t参数即可只导出表结构不导出数据。

mkdir -p /ora2pg

[root@lhrpg13 ~]#  ora2pg -c /etc/ora2pg/ora2pg_table_ddl.conf -t table -b /ora2pg
[========================>] 7/7 tables (100.0%) end of scanning.         
Retrieving table partitioning information...
[========================>] 7/7 tables (100.0%) end of table export.
[root@lhrpg13 ~]# cd /ora2pg/
[root@lhrpg13 ora2pg]# more ora2pg_table_ddl.sql 
-- Generated by Ora2Pg, the Oracle database Schema converter, version 21.1
-- Copyright 2000-2020 Gilles DAROLD. All rights reserved.
-- DATASOURCE: dbi:Oracle:host=192.168.68.66;sid=lhrsdb;port=1521

SET client_encoding TO 'UTF8';

\set ON_ERROR_STOP ON

SET check_function_bodies = false;

CREATE SCHEMA IF NOT EXISTS soe;
ALTER SCHEMA soe OWNER TO soe;

SET search_path = soe,public;

CREATE TABLE addresses (
        address_id bigint NOT NULL,
        customer_id bigint NOT NULL,
        date_created timestamp NOT NULL,
        house_no_or_name varchar(60),
        street_name varchar(60),
        town varchar(60),
        county varchar(60),
        country varchar(60),
......

导出完成后,在PostgreSQL中创建数据库以及对应的表:

su - pg13
psql
CREATE USER SOE WITH password 'lhr' CREATEDB SUPERUSER replication createrole login;
create database lhrdb;
alter database lhrdb owner to SOE;
\c lhrdb

-- 跑脚本
\i  /ora2pg/ora2pg_table_ddl.sql

postgres=# \d
                List of relations
 Schema |         Name         | Type  |  Owner   
--------+----------------------+-------+----------
 soe    | addresses            | table | postgres
 soe    | card_details         | table | postgres
 soe    | customers            | table | postgres
 soe    | inventories          | table | postgres
 soe    | logon                | table | postgres
 soe    | order_items          | table | postgres
 soe    | orderentry_metadata  | table | postgres
 soe    | orders               | table | postgres
 soe    | product_descriptions | table | postgres
 soe    | product_information  | table | postgres
 soe    | warehouses           | table | postgres
(11 rows)

ora2pg有很多参数可供使用,具体请参考其帮助文件。

五、监控OGG运行状态并发送告警邮件

5.1、配置Oracle GoldenGate Director

参考:【DB宝21】OGG Director监控OGG运行状态并发送告警邮件

Oracle GoldenGate Director可以简化GoldenGate的监控和管理,可以通过图形界面或者web浏览器方便快捷的维护整个环境中的GoldenGate组件。OGG Director是部署在Oracle的中间件Weblogic Server上的Web应用,OGG Director可以安装在任何机器上,可以管理远程的OGG实例,远程的OGG实例不需要做任何的额外操作。

安装:

# 下载镜像
docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/lhroggdirector:4.0

# 打tag
docker tag registry.cn-hangzhou.aliyuncs.com/lhrbest/lhroggdirector:4.0 lhrbest/lhroggdirector:4.0

# 创建容器
docker rm -f lhroggdirector
docker run -d --name lhroggdirector -h lhroggdirector \
  -p 7001-7050:7001-7050  \
  --network mhalhr --ip 192.168.68.68 \
  --privileged=true \
  lhrbest/lhroggdirector:4.0 /usr/sbin/init
  


-- 添加网卡
docker network connect bridge lhroggdirector

docker restart lhroggdirector


# 进入容器
docker exec -it lhroggdirector bash

-- 4.0版本已经配置自动启动
# 启动数据库
# systemctl start mysql

# 启动weblogic
# nohup /u01/ogg/Oracle/GG_Directorgg-director/domain/startWebLogic.sh &


# 网页登陆
http://192.168.66.35:7001/acon/
admin/admin

远程mstsc登陆: 192.168.66.35:7050
用户名和密码:root/lhr

# 客户端设置
/u01/ogg/Oracle/GoldenGateDirector/bin/run-admin.sh
/u01/ogg/Oracle/GoldenGateDirector/bin/run-director.sh


-- 发送邮件设置
/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix
alternatives --display mta


sed  -i 's|172.0.0.0/8|0.0.0.0/0|g' /etc/postfix/main.cf
cat  /etc/postfix/main.cf | grep "mynetworks ="
postfix reload

5.1.1、bug:ERROR Access denied

http://blog.itpub.net/26736162/viewspace-2730434/


Checking connection to: 192.168.68.67:7809
Test is running directly from Director Server.
Opening GGSCI connection...
Connection FAILED, Manager doesn't seems to be running.
GGSCI Connection error: com.goldengate.gdsc.server.net.ggsci.ConnectException: Error retrieving dynamic port from 192.168.68.67 on 7809: ERROR	Access denied
Sending AllStat command...
GGSCI Connection failed: nullClosing connection...
Closed. All done.

解决:

echo "_DISABLEFIX21427144" >> /ogg/GLOBALS
echo "ACCESSRULE, PROG *, IPADDR *, PRI 1, ALLOW" >> /ogg/dirprm/mgr.prm

image-20210512094616365

5.2、其它监控工具

常用的OGG监控工具包括:

  • OGG Director
  • OGG Monitor
  • OEM Plug-in for OGG

麦老师对这3款监控工具都使用过,感觉OGG Director最好,因为它对OGG软件零侵入,并且安装部署比较简单,但是,对于OGG 12.3开始,该款工具不能检测OGG的告警日志,因为OGG告警日志的时间格式发生了变化。Oracle GoldenGate Director 12.1.2.0.171016是最终的版本,已停止开发,太可惜了!!!(The Oracle GoldenGate Director 12.1.2.0.171016 release is the terminal release, which includes important bug fixes.Oracle GoldenGate Director will not support Oracle GoldenGate 12.3 and later.)。可以参考:https://docs.oracle.com/goldengate/dir1212/gg-director/GDREL/toc.htm#GDREL-GUID-5B6FC393-F7C7-4E0A-9060-D82D377F4B6E

还剩OGG Monitor和OEM Plug-in for OGG,这2款工具是新工具,但是安装部署非常麻烦,而且需要安装monitor的agent,大约2g左右,监控高版本的OGG时,碰到的bug比较多。

以下是OGG Monitor的监控界面:

image-20210519110934101

image-20210519110949087

image-20210519111000606

以下是OEM Plug-in for OGG的监控界面:

这些内容,我们在麦老师的后期的OGG课程,或Oracle的高可用的课程中再详细介绍。

六、官方文档

https://docs.oracle.com/en/middleware/goldengate/core/19.1/index.html

https://docs.oracle.com/en/middleware/goldengate/core/19.1/gghdb/using-oracle-goldengate-postgresql.html

https://docs.oracle.com/en/middleware/goldengate/core/19.1/oracle-db/1-understanding-whats-supported.html#GUID-110CD372-2F7E-4262-B8D2-DC0A80422806

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。