問題タブ [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 に答える
1442 参照

php - PHP からの完全な Oracle バックアップ

Oracle バックエンドを使用して PHP 駆動の Web アプリケーションを管理しています。アプリは多数のサードパーティ アプリとやり取りするため、情報は XML ファイル、Microsoft Access データベース、および HTML フォームの組み合わせで管理されます。現在、多くの BLOB を含む 80 のテーブルと、非常に優れた外部キー関係があります。すべての手順は、(もちろん) 誰も読んだことのない文書で注意深く説明されています。顧客は自分のデータに不安を感じていたため、いくつかの改善点 (プレビューの追加や一部の操作での確認など) を含めた見積もりを提示されました。

悲しいことに、顧客は仕様の 1 つ (12 工数で作成される部分的なエクスポート) を誤解しており、DBA の介入なしに Web ブラウザーを介して完全なデータベースを保存および復元できる完全なバックアップおよび復元機能を期待しています。 .

クライアントと別の議論をする前に、この機能をタイムリーに実際に実装するオプションがあるかどうかを知りたいです。戻す)。

運用サーバーは、PHP/5.2.9 を実行する Windows Server 2003 ボックスです。Oracle サーバーは、「Oracle9i Release 9.2.0.1.0 - 64bit Production」を実行するリモート ボックスです。

(私は DBA ではないので、私が知らないよく知られた解決策があるかもしれないことに注意してください。)

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

windows - oci.dllエラー、DBDを発生させるPerlスクリプト

Oracleデータベースに接続し、テキストファイルを開き、データベーステーブルのファイルからデータをロードするperlスクリプトがあります。スクリプトは、開発マシン(Windows xp 32ビット)で完全に機能しますが、スクリプトをにロードすると、本番サーバー(Windows 2003 64ビット)をコマンドラインから実行すると、perl.exeが開きます-コンポーネントウィンドウを見つけることができません、メッセージは言います

OCI.dllが見つからなかったため、このアプリケーションを起動できませんでした。アプリケーションを再インストールすると、この問題が解決する場合があります。

コマンドライン出力は次のとおりです。

install_driver(Oracle)が失敗しました:モジュールDBD :: Oracleの「C:/Perl64/lib/auto/DBD/Oracle/Oracle.dll」をロードできません:load_file:%1はC:/Perl64で有効なWin32アプリケーションではありません/lib/DynaLoader.pm 191行目。at(eval 14)line3コンパイルはrequire at(eval 14)行3で失敗します。おそらく、必要な共有ライブラリまたはdllは、c:\ warranty\warrantyImport.pl行で期待される場所にインストールされません。 15

oracleクライアントを再インストールしました。アクティブなperlとoracleクライアントの両方をアンインストールしてから、perlの前にoracleクライアントをインストールしようとしました。これにより、問題が発生する可能性があります。

パーミッションの可能性があると思ったので、oci.dllを開くための簡単なperlスクリプトを作成し、できない場合はエラーを発生させました。正しく開くことができました。

C:\ oracle \ product \ 10.2.0 \ client_1\binがPATH環境変数に含まれていることを確認しました。

SQLPlusを使用してデータベースに接続できます

OCI.dllをperlスクリプトと同じディレクトリに追加しました。

そして、私はついにアイデアを使い果たしました....誰かが何かを提案できますか、私はそれを機能させるために私の髪を引き裂いています。

詳細サーバーはActivePerl5.14.1ビルド1401(64ビット)を実行しています。Oracleデータベースは10gです。Oracleクライアントは10.2.0です。

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

php - oci_bind_by_name および to_date PHP/OCI/Oracle

私は次のものを持っています:

次のエラーが発生します。

ただし、直接バインド$REGISTERED_TIMESTAMPして挿入しないと、完全に機能します。to_date$query

どうしたの?!これは私を怒らせています!

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

php - Windows Apache で PHP oci select が丸められた浮動小数点数を返す

Oracle データベースにクエリを実行するときに奇妙な問題が発生します。まったく同じロジックで異なる結果が得られますが、私が知る限り、実際には同じバージョンと構成である 2 つの異なる Windows Apache セットアップで得られます。

問題は、テーブルから 3 つの列 ( Number(10),Number(10),Number(10,4) ) を選択すると、同じクエリが 1 つのマシンで列 #3 に対して適切な 10 進数を返し、別のマシンでは削除されることです。小数と私は数値の整数部分のみを取得します。

Oracle が Number(10,4) データ型を返す方法を制御する設定がわかりません。2 つのマシンで Oracle クライアント、Apache、および PHP の設定に違いは見られません。

これの原因は何ですか?

よろしくお願いします。

イリヤ

0 投票する
0 に答える
173 参照

php - 別名表を使用した OCI_PARSE

