b-shock. Fortress

Ubuntu Server 16.04 LTSにOracle 11g XEを入れてみる。

↓主に参考にした記事はこれ。(ありがとうございます)

Ubuntu 16.04 へ Oracle 11g Express Edition を入れてみた

同じUbuntu 16.04LTSであるにも関わらず、当方の環境では微修正が必要だった。 こちらではVMware Fusion(Mac)とKVM(Xubuntu)で試したけど、あんまり関係ないよね。謎だ。

本稿は一見、元記事と変わらないけど(記事の名前もよく似てるしw)、修正後の手順と その後の後処理を反映させてる。パクリっぽいけど、一応違うからw

依存パッケージのインストール(元記事を微妙に修正)

1
sudo apt install alien libaio1 unixodbc unzip bc

bcは、元記事の指示にはなかったもの。
まっさらなUbuntu Serverには入ってないが、実際には必要。

debパッケージの生成

Oracle Database Express Edition 11g Release 2

Linux x64版をダウンロード。Oracleのアカウント(無料)が必要なので、持ってなければ作ること。
ダウンロードしたファイルを設置先サーバに置いて、以下実行。

1
2
3
unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
cd Disk1/
sudo alien --to-deb --scripts oracle-xe-11.2.0-1.0.x86_64.rpm

alienの実行には、かなり時間かかります。

debをバラす(元記事を微妙に修正)

1
2
3
4
mkdir tmp_deb
cp oracle-xe_11.2.0-2_amd64.deb tmp_deb #rpmから変換したdeb
cd tmp_deb
ar x ./oracle-xe_11.2.0-2_amd64.deb

このdebに入っているのは、以下の3つ。

  1. control.tar.gz
  2. data.tar.xz
  3. debian-binary

ファイル 1. と 2. は、内容を修正する必要あり。

data.tar.xzをバラして修正

1
2
3
4
mkdir tmp_data
cd tmp_data
tar axvf ../data.tar.xz .
vi ./etc/init.d/oraccle-xe

awkのパス(53行目)を、 /usr/bin/awk に修正。

1
if [ -z "$AWK" ]; then AWK=/usr/bin/awk; fi

/var/lock/subsys/ を /var/lock/ に置き換え。

1
:%s/subsys\///gc

シェバン(1行目)の下に、以下挿入。

1
2
3
4
5
6
7
8
### BEGIN INIT INFO
# Provides: OracleXE
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Oracle 11g Express Edition
### END INIT INFO

control.tar.gzをバラして修正

1
2
3
4
5
cd ..
mkdir tmp_control
cd tmp_control
tar axvf ../ccontrol.tar.gz .
vi ./postinst

update-rc.dへ書き換え。(114行目)

1
update-rc.d oracle-xe defaults 80 01

debファイルに戻してインストール(元記事を微妙に修正)

1
2
3
4
5
6
7
8
9
10
11
cd ..
rm data.tar.xz
rm control.tar.gz
cd tmp_control
tar acvf ../control.tar.gz ./
cd ../tmp_data
tar acvf ../data.tar.gz ./
cd ..
ar d ./oracle-xe_11.2.0-2_amd64.deb data.tar.xz
ar r ./oracle-xe_11.2.0-2_amd64.deb data.tar.gz control.tar.gz
sudo dpkg -i oracle-xe_11.2.0-2_amd64.deb

インストール(dpkgコマンド)もかなり時間かかります。

インストールスクリプトを修正(元記事にない手順)

以下のファイルについて、要修正。

  1. /u01/app/oracle/product/11.2.0/xe/dbs/init.ora
  2. /u01/app/oracle/product/11.2.0/xe/config/scripts/init.ora
  3. /u01/app/oracle/product/11.2.0/xe/config/scripts/initXETemp.ora

これらのファイルについて、 memory_target= から始まる行をコメントアウトする必要あり。
“=” の後ろに値が入っていないケースがあり(MacのFusionではそうだった)、その場合は インストールスクリプト実行時にシンタックスエラーになる為、 memory_target=1G 等と 修正せよと案内している記事もある。

ウチでは結局、行自体をコメントアウトする必要があった。(その旨を案内するログメッセージ も出てた)
ファイル 1. への修正は不要だったかもしれない。ちょっと自信ない。

インストールスクリプトを実行

1
sudo /etc/init.d/oracle-xe configure

最後にパスワードを聞かれるはずなので、入力したものを控えておく。
事前に無作為なパスワードを、apg等で用意しておくこと。

環境変数の設定

環境変数の設定を行う為に、 /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh を実行する 必要がある。~/.profile 等に、このファイルを実行するよう追記。
シェルごとに手順が若干異なるので、各自お好みのシェルの手順で対応して頂きたい。

接続テスト

1
sqlplus

ユーザー名は system 、パスワードは先ほど控えたもの。
ここまでで設置の手順は終わり、元記事もここで終わっているが。

ユーザー作成(元記事にない手順)

このあとの手順はOracle使いには自明のことの様だけど、自分への備忘録を兼ねて。

デフォルトで作成されるsystemユーザーは、SYSTEM表領域を使用する等、通常の利用に適さない。
たとえ普段からDBA権限が必要であっても、systemではないユーザーを登録して普段はそちらを使うべき。

1
2
3
CREATE USER your_id IDENTIFIED BY "your_password" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT DBA TO your_id;
GRANT UNLIMITED TABLESPACE TO your_id;

下2行、ほんとに実行するかどうかは用途によるだろうけど、テスト環境なら問題ないはず。
以下のクエリーで、登録状況を確認。

1
SELECT username, default_tablespace, temporary_tablespace FROM dba_users;

Oracleインスタンスを立てた目的

少々訳あって、Oracle Master Bronzeが必要になった。
「なんだブロンズかよ、しょぼ!」とか言うなw 以上。