Oracle Database

提供: ArchWiki
2018年12月19日 (水) 23:46時点におけるKusakata.bot (トーク | 投稿記録)による版 (Pkg/AUR テンプレートの更新)
ナビゲーションに移動 検索に移動

関連記事

このドキュメントでは Arch Linux に Oracle Database 12c (12.1) をインストールする手順を説明します。別のサーバーで動作している Oracle に接続したいだけの場合、Oracle クライアントの記事を読んでください。Oracle Express Edition をインストールする場合は oracle-xeAUR パッケージを使ってください。

準備

先に Xorg を設定してウィンドウマネージャあるいはデスクトップ環境をインストールする必要があります。

依存パッケージ

Arch Linux 環境に Oracle Database をインストールする前に、以下のパッケージがインストールされているか確認してください:

そして 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 以外のエディタでテキストファイルを編集したい場合、上記の EDITORVISUAL 環境変数の値を変更してください (例: 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

トラブルシューティング

インストール時のエラー

インストールの最中にいくつかエラーメッセージが表示されることがあります:

ノート: 以下のエラーメッセージは Oracle 11gR2 x64 で現れるものです。

以下のエラーメッセージが表示される場合:

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...