====== 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