• ベストアンサー

UPDATEで困ってます

ORACLE初心者です。教えてください。 SQL*PLUSでDBが異なる場合のUPDATE方法を教えてください。 スキーマが異なる場合には、update スキーマ名.表明 set カラム名=値 でいけたのですが、異なるDBの場合の記述方法はどのようにしたらよいのでしょうか。 ちなみに、SQL*PLUSでローカルDBにCONNECTし、ネットワークサーバーのDBに更新をかけようと思っています。 環境は OS:XP oracle:9iです。 宜しくお願いします。

  • beatt
  • お礼率100% (3/3)
  • Oracle
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

DATABASE LINKを作成してみてください。 他のDBを参照できます。

参考URL:
http://www.arsys.co.jp/Oracle/k-1.html
beatt
質問者

お礼

ありがとうございます。早速試してみます。

その他の回答 (1)

  • trictrac
  • ベストアンサー率38% (10/26)
回答No.2

1.DATABASE LINK で更新する場合   update 表名@リンク名 set ・・・ 2.DATABASE LINK + SYNONIM の場合   update 表名 set ・・・     更新可能なシノニムを張れば、データベースリンク名を   指定せずに、そのまま更新できます。      

beatt
質問者

お礼

有難うございます。 早速試してみます。

関連するQ&A

  • Talend Open Studio について

    お世話になります。 今回Talendを使用してCSVデータとDB(oracle10g)内のマスタをつき合わせて 新たにCSV出力するジョブを作成しようとしております。 しかし、DB接続設定後スキーマのリトリーブを実行した際の スキーマ設定画面でDBカラムが日本語のためか ローカルカラム名がすべてCoulmn1,2,3...の用に変換されません。 日本語のカラム名は正しくエクスポートされないのでしょうか? (英語のカラム名を持つテーブルは正しく表示されました。) もし、ご存知の方がいたらご教示いただきたく存じます。 よろしくお願いいたします。

  • postgresqlにて全レコードのupdate

    PostgreSQLの全レコードを順次Updateしたいのですが、 SQLの記述方法がわかりません。 [やりたいこと] ユーザ情報を保持しているテーブルに、新しく"ID_TMP"カラムを追加。 カラム"ID_TMP"に、ユーザIDを保持しているカラム"ID_INFO"の内容を書き込む。 コピーしたいレコードが単一の場合、次のSQLで可能だと思うのですが、 テーブルに保持している全レコードを順次処理する方法を教えてください。 update [テーブル名] set ID_TMP = (select ID from [テーブル名] where id = [ID名]); 宜しくお願いいたします。

  • MS-Queryで、ログインしたユーザ以外のスキーマを参照している

    MS-Query でORACLEデータベースにログインしました。 SQLの実行で、テーブルの内容を参照したのですが、 テーブルがログインしたスキーマの内容と一致しませんでした。 SQLを見てみると、ログインしたスキーマと別のスキーマのテーブルを参照していました。 通常FROM句でスキーマ名を省略してテーブル名を記述した時、 ログインしたユーザのスキーマ名になると思うのですが、別のスキーマになっていました。 これは何か設定が悪いのでしょうか?

  • 「○○~」で始まるテーブル一覧

    SQLで「テーブル名が『○○~』で始まるテーブル一覧を取得」することは可能でしょうか?可能な場合、どのように記述すれば良いのでしょうか?なお、DBはOracleです。

  • オラクルのUPDATEで複数テーブル

    見ていただいてありがとうございます。 どなたか、方法がお分かりになる方、 ご教授いただけるよう宜しく御願いいたします。 ORACLEのSQL_PLUSを使用して以下のような SQLを実行するとエラーとなります。 UPDATE テーブル名1 , テーブル名2 SET テーブル名1.項目A = '2' , テーブル名1.項目B = '02' , テーブル名1.項目C = テーブル名2.項目A 当方、ACCESSとSQLサーバーでSQLの経験が若干あり、 そちらではこの記述方法で正常実行されるのですが、 オラクルでの記述方法がよくわかりません。 ネット等を利用し調べたのですが、打開策が見つからず、質問させていただこうと思った次第です。 どうか宜しく御願いいたします。

  • SQLPLUSで接続できない

    新しいWINDOWSマシン(WINDOWS XP)に Oracle・SQL Plusをインストールしましたが、 以下のエラーがでて、接続できません。 > ORA-12154: TNS:could not resolve the connect identifier specified 考えられる原因、解決方法などありましたら、お願いします。 尚、TNSNAMES.ORA 、 SQLNET.ORA は設定済みであり、 SQL Plus の代わりに、Oracle Net Manager を使って、 表示されているツリーから、 ■Oracle Netの構成  の下の ■ローカル  の下の ■サービス・ネーミング   の下に表示されている、該当のサービス名を選んで、 ”サービスのテスト(接続のテスト)”を実行すると、 「接続テストに成功しました。」 という結果になります。 ので、クライアント - サーバ間 のネットワークの通信そのものは、問題ないと思います。 感じとしては、TNSNAMES.ORA の記述内容がSQLPLUSから認識できていない様な気がします。 クライアント、サーバのOS、Oracleのバージョンは以下の通りです。 クライアントOS : WindowsXP SP2 クライアントのOracle製品 : 10.2.0 サーバOS : Solaris8 Oracle : 8.1.7

  • oracle 9i と SQL SERVER 2005 DBリンクにつ

    oracle 9i と SQL SERVER 2005 DBリンクについて とても困ってます。 よろしくお願いします。 仕事で、oracle 9iとSQL SERVER 2005をDBリンクさせて、oracle 9iのTableとSQL SERVER 2005のTableを結合させて、SELECT文を作成したいです。 本番環境は、DBサ―bとWebサーバは別々でとりあえずlocal開発環境を作成しています。 <確認したこと> ・global_names = Flase ・ODBCの設定はSQL SERVER 2005に接続確認しました。  →データソース名は、「SQLSRV」です。 ・inithsodbc.oraの設定    HS_FDS_CONNECT_INFO = SQLSRV    HS_FDS_TRACE_LEVEL = OFF ・LISTENER.ORAの設定(編集後再起動しました)  → (SID_DESC = (SID_NAME = HSODBC) (ORACLE_HOME = D:\oracle\Ora9IUTF) (PROGRAM = hsodbc) ・TNSNAMES.ORAの設定 HSODBC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521)) ) (CONNECT_DATA = (SID = HSODBC) ) (HS = OK) ) ・DBリンク作成(小文字を認識するため、ダブルクォーテーションで囲います)   CREATE DATABASE LINK DB_LINK_SQLSRV   CONNECT TO "ユーザ" IDENTIFIED BY "パスワード" USING 'HSODBC'; ・SELECT文   SELECT * FROM テーブル名@DB_LINK_SQLSRV; 上記の手順ですが、サービス名が解決できません。

  • SQLスクリプト内で、${変数}と記述しても値を認識できない?

    USER.TABLE_LNK_TRG.shにて、トリガ作成スクリプトUSER.TABLE_LNK_TRG.sqlをコンパイルしようとしています。 USER.TABLE_LNK_TRG.shとUSER.TABLE_LNK_TRG.sqlともに 変数ORACLE_SID_1の値としてdb1、 変数ORACLE_SID_2の値としてdb2 が入っているはずなのですが、USER.TABLE_LNK_TRG.sql内では ${ORACLE_SID_1}と${ORACLE_SID_2}がそのまま文字列として解釈され (変数の値であるdb1、db2にはならない)、コンパイルに失敗します。 逆にUSER.TABLE_LNK_TRG.sql内で、${ORACLE_SID_1}と${ORACLE_SID_2} を使わず、直接db1、db2と記述すると成功します。 トリガ作成スクリプトUSER.TABLE_LNK_TRG.sql内で、${変数}は使えないのでしょうか? 環境はOSはSolaris、DBはOracle9i、シェルはBシェルです。 _______________________________________________________________ ~USER.TABLE_LNK_TRG.sh~ #!/bin/sh ORACLE_SID_1="db1" ORACLE_SID_2="db2" #トリガコンパイル sqlplus aaa/aaa <<-EOF @USER.TABLE_LNK_TRG.sql quit EOF exit ______________________________________________________________ ~USER.TABLE_LNK_TRG.sql~ CREATE OR REPLACE TRIGGER USER.TABLE_LNK_TRG BEFORE UPDATE ON USER.TABLE FOR EACH ROW declare begin update TABLE@${ORACLE_SID_1}_lnk set col = :new.col; update TABLE@${ORACLE_SID_2}_lnk set col = :new.col; exception when others then null; end; / _______________________________________________________________ ※${ORACLE_SID_1}、${ORACLE_SID_2}のままコンパイルされるので、  ${ORACLE_SID_1}_lnkのDB環境、${ORACLE_SID_2}_lnkのDB環境が存在せずコンパイルエラー。  逆に直接db1、db2と記述するとdb1_lnkのDB環境、db2_lnkのDB環境が存在するので正常にコンパイル。

  • コラム名でテーブルを検索できますか?

    SQL & ORACLE初心者です。最近、セレクト文を使って、テーブル内のデータを取り出すことができるようになりましたが、逆にコラム名からテーブルを検索することはできるでしょうか。 例えば、TABLE_A内のコラムの中にCOLUMN_Aという名前のコラムがあるとして、このコラムが他のテーブルでも使われているかどうか、いるとしたらどのテーブルかを知りたいのです。また、COLUMN_Aと別のCOLUMN_B(それぞれが単独で記載されているテーブル名はわかっているとします)が一緒にある一つのテーブルで使われているかどうか、またそのテーブル名を知りたいときには、どのようなSQLを書けばよいでしょうか。 DBAやその他DBを構築するための知識をお持ちの方、ご回答をお待ちしています。

  • updateしてもSQLを終了すると元に戻る

    Oracle_9→access2002 で外注開発されたシステムを利用しています さて、Oracle、SQL_Plusの[update TABLE1 SET FIELD1 = 'X' WHERE FIELD1 IS NULL]等でデータ更新後、[select 列名リスト FROM TABLE1 WHERE 検索条件]で確認すると確かに更新されているが、SQLを終了後、再起動すると元に戻ってしまいますが、どんな原因が考えられますか?update実行後に確定操作等あるのですか? Oracleはまったく初心者ですがお願いします