Sybase 資料一覧

データベースを新規に作成する方法

2007/8/25更新

対応バージョン: 11.9.2

データベースの作成にはまず物理ファイルをSybase用の論理デバイスとして割り当てて、それを1ファイル、あるいは複数ファイル組み合わせてデータベースとして構成する。

以下、順を追って説明する。

構成検討

まずデータベースの構成を検討する。

Sybaseのデータベースはデータ用の領域とログ用の領域の2種類に分けられるので、ここでは以下の構成と仮定して説明する。

データ領域1 : 1GB
データ領域2 : 2GB
ログ領域  : 500MB

論理デバイス割り当て

物理ファイルを作成し、それに論理デバイスを結びつける作業を行う。

論理デバイスはSybase内部で一意の番号で扱われるので、まず未使用のデバイス番号を調べる。

尚、今後の作業は全てmasterデータベース上で行う。

1> select distinct low/16777216 from sysdevices order by low
2> go

-----------
          :
         24

上記の例では24番まで使用していることが分かるので新たに25番を使用することとする。

次にデバイス(物理ファイル)を作成する。

データ領域1 (1GB)
1> disk init 
2> name = "datadisk1", ← 論理デバイス名
3> physname = "/tmp/datadisk1.dat", ← デバイスの物理ファイル名
4> vdevno = 25, ← 論理デバイス番号
5> size = 512000 ← デバイスサイズを2Kブロック単位で指定(512000ブロック * 2KB = 1GB)
6> go
データ領域2 (2GB)
1> disk init 
2> name = "datadisk2",
3> physname = "/tmp/datadisk2.dat",
4> vdevno = 26,
5> size = 1024000 ← 1024000ブロック * 2KB = 2GB
6> go
ログ領域 (0.5GB)
1> disk init
2> name = "logdisk_01", 
3> physname = "/tmp/logdisk1.dat", 
4> vdevno = 27, 
5> size = 256000 ← 256000ブロック * 2KB = 0.5GB
6> go

データベース作成

上記で作成した論理デバイスを使用してデータベースを作成する。

1> create database db1 on ← データベース「db1」作成開始
2> datadisk1 = 1000 ← データ領域として「datadisk1」を割り当て
3> log on logdisk1 = 500 ← ログ領域として「logdisk1」を割り当て
4> for load ← Exportファイルからのロード用指定
5> go

1> alter database db1 on datadisk2 = 2000 ← データ領域として「datadisk2」を追加割り当て
2> go

データベースの状態チェック

作成したデータベースの状態はsp_helpdbによって確認できる。

「for load」オプション付でデータベースを作成したのでstatus欄が「don't recover(リカバリ禁止)」になっている。

1> sp_helpdb db1
2> go
 name db_size   owner dbid created      status
 ---- --------- ----- ---- ------------ -------------
 db1  3500.0 MB sa       5 Feb 13, 2002 don't recover

 device_fragments size      usage       free kbytes
 ---------------- --------- ----------- -----------
 datadisk1        1000.0 MB  data only      1022016
 datadisk2        2000.0 MB  data only      2012342
 logdisk1          500.0 MB  log only         51124

データImport

あらかじめ用意しておいたExportファイルからデータをImportする。

ここでは2つのファイルからImportするものとする。

1> load database db1
2>      from "/tmp/data1.dmp"
3> stripe on "/tmp/data2.dmp"
4> go

データベースオンライン

データをImportしただけではデータベースは使用できないので、明示的にオンラインにする。

1> online database db1
2> go
  Database 'db1' is now online.

再度データベースの状態を確認すると、status欄が「no options set(オプションなし)」に変化して、データベースの残り容量が若干減っているのが分かる。

1> sp_helpdb db1
2> go
 name db_size   owner dbid created      status
 ---- --------- ----- ---- ------------ --------------
 db1  3500.0 MB sa       5 Feb 13, 2002 no options set

 device_fragments size      usage       free kbytes
 ---------------- --------- ----------- -----------
 datadisk1        1000.0 MB  data only       982016 ← 残り容量が微減
 datadisk2        2000.0 MB  data only      2012342
 logdisk1          500.0 MB  log only         51124