Βήματα για τη δημιουργία μιας σύνδεσης βάσης δεδομένων από την Oracle στον διακομιστή MSSQL

1
Βήματα για τη δημιουργία μιας σύνδεσης βάσης δεδομένων από την Oracle στον διακομιστή MSSQL


Βήματα για τη δημιουργία μιας σύνδεσης βάσης δεδομένων από την Oracle στον διακομιστή MSSQL

Στις μέρες μας πολλές εταιρείες χρησιμοποιούν ένα μείγμα RDBMS συστήματα, για παράδειγμα, ορισμένες περιπτώσεις εκτελούνται Μαντείο και άλλες περιπτώσεις συνεχίζονται Διακομιστής MSSQLκαι αν θέλουμε πρόσβαση σε δεδομένα πρέπει να το κάνουμε χρησιμοποιώντας ένα ετερογενής σύνδεση. Ετερογενείς συνδέσεις επιτρέψτε μας δεδομένα ερωτήματος από βάσεις δεδομένων που δεν ανήκουν στην Oracle χρησιμοποιώντας SQL.

Στα δύο προηγούμενα blogs, είδαμε Βήματα για τη δημιουργία μιας σύνδεσης βάσης δεδομένων από την Oracle στην PostgreSQL Κάντε κλικ εδώ για να Διαβάστε περισσότερα. & Βήματα για τη δημιουργία μιας σύνδεσης βάσης δεδομένων από την Oracle στην MySQL Κάντε κλικ εδώ για να διαβάσετε περισσότερα. Σε αυτό το blog post, θα δούμε Πώς να δημιουργήσετε μια σύνδεση βάσης δεδομένων από την Oracle στο MS-SQLSERVER μέσω ODBC.


Παρακάτω είναι τα βήματα υψηλού επιπέδου που θα ακολουθήσουμε για να ρυθμίσουμε το dblink.

1. Επαληθεύστε την πρόσβαση των χρηστών MSSQL
2. Εγκαταστήστε τα προγράμματα οδήγησης ODBC του διακομιστή MSSQL στον Oracle Server
3. Επεξεργαστείτε το αρχείο odbc.ini και δοκιμάστε τη συνδεσιμότητα του DSN στον Oracle Server
4. Δημιουργήστε το αρχείο initMSSQL.ora στον Oracle Server
5. Διαμορφώστε το αρχείο tnsname.ora & listener.ora στον Oracle Server
6. Δημιουργήστε DB Link & Test Connectivity στον Oracle Server


Ακολουθούν λεπτομέρειες ρύθμισης και το ίδιο θα χρησιμοποιηθεί σε αυτήν την επίδειξη.

Sr. Καλά. Βάση δεδομένων Εκδοχή Όνομα κεντρικού υπολογιστή Χρήστης Λιμάνι
1 Μαντείο 19.3 δοκιμαστική μηχανή01 1521
2 MS-SQL SERVER Τυπική έκδοση 2017 MSSQLDBCS01 test_readonly 1433

Βήμα 1. Επαληθεύστε την πρόσβαση των χρηστών MSSQL: Έχουμε ήδη ενεργοποιημένη μια προεπιλεγμένη παρουσία του MSSQL Server Υπηρέτης: MSSQLDBCS01 επί Προεπιλεγμένη θύρα: 1433. Επίσης Χρήστης: test_readonly έχει ήδη δημιουργηθεί και έχει πρόσβαση σε DB: [bidding db] επί Τραπέζι: χρήστες. Μπορείτε να το επαληθεύσετε χρησιμοποιώντας το βοηθητικό πρόγραμμα sqlcmd.

C:\Users\jkhan>
C:\Users\jkhan>sqlcmd -S MSSQLDBCS01,1433 -U test_readonly -P ucas123
1>
2> use [bidding db]
3> select count(*) from users
4> go
Changed database context to 'bidding db'.

-----------
       1083

(1 rows affected)
1>
2>quit
C:\Users\jkhan>

