問題タブ [oracle-call-interface]

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.

0 投票する
2 に答える
5412 参照

c++ - 単純なデータ型のOracleOCI配列フェッチ?

Oracleのドキュメントを理解できません。:-(

OCIを介してOracleから単純なデータの複数の行をフェッチする方法を知っている人はいますか?

私は現在OCIDefineByPos、単一の変数を定義するために使用し(単純な整数- SQLT_INT/ 4バイトの整数に対してのみこれを行う必要があります)、次にOCIStmtExecute/を使用して一度に単一の行をフェッチしOCIStmtFetch2ます。

これは少量のデータでは問題ありませんが、1行あたり約0.5ミリ秒かかるため、数万行を読み取る場合は遅すぎます。

のドキュメントがわかりませんOCIBindArrayOfStruct。一度に数千行をフェッチするにはどうすればよいですか?

0 投票する
3 に答える
14755 参照

php - OCI を設定して PHP から Oracle に接続するには?

最新の Ubuntu では、機能している PHP 5.2.4 がインストールされています。OCI を使用して、PHP からリモートの Oracle サーバーを使用したいと考えています。

「Instant Client Package - Basic Lite」 (リンク)をダウンロードしました。OCI ライブラリを含むパッケージをディレクトリに解凍しましたが、これらのライブラリを使用することを PHP に伝える方法がわかりません。予想通り、私は得る

致命的なエラー: 未定義の関数 oci_connect() への呼び出し...

このコードを実行すると:

Oracle サポートで PHP を再コンパイルしたくありません。Oracle を使用できるように PHP を接続する最も速い方法は何ですか? リモートの Oracle インスタンスに接続する場合、Oracle クライアントなど、他のライブラリは必要ですか?

0 投票する
11 に答える
255601 参照

oracle - Oracle テーブルが最後に更新された日時を確認する方法

Oracle データベース内のテーブルに対して INSERT、UPDATE、または DELETE ステートメントが最後に実行されたのはいつで、実行された場合はどのように確認できますか?

ちょっとした背景: Oracle のバージョンは 10g です。定期的に実行され、単一の Oracle テーブルからデータを読み取り、それをファイルに書き込むバッチ アプリケーションがあります。ジョブが最後に実行されてからデータが変更されていない場合は、これをスキップしたいと思います。

アプリケーションは C++ で記述され、OCI を介して Oracle と通信します。「通常の」ユーザーでOracleにログインするため、特別な管理者は使用できません。

編集:わかりました、「特別な管理者のもの」は正確には適切な説明ではありませんでした. つまり、テーブルからの SELECT とストアド プロシージャの呼び出し以外に何もできないということです。2010 年より前にそれをやりたい場合、データベース自体に関する変更 (トリガーの追加など) は、残念ながらオプションではありません。

0 投票する
2 に答える
2245 参照

oracle - Oracle Call Interface (OCI) を使用したデフォルト値を持つ列の検出

パフォーマンスを向上させるために、メッセージング システムのカスタム データベース レイヤーを最適化しています。

ORACLE OCI OCIDescribeAny 関数を使用して、データベース テーブルの列に関するメタデータを取得しています。

OCI 呼び出しを使用してメタデータをチェックし、列に (スキーマ定義で) デフォルト値が設定されているかどうかを確認するにはどうすればよいですか。

0 投票する
2 に答える
11782 参照

c - OCI接続文字列...ヘルプが必要

Oracle 10g C API の関数 OCILogon() の dbname パラメータに使用される OCI 接続文字列を知っている人はいますか?

サービスの tnsnames.ora エントリを指定できることは知っていますが、 oci:connect:myserver.com:1521/myservicename のようなものを取得する機能はありますか?

0 投票する
2 に答える
2829 参照

oracle - OCI OCIStmtExecute コールによって更新された ORACLE 行数の検出

OCIStmtExecute 関数呼び出しを使用して呼び出す ORACLE 更新ステートメントがあります。

OCI 関数呼び出しを使用して、アクションによって更新された行数 (0、1、または複数など) を知りたいです。

これを行うにはどうすればよいですか?

0 投票する
2 に答える
6503 参照

java - OCI を使用して Oracle に接続しようとすると JVM がクラッシュする

次のように3台のマシンをセットアップしています。

  • CompA: Oracle サーバー 10.2.0.3 の実行
  • CompB: Oracle サーバー 10.2.0.4 とクライアント コードの実行
  • CompC: クライアント コードのみを実行する

CompB と CompC の両方のクライアント コードで、どちらの Oracle DB への接続も Thin ドライバーを使用して問題なく動作します。

クライアントコードからOCIドライバーを介して各Oracle DBに接続しようとしています

jboss で実行されている Java クラスの内部から。これは CompB では問題なく動作しますが、CompC では毎回 Jboss を実行している JVM がコア ダンプします。

CompC は、Sql*Plus と、jboss が参照しようとしている同じ tnsnames.ora ファイルを使用して、両方の Oracle サーバーに接続できます。

スタック トレースの一部を次に示します。毎回一貫しているように見えます。

ここで何がうまくいかないのか誰にもわかりませんか?

更新: 明確にするために、上記で使用されている「クライアント」は、jboss インスタンスで実行されている私の Java コードを指します。jboss を開始する LD_LIBRARY_PATH にある唯一の Oracle ライブラリは、libocijdbc10.so、libclntsh.so.10.1 および libnnz10.so です。これら 3 つのライブラリと jboss サーバー自体はソース管理されているため、CompB と CompC の両方で同じバージョンです。

CompB は、OCI とシンを使用して、CompA と CompB の両方に接続できます。CompC は OCI を使用して接続できませんが、シンを使用して CompA と CompB の両方に接続できるため、サーバーのバージョンの問題ではありません。

CompB と CompC はどちらも 32 ビットの Ubuntu 8.04 を実行していますが、CompB の 3.25GB RAM と比較して、CompC の CPU はわずかに遅く、RAM は 1GB しかありません。

0 投票する
1 に答える
823 参照

c++ - OCCIのコンテキストと環境とは?

私はOracle APIを利用するソフトウェアを調査していますが、オブジェクトメソッドが引数として「OCCIコンテキスト」または「OCCI環境」の値を期待していることがよくあります。

例は Account オブジェクトのコンストラクタです:

後で過負荷

どういうわけか、ある種の「接続ハンドラー」と関係があることは理解できますが、もっと知りたいです。

私はグーグルで調べましたが、私にとって十分に明確なものを見つけることができませんでした.すべてのドキュメントは、Oracle APIをすでに知っているという前提から始まっているようです.

ありがとう。

0 投票する
3 に答える
6714 参照

oracle - Oracle - OCI クエリのタイムアウト

Oracle OCI 呼び出し (OCIStmtExecute など) にタイムアウトを設定する方法はありますか?

ありがとう

0 投票する
3 に答える
1155 参照

c++ - ORACLE で OCI(c++) を使用した挿入クエリの問題

問題の説明:- そのレコードがデータベースに既に存在する (重複 ==> 主キーが存在する) 場合、そのレコードを Oracle に挿入しています。新しいレコードで更新したいと考えています。

現在、OCI_ERRORを取得した場合にレコードを挿入するときにこれを解決するために、呼び出します

OCIErrorGet( (dvoid *)errhp, (ub4) 1, (テキスト *) NULL, &errcode,errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR);

次に、エラー buf の値が ORA-00001 であるかどうか errbuf をチェックします ==> 存在する場合は一意の制約に違反し、値を更新します

そのレコードが既に存在する場合、データベース内のレコードを検索する以外に同じことを行う方法はありますか?

ORACLE で値が重複している場合、特定のエラーが生成されますか?

助言がありますか?