Symfoware

Symfowareについての考察blog

Ubuntu Server 16.04にOracle Database Express Edition 11g Release 2をインストール

rpmパッケージで提供されているので、CentOSなどにインストールするのが楽なのですが、
Ubuntu 16.04 へ Oracle 11g Express Edition を入れてみた
こちらを参考に、Ubuntu Server 16.04へOracle Express Edition 11g(Oracle 11g XE)をインストールしてみます。



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



インストール時に必要なパッケージをインストールします。


$ sudo apt install alien libaio1 unixodbc unzip bc



ポイントは「bc」コマンドをインストールすること。
これをインストールしていないと、Oracleインストール時

/u01/app/oracle/product/11.2.0/xe/config/scripts/init.ora
というファイルのmemory_targetの設定値が空白となります。


memory_target=



これが影響して


ERROR at line 1:
ORA-01078: failure in processing system parameters
LRM-00116: syntax error at 'sessions' following '='



というエラーをログファイルに出力し、データベースの起動に知っパします。
結構はまった。




インストーラーの取得



こちらからインストーラーを取得します。
Oracle Database Express Edition 11g Release 2

800_01.png

サインインを求められます。
アカウントがない場合は、「プロファイルの作成」からアカウントを作成しダウンロードを実行。

800_02.png


「oracle-xe-11.2.0-1.0.x86_64.rpm.zip」が取得できました。
サーバーの適当なディレクトリにコピーします。




rpmからdebに変換



以前はdebパッケージも提供されていたのですが、
DebianにOracle xe universal 10g R2 をインストール
現在はrpmパッケージのみの提供となっているようです。

rpmパッケージからdebに変換します。


まず、zipファイルを解凍。


$ unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
Archive: oracle-xe-11.2.0-1.0.x86_64.rpm.zip
creating: Disk1/
creating: Disk1/upgrade/
inflating: Disk1/upgrade/gen_inst.sql
creating: Disk1/response/
inflating: Disk1/response/xe.rsp
inflating: Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm




Disk1というディレクトリが作成され、oracle-xe-11.2.0-1.0.x86_64.rpmが出力されます。

Disk1へ移動。
alienコマンドでrpmからdebへ変換します。
※結構時間がかかります。(5分程度)


$ cd Disk1
$ sudo alien --to-deb --scripts oracle-xe-11.2.0-1.0.x86_64.rpm
oracle-xe_11.2.0-2_amd64.deb generated




出力されたdebファイル、そのままは使えません。
作業フォルダ「tmp_deb」を作成しコピー。
内容を修正していきます。


$ mkdir ./tmp_deb
$ cp ./oracle-xe_11.2.0-2_amd64.deb ./tmp_deb/
$ cd ./tmp_deb




debファイルの中身を抽出。


$ ar x ./oracle-xe_11.2.0-2_amd64.deb




抽出した内容を表示。


$ ls
control.tar.gz data.tar.xz debian-binary oracle-xe_11.2.0-2_amd64.deb




まず、作業用に「tmp_data」ディレクトリを作成してdata.tar.xzを解凍。
内容を微調整します。


$ mkdir ./tmp_data
$ cd ./tmp_data
$ tar axvf ../data.tar.xz ./




「oracle-xe」を編集。


$ vi ./etc/init.d/oracle-xe




赤字の部分を追記します。


#!/bin/bash
### 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

#
#
# chkconfig: 2345 80 05
# description: This is a program that is responsible for taking care of
# configuring the Oracle Database 11g Express Edition and its associated
# services.





53行目 awk のパスを変更


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




/var/lock/subsys/ を /var/lock/へ書き換えます。
viのコマンドで「:%s/subsys\///gc」を実行。

800_03.png

6箇所置換されるはずです。
これでoracle-xeの編集は完了です。



引き続き、control.tar.gzの内容を微調整します。
「tmp_control」ディレクトリを作成して、control.tar.gzを解凍。


