Sybase ASE 基礎(2)建立資料庫
本文介紹一下Sybase的一些基礎知識,本節是如何建立資料庫。
本人不保證內容的正確性。
環境:Sybase ASE 15.5
假設SybaseASE已經安裝好了。
1.資料庫裝置(device)的建立
sybase的資料庫是建立在裝置上的,ASE安裝好以後,就已經有幾個預設裝置,master,sybprocs,sybsysdb,temodbdev。如果我們直接建立資料庫,會指定到master裝置(預設裝置)上,這樣以後管理起來不方便,所以我們最好把業務資料庫建立在自己的裝置上。而且對於資料部分和日誌部分各自建立裝置。
(1)檢視現有的device
sp_helpdevice
後面加上裝置名,就是檢視指定裝置的資訊,不加就是檢視全部裝置。
(2)建立新的device
disk init
name = 'frost_dev',
physname = 'D:\sybase\data\frost_dev.dat',
vdevno=4,
size=10240
go
其中
name是邏輯名,以後建資料庫時要用到。
physname是物理名,對應一個dat檔案,路徑寫的是伺服器上的地址,即使在客戶端執行sql,仍然是在伺服器上建立dat檔案,顯然,資料庫內容不可能放在客戶端。
vdevno是裝置號,在檢視現有裝置時,可以看出已經用了幾個,我這裡,0到3已經用了,所以是4。
size是裝置的大小,10240實際上是10240/512=20M
(3)設定預設裝置
sp_diskdefault 'frost_dev',defaulton
如果把引數defaulton換為defaultoff,就是設定為非預設裝置。一般非預設裝置只能是管理員訪問。
(4)刪除裝置
sp_dropdevice 裝置名
刪除時可能會遇到錯誤,比如裝置上已經有資料庫了,就需要先刪除資料庫再刪裝置。
2.資料庫映象裝置(mirror device)的建立
映象裝置相當於主裝置的一個備份,當主裝置損壞時,可以切換到映象裝置,從而保持資料庫的不間斷使用。
這個在開發環境可以不建立,但是在生產環境上最好可以對主裝置和日誌裝置建立映象。如果生產環境已經有磁碟陣列做保障,DBA可以自己權衡一下,是否需要映象
映象的缺點是,寫入資料要寫入雙份,會降低寫入效能。
(1)檢視是否可以建立映象。
sp_configure 'disable disk mirroring'
ASE預設是不能建立映象裝置,這時如果建立映象,會報錯:
“無法執行語句。命令’DISK MIRROR’不能執行,因為磁碟映象被禁止。”
所以根據錯誤提示,可以執行以下SQL
sp_configure 'disable disk mirroring',0
然後重啟伺服器。
(2)建立映象device
disk mirror
name = 'frost_dev',
mirror= 'D:\sybase\data_mrr\frost_dev.mrr',
writes='noserial'
映象最好是建立在另外的硬碟上,如果只有一塊硬碟也應該建立在另外的分割槽上。因為我只有一塊硬碟,偷懶就直接建立在sybase下了。
建立時報出以下錯誤:
DISK MIRROR遇到錯誤。有關詳細資訊,請參見ASE錯誤日誌。
錯誤日誌在伺服器上Sybase安裝目錄下的ASE-15_0\install\errorlog
原來是不會自動建立資料夾。
那我們手動建立data_mrr,再次建立映象,這次成功了。
如果要檢視裝置的映象,其實就是檢視原裝置就可以了。
會有資訊顯示原裝置是否映象,映象裝置放在哪裡等等。
(3)終止映象和恢復映象
如果不想要映象了,可以終止映象
disk umirror name = 'frost_dev'
如要再想恢復映象
disk remirror name = 'frost_dev'
3.資料庫(database)的建立
建立資料庫必須在登入到master資料庫中,因為建立的資料庫的資訊都是儲存在master資料庫中的。
(1) 檢視現有的database
sp_helpdb '資料庫名'
如果不加資料庫名, 就檢視全部的資料庫。
檢視預設的資料庫容量
sp_configure 'default database size'
預設容量是6M,如果建立資料庫時不指定容量,那麼就是6M
(2) 建立database
create database frost
on frost_dev =15
log on frost_log_dev =15
這樣,建立的frost資料庫,資料部分放在frost_dev裝置上,資料容量為15M,日誌部分放在frost_log_dev裝置上,日誌容量為15M。
如果不指定裝置名,就是建立在預設裝置上。
也可以把一個數據庫建在兩個裝置上,如下:
create database frost
on frost_dev1 =15,
frost_dev2 =15
log on frost_log_dev =15
也可以把一個數據庫的資料和日誌建在同一個裝置上,如下:
create database frost
on frost_dev1 =15,
frost_dev2 =15
log on frost_dev2 =15
with override
with override指的是,即使資料和日誌在同一裝置上,也是不同的區域上儲存的,當然這種做法並不好,無論是生產環境還是開發環境,都要保證資料和日誌分不同的裝置儲存。
(3) 資料庫空間
檢視資料庫剩餘空間
use frost
go
sp_spaceused
go
可以看到有兩個結果集
一個是databasesize
另一個是reserved,data,index_size,unused
如果資料庫空間不夠的話,可以擴充。
alter database frost on frost_dev =2
go
alter database frost log on frost_log_dev=3
go
再次檢視空間,資料庫容量增加了5M
4.段(segment)的建立