UJP - 技術情報

Life is fun and easy!

不正IP報告数

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

     

Sybaseでデータベースを消す

Sybaseでデータベースを消す


0.更新履歴

  • 2001.12.08 新規作成

1.はじめに

 このドキュメントでは,Sybase SQL Server 11.0.3上に作成していたデータベースを消す手順を示す.

2.消すデータベースを確認する

1> sp_helpdb
2> go
 name                     db_size       owner   dbid   created
         status
 ------------------------ ------------- ------- ------ ----------
        --------------------------------------------------------
-----------
 DELETEDDB                     4608.0 MB test01       6 Nov 08, 2001
         オプションはセットされていません。
 master                          5.0 MB sa           1 Jan 01, 1900
         オプションはセットされていません。

 model                           2.0 MB sa           3 Jan 01, 1900
         オプションはセットされていません。

 pubs2                          50.0 MB scott        5 Oct 29, 2001
         オプションはセットされていません。

 sybsystemprocs                128.0 MB sa           4 Oct 29, 2001
         チェックポイントでのトランケー
 tempdb                       1026.0 MB sa           2 Nov 13, 2001
         オプションはセットされていません。

(return status = 0)
1>

  • 今回は,このDELETEDDBを消す.
  • データベースの詳細を調べる.

1> sp_helpdb DELETEDDB
2> go
 name                     db_size     owner       dbid   created
         status
 ---------------------- ------------- ----------- ------ ------------
        -------------------------------------------------------------
-----------
 DELETEDDB                   4608.0 MB test01           6 Nov 08, 2001
         オプションはセットされていません。

 device_fragments       size       usage        free kbytes
 ---------------------- ---------- ------------ -------
 DELETEDDB_dat01         512.0 MB   データ専用    359552
 DELETEDDB_dat02         512.0 MB   データ専用    524288
 DELETEDDB_dat_kidou01   512.0 MB   データ専用    523936
 DELETEDDB_dat_kidou02   512.0 MB   データ専用     53888
 DELETEDDB_dat_kidou03   512.0 MB   データ専用     16352
 DELETEDDB_dat_kidou04   512.0 MB   データ専用    427104
 DELETEDDB_idx01         512.0 MB   データ専用    508640
 DELETEDDB_idx02         512.0 MB   データ専用    524288
 DELETEDDB_log01         512.0 MB   ログ専用      338368
(return status = 0)

1>

  • 上記のようにデバイスが利用されていることがわかった.

3.データベースを消す

  • drop databaseコマンドで,データベースを消してみる.

1> drop database DELETEDDB
2> go
Msg 3702, Level 16, State 4:
Line 1:
データベース 'DELETEDDB' は現在使用中であるため、削除できません。

1>

  • 誰か接続しているために,消せない.
  • 誰が接続しているか,調べる.

1> sp_who
2> go
 spid   status       loginame     hostname   blk   dbname     cmd
 ------ ------------ ------------ ---------- ----- ---------- ----------------
      1 recv sleep   test01                  0     DELETEDDB  AWAITING COMMAND
      2 sleeping     NULL                    0     master     NETWORK HANDLER
      3 sleeping     NULL                    0     master     DEADLOCK TUNE
      4 sleeping     NULL                    0     master     MIRROR HANDLER
      5 sleeping     NULL                    0     master     HOUSEKEEPER
      6 sleeping     NULL                    0     master     CHECKPOINT SLEEP
      7 recv sleep   test01                  0     DELETEDDB  AWAITING COMMAND
      8 running      sa           admin      0     master     SELECT

(8 rows affected, return status = 0)
1>

  • spidが1番と7番が,このDELETEDDBを使用していることがわかる.
  • cmd行がAWAITING COMMANDなので,接続して何もしてなさそう.
  • よって,強制的に接続をきる.
  • spidを指定してkillコマンドを実行し,再度接続しているユーザを確認してみる.