Βήμα 2. Εγκαταστήστε τα προγράμματα οδήγησης ODBC του διακομιστή MSSQL στον Oracle Server: Επαληθεύστε ότι το αρχείο dg4odbc υπάρχει στο δικό σας ORACLE_HOME περιβάλλον. Εισαγωγή mssql yum αποθετήριο χρησιμοποιώντας μπούκλα εντολή όπως παρακάτω. Μόλις το αποθήκη γίνεται λήψη μπορούμε να χρησιμοποιήσουμε εντολές όπως yum αναζήτηση, yum λίσταή yum τι παρέχει για να επαληθεύσετε ότι τα απαιτούμενα πακέτα είναι διαθέσιμα στο αποθετήριο. Εγκαταστήστε πακέτα msodbcsql17, mssql-εργαλείακαι unixODBC-ανάπτυξη χρησιμοποιώντας τα παρακάτω ναι εντολές. Βεβαιωθείτε ότι αρχείο libmsodbcsql-17.so υπάρχουν στην τοποθεσία: /usr/lib64 μετά την εγκατάσταση των πακέτων.

[[email protected] ~]$
[[email protected] ~]$ . oraenv
ORACLE_SID = [oracle] ? test01
The Oracle base has been set to /u01/app/oracle
[[email protected] ~]$
[[email protected] ~]$
[[email protected] ~]$ cd $ORACLE_HOME/bin
[[email protected] bin]$
[[email protected] bin]$ pwd
/u01/app/oracle/product/19.3.0/db_1/bin
[[email protected] bin]$
[[email protected] bin]$ ls -l dg4odbc
-rwxr-x--x. 1 oracle oinstall 738176 Nov  2  2020 dg4odbc
[[email protected] bin]$


