Oracle Database
関連記事
このドキュメントでは Arch Linux に Oracle Database 12c (12.1) をインストールする手順を説明します。別のサーバーで動作している Oracle に接続したいだけの場合、Oracle クライアントの記事を読んでください。Oracle Express Edition をインストールする場合は oracle-xeAUR パッケージを使ってください。
目次
準備
先に Xorg を設定してウィンドウマネージャあるいはデスクトップ環境をインストールする必要があります。
依存パッケージ
Arch Linux 環境に Oracle Database をインストールする前に、以下のパッケージがインストールされているか確認してください:
- base-devel (グループに含まれている全てのパッケージ)
- jre8-openjdk, mksh, gdb, gawk, libelf, sysstat, libstdc++5, unzip, sudo, icu, lib32-libstdc++5, python2
- gcc-multilib[リンク切れ: 置換パッケージ: gcc], gcc-libs-multilib[リンク切れ: 置換パッケージ: gcc-libs], libtool
そして Oracle のインストーラを動作させるためにデフォルトで Python 3 ではなく Python 2 が使われるように設定してください。詳しくは Python を参照。
Oracle ユーザー
oracle ユーザーと oinstall
, dba
グループを作成してください:
# groupadd oinstall # groupadd dba # useradd -m -g oinstall -G dba oracle
ユーザーを作成したらパスワードを設定してください:
# passwd oracle
oracle ユーザーの .bashrc
ファイルをテキストエディタで編集して、以下の内容を追加してください (Oracle の環境変数とパス、デフォルトのエディタを設定します):
export ORACLE_BASE=/oracle export ORACLE_HOME=/oracle/product/db export ORACLE_INVENTORY=/oracle/inventory export ORACLE_SID=<SID of your DB> export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export EDITOR=vi export VISUAL=vi
vi 以外のエディタでテキストファイルを編集したい場合、上記の EDITOR
と VISUAL
環境変数の値を変更してください (例: nano, gedit, kate, atom など)。ORACLE_SID
変数には適切な値を設定してください。dbca
ツールで選択した SID になります。SID を決めていない場合、dbca を実行した後に変数を設定してください。
設定
カーネルパラメータ
以下のカーネルパラメータを設定する必要があります。/etc/sysctl.d/99-sysctl.conf
ファイルに以下のパラメータを追加してください (既に追加している場合は編集してください):
fs.file-max = 6815744 fs.aio-max-nr = 1048576 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576
設定したら変更を反映してください (詳しくは sysctl を参照):
# sysctl --system
Pam の設定
PAM モジュールの制限も設定する必要があります (参照: リアルタイムプロセス管理)。/etc/security/limits.conf
ファイルに以下を追加してください:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
インストール
ダウンロード
Oracle のサイトからユーザーフォルダにソフトウェアをダウンロードしてください: http://www.oracle.com/technology/software/products/database/index.html
ダウンロードしたら /media
フォルダに解凍してください:
# unzip /home/oracle/Downloads/linuxamd64_12102_database_1of2.zip -d /media # unzip /home/oracle/Downloads/linuxamd64_12102_database_2of2.zip -d /media
以下のようにインストールディレクトリの所有者と所有グループを変更してください:
# chown -R oracle:oinstall /media/database
ディレクトリの作成
Oracle ソフトウェアのインストール先となるディレクトリを作成します:
# mkdir -p /oracle/{inventory,recovery,product/db}
そしてパーティションを設定してください:
# chown -R oracle:oinstall /oracle/{inventory,recovery,product/db}
Oracle インストーラの起動
oracle
ユーザーでインストーラを起動してください:
$ /media/database/runInstaller
以下のようにインストールウィザードを進めてください:
- インストール・オプション
- "データベース・ソフトウェアのみインストール"
- Grid インストール・オプション
- "単一インスタンス・データベースのインストール"
- 製品言語
- "英語"
- データベースのエディション
- "Enterprise Edition"
- インストール場所
- Oracle ベース:
/oracle
- ソフトウェアの場所:
/oracle/product/db
- インベントリの作成
- インベントリの場所:
/oracle/inventory
- oraInventory グループ名:
oinstall
- オペレーティング・システム・グループ
- データベース管理者グループ:
dba
- データベース・オペレータグループ:
oinstall
- 前提条件のチェック
- すべて無視
スクリプトの実行
Oracle データベースのグラフィカルインストーラは以下のスクリプトを root で実行するように要求します:
# /oracle/inventory/orainstRoot.sh # /oracle/product/db/root.sh
最後のスクリプトはフルパスを要求します。以下を指定してください:
/usr/local/bin
リスナー
最後にインスタンスリスナーを作成する必要があります。グラフィカルツールを (oracle ユーザーで) 起動することで作成できます:
$ netca
設定ウィザードに以下のように答えてください:
- 実行する構成を選択
- リスナー構成
- 実行する処理の選択
- 追加
- リスナー名
- LISTENER
- 選択済みプロトコル
- TCP
- リスナーが使用する TCP/IP ポート番号
- 標準ポート番号の 1521
- 他のリスナーの構成
- いいえ
そして「完了」をクリックしてください。
同一マシン上で動作している Oracle データベースに接続する場合、インスタンスリスナーは不要です。他のマシンから接続する場合や JDBC ドライバーを使って (Java アプリケーションなどから) 接続する場合に必要になります。
起動
sysdba でデータベースにログインするには (oracle
ユーザーで実行):
$ sqlplus / as sysdba
データベースを起動するには:
SQL> startup
データベースを停止するには:
SQL> shutdown immediate
データベースのインスタンスリスナーの起動・停止は lsnrctl
コマンドで行なえます。
リスナーを起動するには:
$ lsnrctl start
リスナーを停止するには:
$ lsnrctl stop
リスナーの状態を確認するには:
$ lsnrctl status
インストール後の設定
oracle
ユーザーで dbca
グラフィカルツールを起動することでデータベースを作成できます:
$ dbca
データベースを作成したら、/etc/oratab
ファイルを編集して以下の行を:
<your sid>:<oracle home>:N
以下のように変更してください:
<your sid>:<oracle home>:Y
トラブルシューティング
インストール時のエラー
インストールの最中にいくつかエラーメッセージが表示されることがあります:
以下のエラーメッセージが表示される場合:
INFO: /usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14' collect2: error: ld returned 1 exit status
「続行」をクリックしてください。上記のエラーが表示された場合、レキシカルコンパイラを使うことができません。レキシカルコンパイラは中国語や日本語の辞書を生成するのに使われます。
また、以下のエラーが表示される場合:
/oracle/product/db/lib/libnnz11.so: could not read symbols: Invalid operation collect2: error: ld returned 1 exit status
$ORACLE_HOME/sysman/lib/ins_emagent.mk
ファイルを開いて190行目の $(MK_EMAGENT_NMECTL)
を置き換えてください:
$(MK_EMAGENT_NMECTL) -lnnz11
修正したらインストーラウィンドウの「再試行」をクリックしてください。
IPv6 の問題
デフォルトでは、リスナーは localhost.localdomain
を listen するように設定されます。Arch のデフォルトの IPv6 設定は異なっているため、データベースインスタンスがリスナーを登録できません。問題を解決するには、リスナーの状態を確認してください:
$ lsnrctl status
以下のように表示される場合:
The listener supports no services
$ORACLE_HOME/network/admin
に存在する listener.ora
ファイルを編集して以下の行を:
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
以下のように変更してください:
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
上記の設定で、リスナーは外部 IP アドレスを使うようになります。
設定後、再度リスナーの状態を確認してください:
$ lsnrctl status
以下のように表示されればリスナーが正しく機能しています:
Service "<SID name>" has 1 instance(s). Instance "<SID name>", status READY, has 1 handler(s) for this service...