1> kill 1
2> go
1> kill 7
2> go
1> sp_who
2> go
 spid   status       loginame     hostname   blk   dbname     cmd
 ------ ------------ ------------ ---------- ----- ---------- ----------------
      2 sleeping     NULL                    0     master     NETWORK HANDLER
      3 sleeping     NULL                    0     master     DEADLOCK TUNE
      4 sleeping     NULL                    0     master     MIRROR HANDLER
      5 sleeping     NULL                    0     master     HOUSEKEEPER
      6 sleeping     NULL                    0     master     CHECKPOINT SLEEP
      8 running      sa           admins     0     master     SELECT

(6 rows affected, return status = 0)
1>

  • 誰も接続していないことがわかった.
  • 再度,drop databaseコマンドを実行する.
  • sp_helpdbコマンドを使用して,データベースを確認する.

1> drop database DELETEDDB
2> go
1> sp_helpdb
2> go
 name                     db_size       owner   dbid   created
         status
 ------------------------ ------------- ------- ------ ----------
        --------------------------------------------------------
-----------
 master                          5.0 MB sa           1 Jan 01, 1900
         オプションはセットされていません。

 model                           2.0 MB sa           3 Jan 01, 1900
         オプションはセットされていません。

 pubs2                          50.0 MB scott        5 Oct 29, 2001
         オプションはセットされていません。

 sybsystemprocs                128.0 MB sa           4 Oct 29, 2001
         チェックポイントでのトランケー
 tempdb                       1026.0 MB sa           2 Nov 13, 2001
         オプションはセットされていません。

(return status = 0)
1>

  • DELETEDDBがなくなったことがわかる.

4.デバイスファイルを消す

  • データベースは消されたが,デバイスは残ったままとなる.
  • 以下のSQL文で確認する.

今存在しているデバイスの一覧を表示する.
select name,vdevno = low/power(2,24)
from master..sysdevices
order by 2

  • 実行してみる.

1> select name,vdevno = low/power(2,24)
2> from master..sysdevices
3> order by 2
4> go
 name                           vdevno
 ------------------------------ -----------
 master                                   0
 tapedump1                                0
 tapedump2                                0
 sysprocsdev                              1
 pubs2_dat01                              2
 tempdb_dat01                             3
 tempdb_dat02                             4
 DELETEDDB_dat01                          5
 DELETEDDB_idx01                          6
 DELETEDDB_idx02                          7
 DELETEDDB_log01                          8
 DELETEDDB_dat02                          9
 DELETEDDB_dat_kidou01                   10
 DELETEDDB_dat_kidou02                   11
 DELETEDDB_dat_kidou03                   12
 DELETEDDB_dat_kidou04                   13
 TEST1DB_dat01                           18
 TEST1DB_dat02                           19
 TEST1DB_dat03                           20
 TEST1DB_dat04                           21
 TEST1DB_log01                           22
(21 rows affected)
1>

  • vdevnoの5〜13が,今回消去したデータベースで使用されていたデバイスである.
  • 各デバイスがどの物理ファイルであるかを,以下のSQL文で確認しておく.

今存在しているデバイスの一覧を表示する(ファイル名付き)
select name,vdevno = low/power(2,24),phyname
from master..sysdevices
order by 2

  • 実行して確認する.

1> select name,vdevno = low/power(2,24),phyname
2> from master..sysdevices
3> order by 2
4> go
 name                           vdevno
         phyname
 ------------------------------ -----------
        --------------------------------------------------------
-----------------------------------
 master                                   0
         d_master
 tapedump1                                0
         /dev/st0
 tapedump2                                0
         /dev/st1
 sysprocsdev                              1
         /opt/sybase/database/sysdevice/sybprocs.dat
 pubs2_dat01                              2
         /opt/sybase/database/pubs2device/pubs2_dat01.dat
 tempdb_dat01                             3
         /opt/sybase/database/tmpdevice/tempdb01.dat
 tempdb_dat02                             4
         /opt/sybase/database/tmpdevice/tempdb02.dat
 DELETEDDB_dat01                           5
         /opt/sybase/database/datdevice/DELETEDDB_dat01.dat
 DELETEDDB_idx01                           6
         /opt/sybase/database/idxdevice/DELETEDDB_idx01.dat
 DELETEDDB_idx02                           7
         /opt/sybase/database/idxdevice/DELETEDDB_idx02.dat
 DELETEDDB_log01                           8
         /opt/sybase/database/logdevice/DELETEDDB_log01.dat
 DELETEDDB_dat02                           9
         /opt/sybase/database/datdevice/DELETEDDB_dat02.dat
 DELETEDDB_dat_kidou01                    10
         /opt/sybase/database/datdevice/DELETEDDB_dat_kidou01.dat
 DELETEDDB_dat_kidou02                    11
         /opt/sybase/database/datdevice/DELETEDDB_dat_kidou02.dat
 DELETEDDB_dat_kidou03                    12
         /opt/sybase/database/datdevice/DELETEDDB_dat_kidou03.dat
 DELETEDDB_dat_kidou04                    13
         /opt/sybase/database/datdevice/DELETEDDB_dat_kidou04.dat
 TEST1DB_dat01                           18
         /opt/sybase/database/datdevice/TEST1DB_dat01.dat
 TEST1DB_dat02                           19
         /opt/sybase/database/datdevice/TEST1DB_dat02.dat
 TEST1DB_dat03                           20
         /opt/sybase/database/datdevice/TEST1DB_dat03.dat
 TEST1DB_dat04                           21
         /opt/sybase/database/datdevice/TEST1DB_dat04.dat
 TEST1DB_log01                           22
         /opt/sybase/database/logdevice/TEST1DB_log01.dat

(21 rows affected)
1>

  • デバイスを削除する

1> sp_dropdevice DELETEDDB_dat01
2> go
デバイスは削除されました。

(return status = 0)
1> sp_dropdevice DELETEDDB_dat02
2> go
デバイスは削除されました。

(return status = 0)
1> sp_dropdevice DELETEDDB_idx01
2> go
デバイスは削除されました。

(return status = 0)
1> sp_dropdevice DELETEDDB_idx02
2> go
デバイスは削除されました。

(return status = 0)
1> sp_dropdevice DELETEDDB_log01
2> go
デバイスは削除されました。

(return status = 0)
1> sp_dropdevice DELETEDDB_dat_kidou01
2> go
デバイスは削除されました。

(return status = 0)
1> sp_dropdevice DELETEDDB_dat_kidou02
2> go
デバイスは削除されました。

(return status = 0)
1> sp_dropdevice DELETEDDB_dat_kidou03
2> go
デバイスは削除されました。

(return status = 0)
1> sp_dropdevice DELETEDDB_dat_kidou04
2> go
デバイスは削除されました。

(return status = 0)
1>

  • 本当に消えたか確認する.

1> select name,vdevno = low/power(2,24)
2> from master..sysdevices
3> order by 2
4> go
 name                           vdevno
 ------------------------------ -----------
 master                                   0
 tapedump1                                0
 tapedump2                                0
 sysprocsdev                              1
 pubs2_dat01                              2
 tempdb_dat01                             3
 tempdb_dat02                             4
 TEST1DB_dat01                           18
 TEST1DB_dat02                           19
 TEST1DB_dat03                           20
 TEST1DB_dat04                           21
 TEST1DB_log01                           22
(12 rows affected)
1>

  • 消えていることが確認できた.

5.その後の処理

  • ここまで終了したら,以降の処理も行う.
    • データベースのシャットダウン
      • データベースを再起動しないと,vdevnoが使われたままとなってしまう.
    • デバイスファイルの削除
      • SQL Server上からは抹殺されているが,OS上にはデバイスファイルは残っているので,OSのコマンドなどでファイルを消す.



広告スペース
Google