SSブログ

DB2 Express-C 11.1 を Ubuntu16.04 にインストール [RDBMS]

唐突に DB2 を手元の Ubuntu 16.04にインストールしようと試みる。

サイトは、URL が変わると困るので、ぐぐって DB2 Express-C 11.1 のダウンロードサイトを探してもらうとして、IBM ID というのを登録(メールアドレスとパスワードと国を入れるだけ)するとDB Express-C 11.1 というのがダウンロードできるようになる。

Linux 版と Windows 10版があって、v11.1_linuxx64_expc.tar.gz をダウンロードした

インストール手順は
- http://www.infoscoop.org/blogjp/2014/04/30/install-or-upgrade-db2-on-linux/
- http://dbtk.jp/2016/06/05/db2-express-c-on-ubuntu/
あたりを参考にした(主に下のやつ)

なんか、64bit 版だし、インストールしなくていいものもあるような気がするけど、
試行錯誤している余裕もないので、参考情報をもとに、
以下のようなパッケージをインストール(とユーザーを2つ追加)した

sudo apt-get install libpam0g:i386
sudo apt-get install build-essential
sudo apt-get install libaio1
sudo apt-get install ksh

sudo groupadd db2iadm1
sudo useradd -g db2iadm1 -m -d /home/db2inst1 db2inst1
sudo passwd db2inst1

sudo groupadd db2fadm1
sudo useradd -g db2fadm1 -m -d /home/db2fenc1 db2fenc1
sudo passwd db2fenc1

インスタンスユーザー(今回は db2inst1)というインスタンスの所有者のユーザーと
fencedユーザー(今回は db2fenc1)というユーザー定義関数やストアード・プロシージャーを実行するユーザーが必要らしい。

次にB2 のインストール

tar zvf v11.1_linuxx64_expc.tar.gz
cd expc
sudo ./db2_install

インスタンスの作成
sudo /opt/ibm/db2/V11.1/instance/db2icrt -u db2fenc1 db2inst1

ポートの設定
/etc/services に
db2c_db2inst1 50000/tcp
が追加されているはず(されてなかったら追加)

以下、
$ su - db2inst1
として
db2inst1 ユーザーで実行

サービスの登録?
$ db2set DB2COMM=tcpip
$ db2 update dbm cfg using SVCENAME db2c_db2inst1

サンプルデーターベースの作成
$ /opt/ibm/db2/V11.1/bin/db2sampl

必要なインストールはここまで


サービスの起動
$ db2start


コマンドラインプロセッサーを起動して接続&SQL実行
db2inst1@ubuntu1604:~$ db2
(c) Copyright IBM Corporation 1993,2007
Command Line Processor for DB2 Client 11.1.0

You can issue database manager commands and SQL statements from the command
prompt. For example:
    db2 => connect to sample
    db2 => bind sample.bnd

For general help, type: ?.
For command help, type: ? command, where command can be
the first few keywords of a database manager command. For example:
 ? CATALOG DATABASE for help on the CATALOG DATABASE command
 ? CATALOG          for help on all of the CATALOG commands.

To exit db2 interactive mode, type QUIT at the command prompt. Outside
interactive mode, all commands must be prefixed with 'db2'.
To list the current command option settings, type LIST COMMAND OPTIONS.

For more detailed help, refer to the Online Reference Manual.

db2 => connect to sample

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.1.0
 SQL authorization ID   = DB2INST1
 Local database alias   = SAMPLE

db2 => select * from staff where dept = 20

ID     NAME      DEPT   JOB   YEARS  SALARY    COMM
------ --------- ------ ----- ------ --------- ---------
    10 Sanders       20 Mgr        7  98357.50         -
    20 Pernal        20 Sales      8  78171.25    612.45
    80 James         20 Clerk      -  43504.60    128.20
   190 Sneider       20 Clerk      8  34252.75    126.50

  4 record(s) selected.

コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

Apache Derby をソースからコンパイルしてネットワークサーバーとして動かしてみる [RDBMS]

Apache Derby というのは Java で書かれた RDBMSだそうで。
http://db.apache.org/derby/

手元の環境は、Mac OS X 上の JDK 1.8.0_60

最近では、その Apache Derby が javadb http://www.oracle.com/technetwork/jp/java/javadb/overview/index.html という名前で JDK に組み込まれていて
/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/db/bin
に $PATH を通して環境変数 $DERBY_HOME を設定すれば使えそうだが、今回 trunk のソースからコンパイルして動かしてみた。


