問題タブ [database-link]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle9i - Oracle の動的 DB リンク
Oracle で動的データベース リンクを使用することは可能ですか? Oracle9i データベースを使用しています。
私が必要とするもので説明しましょう。dblinks を使用して形成されたビューがいくつかあります。例えば:
mydbLINK.WORLD は、データベースの異なるインスタンスを指す必要があります。そのため、ある時点でDATABASESERVER1を指している必要があり、その後、 DATABASESERVER2 に切り替える必要があります。
現在、リンクを削除して再作成することでこれを行っています。これを行う場合、すべてのオブジェクトを再コンパイルし、すべてのスナップショットを更新する必要があります。ドロップと再作成を回避することは可能ですか? ビューが変更されるとすぐに、オブジェクトを再コンパイルしてスナップショットを更新する必要があることを理解しています。
誰かがこの機能を実装しましたか?
sql - Oracle のデータベース ベース リンクは、使い終わったらドロップ/クローズする必要がありますか?
「データベースリンクの作成」を使用して別のデータベースに接続し、データをコピーする SQL スクリプトがあります。
使い終わったら、このデータベースのベース リンクをドロップまたはクローズする必要がありますか? (おそらく、二度と必要ないと仮定して)。
ベストプラクティスは何ですか?
私のチームでは相反する答えがいくつか聞こえてきます。
閉じる必要がある場合、呼び出したときにリンクが確実に閉じられるようにするにはどうすればよいですか。
(接続が開いているというエラーが表示されますが、非同期操作/ジョブを実行していないため、これは奇妙です)。
java - データのサンプル セットのみを使用して本番環境のテスト データベース コピーを作成する
2 つの Oracle データベースがあります。1 つは製品顧客データベースです。もう 1 つはテスト データベースです。Test データベースは、データのない本番環境のコピーです...空のテーブルです。サンプルデータセットを本番データベースからテストにコピーするための効率的かつ効果的な方法を考え出そうとしています。
Customer テーブルの PK のサンプル リストから始めて、テスト データベースの Customer テーブルにそのサンプルを入力するプロセスを作成する必要があります。次に、サンプルに基づいて関連データを子テーブルに入力する必要があります。
以前は、準備されたステートメントを使用して本番環境からデータを選択する Java プロセスがありました...結果セットに基づいてファイルを作成し、更新ステートメントを使用してそれをテスト データベースに取得しました。それは恐ろしく非効率的でした。
私は DBA ではないので、その領域についてはあまり知りません。データベース リンクに関する情報を Google で検索しようとしましたが、良い例が見つかりませんでした。
これを行う方法を知っている人はいますか...または、少なくとも出発点を教えてください。
sql - データベースリンクを使用してOracle関数を呼び出す
リモート データベースで呼び出される Oracle 関数を作成し、getEmployee(id in varchar)
データベース リンクを使用してローカル データベースから呼び出そうとしています。
ではgetEmployee
、従業員データを含むカーソルを返そうとしています。 (テーブル: 従業員 (ID、名前、住所)):
列名 (ID、名前、アドレス) で結果セットを取得するにはどうすればよいですか?
Contrad によると、ローカル関数を次のように変更しました。
しかし、Java コードからこの関数を呼び出すと、次のエラーが発生します。
「ORA-24338: 文ハンドルが実行されていません」
oracle - Oracle 10g のデータベース リンク経由の転送は圧縮されていますか? 出来ますか?
データベースリンクを介して(を使用して)ある拠点から別の拠点にデータを転送していますINSERT INTO SELECT ...
。
リンクを介して転送されるデータが圧縮されているかどうか、またはネットワークの過度の使用を避けるために圧縮できるかどうかを知りたい. 私は帯域幅がほとんどありません。まだ行われていない場合は、それが役立つと思います。
oracle - 接続しているのと同じデータベースのdblinkを作成できますか?
これはちょっと変だと思いますが、これがどのように設定されているのか知りたいだけです。2つのデータベースがあり、それらは同じです(一方は他方からのミラーです)。最初のデータベースの名前は「reportsdw」で、もう1つのデータベースの名前は「reportsdwx」です。reportsdwdbで「select*from dual @ reportsdw」を実行しようとしましたが、機能しましたが、reportsdwxで「select * fromdual@reportsdwx」を実行しても機能しません。誰かがそれを説明できますか?
sql-server - Oracle データベース リンクを介して SQL Server 関数を呼び出す
ターゲット インスタンスでビューを作成せずに、SQL Server インスタンスへのデータベース リンクを使用して Oracle から次のステートメントを実行する方法はありますか?
私が試してみました
しかし、それは成功しませんでした。
どんな助けでも大歓迎です
unix - データベース リンクを介して実行されるストアド プロシージャからどのようにスプールしますか?
UNIX スクリプトを使用して、データベース リンク経由でストアド プロシージャを開始する SQL コードを実行しています。手順を正常に完了することができますが、示された SPOOL ファイルに DBMS 出力がスプールされません。
UNIX 内の SQL:
スプールファイルの内容:
ストアド プロシージャ内に多数の DMBS 出力をリストしますが、スプール ファイルには何も書き込まれません。
スプールファイルに出力するにはどうすればよいですか?
IN OUT 変数を使用しようとしましたが、プロシージャに COMMIT が含まれているため、DB リンクを経由しているため、パラメータでエラーが発生します...
oracle - Oracle データベース リンク。存在を確認するか、上書きしますか?
データベース リンクを作成する前に、データベース リンクが既に存在するかどうかを確認する必要があります。どうやってやるの?
これで始まるSQLスクリプトを書いています:
次に、作成します。
もちろん、データベース リンクが存在しない場合、最初のステップでエラーが発生します。最初のステップを省略して先に進んで db リンクを作成すると、同じ名前で既に存在するというエラーが再び表示されます。
データベース リンクが既に存在するかどうかを確認するにはどうすればよいですか?
asp.net - ORACLE/ASP.NET: ORA-2020 - データベース リンクが多すぎます...何が原因ですか?
これがシナリオです...
最新バージョンの ODAC (Oracle クライアント) を実行している内部 Web サイトがあります。データベース接続を開き、ストアド プロシージャまたはパッケージ化されたメソッドを実行してから、切断します。接続プーリングがオンになっており、現在、開発環境とテスト環境の両方でバージョン 11g を使用していますが、運用環境では 10gR2 を使用しています。これは本番環境で発生します。
数日前、あるプロセスで ORA-2020 エラーが発生し始めました。このプロセスは、当社の内部 Web サイトの Web ページから呼び出されます。ユーザーが日付を設定し、ボタンを押すだけで、Web サイトとは別の別のシステムでジョブが開始されます。ただし、呼び出し自体はデータベース リンクを使用して関数を実行します。
SQL を精査したところ、その 1 つのデータベース リンクのみが使用されていることがわかりました。これらのリンクはセッション単位であり、ユーザーはデフォルトの制限である 4 を超えていないため、ORA-2020 エラーが発生する可能性はあります。
デフォルトの制限である 4 を超えるように、多くのテストを実行しました。ODAC は、私が思い出す限り、接続ごとにコミットを実行します。4 つの DB リンクを実行してから、SQL を実行することはできないようです。エラーが発生した直後に 1 つの DB リンクがあります。このエラーを発生させる唯一の方法は、4 つの DB リンクを使用してクエリを実行し、次にデータベース リンクを含む関数または動的 SQL を実行することです。この問題は散発的であるため、その問題はありません。それは常に起こっているわけではありません。
質問
- 接続プールにより、最初のプロセスの実行後にユーザー B がユーザー A の接続を使用できるようになり、ユーザー B がより多くのデータベース リンクを使用して SQL ステートメントを実行すると、開いているリンクの数が増える可能性はありますか?
- これは、制限を 4 を超えて引き上げる必要があるシナリオですか? 数を増やすデメリットは?
- データベースから切断する前に、開いているデータベース リンクを明示的に閉じる必要がありますか? Oracleのドキュメントでは、自動的に発生するはずだと示唆しているようですが、「場合によっては」...そうではありません。