====== CentOSのKickStartでOracleをインストールする ====== ===== 条件 ===== * KickStartの%postスクリプトでOracleXEのインストールを行う。 * OracleXEは11gを使用する。 * OracleXEはデータベースのキャラクタセットJA16SJISTILDEでインスタンス再作成を行う。 ===== ファイル構成 ===== □isolinux └□orainst  ├oracle-xe-11.2.0-1.0.x86_64.rpm.zip  ├oracle11gxe-recreate-database.sh  ├oracle11gxe-silent-install.sh  ├sql-create-database.sql  ├sql-drop-database.sql  ├bash_profile  ├xe.rsp  ├initORCL.ora  ├□etc  │├□init.d  ││└oracle-xe  │└□sysconfig  │ └iptables  ├□config  │└□script  │ ├sqlplus.sh  │ ├backup.sh  │ ├restore.sh  │ ├stopall.sh  │ ├startdb.sh  │ └stopdb.sh  └□network   └□admin    └listener.ora * config/script/*.sh の中身は、s/ORACLE_SID=XE/ORACLE_SID=ORCL/gで置換した結果。 * etc/init.d/oracle-xe の中身は、s/ORACLE_SID=XE/ORACLE_SID=ORCL/gで置換した結果。 ===== %post --nochrootで実行するコマンド ===== [[centos:kickstart:kscfg|CentOS Kickstart 設定ファイル]]から抜粋です。 %post --nochroot #!/bin/sh set -x -v exec 1>/mnt/sysimage/root/kickstart-post-nochroot.log 2>&1 echo "==> copying files..." cp -r /mnt/source/postinstall/* /mnt/sysimage/root/ %end ===== %postで実行するコマンド ===== [[centos:kickstart:kscfg|CentOS Kickstart 設定ファイル]]から抜粋です。 # create working directory mkdir /tmp/orainst # create logging directory mkdir /tmp/orainst/logs cd /tmp/orainst cp -r /root/orainst/* . bash /tmp/orainst/oracle11gxe-silent-install.sh 2>&1 | tee /tmp/orainst/logs/oraxeinstall.log ===== oracle11gxe-recreate-database.sh ===== oracle.dbaユーザで実行する必要があります。 また、パスワードはマスクかけています。 #!/bin/bash # drop instance cd /tmp/orainst/ export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=${ORACLE_BASE}/product/11.2.0/xe export ORACLE_SID=XE $ORACLE_HOME/bin/sqlplus /nolog @sql-drop-database.sql # create database cp -r /tmp/orainst/initORCL.ora /oradata/orcl/conf/initORCL.ora export ORACLE_SID=ORCL $ORACLE_HOME/bin/sqlplus /nolog @sql-create-database.sql cd /u01/app/oracle/product/11.2.0/xe/oracore/ $ORACLE_HOME/bin/orapwd file=orapwORCL password=???????????? $ORACLE_HOME/bin/lsnrctl stop cp -r /tmp/orainst/network/admin/listener.ora $ORACLE_HOME/network/admin/ $ORACLE_HOME/bin/lsnrctl start cp -rf /tmp/orainst/config/scripts/*.sh $ORACLE_HOME/config/scripts/ exit ===== oracle11gxe-silent-install.sh ===== #!/bin/bash cd /tmp/orainst unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip # setup silent install settings mv -f /root/orainst/xe.rsp /tmp/orainst/Disk1/response/xe.rsp mv -f /root/orainst/hosts /etc/hosts # install oracle xe rpm -ivh /tmp/orainst/Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm /etc/init.d/oracle-xe configure responseFile=/tmp/orainst/Disk1/response/xe.rsp # create new instance data directory mkdir /oradata mkdir /oradata/orcl mkdir /oradata/orcl/conf mkdir /oradata/orcl/dbf mkdir /oradata/orcl/dump mkdir /oradata/orcl/dump/adump mkdir /oradata/orcl/dump/bdump mkdir /oradata/orcl/dump/cdump mkdir /oradata/orcl/dump/udump chown -R oracle.dba /oradata chmod -R 775 /oradata chmod -R 777 /tmp/orainst # drop database -> create database sudo -u oracle bash /tmp/orainst/oracle11gxe-recreate-database.sh # .profile cat /tmp/orainst/bash_profile >> /etc/profile # oracle-xe service cp -rf /tmp/orainst/etc/init.d/oracle-xe /etc/init.d/oracle-xe # iptables setting cp -rf /tmp/orainst/etc/sysconfig/iptables /etc/sysconfig/iptables ===== sql-create-database.sql ===== パスワードはマスクかけています。 connect SYS/???????? as sysdba startup nomount pfile='/oradata/orcl/conf/initORCL.ora' create database ORCL logfile group 1 ('/oradata/orcl/dbf/redo1.dbf') size 32M, group 2 ('/oradata/orcl/dbf/redo2.dbf') size 32M, group 3 ('/oradata/orcl/dbf/redo3.dbf') size 32M character set JA16SJISTILDE national character set utf8 datafile '/oradata/orcl/dbf/system.dbf' size 240M autoextend on next 16M maxsize unlimited extent management local sysaux datafile '/oradata/orcl/dbf/sysaux.dbf' size 48M autoextend on next 8M maxsize unlimited undo tablespace undo datafile '/oradata/orcl/dbf/undo.dbf' size 48M autoextend on default temporary tablespace temp tempfile '/oradata/orcl/dbf/temp.dbf' size 8M autoextend on; @/u01/app/oracle/product/11.2.0/xe/rdbms/admin/catalog.sql @/u01/app/oracle/product/11.2.0/xe/rdbms/admin/catblock.sql @/u01/app/oracle/product/11.2.0/xe/rdbms/admin/catproc.sql @/u01/app/oracle/product/11.2.0/xe/rdbms/admin/catoctk.sql connect SYSTEM/????????? @/u01/app/oracle/product/11.2.0/xe/sqlplus/admin/pupbld.sql @/u01/app/oracle/product/11.2.0/xe/sqlplus/admin/help/hlpbld.sql helpus.sql connect SYS/?????????? as sysdba; create spfile from pfile='/oradata/orcl/conf/initORCL.ora'; quit ===== sql-drop-database.sql ===== パスワードはマスクかけています。 connect SYS/????????? as sysdba shutdown abort startup restrict mount drop database; quit ===== initORCL.ora ===== db_name='ORCL' control_files=/oradata/orcl/dbf/control.dbf' audit_file_dest=/oradata/orcl/dump/adump core_dump_dest=/oradata/orcl/dump/cdump dispatchers='(PROTOCOL=TCP)' shared_pool_size=128M undo_management='AUTO' undo_tablespace='UNDO' ===== listener.ora ===== # listener.ora Network Configuration File: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = ORCL) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe) (PROGRAM = ORCL) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) ) ) DEFAULT_SERVICE_LISTENER = (XE) ===== xe.rsp ===== パスワードはマスクかけています。 ############################################################################### # # # HTTP port that will be used to access APEX admin page # # Default : 8080 # # # ############################################################################### ORACLE_HTTP_PORT=8090 ############################################################################### # # # TNS port that will be used to configure listener # # Default : 1521 # # # ############################################################################### ORACLE_LISTENER_PORT=1521 ############################################################################### # # # Passwords can be supplied for the following two schemas in the # # starter database: # # SYS # # SYSTEM # # # ############################################################################### ORACLE_PASSWORD=???????????? ############################################################################### # # # Passwords can be supplied for the following two schemas in the # # starter database: # # SYS # # SYSTEM # # # # ORACLE_CONFIRM_PASSWORD should be same as ORACLE_PASSWORD # # # ############################################################################### ORACLE_CONFIRM_PASSWORD=manager ############################################################################### # # # To start/stop listener and database instance up on system boot # # # ############################################################################### ORACLE_DBENABLE=y ===== bash_profile ===== export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=${ORACLE_BASE}/product/11.2.0/xe export ORACLE_SID=ORCL export ORACLE_BASE=/u01/app/oracle export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib/:/lib:/usr/lib export NLS_LANG=Japanese_Japan.AL32UTF8 ===== iptables ===== Oracleだけの場合は、1521のみで大丈夫ですが、他のアプリケーションでも外部からの接続がある場合は、追加しなければなりません。 # Generated by iptables-save v1.4.7 on Tue Feb 26 15:06:43 2013 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [50:5400] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 1521 -j ACCEPT -A INPUT -p udp -m udp --dport 1521 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Tue Feb 26 15:06:43 2013 ====== 参考サイト ====== * Oracle Database 11g XE インストール - Edo::World::Blog * http://blog.livedoor.jp/edworld/archives/1535387.html * Silent Installation of Oracle 11g R2 64 Bit – Express Edition on Public Cloud - cloudcreo * http://blog.cloudcreo.com/?p=1378 * OracleXEでJA16SJISの利用 Ubuntu環境編 * http://www.orchid.halfmoon.jp/wiki/ora10gxe_03.html * Oracle11gXE - freespeedo's blog * http://freespeedo.blog.fc2.com/blog-entry-1.html