$ cd ../
$ mkdir ./tmp_control
$ cd ./tmp_control
$ tar axvf ../control.tar.gz ./




「postinst」を編集します。


$ vi ./postinst




114行目。/sbin/chkconfigの箇所を変更。


#/sbin/chkconfig --add oracle-xe
update-rc.d oracle-xe defaults 80 01



800_04.png

800_05.png


これでファイルの編集作業は完了です。
data.tar.xzとcontrol.tar.gzを削除。
ファイル編集後のディレクトリを改めてtar.gzで固めます。


$ rm ../data.tar.xz ../control.tar.gz
$ tar acvf ../control.tar.gz ./
$ cd ../tmp_data
$ tar acvf ../data.tar.gz ./




tmp_dataに移動


$ cd ../



内容はこうなっているはずです。


$ ls
control.tar.gz debian-binary                 tmp_control
data.tar.gz     oracle-xe_11.2.0-2_amd64.deb tmp_data




debパッケージ内のdata.tar.xzを削除。
作成したdata.tar.gz control.tar.gzを追加します。(control.tar.gzは上書きとなる)


$ 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




これでrpmからdebへの変換は終了です。




インストール



dpkgコマンドで作成したdebをインストールします。


$ sudo dpkg -i ./oracle-xe_11.2.0-2_amd64.deb
...
Executing post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.
...




「'/etc/init.d/oracle-xe configure'を実行しろ」とのことなので実行します。
スクリプト実行中、各種ポート番号やパスワードを尋ねられます。

ポート番号はデフォルト
パスワードは「Passw0rd」
OS起動時、データベースも起動するよう指定しました。


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

Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press <Enter> to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:(そのままエンター)

Specify a port that will be used for the database listener [1521]:(そのままエンター)

Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:(そのままエンター)
Password can't be null. Enter password:(パスワードを入力)
Confirm the password:(パスワードを再入力)

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:(そのままエンター)

Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.




sqlplusコマンドが使えるよう、.profileに追記します。


$ vi ~/.profile




末尾に1行追加。


source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh




即時反映。


$ source ~/.profile




sqlplusでデータベースに接続できるか試してみます。

構文は「sqlplus sys/[パスワード]@xe as sysdba」


$ sqlplus sys/Passw0rd@xe as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on 火 11月 7 22:50:09 2017
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL>





うまく起動できているようです。
lsnrctlコマンドでXEインスタンスが起動ていることも確認できました。


$ lsnrctl services

LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 07-11月-2017 22:52:34

Copyright (c) 1991, 2011, Oracle. All rights reserved.

(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))に接続中
サービスのサマリー...
サービス"PLSExtProc"には、1件のインスタンスがあります。
インスタンス"PLSExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
    ハンドラ:
     "DEDICATED" 確立:0 拒否:0
         LOCAL SERVER
サービス"XE"には、1件のインスタンスがあります。
インスタンス"XE"、状態READYには、このサービスに対する1件のハンドラがあります...
    ハンドラ:
     "DEDICATED" 確立:1 拒否:0 状態:ready
         LOCAL SERVER
サービス"XEXDB"には、1件のインスタンスがあります。
インスタンス"XE"、状態READYには、このサービスに対する1件のハンドラがあります...
    ハンドラ:
     "D000" 確立:0 拒否:0 現行:0 最大:1022 状態:ready
         DISPATCHER <machine: ubuntu, pid: 19026>
         (ADDRESS=(PROTOCOL=tcp)(HOST=ubuntu)(PORT=40012))
コマンドは正常に終了しました。





【参考URL】

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

Oracle 11g XE を Ubuntu 11.10 にインストールする

関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/11/07(火) 23:05:35|
  2. Oracle
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Oracle 11g XE ユーザー(スキーマ)とテーブルの作成 | ホーム | Ubuntu Server 16.04に固定IPを設定>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/2063-61c4fb66
この記事にトラックバックする(FC2ブログユーザー)