1. 创建用户来存放OGG DDL 对象,这个一般就是我们创建的OGG用户。用户名不区分大小写。
2. 对OGG用户授权:
GRANT EXECUTE ON utl_file TO schema;
3. 创建OGG用户的表空间,在OGG 12c之前可以使用users表空间,但12c之后必须创建独立的表空间,不能和其他用户共享表空间。
4. 设置表空间的自动扩展。
5. 该步骤可选,编辑OGG 根目录下的params.sql脚本,修改ddl_fire_error_in_trigger参数为true。
6. 创建GLOBALS 文件(如果存在就之前编辑)
EDIT PARAMS ./GLOBALS
注意,这里必须加.,表示在OGG的根目录下,该文件没有扩展名。
7. 在GLOBALS 文件中指定DDL 用户名。
GGSCHEMA schema_name
8. 修改OGG 对象的用户名(可选操作)。
OGG的对象都有默认的名称。如果不想使用默认值,必须在安装之前就修改,否则就需要停止DDL 操作,然后重建这些对象。
建议使用默认值。这样方便维护。
9. 使用trigger-based DDL能使用invisible index,编辑params.sql脚本,修改如下:
define allow_invisible_index_keys = 'TRUE'
10. 保存并关闭GLOBALS和params.sql 文件。
11. 进入OGG的根目录。
12. 退出所有的Oracle session,包括SQL*Plus。
13. 用SYSDBA 连接SQL*Plus.用SYS用户来安装DDL trigger。
14. 运行marker_setup.sql脚本,需要输入OGG的用户名,然后按回车。 该脚本会安装DDL marker system。
@marker_setup.sql
15. 运行ddl_setup.sql 脚本。同样会提示输入OGG的用户名。
注意:如果这里OGG 用户对应的表空间是共享的表空间,那么该脚本会失败。
@ddl_setup.sql
16. 运行role_setup.sql 脚本。 会提示输入OGG的用户名。 该脚本会drop 并创建DDL 同步需要的role。
@role_setup.sql
17. 将上一步创建的role 赋给OGG Extract 用户。 如果有多个用户,就需要执行多次。
GRANT GGS_GGSUSER_ROLE TO ggs;
Grant succeeded.
18. 运行ddl_enable.sql 脚本来启用DDL 触发器。
@ddl_enable.sql
为了提高DDL 触发器的性能,执行ddl_pin脚本,脚本在执行的时候需要添加OGG用户名。
@ddl_pin DDL_user
引自Dave的文档;
执行DDL出现报错:
1、@/oracle/oggrep/marker_setup.sql特别慢
将路径切换到/oracle/oggrep/下,在执行@marker_setup.sql
2、@ddl_setup.sql报错ORA-00942: table or view does not exist;权限不全,重新赋权限
SQL> grant connect,resource to ggs_owner;
SQL> grant select any dictionary, select any table to ggs_owner;
SQL> grant create table to ggs_owner;
SQL> grant flashback any table to ggs_owner;
SQL> grant execute on dbms_flashback to ggs_owner;
SQL> grant execute on utl_file to ggs_owner;
再次执行,成功
2. 对OGG用户授权:
GRANT EXECUTE ON utl_file TO schema;
3. 创建OGG用户的表空间,在OGG 12c之前可以使用users表空间,但12c之后必须创建独立的表空间,不能和其他用户共享表空间。
4. 设置表空间的自动扩展。
5. 该步骤可选,编辑OGG 根目录下的params.sql脚本,修改ddl_fire_error_in_trigger参数为true。
6. 创建GLOBALS 文件(如果存在就之前编辑)
EDIT PARAMS ./GLOBALS
注意,这里必须加.,表示在OGG的根目录下,该文件没有扩展名。
7. 在GLOBALS 文件中指定DDL 用户名。
GGSCHEMA schema_name
8. 修改OGG 对象的用户名(可选操作)。
OGG的对象都有默认的名称。如果不想使用默认值,必须在安装之前就修改,否则就需要停止DDL 操作,然后重建这些对象。
建议使用默认值。这样方便维护。
9. 使用trigger-based DDL能使用invisible index,编辑params.sql脚本,修改如下:
define allow_invisible_index_keys = 'TRUE'
10. 保存并关闭GLOBALS和params.sql 文件。
11. 进入OGG的根目录。
12. 退出所有的Oracle session,包括SQL*Plus。
13. 用SYSDBA 连接SQL*Plus.用SYS用户来安装DDL trigger。
14. 运行marker_setup.sql脚本,需要输入OGG的用户名,然后按回车。 该脚本会安装DDL marker system。
@marker_setup.sql
15. 运行ddl_setup.sql 脚本。同样会提示输入OGG的用户名。
注意:如果这里OGG 用户对应的表空间是共享的表空间,那么该脚本会失败。
@ddl_setup.sql
16. 运行role_setup.sql 脚本。 会提示输入OGG的用户名。 该脚本会drop 并创建DDL 同步需要的role。
@role_setup.sql
17. 将上一步创建的role 赋给OGG Extract 用户。 如果有多个用户,就需要执行多次。
GRANT GGS_GGSUSER_ROLE TO ggs;
Grant succeeded.
18. 运行ddl_enable.sql 脚本来启用DDL 触发器。
@ddl_enable.sql
为了提高DDL 触发器的性能,执行ddl_pin脚本,脚本在执行的时候需要添加OGG用户名。
@ddl_pin DDL_user
引自Dave的文档;
执行DDL出现报错:
1、@/oracle/oggrep/marker_setup.sql特别慢
将路径切换到/oracle/oggrep/下,在执行@marker_setup.sql
2、@ddl_setup.sql报错ORA-00942: table or view does not exist;权限不全,重新赋权限
SQL> grant connect,resource to ggs_owner;
SQL> grant select any dictionary, select any table to ggs_owner;
SQL> grant create table to ggs_owner;
SQL> grant flashback any table to ggs_owner;
SQL> grant execute on dbms_flashback to ggs_owner;
SQL> grant execute on utl_file to ggs_owner;
再次执行,成功