ちなみに、Oracle Databaseはたとえ法人であっても気楽に買える値段ではないのですが、XE(Express Edition)なら、いくつかの機能的制限があるだけで無償で使えます。
ダウンロード
今回はCentOS6(64ビット)に入れる事にしました。
いるもの
ドキュメントにも書いていますが、追加でglibc, libaio, gcc, binutilsを入れる必要があります。僕が試した時はbcも必要でした。あとswapが2GB必要なので、swapのないVPSではインストールは出来ません。あと、64ビット環境でないとやはりインストールはできません。
# rpm -hiv oracle-xe-11.2.0-1.0.x86_64.rpm ⏎
Preparing... ########################################### [100%]
package oracle-xe-11.2.0-1.0.x86_64 is intended for a x86_64 architecture
パッケージ名がx86_64とあるので、当然と言えば当然ですが、32ビット版は提供されていないようですので、64ビットOSを用意せんとあきません。
インストール
ダウンロードしたZipを開けるとrpmが入っているので、インストールは簡単です。
# cd /usr/local/src ⏎
# 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
# cd Disk1/ ⏎
# rpm -hiv oracle-xe-11.2.0-1.0.x86_64.rpm ⏎
Preparing... ########################################### [100%]
1:oracle-xe ########################################### [100%]
Executing post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.
出てきたメッセージの最後にconfigureやれって書いてますので、その通りに実行します。
この操作によって、/etc/sysconfig/oracle-xeというファイルが作られます。Redhat系Linuxの文化に従った位置に入ったので安心です。# /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 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: パスワードを入れる ⏎
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.
インストールと設定(configure)が終わったら、Oracle XEが起動します。プロセスをみるとこんな感じです。
# ps axuw |grep oracle ⏎
oracle 1739 0.0 1.3 217376 13424 ? Ssl 15:48 0:00 /u01/app/oracle/product/11.2.0/xe/bin/tnslsnr LISTENER -inherit
oracle 2041 0.0 2.0 624876 21388 ? Ss 15:50 0:00 xe_pmon_XE
oracle 2043 0.0 1.4 622600 14320 ? Ss 15:50 0:00 xe_psp0_XE
...沢山、20個ぐらい。
oracle 2121 0.0 2.3 624140 23976 ? Ss 15:50 0:00 xe_qmnc_XE
oracle 2135 0.2 4.4 629328 45792 ? Ss 15:50 0:00 xe_cjq0_XE
oracle 2169 0.0 3.5 624216 36108 ? Ss 15:50 0:00 xe_q000_XE
oracle 2171 0.0 1.6 622604 17264 ? Ss 15:50 0:00 xe_q001_XE
root 2173 0.0 0.0 103232 828 pts/0 R+ 15:52 0:00 grep oracle
プロセスをみてわかりますが、インストール先が/u01/app/oracleでoracle
というユーザが作成されています。/u01ディレクトリのおかげで/u[TAB]で/usrが補完されなく
なってなかなか忌忌しいところです。MySQL 5.6の設定ファイルが/usr/my.cnfに入るよりはマシですが、「俺だけは特別」という雰囲気が感じられるディレクトリです。# du -sh /u01/ ⏎
1.7G /u01/
インストール先のディスク1.5GB以上と書いてあるので、やはりそれなりの容量です。
下準備
特にこれと言ってないのですが、oracleユーザに必要な環境変数をログインした時に設定されるよう、.bashrcを準備しておきます。
# su - oracle ⏎
$ pwd ⏎
/u01/app/oracle
$ cp /etc/skel/.bash_profile ./ ⏎
$ vi ./bashrc ⏎
Oracleで必要な環境変数は、oracleユーザの$HOME以下にあるproduct/11.2.0/xe/bin/oracle_env.shを実行すると設定されます。表示される文字のエンコード(NLS_LANG)は、実行した後でUTF8に設定しています。sqlplusで繋いでみる
Oracle Databaseのコマンドラインクライアントであるsqlplusが$ORACLE_HOME/binに入っていますので、それを使って繋いでみます。
$ sqlplus / as sysdba ⏎
SQL*Plus: Release 11.2.0.2.0 Production on 火 5月 5 16:15:20 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL>
ユーザを作ってみる
繋がったので、ユーザ作ったり、テーブル作ったり、いろいろやります。$ sqlplus / as sysdba ⏎
SQL*Plus: Release 11.2.0.2.0 Production on 火 5月 5 16:15:20 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL> CREATE USER shironeko IDENTIFIED BY whitecat; ⏎
ユーザーが作成されました。
SQL>
SQL> SELECT username, default_tablespace FROM dba_users; ⏎
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SYS SYSTEM
SYSTEM SYSTEM
ANONYMOUS SYSAUX
SHIRONEKO USERS
APEX_PUBLIC_USER SYSTEM
APEX_040000 SYSAUX
...
SQL> GRANT connect, resource TO shironeko; ⏎
ユーザ名shironekoでパスワードがwhitecatでユーザ作ってみました。
そのあとGRANTで白猫に権限を与えています。
で、今作った白猫で接続してみます。
$ sqlplus shironeko/whitecat ⏎
...
ホスト名とか省略しないで繋いでみる
$ sqlplus shironeko/whitecat@127.0.0.1:1521/XE ⏎
SQL>
Oracleデータベースのリスナーが1521番ポートでListenしていて、データベース名はXEです。Oracle XEの制限事項に、1サーバ1データベースまでというのがあります。細かくは試してないのですが、データベースもXEという名前で固定っぽいです。また何個CPUが乗っているサーバであっても1個しか使われないそうです。
テーブルも作る
猫のデータを格納するテーブルを作ります。SQL> CREATE TABLE CATS ( ⏎
2 CATID NUMBER NOT NULL UNIQUE, ⏎
3 NAME VARCHAR2(127) DEFAULT 'mi-chan', ⏎
4 KIND VARCHAR2(127), ⏎
5 COLOR VARCHAR2(63), ⏎
6 BIRTHDAY DATE ); ⏎
表が作成されました。
SQL> DESC CATS; ⏎
名前 NULL? 型
----------------------- -------- ----------------------------
CATID NOT NULL NUMBER
NAME VARCHAR2(127)
KIND VARCHAR2(127)
COLOR VARCHAR2(63)
BIRTHDAY DATE
SQL> INSERT INTO CATS VALUES(1,'Hikonyan','Yoi-nyanko','White','2006/01/01' ); ⏎
1行が作成されました。
SQL> INSERT INTO CATS VALUES(2,'Mi-chan','Mikeneko','White,Black,Red','2009/04/09' ); ⏎
1行が作成されました。
sqlplusの表示は(10gの時もそうでしたが)、mysqlやpsqlのように表示幅をいい感じに調整してくれないっぽいので、
少しでも見やすくなるように幅を調整してからSELECTします。
SQL> set linesize 512 ⏎
SQL> column NAME format a12 ⏎
SQL> column KIND format a12 ⏎
SQL> column COLOR format a16 ⏎
SQL> SELECT * FROM CATS ⏎
CATID NAME KIND COLOR BIRTHDAY
---------- ------------ ------------ ---------------- ---------
1 Hikonyan Yoi-nyanko White 06-01-01
2 Mi-chan Mikeneko White,Black,Red 09-04-09
猫の誕生日をいれるBIRTHDAYカラムはDATE型で作っているのですが、その表示形式は NSL_DATE_FORMAT
を変える事で調整できます。
SQL> set linesize 512 ⏎
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'; ⏎
SQL> SELECT * FROM CATS ⏎
CATID NAME KIND COLOR BIRTHDAY
---------- ------------ ------------ ---------------- -------------------
1 Hikonyan Yoi-nyanko White 2006/01/01 00:00:00
2 Mi-chan Mikeneko White,Black,Red 2009/04/09 00:00:00
Perlモジュールを入れる
データベースを便利に使うにはPerlが必須です。なのでDBD::Oracleを入れてPerlから接続できるか どうか、そのあたりもやっておきます。# source /u01/app/oracle/.bashrc ⏎
# /usr/local/bin/cpanm DBI DBD::Oracle ⏎
--> Working on DBI
Fetching http://www.cpan.org/authors/id/T/TI/TIMB/DBI-1.623.tar.gz ... OK
Configuring DBI-1.623 ... OK
Building and testing DBI-1.623 ... OK
Successfully installed DBI-1.623
--> Working on DBD::Oracle
Fetching http://www.cpan.org/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.56.tar.gz ... OK
Configuring DBD-Oracle-1.56 ... OK
Building and testing DBD-Oracle-1.56 ... OK
Successfully installed DBD-Oracle-1.56
2 distributions installed
ORACLE_HOMEとか必要な環境変数を読み込んで、cpanmで入れるだけです。DBD::Oracleがうまいこと入ったら、下記のようなスクリプトで
接続テストをしました。# perl ./connect-oracle-xe.pl ⏎
$VAR1 = {
'COLOR' => 'White',
'NAME' => 'Hikonyan',
'BIRTHDAY' => '2006/01/01 00:00:00',
'KIND' => 'Yoi-nyanko',
'CATID' => '1'
};
$VAR1 = {
'COLOR' => 'White,Black,Red',
'NAME' => 'Mi-chan',
'BIRTHDAY' => '2009/04/09 00:00:00',
'KIND' => 'Mikeneko',
'CATID' => '2'
};
0 件のコメント:
コメントを投稿