====== Linux版Oracle ======
[[http://www.oracle.com/jp/education/certification/11g-172549-ja.html|ORACLE MASTER Oracle Database 11g]]の学習用の環境を構築。あまりPCのレジストリなどを汚したくなかったので仮想環境上に作成。
===== 構成 =====
^ OS | [[http://fedoraproject.org/ja/|Fedora16 デスクトップ版]] |
^ ::: | ※ Ubuntu12.04LTS上のVMWare Playerで動作 |
^ アプリケーション | [[http://www.oracle.com/technetwork/jp/database/enterprise-edition/downloads/index.html|Oracle Database 11g Release 2]] |
^ ::: | Standard Edition, Standard Edition One, and Enterprise Edition |
^ ::: | (11.2.0.1.0) Linux x86 |
===== 参考資料 =====
* [[http://www.oracle-base.com/articles/11g/articles-11g.php|Oracle 11g Articles]] - インストール方法が英語だが書かれてる。
* [[http://www.oracle-base.com/articles/11g/oracle-db-11gr2-installation-on-fedora-16.php|Oracle Database 11g Release 2 (11.2) Installation On Fedora 16 (F16)]] - 主にこのページを見ながら作業した。
* [[http://www.asami.asia/tech/oracle/11g-install.html|Oracle Database 11g インストール]]
* [[http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05786-05/strt_stp.htm|Oracle Database管理者リファレンス]]
===== ダウンロード =====
Oracleから本体をダウンロードする。
linux_11gR2_database_1of2.zip
linux_11gR2_database_2of2.zip
===== /etc/hostsの編集 =====
# vi /etc/hosts
以下の行を追加する。
例)
127.0.0.1 localhost.localdomain localhost
192.168.1.86 localhost.localdomain fedora16
::1 localhost6.localdomain6 localhost6
fedora16.localdomainとした方が良いと思いますが、成功したものを変えるのがめんどいのでそのままにしてます。
===== カーネルパラメータの確認 =====
必要なパラメータ
^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 +
===== /etc/redhat-releaseの編集 =====
# vi /etc/redhat-release
以下に書き換えて、詐称します。元のファイルはバックアップとっといた方が後で楽かも。
redhat release 5
===== ~/.bashrcの編集 =====
.bash_profileの場合suコマンドによるログインで反映されなかった(([[http://www.itmedia.co.jp/enterprise/articles/0803/10/news012.html|UNIX処方箋]]))ので.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
===== 自動起動・終了 =====
[[http://www.server-world.info/query?os=Scientific_Linux_6&p=oracle11g&f=5|自動起動設定]]のサイトよりスクリプトを拝借しています。
詳細は上記リンクの
>[2] 起動スクリプトを作成してOracleを起動します。
の項を参照。
[[http://www.oracle-base.com/articles/linux/automating-database-startup-and-shutdown-on-linux.php|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
検索結果((https://forums.oracle.com/forums/thread.jspa?threadID=646062))を参考にログを見てみる。
$ 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 : 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.
うーん、調べる((https://forums.oracle.com/forums/thread.jspa?threadID=441474))と/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からブラウザでアクセスしたところ、繋がった!
===== EM =====
http://localhost:1158/em