サーバエンジニアになりたい無職の生活

元メジャー通信技術のマイナーエンジニアで今はサーバエンジニアになろうかなと思ってる無職ですが

CentOS6.7にOracle Database 12cのインストールメモ

12c DBA bronze勉強のため
VMware上のCentOS6.7にOracle Database 12cをインストールした時のメモ


環境
CentOS 6.7 64bit(HDD 20GB、メモリ2GB、Desktop)
Oracle Database 12c Release 1 (12.1.0.2.0) - Enterprise Edition
WMware Workstation 12 Player


注意点
Oracle Databaseは64bitなので、OSも64bitを用意
Oracle Databaseのインストールにはマシン要件があるので、満たすように仮想マシンを設定する
 要件みたさないと、インストールプロセスが進められないはず
・下記手順では、インストールプロセスの前提条件チェックの検証結果を「すべて無視」にしているので良くない
・正式な手順は下記にあるのかなと思うけど、読んでない
 https://docs.oracle.com/cd/E57425_01/121/nav/portal_11.htm


手順
1. Oracle Databaseの事前準備
2. OSの事前準備
3. インストール用アカウント作成
4. インストールディスクのマウント
5. 環境変数の設定
6. インストール
7. 動作確認


1. Oracle Databaseの事前準備
Oracle Technology Network」からLinux用のzipファイルを2つダウンロードする。
http://www.oracle.com/technetwork/jp/database/enterprise-edition/downloads/index.html

解凍して1つのフォルダにまとめてiso形式にする(ImgBurnを使用)
f:id:girochinful:20151226232106j:plain


2. OSの事前準備
メモリ、スワップ、残ディスク容量を確認しておく。

メモリ、スワップ領域→2GBだから大丈夫だろう


[root@localhost ~]# cat /proc/meminfo
MemTotal: 2039004 kB
MemFree: 1404700 kB
...
SwapTotal: 2097148 kB
...

残ディスク容量→13GB残っているから大丈夫だろう


