Category: Oracle

PHP Startup: Unable to load dynamic library

  XAMPP+Oracle+EclipseのPHP開発環境を構築した際、Oracle Instant Client経由でDBに接続しようとしたのだが、以下のエラーが発生し、Apacheが起動しなかった。 PHP Startup: Unable to load dynamic library ‘D:\java\xampp\php\ext\php_oci8.dll’ – %1は有効なWin32アプリケーションではありません。 色々調べてみた結果、XAMPPは32bit版なのに、Oracle Instant Clientは64bit版を使っていたことが原因だった。 Oracle Instant Clientを32bit版にしたところ、エラーは発生しなくなった。   PHPでociを使ってOracleに接続するための環境設定は、以下を参照。 XAMPP+Oracle+EclipseのPHP開発環境構築 https://www.cyberarchitect.net/blog/archives/1001

XAMPP+Oracle+EclipseのPHP開発環境構築

  Facebookアプリを作って遊ぼうと思い立ち、PHPの開発環境を作ることにした。 DBは、勝手知ったるOracleを使ってみる。 OSはWindows 7 Enterprise SP1(64bit)を使って環境構築したので、その時のメモ。 ※Oracleは構築済みの環境を利用。キャラクタセットはAL32UTF8。   1、Pleiadesをダウンロード http://mergedoc.sourceforge.jp/index.html#/pleiades_distros3.7.html pleiades-e3.7-php-jre_20120225.zipをダウンロードし、解凍。 今回はD:\Javaに展開。   2、XAMPPをセットアップ D:\Java\xamppディレクトリ配下のsetup_xampp.batを実行。 D:\Java\xampp\apache\confのhttpd.confを編集。ServerRootを設定。 #ServerRoot “D:/Java/xampp/apache” ServerRoot “D:\Java\xampp\apache” ←追記   3、Oracle Instant Clientをダウンロード http://www.oracle.com/technetwork/jp/topics/winsoft-087812-ja.html 32bit版をダウンロードし、展開。今回はD:\Java\instantclient_11_2に展開。 4、php.iniを編集 D:\Java\xampp\php\php.iniを編集。 キャラクタセットを追記。 default_charset = “UTF-8” extension_dirを以下に変更。 extension_dir = “D:\Java\xampp\php\ext” php_oci8.dll先頭のコメントアウト解除(「;」を削除) extension=php_oci8.dll   5、OSの環境変数を設定 コントロールパネル→システムの左ペインにて、システムの詳細設定をクリック。 詳細設定タブ下部、環境変数をクリック。 システム環境変数に変数名 NLS_LANG 、値 Japanese_Japan.AL32UTF8 を追加。 変数名 Path の値の先頭に、Oracle Instant Clientのディレクトリを追記。(今回は D:\Java\instantclient_11_2; ).

Oracleで、エクスポートしたデータを異なるスキーマにインポートする

  export/importには、expdp、impdpを使う。 ・データベース名は、エクスポート元(fromdb)とインポート先(todb)で異なる。 ・スキーマ名は、エクスポート元(HR)とインポート先(HOGEHOGE)で異なる。 場合は、以下を実行しましょう。 fromdbでエクスポート expdb system/hogehoge@fromdb dumpfile=DATA_PUMP_DIR:HR.DMP logfile=exp_hr.log schemas=HR HR.DMPをtodbに送り、 todbでインポート impdp system/hogehoge@todb dumpfile=DATA_PUMP_DIR:HR.DMP logfile=DATA_PUMP_DIR:imp_hr.log remap_schema=HR:HOGEHOGE; ディレクトリ”DATA_PUMP_DIR”の場所は、select * from all_directoriesで確認しましょう。

64-bit Oracle Data Access Components (ODAC)のインストールでエラー

  64bitのODACを試す。環境はWindows Server 2008R2 Standard Edition(64bit)。 http://www.oracle.com/technetwork/jp/database/windows/downloads/index-214820-ja.html Xcopy版ではなく、ODAC112030_x64.zipを使う。 解凍してsetup.exeを実行したところ、「Could not find the main class. Program will exit.」とエラーが発生し、インストールできない。 インストールログを見ても原因がわからず途方に暮れていたが、試しに.zipをダウンロードし直してもう一回試してみると、すんなりインストールできた。 なんだったのだろう。  

インストーラは、ファイル C:\Users\ADMINI~1\AppData\Local\Temp\2\<中略>\KEY_XE.regをインスタンス化できませんでした。ファイルが存在しません。

  64bitのOracle XE 11gをインストールする際に、以下のエラーが発生。 OSはWindows Server 2008 R2 Standard Editionの64bit版。 32bitのXEではこんなことは起こった記憶がないのだが・・。 とりあえず該当ファイルを探す。 隠しフォルダーを表示にしていない場合は、エクスプローラでF10を押してメニューを表示させ、ツール→フォルダオプション→表示タブにて、ファイルとフォルダーの表示を”表示する”に変更しておくこと。 また、「登録されている拡張子は表示しない」のチェックははずしておくこと。 エクスプローラでC:\Users\\AppData\Local\Tempに移動し、KEY_XE.regを検索するものの、何もヒットしない。 ちょいググり、以下のサイトを見つけた。 https://forums.oracle.com/forums/thread.jspa?threadID=2289186 先ず、インストーラを実行し、以下の画面まで進める。 ここで「インスール」はクリックせず、エクスプローラを開く。 エクスプローラでC:\Users\\AppData\Local\Tempに移動し、OracleMTSRecoveryService.regを検索。 私の環境の場合、C:\Users\\AppData\Local\Temp\2\{C5052D80-58AA-47D4-86FF-068039A80E2F}にあった。 “{}”の部分は環境によって異なるので注意。 OracleMTSRecoveryService.regをコピーし(そのままリネームしてはいけない!)、コピーしたファイルをKEY_XE.regにリネームする。 その後、インストーラに戻り「インストール」を実行することで、無事にインストールできた。 [amazon_enhanced asin=”4798124974″ /] こりゃどう考えてもバグでんがな・・。

インストーラは、ファイル C:\Users\ADMINI~1\AppData\Local\Temp\2\<中略>\KEY_XE.regをインスタンス化できませんでした。ファイルが存在しません。

  64bitのOracle XE 11gをインストールする際に、以下のエラーが発生。 OSはWindows Server 2008 R2 Standard Editionの64bit版。 32bitのXEではこんなことは起こった記憶がないのだが・・。 とりあえず該当ファイルを探す。 隠しフォルダーを表示にしていない場合は、エクスプローラでF10を押してメニューを表示させ、ツール→フォルダオプション→表示タブにて、ファイルとフォルダーの表示を”表示する”に変更しておくこと。 また、「登録されている拡張子は表示しない」のチェックははずしておくこと。 エクスプローラでC:\Users\\AppData\Local\Tempに移動し、KEY_XE.regを検索するものの、何もヒットしない。 ちょいググり、以下のサイトを見つけた。 https://forums.oracle.com/forums/thread.jspa?threadID=2289186 先ず、インストーラを実行し、以下の画面まで進める。 ここで「インスール」はクリックせず、エクスプローラを開く。 エクスプローラでC:\Users\\AppData\Local\Tempに移動し、OracleMTSRecoveryService.regを検索。 私の環境の場合、C:\Users\\AppData\Local\Temp\2\{C5052D80-58AA-47D4-86FF-068039A80E2F}にあった。 “{}”の部分は環境によって異なるので注意。 OracleMTSRecoveryService.regをコピーし(そのままリネームしてはいけない!)、コピーしたファイルをKEY_XE.regにリネームする。 その後、インストーラに戻り「インストール」を実行することで、無事にインストールできた。 [amazon_enhanced asin=”4798124974″ /] こりゃどう考えてもバグでんがな・・。

インストーラは、ファイル C:\Users\ADMINI~1\AppData\Local\Temp\2\<中略>\KEY_XE.regをインスタンス化できませんでした。ファイルが存在しません。

  64bitのOracle XE 11gをインストールする際に、以下のエラーが発生。 OSはWindows Server 2008 R2 Standard Editionの64bit版。 32bitのXEではこんなことは起こった記憶がないのだが・・。 とりあえず該当ファイルを探す。 隠しフォルダーを表示にしていない場合は、エクスプローラでF10を押してメニューを表示させ、ツール→フォルダオプション→表示タブにて、ファイルとフォルダーの表示を”表示する”に変更しておくこと。 また、「登録されている拡張子は表示しない」のチェックははずしておくこと。 エクスプローラでC:\Users\\AppData\Local\Tempに移動し、KEY_XE.regを検索するものの、何もヒットしない。 ちょいググり、以下のサイトを見つけた。 https://forums.oracle.com/forums/thread.jspa?threadID=2289186 先ず、インストーラを実行し、以下の画面まで進める。 ここで「インスール」はクリックせず、エクスプローラを開く。 エクスプローラでC:\Users\\AppData\Local\Tempに移動し、OracleMTSRecoveryService.regを検索。 私の環境の場合、C:\Users\\AppData\Local\Temp\2\{C5052D80-58AA-47D4-86FF-068039A80E2F}にあった。 “{}”の部分は環境によって異なるので注意。 OracleMTSRecoveryService.regをコピーし(そのままリネームしてはいけない!)、コピーしたファイルをKEY_XE.regにリネームする。 その後、インストーラに戻り「インストール」を実行することで、無事にインストールできた。 [amazon_enhanced asin=”4798124974″ /] こりゃどう考えてもバグでんがな・・。

Oracleで、ロック競合の確認と、ロックの強制解除方法

  開発フェーズの初期段階では、アプリからDBを管理している技術基盤チームにロック解除依頼が頻繁にくる。 Oracleで競合しているロックを調べて、killする方法は以下の通り。 ロック競合を確認する。 SQL> select sid, serial# from v$session where sid in (select sid from v$lock where type in (‘TM’,’TX’)); SID SERIAL# ———- ———- 133 62932 197 44679 alter system kill sessionで、ロックを解除する。 SQL> alter system kill session ‘133, 62932’; System altered. SQL> alter system kill session ‘197, 44679’; System altered.   Oracleの現場を効率化する100の技 posted with.

ORA-29280: 無効なディレクトリ・パスです。

  Oracleでディレクトリオブジェクトを作成し、 create directory batch_log_dir as ‘/opt/app/batch/log’; grant read on directory batch_log_dir to hoge_user; grant write on directory batch_log_dir to hoge_user; PL/SQLからファイルを出力してみる。 SQL> declare 2 lfp_log UTL_FILE.FILE_TYPE; 3 v_file_name VARCHAR2(250); 4 begin 5 v_file_name := ‘test.log’; 6 lfp_log := UTL_FILE.FOPEN(‘batch_log_dir’, v_file_name, ‘a’); 7 UTL_FILE.PUT_LINE(lfp_log, ‘hogehoge’); 8 UTL_FILE.FCLOSE(lfp_log); 9 end; 10 / declare * 行1でエラーが発生しました。: ORA-29280:.

PL/SQLのソースをSQLで確認する

  コンパイル済みのPL/SQLのソースコードを確認するには。パッケージ名が”PKG_01″の場合。 SQL> set pagesize 200 SQL> select text from user_source where name = ‘PKG_01’; [amazon_enhanced asin=”4798116165″ /]