S4 HANA连接其他数据库(oracle,sqlserver)

配置步骤很简单:
1.配置连接:dbco
2.测试链接:sm38 执行ADBC_TEST_CONNECTION

可真要配置起来,那可就是两行泪。
安装S4系统后直接配置数据库连接,如果你不遇到错误,那就真是遇到神了,所以错误是必须的,针对oracle和sql server的解法还不一样,但其实也一样,那就是安装驱动。
第一部分:sql server连接错误的解法:
测试链接时的错误如下:
 *** ERROR => DlLoadLib()==DLENOACCESS - dlopen("/usr/sap/S4D/D03/exe/dbmssslib.so") FAIL
"libodbc.so.1: cannot open shared object file: No such file or directory"  [dlux.c
 {root-id=06BE636F524C1ED9ACB34750EB54652F}_{conn-id=00000000000000000000000000000000}_0
 *** ERROR => Couldn't load library '/usr/sap/S4D/D03/exe/dbmssslib.so'
B  *** ERROR => Couldn't load library '/usr/sap/S4D/D03/ex
 [dbcon.c      7091]
B  ***LOG BYG=> could not load library for database connec
B  ***LOG BZY=> unexpected return code 8192 calling DBDS [
B  *** ERROR => Unexpected RC when calling dsql_connect

s4dev:s4dadm 54> cdexe
s4dev:s4dadm 57> ls dbmss
s4dev:s4dadm 58> ls dbms*
s4dev:s4dadm 59> rpm -q glibc
glibc-2.22-61.3.x86_64
s4dev:s4dadm 60> 
步骤一:先到微软官网下载文件
https://docs.microsoft.com/zh-cn/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017
msodbcsql17-17.0.1.1-1.x86_64.rpm                  12-Mar-2018 19:03             3888300
msodbcsql17-17.1.0.1-1.x86_64.rpm                  03-Apr-2018 23:33             3919661
msodbcsql17-17.2.0.1-1.x86_64.rpm                  11-Jul-2018 05:22             4127205
msodbcsql17-17.3.1.1-1.x86_64.rpm                  26-Feb-2019 04:43              737601
unixODBC-2.3.7-1.suse.x86_64.rpm                   26-Feb-2019 05:33              218160
下载unixODBC-2.3.7-1.suse.x86_64.rpm 和msodbcsql17-17.3.1.1-1.x86_64.rpm 
s4dev:/tmp # rpm -ivh unixunixODBC-2.3.7-1.suse.x86_64.rpm
error: open of unixunixODBC-2.3.7-1.suse.x86_64.rpm failed: No such file or directory
s4dev:/tmp # rpm -ivh unixODBC-2.3.7-1.suse.x86_64.rpm
warning: unixODBC-2.3.7-1.suse.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID be1229cf: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:unixODBC-2.3.7-1.suse            ################################# [100%]
s4dev:/tmp # rpm -ivh unixunixODBC-2.3.7-1.suse.x86_64.rpm
error: open of unixunixODBC-2.3.7-1.suse.x86_64.rpm failed: No such file or directory
s4dev:/tmp # rpm -ivh msodbcsql17-17.3.1.1-1.x86_64.rpm
warning: msodbcsql17-17.3.1.1-1.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID be1229cf: NOKEY
Preparing...                          ################################# [100%]
The license terms for this product can be downloaded from
https://aka.ms/odbc17eula and found in
/usr/share/doc/msodbcsql17/LICENSE.txt . By entering 'YES',
you indicate that you accept the license terms.

Do you accept the license terms? (Enter YES or NO)
YES
Updating / installing...
   1:msodbcsql17-17.3.1.1-1           ################################# [100%]
步骤二:解决链接问题
安装驱动后进行dbco 测试,还是有错误:
M  *** ERROR => DlLoadLib()==DLENOACCESS - dlopen("/usr/sap/S4D/D03/exe/dbmssslib.so") FAILED
  "libodbc.so.1: cannot open shared object file: No such file or directory"  [dlux.c       550]
M  {root-id=06BE636F524C1ED9ACB3F0548BAEE77A}_{conn-id=00000000000000000000000000000000}_0
B  *** ERROR => Couldn't load library '/usr/sap/S4D/D03/exe/dbmssslib.so'
 [dbcon.c      7091]
B  ***LOG BYG=> could not load library for database connection ORGANIZATIONDB [dbds         984]
B  ***LOG BZY=> unexpected return code 8192 calling DBDS [dbacds       2106]
B  *** ERROR => Unexpected RC when calling dsql_connect

网上可以找到这个错误的解法:
5. libodbc.so.1: cannot open shared object file
Environment:
 - SuSE Linux 12
Symptom:
The workprocess trace points to the following error: 
M *** ERROR => DlLoadLib()==DLENOACCESS - dlopen("/usr/sap/SID/DVEBMGS00/exe/dbmssslib.so") FAILED 
"libodbc.so.1: cannot open shared object file: No such file or directory" [dlux.c 521] 
M {root-id=0050568639A41ED6B1EAF03921567B8F}_{conn-id=00000000000000000000000000000000}_0 
B *** ERROR => Couldn't load library '/usr/sap/SID/DVEBMGS00/exe/dbmssslib.so' 
Solution:
Create the symbol links: 

     ln -s /usr/lib64/libodbc.so.2.0.0 /usr/lib64/libodbc.so.1
     ln -s /usr/lib64/libodbcinst.so.2.0.0 /usr/lib64/libodbcinst.so.

安装这个方案建立链接
s4dev:/usr/sap/S4D/D03/exe # cd /usr/lib64
s4dev:/usr/lib64 # ls libodbc*
libodbc.so    libodbc.so.2.0.0  libodbccr.so.2      libodbcinst.so    libodbcinst.so.2.0.0
libodbc.so.2  libodbccr.so      libodbccr.so.2.0.0  libodbcinst.so.2
s4dev:/usr/lib64 # ln -s /usr/lib64/libodbc.so.2 /usr/lib64/libodbc.so.1
s4dev:/usr/lib64 # ln -s /usr/lib64/libodbcinst.so.2 /usr/lib64/libodbcinst.so.1
完成后dbco测试即可成功。

第二部分:Oracle连接错误的解法:
微软以人性化著称都这样,所以连接oracle那就更不省事。在dbco创建连接的时候,你连连接字符串都不好写。
步骤一:下载oracle client。
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
怕少这少那,一口气下载并安装。
oracle-instantclient19.3-sqlplus-19.3.0.0.0-1.x86_64.rpm
oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm
oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm
oracle-instantclient19.3-tools-19.3.0.0.0-1.x86_64.rpm
安装好了以后就会有下面这个目录
s4qas:/usr/lib/oracle/19.3/client64/lib/network/admin 
这个里面的文本文件有一段话:
============================================================================
This is the default directory for Oracle Network and Oracle Client
configuration files. You can place files such as tnsnames.ora, sqlnet.ora
and oraaccess.xml in this directory.
NOTE:
If you set an environment variable
TNS_ADMIN to another directory containing
configuration files, they will be used instead of the files in this default
directory.
============================================================================

开始的时候我不知道有这个目录,所有自己建了client64/network/admin目录,然后把tnsnames.ora放在这个目录下。
后来于是又搞了一通环境变量,目的为了指向自己建的目录。
s4qas:/home/s4qadm#vi .bashrc
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib/oracle/19.3/client64/lib
export ORACLE_HOME=/usr/lib/oracle/19.3/client64
export TNS_ADMIN=/usr/lib/oracle/19.3/client64/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
dbco测试还是错误,又把/etc/profile的全局环境变量修改了。
s4qas:/etc # vi profile
s4qas:/etc # echo $TNS_ADMIN
看起来环境变量也是生效的。
可是还是错误。

步骤二:解决链接库问题
错误日志如下:
B  Loading DB library '/usr/sap/S4Q/D03/exe/dboraslib.so' ...
M  *** ERROR => DlLoadLib()==DLENOACCESS - dlopen("/usr/sap/S4Q/D03/exe/dboraslib.so")
FAILED
  "libclntsh.so.11.1: cannot open shared object file: No such file or directory"  [dlux.c       550]
M  {root-
id=06E38A3CBB1E1EE9B3F32F46465633D6}_{conn-id=00000000000000000000000000000000}_0
B  *** ERROR => Couldn't load library
'/usr/sap/S4Q/D03/exe/dboraslib.so'
 [dbcon.c      7091]
B  ***LOG BYG=> could not load library for database connection US_WMS_PRD [dbds         984]
B
 ***LOG BZY=> unexpected return code 8192 calling DBDS [dbacds       2106]
B  *** ERROR => Unexpected RC when calling dsql_connect
 [dbacds.c    
2107]
发现/usr/lib/oracle/19.3/client64/lib中有libclntsh.so.11.1 ,将这个文件拷贝到/usr/sap/S4Q/D03/exe/,错误解决。

步骤三:解决tnsname问题
这个时候不出错了,tnsname也有了,但是dbco测试的时候报:
ORA-12154: TNS: could not resolve the connect identifier specified
把tnsname修改来修改去,又弄出一个问题:
ORA-12505: TNS:listener does not currently know of SID given in connect desc
虽然是错误,但是错误在变化,说明修改是有效果的。
最后把tnsname修改成:
ORCL.WORLD=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
     (PROTOCOL = TCP)
     (HOST = 10.10.10.105)
     (PORT = 1521)
    )
    )
    (CONNECT_DATA =
      (SID = orcl)
      (GLOBAL_NAME = orcl.WORLD)
    )
  )
