質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

1回答

2895閲覧

データベースリンクでの接続

mmmmms

総合スコア2

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2021/09/13 05:42

編集2021/09/14 01:45

所有のWindowsサーバーにて、夜中にデータ取得のためバッチが回るようセットしています。
相手先のDB(oracle)への接続には「DBA_DB_LINK」「tnsnames.ora」に追加して接続可能にしていました。
そこで相手先のドライバがSQLserverへ変更となり、「DBA_DB_LINK」と「tnsnames.ora」を再作成しましたが、接続できません。
(ちなみに↑のDB_LINK名と「tnsnames.ora」のネットサービス名は同じ名前にしています)

… tnsnames.oraの中身
Testdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ●●)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = Testdb)
)
)

…batファイルのSQL構文の一部
sqlplus [ユーザー名]/[パスワード]@データベース名
INSERT INTO〜
SELECT 〜
FROM テーブル名@Testdb
WHERE 〜

SQLserverへ変更された事により、環境の部分で不足している事や構文のミス等がないかをご教示いただきたいです。
色んなサイトで調べたりはしたのですが、分からなくなってしまい、助けていただきたく投稿しました。
質問も受け付けますので、サポートいただけたら嬉しいです。
よろしくお願いいたします。

【追記】
SQL構文について、追記いたします。

【今までのSQL(oracle⇔oracle)】
INSERT INTO ORA1_TABLE
SELECT * FROM ORA2_TABLE@DBLINK_A;
WHERE DBLINK_A.カラム1='●';

【やりたいこと(oracle⇔SQLserver)】
INSERT INTO ORA_TABLE
SELECT * FROM SQLSRV_TABLE@DBLINK_A;
WHERE DBLINK_A.カラム1='●';

oracle内にホストがSQLserverのデータベースリンクを作成し、↑のようなSQLを組んでoracle内に有るテーブルにデータを入れることを目的にしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dameo

2021/09/13 08:26

今ひとつ構成が良く分かりませんが、データベースリンクを本当に使用されているということは、どこかのOracleデータベース(A)に繋いだ上で、さらに別のOracleデータベース(B)にリンクして例えば INSERT INTO the_table_in_A SELECT * FROM the_table_in_B@B; のようなクエリを発行して、B上のテーブルデータをAに取り込んだりしていたということですよね? Oracle同士でデータベースリンクは使用できますが、普通SQL Serverにはリンクを張れないと思います。 ただ使ったことはありませんし、別途ライセンスが必要かもしれませんが、Oracle Database Gateway for SQL Serverというのがあって、これを使うとできるかもしれません。 Oracle Database Gateway for SQL Serverユーザーズ・ガイド、12cリリース2 (12.2) https://docs.oracle.com/cd/E82638_01/gmswn/ Oracle Database Gateway for SQL Server User's Guide, 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/gmswn/index.html 以上ご参考までに。
mmmmms

2021/09/14 01:46

情報不足で申し訳ありません。 おっしゃる通りでして、今までは異なるoracle間でデータベースリンクを使用してデータ取得を可能にしていて、↑に提示していただいたSQLのような仕組みで組んでいました。 SQL文を少し追記しました。 Oracle Database Gateway for SQL Serverで可能にできるか調べてみます。 情報提供ありがとうございます。
guest

回答1

0

tnsnames.orasqlplusも使用するのはoracleへ接続する場合だけです。
sqlserverへの接続については以下参考
バッチファイルでSQLServerに接続する方法

投稿2021/09/13 06:12

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mmmmms

2021/09/13 07:23

ご回答とリンク先の提示ありがとうございます。助かります。 ご迷惑でなければ追加でご教示いただきたいのですが、splcmdの使用にあたり所有サーバーにSQLserver関連のソフトがダウンロードされてない事が分かり環境を整える準備をしようと思いますが、以下の①②があれば宜しいでしょうか? 他に必要な環境はご存知でしょうか? ① sqlcmd ユーティリティ https://docs.microsoft.com/ja-jp/sql/tools/sqlcmd-utility?view=sql-server-ver15 ② ODBC Driver for SQL Server https://docs.microsoft.com/ja-jp/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15 追加の質問となり恐れ入ります。 宜しくお願いいたします。
sazi

2021/09/13 07:52

どのようなバッチなのか分かりませんので、何とも言えませんが、sqlplusの代わりだけというならsqlcmdのインストールのみで良いと思います。
mmmmms

2021/09/14 01:50

ありがとうございます。 情報不足で申し訳ありません。 sqlcmdのインストールでまず接続できるかどうかから試してみたいと思います。 とても助かりました。ありがとうございます。
sazi

2021/09/14 02:33 編集

追加された内容を見ると、oracleのDBLINK先がoracleからSQLServerに変わったという事なんですね。 でしたら、従来のwindowsサーバーの処理はoracleへのアクセスだけで済みますから変更するとしたら、DBLINKで参照するテーブルのレイアウト変更に伴うSQL文の変更だけですね。
sazi

2021/09/14 02:36

DBLINKの内容を変更するという話なら、DBサーバー(oracle)での変更です。
mmmmms

2021/09/15 07:12

ありがとうございます。 という事は、 ・バッチを動かすためにsqlcmdのインストールして相手先(SQLserver)へ接続できることを確認 ・相手先(SQLserver)へ接続するためのDBLINKはoracle側に作成 ・テーブルの構成やDBLINK名が変更になるため、修正が必要なSQL文に変更を加える を一通り実施してみる理解で宜しいでしょうか? ちなみにsqlcmdのインストールは対応部署へ申請中でして、着手できた段階でまた報告させていただきたいと思います。
sazi

2021/09/15 07:45

oracleのDBLinkを経由してSQLServerにアクセスする場合は、バッチ実行の環境は従来のままで良いですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問