coLinux の Ubuntu へ Oracle XE インストール

参考 1, 参考 2

http://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-universal_10.2.0.1-1.1_i386.deb をダウンロードして dpkg でインストールを試みる。

sudo dpkg -i oracle-xe-universal_10.2.0.1-1.1_i386.deb

メモリが 256 MB 必要だと怒られた
mem=512 でメモリを 512 MB にして実行してみたら Swap が 1006 MB 必要だと言われた。
Cygwin で swap 用のイメージファイルを作成。

dd if=/dev/zero of=swap_1gb bs=1M count=1024

設定ファイルの cobd1 を swap_1gb に変更して再起動。

mkswap /dev/cobd1

swap 追加

vi /etc/fstab

/dev/cobd1 none swap defaults 0 0
sudo swapon -a
swapon -s

Filename                                Type            Size    Used    Priority
/dev/cobd1                              partition       1048568 0       -1

再度インストールを試みると libaio か libaio1 が必要だと言われたので、libaio1 をインストール。

sudo dpkg -i oracle-xe-universal_10.2.0.1-1.1_i386.deb
(Reading database ... 14410 files and directories currently installed.)
Unpacking oracle-xe-universal (from oracle-xe-universal_10.2.0.1-1.1_i386.deb) ...
error: "kernel.maps_protect" is an unknown key
dpkg: dependency problems prevent configuration of oracle-xe-universal:
 oracle-xe-universal depends on libaio (>= 0.3.96) | libaio1 (>= 0.3.96); however:
  Package libaio is not installed.
  Package libaio1 is not installed.
dpkg: error processing oracle-xe-universal (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 oracle-xe-universal
sudo apt-get install libaio1

PFW がネットワークへのアクセスを遮断していたので、ソースポート any で外に出られるようにした。

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

HTTP のポートは 8080, リスナーは 1521, OS 起動時の Oracle 起動は n

もう一度 sudo dpkg -i oracle-xe-universal_10.2.0.1-1.1_i386.deb が必要だと思ったのに、インストールされてしまったみたい。
記憶違いだろうか?
管理用 Web にアクセスしてユーザを追加しておく。
http://192.168.0.5:8080/apex/ から hokorobi ユーザ追加

.bashrcに次のように記述。

export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export PATH=${JAVA_HOME}/bin:${ORACLE_HOME}/bin:${PATH}

ログインし直して色々と確認。

sqlplus /nolog
connect SYS/@XE as SYSDBA;
SQL> select instance_name, status, version, edition from v$instance;

INSTANCE_NAME    STATUS       VERSION           EDITION
---------------- ------------ ----------------- -------
XE               OPEN         10.2.0.1.0        XE
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> select * from v$nls_parameters;

PARAMETER                VALUE
------------------------ ----------------------------------------
NLS_LANGUAGE             AMERICAN
NLS_TERRITORY            AMERICA
NLS_CURRENCY             $
NLS_ISO_CURRENCY         AMERICA
NLS_NUMERIC_CHARACTERS   .,
NLS_CALENDAR             GREGORIAN
NLS_DATE_FORMAT          DD-MON-RR
NLS_DATE_LANGUAGE        AMERICAN
NLS_CHARACTERSET         AL32UTF8
NLS_SORT                 BINARY
NLS_TIME_FORMAT          HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT     DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT       HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT  DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY        $
NLS_NCHAR_CHARACTERSET   AL16UTF16
NLS_COMP                 BINARY
NLS_LENGTH_SEMANTICS     BYTE
NLS_NCHAR_CONV_EXCP      FALSE
SQL> select file_name, bytes from dba_data_files;

FILE_NAME                                  BYTES
------------------------------------------ ----------
/usr/lib/oracle/xe/oradata/XE/users.dbf    104857600
/usr/lib/oracle/xe/oradata/XE/sysaux.dbf   450887680
/usr/lib/oracle/xe/oradata/XE/undo.dbf     183500800
/usr/lib/oracle/xe/oradata/XE/system.dbf   356515840
SQL> select file_name, bytes from dba_temp_files;

FILE_NAME                                  BYTES
------------------------------------------ ----------
/usr/lib/oracle/xe/oradata/XE/temp.dbf     20971520
SQL> select username, account_status from dba_users;

USERNAME                       ACCOUNT_STATUS
------------------------------ ----------------------
SYS                            OPEN
SYSTEM                         OPEN
ANONYMOUS                      OPEN
HOKOROBI                       OPEN
MDSYS                          EXPIRED & LOCKED
OUTLN                          EXPIRED & LOCKED
DIP                            EXPIRED & LOCKED
TSMSYS                         EXPIRED & LOCKED
FLOWS_FILES                    EXPIRED & LOCKED
CTXSYS                         EXPIRED & LOCKED
DBSNMP                         EXPIRED & LOCKED
FLOWS_020100                   EXPIRED & LOCKED
XDB                            EXPIRED & LOCKED
HR                             EXPIRED & LOCKED

/etc/init.d/oracle-xe stop で停止できないみたい。

/etc/init.d/oracle-xe を見てみると /etc/default/oracle-xe の ORACLE_DBENABLED が true でないと駄目みたい。
変なの。
true にしたら動いた。
パラメータ名が納得できない。
このままだと OS 起動時に oracle-xe が動いてしまうので対処。

sudo mv rc2.d/S20oracle-xe rc2.d/K20oracle-xe
sudo mv rc3.d/S20oracle-xe rc3.d/K20oracle-xe
sudo mv rc4.d/S20oracle-xe rc4.d/K20oracle-xe
sudo mv rc5.d/S20oracle-xe rc5.d/K20oracle-xe

いまさら公式でのインストール方法を見つけた。
http://www.oracle.com/technology/tech/linux/install/xe-on-kubuntu.html

Oracle を使いたいときだけメモリを増やして coLinux を再起動するようにしよう。