【環境設定の設定】
たとえば $HOME/derby に環境を作るとすると・・・

.profile などに、以下の環境変数の設定

export DERBY_HOME=$HOME/derby
export PATH=$PATH:$DERBY_HOME/generated/bin

環境変数 $JAVA_HOME も必要になるので $JAVA_HOME が設定されてなかったら

export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"

も必要(だった)

【リポジトリの trunk から取ってきたソースからコンパイル】

$ cd $HOME
$ svn co https://svn.apache.org/repos/asf/db/derby/code/trunk/ derby
$ cd derby
$ ant all
$ ant buildjars
$ ln -s $DERBY_HOME/jars/sane $DERBY_HOME/lib


【ネットワークサーバーとして起動】

$ startNetworkServer
Sun May 29 19:14:33 JST 2016 : セキュリティ・マネージャがBasicサーバー・セキュリティ・ポリシーを使用してインストールされました。
Sun May 29 19:14:34 JST 2016 : Apache Derby Network Server - 10.13.0.0 alpha - (1745974)が起動し、ポート1527で接続の受入れ準備が完了しました

【クライアントから接続】

$ ij
ijバージョン10.13
ij> connect 'jdbc:derby://localhost/testDB;create=true';
ij> show tables;
TABLE_SCHEM |TABLE_NAME |REMARKS
------------------------------------------------------------------------
SYS |SYSALIASES |
SYS |SYSCHECKS |
...(略)
SYSIBM |SYSDUMMY1 |

23行が選択されました
ij>


2019-04-28追記 Github に git のミラーがあった
https://github.com/apache/derby
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

macports で Postgresql9.5 インストール [RDBMS]

気がついたらmacports で Postgresql9.5 alpha2 というのがインストールできるようになってた
ふと思い立ってインストールしてみたが、いつも同じようなところで試行錯誤しているのでメモしておく。

ここらへんを参考にした
https://github.com/codeforamerica/ohana-api/wiki/Installing-PostgreSQL-with-MacPorts-on-OS-X

# Mac Ports でインストール
sudo port install postgresql95-server

# インスタンス作成
sudo mkdir -p /opt/local/var/db/postgresql95/defaultdb
sudo chown postgres:postgres /opt/local/var/db/postgresql95/defaultdb
sudo su postgres -c '/opt/local/lib/postgresql95/bin/initdb -D /opt/local/var/db/postgresql95/defaultdb'

# Authentication METHOD 変えたい場合、
sudo vi /opt/local/var/db/postgresql95/defaultdb/pg_hba.conf

# デーモンの起動、停止、再起動のエイリアス
alias pg95_start='sudo /opt/local/etc/LaunchDaemons/org.macports.postgresql95-server/postgresql95-server.wrapper start'
alias pg95_stop='sudo /opt/local/etc/LaunchDaemons/org.macports.postgresql95-server/postgresql95-server.wrapper stop'
alias pg95_restart='sudo /opt/local/etc/LaunchDaemons/org.macports.postgresql95-server/postgresql95-server.wrapper restart'

/opt/local/bin にパスが通っていると以下のコマンドでログインできる

psql95 -U postgres

上の 95 を 93 とか 94 とか変更すると 9.3 とか 9.4 とかインストールできた
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

SQL 文を試す sqlfiddle.com [RDBMS]

どこがどういう理由で費用負担してるのかよくわからないのだが、
http://sqlfiddle.com/
というのがあるということを教えてもらった。

上のメニューからデーターベースの種類を選んで、(デフォルトは MySQL 5.6)
左上のペインで CREATE TABLE 文と INSER 文でデータを作成して
右上のペインで SELECT すると、下に結果が出る。


MySQL, PostgreSQL, SQLite の他に
Oracle 11gR2 と MS SQL Server 2014 が使えるらしい。
ありがたい

コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

PostgreSQL の pg_tgram についての覚え書き [RDBMS]

LIKE 演算子で、文字列が含まれているものを探したいというのは繰り返し出てくる

PostgreSQL にそんなの標準で入ってるんじゃなかったっけ?(良く知らない)ということで調べた

PostgreSQL 9.xにおける日本語全文検索について調べてみた
http://longkey1.net/blog/2013/05/08/about-japanese-textsearch-on-postgresql9/

pg_tgram のことだったみたい
http://www.postgresql.jp/document/9.2/html/pgtrgm.html
http://aoyagikouhei.blog8.fc2.com/blog-entry-255.html

中間一致検索でインデックスを使う
http://postgresql.at.webry.info/200803/article_1.html

