Mac De Oracle Heterogeneous! #3 Tweet
前回MySQLをインストールした PowerBook G4 1Ghz 17inch (MacOSX 10.4.3 Tiger)にPostgreSQL 7.4.9 もインストールしデータベースを構築する。
http://wwwmaster.postgresql.org/download/mirrors-ftp?file=source%2Fv7.4.9%2Fpostgresql-7.4.9.tar.gzからpostgresql-7.4.9.tar.gzを入手し、適当なフォルダ(/tmpなどで解凍する)。
この例では、/Volumes/WorkVol/temp以下で解凍した。
注意)
今回もPostgreSQLのインストールやデータベース作成は簡単に(それなりに端折って)記述しているのであしからず。
また、MacOSXにPostgreSQLをインストールする記事を書いているBlogも多数あるのでそれらも参考にしてほしい。
(Mac De Oracleでは、MySQLやPostgreSQLの構築方法がメインではなく、Oracle Generic Connectivityの動きを確認する事が目的なので。)
Terminalを起動しPostgreSQL 7.4.9を解凍して出来たディレクトリに移動する。作業はrootで行うので、sudo shでrootになっておく。
Last login: Fri Nov 25 15:56:39 on ttyp1
Welcome to Darwin!
pb17:˜ discus$ sudo sh
Password:
sh-2.05b#
sh-2.05b# cd /Volumes/WorkVol/temp/postgresql-7.4.9
sh-2.05b# ls -l
total 1752
-rw-r--r-- 1 root wheel 1192 Nov 26 08:43 COPYRIGHT
-rw-r--r-- 1 root wheel 3460 Nov 26 08:43 GNUmakefile.in
-rw-r--r-- 1 root wheel 269744 Nov 26 08:43 HISTORY
-rw-r--r-- 1 root wheel 40847 Nov 26 08:43 INSTALL
-rw-r--r-- 1 root wheel 1432 Nov 26 08:43 Makefile
-rw-r--r-- 1 root wheel 1376 Nov 26 08:43 README
-rw-r--r-- 1 root wheel 442 Nov 26 08:43 aclocal.m4
drwxr-xr-x 19 root wheel 646 Nov 26 08:42 config
-rwxr-xr-x 1 root wheel 523803 Nov 26 08:43 configure
-rw-r--r-- 1 root wheel 39896 Nov 26 08:43 configure.in
drwxr-xr-x 53 root wheel 1802 Nov 26 08:42 contrib
drwxr-xr-x 30 root wheel 1020 Nov 26 08:42 doc
drwxr-xr-x 22 root wheel 748 Nov 26 08:43 src
日本語EUCが利用できるようにconfigureする。
sh-2.05b# ./configure --enable-multibyte=EUC_JP
checking build system type... powerpc-apple-darwin8.3.0
checking host system type... powerpc-apple-darwin8.3.0
checking which template to use... darwin
checking whether to build with 64-bit integer date/time support... no
checking whether NLS is wanted... no
checking for default port number... 5432
checking for gcc... gcc中略
configure: using CPPFLAGS=
configure: using LDFLAGS=
checking for gawk... no
checking for mawk... no
checking for sgmlspl... no
configure: creating ./config.status
config.status: creating GNUmakefile
config.status: creating src/Makefile.global
config.status: creating src/include/pg_config.h
config.status: linking ./src/backend/port/tas/dummy.s to src/backend/port/tas.s
config.status: linking ./src/backend/port/dynloader/darwin.c to src/backend/port/dynloader.c
config.status: linking ./src/backend/port/posix_sema.c to src/backend/port/pg_sema.c
config.status: linking ./src/backend/port/sysv_shmem.c to src/backend/port/pg_shmem.c
config.status: linking ./src/backend/port/dynloader/darwin.h to src/include/dynloader.h
config.status: linking ./src/include/port/darwin.h to src/include/pg_config_os.h
config.status: linking ./src/makefiles/Makefile.darwin to src/Makefile.port
sh-2.05b#
エラーもなくconfigureできたのでコンパイルする。
sh-2.05b# make
make -C doc all
gzip -d -c man.tar.gz | /usr/bin/tar xf -
for file in man1/*.1; do ¥
mv $file $file.bak && ¥
sed -e 's/¥¥fR(l)/¥¥fR(7)/' $file.bak >$file && ¥
rm -f $file.bak || exit; ¥
done
/bin/sh ../config/mkinstalldirs man7
mkdir man7
for file in manl/*.l; do ¥
sed -e '/^¥.TH/s/"l"/"7"/' ¥
-e 's/¥¥fR(l)/¥¥fR(7)/' ¥
$file >man7/`basename $file | sed 's/.l$/.7/'` || exit; ¥
done
make -C src all
make -C port all
gcc -no-cpp-precomp -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes -Wmissing-declarations -I../../src/include -c -o path.o path.c
gcc -no-cpp-precomp -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes -Wmissing-declarations -I../../src/include -c -o sprompt.o sprompt.c
gcc -no-cpp-precomp -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes -Wmissing-declarations -I../../src/include -c thread.c
ar crs libpgport.a path.o sprompt.o thread.o
make -C backend all中略
rm -f libplpgsql.so
ln -s libplpgsql.so.1.0 libplpgsql.so
All of PostgreSQL successfully made. Ready to install.
sh-2.05b#
コンパイルエラーもないようなので、インストールする。
sh-2.05b# make install
make -C include install
mkdir /usr/local/pgsql/include
mkdir /usr/local/pgsql/include/libpq
mkdir /usr/local/pgsql/include/internal
mkdir /usr/local/pgsql/include/internal/libpq
mkdir /usr/local/pgsql/include/internal/lib中略
make[4]: Nothing to be done for `all'.
/bin/sh ../../../config/install-sh -c pg_encoding /usr/local/pgsql/bin/pg_encoding
make -C pl install
make -C src install
/bin/sh ../../../../config/install-sh -c -m 755 libplpgsql.so.1.0 /usr/local/pgsql/lib/plpgsql.so
PostgreSQL installation complete.
sh-2.05b#
次に キャタクタセット EUC_JP でデータベースクラスタを作成する。
データベースクラスタを作成しないと、インスタンスが起動できないので注意する。
(尚、MySQL、PostgreSQLは、Oracleとは異なり1インスタンスで複数データベースを管理することができる)
データベースクラスタを作成するには initdb コマンドを利用する。
尚、データベースクラスタは、/usr/local/pgsql/data以下に作成することにする。
インストールが終了すると postgres というユーザが作成されているのでそのユーザで作業する。
pb17:˜ discus$ su - postgres
Password:
pb17:˜ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data -E EUC_JP
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 locale C.
fixing permissions on existing directory /usr/local/pgsql/data... ok
creating directory /usr/local/pgsql/data/base... ok
creating directory /usr/local/pgsql/data/global... ok
creating directory /usr/local/pgsql/data/pg_xlog... ok
creating directory /usr/local/pgsql/data/pg_clog... ok
selecting default max_connections... 50
selecting default shared_buffers... 300
creating configuration files... ok
creating template1 database in /usr/local/pgsql/data/base/1... ok
initializing pg_shadow... ok
enabling unlimited row size for system tables... ok
initializing pg_depend... ok
creating system views... ok
loading pg_description... ok
creating conversions... ok
setting privileges on built-in objects... ok
creating information schema... ok
vacuuming database template1... ok
copying template1 to template0... okSuccess. You can now start the database server using:
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
or
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile startpb17:˜ postgres$
データベースクラスタができたのでPostgreSQLのインスタンスを起動する。
pb17:˜ postgres$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
postmaster successfully started
問題なく起動したようだ。
Oracleでいうところの、SQL*Plusに相当するpsqlを起動する前に環境変数は以下のように設定しておく。
クライアントのキャラクタセットはSJISにする。
pb17:˜ postgres$ cat .bash_profile
export PATH=$PATH:/usr/local/pgsql/bin
export PGDATA=/usr/local/pgsql/data# client encoding
export PGCLIENTENCODING=SJISpb17:˜ postgres$
pb17:˜ postgres$ . .bash_profile
次に postgresql749 というデータベースを作成する。
作成済みデータベースは、psql -l で確認できる。
pb17:˜ postgres$ createdb postgresql749
CREATE DATABASE
pb17:˜ postgres$
pb17:˜ postgres$ psql -l
List of databases
Name | Owner | Encoding
---------------+----------+----------
postgresql749 | postgres | EUC_JP
template0 | postgres | EUC_JP
template1 | postgres | EUC_JP
(3 rows)
psql で postgresql749 データベースに接続する。
pb17:˜ postgres$ psql postgresql749
Welcome to psql 7.4.9, the PostgreSQL interactive terminal.Type: ¥copyright for distribution terms
¥h for help with SQL commands
¥? for help on internal slash commands
¥g or terminate with semicolon to execute query
¥q to quitpostgresql749=#
※ scott ユーザを作成する。
postgresql749=# create user scott with password 'xxxxxxx';
CREATE USERpostgresql749=# ¥du
List of database users
User name | User ID | Attributes
-----------+---------+----------------------------
postgres | 1 | superuser, create database
scott | 100 |
(2 rows)
postgresql749=#
postgresql749=# select * from pg_user;
usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig
----------+----------+-------------+----------+-----------+----------+----------+-----------
postgres | 1 | t | t | t | ******** | |
scott | 100 | f | f | f | ******** | |
(2 rows)
postgresql749=#
ユーザと同じ名称のスキーマを作成し所有者をscottにする。このようにすることでscottユーザがログインすると優先スキーマがscottスキーマになり、Oracleに近い感覚で利用できることになります。
(Oracleに慣れてしまっていると、つい、ユーザとスキーマが同じようなイメージで固まってしまいますが、実際には違うオブジェクトだということ思い出しますね。たまにはOracle以外のデータベースで遊ぶのもいいかもしれません。)
postgresql749=# create schema scott authorization scott; CREATE SCHEMA postgresql749=#
postgresql749=# ¥dnpb17:˜ postgres$ psql -U scott postgresql749 Welcome to psql 7.4.9, the PostgreSQL interactive terminal.
List of schemas
Name | Owner
--------------------+----------
information_schema | postgres
pg_catalog | postgres
pg_temp_1 | postgres
pg_toast | postgres
public | postgres
scott | scott
(6 rows)Type: ¥copyright for distribution terms
¥h for help with SQL commands
¥? for help on internal slash commands
¥g or terminate with semicolon to execute query
¥q to quit
postgresql749=> select current_schema();
current_schema
----------------
scott
(1 row)
さて、psqlというクライアントでは、AUTOCOMIT ON がデフォルトになっている。これでは都合が悪いので ホームディレクトリに .pgsqlrc を作成し、¥set AUTOCOMMIT off と記述しておく。
postgresql749=#
pb17:˜ postgres$ cat .psqlrc
¥set AUTOCOMMIT off
pb17:˜ postgres$
さて、最後に表を作成する。MySQLと同じくemp表を作成してデータの登録、参照までを行う。
pb17:˜ postgres$ psql -U scott postgresql749
Welcome to psql 7.4.9, the PostgreSQL interactive terminal.Type: ¥copyright for distribution terms
¥h for help with SQL commands
¥? for help on internal slash commands
¥g or terminate with semicolon to execute query
¥q to quitpostgresql749=>
postgresql749=> create table emp
postgresql749-> (
postgresql749(> empno numeric(10,0) primary key,
postgresql749(> ename varchar(40)
postgresql749(> );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "emp_pkey" for table "emp"
CREATE TABLEpostgresql749=> ¥d emp
Table "public.emp"
Column | Type | Modifiers
--------+-----------------------+-----------
empno | numeric(10,0) | not null
ename | character varying(40) |
Indexes:
"emp_pkey" primary key, btree (empno)
postgresql749=>
postgresql749=> ¥dtList of relations
Schema | Name | Type | Owner
--------+--------+-------+-------
scott | emp | table | scott
(1 row)postgresql749=> insert into emp values(1,'¥202¥331¥202¥260¥202¥331¥202¥260');
INSERT 25420 1
postgresql749=> insert into emp values(2,'¥202¥331¥202¥260');
INSERT 25421 1
postgresql749=> insert into emp values(3,'¥211¥273¥202¥257¥202¥310¥202¥242¥202¥346¥202¥313¥201`¥201[');
INSERT 25422 1
postgresql749=> commit;
COMMIT
postgresql749=> select * from emp;
empno | ename
-------+------------------
1 | ほげほげ
2 | ほげ
3 | 化けないよね〜ー
(3 rows)
postgresql749=>
ここまでで、PowerBook G4 1Ghz 17inch (MacOSX 10.4.3 Tiger)に MySQL 4.0.25 mysqldb (SJIS) と PostgreSQL 7.4.9 postgresql749 (EUC_JP) という2つのデータベースができた。
次回は、MacOSX 10.4.3 Tiger Server に MySQL4.1.13a、そしてWindows XP Proに MySQL4.0.26-ntのデータベースを作成しODBCドライバの構成まで書く予定である。(尚、Windows XP Proには、Oracle10g R1 EEがインストール済みでデータベースも作成済みである)
| 固定リンク | 0 | コメント (0) | トラックバック (0)
最近のコメント