[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   193  100   193    0     0     70      0  0:00:02  0:00:02 --:--:--    70
[[email protected] ~]#
[[email protected] ~]# cat /etc/yum.repos.d/mssql-release.repo
[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
[[email protected] ~]#
[[email protected] ~]#

[[email protected] ~]# yum search msodbc
==================================================================================== N/S matched: msodbc =====================================================================================
msodbcsql.x86_64 : ODBC Driver for Microsoft(R) SQL Server(R)
msodbcsql17.x86_64 : ODBC Driver for Microsoft(R) SQL Server(R)
msodbcsql18.x86_64 : ODBC Driver for Microsoft(R) SQL Server(R)

  Name and summary matches only, use "search all" for everything.
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]#

[[email protected] ~]#
[[email protected] ~]# yum list msodbc*
Loaded plugins: langpacks, ulninfo
Available Packages
msodbcsql.x86_64                                                                     13.1.9.2-1                                                                    packages-microsoft-com-prod
msodbcsql17.x86_64                                                                   17.9.1.1-1                                                                    packages-microsoft-com-prod
msodbcsql18.x86_64                                                                   18.0.1.1-1                                                                    packages-microsoft-com-prod
[[email protected] ~]#

[[email protected] ~]#
[[email protected] ~]# yum whatprovides msodbc*
Loaded plugins: langpacks, ulninfo
msodbcsql-13.0.1.0-1.x86_64 : ODBC Driver for Microsoft(R) SQL Server(R)
Repo        : packages-microsoft-com-prod
Matched from:
Other       : msodbcsql(x86-64) = 13.0.1.0-1
Other       : msodbcsql = 13.0.1.0-1

msodbcsql-13.1.0.0-1.x86_64 : ODBC Driver for Microsoft(R) SQL Server(R)
Repo        : packages-microsoft-com-prod
Matched from:
Other       : msodbcsql = 13.1.0.0-1
Other       : msodbcsql(x86-64) = 13.1.0.0-1
msodbcsql18-18.0.1.1-1.x86_64 : ODBC Driver for Microsoft(R) SQL Server(R)
Repo        : packages-microsoft-com-prod
Matched from:
Other       : msodbcsql18 = 18.0.1.1-1
Other       : msodbcsql18(x86-64) = 18.0.1.1-1
[[email protected] ~]#

[[email protected] ~]#
[[email protected] ~]# yum install -y msodbcsql17
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
--> Running transaction check
---> Package msodbcsql17.x86_64 0:17.9.1.1-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved
Do you accept the license terms? (Enter YES or NO)
YES
  Installing : msodbcsql17-17.9.1.1-1.x86_64                                                                                                                                              1/1
  Verifying  : msodbcsql17-17.9.1.1-1.x86_64                                                                                                                                              1/1

Installed:
  msodbcsql17.x86_64 0:17.9.1.1-1

Complete!
[[email protected] ~]#

[[email protected] ~]# yum install -y mssql-tools
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
--> Running transaction check
---> Package mssql-tools.x86_64 0:17.9.1.1-1 will be installed
--> Finished Dependency Resolution
Do you accept the license terms? (Enter YES or NO)
YES
  Installing : mssql-tools-17.9.1.1-1.x86_64                                                                                                                                              1/1
  Verifying  : mssql-tools-17.9.1.1-1.x86_64                                                                                                                                              1/1

Installed:
  mssql-tools.x86_64 0:17.9.1.1-1

Complete!
[[email protected] ~]#

[[email protected] ~]#
[[email protected] ~]# yum install -y unixODBC-devel
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
--> Running transaction check
  Installing : unixODBC-devel-2.3.7-1.rh.x86_64                                                                                                                                           2/3
  Cleanup    : unixODBC-2.3.1-14.0.1.el7.x86_64                                                                                                                                           3/3
  Verifying  : unixODBC-devel-2.3.7-1.rh.x86_64                                                                                                                                           1/3
  Verifying  : unixODBC-2.3.7-1.rh.x86_64                                                                                                                                                 2/3
  Verifying  : unixODBC-2.3.1-14.0.1.el7.x86_64                                                                                                                                           3/3

Installed:
  unixODBC-devel.x86_64 0:2.3.7-1.rh

Dependency Updated:
  unixODBC.x86_64 0:2.3.7-1.rh

Complete!
[[email protected] ~]#

[[email protected] ~]#
[[email protected] ~]# cd /usr/lib64
[[email protected] lib64]#
[[email protected] lib64]# pwd
/usr/lib64
[[email protected] lib64]#
[[email protected] lib64]#  ls -l libmsodbcsql*
lrwxrwxrwx. 1 root root 57 Jun  4 14:56 libmsodbcsql-17.so -> /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1
[[email protected] lib64]#
[[email protected] lib64]#

Βήμα 3. Επεξεργαστείτε το αρχείο odbc.ini και δοκιμάστε τη συνδεσιμότητα του DSN στον Oracle Server: Επεξεργαστείτε το odbc αρχεία και συμπληρώστε Διακομιστής MSSQL λεπτομέρειες κάτω από το [MSSQL] επί κεφαλής. Αυτό το όνομα κεφαλίδας θα χρησιμοποιήσουμε στα επόμενα βήματα. Μπορούμε να χρησιμοποιήσουμε εργαλεία όπως sqlcmd & isql παραλήφθηκε από το πακέτο mssql-εργαλεία για να δοκιμάσουμε το δικό μας DSN (Όνομα πηγής τομέα) συνδεσιμότητα. Δεδομένου ότι η παρακάτω δοκιμή σύνδεσης έχει αποτύχει, μπορούμε να χρησιμοποιήσουμε εργαλεία όπως nc σε Linux για να ελέγξετε αν η θύρα του SQL Server 1433 είναι προσβάσιμο από τον διακομιστή Linux. Πρέπει να βεβαιωθούμε ότι το Port 1433 είναι ανοιχτό στο τείχος προστασίας. Εμπλέκω Σύστημα και Δίκτυο Διαχειριστής για να το κάνει.

[[email protected] ~]#
[[email protected] ~]# ls -l /etc/odbc.ini
-rw-r--r--. 1 root root 354 Sep 30  2021 /etc/odbc.ini
[[email protected] ~]#
[[email protected] ~]#

[[email protected] lib64]# vi /etc/odbc.ini
[MSSQL]
Description = MSSQL
Driver = /usr/lib64/libmsodbcsql-17.so
Server = MSSQLDBCS01
User = test_readonly
Password = ucas123
Port = 1433
Database = bidding db
:wq!
[[email protected] lib64]#
[[email protected] lib64]#

[[email protected] lib64]# cat /etc/odbcinst.ini
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1
UsageCount=1
[[email protected] lib64]#

[[email protected] lib64]# /opt/mssql-tools/bin/sqlcmd -D -S MSSQL -U test_readonly
Password:
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x102.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..
[[email protected] lib64]#

[[email protected] lib64]# nc -v -w 1 MSSQLDBCS01 -z 1433
MSSQLDBCS01 [192.168.91.200] 1433 (ms-sql-s): Connection timed out
[[email protected] lib64]#

[[email protected] lib64]#
[[email protected] lib64]#  nc -v -w 1 MSSQLDBCS01 -z 1433
MSSQLDBCS01 [192.168.91.200] 1433 (ms-sql-s) open
[[email protected] lib64]#

[[email protected] lib64]#
[[email protected] lib64]# /opt/mssql-tools/bin/sqlcmd -D -S MSSQL -U test_readonly
Password:
1> select count(*) from users
2> go

-----------
       1083

(1 rows affected)
1>
2> quit
[[email protected] lib64]#

[[email protected] lib64]#
[[email protected] lib64]# isql -v MSSQL test_readonly ucas123
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select count(*) from users
+------------+
|            |
+------------+
| 1083       |
+------------+
SQLRowCount returns 0
1 rows fetched
SQL>
[[email protected] lib64]#

Βήμα 4. Δημιουργήστε το αρχείο initMSSQL.ora στον Oracle Server: Δημιουργία αρχείου initMSSQL.ora κάτω από τον κατάλογο $ORACLE_HOME/hs/admin και προσθέστε τις παρακάτω παραμέτρους. Σημειώστε ότι χρησιμοποιούμε MSSQL ως δικό μας Όνομα SID και στην παράμετρο, HS_FDS_CONNECT_INFO = MSSQL είναι η ίδια κεφαλίδα που χρησιμοποιούμε στο αρχείο: odbc.ini.

[email protected] lib64]#
[[email protected] lib64]# su - oracle
Last login: Sat Jun  4 14:40:06 +03 2022 on pts/0
[[email protected] ~]$
[[email protected] ~]$
[[email protected] ~]$ . oraenv
ORACLE_SID = [oracle] ? test01
The Oracle base has been set to /u01/app/oracle
[[email protected] ~]$
[[email protected] ~]$ cd $ORACLE_HOME/hs/admin
[[email protected] admin]$
[[email protected] admin]$ ls -l
total 24
-rw-r--r--. 1 oracle oinstall 1170 Apr 17  2019 extproc.ora
-rw-r--r--. 1 oracle oinstall  489 Apr 17  2019 initdg4odbc.ora
[[email protected] admin]$
[[email protected] admin]$
[[email protected] admin]$ touch initMSSQL.ora
[[email protected] admin]$
[[email protected] admin]$ vi initMSSQL.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = MSSQL
HS_FDS_TRACE_LEVEL = user
HS_FDS_SHAREABLE_NAME = /usr/lib64/libmsodbcsql-17.so
HS_FDS_TRACE_FILE_NAME=/tmp/ora_hs_trace.log
HS_NLS_NCHAR = UCS2
#
# ODBC specific environment variables
#
set ODBCINI=/etc/odbc.ini
#
# Environment variables required for the non-Oracle system
#
:wq!
[[email protected] admin]$

