Hatena::Grouparaistudy

czk-htnの日記

2010-11-29

[] CentOS-5.4 64bit に Oracle 10.2.0.1 をインストール (oratool編) 21:27


no title

/opt のマウント

$ sudo /sbin/mkfs.ext3 /dev/sdc 
$ sudo mount /dev/sdc /opt

** oratoolインストール

>|shell|
$ sudo rpm -ivh ~/Desktop/oratoolkit-1.0.2.1.4-1.noarch.rpm
$ su - root
# passwd oracle
# exit
$ sudo /opt/oracle/otk/current/bin/installManager swReqCheck osSetup10gR2.cfg

ログは /var/opt/oracle/otk/1.0/log-old/installManager.log に、詳細ログは /var/opt/oracle/otk/1.0/log-old/installManager/swreqcheck-20101129_232429.log に出力される。

詳細ログからインストールされていない必須パッケージを抽出する。

# su - root
# cd /var/opt/oracle/otk/1.0/log-old/installManager
# ls -ltr
# grep 'not found' swreqcheck-*.log | awk '{print $5 }' | sort | uniq
compat-db
compat-libstdc++-296
compat-libstdc++-33
gcc
gcc-c++
glibc-devel
glibc-headers
kernel-headers
libXp
libgomp
libstdc++-devel
sysstat
unixODBC
unixODBC-devel
$ sudo yum install compat-db \
  compat-libstdc++-296 \
  compat-libstdc++-33 \
  gcc \
  gcc-c++ \
  glibc-devel \
  glibc-headers \
  kernel-headers \
  libXp \
  libgomp \
  libstdc++-devel \
  sysstat \
  unixODBC \
  unixODBC-devel
$ sudo /opt/oracle/otk/current/bin/installManager swReqCheck osSetup10gR2.cfg

必要なパッケージをyumインストールする。インストールしたら、もう一度チェックを走らせる。

結果1件WARNINGがでているが「CentOS上での動作はOracleでサポートされていない」という当然の警告なので気にしない。

$ sudo grep -i warn /var/opt/oracle/otk/1.0/log-old/installManager/swreqcheck-20101129_233958.log
20101129_233959: Warning: Oracle software runs on CentOS however this combination is NOT supported by Oracle
20101129_234006: Info: Action swReqCheck of installManager ended with one WARNING

rlwrapのコンパイル

rlwrapはreadlineラッパー。rlwrap経由でsqlplusを使うと、sqlplusでもコマンド履歴を扱うことができるようになる。

HowTo通りにやるとreadlineライブラリがないと失敗するので、realine-develをあらかじめインストールしておく。

# sudo yum install readline-devel
# cd /opt/oracle/otk/current/tools/rlwrap
# ./configure && make
# make install
# /usr/local/bin/rlwrap -v
rlwrap 0.30

osSetup

osSetup10gR2.cfg は変更する必要はない。

# cd /opt/oracle/otk/current/conf/installManager/
# vi osSetup10gR2.cfg
(変更不要)
# sdiff -s osSetup10gR2.cfg sample/osSetup10gR2.cfg
(差異なし)
# /opt/oracle/otk/current/bin/installManager osSetup osSetup10gR2.cfg

swInst

サイレントモードでOracle Universal Installerが起動して、自動的にインストールが進む。

公式サイトの手順では大文字小文字が間違っているので注意。Linuxlinux

# cd /var/opt/oracle/repository/
# mv ~/Desktop/10201_database_linux_x86_64.cpio.gz .
# mv ~/Desktop/10201_companion_linux_x86_64.cpio.gz .
# su - oracle
oracle% bash
oracle$ cd $INSTALL_CONF
oracle$ cp sample/swInstEeSrv10gR2-Step*-linux-x86_64.cfg .
oracle$ installManager swInst swInstEeSrv10gR2-Step1-linux-x86_64.cfg

こんなエラーがでてインストールが途中で止まってしまった。

