Sybaseでデータベースを消す
Sybaseでデータベースを消す
0.更新履歴
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>
|
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のコマンドなどでファイルを消す.