Oracle到SAP HANA实时复制系列(一):初始SRS介绍了从Oracle到SAP HANA实时复制系统的体系架构,并阐述了数据实时复制过程。在Oracle到SAP HANA实时复制系列(二):Replication Server的安装与配置和Oracle到SAP HANA实时复制系列(三):Replication Agent的安装与配置中结合截图分别详细介绍了Replication Server和Replication Agent的安装与配置过程。本文结合图片详细介绍如何实现一个Oracle表到SAP HANA表的实时复制操作。
从SAP Service Marketplace(SMP)上下载SAP HANA的ODBC库,或者也可以到已安装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_dir为Replication Server的安装目录。
更多关于SAP HANA ODBC库的下载、安装过程请参见Installing ODBC Libraries for ExpressConnect for SAP HANA database。
1) 在Replication Server端的interfaces文件中添加SAP HANA连接信息
<dataservername>
master tcp ether <hostname> <port>
query tcp ether <hostname> <port>
说明:
例如在本文中,SAP HANA安装在IP地址为<IPC>的服务器上,且SAP HANA的instance number为05,则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 HANA的schema名称。
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
说明:
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) 使用isql以sa用户登录到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) 使用isql以sa用户登录到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
说明:
执行完该命令后,查看SAP HANA 的HANA_TBL表,发现Oracle的ORA_TBL表里的数据已经复制到该表中。而且今后ORA_TBL表的事务都会实时复制 到HANA_TBL表中。
c) 查看订阅(subscription)状态
check subscription <sub_name>
for <repdefname>
with replicate at <dataservername>.<databasename>
go
更多Replication Server相关的操作命令请参见SRS Reference Manual。
本文主要介绍了如何实现从Oracle表到SAP HANA表的复制作业,至此已完成SRS的概念、安装、配置以及表复制任务的介绍。
在写本系列文章的过程中,得到了Yun Jin、Leo Hu和Whisly Wei等同事的很多帮助,文中多次借鉴了Whisly所分享的一篇内部文章的内容,在此表示衷心的感谢。
想获取更多SAP HANA学习资料或有任何疑问,请关注新浪微博@HANAGeek!我们欢迎你的加入!
转载本文章请注明作者和出处<文章url>,请勿用于任何商业用途。
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
38 | |
19 | |
13 | |
13 | |
11 | |
10 | |
10 | |
10 | |
8 | |
8 |