問題タブ [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.
c - OCIDate が Oracle に入る途中で壊れてしまう
OCIDate
エポック時間からデータを入力する C コードがいくつかあります。
私のメインプログラムでは:
そして図書館で:
呼び出しルーチンにチェックがあるため、これは正しいと確信しています。
そして、私はそれを次のようにバインドしています:
(dbuf
は既に定義されています)。そして、それはまさに私が期待するものを示しています。しかし、それが Oracle に到着すると意味不明であり、無意味な日付になります (たとえば65-JULY-7896 52:69:0
、ORA-1858 または ORA-1801)。誰もこのようなものを見たことがありますか?ありがとう!
java - OracleDataSourceとOCIドライバを使用して古い接続を取得する
Javaアプリケーションからデータベースへのリクエストが数時間ない場合、古い接続エラーが発生します。
その単純なJavaアプリケーションは、OCI(タイプドライバ)を使用してLinuxボックスで実行されます。なぜOCIなのか、なぜ薄くないのか、私に聞かないでください。接続オブジェクトのキャッシュを維持するために使用OracleDataSource
しています。OracleConnectionCacheManager
コードスニペットは次のとおりです。
エラーは次のとおりです。
私は何が欠けていますか?
c - OCIAQDeq() での NULL ポインタの使用
OCIAQDeq()のドキュメントには、次のように記載されています。
アプリケーションは、最初に OCIAQDeq() がコールされたときにペイロードに NULL を渡すことを選択し、OCI がペイロードにメモリーを割り当てられるようにすることができます。次に、OCIAQDeq() への後続のコールで、以前に割り当てられたメモリーへのポインタを使用できます。
この機能の使用方法の例はありますか? を渡した場合NULL
、その後どこからポインタを取得しますか? ありがとう!
oracle - Oracle JDBC ドライバーを使用した Spring XA トランザクション
bitronix トランザクション マネージャーを使用して分散トランザクションを有効にしようとしています。構成の詳細には次のものが含まれます
- OCI JDBC ドライバーと oracle.jdbc.xa.client.OracleXADataSource を使用します。このデータソースは、UCP 接続プーリング データソース (oracle.ucp.jdbc.PoolDataSourceImpl) によってラップされます。
- spring JdbcTemplate を使用してクエリを実行します。
- Bitronix Transaction Manager を使用して分散トランザクションを処理する
- アノテーションを使用した Spring 宣言型トランザクション
私が直面している問題は、JDBCTemplate を使用して実行されたクエリがトランザクションで実行されていないことです。私のテスト ケースは、JDBCTemplate を使用して 2 つのクエリを実行し、クエリの実行後にメソッドが実行時例外をスローしてもロールバックしません。また、接続の自動コミット ステータスが true に設定されていることも確認できました。
The data source is created as follows
クエリがトランザクションで実行されない理由について何か提案はありますか?
更新 1
jdbcTemplate を使用してクエリを実行し、最後に例外をスローするメソッドの追加
更新 2
「XAConnection から取得した接続のデフォルトの自動コミット ステータスは、Oracle Database 10g より前のすべてのリリースで false です。Oracle Database 10g 以降、デフォルト ステータスは true です。」
Oracle 11g r2 を使用しています。自動コミット ステータスを false にするために分散トランザクションを使用しているときに、どのような構成変更を行う必要があるか考えていますか?
アップデート 3
Oracle ucp PoolDataSource の代わりに bitronix プーリング データ ソースを使用すると、トランザクションが機能します。bitronix PoolingDataSource を使用すると、bitronix は自動コミット ステータスを false に設定できました。2つの違いを理解するために、さらに調査します。
php - 予想される Oracle の例外に対する PHP の警告を抑制します
PL/SQL パッケージを呼び出す PHP 関数があります。このパッケージは、PHP でキャッチして対応できるいくつかの既知の例外 (つまり、ユーザー例外) をスローできます。問題は、PHP で例外をキャッチしたにもかかわらず、PHP ログ ファイルに PL/SQL 例外からのスタック トレースを含む警告が表示されることです。
これらの OCI 警告を抑制するにはどうすればよいですか? 他の問題に役立つ可能性があるため、すべての警告を抑制したくありませんが、それが PL/SQL から予想されるエラーである場合、ログ ファイルがいっぱいになることは望ましくありません。
c - OCI のバインド名からバインド位置を取得する
OCIStmtPrepare()
とを使用する場合OCIBindByName()
、名前でバインドし、そのバインドの位置を として取得する方法はありint
ますか? OCIStmtGetBindInfo()
しないようです。ありがとう!
php - REMI リポジトリを使用して rhel 6 に oci8 をセットアップする
以前にこれを行ったことがありますが、テスト マシンに php、oci8、およびインスタント クライアントの複数のコピーが存在する結果となった長い試行錯誤のプロセスでした。それは動作します。
yum
ここまでで、remi リポジトリを使用するように設定し、完了yum install php php-oci8 php-pdo
し、Oracle インスタント クライアントをダウンロードして完了しました。rpm -Uh oracle-instantclient11.2-basic-11.2.0.2.0.x86_64\ \(1\).rpm
phpinfo()
ただし、ページで行うと、まだoci8がモジュールの1つとしてリストされていません。
エラーは環境変数にあると思いますが、ORACLE_HOME
何に設定する必要があるのか わかりません。今私は持っています:
/etc/httpd/conf/httpd.conf 内
前回これが機能したときは、php と php-oci8 をアンインストールし、機能するまで再インストールし続けたと思います。
私の作業サーバーには、次のように ORACLE_HOME が設定されています。
しかし、新しい動作していないものには ORACLE_HOME がここに設定されています:
Enviroment
phpinfo()のセクションにある ORACLE_HOME を設定するにはどうすればよいですか?
oracle10g - Oracle は、OCI のデモ/サンプル プログラムを本当に提供していますか?
Oracle は、OCI 用のデモ/サンプル プログラムがいくつかあると述べています。
私の場合、OCIConnectionPoolCreate() の使用例を見つけたいと思います。cdemocp.c
ドキュメントによる
と、というファイルにあるはずです: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14250/ociabdem.htm
しかし、これらのファイルを取得するために何をインストールすればよいかは明確ではありませんか? オラクルのウェブサイトからダウンロードできればよかったのに。そうではないようです。確かに、上記のページからの便利なリンクはありません。
(Windowsに)インストールを試みました:
- Oracle 10g XE データベース サーバー、そのようなソース ファイルはありません
- Oracle クライアント (sdk オプションがオン)、そのようなソース ファイルはありません
- 私たちのLinuxインストール内で検索しました-デモソースファイルを参照するいくつかのmakeファイルを含む伝説の\rdbms\demo\フォルダーを見つけましたが、ソースファイルはありませんでした. したがって、これらのメイクファイルの実行は失敗します。
基本的に、それらを見つけることはできません。
グーグルでcdemocp.c
検索すると、次のものが見つかります。
- オラクル自身のドキュメントの典型的な複数のコピー
- 他の人は見つからないと言っています。
(オラクルのドキュメントを使用することはロード・オブ・ザ・リングのようなものであり、現実とのつながりがかすかであり、おそらく言葉が多すぎることに気づきました。私はそれを楽しんでいません。)
c++ - オラクルはOCCI/OCI用のパブリック・シンボル・ファイル(PDB)を提供していますか?
OTN スレッド: Oracle は OCCI/OCI のパブリック シンボル ファイル (PDB) を提供していますか?
OC[C]Iを使用する Windows (Visual Studio または WinDBG を使用) でアプリケーションをデバッグする場合、Oracle OCI/OCCI ライブラリのシンボル ファイル (PDB ファイル) があると便利なことがよくあります。(マイクロソフトがすべてのシステム ライブラリで利用できるように、パブリック シンボル ファイル)
オラクルはこれらを提供していますか?
注: これらのパブリック シンボル ファイルは、Oracle ライブラリにとって特に歓迎されます。これは、コール スタックが oci/occi ライブラリの内部にある場所でいくつかのクラッシュがあり、(おそらく最適化) 設定がこれらの DLL を生成するために使用されたように見えるためです。これらのライブラリ内にある場合、Visual Studio がユーザー ダンプの使用可能なコール スタックを表示するのを効果的に防ぎます。
前の段落をさらに明確にするために、これは OCCI ライブラリのクラッシュを意味するものではありません。これは、1 つのスレッドが OCCI 呼び出し内にあり、ユーザー ダンプが生成された場合 (何らかの理由で - 実行中のアプリケーションのオンデマンドで生成される可能性があります)、このスレッドの呼び出しスタックが (少なくとも半分) 混乱していることを意味します。 . したがって、パブリック シンボル ファイルは非常に便利です。
php - PHPおよびOracle-oci_connect()ORA-12705:NLSデータファイルにアクセスできません
私たちはサーバーでOracleを何年も使用していますが、昨日ITの誰かが明確な警告なしにそれを削除し、それが本当に私たちのシステムに投げ込まれました!
私はcwallenpooleからのアドバイスに基づいて行動し(ありがとう!)、順調に進歩しました。PHPには少なくともoracle関数(つまりoci_connect)が含まれていますが、別のエラーメッセージが表示されます。
「警告:oci_connect()[function.oci-connect]:ORA-12705:NLSデータファイルまたは無効な環境にアクセスできません」
tnsnames.oraなどのファイルが正しい場所にあることを確認しましたが、それでも喜びはありません:(
ありがとうございました