[root@localhost ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 18G 4.1G 13G 26% /
tmpfs tmpfs 996M 228K 996M 1% /dev/shm
/dev/sda1 ext4 477M 42M 410M 10% /boot


必要なパッケージ入れる
パッケージ足りないと「前提条件チェック」で警告が出る

PackageDescription
compat-libcap1-1.10Library for getting and setting POSIX.1e capabilities
compat-libstdc++-33-3.2.3Compatibility standard C++ libraries
libstdc++-devel-4.4.4Header files and libraries for C++ development
gcc-4.4.4Various compilers (C, C++, Objective-C, Java, ...)
gcc-c++-4.4.4C++ support for GCC
kshThe Original ATT Korn Shell
libaio-devel-0.3.107Development files for Linux-native asynchronous I/O access


[root@localhost ~]# yum install compat-libcap1-1.10 compat-libstdc++-33 libstdc++-devel gcc gcc-c++ ksh libaio-devel

===================================================================================================================
パッケージ アーキテクチャ バージョン リポジトリー 容量
===================================================================================================================
インストールしています:
compat-libcap1 x86_64 1.10-1 base 17 k
compat-libstdc++-33 x86_64 3.2.3-69.el6 base 183 k
gcc x86_64 4.4.7-16.el6 base 10 M
gcc-c++ x86_64 4.4.7-16.el6 base 4.7 M
ksh x86_64 20120801-28.el6_7.3 updates 760 k
libaio-devel x86_64 0.3.107-10.el6 base 13 k
libstdc++-devel x86_64 4.4.7-16.el6 base 1.6 M
依存性関連でのインストールをします。:
cloog-ppl x86_64 0.15.7-1.2.el6 base 93 k
cpp x86_64 4.4.7-16.el6 base 3.7 M
mpfr x86_64 2.4.1-6.el6 base 157 k
ppl x86_64 0.10.2-11.el6 base 1.3 M

トランザクションの要約
===================================================================================================================
インストール 11 パッケージ

総ダウンロード容量: 23 M
インストール済み容量: 56 M


3. インストール用アカウント作成
oracle」というアカウント作成して、下記のグループに参加させる。
アカウント名、グループ名、uid、gidは「白本」を参考にした。
下から3グループ(backupdba以降)は12cから有効な管理者グループらしい。

グループ名役割
oinstallソフトウェアの所有者であるOracleインベントリグループ
dbaデータベースの管理者グループ(OSCBA)
oper制限されたデータベースの管理者グループ(OSOPER)
backupdbaデータベースのバックアップとリカバリの管理グループ
dgdbaOracle Data Guard管理グループ
kmdba暗号化キー管理の管理グループ


[root@localhost ~]# groupadd -g 54321 oinstall
[root@localhost ~]# groupadd -g 54322 dba
[root@localhost ~]# groupadd -g 54323 backupdba
[root@localhost ~]# groupadd -g 54324 oper
[root@localhost ~]# groupadd -g 54325 dgdba
[root@localhost ~]# groupadd -g 54326 kmdba
[root@localhost ~]# tail -6 /etc/group
oinstall:x:54321:
dba:x:54322:
backupdba:x:54323:
oper:x:54324:
dgdba:x:54325:
kmdba:x:54326:
[root@localhost ~]# useradd -u 1200 -g 54321 -G 54322,54323,54324,54325,54326 oracle
※idでなく、グループ名指定も可能
[root@localhost ~]# passwd oracle
ユーザー oracle のパスワードを変更。
新しいパスワード:
よくないパスワード: 辞書の単語に基づいています
よくないパスワード: 簡単すぎます
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
[root@localhost ~]# id oracle
uid=1200(oracle) gid=54321(oinstall) 所属グループ=54321(oinstall),54322(dba),54323(backupdba),54324(oper),54325(dgdba),54326(kmdba)


4. インストールディスクのマウント
手順1で作成したisoをVmwareの設定からDVDとしてマウントする
(OSシャットダウンしないと設定できないと思う)

oracleユーザでログインして、ディスクの中身確認


[oracle@localhost ~]$ ls -l /media/linuxamd64_1210/
合計 24
dr-x------. 4 oracle oinstall 796 12月 25 22:15 2015 install
dr-x------. 2 oracle oinstall 224 7月 7 07:18 2014 response
dr-x------. 2 oracle oinstall 120 7月 7 06:14 2014 rpm
-r-x------. 1 oracle oinstall 8533 7月 7 06:14 2014 runInstaller
dr-x------. 2 oracle oinstall 112 7月 7 07:18 2014 sshsetup
dr-x------. 14 oracle oinstall 2184 7月 7 07:20 2014 stage
-r-x------. 1 oracle oinstall 500 2月 6 11:25 2013 welcome.html

ファイルサイズ、ファイル一覧見てみる
"ls -alR /media/linuxamd64_1210/"の結果: ファイル
find /media/linuxamd64_1210/ -type f | cat -n": ファイル
ファイル数は1372個だった


5. 環境変数の設定
必要な環境変数はインストール時にOUIが自動で設定してくれるらしいが
事前設定しておくと、その値が採用されて設定が容易らしいので、事前に設定しておく。
必要なディレクトリも事前に作成する

環境変数説明
ORACLE_BASEOracleディレクトリ構造(格納先)のトップのディレクトリを指定する
この設定値がOFA(Optimal Flexible Architecture)のOracleディレクトリ構造のトップの場所になる
ORACLE_BASEを指定すると、指定したフディレクトリ内に各コンポーネント用のインストール用ディレクトリが作成されるため、今後のインストールやアップグレードがしやすくなる
例)/u01/app/oracle
ORACLE_HOMEOracleソフトウェアを格納するディレクトリを指定する
OFAでは以下のような構造になる
例)$ORACLE_BASE/product/12.1.0/dbhome_1
ORACLE_SIDシステム識別子(インスタンス名)を指定する(8文字以下の英数字)
ORACLE_SIDによって同じコンピュータ上の他のインスタンスと区別できる
例)orcl(デフォルトはorcl1)
LD_LIBRARY_PATHライブラリファイルのあるディレクトリパスを指定する
実行時に共有ライブラリを検索するために使用される
この環境変数UNIXLinuxのみ設定する
例)/usr/lib:$ORACLE_HOME/lib


