Wednesday, January 30, 2013

Amazon EC2 に Oracle Database Express Edition 11g Release 2 インストール

Amazon EC2 に Oracle Database Express Edition 11g Release 2 をインストールしたときのメモです。

EC2 t1.micro を利用する場合は swap 領域がありませんので手動で作成します。他のインスタンスタイプでも swap 領域が2GB以上ないとインストールできませんので、必要に応じて拡張してください。

% su -
% dd if=/dev/zero of=/swap bs=1M count=2048
% mkswap /swap
% swapon /swap

サーバ起動時に swap 領域をマウントするようにしておきます。

% vi /etc/fstab
....
/swap swap swap defaults 0 0

VPC 内に構築する場合は、HOSTNAME での名前解決ができるようにしておきます。デフォルトの ip-xxx-xxx-xxx-xx のままでは名前解決できません。

% vi /etc/hosts
127.0.0.1   localhost localhost.localdomain
127.0.0.1   ip-10-0-1-23

Oracle のサイトから取得した、rpm パッケージからインストール&初期設定を行います。

% rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
% /etc/init.d/oracle-xe configure
...

oracle ユーザで、sqlplus を利用してみます。はじめに環境設定スクリプトを読み込んでおきます。もしくは ~/.bash_profile に記述しておくと良いでしょう。

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

データベースユーザを作成します。以下の例では

ユーザ名foo
パスワードbar
ロール名buz

で作成しています。

% sqlplus / as sysdba
....
SQL> CREATE USER foo IDENTIFIED BY bar
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;
 
SQL> CREATE ROLE buz;
SQL> GRANT CREATE session, CREATE table, CREATE view, CREATE procedure, CREATE synonym TO buz;
SQL> GRANT buz TO foo;
SQL> exit;

% sqlplus foo
Enter password: bar
 
SQL> CREATE TABLE products ....

必須ではありませんが、EC2では Stop/Start でIPアドレスが変わってしまうため、リスナーの設定 listener.ora を毎回書き換えなければいけません。開発用途での利用であれば、HOST = 0.0.0.0 にしておくと便利です。

% /etc/init.d/oracle-xe stop
% vi /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
....
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    )
  )
....
% /etc/init.d/oracle-xe start