PostgreSQLのインストール
この記事は、PostgreSQL 8.4.3 を用いています。
PostgreSQLの最新版を取得
# wget ftp://ftp2.jp.postgresql.org/pub/postgresql/source/v8.4.3/postgresql-8.4.3.tar.gz ~省略~ 11:38:28 (15.41 MB/s) - `postgresql-8.4.3.tar.gz' を保存しました [16853436]
TARボールを展開
# tar -zxvf postgresql-8.4.3.tar.gz
~省略~
グループとユーザーの作成
# groupadd postgres # useradd -g postgres -d /home/postgres -m postgres # passwd postgres New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
コンパイルの準備
ここでは、各国語のサポートを有効にします。また、SSLでの接続も有効にします。
# cd postgresql-8.4.3 # ./configure --enable-nls=ja --with-openssl ~省略~
コンパイルを実行
# make ~省略~ make[1]: Leaving directory `/usr/local/src/postgresql-8.4.3/config' All of PostgreSQL successfully made. Ready to install.
インストール
インストール先は、/usr/local/pgsql になります。
# make install
~省略~
所有者の変更
# chown -R postgres.postgres /usr/local/pgsql
環境変数の登録
# su - postgres $ vi ~/.bash_profile ~省略~ export PGSQL_HOME=/usr/local/pgsql PATH=$PATH:$PGSQL_HOME/bin ~省略~ $ source ~/.bash_profile $ echo %PGSQL_HOME /usr/local/pgsql
データーベースの初期を実施
$ initdb -D /home/postgres/data -E UTF8 --no-locale データベースシステム内のファイルの所有者は"postgres"ユーザでした。 このユーザがサーバプロセスを所有しなければなりません。 データベースクラスタはロケールCで初期化されます。 デフォルトのテキスト検索設定はenglishに設定されました。 ~省略~ 成功しました。以下を使用してデータベースサーバを起動することができます。 postgres -D /home/postgres/data または pg_ctl -D /home/postgres/data -l logfile start ネットワークから接続できるように設定 $ vi /home/postgres/data/postgresql.conf ~省略~ listen_addresses = 'localhost,192.168.0.100/180'
起動スクリプトの準備
# cp /usr/local/src/postgresql-8.4.3/contrib/start-scripts/linux /etc/rc.d/init.d/pgsql
サービスの登録
# chmod 755 /etc/rc.d/init.d/pgsql # chkconfig pgsql on # service pgsql start Starting PostgreSQL: ok データファイルをインストール先のディレクトリとは別のディレクトリに作成する場合は、PGDATAを編集します。 # vi /etc/rc.d/init.d/pgsql ~省略~ PGDATA="/home/postgres/data" ~省略~
パスワードの設定
$ psql postgres=# alter user postgres with password 'password'; postgres=# \q
ネットワークから接続できるように設定
# vi /home/postgres/data/pg_hba.conf # "local" is for Unix domain socket connections only #local all all trust local all postgres md5 # IPv4 local connections: #host all all 127.0.0.1/32 trust host all postgres 127.0.0.1/32 md5 # IPv6 local connections: #host all all ::1/128 trust host all postgres ::1/128 md5
unixODBCのコンパイル
知人に更新が止まっていると指摘されたのでスルーしているものも掲載してみます。
ひとまず、unixODBCのコンパイル方法を掲載します。unixODBCのコンパイルは通常のコンパイルを実施するのと変わりありません。
unixODBCのサイト: http://www.unixodbc.org/
Downloadから最新のソースを取得します。この時点では、2.2.14-p2 が最新でした。
# cd /usr/local/src # wget http://www.unixodbc.org/unixODBC-2.2.14-p2.tar.gz --12:28:51-- http://www.unixodbc.org/unixODBC-2.2.14-p2.tar.gz => `unixODBC-2.2.14-p2.tar.gz' www.unixodbc.org をDNSに問いあわせています... 87.106.19.214 www.unixodbc.org|87.106.19.214|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 2,212,370 (2.1M) [application/x-gzip] 100%[==============================================>] 2,212,370 585.62K/s ETA 00:00 11:29:00 (584.34 KB/s) - `unixODBC-2.2.14-p2.tar.gz' を保存しました [2212370/2212370]
次に展開します。
# tar -zxvf http://www.unixodbc.org/unixODBC-2.2.14-p2.tar.gz
展開が全て終了したら configure を実施します。なお、ここでは、GUIを無効にする --disable-gui を付与しています。
# cd unixODBC-2.2.14-p2 # ./configure --disable-gui
最後にコンパイルしてインストールします。
# make
~省略~(結構長いです。)
# make install
~省略~
unixODBCは、インストール先を指定しないと /usr/local/lib/ にインストールされます。
なお、インストールされるライブラリにはPostgreSQLなどのODBCドライバもインストールされます。(libodbcpgsql.so)しかし、このODBCドライバはunixODBCが提供するものでありPostgreSQLで提供されるODBCドライバとは異なりますので注意する必要があります。
なお、インストールの成否は、isql ユーティリティを実行することで確認できます。
$ isql --version
unixODBC x.x.xx
Oracle 専用サーバーと共有サーバー
Oracle Database には、専用サーバーと共有サーバーの2種類の接続モードがあります。これらのうち、共有サーバーはマルチスレッドサーバーとも呼ばれていました。
この接続モードを簡単に区別すると下記のように言えます。
- 専用サーバー ... 1接続につき、1プロセスで接続するモード
- 共有サーバー ... 1つのプロセスを複数の接続で共有するモード
しかし、Windows 版の Oracle Database では専用サーバーであっても1接続につき、1プロセスが起動されるわけではなく、マルチスレッドで動作しているように見えます。確認は行っていませんが、これは、Windows の デスクトップヒープ による問題を回避するためだと思われます。
一般的に性能を優先する場合は、専用サーバーでインスタンスを作成しますが、セッション数が多いなどの理由からリソースを有効活用するために共有サーバーを選択する場合もあります。
Oracle SQLトレース
以前から忘れる前に投稿しておかなければならないと思っていた、Oracleで接続しているセッションだけのSQLトレースを取得する方法です。
SQL> ALTER SESSION SET EVENTS '10046 trace name context forever,level 12'; SQL> ALTER SESSION SET SQL_TRACE = 'TRUE'; ~トレースするSQL~ SQL> ALTER SESSION SET SQL_TRACE = 'FALSE';
トレースファイルの出力先は、下のSQL文で調べることができます。
SQL> SELECT * FROM V$PARAMETER WHERE NAME = 'USER_DUMP_DEST';
初期化パラメータに指定がない場合は、$ORACLE_BASE/admin//udump に出力されます。
また、一般的に出力後は整形(TKPROF)を行いますが、バインドパラメータの変数を参照するときは整形すると閲覧できなくなります。
たとえば、イベントのレベルには下のようなものがあります。
EVENTS="10210 trace name context forever, level 10" -- テーブル EVENTS="10211 trace name context forever, level 10" -- インデックス EVENTS="10210 trace name context forever, level 2" -- データブロックチェック EVENTS="10211 trace name context forever, level 2" -- インデックスブロックチェック EVENTS="10235 trace name context forever, level 1" -- メモリヒープチェック EVENTS="10049 trace name context forever, level 2" -- メモリ保護カーソル
Oracle DataPump
Oracle 10g から 9i までの EXP と IMP ユーティリティは推奨されなくなっています。それでは、新しいユーティリティは何かというと Oracle DataPump と呼ばれているものです。
優位性としては、高速で安全らしいのですが、検証もしていないのでわかりません。
まず、使う前に、実行するユーザにDIRECTORYオブジェクトの読み書き権限が必要になります。
また、このDIRECTORYもユーザ単位で指定して作成すること方がベストでしょう。
sqlplus user/password@SID SELECT * FROM DBA_DIRECTORIES; CREATE DIRECTORY SCOTT_DATAPUMP_DIR AS 'ディレクトリ';sqlplus /nolog connect as sysdba GRANT READ,WRITE ON DIRECTORY SCOTT_DATAPUMP_DIR TO ユーザ;
次に、実際の使い方ですが、以降の実行方法で行うことができます。(ブログのスペース上で改行しているように見える場合もありますが、実行行は全て1行です。)
見積もり
expdp scott/tiger@ORCL ESTIMATE_ONLY=yエクスポート expdp scott/tiger@ORCL directory=SCOTT_DATAPUMP_DIR dumpfile=SCOTT.DMP logfile=SCOTT.LOG
エクスポートで出力ファイルを分割することもできます。
expdp user/password?directory=DIR01?dumpfile=SAMPLE.dmp,DIR02:SAMPLE02%U.dmp?logfile=DIR02:SAMPLE.LOG?filesize=20M
サービスをコマンドプロンプトで開始/停止する
Windowsでコマンドプロンプトからサービスを停止したり開始したりりするには、net コマンドを利用すればできます。BATファイルなどを書く人は知っていることですね。
停止
SHELL> net stop サービス名
開始
SHELL> net start サービス名
JDBCのドライバとURL
各種ベンダのJARファイルとドライバクラス、URLを掲載します。オープンソースのものに関しては、バージョンにより異なる場合もありますので、ドキュメントを確認してください。(投稿時点:DB2、HiRDB、Symfowareなどは後日)
SQL Server 2008 JDBC Driver
JARファイル(JDBC 3.0): sqljdbc.jar JARファイル(JDBC 4.0): sqljdbc4.jar ドライバクラス: com.microsoft.sqlserver.jdbc.SQLServerDriver URL: jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks;user=MyUserName;password=*****;
SQL Server 2005 JDBC Driver
JARファイル(JDBC 3.0): sqljdbc.jar ドライバクラス: com.microsoft.sqlserver.jdbc.SQLServerDriver URL: jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks;user=MyUserName;password=*****;
Oracle Thin Driver
JARファイル(Java 1.2): classes12.jar JARファイル(Java 1.4): ojdbc14.jar JARファイル(Java 1.5): ojdbc5.jar ドライバクラス: oracle.jdbc.driver.OracleDriver URL: jdbc:oracle:thin:@localhost:1521:database_name
PostgreSQL(バージョンにより異なる?)
JARファイル: そのバージョンのJDBCドライバ ドライバクラス: org.postgresql.Driver URL: jdbc:postgresql://localhost:5432/database_name
JARファイル: mysql-connector-java-x.x.x-bin.jar ドライバクラス: com.mysql.jdbc.Driver URL: jdbc:mysql://localhost:3306/database_name