配置步驟很簡單:
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)
)
)
測試成功。