Βήμα 5. Διαμορφώστε το αρχείο tnsname.ora & listener.ora στον Oracle Server: Διαμορφώστε tnsnames.ora & ακροατής.ora ίδια όπως παρακάτω. Παρακαλώ σημειώστε εδώ SID = MSSQL είναι το Όνομα SID δημιουργήσαμε σε Βήμα 4. Μόλις γίνουν οι αλλαγές του αρχείου ακροατή φορτώνω πάλι ο ακροατής χρησιμοποιώντας την παρακάτω εντολή. Προσθήκη τνσεντρί MSSQL σε tnsnames.ora αρχείο ή οποιοδήποτε άλλο tnsname θα χρησιμοποιήσουμε αυτό tnsname στη διάρκεια dblink δημιουργία.

[[email protected] admin]$
[[email protected] admin]$ cd $ORACLE_HOME/network/admin
[[email protected] admin]$
[[email protected] admin]$ ls -ltr
total 44
-rw-r--r--. 1 oracle oinstall 1536 Feb 14  2018 shrept.lst
drwxr-xr-x. 2 oracle oinstall   64 Apr 17  2019 samples
-rw-r-----. 1 oracle oinstall  671 Sep 30  2021 listener.ora
-rw-r-----. 1 oracle oinstall 1415 Feb  6 14:52 tnsnames.ora
[[email protected] admin]$
[[email protected] admin]$
[[email protected] admin]$ cp listener.ora listener_bkp.ora
[[email protected] admin]$
[[email protected] admin]$ vi listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/19.3.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
      (SID_DESC =
      (PROGRAM = dg4odbc)
      (SID_NAME = MSSQL)
      (ORACLE_HOME = /u01/app/oracle/product/19.3.0/db_1)
      (ENVS=LD_LIBRARY_PATH=/opt/microsoft/msodbcsql17/lib64)
     )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = test-machine01)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
