【手順】Oracle12cサイレントインストール
VirtualBoxにOracle 12c をサイレントインストールしたときのメモ。基本的にはリファレンス通りの手順ですが、素人ゆえ自分用に加えた補足も残しておきたく。
環境
・VIrtualBox 6.0
・RedHat6.7
・Oracle 12c EE
事前準備
ダウンロードとインストール手順は割愛。バージョンは6.0です。
OSはRedHat6.7。とある業務でこのバージョンのRHEL+12cという要件があったので、やや古めのバージョンとなっています。6.7にはsystemctl
コマンドがないんですね。
12cはここからダウンロードしました。
手順
・カーネルパラメータの設定
# vi /etc/sysctl.conf fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 kernel.panic_on_oops = 1 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500 /*設定反映*/ # /sbin/sysctl -p
・リソース制限の設定
# vi /etc/security/limits.conf oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 oracle hard memlock 134217728 oracle soft memlock 134217728
・OSグループ、OSユーザ作成
/*OSグループ作成*/ # groupadd -g 54321 oinstall # groupadd -g 54322 dba # groupadd -g 54323 oper # groupadd -g 54324 backupdba # groupadd -g 54325 dgdba /*OSユーザ作成*/ # useradd -u 54321 -g oinstall -G dba,backupdba,dgdba,oper oracle /*oracleユーザのパスワード設定*/ # passwd oracle
・90-nproc.conf設定
/*この部分を*/ * soft nproc 1024 /*このように変更*/ * - nproc 16384
・SELinux無効化
# vi /etc/selinux/config SELINUX=disabled # reboot
再起動後、getenforce
コマンドでDisabled
が表示されることを確認
・ファイアウォール無効化
# service iptables status # service iptables stop # chkconfig iptables off # service iptables status
# su - oracle $ mkdir -p /home/oracle/scripts $ cat > /home/oracle/scripts/setEnv.sh <<EOF # Oracle Settings export TMP=/tmp export TMPDIR=\$TMP export ORACLE_HOSTNAME=mylocal.domain export ORACLE_UNQNAME=cdb1 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=\$ORACLE_BASE/product/12.1.0.2/dbhome_1 export ORA_INVENTORY=/u01/app/oraInventory export ORACLE_SID=cdb1 export PDB_NAME=pdb1 export DATA_DIR=/u02/oradata export PATH=/usr/sbin:/usr/local/bin:\$PATH export PATH=\$ORACLE_HOME/bin:\$PATH export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib EOF $ echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile
・インストールメディアのマウント
virtual box のメニューから、RHEL6.7のインストールメディアをマウントしておく。
# mount -t iso9660 /dev/cdrom /mnt # ls /mnt # vi /etc/yum.repos.d/dvd.repo [dvd] name=dvd baseurl=file:///mnt enabled=1 gpgcheck=0 gpgkey=file:///mnt//RPM-GPG-KEY-redhat-release /*dvd以外のリポジトリを無効化*/ # cd /etc/yum.repos.d # vi <リポジトリ名> enabled=0 # yum clean all # yum repolist dvd のみ出力されることを確認
・パッケージのインストール
yum
で12cに必要なパッケージをインストール
・ソフトウェアインストール用のディレクトリ作成
# mkdir -p /u01/app/oracle/product/12.1.0.2/db_1 # chown -R oracle:oinstall /u01 # chmod -R 775 /u01
これでインストール準備は整いました。次の手順からOracleソフトウェアインストールと、DB作成の手順になります。
・インストールパッケージの展開など
/*/home/oracleにzipをscpしておく*/ # su - oracle $ unzip linuxamd64_12102_database_1of2.zip $ unzip linuxamd64_12102_database_2of2.zip
パッケージの配置場所はどこでもいいはず。2つのzipをunzip
すると、その場所にdatabase
というディレクトリが作成されます。
・レスポンスファイル作成
/home/oracle/response にサンプル db_install.rsp があるのでコピーして自分用のレスポンスファイルを作成します。参考までに今回使用したレスポンスファイルは次のようなものです。(明示的に値を設定した項目のみ抜粋)
レスポンスファイル
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.1.0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=your.domain
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
oracle.install.db.BACKUPDBA_GROUP=dba
oracle.install.db.DGDBA_GROUP=dba
oracle.install.db.KMDBA_GROUP=dba
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.PDBName=pdb1
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=512
oracle.install.db.config.starterdb.password.ALL=YourePassword
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/app/oracle/oradata
DECLINE_SECURITY_UPDATES=true
/*パッケージを展開したディレクトリに移動*/ $ cd /home/oracle/database $ ./runInstaller -ignorePrereq -waitforcompletion -silent \ -responseFile /home/oracle/database/response/db_install.rsp \ oracle.install.option=INSTALL_DB_SWONLY \ ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=${ORA_INVENTORY} \ SELECTED_LANGUAGES=en,en_GB \ ORACLE_HOME=${ORACLE_HOME} \ ORACLE_BASE=${ORACLE_BASE} \ oracle.install.db.InstallEdition=EE \ oracle.install.db.OSDBA_GROUP=dba \ oracle.install.db.OSBACKUPDBA_GROUP=dba \ oracle.install.db.OSDGDBA_GROUP=dba \ oracle.install.db.OSKMDBA_GROUP=dba \ oracle.install.db.OSRACDBA_GROUP=dba \ SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \ DECLINE_SECURITY_UPDATES=true
どや。
成功すると、次のようなメッセージが現れるのでrootユーザになってから実行します。
rootユーザーとして次のスクリプトを実行します: 1. /u01/app/oraInventory/orainstRoot.sh 2. /u01/app/oracle/product/12.1.0.2/dbhome_1/root.sh
・初期化パラメータファイル
これを作らずに進み、DBを起動させようとしたら「初期化パラメータファイルがありません。」というエラーになりました。自動的に作成されるものではないのか。。
$ cd $HOME_ORACLE/dbs/ /*デフォルトで作成されているinit.oraをinitcdb1.oraとしてコピー*/ /*コピー後のファイル名はSID名に同じ*/ $ cp init.ora initcdb1.ora $ vi initcdb1.ora <ORACLE_BASE>の部分を自分の環境に合わせて編集
initcdb1.ora
db_name='ORCL'
memory_target=1G
processes = 150
audit_file_dest='/u01/app/oracle/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
db_recovery_file_dest_size=2G
diagnostic_dest='/u01/app/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files = (ora_control1, ora_control2)
compatible ='11.2.0'
・データベース作成
# su - oracle $ dbca -silent -createDatabase -templateName General_Purpose.dbc \ -gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -sysPassword SysPassword1 \ -systemPassword SysPassword1 \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName ${PDB_NAME} \ -pdbAdminPassword PdbPassword1 \ -databaseType MULTIPURPOSE \ -totalMemory 2000 \ -storageType FS \ -datafileDestination "${DATA_DIR}" \ -redoLogFileSize 50 \ -emConfiguration NONE \ -ignorePreReqs
完成!
psqlで接続できるようになります。サーバとクライアントが同じマシン上にあるのですが、一応リスナー経由でもアクセスできることを確認済みです。listener.oraとtnsname.oraも自動作成されなかったので、$ORACLE_HOME/network/admin/sample 配下にあるサンプルをコピって自作しました。
悩み
VirtualBoxでGuest Additionsの設定がうまくできません。。事情によりVirtualBoxはインターネット接続ができない環境に置かれているのですが、kernel-headerが合わないとか、古いとか、そんな感じのエラーをずっと解決できずにおります。どうしたらいいの。。