ODBCドライバを使用してMS SQL Serverに接続するためのデータベース・リンクをOracle 19cデータベースに作成 (2026/01/01)
ODBCドライバを使用してMS SQL Serverに接続するためのデータベース・リンクをOracle 19cデータベースに作成 (2026/01/01)
投稿者:Oracle Nexus

前提条件:
- SQL 認証ユーザーを持つ MS SQL Server。
CREATE LOGIN Sivakumar WITH PASSWORD = 'Doyen@123',
CHECK_POLICY = OFF;SELECT name, type_desc, is_disabled
FROM sys.server_principals
WHERE name = 'Sivakumar'
2. MS SQL Server はリモート接続を許可する必要があります。
EXEC sys.sp_configure 'remote access';リモートアクセスを確認するには、
デフォルトインスタンスの場合:

DOYENLTP1518 → ホスト名
1433 → ポート
Sivakumar → SQL認証ユーザー
Doyen@123 → ユーザーのパスワード。
名前付きインスタンスの場合:

接続を確立できます
3. Oracle サーバーに Microsoft ODBC ドライバーをインストールします。
4. odbc.iniファイルを編集し、Oracleサーバーで接続をテストします。
5. Oracle サーバーに initMSSQL.ora ファイルを作成します。
6. tnsnames および listener.ora ファイルを構成します。
7. データベース リンクを作成し、接続を確認します。
ODBCドライバーの設定:
- ODBCドライバーのドライバーマネージャーをインストールします — unixODBC
sudo yum install unixODBC unixODBC-devel -y
2. Microsoft ODBC ドライバーをインストールしてください。(こちらのリンクをご利用ください → https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver17&tabs=alpine18-install%2Credhat17-install%2Cdebian8-install%2Credhat7-13-install%2Crhel7-offline#17 )
Linux 8の場合:
curl -sSL -O https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm
パッケージをインストールしてください
sudo yum install packages-microsoft- prod.rpm
RPMファイルを削除します。
rm packages-microsoft-prod.rpmODBC ドライバー、ツール、unixODBC-devel 依存関係をインストールします。
sudo ACCEPT_EULA =Y yum install -y msodbcsql17
sudo ACCEPT_EULA =Y yum install -y mssql-tools
sudo yum install -y unixODBC-devel


3.パッケージをインストールした後、 libmsodbcsql-17.soファイルが/usr/lib64 の場所に存在することを確認します。

odbc.ini ファイルを編集し、Oracle サーバーで接続をテストします。
- /etcの下にあるodbc.iniファイルを編集し、 [MSSQL]ヘッダーの下に MS SQL Server の詳細を入力します。
[MSSQLSERVER] ----------------------> This will be the SID of our SQL Server.
Description = MSSQLSERVER
Driver = /usr/lib64/libmsodbcsql-17.so
Server = DOYENLTP1518 --> Hostname or Server Name
User = Sivakumar --> SQL Authenticated User
Password = Doyen@123 --> User Password
Port = 1433 --> Server Port
Database = DB100 --> Database Name where the user has permission
2. Oracle から SQL Server への接続を確認します。
注意: Windows Server ファイアウォールが TCP 1433 の受信接続を許可していることを確認してください。
サーバーの接続を確認してください。
nc -zv DOYENLTP1518 1433
/opt/mssql-tools/bin/sqlcmd -D -S MSSQLSERVER -U Sivakumar - P Doyen @123

Oracle サーバーに initMSSQLSERVER.ora ファイルを作成します。
- ディレクトリ$ORACLE_HOME/hs/adminの下にファイルinitMSSQLSERVER.oraを作成します。
- 以下のパラメータを追加します。
vi initMSSQLSERVER.ora
# HS 初期化パラメータ
HS_FDS_CONNECT_INFO = MSSQLSERVER
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 固有の環境変数を
set ODBCINI=/etc/odbc.ini
tnsname.ora ファイルとlistener.ora ファイルを構成します。
- $ORACLE_HOME/network/adminに移動し、 listener.ora に以下のエントリを追加します。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(PROGRAM = dg4odbc)
(SID_NAME = MSSQLSERVER)
(ORACLE_HOME = /u01/apps/oracle/product/home)
(ENVS=LD_LIBRARY_PATH=/opt/microsoft/msodbcsql17/lib64)
)
)
USE_SID_AS_SERVICE_listener=onlsnrctl reload
lsnrctl status
2. 次に、 tnsnames.oraに以下のエントリを追加します。
MSSQLSERVER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.128)(PORT = 1521))
(CONNECT_DATA =
(SID = MSSQLSERVER)
)
(HS = OK)
)
データベース リンクを作成し、接続を確認します。
- Oracle データベースに接続し、データベース リンクを作成します。
create public database link MSSQL_DBLINK connect to mssql_user identified by "mssql_password" using 'MSSQLSERVER';
データベース リンクのテスト:


行の挿入:

注:すべてのDML文に対してコミットを実行する必要があります。そうしないと、テーブルに基づいて実行されるコマンドがSQL Server上で実行状態になります



コメント
コメントを投稿