UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

Sybaseの手動でデータベースを作る 〜基本設定〜

Sybaseの手動でデータベースを作る

〜基本設定〜


0.更新履歴

  • 2001.06.10 新規作成

1.はじめに

 このドキュメントは,Sybase ASE11.9.2上で,データベースを手動で作成する手順を示す.

2.データベースファイルの作成

 データベースの内容を保存するために,ディスク上にデバイスを作成する.

 Sybaseでいうデバイスとは,Oracleのデータベースファイル(表領域)に該当するものである

3.Disk init

  • デバイスは,disk initコマンドで作成する.
  • Disk Initは次の文法となる.

DISK INIT
  NAME = "Device_Name",
  PHYSNAME = "Physical_name",
  VDEVNO = virtual_device_number,
  SIZE = number of pages

  • 指定する項目は,次のとおりとなる.

項目 説明
Device_Name
 SQL Serverが参照する名前.
Physical_name
 物理ファイル名.
virtual_device_number
 仮想デバイスの番号を付ける. この番号は0〜255までで,0はシステムデバイスが利用している.
number of pages
 デバイスのサイズを指定.sizeは2K単位となり,単位は512の倍数で指定する.

3.1.仮想デバイスを増やす

  • 次のようにデバイスを作成する.

C:\>isql -Usa -P -SSYBASE01
1> DISK INIT
2>   NAME = "user_dev01",
3>   PHYSNAME = "e:\sybase_dev\user_dev01.dat",
4>   VDEVNO = 10,
5>   SIZE = 10240
6> go
Msg 5146, Level 16, State 1:
Line 1:
The VDEVNO of 10 is out of range.  The maximum VDEVNO allowed is 9.
1>

  • 指定した仮想デバイス番号の10は,最大値の9をオーバしているため作成できないというエラーになる.
  • 現在の設定値を調べる.

1> sp_configure "number of device"
2> go
 Parameter Name                 Default     Memory Used Config Value
         Run Value
 ------------------------------ ----------- ----------- ------------
        -----------
 number of devices                       10          #4          10
                  10

(1 row affected)
(return status = 0)
1>

  • デバイス数が10となっているので,masterデバイスが使っている0からカウントすると,9までの数値しか使えない.
  • デバイス数を20個に増やす.

1> sp_configure devices,20
2> go
 Parameter Name                 Default     Memory Used Config Value
         Run Value
 ------------------------------ ----------- ----------- ------------
        -----------
 number of devices                       10          #4          20
                  10

(1 row affected)
Configuration option changed. Since the option is static, Adaptive Server mus
be rebooted in order for the change to take effect.
(return status = 0)
1> sp_configure "number of device"
2> go
 Parameter Name                 Default     Memory Used Config Value
         Run Value
 ------------------------------ ----------- ----------- ------------
        -----------
 number of devices                       10          #4          20
                  10

(1 row affected)
(return status = 0)
1>

  • Adaptive Serverをリブートしないと設定値が変更されていないことを確認する.
  • isqlを終了し,サービスの再起動を行う.

1> quit

C:\>net stop "Sybase SQLServer _ SYBASE01"
Sybase SQLServer _ SYBASE01 サービスを停止中です.
Sybase SQLServer _ SYBASE01 サービスは正常に停止されました。



C:\>net start "Sybase SQLServer _ SYBASE01"
Sybase SQLServer _ SYBASE01 サービスを開始します..
Sybase SQLServer _ SYBASE01 サービスは正常に開始されました。



C:\>

  • 再度デバイス数を確認する.

1> sp_configure "number of device"
2> go
 Parameter Name                 Default     Memory Used Config Value
         Run Value
 ------------------------------ ----------- ----------- ------------
        -----------
 number of devices                       10          #8          20
                  20

(1 row affected)
(return status = 0)
1>

  • user_dev01user_dev02と,ログデバイス,作業用デバイスを作成して,そのファイルが作成されているか確認する.
  • デバイスで指定しいるSIZEは,2KB単位になる.
    • Sybase12.5までは,メモリやデバイスなど,全てのサイズの基本は2KB単位になる.

C:\>isql -Usa -P -SSYBASE01
1> DISK INIT
2>   NAME = "user_dev01",
3>   PHYSNAME = "e:\sybase\user_dev01.dat",
4>   VDEVNO = 10,
5>   SIZE = 102400
6> go
1> DISK INIT
2>   NAME = "user_dev02",
3>   PHYSNAME = "e:\sybase\user_dev02.dat",
4>   VDEVNO = 11,
5>   SIZE = 102400
6> go
1> DISK INIT
2>   NAME = "log_dev01",
3>   PHYSNAME = "e:\sybase\log_dev01.dat",
4>   VDEVNO = 12,
5>   SIZE = 102400
6> go
1> DISK INIT
2>   NAME = "temp_dev01",
3>   PHYSNAME = "e:\sybase\temp_dev01.dat",
4>   VDEVNO = 13,
5>   SIZE = 102400
6> go
1> !!dir e:\sybase_dev
[sh:dir e:\sybase_dev]
 ドライブ E のボリューム ラベルがありません。

 ボリューム シリアル番号は 446D-DCE9 です


 e:\sybase_dev のディレクトリ

