GolddenGate的用户下所有表及DDL配置

本文介绍如何利用Oracle GoldenGate工具实现源数据库的DDL语句同步到目标数据库,并详细记录了从安装存储表、配置GoldenGate Extract和Replicat参数到验证同步效果的全过程。

1.gguser下所有表的变动情况及时反映到目的数据库

 

源机:

  GGSCI (localhost.localdomain) 3> edit params eorakk
EXTRACT EORAKK
USERID system, PASSWORD oracle
RMTHOST 192.168.0.100, MGRPORT 7809
RMTTRAIL  ./dirdat/kk
TABLE gguser.*;

 

目标机:

  REPLICAT RORAKK
USERID system, PASSWORD oracle
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RORAKK.DSC, PURGE
--MAP gguser.tcustmer TARGET gguser.tcustmer;
--MAP gguser.tcustord TARGET gguser.tcustord;
MAP gguser.* TARGET gguser.*;

 

2.DDL语句同步

 1.安装存储表

 

 SQL> @marker_setup   --该脚本用以建立一个DDL标记表

 SQL> @ddl_setup         -- 以INITIALSETUP选项运行ddl_setup.sql将在数据库中创建捕获DDL语句的Trigger等必要组件 

 

 SQL> @role_setup    

 

role_setup脚本用以建立GGS_GGSUSER_ROLE角色

我们需要将该GGS_GGSUSER_ROLE授予给extract group参数中定义的userid用户

 

SQL> grant GGS_GGSUSER_ROLE TO system;

 

 

SQL> @ddl_enable

ddl_enable.sql将正式enable ddl捕获触发器,即:ALTER TRIGGER sys .&ddl_trigger_name ENABLE; 

 

SQL> @?/rdbms/admin/dbmspool

执行dbmspool包将在数据库中创建DBMS_SHARED_POOL包,之后需要用到

 

SQL> @ddl_pin
ddl_pin.sql通过dbms_shared_pool.keep存储过程将DDLReplication相关的对象keep在共享池中,以保证这些对象不要reload,提升性能 

 

2.配置gg

 源机:

  GGSCI (localhost.localdomain) 1> add extract load1, tranlog, begin now
EXTRACT added

 

GGSCI (localhost.localdomain) 3> add rmttrail ./dirdat/ma, megabytes 100, extract load1
RMTTRAIL added.

 

--GGSCI (localhost.localdomain) 4> encrypt password system
--No key specified, using default key...

--Encrypted password:  AACAAAAAAAAAAAGAMGMBUEODLIVEUFMJ


 GGSCI (localhost.localdomain) 6> edit params load1

 

加入:
extract load1
userid system, password oracle

RMTHOST 192.168.0.100, MGRPORT 7809
RMTTRAIL ./dirdat/ma
DDL INCLUDE MAPPED
Table gguser.*;

 

GGSCI (localhost.localdomain) 5> start extract load1

GGSCI (localhost.localdomain) 5> view report  load1

 

解决错误:

2011-04-21 01:31:20  ERROR   OGG-00303  Error (-2) decrypting string: Unknown encryption type.

使用encrypt password system出现此情况,因此不用系统生成的密码

 

3.配置目标

 GGSCI (localhost.localdomain) 4> add replicat rep1, exttrail ./dirdat/ma, begin now, checkpointtable system.checkpoint


GGSCI (localhost.localdomain) 6> edit params rp1

 

写入:
replicat rep1
userid system, password oracle
ASSUMETARGETDEFS
discardfile ./dirrpt/rep1.dsc, PURGE
HANDLECOLLISIONS
DDL
map gguser.*, target gguser.*;

 

GGSCI (localhost.localdomain) 7> start replicat rep1
ERROR: Parameter file /u01/app/oracle/gg11/dirprm/rep1.prm does not exist. ---查看文件是否存在

ERROR   OGG-00446  Checkpoint table SYSTEM.GGCHKPTABLE does not exist

解决办法:添加checkpoint, checkpoint需参考./GLOBALS中参数

 

 4.验证

 源机:

  SQL> conn gguser/gguser

  
SQL> create table t2(id number(10,0));

 

目标机:desc t2

 

源机:

  insert into t2 values(10000);

commit;

 

目标机:select * from t2

在 PostgreSQL 中生成所有DDL 语句可以使用以下几种方法: ### 使用 pg_dump 工具 `pg_dump` 是 PostgreSQL 自带的备份工具,可用于生成数据库对象(包括)的 DDL 语句。以下是使用 `pg_dump` 生成所有 DDL 语句的命令示例: ```bash pg_dump -s -U your_username -d your_database -t '*' > all_tables_ddl.sql ``` - `-s`:示只导出模式(即只生成 DDL 语句,不包含数据)。 - `-U your_username`:指定连接数据库用户名。 - `-d your_database`:指定要导出的数据库名。 - `-t '*'`:指定要导出的,`*` 示所有。 - `> all_tables_ddl.sql`:将生成的 DDL 语句输出到 `all_tables_ddl.sql` 文件中。 ### 在 SQL 中使用系统查询生成 DDL 可以通过查询 PostgreSQL 的系统 `pg_catalog.pg_class`、`pg_catalog.pg_attribute` 等生成 DDL 语句。以下是一个简单的示例 SQL 代码: ```sql SELECT format('CREATE TABLE %I.%I (', n.nspname, c.relname) || string_agg( format('%I %s%s', a.attname, pg_catalog.format_type(a.atttypid, a.atttypmod), CASE WHEN a.attnotnull THEN ' NOT NULL' ELSE '' END ), ', ' ) || ');' FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid WHERE c.relkind = 'r' -- 'r' 示普通 AND a.attnum > 0 AND NOT a.attisdropped GROUP BY n.nspname, c.relname; ``` 这个 SQL 查询将生成每个的基本 DDL 语句,包含名和列定义。 ### 使用 DBeaver 工具 在 DBeaver 中,可以通过以下步骤生成所有DDL 语句: 1. 连接到 PostgreSQL 数据库。 2. 在数据库导航器中,展开数据库节点,右键单击要导出 DDL数据库。 3. 选择“工具” -> “导出数据”。 4. 在导出向导中,选择“SQL 脚本”作为导出类型。 5. 在“对象选择”步骤中,选择要导出的(可以选择所有)。 6. 在“选项”步骤中,确保勾选“仅结构(无数据)”选项。 7. 指定导出文件的路径和文件名,然后点击“完成”。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值