PostgreSQL 9.x に pg_trgm を後から追加
http://d.hatena.ne.jp/furyu-tei/20140117/1389954589

RDS で使えるか→使えるっぽい
http://pgsqldeepdive.blogspot.jp/2013/11/rds-for-postgresql.html
http://recipe.kc-cloud.jp/archives/5012

コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

MySQL で日付、時刻の足し算 [RDBMS]

こういうのっていつもわかんなくなる。
Google で検索しても、 PHP での日付処理とかはでても MySQL の SQL 文で処理するのはなかなか出てこないなぁ。
http://answers.oreilly.com/topic/165-how-to-add-date-or-time-values-in-mysql/

今回やりたかったのは、「同じ日の 12:00 に設定しなおす」みたいな処理なので

update some_table set foo_date = timestamp(date(foo_date), '12:00');

みたいな感じにしたけど、こういう演算がもっと自由自在にできるようになりたいもんだ。

自分の /etc/my.cnf を記録しておく [RDBMS]

[client]
default-character-set = utf8

[mysqld]
default-storage-engine=InnoDB
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
ft_min_word_len=1

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

PostgreSQL や Firebird で自動採番された主キーの値を INSERT 時に知る [RDBMS]

・SQLite3 で id INTEGER PRIMARY KEY
・MySQLで id AUTO_INCRIMENT PRIMARY KEY
としておくと、cursor.execute() の後の cursor.lastrowid で、id の値が取ってこれる(Python的に)。
http://www.randynetwork.com/blog/46
それは知ってた。

んでもって、PostgreSQL(psycopg2) でも lastrowid って、とってこれるんだけど、それって oid で、主キーの値でないんだよねぇ、と思っていたら、PostgreSQL 8.2 から INSERT文 にRETURNING 句というのを付けると好きな値を取ってこれるらしい。
http://lists.initd.org/pipermail/psycopg/2008-July/006112.html

そして、Firebird でも 2.0 から使えるようになっていて、しかも FAQ。
http://www.firebirdfaq.org/faq243/
ちょっと試してみたところ、 kinterbasdb でも値が取得できる。

うーん、知らんかった。

ちなみに、Firebird 2.0 以降では、トリガーを使わなくてもシーケンス番号を設定することができるようになったので、これと組み合わせればシーケンス番号の追加のためだけのトリガーを作成しなくてもよくなる。
http://nakagami.blog.so-net.ne.jp/2006-04-01

Fusion IO アーリーアダプター(というかチャレンジャー?) [RDBMS]

いつもながら、Firebird News 経由
http://www.firebirdnews.org/?p=3381

http://sourceforge.net/mailarchive/message.php?msg_name=C3A0571DD64C48CC9A102817399D1C2D%40Tabulex.local

4 processor Opteron 850/16G Ultra320 15krpm 8 disk RAID の環境から
Quad Core の 2 CPU FusionIO の ioDrive 80G のうち 40 G を使う環境に変えたら
時間のかかるクエリで 8 秒だったのが 4 秒になったよ

・・・ってチャレンジャーだなぁ。
FusionIO
http://kakaku.com/pc/ssd/ma_2410/
ioDrive 80G
http://kakaku.com/item/K0000046111/

Firebird と PostgreSQL のどっちがいいの? [RDBMS]

StackOverFlow の質問
http://stackoverflow.com/questions/1331946/what-do-you-guys-think-of-postgres-and-firebird-databases

Windows 2003 .NET Framework 3.5 で Firebird と PostgreSQL でどっちがいい?という質問
バイアスのかかった回答を排除すると

・.NET Framework のドライバなら Firebird のがいい
・PHP とか Python なら PostgreSQL のドライバの方がいい
確かに、PHP の Firebird のドライバはかなりダメダメという話は聞いたことがある。
Python のドライバ(psycopg2)は開発体制がかなり手厚い。

ここまで、サーバーについての明確なこっちのがいいという回答なし。
性能的には、だいたい似たようなものではないかと思う。
Firebird は、バックアップ&レストアを定期的にやらないとデータがどんどんでっかくなっちゃうけど、 PostgreSQL だと(vacuum すれば)そんなことない、ということを言ってる人はいる。
Windows なら Firebird の方が歴史が長いという意見もあるが、現在の PostgreSQL の Windows 版が不安定だという意見は出てない。

StackOverFlow のデータベースは SQLServer だそうだが、
http://www.publickey.jp/blog/09/stackoverflowcom4pc.html
これくらいの規模で Firebird 使ってくれるひといないかな。