home | prev | next |
---|
PostgreSQL とはフリーのデータベースサーバーのひとつです。
バージョン8.0 から Linux, FreeBSD, Solaris, HP-UX, AIX等、UNIX系システムだけでなく、Windows系システムもサポートしています。
尚、商用データベースと遜色無い高機能性を持ち、配列データの扱いや実行結果のインデックス等他には無い機能も備えています。
今回、ターゲットにしたマシンは Intel版 Solaris 10 です。
PostgreSQL は OS とは別の管理ユーザを使用しますので予め作成しておく必要があります(一般的には postgres というユーザで管理します)。
既に PostgreSQL がインストール済みのマシンをターゲットにしたので、コンパイルオプションに --prefix を指定してインストール先を変更しましたが、
通常はデフォルトで /usr/local/pgsql にインストールされるので指定する必要はありません。
また、--enable-muntibyte は日本語文字を扱えるようにするためのオプションです。
インストール先の /usr/local は root が所有しているのでスーパーユーザで make install を実行します。
しかし、前述の通り PostgreSQL は別の管理ユーザを使用するので /usr/local/pgsql8 以下の所有者を chown 及び chgrp コマンドで変更して下さい。
エンコーディング | 説明 |
---|---|
SQL_ASCII | ASCII |
EUC_JP | 日本語 EUC |
EUC_CN | 中国語 EUC |
EUC_KR | 韓国語 EUC |
EUC_TW | 台湾で使われている EUC |
UNICODE | ユニコード(UTF-8) |
MULE_INTERNAL | Mule 内部コード |
LATIN1 | ISO 8859-1 の英語とヨーロッパ言語の一部 |
LATIN2 | ISO 8859-2 の英語とヨーロッパ言語の一部 |
LATIN3 | ISO 8859-3 の英語とヨーロッパ言語の一部 |
LATIN4 | ISO 8859-4 の英語とヨーロッパ言語の一部 |
LATIN5 | ISO 8859-5 の英語とヨーロッパ言語の一部 |
KOI8 | KOI8-R(U) |
WIN | Windows CP1251 |
ALT | Windows CP866 |
# tar zxvf postgresql-8.3.4.tar.gz |
# cd postgresql-8.3.4 |
# ./configure --prefix=/usr/local/pgsql8 --enable-multibyte=UNICODE |
# make |
# make install |
# chown -R postgres /usr/local/pgsql8 |
# chgrp -R postgres /usr/local/pgsql8 |
/usr/local/pgsql8 に PostgreSQL がインストールできました。
configure でエラーが発生し、コンパイルができない場合があります。
その際には config.log を参照すると原因が記されています。
以下は 必要なライブラリが参照できずに終了してしまった例をあげます。
# ./configure --prefix=/usr/local/pgsql8 --enable-multibyte=UNICODE ... (略) ... checking test program... failed configure: error: Could not execute a simple test program. This may be a problem related to locating shared libraries. Check the file 'config.log' for the exact reason. |
# cat config.log ... (略) ... configure:8294: ./conftest ld.so.1: conftest: fatal: libreadline.so.5: open failed: No such file or directory ... (略) ... |
# export LD_LIBRARY_PATH=/usr/local/lib # ./configure --prefix=/usr/local/pgsql8 --enable-multibyte=UNICODE # make # make install |
前述の通り PostgreSQL は OS とは別の管理ユーザを使用しますので、suコマンドでユーザをスイッチします(本書では通例に習い postgres ユーザを使用)。
viエディタでパスと環境変数の設定内容を /usr/local/pgsql8/.bash_profile に作成します(実際には何処に何と言う名前であっても構いません)。
設定内容は B-Shell系の場合を記しましたが、C-Shell系の設定は別途何かを参照してください。
データベースを並列で稼働させる場合には、特に注意が必要です。
設定を間違えると既存データに思わぬ影響を与える場合があります。
# su - postgres |
# vi /usr/local/pgsql8/.bash_profile |
export PATH=/usr/local/pgsql8/bin:"$PATH" export POSTGRES_HOME=/usr/local/pgsql8 export PGLIB=$POSTGRES_HOME/lib export PGDATA=$POSTGRES_HOME/data export PGPORT=15432 export MANPATH=$POSTGRES_HOME/man:"$MANPATH" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":/usr/local/lib:"$PGLIB" |
完了したら、source /usr/local/pgsql8/.bash_profile として、設定内容を反映してください。
PostgreSQL のインストール後、一度だけ initdbコマンドを実行してデータ領域を確保します。
オプションによりデータディレクトリを指定しているが、PGDATA で指定していれば必要ありません。
# initdb /usr/local/pgsql8/data |
The files belonging to this database system will be owned by user "postgres". |
This user must also own the server process. |
The database cluster will be initialized with locales |
... (略) ... |
Success. You can now start the database server using: |
postgres -D /usr/local/pgsql8/data |
or |
pg_ctl -D /usr/local/pgsql8/data -l logfile start |
これでデータベースの初期化は完了です。
既に PostgreSQL が使用するポート番号 5432 を使用済なので、別のポートを使用します。
使用するポート番号は postgres.conf で設定するので viエディタ等で変更しますが、通常は変更する必要はありません。
ネットワーク経由でデータベースにアクセスをするためには postmaster が -i オプション付きで起動されていることと、pg_hba.conf で許可されたホストからの接続でなければなりません。 デフォルトでは、全ての外部マシンからの接続を禁止しています。pg_hba.conf で設定するので接続を許可するよう viエディタ等で編集します。
# vi /usr/local/pgsql8/data/postgres.conf |
# vi /usr/local/pgsql8/data/pg_hba.conf |
# pg_ctl -o "-i" start |
pg_ctlコマンドより postmaster を実行しますが、その際 postmaster に渡すオプションを -o で指定しています。
つまり、-o "-i" とすることで postmaster -i として実行します。
PostgreSQL では複数のデータベースを持つことができます(世の中には一つのシステムにデータベースを一つしか管理できないものもあります)。
データベースの作成には createdbコマンドを使用します。-p オプションで使用するポート番号を指定します。
尚、PostgreSQL の場合、異なるデータベース間でテーブルの結合などはできません。
# createdb -p 15432 dncdb |
「psql -p 15432 dncdb」とすれば、データベースに接続することができます。
通常は必要ありません。
# pg_dump -p 5432 -s dncdb | psql -d dncdb -p 15432 |
一般的にはユーザを作成してテーブルを作成して INSERTして ... UPDATEして ... などという流れになると思いますが、本サイトでは割愛します。
詳しいデータ件数やテスト手順等は公開できませんが、今回インストールした PostgreSQL 8.3.4 で検証したところ、バージョン 8.1.5 と比べて若干処理速度が速くなっています。
home | prev | next |
---|