2001/06/04  21:45       <DIR>          .
2001/06/04  21:45       <DIR>          ..
2001/06/04  21:44          209,715,200 log_dev01.dat
2001/06/04  21:45          209,715,200 temp_dev01.dat
2001/06/04  21:43          209,715,200 user_dev01.dat
2001/06/04  21:43          209,715,200 user_dev02.dat
               4 個のファイル         838,860,800 バイト

               2 個のディレクトリ     487,391,232 バイトの空き領域
1>

  • sysdevices表を参照して,デバイスの状態を表示する.

1> SELECT name,status,cntrltype,low,high FROM sysdevices
2> go
 name                           status cntrltype low         high
 ------------------------------ ------ --------- ----------- -----------
 log_dev01                           2         0   201326592   201428991
 master                              3         0           0       25599
 sysprocsdev                         2         0    16777216    16807935
 tapedump1                          16         3           0       20000
 tapedump2                          16         3           0       20000
 temp_dev01                          2         0   218103808   218206207
 user_dev01                          2         0   167772160   167874559
 user_dev02                          2         0   184549376   184651775

(8 rows affected)
1>

  • Status
    • 2 -> 物理ディスク
    • 16 -> ダンプデバイス(テープまたはディスク)
  • cntrltype
    • 0 -> データベースデバイス
    • 3 -> テープのダンプデバイス

4.Create Database

 作成したデバイスの上に,データベースを作成する.

 ここでは,2つのデバイスをユーザ領域とし,1つのログデバイス,1つのテンポラリデバイスを定義する.

  • create database文を実行する.

1> CREATE DATABASE user_db
2>   ON user_dev01 = 200,
3>      user_dev02 = 200
4>   LOG ON
5>      log_dev01 = 200
6> go
CREATE DATABASE: ディスク 'user_dev01' に 102400 ページを割り付けています。
CREATE DATABASE: ディスク 'user_dev02' に 102400 ページを割り付けています。
CREATE DATABASE: ディスク 'log_dev01' に 102400 ページを割り付けています。
1>

  • このデータベースでは,ユーザ領域としてuser_dev01user_dev02を,それぞれ200MBつづ,つまり400MBのユーザ領域を確保している.
  • また,log_dev01デバイスをログ用のデバイスとし,200MB分の領域としている.
    • ログデバイスを単独のデバイスとしておくことで,dump transactionが実行できるなどの利点がある.
  • ログデバイスの設定を確認する.

1> use user_db
2> go
1> sp_helplog
2> go
データベース 'user_db' では、デバイス 'log_dev01' でログが開始されます。

(return status = 0)
1>

  • テンポラリデバイスを定義する.

1> ALTER DATABASE tempdb
2>   ON temp_dev01 = 200
3> go
ディスク temp_dev01 でデータベースを 102400 ページ分拡張しています。
1>

5.データベースオプションを設定する

  • チェックポイントのイベントが発生した時に,トランザクションログを切り捨てる設定を行う.
    • デフォルトのままにしておくと,dump transactionを行うまでトランザクションログは増えつづける.
    • データベースオプションを実行する場合,masterデータベースで処理を行う.

1> use master
2> go
1> sp_dboption "user_db","trunc log on chkpt",true
2> go
データベース 'master'
のログ・セグメント内の使用可能な空き領域が非常に少なくなっています。このデータベー
スに今後行われる変更は、領域が使用できて、ログが正常にダンプされるようになるまで
 中断 です。

Msg 1105, Level 17, State 4:
Procedure 'sp_dboption', Line 525:
'logsegment'セグメントが満杯か空き領域がないので、database 'master'のobject
'syslogs'に領域を割り付けできません。syslogs
の領域不足の場合は、トランザクションログをダンプしてください。それ以外は、ALTER
DATABASEかsp_extendsegmentでセグメントのサイズを増やしてください。

'user_db' データベースに対してデータベース・オプション 'trunc log on chkpt' が

ON になりました。

変更されたデータベースで CHECKPOINT コマンドを実行してください。

(return status = 0)
1>

  • ログデバイス領域が足りないとの事.
  • トランザクションログをダンプし,再度設定する.
  • sp_dboptionを設定した後は,checkpointを実行する.

1> dump transaction user_db with no_log
2> go
1> sp_dboption "user_db","trunc log on chkpt",true
2> go
'user_db' データベースに対してデータベース・オプション 'trunc log on chkpt' が

ON になりました。

変更されたデータベースで CHECKPOINT コマンドを実行してください。
(return status = 0)
1> checkpoint
2> go
1>

  • バルクコピーコマンド(bcpコマンド)やSELECT INTO文を使えるようにする.

1> sp_dboption "user_db","select into/bulkcopy",true
2> go
'user_db' データベースに対してデータベース・オプション 'select
into/bulkcopy/pllsort' が ON になりました。

変更されたデータベースで CHECKPOINT コマンドを実行してください。

(return status = 0)
1> checkpoint
2> go
1>

  • ここまでで,基本的なデータベース作成が終了しているが,この次はデータベースのカスタマイズが必要となる.



広告スペース
Google