Debian GNU/Linux 8.3へのOracle Database 12cインストール

# Debian GNU/Linux 8.3へのOracle Database 12cインストール #
Last Change: 2016/04/03 07:54:37.

Debian Wikiの以下のページを参照してインストールしてみました。
https://wiki.debian.org/DataBase/Oracle
試行錯誤した部分などは記述を追加・変更しています。

ちなみにセットアップした環境は現状ではテスト用として使用しています。


## Oracleソフトウェアの展開 ##

```
# unzip linuxamd64_12102_database_1of2.zip -d /opt
# unzip linuxamd64_12102_database_2of2.zip -d /opt
```

## ユーザ・グループの追加 ##

```
# addgroup --system oinstall
# addgroup --system dba
# adduser --system --ingroup oinstall --shell /bin/bash oracle
# adduser oracle dba
# passwd oracle
```

## カーネルパラメータの設定 ##

以下の内容の/etc/sysctl.d/local-oracle.confを追加する。 

```
fs.file-max = 65536
fs.aio-max-nr = 1048576
kernel.sem = 250 32000 100 128
kernel.shmmax = 2147483648
kernel.shmall = 2097152
kernel.shmmni = 4096
net.ipv4.ip_local_port_range = 1024 65000
vm.hugetlb_shm_group = 111
vm.nr_hugepages = 64
```

以下のコマンドで設定を反映する。

```
# sysctl -p /etc/sysctl.d/local-oracle.conf
```

## セキュリティ関連の設定 ##

以下の内容の/etc/security/limits.d/local-oracle.confを追加する。

```
oracle          soft    nproc           2047
oracle          hard    nproc           16384
oracle          soft    nofile          1024
oracle          hard    nofile          65536
```

## 必要パッケージのインストール ##

Oracleのインストールに必要なライブラリ・ツール類をインストールする。

以下は実際一行。

```
# apt-get install build-essential binutils libcap-dev gcc g++
  libc6-dev ksh libaio-dev make libxi-dev libxtst-dev
  libxau-dev libxcb1-dev sysstat rpm xauth
```

## インストーラ向けのハック ##

```
# ln -s /usr/bin/awk /bin/awk
# ln -s /usr/bin/basename /bin/basename
# ln -s /usr/bin/rpm /bin/rpm
# ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
```

## インストール先フォルダの権限設定 ##

```
# mkdir -p /opt/oracle/product/12.1.0
# mkdir -p /opt/oraInventory
# chown -R oracle:dba /opt/oracle/
# chown -R oracle:dba /opt/oraInventory
```

## インストーラの実行 ##

**oracleユーザでログインしなおして**インストールを実行する。

UTF-8日本語環境だと文字化けするので英語環境設定にして起動します。
言語設定が「English」のみになっているので「Japanese」を忘れずに追加すること。

```
$ LANG=C /opt/database/runInstaller -IgnoreSysPreReqs
```

Oracle baseを「/opt/oracle」に設定する。

設定の仕方はWindowsとほぼ同じ。

今回はAdvanced Installationを選択して「Install database software only」で実行しました。


## リスナーの作成 ##

netcaコマンドで設定する。

```
$ LANG=C /opt/oracle/product/12.1.0/dbhome_1/bin/netca
```

設定の仕方はWindowsとほぼ同じ。


## インスタンスの作成 ##

dbcaコマンドで作成する。

```
$ LANG=C /opt/oracle/product/12.1.0/dbhome_1/bin/dbca
```

Windowsのデフォルトと一緒にしたい場合は言語設定を「JA16SJISTILDE」に設定すること。


## /etc/oratabの設定 ##

作成したインスタンスの設定がデフォルトで「:N」になっているので、
dbshutコマンドとdbstartコマンドの対象となるように「:Y」に変更しておく。

```
orcl:/opt/oracle/product/12.1.0/dbhome_1:Y
```

## systemdへサービス登録する(Oracleの自動開始・自動停止) ##

rootで以下の内容の/etc/systemd/system/oracle.serviceを作成する。

```
[Unit]
Description=Oracle 12c DataBase

[Service]
Type=forking
Environment="ORACLE_HOME=/opt/oracle/product/12.1.0/dbhome_1"
User=oracle
Group=dba
ExecStart=/opt/oracle/product/12.1.0/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop=/opt/oracle/product/12.1.0/dbhome_1/bin/dbshut $ORACLE_HOME
TimeoutSec=360

[Install]
WantedBy=multi-user.target
``` 

作成した内容を以下のコマンドで反映する。

```
# systemctl daemon-reload
# systemctl enable oracle
```

## 一旦終了 ##

インスタンスを作った時点でインスタンスが起動しているのでsqlplusの確認ついでにインスタンスをシャットダウンします。

```
$ /opt/oracle/product/12.1.0/dbhome_1/bin/sqlplus / as sysdba
SQL> shutdown immediate
SQL> exit
```

## Oracleの手動開始 ##

systemd経由で開始できるか確認します。rootユーザになって以下のコマンドでOracleを手動開始。

```
# systemctl start oracle
```

## Oracleの手動停止 ##
systemd経由で停止できるか確認します。rootユーザになってOracleを手動停止。

```
# systemctl stop oracle
```

## 付録:環境変数の一覧 ##

以下の環境変数設定をoracleユーザの~/.bashrcなどに書き込んでおくとコマンドが簡単に実行できて便利。

```
export ORACLE_HOSTNAME=localhost
export ORACLE_OWNER=oracle
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/12.1.0/dbhome_1
export ORACLE_UNQNAME=orcl
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu:/bin/lib:/lib/x86_64-linux-gnu/:/usr/lib64
```