PHP の Oracle パーサーに問題があります。テーブルのエイリアスを使用してすべてのリクエストを送信すると、一貫性のないデータ型エラーが発生します。アスタリスクの処理方法を知っている人はいますか?

フィールド名を入力したくないので、これは非常に面倒です。アスタリスクは、テーブル エイリアスを使用しない場合に機能するため、機能するはずです。Oracleはそれを気にしないので、phpパーサーの何かです。

例えば:

それsi.*が問題の原因です。

何か案は?

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

php - データベース エラーからデータをフェッチしようとしています

これがスクリプトです。29行目でエラーが発生しています..

(この質問も比較してくださいPHP エラー: 警告: ociparse() はパラメーター 2 が文字列であることを期待しています)

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

php - PHP/OCIでのみ発生するOracleエラーのデバッグ

合計時間を計算し、Oracleデータベース用に作成された時間の構成に応じて値を割り当てるように設計されたクエリがあります。

クエリはNavicatとToadで正常に実行されますが、OCI/PHPを使用してクエリを実行すると次のエラーが発生します。

ORA-00972:識別子が長すぎます

メッセージの意味は理解できますが、30文字を超える識別子はありません。場合によっては、テーブル名のエイリアスを作成しましたが、これは違いはありません。

私のコードは次のとおりです。

私は何を間違っているのですか、そして将来このような問題をさらに診断するために使用できる方法/ツールはありますか?

編集: コメントに従って、私はより大きなフィールドを削除し、クエリを単純化して問題を絞り込んでみました。次のクエリでも同じエラーが発生し、最大のフィールド名が削除されます。

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

c - Oracle OCI - 別のユーザーとして実行すると ORA-12705 で失敗する

データベースと通信するために OCI を使用する C アプリケーションがあります。私はインスタントクライアント方式を使用しているため、サーバーにスタンドアロンの Oracle インストールはありません。アプリケーションがリンクされているライブラリがいくつかあるだけです。

通常、アプリケーションはユーザー dai として実行され、すべて正常に動作します。ただし、アプリケーションが (グループ dai の) 別のユーザーとして実行されている場合、実行に失敗し、次のように報告されます。

したがって、これはアクセス許可エラーであると想像できますが、どのファイルにアクセスしようとしているのかはわかりません。Oracle ライブラリの権限は次のとおりです。

ご想像のとおり、メインの OCI ライブラリは静的にリンクされていますが、動的にリンクされたライブラリが 1 つあります (理由はわかりませんが、AIX のインスタントクライアント パッケージにはこれらのファイルが付属していました...)。私の LIBPATH は両方のユーザーから問題ないように見えます:

他にどの権限を確認する必要がありますか?

編集:何が起こっているかを確認するためにtruss、(Linux に相当する AIX) を実行しようとしました。stracedai ユーザーとして実行しているときに、予期しないファイルを読み取っているのを確認できませんでした。Truss は set-uid プログラムのトレースに問題があるようでした - C アプリケーションのパーミッションは次のように設定されていました:

だから私はchmod a-sやり直し、もう一度試しましたが、今はうまくいきます!

そのため、プログラムは s ビットがなくても問題なく実行されますが、元に戻すとすぐに再び壊れます。s-bit セットで truss を実行できないため、なぜこれが必要なのかを見つけるのが難しくなっています。プログラムは s ビットが設定されていないと他の状況では動作しないため、これは実行可能な解決策ではありませんが、問題が発生している可能性がある場所へのポインタになることを願っています。

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

c++ - OCILIBを使用して出力変数を使用してOracleプロシージャを呼び出す

次の署名のある手順があります。

OCILIBを使用して実行すると、oCountの正しい値を取得できません。(OCI_RegisterIntを使用して)整数として登録すると、次のエラーが発生します。

ORA-03116:変換ルーチンに渡されたバッファ長が無効です

文字列として登録すると実行されますが、OCI_GetStringはnullポインタを返し、OCI_GetIntは(期待される結果1ではなく)0を返します。

テストコードは次のとおりです。

たとえば、PL /SQLDeveloperを使用してプロシージャを実行すると正常に動作します。

これは、OCILIBを使用してプロシージャを呼び出す正しい方法ですか?

また、ライブラリの混合バージョンを使用していることにも注意してください。

0 投票する
4 に答える
843 参照

oracle - Oracle OCI API を使用するには C プログラミングが必要ですか?

私はここを見ていました:

http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28395/toc.htm

しかし、すべてが C または C++ のように見えます。OCIを使用するために他の言語を使用できますか?

ありがとう。

編集: LOB オブジェクト (blob、clob など) のダイレクト パスを使用する必要があります。そのためには OCI を使用する必要があると思います。

編集: OCI の仮定はこれに基づいています: 直接パスを LOB 列に挿入できますか?