ディレクトリの作成
rootで作って、所有権とアクセス権を変更する


[root@localhost ~]# umask
0022
[root@localhost ~]# mkdir -p /u01/app/oracle/product/12.1.0/dbhome_1/lib
[root@localhost ~]# chown -R oracle:oinstall /u01
[root@localhost ~]# chmod -R 775 /u01

ユーザをoracleに変更して、環境変数を事前確認


[root@localhost ~]# su - oracle
[oracle@localhost ~]$ printenv ORACLE_BASE
[oracle@localhost ~]$ printenv ORACLE_HOME
[oracle@localhost ~]$ printenv ORACLE_SID
[oracle@localhost ~]$ printenv LD_LIBRARY_PATH

環境変数の設定と確認


[oracle@localhost ~]$ export ORACLE_BASE="/u01/app/oracle"
[oracle@localhost ~]$ export ORACLE_HOME="$ORACLE_BASE/product/12.1.0/dbhome_1"
[oracle@localhost ~]$ export ORACLE_SID="orcl"
[oracle@localhost ~]$ export LD_LIBRARY_PATH="/usr/lib:$ORACLE_HOME/lib"
[oracle@localhost ~]$ printenv ORACLE_BASE
/u01/app/oracle
[oracle@localhost ~]$ printenv ORACLE_HOME
/u01/app/oracle/product/12.1.0/dbhome_1
[oracle@localhost ~]$ printenv ORACLE_SID
orcl
[oracle@localhost ~]$ printenv LD_LIBRARY_PATH
/usr/lib:/u01/app/oracle/product/12.1.0/dbhome_1/lib


6. インストール

OUIを起動してインストール


[oracle@localhost ~]$ cd /media/linuxamd64_1210/
[oracle@localhost linuxamd64_1210]$ ls
install response rpm runInstaller sshsetup stage welcome.html
[oracle@localhost linuxamd64_1210]$ ./runInstaller
Oracle Universal Installerを起動中です...

一時領域の確認中: 500MBを超えている必要があります. 実際 12398MB 問題なし
スワップ領域の確認中: 150MBを超えている必要があります. 実際 2047MB 問題なし
モニターの確認中: 少なくとも256色表示するよう設定されている必要があります. 実際 16777216 問題なし
Oracle Universal Installerの起動を準備中 /tmp/OraInstall2015-12-26_04-30-51AM. お待ちください...

インストールログは下記に出力される
/u01/app/oraInventory/logs/


[oracle@localhost linuxamd64_1210]$ このインストール・セッションのログは次の場所にあります:
/u01/app/oraInventory/logs/installActions2015-12-26_05-17-35AM.log


今回は「メール」も「セキュリティ・アップデート」もなしにする。
f:id:girochinful:20151227004734j:plain

インストール・オプションの選択: データベース・ソフトウェアのみインストール
f:id:girochinful:20151227004736j:plain

Gridインストール・オプション: 単一インスタンス・データベースのインストール
f:id:girochinful:20151227004738j:plain

製品言語の選択: 日本語、英語
f:id:girochinful:20151227004740j:plain

データベースのエディション
f:id:girochinful:20151227004743j:plain

インストール場所: 環境変数の値が自動入力される
/u01/app/oracle/product/12.1.0/dbhome_1配下にlibディレクトリがあるため続行するか聞かれるが、続行する
f:id:girochinful:20151227004746j:plain

インベントリの作成: 次へ
f:id:girochinful:20151227004748j:plain

権限のあるオペレーティング・システム・グループ: 次へ
f:id:girochinful:20151227004751j:plain

前提条件のチェックの実行: すべて無視: 続行
※パッケージ不足を無視するとインストールに失敗したので、パッケージ不足があれば必要な物を入れる
f:id:girochinful:20151227004754j:plain

サマリー: レスポンスファイルの保存(/home/oracle/db.rspに保存される)
f:id:girochinful:20151227004756j:plain

製品のインストール: 5分位で完了
※失敗したら原因を修正して/u01配下の削除→ディレクトリの再作成でリトライできそう
f:id:girochinful:20151227004801j:plain


rootで指定されたスクリプトを実行する
f:id:girochinful:20151227004759j:plain

/u01/app/oraInventory/orainstRoot.shの中身: ファイル
/u01/app/oracle/product/12.1.0/dbhome_1/root.shの中身: ファイル


[root@localhost ~]# ls -l /u01/app/oraInventory/orainstRoot.sh

  • rwxrwx---. 1 oracle oinstall 1807 12月 26 05:39 2015 /u01/app/oraInventory/orainstRoot.sh

[root@localhost ~]# /u01/app/oraInventory/orainstRoot.sh
権限を変更中 /u01/app/oraInventory.
グループの読取り/書込み権限を追加中。
全ユーザーの読取り/書込み/実行権限を削除中。

グループ名の変更 /u01/app/oraInventory 宛先 oinstall.
スクリプトの実行が完了しました。

[root@localhost ~]# ls -l /u01/app/oracle/product/12.1.0/dbhome_1/root.sh

  • rwxr-x---. 1 oracle oinstall 454 12月 26 05:39 2015 /u01/app/oracle/product/12.1.0/dbhome_1/root.sh

[root@localhost ~]# /u01/app/oracle/product/12.1.0/dbhome_1/root.sh
Performing root user operation.

The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/12.1.0/dbhome_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.

終了
f:id:girochinful:20151227004803j:plain

コマンドとかスクリプトがある下記ディレクトリにパスを通す
/u01/app/oracle/product/12.1.0/dbhome_1/bin


[root@localhost ~]# vi .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:$
ORACLE_BASE=/u01/app/oracle #追加
ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1 #追加
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin #追加

export PATH ORACLE_BASE ORACLE_HOME #修正

ログアウトして再確認


[oracle@localhost ~]$ printenv | egrep "^PATH|ORACLE_BASE|ORACLE_HOME"
ORACLE_BASE=/u01/app/oracle
PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin:/home/oracle/bin:$:/home/oracle/bin:/u01/app/oracle/product/12.1.0/dbhome_1/bin
ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1


7. 動作確認
DBCAでデータベース作ってみる。

oraenvスクリプト環境変数を設定する、oraenvはroot.shで作られたらしい。


[oracle@localhost ~]$ which oraenv
/usr/local/bin/oraenv
[oracle@localhost ~]$ ls -l `which oraenv`

  • rwxr-xr-x. 1 oracle root 7012 12月 26 05:46 2015 /usr/local/bin/oraenv

[oracle@localhost ~]$ oraenv
ORACLE_SID = [oracle] ? orcl
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/12.1.0/dbhome_1
The Oracle base has been set to /u01/app/oracle

DBCAの起動とデータベース作成


[oracle@localhost ~]$ dbca

データベース操作: データベースの作成
f:id:girochinful:20151227011608j:plain

作成モード: 拡張モード
f:id:girochinful:20151227011612j:plain

データベース・テンプレート: 汎用またはトランザクション処理
f:id:girochinful:20151227011616j:plain

データベース識別情報: グローバル・データベース名=orcl.localhost、SID=orcl
f:id:girochinful:20151227011623j:plain

管理オプション: Enterprise Manager(EM) Database Expressの構成にチェック(デフォルト)
EM Database Expressポートは5500(デフォルト)
f:id:girochinful:20151227011624j:plain

データベース資格証明: 別の管理パスワードを使用にチェック(デフォルト)
ユーザID/パスワード=(SYS/Oracle15)、(SYSTEM/Oracle15)で設定
f:id:girochinful:20151227011626j:plain

ネットワーク構成: 何も入力しない
f:id:girochinful:20151227011627j:plain

記憶域の場所: 変更せず
f:id:girochinful:20151227011628j:plain

データベース・オプション: サンプル・スキーマにチェック
f:id:girochinful:20151227011630j:plain

初期化パラメータ: 変更せず
f:id:girochinful:20151227011631j:plain

作成オプション: 変更せず
f:id:girochinful:20151227011632j:plain

前提条件チェック
f:id:girochinful:20151227011634j:plain

サマリー
f:id:girochinful:20151227011636j:plain

進行進捗
f:id:girochinful:20151227011637j:plain

終了
f:id:girochinful:20151227011638j:plain