[[oracle]]

仮想マシンで作ってみた。
cpuは1cpu/1coreでメモリーは8GBとして、HDDはOSに1台(16GB)、
ORACLEのシステムに1台(8GB)、ORACLEのデータに2台(16GB)を用意してみた。
OS部分のHDDは/bootに512MB、スワップに8GB、残り7.6GBを/(root)に割り当てた。
ホスト名は o.chaperone.jp として固定IPを付与している。
OSはCentOS6で「CentOS-6.4-x86_64-minimal.iso」を使用。
&ref(2013y08m24d_025852264.png,nolink);
X環境なしで作ってます。
目的のORACLEの&color(red){SID};は&color(green){AERS};として、
&color(red){ORACLE_BASE};は&color(green){/opt/oracle};
&color(red){ORACLE_HOME};は&color(green){/opt/oracle/product/11.2/dbhome_1};とする

***下準備 [#t52d43af]
minimalでOS環境を作った後、selinuxは「&color(red){SELINUX=disabled};」として、iptablesは停止。
#code(nonumber){{
[root@o ~]# vi /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted
[root@o ~]# chkconfig iptables off
[root@o ~]# chkconfig ip6tables off
[root@o ~]# 
[root@o ~]# fdisk /dev/sd[bcd]                      *パーティション作成
[root@o ~]# mkfs  /dev/sd[bcd]1                     *フォーマット
[root@o ~]# vi /etc/fstab
 (中略)
/dev/sdb1   /opt  ext4 defaults 0 0
/dev/sdc1   /o1   ext4 defaults 0 0
/dev/sdd1   /o2   ext4 defaults 0 0
[root@o ~]# mkdir /o1 /o2; mount -a
[root@o ~]# yum update; reboot                      *一旦再起動
}}
***ユーザ作成 [#s03ecfae]
ORACLEを稼働させるユーザ・グループの作成。&color(green){groupadd};、&color(green){guseradd};のオプション&color(red){-r};はsystem accountとして作成させるため。あまり意味はない。
#code(nonumber){{
[root@o ~]# groupadd -r oinstall
[root@o ~]# groupadd -r dba
[root@o ~]# groupadd -r oracle
[root@o ~]# groupadd -r oper
[root@o ~]# useradd -r -g oinstall -G dba,oper -d /home/oracle -m oracle
[root@o ~]# vi ~oracle/.bash_profile                                       *環境変数を追加
 (中略)
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/11.2/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_UNQNAME=AERS                                                 *OracleEnterpriseManager向け
[root@o ~]# mkdir /opt/oracle; chown oracle:oinstall /opt/oracle; chmod -R 755 /opt/oracle
}}
&color(red){*注意:ユーザoracleのホームディレクトリ(/home/oracle)とは違う場所にoracleアプリケーションをインストールします};
***ORACLE11gのアプリ用意 [#c4bffc8b]
今回はダウンロードした評価版。zipファイル2枚組。これを&color(blue){/opt/src};に配置させ、解凍
#code(nonumber){{
[root@o ~]# mkdir /opt/src
[root@o ~]# (copy linux.x64_11gR2_database_1[2]of2.zip to /opt/src)
[root@o ~]# ls /opt/src
linux.x64_11gR2_database_1of2.zip  linux.x64_11gR2_database_2of2.zip
[root@o ~]# cd /opt/src
[root@o src]# unzip -q linux.x64_11gR2_database_1of2.zip               *yum install unzipが必要だった
[root@o src]# unzip -q linux.x64_11gR2_database_2of2.zip
[root@o src]# rm linux.x64_11gR2_database_*
[root@o src]# ls
database
[root@o src]# chown -R oracle:oinstall ./database
}}
***inventoryファイルの作成 [#l5ca7609]
#code(nonumber){{
[root@o ~]# cat <<__EOF__> /etc/oraInst.loc
inventory_loc=/opt/oracle/oraInventory
inst_group=oinstall
__EOF__
[root@o ~]#
[root@o ~]# chown oracle:oinstall /etc/oraInst.loc
[root@o ~]# chmod 664 /etc/oraInst.loc
}}
***ORACLEデータ配置場所の準備 [#sf60d757]
#code(nonumber){{
[root@o ~]# mkdir -p /o1/oradata; chown oracle:oinstall /o1/oradata
[root@o ~]# mkdir -p /o2/oradata; chown oracle:oinstall /o2/oradata
}}
***必須ソフトウエアのインストール [#g2223431]
#code(nonumber){{
[root@o ~]# yum groupinstall "Development tools"
[root@o ~]# yum install compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static libaio-devel \
 sysstat unixODBC unixODBC-devel \
 libaio.i686 libaio-devel.i686 glibc.i686 compat-libstdc++-33.i686 libgcc.i686 \
 libstdc++.i686 unixODBC.i686 unixODBC-devel.i686 wget
[root@o ~]#
}}
あとkshのpdkshが必要なのだがcentos6では提供されていない。なので、rpm rebuldにて作成
#code(nonumber){{
[root@o ~]# wget http://vault.centos.org/5.9/os/SRPMS/pdksh-5.2.14-37.el5_8.1.src.rpm
[root@o ~]# rpmbuild --rebuild pdksh-5.2.14-37.el5_8.1.src.rpm
[root@o ~]# yum localinstall rpmbuild/RPMS/x86_64/pdksh-5.2.14-37.el6.1.x86_64.rpm
}}
***OS調整 [#t421ee34]
oracleユーザのリソース制限を調整として、&color(green){/etc/security/limits.conf};に下記を追加
#code(nonumber){{
[root@o ~]# vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
}}
kernelパラメータの調整として、&color(green){/etc/sysctl.conf};に下記を追加
#code(nonumber){{
[root@o ~]# vi /etc/sysctl.conf
kernel.sem = 250 32000 100 128                *「semmsl semmns semopm semmni」の順。従来値 kernel.sem = 250 32000 32 128
fs.file-max = 6815744                         *従来値 fs.file-max = 798843  (798,843 から 6,815,744 へ)
net.ipv4.ip_local_port_range = 9000 65500     *使えるport範囲。従来値 net.ipv4.ip_local_port_range = 32768 61000
net.core.rmem_default = 262144                *受信ソケットバッファの既定サイズ 従来値 net.core.rmem_default = 229376
net.core.rmem_max =    4194304                *受信ソケットバッファの最大サイズ 従来値 net.core.rmem_max =     229376
net.core.wmem_default = 262144                *送信ソケットバッファの既定サイズ 従来値 net.core.wmem_default = 229376
net.core.wmem_max =    1048576                *送信ソケットバッファの最大サイズ 従来値 net.core.wmem_max =     229376
fs.aio-max-nr  =       1048576                *非同期IOの最大値                 従来値 fs.aio-max-nr =          65536
}}
***インストール用レスポンスファイルを調整 [#b277e37a]
ここはX環境、GUI環境なしでORACLEのインストールを試みている。っで、GUIなしにインストールするには
GUI画面内で問われる値を予め書いたレスポンスファイルを用意して、コマンドラインでインストールする形になる。
#code(nonumber){{
[root@o ~]# su - oracle
[oracle@o ~]$ cp /opt/src/database/response/*.rsp /tmp
[oracle@o ~]$ vi /tmp/db_install.rsp
}}
&color(green){/tmp/db_install.rsp};ファイルの調整箇所
oracle.install.option=INSTALL_DB_SWONLY   &color(red){*ORACLEアプリケーションのみのインストールします};
ORACLE_HOSTNAME=o.chaperone.jp
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/opt/oracle/oraInventory
SELECTED_LANGUAGES=ja,en
ORACLE_HOME=/opt/oracle/product/11.2/dbhome_1
ORACLE_BASE=/opt/oracle
oracle.install.db.InstallEdition=SE
oracle.install.db.isCustomInstall=false
oracle.install.db.customComponents=     &color(red){*不要なコンポーネントは削除};
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true

***インストール [#h384b240]
#code(nonumber){{
[root@o ~]# su - oracle
[oracle@o ~]$ /opt/src/database/runInstaller -silent -responseFile /tmp/db_install.rsp
}}
実行後すぐにプロンプトが返ってくるので失敗かな?っと思うのだが、間もなく
&color(red){/opt/oracle/oraInventory/logs/};にあるログを見てねと言われる。それを読むとインストール要件的に不足している箇所を知らせてくれる。これを読んで再調整すればいいのかと。だが、libaioでi386版を入れてねと言われるのだが、i686として32bit版は入れている。実際のファイルを読んで確認しているのではなく、yumのコンテンツカタログを見ているのかも。。。
ともあれ、最終的には下記のような指示がでる。
#code(nonumber){{
次の構成スクリプトは、rootユーザーとして実行する必要があります。
 #!/bin/sh
 #実行するrootスクリプト

/opt/oracle/product/11.2/dbhome_1/root.sh
構成スクリプトを実行するには、次のようにします:
         1. ターミナル・ウィンドウを開きます
         2. rootとしてログインします
         3. スクリプトを実行します
         4. このウィンドウに戻り、[Enter]キーを押して続行します

Successfully Setup Software.
}}
この文書の通り、rootでスクリプトを実行してインストール作業は完了。
#code(nonumber){{
[root@o ~]# /opt/oracle/product/11.2/dbhome_1/root.sh
Check /opt/oracle/product/11.2/dbhome_1/install/root_o.chaperone.jp_2013-08-24_11-25-56.log for the output of root script
[root@o ~]#
}}
次に、リスナー設定、およびインスタンスの作成になる。

***リスナー設定(listener.ora) [#jab63c8d]
netcaコマンドを使ってGUIから設定した方がいいかも。
一応コマンドラインからも設定ができてレスポンスファイル /tmp/netca.rsp を調整して、、が調整せず、そのままでも行ける。
#code(nonumber){{
[oracle@o ~]$ grep -i '=' /tmp/netca.rsp |grep -v '#'
RESPONSEFILE_VERSION="11.2"
CREATE_TYPE="CUSTOM"
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
[oracle@o ~]$
[oracle@o ~]$ ls -CF $ORACLE_HOME/network/admin/
samples/ shrept.lst
[oracle@o ~]$
}}
そして、netcaコマンドを使ってリスナー作成と共に実行。
#code(nonumber){{
[oracle@o ~]$ netca /silent /responsefile /tmp/netca.rsp      *-silent -responsefileではなく/silent /responsefileであるとに留意

コマンドライン引数の解析:
    パラメータ "silent" = true
    パラメータ "responsefile" = /tmp/netca.rsp
コマンドライン引数の解析が終了しました。
Oracle Net Servicesの構成:
プロファイルの構成が完了しました。
Oracle Net Listenerの起動:
    リスナーの制御の実行:
      /opt/oracle/product/11.2/dbhome_1/bin/lsnrctl start LISTENER
    リスナーの制御が完了しました。
    リスナーの起動に成功しました。
リスナーの構成が完了しました。
Oracle Net Servicesの構成に成功しました。終了コードは次のとおりです。0
[oracle@o ~]$
[oracle@o ~]$ ls -CF $ORACLE_HOME/network/admin/
listener.ora  samples/  shrept.lst  sqlnet.ora
[oracle@o ~]$
}}
となる。

一方で、 listener.ora ファイルを直接書いて起動させてもOK
#code(nonumber){{
[oracle@o ~]$ cat <<__EOF__> $ORACLE_HOME/network/admin/listener.ora
LISTENER =
 (ADDRESS_LIST=
  (ADDRESS=(PROTOCOL=tcp)(HOST=o)(PORT=1521))
  (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))
 )
__EOF__
}}
&color(red){注意:listener.oraはインデントに注目。インデントが少ないとリスナーが起動しない};
っでリスナーを動かす。
#code(nonumber){{
[oracle@o ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 24-AUG-2013 17:53:49

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Starting /opt/oracle/product/11.2/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /opt/oracle/product/11.2/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/o/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=o.chaperone.jp)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=o)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                24-AUG-2013 17:53:50
Uptime                    0 days 0 hr. 0 min. 1 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/11.2/dbhome_1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/o/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=o.chaperone.jp)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))
The listener supports no services
The command completed successfully
[oracle@o ~]$
}}


***ORACLEインスタンスの構築 [#tba7c1e4]
最後にデータベースを作る訳であるが、簡単にdbcaでGUI画面からの方が楽。Xサーバが利用できるのなら、X画面を飛ばして実行すべきかも。
でも、やっぱりここではコマンドラインから実施を試みる。
調整するファイルはテンプレートファイルのみ。レスポンスファイル/tmp/dbca.rspも調整すべきかもしれないが、コマンドラインで指定可能なので使わなかった。

-テンプレートファイル
作成するデータベースのパラメータを記載したファイル。標準で &color(green){$ORACLE_HOME/assistants/dbca/templates};に
「データ・ウェアハウス」向けの&color(red){Data_Warehouse.dbc};
「汎用またはトランザクション処理」向けの&color(red){General_Purpose.dbc};
がある。
&color(red){*};留意:&color(red){Data_Warehouse};と&color(red){General_Purpose};の違いだけど、&color(red){初期化パラメータ ''star_transformation_enabled''};が有効になっているのが&color(red){Data_Warehouse};で、それ以外のパラメータは同じみたい
ここでは &color(red){Data_Warehouse.dbc}; をベースにテンプレートファイル(&color(blue){AERS.dbc};)を作ります。
データベースファイルは /o1/oradata/&color(blue){AERS}; に配置。(&color(blue){AERS};はSIDです)
コントロールファイルは /o1/oradata/&color(blue){AERS}; と共に /''o2''/oradata/&color(blue){AERS}; にも配置。
REDOログもミラーさせたいので /o1/oradata/&color(blue){AERS}; と共に /''o2''/oradata/&color(blue){AERS}; にも配置。
そんな感じで調整
#code(nonumber){{
[oracle@o ~]$ cd $ORACLE_HOME/assistants/dbca/templates
[oracle@o templates]$ cp Data_Warehouse.dbc AERS.dbc
[oracle@o templates]$ vi AERS.dbc
}}
修正した箇所(勝手なフォーマット)
#code(nonumber){{
InitParamAttributes
 InitParams
  initParam | name="control_files" values="'/o1/oradata/AERS/control01.ctl','/o2/oradata/AERS/control02.ctl'"
 StorageAttributes
  DataFiles | Tablespace="SYSTEM"   | /o1/oradata/AERS/system01.dbf
  DataFiles | Tablespace="SYSAUX"   | /o1/oradata/AERS/sysaux01.dbf
  DataFiles | Tablespace="UNDOTBS1" | /o1/oradata/AERS/undotbs01.dbf
  DataFiles | Tablespace="USERS"    | /o1/oradata/AERS/users01.dbf
  TempFiles | Tablespace="TEMP"     | /o1/oradata/AERS/temp01.dbf
  ControlfileAttributes | name="control01.ctl" | filepath="/o1/oradata/AERS/"
  ControlfileAttributes | name="control02.ctl" | filepath="/o2/oradata/AERS/"
  RedoLogGroupAttributes id=1
     <member ordinal="0" memberName="redo01.log" filepath="/o1/oradata/AERS/"/>
     <member ordinal="1" memberName="redo11.log" filepath="/o2/oradata/AERS/"/>
  RedoLogGroupAttributes id=2
     <member ordinal="0" memberName="redo02.log" filepath="/o1/oradata/AERS/"/>
     <member ordinal="1" memberName="redo12.log" filepath="/o2/oradata/AERS/"/>
  RedoLogGroupAttributes id=3
     <member ordinal="0" memberName="redo03.log" filepath="/o1/oradata/AERS/"/>
     <member ordinal="1" memberName="redo13.log" filepath="/o1/oradata/AERS/"/>
}}

そして、データベース作成へ
#code(nonumber){{
[oracle@o ~]$ dbca -silent -createDatabase -templateName AERS.dbc \
-gdbname AERS -sid AERS -responseFile NO_VALUE \
-characterSet AL32UTF8 -nationalCharacterSet AL16UTF16  \
-memoryPercentage 30 -emConfiguration LOCAL \
-sysPassword SYS \
-systemPassword SYSTEM \
-dbsnmpPassword DBSNMP \
-sysmanPassword SYSMAN
データベース・ファイルのコピー中
1%完了
3%完了
37%完了
Oracleインスタンスの作成および起動中
40%完了
45%完了
50%完了
55%完了
56%完了
60%完了
62%完了
データベース作成の完了
66%完了
70%完了
73%完了
85%完了
96%完了
100%完了
詳細はログ・ファイル"/opt/oracle/cfgtoollogs/dbca/AERS/AERS.log"を参照してください。
[oracle@o ~]$
[oracle@o ~]$ tail /opt/oracle/cfgtoollogs/dbca/AERS/AERS.log
DBCA_PROGRESS : 85%
DBCA_PROGRESS : 96%
DBCA_PROGRESS : 100%
データベースの作成が完了しました。詳細は、次の場所にあるログ・ファイルを参照してください:
/opt/oracle/cfgtoollogs/dbca/AERS。
データベース情報:
グローバル・データベース名:AERS
システム識別子(SID):AERSDatabase ControlのURLはhttps://o.chaperone.jp:1158/emです

管理リポジトリは、Enterprise Managerデータが暗号化されるセキュア・モードで配置されています。暗号化キーはファイル/opt/oracle/product/11.2/dbhome_1/o.chaperone.jp_AERS/sysman/config/emkey.oraに配置されています。このファイルが失われると暗号化データを使用できなくなるため 、このファイルは必ずバックアップしてください。
管理リポジトリは、Enterprise Managerデータが暗号化されるセキュア・モードで配置されています。
暗号化キーはファイル/opt/oracle/product/11.2/dbhome_1/o.chaperone.jp_AERS/sysman/config/emkey.oraに配置されています。
このファイルが失われると暗号化データを使用できなくなるため 、このファイルは必ずバックアップしてください。
[oracle@o ~]$
}}

***自動起動 [#o3c75e8c]
まず、/etc/oratabを調整
#code(nonumber){{
[oracle@o ~]$ vi /etc/oratab
AERS:/opt/oracle/product/11.2/dbhome_1:Y
[oracle@o ~]$
}}
として、、、、あれぇ?起動スクリプトが見当たらない.....
/database/doc/server.112/e10839/strt_stp.htmにそれらしきことはあるのだが、、、基本databaseのみリスナーやOEMについて言及はない。
なので自作
#code(nonumber){{
[root@o ~]# vi /etc/init.d/oratab
#!/bin/bash
#
# dbora       Startup script for the ORACLE database
#
# chkconfig: 35 85 15
#

export ORACLE_HOME=/opt/oracle/product/11.2/dbhome_1
ORA_OWNER=oracle

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
        echo "Oracle startup: cannot start"
        exit
fi

case "$1" in
        start)
                # Start the Oracle databases:
                echo "start database"
                su - $ORA_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
                # Start emctl
                echo ""
                echo "start OEM"
                su - $ORA_OWNER -c "$ORACLE_HOME/bin/emctl start dbconsole"

                touch /var/lock/subsys/dbora
                ;;

        stop)
                # Stop the Oracle databases:
                echo "stop database"
                su - $ORA_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
                # Stop emctl
                echo ""
                echo "stop OEM"
                su - $ORA_OWNER -c "$ORACLE_HOME/bin/emctl stop dbconsole"

                rm -f /var/lock/subsys/dbora
                ;;
        restart)
                $0 stop
                $0 start
                ;;   
        status)
                if [ -f /var/lock/subsys/dbora ]; then
                echo $0 started.
                else
                echo $0 stopped.
                fi
                ;;
        *)
                echo "usage: dbora {start|stop|restart|status}"
                exit 1
esac

exit 0
[root@o ~]#
[root@o ~]# chmod 755 /etc/init.d/dbora
[root@o ~]# chkconfig --add dbora
[root@o ~]# chkconfig --list dbora
dbora           0:off   1:off   2:off   3:on    4:off   5:on    6:off
[root@o ~]#
}}
っでためしに実行
#code(nonumber){{
[root@o ~]# /etc/init.d/dbora start
start database
Processing Database instance "AERS": log file /opt/oracle/product/11.2/dbhome_1/startup.log

start OEM
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://o.chaperone.jp:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control .......... started.
------------------------------------------------------------------
Logs are generated in directory /opt/oracle/product/11.2/dbhome_1/o.chaperone.jp_AERS/sysman/log
[root@o ~]#
}}
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS