引言

OracleSAP HANA实时复制系列():初始SRS介绍了从OracleSAP HANA实时复制系统的体系架构,并阐述了数据实时复制过程。在OracleSAP HANA实时复制系列()Replication Server的安装与配置OracleSAP HANA实时复制系列():Replication Agent的安装与配置中结合截图分别详细介绍了Replication ServerReplication Agent的安装与配置过程。本文结合图片详细介绍如何实现一个Oracle表到SAP HANA表的实时复制操作。

1安装SAP HANA ODBC

SAP Service Marketplace(SMP)上下载SAP HANAODBC库,或者也可以到已安装SAP HANA客户端的机器上搜索该ODBC库。不同操作系统使用的ODBC库名如下表所示。

Platform

Library Name

Windows (32-bit)

LIBODBCHDB32.dll

Windows (64-bit)

LIBODBCHDB.DLL

UNIX (64-bit)

libodbcHDB.so

因本文的Replication Server安装在Suse 11P2操作系统中,所以选择的库名为 libodbcHDB.so。将该文件复制到Rep_Server_install_dir\REP-15_5\connector\lib目录下,其中Rep_Server_install_dirReplication Server的安装目录。

更多关于SAP HANA ODBC库的下载、安装过程请参见Installing ODBC Libraries for ExpressConnect for SAP HANA database

2 Replication Server端创建到SAP HANA的连接

  1) 在Replication Server端的interfaces文件中添加SAP HANA连接信息


          <dataservername>

          master tcp ether <hostname> <port>

          query tcp ether <hostname> <port>

说明:

    • <dataservername>SAP HANA的服务器标识;
    • <hostname>SAP HANA所在的服务器的主机名或IP地址;
    • <port>SAP HANA的端口名称,每个SAP HANA有一个instance number<port>3instance number15组成,例如某个SAP HANA数据库的instance number 05,则<port>30515

 

  例如在本文中,SAP HANA安装在IP地址为<IPC>的服务器上,且SAP HANAinstance number05,则SAP HANA的连接信息为:


     HANA_SERVER

     master tcp ether <IPC> 30515

     query tcp ether <IPC> 30515

     修改interfaces文件后需重启Replication Server服务器才能使其生效。


  2) 创建SAP HANA维护用户

    a) 以系统用户登录SAP HANA并创建维护用户,创建用户命令如下



CREATE USER <muser> PASSWORD <mpwd>

          其中<muser>为维护用户的用户名,<mpwd>为其密码。

         

     b) 为维护用户赋予相应的权限


GRANT CREATE ANY, DELETE, DROP, EXECUTE,
INDEX, SELECT, UPDATE ON SCHEMA <myschema> TO <muser>

          其中<myschema>SAP HANAschema名称。

     c) 使用isql工具并以sa账户登录Replication Server来创建到SAP HANA的连接,创建连接命令如下



create connection to <dataservername>.<databasename>
using profile rs_oracle_to_hanadb;ech
set username <muser>
set password <mpwd>
go

     说明:

    • <dataservername>SAP HANA的服务器标识,在本文中设置该值为 HANA_SERVER
    • <databasename>是一个占位符,你必须输入一个字符,但不会被用到;
    • <muser>SAP HANA的维护用户名;
    • <mpwd> SAP HANA的维护用户密码。

3 创建Oracle表到SAP HANA表的复制作业

  1) 创建Oracle

     a) 以RA_USER用户登录到Oracle数据库,并创建一个表,例如表名取为ORA_TBL



CREATE TABLE ORA_TBL(idno NUMBER PRIMARY KEY,name VARCHAR2(20));

    

     b) 设置该表的权限为public


grant all on ORA_TBL to public;


     c) 在该表中随意插入几条数据



insert into ORA_TBL values (1, 'Burt Gringlesby');
insert into ORA_TBL values (2, 'Douglas Wong');
insert into ORA_TBL values (3, 'Tom Servo');
commit;


  2) 使用isqlsa用户登录到Replication Agent

     a) 为ORA_TBL表创建标记(mark)


pdb_setreptable ORA_TBL, mark
go

    b) 并为ORA_TBL表创建复制定义(replication definition)


rs_create_repdef ORA_TBL
go

               创建复制定义命令会生成如下的结果

         

Table/Procedure Name     RepDef Name    Status

———————— ————– ——–

<OracleTableOwner>.PTAB1 “<repdefname>” Created

(1 row affected)

  3) 创建 SAP HANA

     a) 登录SAP HANA,登录用户(例如<HANATableOwner>)只要具有创建表的权限即可,创建一个表,可以为列表或行表,例如表名取为HANA_TBL,该表须与Oracle相应的表具有一致的表结构,包括列名和列的数据类型。



CREATE COLUMN TABLE <HANATableOwner>.HANA_TBL(IDNO INT PRIMARY KEY, NAME VARCHAR(20));


     b) 设置该表的权限为public,以使得HANA<muser>用户可以操作该表



grant all privileges on <HANATableOwner>.HANA_TBL to public;

  4) 使用isqlsa用户登录到Replication Server

     a) 更改复制定义(alter replication definition)


alter replication definition <repdefname>
with replicate table named <HANATableOwner>.HANA_TBL
go


     b) 创建订阅(subscription),并物化(materialize) HANA_TBL表,即将Oracle数据库的ORA_TBL表的数据全部导入到HANA_TBL表中



create subscription <sub_name>
for <repdefname>
with replicate at <dataservername>.<databasename>
without holdlock
direct_load
user <puser> password <ppwd>
go

说明:

    • <sub_name>:订阅的名字,用户可以随意指定一个合法的字符串;
    • <dataservername>.<databasename>:为创建SAP HANA连接时指定的服务器名和数据库名;
    • <puser>:Replication Agent的系统用户名,本文中取值为sa
    • <ppwd>:<puser>用户的密码,本文中取值为111111

        执行完该命令后,查看SAP HANA HANA_TBL表,发现OracleORA_TBL表里的数据已经复制到该表中。而且今后ORA_TBL表的事务都会实时复制             到HANA_TBL表中。


     c) 查看订阅(subscription)状态



check subscription <sub_name>
for <repdefname>
with replicate at <dataservername>.<databasename>
go

更多Replication Server相关的操作命令请参见SRS Reference Manual

4结束语

本文主要介绍了如何实现从Oracle表到SAP HANA表的复制作业,至此已完成SRS的概念、安装、配置以及表复制任务的介绍。

在写本系列文章的过程中,得到了Yun JinLeo HuWhisly Wei等同事的很多帮助,文中多次借鉴了Whisly所分享的一篇内部文章的内容,在此表示衷心的感谢。

参考资料

SRS Reference Manual

想获取更多SAP HANA学习资料或有任何疑问,请关注新浪微博@HANAGeek!我们欢迎你的加入!

转载本文章请注明作者和出处<文章url>,请勿用于任何商业用途。

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply