Oracle 12c を利用する際の前準備
ここでは CentOS 7 に Oracle 12c をインストールし、1台のサーバ上で Movable Type Advanced が動作することを前提に解説します。また、以下の内容で Oracle のインストールが完了しているものとします。
- Oracle をインストールするサーバには、最低 1GB のメモリーと、2GB(メモリーの倍量)の swap が必要になります。
- Oracle をインストールするユーザーとして oracle を作成し、oracle ユーザーでインストールを行います。
- Oracle のインストール時に DBCA(Database Configuration Assistant)が起動しデータベースが作成されますが、この際 [10/4 : 初期化パラメータ] の [キャラクタセット] で、[Unicode(AL32UTF8)] を選択します。
- 初期に作られるデータベースの SID はデフォルトの "ORCL" のままとします。
Oracle 利用の前準備
Oracle が既に起動していて設定済みの場合は、『表領域を作成する』に進んでください。
環境変数を設定する
この作業は root ユーザー、oracle ユーザーで行ってください。".bashrc"に追加します。環境により内容は異なりますので、適宜書き換えてください。
export ORACLE_HOME="/home/oracle/app/oracle/product/11.2.0/dbhome_1"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$ORACLE_HOME/lib"
export PATH="$PATH:$ORACLE_HOME/bin"
.bashrc 変更の適用。root ユーザー、oracle ユーザーの両方で以下のコマンドを実行する
root
# source /root/.bashrc
oracle
$ source /home/oracle/.bashrc
ファイルのアクセス権を変更する
Oracle の機能を外部から利用するには幾つかの設定が必要です。
tnsnames.ora のパーミッションの変更
# chmod 0644 $ORACLE_HOME/network/admin/tnsnames.ora
/home/oracle のパーミッションの変更
# chmod 0755 /home/oracle
ウェブサーバーの設定をする
ご利用のウェブサーバーで、以下の環境変数を設定する必要があります。
- ORACLE_HOME
- LD_LIBRARY_PATH
- NLS_LANG
ここでは、Apache ウェブサーバーを利用する場合の設定例を掲載します。パスなどは、実際の環境に合わせて変更してください。Apache ウェブサーバー以外のウェブサーバーをご利用の場合は、各ウェブサーバーのドキュメントをご覧ください。
SetEnv ORACLE_HOME "/home/oracle/app/oracle/product/11.2.0/dbhome_1"
SetEnv LD_LIBRARY_PATH "$ORACLE_HOME/lib"
SetEnv NLS_LANG Japanese_Japan.UTF8
設定を変更した後で、httpd を再起動してください。
前準備が終了した場合は、『表領域を作成する』に進んでください。
DBD::Oracle のインストール
DBD::Oracle および DBI モジュールは、Movable Type Advanced が Oracle に接続する為に必須です。
環境変数を設定する
設定する内容は、環境に併せて適宜読み替えてください。export ORACLE_SID=ORCL export ORACLE_USERID="Melody/Nelson" export ORACLE_DSN="dbi:Oracle:SID=orcl;host=localhost"
CPAN コマンドを利用して DBI モジュールをインストールする
cpan DBI
CPAN コマンドを利用して DBD::Oracle モジュールをインストールする
cpan DBD::Oracle
正しく動かない時は
Oracle 12c を利用する際に幾つかはまるポイントがあります。うまく動かない時は、以下の情報を参考にしてください。 また、『SQL*Plus による接続テスト』を試して設定に問題がないかを確認してください。
環境変数が正しくセットアップされていない
ORACLEHOME や LDLIBRARY_PATH に間違った値を設定していると正しく動作しません。
.bashrc に書き込んだ後、source コマンドを使っていない
.bashrc に環境変数を書き込んだだけでは反映されないので、source コマンドを利用して設定を有効にして下さい。
データベース名に "ORCL" ではなく、"mta" を記入している
データベース名と表領域名は違います。たとえば Melody ユーザーが ORCL にアクセスすると、自動的にデフォルト表領域の MTA を参照します。
SQL*Plus で接続ができない
ID と SID は大文字、小文字を区別しませんが、PASSWORD は区別をします。
ID、PASSWORD、SID を正しく記入しても接続できない場合は、もう一度表領域とユーザーの設定を見直して下さい。
SQL*Plus で接続できるのに、mt-wizard.cgi で接続ができない
いくつか問題が考えられます。
- tnsnames.ora のパーミッションが 0644 になっていない可能性があります。
- /home/oracle のパーミッションが 0755 になっていない可能性があります。
- DBD::Oracle が正しくインストールされていない可能性があります。改めてインストールをしてみて下さい。
- Apache への環境設定が正しく設定されていない。パスなどもう一度見直してください。
tnsnames.ora と listener.ora ファイルが不整合を起こしている
tnsnames.ora と listener.ora は対になるファイルで、クライアントとサーバーの情報が書き込まれています。
これらのファイルが無かったり、値が間違っている場合は正しく接続できません。オンラインドキュメントや書籍を参考にして正しい値を設定してください。