测试成功。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP ECC和 S/4HANA SQL语句的主要区别在于它们是不同的编程语言和数据库之间的不同。ABAP是一种特定于 SAP 系统的编程语言,而S/4HANA使用的是SQL语言。 在ABAP ECC中,开发人员使用ABAP语言编写程序,并使用ABAP的内部表来管理数据。同时,ABAP ECC拥有自己的数据库管理系统,即 SAP数据库。因此,在ABAP ECC中,SQL语句往往用作访问外部数据库的方式,而不是直接在ABAP ECC的内部访问数据库。 而在 S/4HANA 中,SQL语言是访问内部数据库的主要方式。S/4HANA数据库管理系统与 ABAP ECC 不同,它基于 SQL Server,这意味着开发人员可以使用 SQL 指令来访问内部数据库。 另一个区别是,S/4HANA数据库管理系统利用 HANA 内存数据库技术来提高效率。这使得 S/4HANA 在处理大量数据时比 ABAP ECC 更快和更有效。同时,许多 S/4HANA的模块都采用了新的数据结构和算法,例如 HANA扩展应用程序服务 (XS),这促成了一些数据分析和报告工具的改进,从而使开发人员能够更快地掌握数据分析和处理。 综上所述, ABAP ECC与 S/4HANA SQL语句的主要区别在于它们所使用的编程语言、内部表和数据库管理系统。虽然它们都可以用于访问数据库,但是在 S/4HANA 中,SQL语言被广泛应用,而ABAP ECC更多地使用 ABAP 语言和内部表来管理数据。由于 S/4HANA 的现代内存数据库技术,S/4HANA 在处理大量数据时比 ABAP ECC 更有效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值