今だけ人気マンガ100円レンタル特集♪

SQLserver格納データをoracleDBへ自動格納する方法を探しております。どのような方法があるか皆さまお教えいただけませんでしょうか?
連携手法として同期・非同期は問わないのですができるだけ自動化したいと思っております。(上記でDB間のデータ格納と書きましたが、リンクテーブル等Oracle上で参照できればOKです。)
当方環境としましてはWindows2003Server /Oracle10g・SQLServer2000となります。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

異種分散データベースのイメージですか..



オラクル側の問い合わせに応じて検索することになるので、オラクル側の連携ツールで対応することになりますね。
パフォーマンスに問題はありますが、OGCを利用すれば、ODBC,OLEDBをデータベースリンクに出来るので
考えているイメージに一番近いかと。
(参考:http://homepage1.nifty.com/kojama/works/rdbms/or …

また、COMオートメーションや外部プロシジャ呼出を使った連携の場合でも、9i以降なら
パイプライン表関数の機能を利用して、ストアドファンクションでくるめば、
select * from table(cast(自作関数) as 自作返却型);
のように通常のテーブルやビューに近い扱い方が可能です。
    • good
    • 1
この回答へのお礼

OGC初めて知りました。COMオートメーションなどとても勉強になりました。早速試したいと思います。どうもありがとうございました!

お礼日時:2007/12/16 19:16

SQLserver-Oracleを連係する機能は、SQLserver側にもOracle側にもあります。


例えば、オラクルの標準機能ですが、ODBCやOLEDBを呼び出すことが可能です。(パフォーマンスは良くない)
また、ストアドプロシジャ内で、COMオートメーションが利用できるので、それを使った連携も可能です。
当然ながら自動化は可能です。

たくさんの方法があるので、もう少し条件(要件)を整理しないと、手法を選択できないように思いますよ。
    • good
    • 0
この回答へのお礼

回答感謝です。COMオートメーションをはじめて知りました。早速調べたいと思います。一番望ましい形はOracleのリンクテーブルでSQLServerのDBが参照できると良いのですが(実データをoracle上で持たない)そこまでは難しいですよね^^;どうもありがとうございました。

お礼日時:2007/12/15 08:38

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QOracleからSQLServer参照時の不具合

DBLINKを使用して、Oracle 10gからSQLServer2005に接続してSQLServer2005のテーブルを参照しています。テーブルデータを参照することはできるのですが、データベースとのセッションを切断してもサーバ上にhsodbcプロセスが解放されずに残る現象が発生しています。

当初は、ストアドプロシージャの不具合と考えていましたが、SQLPLUSでデータを参照した後、SQLPLUSを終了させても プロセスマネージャ上でhsodbcが解放されずに残っていたため、
APの問題ではないと考えています。
DBLINK、Oracleの設定で不備があるような気がするのですが対応策はあるのでしょうか。
お手数ですが回答をお願いします。

Aベストアンサー

>データベースとのセッションを切断してもサーバ上にhsodbcプロセスが解放されずに残る現象が発生しています。
というのは当然かと思います。
設定方法とかを見ていると、Listenerで定義していること等から、OracleサーバとListenerの間での接続なので、クライアントがセッションを切ろうが関係なく、
Oracleサーバが必要だと思っている限りは、クライアントがどうしようとつながっているから、
hsodbcは解放されないと思えます。

じゃあ、クライアントから接続を切る方法はないのかと調べてみました。
Oracle10gじゃないけど、11gR2では以下のような説明を見つけました。
(10gは調べてみてください。10gではまだ実装されていない機能かもしれません。)
--引用--
アプリケーションで不要になった高コストの接続を切断するには、データベース・リンクを使用して確立されたリモート接続を終了することが有効です。・・・(中略)・・・
次の文は、salesデータベース・リンクが指すリモート・データベース内のセッションを終了します。

ALTER SESSION CLOSE DATABASE LINK sales;
以上以下のサイトより。
http://docs.oracle.com/cd/E16338_01/server.112/b56301/ds_appdev002.htm

>データベースとのセッションを切断してもサーバ上にhsodbcプロセスが解放されずに残る現象が発生しています。
というのは当然かと思います。
設定方法とかを見ていると、Listenerで定義していること等から、OracleサーバとListenerの間での接続なので、クライアントがセッションを切ろうが関係なく、
Oracleサーバが必要だと思っている限りは、クライアントがどうしようとつながっているから、
hsodbcは解放されないと思えます。

じゃあ、クライアントから接続を切る方法はないのかと調べてみました。
Oracle10g...続きを読む

QSQL Server のキャラクターセット(内部文字コード)は何処で定義するのでしょうか?

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問させていただきます。
以下2点についてどなたかコメント願います。
1.(Oracleでいうキャラクターセット)はどこで定義するのでしょうか?
2.OracleでいうNLS_LANGに相当するものはあるのでしょうか?
 (ひょっとしたらマイクロソフト製品なのでサーバもクライアントもCP932固定なのでしょうか?)

根本的にはシステム構築する上で『極力文字化けに遭遇したくない』思い出このような質問をさせていただきました。
『文字化け』について注意点などありましたら合わせてコメントいただければ助かります。
以上よろしくお願いします。

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問...続きを読む

Aベストアンサー

Windowsのロケールの設定を日本語にした状態でSQLServerをインストールした場合、cp932がデフォルトの照合順序になります。照合順序については参考URLをご覧下さい。

SQLServerではわかりませんが、PostgresではJDBCドライバ部分で変換していたように記憶しています。ODBCドライバではAutoTranslateという機能があります。

このため、ODBC接続で何も考えずにvarcharを使用するとcp932になります。

参考URL:http://www.microsoft.com/japan/msdn/sqlserver/sql2005/bb330962.aspx

Q3つの表の外部結合

表A、B、Cの3つがあり、Aのすべての行を出力したいと考えています。
外部結合を用いるのだとは思うのですが、3つの表に対して行う場合の
書き方がわからず困っています。
ご教授いただけないでしょうか?
select * from a,b,c
where a.商品ID =b.商品ID (+) and b.商品ID (+) =c.商品ID (+)
としてみましたが、うまくいきませんでした。

Aベストアンサー

ansi構文の趣旨からいえば、結合条件と絞り込み条件は分けて書くので・・

select *
from a
left join b on (a.商品ID =b.商品ID)
left join c on (b.商品ID =c.商品ID)
where a.年月 = 任意の値

と書くのが一般的でしょうね。

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

QOracleへのリンクサーバー設定について

お世話になります。

下記環境におきまして、SQL ServerよりOracleへリンクサーバーを作成しようとしたところ、
「リンクサーバー"XXX"のOLE DB プロバイダ"MSDAORA"のデータソースオブジェクトを初期化できません。
リンクサーバー"XXX"のOLE DB プロバイダ"MSDAORA"から、メッセージ"Oracle"クライアントと
ネットワークコンポーネントが見つかりません。これらのコンポーネントはOracle Corporationから提供され、
Oracle Version 7.3.3(またはそれ以降)のクライアント ソフトウェアの一部としてインストールされます。

プロバイダは、これらのコンポーネントがインストールされるまで機能しません。"が返されました。
(Microsoft SQL Server,エラー:7303)」
となり、作成に失敗してしまいます。

SQL Serverには10gのOracleクライアントをインストールしてあるのですが、原因がわかりません。

どなたか、同じ原因を経験され、解決された方はいらっしゃいますか。
もし、お分かりでしたら、ご教授頂きたいのですが。

よろしくお願いいたします。

尚、SQL Serverは運用の関係上、Oracleクライアントインストール後、再起動は行っておりません。

環境
OS:Windows2003
DB:SQL Server 2005
Oracle:10g

お世話になります。

下記環境におきまして、SQL ServerよりOracleへリンクサーバーを作成しようとしたところ、
「リンクサーバー"XXX"のOLE DB プロバイダ"MSDAORA"のデータソースオブジェクトを初期化できません。
リンクサーバー"XXX"のOLE DB プロバイダ"MSDAORA"から、メッセージ"Oracle"クライアントと
ネットワークコンポーネントが見つかりません。これらのコンポーネントはOracle Corporationから提供され、
Oracle Version 7.3.3(またはそれ以降)のクライアント ソフトウェアの一部としてインスト...続きを読む

Aベストアンサー

問題を切り分けるために、
・SQLPlusとかでOracleクライアントからOracleデータベースへの接続は可能or不可能。
・余裕があればPingが通るとか、TracertやTNSPingを実施結果
…とか書かれてみてはいかがでしょうか?

QDATABSE LINKについて

現在Oracle10gとOracle11gのDataBaseLinkを行っているのですが、
DBLinkを作成し、データを取得しようとしたら、
「ORA-01017: invalid username/password; logon denied
ORA-02063: 先行のエラー・メッセージを参照してくださいline(XXX.XXXX.CO.JP)。」の様なエラーがおきます。

以下に実行したSQLを書いています。
create database link ****.****.co.jp
connect to user identified by ****
using '****'

↑に書いたユーザとパスワードで、
「Connect ユーザ/パスワード@Link先DB」をすれば繋がるのは確認出来ています。

色々ネットで調べてみたものの、原因が掴めていません。
何の要因から起こるエラーなのか、分かりません。
何かご存知の方がいらしたら、教えて頂けますか?
宜しくお願いします。

Aベストアンサー

可能性の1つとして考えてください。
データベースリンクを作成した際、
ユーザーとパスワードを逆に設定してしまった。
なんて事はないでしょうか?

普通にCONNECTできているという事は、
権限関係は恐らく問題ないと思われるので。

QSQL Serverのリンクサーバーの

こんにちは。

現在VisualStudio 2008 ProでC#を用いてWebアプリケーションを作成しようとしています。
いつもは、SQL Serverのデータを扱うのにADO.NETを使用してアプリケーションを作成しています。

Webアプリケーションのデータベース用のPCとしてWindows2003とSQL Server2005 Standardが搭載されているPCにAccess2003で作られているmdbがリンクサーバー設定されているものを用意しております。

このmdbは別のシステムで使用されており、常に更新されています。

今のところ、SQL Serverのタスクを用いて定期的(10分おきとか)にこのリンクサーバー上のmdbの情報を読み取り、SQL Server上に作ったテーブルを更新しているのですが、これだと情報を取りにいった時にタスクの更新が行われるまで、古い情報を取得することになります。

リアルタイムで取得することを考えた場合、
C#で作成したアプリケーションでこのSQL Serverにアクセスした時に直接リンクサーバーに対してSQL文を実行するという方法を考えているのですが、いろいろ検索しましたが探すことが出来ませんでした。

この様な方法がありましたら教えていただけないでしょうか?

こんにちは。

現在VisualStudio 2008 ProでC#を用いてWebアプリケーションを作成しようとしています。
いつもは、SQL Serverのデータを扱うのにADO.NETを使用してアプリケーションを作成しています。

Webアプリケーションのデータベース用のPCとしてWindows2003とSQL Server2005 Standardが搭載されているPCにAccess2003で作られているmdbがリンクサーバー設定されているものを用意しております。

このmdbは別のシステムで使用されており、常に更新されています。

今のところ、SQL Serverのタスク...続きを読む

Aベストアンサー

#3,4です。

とりあえずはなによりです。
>この”master”というのがインスタンスという事でしょうか?
これは違います。

先の接続文字列の例でいえば、「TestServer」がインスタンスです。
masterはシステムデータベースですが、別にmasterからでなくても、どのデータベースからでも通常はリンクサーバにはアクセスできるはずですよ。

Q型 varchar から型 numeric への変換エラー。

SQLクエリアナライザを使って、あるデータベースからLEFT JOINなどを駆使し、条件にそってデータを抽出しようと必死でやっております。
今まではうまく取得できていたのに、”型 varchar から型 numeric への変換エラー。”というエラーがでるようになりました。
前回とテーブルのデータを比較してみると、IsNULL(chrShokuhinCD,'') as chrShokuhinCDで引っ掛かっているようです。
この項目には空白(スペース)が入ったデータが最近存在しているのが原因だと思うのですが。。。
空白だったとき、IsNULL(chrShokuhinCD,'') as chrShokuhinCDはどのように修正すればよいでしょうか?教えてください。

Aベストアンサー

>空白だったとき、IsNULL(chrShokuhinCD,'') as chrShokuhinCDはどのように修正すればよいでしょうか?

では質問です。
空白だったとき、どんな数値として扱えばいいでしょうか?

これで何を入れればいいかわかると思いますが。

QOracleで流したSQLのログを取得できますか?

ASP+Oracle9iで作られたシステムがあります。
Oracleの設定などは前任者がしており、まともな引継ぎを受けないまま私が維持運用員となりました。
現在DBからあるレコードが消えてしまい(最初から作られてない可能性もあり)、顧客からクレームがついています。
状況から考えて怪しいプログラムを調査したのですが、原因不明でした。
そこで、Oracleの方で今まで流れたSQLをログとして保存していれば手がかりがつかめるのではないかと思い、情報を探しているのですが見つからないので教えて頂きたいのです。
私はOracleの知識(管理面について)が殆どなく、Oracleを使うことはできるが、Oracleの設定がどういう状況になっているか調べることもできず、資料もありません。

1.そもそもOracleにSQLをログとして保存する機能があるのか?
2.あるとすれば、保存機能が有効になっているか、保存したファイルがどこにあるかをどこで確認できるか?

以上の点についてご存知の方、どうぞ回答よろしくお願いします。

Aベストアンサー

OracleのSQL実行痕跡は以下に示すものの中にあります。
ただし、それぞれの設定レベル、保存方法によって、参照できる範囲は変わります。

1.オンラインREDOログとアーカイブログ
  オンラインREDOログはすべてのOracleデータベースに存在します。
  ですが、そのREDOログのサイズとシステムのアクセス量によって保存期間は変化します。アーカイブログ設定しておけば、古いREDOログはアーカイブとして吐き出されます。
  これらは#1の方がおっしゃったLOGMINERで実行済みSQLを調査することができます。
  アーカイブログモードになっているかどうかは、下記で確認できます。
   SQL> select log_mode from v$database;

  また、どのアーカイブログファイルを調査するかは下記を参照すれば良いと思います。
   SQL> select name,to_char(completion_time, 'yyyy/mm/dd hh24:mi') adate from v$archived_log;

2.フラッシュバック問い合わせ
  これは初期化パラメータUNDO_MANAGEMENTがAUTOに設定されており、かつUNDO_RETENTIONが保存期間として適切に設定されている場合のみ使用できます。
  やっていることは、UNDO表領域(旧RBS用表領域)の中に残っている実行履歴を参照しています。したがって、データベース設計時にフラッシュバック問い合わせを前提としていない限り、使える可能性は低いです。

3.その他
  監査を実行していれば、実行SQLを取得できる可能性があります。
  ただし、監査レベルなどを理解しておかないと、すべてのSQLが取得されていない可能性がありますので、難しいかもしれません。

OracleのSQL実行痕跡は以下に示すものの中にあります。
ただし、それぞれの設定レベル、保存方法によって、参照できる範囲は変わります。

1.オンラインREDOログとアーカイブログ
  オンラインREDOログはすべてのOracleデータベースに存在します。
  ですが、そのREDOログのサイズとシステムのアクセス量によって保存期間は変化します。アーカイブログ設定しておけば、古いREDOログはアーカイブとして吐き出されます。
  これらは#1の方がおっしゃったLOGMINERで実行済みSQLを調査することができま...続きを読む


人気Q&Aランキング

おすすめ情報