2009年9月30日水曜日

第3回 Oracleインストールの前準備

    前回までの作業でSolarisサーバーは構築され、クライアントからtelnetで接続されるのを待っている状態である。今回は作業の場所をクライアントに移し、Oracleをインストールする前の準備すべきこと、そして各種設定について記述する。

    なお、作業をクライアントとしたが、Solarisサーバーのマスターコンソール上でも出来るため、必ずしもそうとは限らないので適宜選択されたい。本稿ではクライアントとして進める、これ以降はモニターが一台、かつ接続ポートが1つの場合はそれをクライアント側につなぎ変える。

    クライアントの要件は下記のとおりであり、ネットワークに繋がっている、ごく普通のWindows PCであれば必要要件を満たしている。

    • Solarisサーバーと物理的にネットワークで繋がっていること。
    • telnet、ftpが動くこと。
    • Webページをブラウザで表示できること。

  1. Oracle Database 10g Release 2のダウンロード


  2. 米国Oracle社のサイト(http://www.oracle.com)に接続して、Oracle データベースのダウンロードのページに進む。
    現在のURLは下記のとおりである。
    http://www.oracle.com/t/software/products/database/oracle10g/htdocs/10202solx86soft.html

    あるいはURLは頻繁に変わるためリンク切れの場合は、下記の文言によって検索をかける。
    Oracle Database 10g Release 2 (10.2.0.2) for Solaris Operating System (x86)

    OTN(Oracle Technology Network)にユーザー登録をしていない場合は、ダウンロードを始める前に登録して(登録は無料)、次のアーカイブをダウンロードする。
    10202_database_solx86.zip (681,090,961 bytes) (cksum - 1350902623)

    Screen   66


    チェックサムはSolarisサーバーにアーカイブをコピーして次のコマンドで算出して、左の数値を照合する。

    # cksum 10202_database_solx86.zip
    1350902623  681090961    10202_database_solx86.zip

  3. クライアントソフトのダウンロード


  4. クライアント側からtelnetプロトコルによってSolarisサーバー上でコマンドを実行したり、FTPプロトコルでファイルを転送するソフトをダウンロードして、インストールする。これらはコマンドプロンプト(通称DOS窓)からtelentとタイプすればWindowsに元々バンドルされているプログラムを使用できるが、EUCの表示ができず、使い勝手が悪いので本稿ではTera Term、FFFTPを使用する、なお両ソフトについては、ビジュアルなインターフェースを持つ定番ソフトであるため説明は割愛する。
    ただし、一点だけよく陥りやすい間違いを付け加えると、テキストファイルの改行コードはWindows(改行コード CR+LF)であり、UNIX (改行コード LF)である。Windowsで修正したテキストをバイナリモードで転送してしまうとUNIXでは改行と見なさない「CR」が行末に紛れ込み、スクリプトが実行できない、定義ファイルが読み込めないなどの問題が発生する。テキストはアスキーモードで「CR」を取り除いて転送する。

  5. telnetでSolarisサーバーに接続する


  6. 前回で控えておいたIPアドレスで接続して、rootでログインする。パスワードもまた前回で指定したものである。以下の作業はすべてrootユーザーで行う。
    Screen   67


  7. rootでftp接続を可能にする


  8. ftpuserは、FTP サーバーへのログインするユーザーのネガティブなリストである。つまりここにあるユーザーのログインを拒絶される。リスト上のrootをコメントアウトして、rootユーザーでのログインを許可する。
    次のタイプをしてftpusersファイルのオリジナルのコピーを取り、viでrootの行頭に#を挿入して保存する。

    # cp -p /etc/ftpd/ftpusers /etc/ftpd/ftpusers.org
    # vi /etc/ftpd/ftpusers

    rootの行頭に#を挿入して保存する。
    root

    #root

  9. ホスト名を設定する


  10. ここまでの処理では、ホスト名を設定していない。ブート後のsendmailデーモンのスタート時に下記のワーニングが発生しているはずである。

    unable to qualify my own domain name (hostname) -- using short name

    ホスト名を/etc/nodenameファイルにFQDN形式で設定して解決する。FQDN(Fully Qualified Domain Name)形式とは、ホスト名+ドメイン名で設定したものだ。ホスト名は、先頭は英字で始まる英数字、特殊記号はハイフン(-)が使用可能、すなわちRFC 952に準拠させて、ドメイン内でユニークな名前を指定する。
    設定したホスト名をOracleは、リスナー・パラメータファイル(listener.ora)、ローカル・ネーミング・パラメータファイル(tnsnames.ora)などのネットワーク構成ファイルで使う。後で変更するのは容易でないので、ネーミングは短くてすぐに分かるものを練り上げたほうが良い。
    ここでは、prtdiagコマンドを使って、'System Configuration:'の行から機種を取り出し、viで/etc/nodenameを新規作成して保存した。

    # prtdiag|grep 'System Configuration:'
    System Configuration: NEC PC-VL3004D
    # vi /etc/nodename

    次の行を追加する

    PC-VL3004D.domain.com

    注Solaris 10 3/05 prtdiagはサポートしていないので、機種は取り出せない。

  11. ログホストを定義する


  12. ログ制御システム(syslog)は/var/log配下にログを吐き出す機能のみならず、ログを別のログサーバーに転送する機能を併せ持つが、ログサーバーが定義されていないため、下記のワーニングが発生しているはずである。

    syslogd: WARNING: loghost could not be resolved

    ワーニングを回避するため、/etc/hosts上でログホスト(loghost)にループバックアドレス(127.0.0.1)を割り付けて、自分自身をログサーバーとして定義する。なお、/etc/hostsはシンボリックリンクであり、実体はリンク先の/etc/inet/hostsある。

    次のタイプをして/etc/inet/hostファイルのオリジナルのコピーを取り、viで一行( 127.0.0.1 loghost)を追加して、「:wq!」で強制保存する。

    # cp -p /etc/inet/hosts /etc/inet/hosts.org
    # vi /etc/inet/hosts

    次の行を追加する

    127.0.0.1    loghost


  13. install X11 ISO8859-15 Codeset


  14. 下記パッケージがOracleのソフトウェア要件に挙げられているので、ないものはインストールする。
    「SUNWarc」、「SUNWbtool」、「SUNWhea」、「SUNWlibm」、「SUNWlibms」、「SUNWsprot」、「SUNWtoo」、「SUNWi1of」、「SUNWi1cs」、「SUNWi15cs」、「SUNWxwfnt」

    次のコマンドをタイプして、要件であるパッケージがインストールされているのか調べる。

    # pkginfo -i SUNWarc SUNWbtool SUNWhea SUNWlibm SUNWlibms SUNWsprot SUNWtoo SUNWi1of SUNWi1cs SUNWi15cs SUNWxwfnt

    「SUNWi1cs」、「SUNWi15cs」がインストールされていないはずなので、SolarisインストールDVDをドライブに挿入して、下記のようにインストールする。

    # cd /cdrom/cdrom0/Solaris_10/Product
    # pkgadd -d . SUNWi1cs

    <SUNWi1cs> のインストールを継続しますか [y,n,?] y

    # pkgadd -d . SUNWi15cs

    <SUNWi15cs> のインストールを継続しますか [y,n,?] y


    注Solaris 10 3/05 ディレクトリは下記のとおり異なる
    /cdrom/cdrom0/s2/Solaris_10/Product

  15. ユーザーグループを作成する


  16. ユーザーを作成する前に、次のユーザーグループを作成しておく。

    • Oracle インベントリ・グループ(oinstall)

    • Oracle インベントリとは、oraInventoryディレクトリにあり、システムにインストールされているOracle製品のカタログのことである。それを所有するグループ。
    • OSDBA グループ(dba)

    • このグループに含まれるユーザーはオペレーティング・システム、すなわちSolarisにおいてユーザーIDとパスワードで認証が確立すると。データベースの管理権限(SYSDBA およびSYSOPER 権限)が付与される。
      たとえば、このグループに属したユーザーからsqlplusを起動するときに「sqlplus / as sysdba(sysoper)」と指定すると、OracleのユーザーIDとパスワードは無くても接続が可能になる。

    次のコマンドをタイプして、ユーザーグループを作成する。

    #  groupadd oinstall
    #  groupadd dba


  17. oracleユーザーを作成する


  18. Oracleをインストールして、その後運用する権限を持つユーザーを作成する。
    次のとおり、oracleユーザーを作成する。(OS上のユーザー名は「oracle」とした)
    • ホームディレクトリをSolaris標準の位置に作成して、割り当てる。
    • プライマリグループを「oinstall」に割り当てる。
    • セカンダリグループは「dba」に割り当てる。
    • パスワードを設定する。

    #  mkdir /export/home
    #  useradd -g oinstall -G dba -d /export/home/oracle -m oracle
    #  passwd -r files oracle
    新しいパスワード:
    新しいパスワードを再入力してください:
    passwd: oracle のパスワードが変更されました

    「useradd」コマンドはオプションが多いので解説を要する。
    useraddは<オプション> <ユーザー名>の形式をとる。ここではオプションを下記のとおり使用した。
    -g:プライマリグループ名
    -G:セカンダリグループ名(スペースで区切り複数可)
    -d:ホームディレクトリの指定
    -m:ホームディレクトリを自動的に作成する

  19. ベース・ディレクトリを作成する


  20. Oracle ベース・ディレクトリ、すなわちOracle製品をインストールするトップレベル・ディレクトリをOptimal Flexible Architecture(OFA)ガイドラインに基づき作成して、オーナーをoracleユーザーに変え、書き込み、実行権限をユーザーとグループに与える。

    #  mkdir -p /opt/app/oracle
    #  chown -R oracle:oinstall /opt/app/oracle
    #  chmod -R 775 /opt/app/oracle

  21. oracleユーザーのプロファイルを編集する


  22. 次のとおり、oracle ユーザーの環境変数を編集してプロファイルに書き込む。ここで設定した環境変数の一部は、Oracleインストール時のデフォルト値になるので、それに従えばよいことになり、あらかじめ決めて置けば、間違いがない少ない。

    #  cd /export/home/oracle
    #  cp -p .profile .profile.org
    #  vi .profile
    次の行を追加する
    ORACLE_BASE=/opt/app/oracle; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/product/10.2.0; export ORACLE_HOME
    ORACLE_SID=orcl; export ORACLE_SID
    NLS_LANG=Japanese_Japan.JA16EUC; export NLS_LANG
    ORA_NLS10=$ORACLE_HOME/nls/data; export ORA_NLS10
    LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
    PATH=/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/sfw/bin:/usr/ucb:$ORACLE_HOME/bin:.; export PATH
    umask 022

    設定した環境変数とその内容を下表に示す。
    表  68
    環境変数 意味
    ORACLE_BASE Oracle ベース・ディレクトリパス
    • 前述のとおり
    ORACLE_HOME Oracle ホーム・ディレクトリパス
    • Oracle製品とそのリリース毎に作成する。
    • /product/10.2.0とはその配下にOracle 10.2.0がインストールされていることを示す。
    ORACLE_SID システム識別子SID(System IDentifer)

    • Oracleは同一データベース上に複数のインスタンスを作成することができる。
    • インスタンスを識別子するための8文字以内の一意名。ここでは従来から使われている「orcl」を使用した。
    NLS_LANG クライアント環境の言語 / 地域 / キャラクタセット

    • NLS_LANGの構文と構成要素の意味は下記のとおりになる。


    • NLS_LANG=language_territory.charset
      • language

      • Oracleデータベースのメッセージ、ソート順序および日と月の名前で使用される表記規則
      • territory

      • デフォルトの日付、通貨および数値の表記規則
      • charset

      • クライアント・アプリケーションが使用するキャラクタ・セット
    • Oracleはクライアントにデータを出力する時に、NLS_LANGで指定したキャラクタセットと、データベース内部で保持するデータのキャラクタセットが異なる場合は、NLS_LANGで指定したキャラクタセットにコード変換する。
    • すでにSolarisのキャラクタセットは「EUC」を指定した。NLS_LANGの値は「JA16EUC」、すなわちこれも「EUC」を指定してtelnetで表示する漢字コードを一致させておく。
    ORA_NLS10 言語とテリトリの定義ファイルが保存されているディレクトリパス
    • NLS_LANGで指定した言語データをロードするディレクトリを指定する。
    PATH サーチパス
    • $ORACLE_HOME/binにパスを通しておく、その他後々で一般的に必要になるbinにも通しておく。
    umask ユーザーマスク

    • ユーザーマスクを設定していない状態でファイル、ディレクトリを新規作成するとパーミッションは次のとおりになる。

    • ファイル 666(すべてのユーザーに読取り権と書込権限を付与)
      ディレクトリ 777(すべてのユーザーに読取権限、書込権限、実行権限を付与)
    • ユーザーマスクとは権限を否定(マスク)するものであり、上記に対してユーザーマスク「022」を掛けると、oracleユーザーグループ、他のユーザーの書込権限は否定される。すなわち下記のようになる。

    • ファイル 644(すべてのユーザーに読取り権を付与して、書込権限は所有ユーザーのみに付与)
      ディレクトリ 755(すべてのユーザーに読取権限、実行権限を付与して、書込権限は所有ユーザーのみに付与)

    「666」、「777」等の各桁の並びは次のとおりであり、
    [所有ユーザー][所有グループ][その他ユーザー]
    各桁の数値は下表の権限を加算したものになる。
    権限 記号表記 数値表記
    読取権限 r 4
    書込権限 w 2
    実行権限 x 1
    権限なし - 0


  23. カーネルパラメータの設定


  24. 下表のカーネルパラメータに推奨値を設定する。

    表  69
    noexec_user_stack バッファオーバーフロー攻撃から保護(=1)
    seminfo_semmni セマフォ識別子の最大数
    seminfo_semmns システムのセマフォの最大数
    seminfo_semmsl セットのセマフォの最大数
    seminfo_semvmx セマフォの最大数
    shminfo_shmmax 共有メモリセグメントの最大サイズ
    shminfo_shmmin 共有メモリセグメントの最小サイズ
    shminfo_shmmni 共有メモリ識別子の最大数
    shminfo_shmseg ユーザープロセス共有メモリセグメントの最大サイズ

    次のとおり、systemファイルに追加する。

    #  cd /etc
    #  cp -p system system.org
    #  vi system

    次の行を追加する。

    set noexec_user_stack=1
    set semsys:seminfo_semmni=100
    set semsys:seminfo_semmns=1024
    set semsys:seminfo_semmsl=256
    set semsys:seminfo_semvmx=32767
    set shmsys:shminfo_shmmax=4294967295
    set shmsys:shminfo_shmmin=1
    set shmsys:shminfo_shmmni=100
    set shmsys:shminfo_shmseg=10


  25. リブート


  26. initコマンドでリブートさせる。リブート後にカーネルパラメータの設定変更が有効になる。

    #  init 6

0 件のコメント:

コメントを投稿