表级单向流环境部署.docx

上传人:b****3 文档编号:3753634 上传时间:2022-11-25 格式:DOCX 页数:8 大小:17.26KB
下载 相关 举报
表级单向流环境部署.docx_第1页
第1页 / 共8页
表级单向流环境部署.docx_第2页
第2页 / 共8页
表级单向流环境部署.docx_第3页
第3页 / 共8页
表级单向流环境部署.docx_第4页
第4页 / 共8页
表级单向流环境部署.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

表级单向流环境部署.docx

《表级单向流环境部署.docx》由会员分享,可在线阅读,更多相关《表级单向流环境部署.docx(8页珍藏版)》请在冰豆网上搜索。

表级单向流环境部署.docx

表级单向流环境部署

表级单向流环境部署

===========================================================

作者:

yangtingkun()

发表于:

2010.08.3023:

16

分类:

ORACLE

出处:

---------------------------------------------------------------

流机制环境准备

===========================================================

作者:

yangtingkun()

发表于:

2010.08.2923:

57

分类:

ORACLE

出处:

---------------------------------------------------------------

要部署一个流环境,必要环境设置,以及权限用户的建立是必不可少的。

这篇文章简单描述一下建立流环境的前期准备工作。

第一步需要创建一个流管理员,名称并不重要,关键是要授予必要的权限:

SQL>CONNYANGTK@"192.25.1.101/YANGTK.COMPUTE"输入口令:

******已连接。

SQL>SELECT*FROMGLOBAL_NAME;

GLOBAL_NAME

------------------------------------------------------------------------------

YANGTK.COMPUTE

SQL>CREATETABLESPACESTREAMTBS

2DATAFILE'E:

ORACLEORADATAYANGTKSTREAMTBS01.DBF'SIZE1024M;

表空间已创建。

SQL>CREATEUSERSTRMADMINIDENTIFIEDBYSTRMADMIN

2DEFAULTTABLESPACESTREAMTBS

3QUOTAUNLIMITEDONSTREAMTBS;

用户已创建。

SQL>GRANTDBATOSTRMADMIN;

授权成功。

如果流管理员STRMADMIN需要执行用户的存储过程,那么STRMADMIN还需要通过DBMS_STREAMS_AUTH包来授权:

SQL>CONNSYS@"192.25.1.101/YANGTK.COMPUTE"ASSYSDBA输入口令:

****已连接。

SQL>BEGIN

2DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(

3GRANTEE=>'STRMADMIN',

4GRANT_PRIVILEGES=>TRUE);

5END;

6/

PL/SQL过程已成功完成。

在所有节点上建立了用户后,就需要创建两个节点间的数据库链,如果是双向复制,那么就需要在两个节点上分别建立指向对方的数据库链,如果是单向复制,需要在源节点上建立指向目标节点的数据库链:

SQL>CONNSTRMADMIN/STRMADMIN@192.25.1.101/YANGTK.COMPUTE已连接。

SQL>CREATEDATABASELINKSTREAM1.COMPUTE

2CONNECTTOSTRMADMIN

3IDENTIFIEDBYSTRMADMIN

4USING'STREAM1';

数据库链接已创建。

这里只创建了从源数据库YANGTK.COMPUTE到目标数据库STREAM1.COMPUTE的数据库链,如果是双向流环境,或者在实体化的时候需要目标数据库到源数据库的数据库链,那么应该在目标数据库上建立类似的数据库链指向源数据库。

下面建立必要的目录对象,由于流复制的实体化过程可能需要数据泵执行导出操作,因此需要建立DIRECTORY对象:

SQL>CREATEDIRECTORYD_OUTPUTAS'E:

DMP';

目录已创建。

检查源数据库是否处于归档模式,如果不是归档模式,需要将数据库关闭,至于归档模式后再打开:

SQL>SELECTNAME,LOG_MODEFROMV$DATABASE;

NAMELOG_MODE

---------------------

YANGTKARCHIVELOG

如果需要使用DOWNSTREAM流环境,需要部署源数据库到DOWNSTREAM数据库的归档日志传递方式。

如果数据库之间可以之间访问,则只需设置一个LOG_ARCHIVE_DEST_N参数就可以了。

最后需要注意和流相关的初始化参数是否正确的设置,比如STREAMS_POOL_SIZE大小的设置等等,不过数据库中并没有什么额外开关类型的初始化参数控制流,一般来说默认的初始化参数已经可以是流环境正常工作了。

当然9.2版本的流由于存在多个bug,因此必须设置一些初始化参数,甚至包括隐藏参数,这里就不详细描述了。

