目次
Linux版Oracle
ORACLE MASTER Oracle Database 11gの学習用の環境を構築。あまりPCのレジストリなどを汚したくなかったので仮想環境上に作成。
構成
OS | Fedora16 デスクトップ版 |
---|---|
※ Ubuntu12.04LTS上のVMWare Playerで動作 | |
アプリケーション | Oracle Database 11g Release 2 |
Standard Edition, Standard Edition One, and Enterprise Edition | |
(11.2.0.1.0) Linux x86 |
参考資料
- Oracle 11g Articles - インストール方法が英語だが書かれてる。
- Oracle Database 11g Release 2 (11.2) Installation On Fedora 16 (F16) - 主にこのページを見ながら作業した。
ダウンロード
Oracleから本体をダウンロードする。
linux_11gR2_database_1of2.zip linux_11gR2_database_2of2.zip
/etc/hostsの編集
# vi /etc/hosts
以下の行を追加する。
<IP-address> <fully-qualified-machine-name> <machine-name>
例)
127.0.0.1 localhost.localdomain localhost 192.168.1.86 localhost.localdomain fedora16 ::1 localhost6.localdomain6 localhost6
カーネルパラメータの確認
必要なパラメータ
fs.aio-max-nr | 1048576 |
---|---|
fs.file-max | 6815744 |
kernel.shmall | 2097152 |
kernel.shmmax | 536870912 |
kernel.shmmni | 4096 |
kernel.sem | 250 32000 100 128 |
net.ipv4.ip_local_port_range | 9000 65500 |
net.core.rmem_default | 262144 |
net.core.rmem_max | 4194304 |
net.core.wmem_default | 262144 |
net.core.wmem_max | 1048586 |
fedora16の初期状態で
# /sbin/sysctl -a | grep fs.aio-max-nr fs.aio-max-nr = 65536 # /sbin/sysctl -a | grep fs.file-max fs.file-max = 204871 # /sbin/sysctl -a | grep kernel.shmall kernel.shmall = 2097152 # /sbin/sysctl -a | grep kernel.shmmax kernel.shmmax = 33554432 # /sbin/sysctl -a | grep kernel.shmmni kernel.shmmni = 4096 # /sbin/sysctl -a | grep kernel.sem kernel.sem = 250 32000 32 128 # /sbin/sysctl -a | grep net.ipv4.ip_local_port_range net.ipv4.ip_local_port_range = 32768 61000 # /sbin/sysctl -a | grep net.core.rmem_default net.core.rmem_default = 163840 # /sbin/sysctl -a | grep net.core.rmem_max net.core.rmem_max = 131071 # /sbin/sysctl -a | grep net.core.wmem_default net.core.wmem_default = 163840 # /sbin/sysctl -a | grep net.core.wmem_max net.core.wmem_max = 131071
こんな感じ。全然要件足りない。
# vi /etc/sysctl.conf
以下を追記。
fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 kernel.shmmni = 4096 # semaphores: semmsl, semmns, semopm, semmni kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default=262144 net.core.rmem_max=4194304 net.core.wmem_default=262144 net.core.wmem_max=1048586
反映する。
# /sbin/sysctl -p
/etc/security/limits.confの編集
# vi /etc/security/limits.conf
以下を追記。
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
/etc/pam.d/loginの編集
# vi /etc/pam.d/login
以下を追記
session required pam_limits.so
/etc/selinux/configの編集
# vi /etc/selinux/config
SELINUXを探して以下のように書き換える。
SELINUX=disabled
不足パッケージのインストール
いくつかのパッケージはすでに入っていると怒られたりした。
# yum install compat-libstdc++-33.i686 # yum install elfutils-libelf-devel # yum install glibc-devel.i686 # yum install ksh # yum install libaio # yum install libaio.i686 # yum install libaio-devel # yum install libaio-i686 # yum install libaio-devel.i686 # yum install libstdc++.i686 # yum install numactl-devel # yum install sysstat # yum install unixODBC # yum install unixODBC.i686 # yum install unixODBC-devel # yum install unixODBC-devel.i686
後で怒られたので以下もインストールする
# yum install binutils gcc gcc-c++ libstdc++-devel
グループ・ユーザの追加
意味は深く考えず、そのまま入力。
# groupadd oinstall # groupadd dba # groupadd oper # groupadd asmadmin # useradd -g oinstall -G dba,oper,asmadmin oracle # passwd oracle
インストールディレクトリの作成
db_1となっててその通り実行したが、 おそらくdbhome_1とした方が良いのではないかと思われる。
# mkdir /u01/app/oracle/product/11.2.0/dbhome_1 # mkdir -p /u01/app/oracle/product/11.2.0/dbhome_1 # chown -R oracle:oinstall /u01 # chmod -R 775 /u01
xhostの実行
成功しなかったっぽい?無視して先に進めた。
# xhost +<machine-name>
/etc/redhat-releaseの編集
# vi /etc/redhat-release
以下に書き換えて、詐称します。元のファイルはバックアップとっといた方が後で楽かも。
redhat release 5
~/.bashrcの編集
Oracleのホームディレクトリにある.bashrcを編集する。
$ vi /home/oracle/.bashrc
以下を追記する。各変数の値には注意。
# Oracle Settings TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_HOSTNAME=localhost.localdomain; export ORACLE_HOSTNAME ORACLE_UNQNAME=orcl; export ORACLE_UNQNAME ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME ORACLE_SID=orcl; export ORACLE_SID ORACLE_TERM=xterm; export ORACLE_TERM PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
インストーラの起動
Oracleユーザでインストーラを実行する。 Oracleユーザでデスクトップのログインしようとしたら先に進めなくなったので、別のユーザからsuで。 LANG=Cは前回やったときにインストーラが文字化けした教訓からやっておいた。
# su oracle $ unzip linux_11gR2_database_1of2.zip $ unzip linux_11gR2_database_2of2.zip $ export LANG=C $ /database/runInstaller
インストーラはほぼデフォルトで進めた。文字コードだけAL32UTF8に変えた。
pdksh
kshで逃げます。Ignoreする。
どうやら防げないエラーがあるらしい
http://fedoraforum.org/forum/showthread.php?t=247430 より
13. At some point during the installation you will likely get the following error:
Code:“Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk'”
Note I just used the default ORACLE Home of “dbhome_1.” I am not sure of how to fix this error, and it will prevent Enterprise Manager from working correctly. Click “Continue.” In the future if I figure out how to fix it I will edit this guide.
無視して続ける。
/etc/redhat-releaseの編集
# vi /etc/redhat-release
元に戻しておく。
Fedora release 16 (Verne)
/etc/oratabの作成
dbstartコマンドやdbshutコマンドで使う設定ファイルを作成する。
# vi /etc/oratab
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y
自動起動・終了
自動起動設定のサイトよりスクリプトを拝借しています。 詳細は上記リンクの
[2] 起動スクリプトを作成してOracleを起動します。
の項を参照。
Automating Database Startup and Shutdown on Linuxでも情報あるので見ておくと良いかも。
再起動してみる
# shutdown -r now
再起動後にemが繋がれば、大丈夫だと思われます。
途中であったエラーなど
なかなかできないと思っていろいろいじっていたら、気になることが結構あった。
emが繋がらない部分の解決
コマンドで起動しても一見正常に動いているように見えるが、繋がらない状態。
$ emctl start dbconsole Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0 Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved. http://localhost:1158/em/console/aboutApplication Starting Oracle Enterprise Manager 11g Database Control .... started. ------------------------------------------------------------------ Logs are generated in directory /u01/app/oracle/product/11.2.0/dbhome_1/localhost_orcl/sysman/log
検索結果2)を参考にログを見てみる。
$ vi /u01/app/oracle/product/11.2.0/dbhome_1/localhost_orcl/sysman/log/emagent.log
2012-04-30 09:30:32,210 Thread-3034716416 Starting Agent 10.2.0.4.2 from /u01/app/oracle/product/11.2.0/dbhome_1 (00701) 2012-04-30 09:30:32,217 Thread-3034716416 <Agent Startup> : Startup of HTTP LISTENER failure (00716)
起動失敗してるね。
$ vi /u01/app/oracle/product/11.2.0/dbhome_1/localhost_orcl/sysman/log/emagent.trc
2012-04-30 09:30:32,217 Thread-3034716416 ERROR http: snmehl_allocateListenerPort: failed to listen on all sockets for hostname and port 3938 2012-04-30 09:30:32,217 Thread-3034716416 ERROR http: nmehl_startHttpListener: failed to listen to HTTP(s) port for http://localhost:3938/emd/main 2012-04-30 09:30:32,217 Thread-3034716416 ERROR main: nmehl_startHttpListener failed starting http listener.
うーん、調べる3)と/etc/hostsの設定が悪いのでは。
# vi /etc/hosts
127.0.0.1 localhost.localdomain localhost 192.168.1.86 fedora16.localdomain fedora16 ::1 localhost6.localdomain6 localhost6
fedora16.localdomainじゃなくてlocalhost.localdomainにする。 自動起動で動作を確認したいので再起動する。
# shutdown -r now
しばし待つ。
$ vi /u01/app/oracle/product/11.2.0/dbhome_1/localhost_orcl/sysman/log/emagent.log
2012-04-30 09:36:41,433 Thread-3034794240 Starting Agent 10.2.0.4.2 from /u01/app/oracle/product/11.2.0/dbhome_1 (00701) 2012-04-30 09:36:41,817 Thread-3034794240 [Oracle Exadata Storage Server] InstanceProperty (MgmtIPAddr2) is marked OPTIONAL but is being used (00506) 2012-04-30 09:36:42,347 Thread-3034794240 [Load Balancer Switch] InstanceProperty (snmpTimeout) is marked OPTIONAL but is being used (00506) 2012-04-30 09:36:47,958 Thread-3034794240 EMAgent started successfully (00702)
おっ、起動したっぽい! 別PCからブラウザでアクセスしたところ、繋がった!