2009年10月3日土曜日

第6回 Oracleインストール後の設定

ここまでの作業でOracleデータベースは立ち上がった状態で、インストールは終了している。しかしながら、システム(Solarisオペレーティング・システム)の起動と、データベースの起動とは連動していないので、このままの状態ではシステムをリブートしても、Oracleを手順どおりに停止して、起動することはできない。

Oracleの停止、起動は手入力で行えるが、煩瑣である。このため、oracle データベースの起動・停止をするスクリプトを作成して、それをシステムからコールさせるようにする。

システムはランレベルが移行すると、それに対応した特定のディレクトリと名称のスクリプトをコールするようになっている、そのスクリプトをrcスクリプトと呼んでいる。システムレベルの動作をrcスクリプトはOracleデータベースに中継して、両者を連動させる。

以降の操作はクライアントのtelnetから、ルート権限において行う。

  1. 構成スクリプトの実行
  2. インストールの途中で、指示されていた構成スクリプトを実行することにより、製品の詳細目録であるインベントリ・ポインタ・ファイルを作成して、/usr/local/bin以下に実行ファイルをコピーして、Oracle起動に関する定義情報$ORACLE_HOME/install/oratabを作成する。

    次のタイプをしてrootユーザーになり、パスワードをタイプする。
    $ su -

    次に構成スクリプトをタイプして実行する。
    # /opt/app/oracle/oraInventory/orainstRoot.sh
    # /opt/app/oracle/product/10.2.0/root.sh

    途中で下記プロンプトが出たら「Enter」を押す。
    Enter the full pathname of the local bin directory: [/usr/local/bin]:

  3. 起動スクリプトの作成
  4. oracleユーザーが、データベースの起動・停止を行うシェルスクリプトは、すでに用意されているdbstart、dbshutであり、それらを利用すれば良い事になるが、システムのランレベルからコールされて、それらと中継を行うrcスクリプトが無いので新規作成する。

    作成するrcスクリプトの処理内容は「/etc/init.d」以下にある他のrcスクリプトと同じように、start 引き数と stop 引き数の両方を受け付けて、それに対応する下位プログラムをコールするものだ。

    rcスクリプト名を慣習的に「dbora」として、「/etc/init.d」にセーブする。注意点は、下位シェルスクリプトはbash構文であるが、それを指示するシバン(shebang)行、すなわち「#!/bin/bash」が文頭に欠けているので、「dbora」が明示してコールする必要がある。

    次のようにviで/etc/init.d/dboraを新規に作成して、実行権限を与える。
    # vi
    /etc/init.d/dbora

    次の行を追加して、セーブする。
    #!/bin/sh
    ORACLE_HOME=/opt/app/oracle/product/10.2.0
    ORACLE=oracle
    #
    case $1 in
    'start')
        su - $ORACLE -c "bash $ORACLE_HOME/bin/dbstart $ORACLE_HOME"
        ;;
    'stop')
        su - $ORACLE -c "bash $ORACLE_HOME/bin/dbshut $ORACLE_HOME"
        ;;
    *)
        echo "usage: $0 {start|stop}"
        exit
        ;;
    esac
    #
    exit

    実行権限を与える。

    # chmod u+x /etc/init.d/dbora

    起動スクリプトの内容で分かるように、oracleユーザーがインスタンスとリスナーの起動、停止を手動で行うには、シェルをbashに切り替えて、下記のように行う。

    $ bash
    (起動)
    bash-3.00$ $ORACLE_HOME/bin/dbstart $ORACLE_HOME
    (停止)
    bash-3.00$ $ORACLE_HOME/bin/dbshut $ORACLE_HOME

    rootユーザーならば、作成したdboraを使って下記のように行っても同じことである。
    (起動)
    # /etc/init.d/dbora start
    (停止)
    # /etc/init.d/dbora stop

  5. oratabの編集
  6. dboraが呼び出す、下位スクリプトdbstart (起動用スクリプト) と、dbshut (停止用スクリプト)はoratabを読み込み、末尾がY(自動起動する)になっていると、起動の場合はインスタンスのリスナーを起動させて、インスタンス自体を起動する。停止の場合はインスタンスのリスナーを停止させて、インスタンス自体を停止する。

    Oracle起動に関する情報を定義したoratabは、先に実行した構成スクリプト(root.sh)によって作成された。書式は次のとおりである、その末尾のフィールドが自動起動をN(しない)の指定になっているので、Y(する)に修正する。

    [$ORACLE_SID] [$ORACLE_HOME] [Y|N ]

    次のタイプをしてoratabファイルのオリジナルのコピーを取り、viを起動する。
    # cp -p /var/opt/oracle/oratab /var/opt/oracle/oratab.org
    # vi /var/opt/oracle/oratab

    orcl:/opt/app/oracle/product/10.2.0:N’の行末の’N’を’Y’に変更して保存する。
    orcl:/opt/app/oracle/product/10.2.0:N
      ↓
    orcl:/opt/app/oracle/product/10.2.0:Y

  7. シンボリックリンクの作成
  8. 起動スクリプト、すなわちrcスクリプトの実体は作成したので、それに対して、シンボリックリンクを張り、ランレベルが移行した際に実行するようにする。

    /etcディレクトリ以下には、各ランレベルに対応したディレクトリrc0.d、rc1.d、rc2.d、rc3.d、rcS.dが用意されているので、そのうちの適切なレベルにシンボリックリンクを作成する。なお、同ディレクトリにあるrc0~rcSはシンボリックリンクを呼び出す親であり、これもまたシンボリックリンクで/sbin以下の実体のスクリプトを呼び出す。

    シンボリックリンクのファイル名は、頭1桁目が「K」の場合は、終了を表し引数「stop」を加えてコールされる、「S」の場合は開始を表し引数「start」が加えられる。続く2桁の数字は実行順序を表す。

    次のタイプをしてシンボリックリンクを作成する。
    # ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora
    # ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora

    以上までをまとめると、ランレベルが移行してから、dbshut/dbstartが起動するまでの処理の流れは下記のようになる。

    停止
    /var/opt/oracle/oratab
    init 0 /etc/rc0.d/K10dbora stop /etc/init.d/dbora stop $ORACLE_HOME/bin/dbshut $ORACLE_HOME

    開始(起動)
    /var/opt/oracle/oratab
    init 3 /etc/rc3.d/S99dbora start /etc/init.d/dbora start $ORACLE_HOME/bin/dbstart $ORACLE_HOME

  9. SQL*Plusの動作確認
  10. インストールが完了すればOracleは起動している状態で、最も基本的な対話型の問い合わせツールであるSQL*Plusは使用可能になっている。Oracle インストールが無事終了したことの確認と、後のテストで使用するのでscott/tigerでログインできるように、「scott」ユーザーを有効にしておく。

    oracleユーザーに切り替える
    # su - oracle

    Solaris上ではoracleユーザーに切り替えたので、次のとおりタイプすれば、OS認証でOracleにログインできる。
    $ sqlplus / as sysdba

    「scott」ユーザーのステータスを調べる、「EXPIRED & LOCKED」になっている。
    SQL> select account_status from dba_users where username='SCOTT';

    「scott」ユーザーパスワードを「tiger」で再設定して、有効期限を更新して、ロックを解除する。
    SQL> alter user scott identified by tiger account unlock;

    「scott」ユーザーのステータスが利用可能か調べる、「OPEN」になっている。
    SQL> select account_status from dba_users where username='SCOTT';

    Sqlplusを抜ける。
    SQL> quit

    「scott」ユーザーにログインする。
    $ sqlplus scott/tiger

    「scott」ユーザーのテーブルを調べる。
    SQL> select table_name from user_tables;

    Sqlplusを抜ける。
    SQL> quit

    Screen   SQL*Plus

    インストールの途中でパスワードを一括設定したが、そのパスワードを変更する場合はここで引き続き行うことができる。下記はご存知のOracle旧バージョンが使用したパスワードを用いて変更した例である。
    SQL> alter user sys identified by change_on_install;
    SQL> alter user system identified by manager;
    SQL> alter user sysman identified by sysman;
    SQL> alter user dbsnmp identified by dbsnmp ;

  11. ウェブベースの管理ツールの動作確認
  12. コマンドライン・インターフェースのSQL*PlusだけでもOracleの管理は出来るのだが、第4回の終わりの「インストールは終了」の画面上に表示された、下記のウェブベースの管理ツールも使用できるように動作確認をしておいたほうが良い。ただしこれらは同時にOracle独自のWebサーバーを起動してその上で動作するWebアプリケーションであるので、システムに大変負担が掛かる。それを避けるため、必要な時だけ起動する運用に留めて置きたい。

    1. Oracle Enterprise Manager
    2. iSQL*Plus
    3. iSQL*Plus DBA

    Oracleのインストールが終わり、次のリーブトをするまでの期間、これらの管理ツールもやはり立ち上がった状態で待機しているが、何らかの事情でその状態になっていない場合は、手動で起動する。または次のリーブト後のために操作コマンドも記す。

    1. Oracle Enterprise Managerの動作確認
    2. Oracle Enterprise Manager(以降OEMと省略)の状態確認、起動、停止はoracleユーザーから下記のコマンドを使用する。

      (状態確認)
      $ emctl status dbconsole
      (起動)
      $ emctl start dbconsole
      (停止)
      $ emctl stop dbconsole

      OEMはクライアントのブラウザで下記のURLを指定して呼び出す。
      http:// server_addr :1158/em

      ログインできるのは下記のユーザーである。
      • SYS データベースの管理ユーザー
      • SYSTEM データベースの管理ユーザー
      • SYSMAN OEMの管理者ユーザー

      Screen   OEM

    3. iSQL*Plusの動作確認
    4. iSQL*Plusの起動、停止はoracleユーザーから下記のコマンドを使用する。Emctlと違って状態確認はない。

      (起動)
      $ isqlplusctl start
      (停止)
      $ isqlplusctl start

      iSQL*Plusはクライアントのブラウザで下記のURLを指定して呼び出す。
      http:// server_addr :5560/isqlplus

      Screen   iSQL*Plus

    5. iSQL*Plus DBAの動作確認
    6. 「iSQL*Plus DBA」の起動、停止は「iSQL*Plus」と同じであるが、URLへのアクセス権を持つユーザーは、通常のOracleのユーザーとは別である。このため、アクセス権を持つユーザーを作成して、ロールを付与する。

      iSQL*Plusのディレクトリに移動する。

      $ cd $ORACLE_HOME/oc4j/j2ee/isqlplus/application-deployments/isqlplus

      すでにあるadmin/welcomeユーザーによってscott/tigerユーザーを作成する。
      $ $JAVA_HOME/bin/java \
      > -Djava.security.properties=$ORACLE_HOME/oc4j/j2ee/home/config/jazn.security.props \
      > -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar \
      > -user "iSQL*Plus DBA/admin" \
      > -password welcome \
      > -adduser "iSQL*Plus DBA" scott tiger

      同じようにscottユーザーにwebDbaロールの付与する。
      $ $JAVA_HOME/bin/java \
      > -Djava.security.properties=$ORACLE_HOME/oc4j/j2ee/home/config/jazn.security.props \
      > -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar \
      > -user "iSQL*Plus DBA/admin" \
      > -password welcome \
      > -grantrole webDba "iSQL*Plus DBA" scott

      iSQL*Plus DBAはクライアントのブラウザで下記のURLを指定して呼び出す。
      http:// server_addr :5560/isqlplus/dba

      iSQL*Plus DBA の認証を要求するダイアログ・ボックスが表示されたら、作成したユーザーでログインする。

      Screen   iSQL*Plus DBA(認証)


      同じように、作成したユーザーでログインする。

      Screen   iSQL*Plus DBA


      動作確認が終わってscottユーザーが必要ないのであれば、消して終わり。
      $ $JAVA_HOME/bin/java \
      > -Djava.security.properties=$ORACLE_HOME/oc4j/j2ee/home/config/jazn.security.props \
      > -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar \
      > -user "iSQL*Plus DBA/admin" \
      > -password welcome \
      > -remuser "iSQL*Plus DBA" scott

0 件のコメント:

コメントを投稿