至此,流环境的准备工作完成。

yangtingkun发表于:

2010.08.2923:

57:

:

分类:

(ORACLE):

:

阅读:

(159次):

:

评论(0)

描述一个最简单的流配置,表级单向流环境部署。

流机制环境准备:

源数据库和目标数据库都根据上面的文章部署好流环境,建立STRMADMIN用户,建立目录和数据库链。

SQL>CONNYANGTK/YANGTK@192.25.1.100/YANGTK.COMPUTE已连接。

SQL>CREATETABLET_STREAM

2ASSELECTROWNUMID,

3A.*

4FROMDBA_OBJECTSA;

表已创建。

SQL>ALTERTABLET_STREAMADDCONSTRAINTPK_T_STREAM

2PRIMARYKEY(ID);

表已更改。

首先在源数据库上建立流复制的表,下面利用流管理员用户STRADMIN建立所需的QUEUE:

SQL>CONNSTRMADMIN/STRMADMIN@192.25.1.100/YANGTK.COMPUTE已连接。

SQL>SELECTDB_LINKFROMUSER_DB_LINKS;

DB_LINK

----------------------------------------------------------------

STREAM1.COMPUTE

SQL>SELECTGLOBAL_NAMEFROMGLOBAL_NAME@STREAM1.COMPUTE;

GLOBAL_NAME

----------------------------------------------------------------

STREAM1.COMPUTE

SQL>EXECDBMS_STREAMS_ADM.SET_UP_QUEUE

PL/SQL过程已成功完成。

连接到目标数据库,同样建立队列:

SQL>CONNSTRMADMIN/STRMADMIN@192.25.1.100/STREAM1.COMPUTE已连接。

SQL>SELECTDB_LINKFROMUSER_DB_LINKS;

DB_LINK

------------------------------------------------------------------

YANGTK.COMPUTE

SQL>SELECTGLOBAL_NAMEFROMGLOBAL_NAME@YANGTK.COMPUTE;

GLOBAL_NAME

------------------------------------------------------------------

YANGTK.COMPUTE

SQL>EXECDBMS_STREAMS_ADM.SET_UP_QUEUE

PL/SQL过程已成功完成。

连接到源数据库,建立传播机制:

SQL>CONNSTRMADMIN/STRMADMIN@192.25.1.100/YANGTK.COMPUTE已连接。

SQL>BEGIN

2DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(

3TABLE_NAME=>'YANGTK.T_STREAM',

4STREAMS_NAME=>'TABLE_SINGLE_STREAM',

5SOURCE_QUEUE_NAME=>'STRMADMIN.STREAMS_QUEUE',

6DESTINATION_QUEUE_NAME=>'STRMADMIN.STREAMS_QUEUE@STREAM1.COMPUTE',

7INCLUDE_DML=>TRUE,

8INCLUDE_DDL=>TRUE,

9SOURCE_DATABASE=>'YANGTK.COMPUTE',

10INCLUSION_RULE=>TRUE,

11QUEUE_TO_QUEUE=>TRUE);

12END;

13/

PL/SQL过程已成功完成。

下面建立捕获机制:

SQL>BEGIN

2DBMS_STREAMS_ADM.ADD_TABLE_RULES(

3TABLE_NAME=>'YANGTK.T_STREAM',

4STREAMS_TYPE=>'CAPTURE',

5STREAMS_NAME=>'CAPTURE_TABLE',

6QUEUE_NAME=>'STRMADMIN.STREAMS_QUEUE',

7INCLUDE_DML=>TRUE,

8INCLUDE_DDL=>TRUE,

9INCLUSION_RULE=>TRUE);

10END;

11/

PL/SQL过程已成功完成。

下面需要在目标数据库上设置实体化SCN。

如果要复制的表在目标端不存在,可以有多种方法来实现表的复制并进行实体化,这里为了简化例子,直接在目标数据库上通过CREATETABLEASSELECT方式建立复制表,这样被复制表在源数据库和目标数据库就处于数据一致的状态:

SQL>CONNYANGTK/YANGTK@192.25.1.100/STREAM1.COMPUTE已连接。

SQL>CREATEDATABASELINKYANGTK.COMPUTEUSING'YANGTK';

数据库链接已创建。

SQL>CREATETABLET_STREAMAS

2SELECT*

3FROMT_STREAM@YANGTK.COMPUTE;

表已创建。

SQL>ALTERTABLET_STREAMADDCONSTRAINTPK_T_STREAM

2PRIMARYKEY(ID);

表已更改。

下面在源数据库获取当前的SCN,并将这个SCN设置到目标数据库:

SQL>CONNSTRMADMIN/STRMADMIN@192.25.1.100/YANGTK.COMPUTE已连接。

SQL>DECLARE

2V_SCNNUMBER:

=DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER;

3BEGIN

4DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@STREAM1.COMPUTE(

5SOURCE_OBJECT_NAME=>'YANGTK.T_STREAM',

6SOURCE_DATABASE_NAME=>'YANGTK.COMPUTE',

7INSTANTIATION_SCN=>V_SCN);

8END;

9/

PL/SQL过程已成功完成。

下面在目标数据库建立应用机制:

SQL>CONNSTRMADMIN/STRMADMIN@192.25.1.100/STREAM1.COMPUTE已连接。

SQL>BEGIN

2DBMS_STREAMS_ADM.ADD_TABLE_RULES(

3TABLE_NAME=>'YANGTK.T_STREAM',

4STREAMS_TYPE=>'APPLY',

5STREAMS_NAME=>'APPLY_TABLE',

6QUEUE_NAME=>'STRMADMIN.STREAMS_QUEUE',

7INCLUDE_DML=>TRUE,

8INCLUDE_DDL=>TRUE,

9SOURCE_DATABASE=>'YANGTK.COMPUTE',

10INCLUSION_RULE=>TRUE);

11END;

12/

PL/SQL过程已成功完成。

下面设置APPLY进程的参数,并启动应用进程:

SQL>BEGIN

2DBMS_APPLY_ADM.SET_PARAMETER(

3APPLY_NAME=>'APPLY_TABLE',

4PARAMETER=>'DISABLE_ON_ERROR',

5VALUE=>'N');

6END;

7/

PL/SQL过程已成功完成。

SQL>BEGIN

2DBMS_APPLY_ADM.START_APPLY(APPLY_NAME=>'APPLY_TABLE');

3END;

4/

PL/SQL过程已成功完成。

最后在源数据库启动捕获进程:

SQL>CONNSTRMADMIN/STRMADMIN@192.25.1.100/YANGTK.COMPUTE已连接。

SQL>BEGIN

2DBMS_CAPTURE_ADM.START_CAPTURE(CAPTURE_NAME=>'CAPTURE_TABLE');

3END;

4/

PL/SQL过程已成功完成。

至此,表级单向的流环境配置完成,下面检查一下流环境是否工作正常。

在源数据库修改记录和表结构:

SQL>CONNYANGTK/YANGTK@192.25.1.100/YANGTK.COMPUTE已连接。

SQL>SELECTCOUNT(*)FROMT_STREAM;

COUNT(*)

----------

49958

SQL>DELETET_STREAMWHEREID=1;

已删除1行。

SQL>SELECTDATA_DEFAULT

2FROMUSER_TAB_COLUMNS

3WHERETABLE_NAME='T_STREAM'

4ANDCOLUMN_NAME='CREATED';

DATA_DEFAULT

------------------------------------------------------------

SQL>ALTERTABLET_STREAMMODIFYCREATEDDEFAULTSYSDATE;

表已更改。

SQL>SELECTDATA_DEFAULT

2FROMUSER_TAB_COLUMNS

3WHERETABLE_NAME='T_STREAM'

4ANDCOLUMN_NAME='CREATED';

DATA_DEFAULT

------------------------------------------------------------

SYSDATE

SQL>INSERTINTOT_STREAM

2(ID,OWNER,OBJECT_NAME)

3VALUES(0,'YANGTK','TEST');

已创建1行。

SQL>COMMIT;

提交完成。

连接目标数据库,检查表结构的修改和数据的修改是否已经应用到复制表上:

SQL>CONNYANGTK/YANGTK@192.25.1.100/STREAM1.COMPUTE已连接。

SQL>ALTERSESSIONSETNLS_DATE_FORMAT='YYYY-MM-DDHH24:

MI:

SS';

会话已更改。

SQL>SELECTSYSDATEFROMDUAL;

SYSDATE

-------------------

2010-01-0800:

16:

24

SQL>SELECTID,OWNER,OBJECT_NAME,CREATED

2FROMT_STREAM

3WHEREID<2;

IDOWNEROBJECT_NAMECREATED

-----------------------------------------------------------------------------------------

0YANGTKTEST2010-01-0800:

14:

32

SQL>SELECTDATA_DEFAULT

2FROMUSER_TAB_COLUMNS

3WHERETABLE_NAME='T_STREAM'

4ANDCOLUMN_NAME='CREATED';

DATA_DEFAULT

--------------------------------------------------------------------------------

SYSDATE

可以看到,DML和DDL语句都已经传播并应用到了目标数据库中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1