1. 程式人生 > >Sybase ASE 基礎(2)建立資料庫

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)的建立