SEVERE:次の変数に対する値を、コマンドラインまたはレスポンス・ファイルから取得できませんでした。
  DEP_MODE(InstallType),
  TLDepModes(Toplevelinstalltype)
サイレント・インストールを続行できません。

ログファイルから原因を調べる。

# less /opt/oracle/oraInventory/logs/installActions*.log

どうやら、使ったサイレントインストール用のレスポンスファイルは以下のようだ。

/opt/oracle/otk/1.0/conf/installManager/response/10_2_0_1_SE.rsp

/opt/oracle/otk/1.0/conf/installManager/response/10_2_0_1_EE.rsp

で、INSTALL_TYPE="Enterprise Edition"とあるが、正しい指定方法は"EE"らしいので修正して再度実行する。

oracle$ cd /opt/oracle/otk/1.0/conf/installManager/response/
oracle$ cp -pi 10_2_0_1_EE.rsp 10_2_0_1_EE.rsp.org
oracle$ vi 10_2_0_1_EE.rsp
oracle$ diff -U 1 10_2_0_1_EE.rsp.org 10_2_0_1_EE.rsp
--- 10_2_0_1_EE.rsp.org 2009-05-12 23:40:15.000000000 +0900
+++ 10_2_0_1_EE.rsp     2010-11-30 11:35:35.000000000 +0900
@@ -329,3 +329,3 @@
 
-INSTALL_TYPE="Enterprise Edition"
+INSTALL_TYPE="EE"
oracle$ bash
oracle$ cd $INSTALL_CONF
oracle$ installManager swInst swInstEeSrv10gR2-Step1-linux-x86_64.cfg

ここまでで一端インストールを中断。root権限でシェルを実行し、/etc/oratabや/usr/local/bin/oraenvなどのファイルを作成する。

oracle$ exit
oracle$ exit
# /opt/oracle/eesrv/10.2.0/db1/root.sh
# su - oracle
oracle$ bash
oracle$ cd $INSTALL_CONF
oracle$ installManager swInst swInstEeSrv10gR2-Step2-linux-x86_64.cfg
(↓パッチを適用する場合)
oracle$ installManager swInst swInstEeSrv10gR2-Step3-linux-x86_64.cfg
oracle$ exit
oracle$ exit
# /opt/oracle/eesrv/10.2.0/db1/root.sh

データベースを作成する

ORACLE_HOME と データファイルの作成先ディレクトリを指定する。

# su - oracle
oracle$ cd $INSTALL_CONF
oracle$ ls -1 dbSetup*.cfg
dbSetup-dev.cfg
dbSetup-prod.cfg
dbSetup-test.cfg
$ vi dbSetup-prod.cfg
$ sdiff -s dbSetup-prod.cfg sample/dbSetup-prod.cfg
ORACLE_HOME="$ORACLE_BASE/eesrv/10.2.0/db1"                   | ORACLE_HOME="$ORACLE_BASE/sesrv/11.1.0/db1"
DATA01="/opt/oracle/data01/rdbms/${DB_NAME}"                  | DATA01="/data01/rdbms/${DB_NAME}"
DATA02="/opt/oracle/data02/rdbms/${DB_NAME}"                  | DATA02="/data02/rdbms/${DB_NAME}"
PWFILE="/opt/oracle/data01/rdbms/${DB_NAME}/pfile"            | PWFILE="/data01/rdbms/${DB_NAME}/pfile"
UTL="/opt/oracle/data01/utl/$DB_NAME"                         | UTL="/data01/utl/$DB_NAME"
$ installManager dbSetup dbSetup-prod.cfg

もし途中でデータベースの作成に失敗した場合は、Oracleインスタンスが起動したままの状態になる場合がある。そのままだと再施行できないため、下記の手順でインスタンスをシャットダウンする。

oracle$ bash
oracle$ sourceProdEnv
oracle$ sqlplus sys/manager
sql> shutdown immeidate
sql> exit
トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20101129