USE_SID_AS_SERVICE_listener=on
:wq!
[[email protected] admin]$

[[email protected] admin]$  lsnrctl reload

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 05-JUN-2022 10:21:52

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test-machine01)(PORT=1521)))
The command completed successfully
[[email protected] admin]$
[[email protected] admin]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 05-JUN-2022 10:21:55

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test-machine01)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                05-JUN-2022 10:19:15
Uptime                    0 days 0 hr. 2 min. 40 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/19.3.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/test-machine01/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test-machine01)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "MSSQL" has 1 instance(s).
  Instance "MSSQL", status UNKNOWN, has 1 handler(s) for this service...
Service "MYSQL" has 1 instance(s).
  Instance "MYSQL", status UNKNOWN, has 1 handler(s) for this service...
Service "PG" has 1 instance(s).
  Instance "PG", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[[email protected] admin]$

[[email protected] admin]$ vi tnsnames.ora
MSSQL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = test-machine01)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = MSSQL)
    )
    (HS = OK)
  )
:wq!
[[email protected] admin]$ 
[[email protected] admin]$
[[email protected] admin]$ tnsping MSSQL
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 05-JUN-2022 10:24:06
Copyright (c) 1997, 2019, Oracle.  All rights reserved.
Used parameter files:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = test-machine01)(PORT = 1521))) (CONNECT_DATA = (SID = MSSQL)) (HS = OK))
OK (0 msec)
[[email protected] admin]$
[[email protected] admin]$

Βήμα 6. Δημιουργήστε DB Link & Test Connectivity στον Oracle Server: Μόλις ολοκληρωθούν όλα τα παραπάνω βήματα, συνδεθείτε στο Oracle DB και δημιουργήστε dblink χρησιμοποιώντας το ίδιο όνομα χρήστη SQLServer test_readonly και tnsname MSSQL. Μια φορά DBLlink δημιουργείται προσπαθήστε να αποκτήσετε πρόσβαση στο Πίνακας διακομιστή MSSQL: χρήστες.

[[email protected] admin]$
[[email protected] admin]$ sqlplus sys as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jun 5 10:28:50 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Enter password:

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>
SQL> 
SQL> create public database link  MSSQL_DBLINK connect to test_readonly identified by  ucas123 using 'MSSQL';

Database link created.

SQL>
SQL> select sysdate from [email protected]_DBLINK;

SYSDATE
---------
05-JUN-22

SQL>  select count(*) from [email protected]_DBLINK;

  COUNT(*)
----------
      1083

SQL>


Αυτό το έγγραφο είναι μόνο για μαθησιακούς σκοπούς και επικυρώνεται πάντα στο περιβάλλον LAB πρώτα πριν από την εφαρμογή στο περιβάλλον LIVE.


Ελπίζω να σας αρέσει αυτό το άρθρο
!
Μοιραστείτε τα πολύτιμα σχόλια/σχόλιά σας/Εγγραφείτε και ακολουθήστε μας παρακάτω και μην ξεχάσετε να κάνετε κλικ στο εικονίδιο του κουδουνιού για να λάβετε την πιο πρόσφατη ενημέρωση. Κάντε κλικ εδώ για να κατανοήσετε περισσότερα για την επιδίωξή μας.

Σχετικά Άρθρα

110 Συνολικές προβολές, 4 Προβολές Σήμερα

παρόμοιες αναρτήσεις

Schreibe einen Kommentar