美國(guó)Sybase公司研制的一種關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),是一種典型的UNIX或WindowsNT平臺(tái)上客戶機(jī)/服務(wù)器環(huán)境下的大型數(shù)據(jù)庫(kù)系統(tǒng)。 Sybase提供了一套應(yīng)用程序編程接口和庫(kù),可以與非Sybase數(shù)據(jù)源及服務(wù)器集成,允許在多個(gè)數(shù)據(jù)庫(kù)之間復(fù)制數(shù)據(jù),適于創(chuàng)建多層應(yīng)用。系統(tǒng)具有完備的觸發(fā)器、存儲(chǔ)過(guò)程、規(guī)則以及完整性定義,支持優(yōu)化查詢,具有較好的數(shù)據(jù)安全性。Sybase通常與SybaseSQLAnywhere用于客戶機(jī)/服務(wù)器環(huán)境,前者作為服務(wù)器數(shù)據(jù)庫(kù),后者為客戶機(jī)數(shù)據(jù)庫(kù),采用該公司研制的PowerBuilder為開(kāi)發(fā)工具,在我國(guó)大中型系統(tǒng)中具有廣泛的應(yīng)用。
Adaptive Server Enterprise (ASE) 是 Sybase 的旗艦式 RDBMS 產(chǎn)品,一直致力于以最低的系統(tǒng)總擁有成本 (TCO) 為企業(yè)提供一個(gè)高性能的數(shù)據(jù)和事務(wù)處理系統(tǒng)。最新版 ASE12.5.1/12.5.2 在繼續(xù)保持以前版本的關(guān)鍵業(yè)務(wù)性能和高效計(jì)算的同時(shí),在易用性、系統(tǒng)性能和支持新應(yīng)用程序方面進(jìn)行了增強(qiáng)和改進(jìn), 并進(jìn)一步提高了系統(tǒng)安全和 Linux 的可擴(kuò)展性。Sybase Adaptive Server Enterprise 12.5.1 完善和擴(kuò)展了 ASE 產(chǎn)品系列。
Sybase數(shù)據(jù)庫(kù)版本
1984年,Mark B. Hiffman和Robert Epstern創(chuàng)建了Sybase公司,并在1987年推出了Sybase數(shù)據(jù)庫(kù)產(chǎn)品。SYBASE主要有三種版本,一是UNIX操作系統(tǒng)下運(yùn)行的版本,二是Novell Netware環(huán)境下運(yùn)行的版本,三是Windows NT環(huán)境下運(yùn)行的版本。對(duì)UNIX操作系統(tǒng)目前廣泛應(yīng)用的為SYBASE 10 及SYBASE 11 forSCO UNIX。
sybase數(shù)據(jù)庫(kù)特點(diǎn)
(1)它是基于客戶/服務(wù)器體系結(jié)構(gòu)的數(shù)據(jù)庫(kù)
一般的關(guān)系數(shù)據(jù)庫(kù)都是基于主/從式的模型的。在主/從式的結(jié)構(gòu)中,所有的應(yīng)用都運(yùn)行在一臺(tái)機(jī)器上。用戶只是通過(guò)終端發(fā)命令或簡(jiǎn)單地查看應(yīng)用運(yùn)行的結(jié)果。而在客戶/服務(wù)器結(jié)構(gòu)中,應(yīng)用被分在了多臺(tái)機(jī)器上運(yùn)行。一臺(tái)機(jī)器是另一個(gè)系統(tǒng)的客戶,或是另外一些機(jī)器的服務(wù)器。這些機(jī)器通過(guò)局域網(wǎng)或廣域網(wǎng)聯(lián)接起來(lái)。
客戶/服務(wù)器模型的好處是:
1)它支持共享資源且在多臺(tái)設(shè)備間平衡負(fù)載
2)允許容納多個(gè)主機(jī)的環(huán)境,充分利用了企業(yè)已有的各種系統(tǒng)
注釋:什么是客戶/服務(wù)器體系結(jié)構(gòu)
從硬件角度看,客戶/服務(wù)器體系結(jié)構(gòu)是指將某項(xiàng)任務(wù)在兩臺(tái)或多臺(tái)機(jī)器之間進(jìn)行分配,其中客戶機(jī)(Client)用來(lái)運(yùn)行提供用戶接口和前端處理的應(yīng)用程序,服務(wù)器機(jī)(Server)提供客戶機(jī)使用的各種資源和服務(wù)。
從軟件角度看,客戶/服務(wù)器體系結(jié)構(gòu)是把某項(xiàng)應(yīng)用或軟件系統(tǒng)按邏輯功能劃分為客戶軟件部分和服務(wù)器軟件部分。客戶軟件部分一般負(fù)責(zé)數(shù)據(jù)的表示和應(yīng)用,處理用戶界面,用以接收用戶的數(shù)據(jù)處理請(qǐng)求并將之轉(zhuǎn)換為對(duì)服務(wù)器的請(qǐng)求,要求服務(wù)器為其提供數(shù)據(jù)的存儲(chǔ)和檢索服務(wù);服務(wù)器端軟件負(fù)責(zé)接收客戶端軟件發(fā)來(lái)的請(qǐng)求并提供相應(yīng)服務(wù)客戶/服務(wù)器融合了大型機(jī)的強(qiáng)大功能和中央控制以及PC機(jī)的低成本和較好的處理平衡。客戶/服務(wù)器為任務(wù)的集中/局部分布提供了一種新的方法,這種體系能夠使用戶對(duì)數(shù)據(jù)完整性、管理和安全性進(jìn)行集中控制。在緩解網(wǎng)絡(luò)交通和主機(jī)負(fù)荷以及滿足用戶需要方面,客戶/服務(wù)器體系提供了良好的解決方案。
總之,客戶/服務(wù)器的工作模式是:客戶與服務(wù)器之間采用網(wǎng)絡(luò)協(xié)議(如TCP/IP、IPX/SPX)進(jìn)行連接和通訊,由客戶端向服務(wù)器發(fā)出請(qǐng)求,服務(wù)器端響應(yīng)請(qǐng)求,并進(jìn)行相應(yīng)服務(wù)。
(2) 它是真正開(kāi)放的數(shù)據(jù)庫(kù)
由于采用了客戶/服務(wù)器結(jié)構(gòu),應(yīng)用被分在了多臺(tái)機(jī)器上運(yùn)行。更進(jìn)一步,運(yùn)行在客戶端的應(yīng)用不必是Sybase公司的產(chǎn)品。對(duì)于一般的關(guān)系數(shù)據(jù)庫(kù),為了讓其它語(yǔ)言編寫(xiě)的應(yīng)用能夠訪問(wèn)數(shù)據(jù)庫(kù),提供了預(yù)編譯。Sybase數(shù)據(jù)庫(kù),不只是簡(jiǎn)單地提供了預(yù)編譯,而且公開(kāi)了應(yīng)用程序接口DB-LIB,鼓勵(lì)第三方編寫(xiě)DB-LIB接口。由于開(kāi)放的客戶DB-LIB允許在不同的平臺(tái)使用完全相同的調(diào)用,因而使得訪問(wèn)DB-LIB的應(yīng)用程序很容易從一個(gè)平臺(tái)向另一個(gè)平臺(tái)移植。
(3)它是一種高性能的數(shù)據(jù)庫(kù)
Sybase數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)
Sybase真正吸引人的地方還是它的高性能。體現(xiàn)在以下幾方面:
1)可編程數(shù)據(jù)庫(kù)
通過(guò)提供存儲(chǔ)過(guò)程,創(chuàng)建了一個(gè)可編程數(shù)據(jù)庫(kù)。存儲(chǔ)過(guò)程允許用戶編寫(xiě)自己的數(shù)據(jù)庫(kù)子例程。這些子例程是經(jīng)過(guò)預(yù)編譯的,因此不必為每次調(diào)用都進(jìn)行編譯、優(yōu)化、生成查詢規(guī)劃,因而查詢速度要快得多。
2)事件驅(qū)動(dòng)的觸發(fā)器
觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程。通過(guò)觸發(fā)器可以啟動(dòng)另一個(gè)存儲(chǔ)過(guò)程,從而確保數(shù)據(jù)庫(kù)的完整性。
3)多線索化
Sybase數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)的另一個(gè)創(chuàng)新之處就是多線索化。一般的數(shù)據(jù)庫(kù)都依靠操作系統(tǒng)來(lái)管理與數(shù)據(jù)庫(kù)的連接。當(dāng)有多個(gè)用戶連接時(shí),系統(tǒng)的性能會(huì)大幅度下降。Sybase數(shù)據(jù)庫(kù)不讓操作系統(tǒng)來(lái)管理進(jìn)程,把與數(shù)據(jù)庫(kù)的連接當(dāng)作自己的一部分來(lái)管理。此外,Sybase的數(shù)據(jù)庫(kù)引擎還代替操作系統(tǒng)來(lái)管理一部分硬件資源,如端口、內(nèi)存、硬盤(pán),繞過(guò)了操作系統(tǒng)這一環(huán)節(jié),提高了性能。
sybase數(shù)據(jù)庫(kù)訪問(wèn)過(guò)程
1)建立客戶與服務(wù)器之間的連接,包括網(wǎng)絡(luò)連接、客戶進(jìn)程與服務(wù)器進(jìn)程之間的連接;
2)客戶端通過(guò)網(wǎng)絡(luò)發(fā)送SQL語(yǔ)句給服務(wù)器,用來(lái)查詢或操作服務(wù)器中的數(shù)據(jù)或數(shù)據(jù)庫(kù)對(duì)象
3)服務(wù)器接收到SQL語(yǔ)句后,對(duì)其進(jìn)行語(yǔ)法分析、優(yōu)化和編譯后執(zhí)行;
4)如果執(zhí)行的語(yǔ)句產(chǎn)生一個(gè)結(jié)果集,服務(wù)器通過(guò)網(wǎng)絡(luò)把結(jié)果集返回給客戶
5)客戶端對(duì)收到的結(jié)果作相應(yīng)的處理。
在客戶/服務(wù)器體系,有兩種數(shù)據(jù)庫(kù)引擎結(jié)構(gòu),即多進(jìn)程數(shù)據(jù)庫(kù)引擎和單進(jìn)程、多線程引擎結(jié)構(gòu)。多進(jìn)程結(jié)構(gòu)即多個(gè)可執(zhí)行程序同時(shí)運(yùn)行。每當(dāng)用戶登錄到數(shù)據(jù)庫(kù)系統(tǒng)時(shí)實(shí)際上都啟動(dòng)了數(shù)據(jù)庫(kù)引擎的一個(gè)獨(dú)立實(shí)例。存在起協(xié)調(diào)作用的進(jìn)程協(xié)調(diào)進(jìn)行之間的通訊以保證當(dāng)多用戶訪問(wèn)相同數(shù)據(jù)時(shí)數(shù)據(jù)的完整性。多進(jìn)程數(shù)據(jù)庫(kù)引擎一般用在大型機(jī)數(shù)據(jù)庫(kù)上。單進(jìn)程多線程數(shù)據(jù)庫(kù)引擎在原理上和多進(jìn)程數(shù)據(jù)庫(kù)引擎類似,不同的是多線程數(shù)據(jù)庫(kù)引擎自己負(fù)責(zé)調(diào)度各應(yīng)用程序占用CPU的時(shí)間,而不依賴于操作系統(tǒng)。這樣,多線程數(shù)據(jù)庫(kù)引擎自我保護(hù)的能力更強(qiáng)。
Sybase數(shù)據(jù)庫(kù)管理系統(tǒng)采用的是單進(jìn)程多線程的引擎結(jié)構(gòu)。
Sybase數(shù)據(jù)庫(kù)軟件組成
Sybase軟件可劃分為三個(gè)部分:
1)進(jìn)行數(shù)據(jù)管理與維護(hù)的聯(lián)機(jī)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)Sybase SQL Server
2)支持?jǐn)?shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的建立和開(kāi)發(fā)的一組前端工具軟件Sybase SQL Tools
3)把異構(gòu)環(huán)境下其他廠商的應(yīng)用軟件和任何類型的數(shù)據(jù)連接在一起的接口軟件Open Client/Open Server。
SQL Server是個(gè)可編程的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),它是整個(gè)Sybase產(chǎn)品的核心軟件,起著數(shù)據(jù)管理、高速緩沖區(qū)管理、事務(wù)管理的作用。
ISQL是與SQL Server進(jìn)行交互的一種SQL句法分析器。ISQL接收用戶發(fā)出的SQL語(yǔ)言,將其發(fā)送給SQL Server,并將結(jié)果以形式化的方式顯示在用戶的標(biāo)準(zhǔn)輸出上。lset的一個(gè)主要組成部分,它的作用在于使用戶能夠設(shè)置和管理SQL Server上的數(shù)據(jù)庫(kù),并且為用戶提供一種對(duì)數(shù)據(jù)庫(kù)的信息執(zhí)行添加、更新和檢索等操作的簡(jiǎn)便方法。在DWB中能完成ISQL的所有功能,且由于DWB是基于窗口和菜單的,因此操作比ISQL簡(jiǎn)單,是一種方便實(shí)用的數(shù)據(jù)庫(kù)管理工具。
APT是Sybase客戶軟件部分的主要產(chǎn)品之一,也是從事實(shí)際應(yīng)用開(kāi)發(fā)的主要環(huán)境。APT工作臺(tái)是用于建立應(yīng)用程序的工具集,可以創(chuàng)建從非常簡(jiǎn)單到非常復(fù)雜的應(yīng)用程序,它主要用于開(kāi)發(fā)基于表格(form)的應(yīng)用。其用戶界面采用窗口和菜單驅(qū)動(dòng)方式,通過(guò)一系列的選擇完成表格(form)、菜單和處理的開(kāi)發(fā)。
通過(guò)Open Client的DB-LIB庫(kù),應(yīng)用程序可以訪問(wèn)SQL Server。而通過(guò)Open Server的SERVER-LIB,應(yīng)用程序可以訪問(wèn)其它的數(shù)據(jù)庫(kù)管理系統(tǒng)。
sybase數(shù)據(jù)庫(kù)基本特征
SQL Server具有如下一些基本特征:
1)SQL Server可以放在若干個(gè)磁盤(pán)設(shè)備上,初始安裝時(shí)所需的磁盤(pán)空間至少要17MB。
2)SQL Server支持多庫(kù)結(jié)構(gòu),也就是說(shuō)Sybase系統(tǒng)中可以有多個(gè)數(shù)據(jù)庫(kù)。Sybase可以管理多個(gè)數(shù)據(jù)庫(kù)。
3)SQL Server可以編譯和運(yùn)行T-SQL語(yǔ)句,并可返回客戶程序所要求的結(jié)果。T-SQL語(yǔ)句是標(biāo)準(zhǔn)SQL的擴(kuò)充,它除了有數(shù)據(jù)定義語(yǔ)句、數(shù)據(jù)操縱語(yǔ)句和數(shù)據(jù)控制語(yǔ)句之外,主要增加了流程控制語(yǔ)句。
4)SQL Server可以管理多個(gè)用戶并具有較高的事務(wù)吞吐量和較低的事務(wù)響應(yīng)時(shí)間。客戶的應(yīng)用程序可以存取Server中某一個(gè)或幾個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)。
sybase數(shù)據(jù)庫(kù)主要內(nèi)容
Sybase SQL Server是一個(gè)多庫(kù)結(jié)構(gòu)的RDBMS,安裝Sybase數(shù)據(jù)庫(kù)時(shí)自動(dòng)生成的系統(tǒng)數(shù)據(jù)庫(kù)體系結(jié)構(gòu)大致如下:
1)主數(shù)據(jù)庫(kù)master
2)模型數(shù)據(jù)庫(kù)model
3)系統(tǒng)過(guò)程數(shù)據(jù)庫(kù)sybsystemprocs
4)臨時(shí)數(shù)據(jù)庫(kù)tempdb。
也可選擇下列數(shù)據(jù)庫(kù):
5)安全審核數(shù)據(jù)庫(kù)sybsecurity
6)示例數(shù)據(jù)庫(kù)pubs2
7)命令語(yǔ)法數(shù)據(jù)庫(kù)sybsyntax
1.2.3.1 系統(tǒng)數(shù)據(jù)庫(kù)
服務(wù)器自身所使用的數(shù)據(jù)庫(kù),也可以說(shuō)是管理服務(wù)器和用戶數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)。Sybase在安裝時(shí),自動(dòng)創(chuàng)建了四個(gè)系統(tǒng)數(shù)據(jù)庫(kù):
master、model、tempdb、sybsystemprocs
(1) master數(shù)據(jù)庫(kù)
它是管理和控制用戶數(shù)據(jù)庫(kù)以及維護(hù)服務(wù)器正常運(yùn)行的核心數(shù)據(jù)庫(kù),它包含許多系統(tǒng)表和系統(tǒng)過(guò)程,從總體上控制用戶數(shù)據(jù)庫(kù)和SQL Server的操作,構(gòu)成了SYBASE系統(tǒng)的數(shù)據(jù)字典,它保存了大量的系統(tǒng)信息,如服務(wù)器配置、用戶、設(shè)備等。
在master數(shù)據(jù)庫(kù)中不允許普通用戶在其中創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象,否則會(huì)使得master數(shù)據(jù)庫(kù)的事務(wù)日志很快變滿。如果事務(wù)日志用盡,就無(wú)法使用dump transaction命令釋放master數(shù)據(jù)庫(kù)中的空間。
master數(shù)據(jù)庫(kù)主要記錄信息為:
1)登錄帳號(hào)(SQL服務(wù)器用戶名);syslogins,sysremolelogins
2)正在執(zhí)行的過(guò)程;sysprocesses
3)可修改的環(huán)境變量;sysconfigures
4)系統(tǒng)錯(cuò)誤信息;sysmessages
5)SQL服務(wù)器上每個(gè)數(shù)據(jù)庫(kù)的信息;sysdatabases
6)每個(gè)數(shù)據(jù)庫(kù)占用的存儲(chǔ)空間;sysusages
7)系統(tǒng)上安裝的磁帶及磁帶信息;sysdevices
8)活動(dòng)鎖信息;syslocks
(2)model數(shù)據(jù)庫(kù)
它是為創(chuàng)建用戶數(shù)據(jù)庫(kù)而提供的模板。它提供了新用戶數(shù)據(jù)庫(kù)的初型。當(dāng)我們每次用CREATE DATABASE命令時(shí),SQL Server都產(chǎn)生一個(gè)model數(shù)據(jù)庫(kù)的拷貝,以此作為新用戶數(shù)據(jù)庫(kù),然后把它擴(kuò)展到命令要求的尺寸。如果我們修改了model數(shù)據(jù)庫(kù),那么以后新創(chuàng)建的數(shù)據(jù)庫(kù)都將隨它而改變。
Model數(shù)據(jù)庫(kù)中包含每個(gè)用戶數(shù)據(jù)庫(kù)所要求的系統(tǒng)表。Model數(shù)據(jù)庫(kù)可以被修改以便定制新創(chuàng)建的。
下面是幾個(gè)通常用到的對(duì)model數(shù)據(jù)庫(kù)的改變:
增加用戶數(shù)據(jù)庫(kù)類型、規(guī)則或缺省
可存取SQL Server上所有數(shù)據(jù)庫(kù)的用戶用sp_adduser增加到model數(shù)據(jù)庫(kù)上
缺省權(quán)限(特別是guest帳號(hào))可在model中建立
諸如select into/bulkcopy那樣的數(shù)據(jù)庫(kù)選項(xiàng)可在model中設(shè)置。這些設(shè)置反映到所有新創(chuàng)建的數(shù)據(jù)庫(kù)中。它們?cè)趍odel中最原始的值是關(guān)(off)。
在一般情況下,大多數(shù)用戶無(wú)權(quán)修改model數(shù)據(jù)庫(kù),也沒(méi)被授權(quán)讀取。因?yàn)閙odel中所有內(nèi)容已拷貝到新數(shù)據(jù)庫(kù)中,授權(quán)讀model沒(méi)什么意義。
(3)tempdb數(shù)據(jù)庫(kù)
它是個(gè)臨時(shí)數(shù)據(jù)庫(kù),為服務(wù)器運(yùn)行與處理提供一個(gè)共享的存儲(chǔ)區(qū)域,如group by和order by的中間結(jié)果就存放在這里。Tempdb的空間為服務(wù)器中所有數(shù)據(jù)庫(kù)的所有用戶所共享。
每次重啟SQL Server,服務(wù)器的一個(gè)自動(dòng)進(jìn)程都拷貝model數(shù)據(jù)庫(kù)到tempdb數(shù)據(jù)庫(kù),并清除tempdb中原來(lái)的內(nèi)容。因此tempdb中的用戶表都是臨時(shí)的。臨時(shí)表分為兩類:可共享的和不可共享的。不可共享的臨時(shí)表在由create table中將符號(hào)#置于表名之前創(chuàng)立;可共享的臨時(shí)表通過(guò)create table中指定表名前綴tempdb..而創(chuàng)立。不可共享的臨時(shí)表SQL Server自動(dòng)為其添加數(shù)字后綴名,且它只存在于當(dāng)前會(huì)話中。
(4)sybsystemprocs數(shù)據(jù)庫(kù)
它是專門(mén)用來(lái)保存系統(tǒng)命令(存儲(chǔ)過(guò)程)的數(shù)據(jù)庫(kù),如sp_help、sp_configure、sp_helpdevice等。當(dāng)任一數(shù)據(jù)庫(kù)用戶運(yùn)行以sp_開(kāi)頭的存儲(chǔ)過(guò)程時(shí),SQL Server按照以下順序查找:當(dāng)前數(shù)據(jù)庫(kù)、sybsystemprocs數(shù)據(jù)庫(kù)、master數(shù)據(jù)庫(kù)。
其他可選數(shù)據(jù)庫(kù):
(5)安全審核數(shù)據(jù)庫(kù)sybsecurity
數(shù)據(jù)庫(kù)中保存系統(tǒng)的安全審核信息,它可跟蹤記錄每個(gè)用戶的操作情況,為維護(hù)系統(tǒng)安全提供控制手段。
(6)示例數(shù)據(jù)庫(kù)pubs2
為用戶提供一個(gè)學(xué)習(xí)SYBASE的數(shù)據(jù)庫(kù)模型。
(7)命令語(yǔ)法數(shù)據(jù)庫(kù)sybsyntax
庫(kù)中保存SYBASE數(shù)據(jù)庫(kù)的命令語(yǔ)法及支持的語(yǔ)言庫(kù)。
1.2.3.2 用戶數(shù)據(jù)庫(kù)
用戶數(shù)據(jù)庫(kù)是我們使用Sybase服務(wù)器的真正目的。要管理用戶數(shù)據(jù),必須在Sybase中創(chuàng)建自己的數(shù)據(jù)庫(kù),是指用create database命令創(chuàng)建的數(shù)據(jù)庫(kù)。所有新的用戶數(shù)據(jù)庫(kù)都要在master數(shù)據(jù)庫(kù)中創(chuàng)建,也就是說(shuō),不能存取master數(shù)據(jù)庫(kù)的用戶是無(wú)權(quán)創(chuàng)建新的數(shù)據(jù)庫(kù)的。SA可以將創(chuàng)建數(shù)據(jù)庫(kù)的權(quán)限授予其他用戶。新建數(shù)據(jù)庫(kù)中存在一些系統(tǒng)表,在sysusers表中至少有一條記錄,既該數(shù)據(jù)庫(kù)的創(chuàng)建者。數(shù)據(jù)庫(kù)創(chuàng)建時(shí),創(chuàng)建者即為該數(shù)據(jù)庫(kù)的 owner, 當(dāng)然創(chuàng)建者可以將這一地位或這一所有權(quán)用系統(tǒng)過(guò)程授予別的用戶。
數(shù)據(jù)庫(kù)中的主要內(nèi)容——數(shù)據(jù)庫(kù)對(duì)象:表、視圖、臨時(shí)表、索引、主鍵、外鍵、缺省值、規(guī)則、存儲(chǔ)過(guò)程、觸發(fā)器等。
Sybase數(shù)據(jù)庫(kù)安裝
安裝建立SQL Server以后,要建立放置數(shù)據(jù)庫(kù)、日志和索引的邏輯磁盤(pán)設(shè)備。數(shù)據(jù)庫(kù)、日志和索引的配置應(yīng)注意以下原則:
1)不要把任何用戶對(duì)象安裝在master數(shù)據(jù)庫(kù)中。
2)日志應(yīng)該保存在與數(shù)據(jù)庫(kù)分離的磁盤(pán)上。
3)可以通過(guò)跨越多個(gè)設(shè)備分配工作優(yōu)化I/O性能。
2.1.1 Sybase 的初始配置需要做的內(nèi)容:
1)更改sa的登錄口令
2)命名服務(wù)器;
3)修改文件名(保證Sybase Central正常啟動(dòng))
4)更改缺省設(shè)備;
5)增加tempdb的空間。
6)創(chuàng)建用戶數(shù)據(jù)庫(kù)(創(chuàng)建數(shù)據(jù)庫(kù)設(shè)備,設(shè)備大小以頁(yè)(2K)為單位)
sybase數(shù)據(jù)庫(kù)系統(tǒng)管理
1)物理資源的管理
2)用戶及其權(quán)限管理
3)數(shù)據(jù)庫(kù)的備份與恢復(fù)
4)SQL Server的配置參數(shù)
服務(wù)器配置是系統(tǒng)管理員的職責(zé),正確的配置對(duì)系統(tǒng)性能有重大的影響。有兩個(gè)系統(tǒng)表存儲(chǔ)配置信息:sysconfigures和syscurconfigs;sysconfigures是永久性的,一旦系統(tǒng)運(yùn)行,sysconfigures的信息就拷貝到syscurconfigs中。顯示配置和改變配置使用系統(tǒng)過(guò)程sp_configure。
有兩種配置值:動(dòng)態(tài)的和靜態(tài)的,動(dòng)態(tài)值一旦改變立即生效,靜態(tài)值要在系統(tǒng)重啟動(dòng)后才起作用。
sybase啟動(dòng)和關(guān)閉
2.3.1 啟動(dòng)SQL Server
應(yīng)用SQL Server安裝程序(sybinit)創(chuàng)建SQL Server或Backup Server, 默認(rèn)文件名為RUN_SYBASE 和RUN_SYB_BACKUP,放在$SYBASE/INSTALL目錄下。Startserver 用來(lái)啟動(dòng)SQL Server 或Backup Server:
可以通過(guò)showserver查看SQL Server 和Backup Server是否已經(jīng)啟動(dòng)。
SQL Server的啟動(dòng)過(guò)程:master數(shù)據(jù)庫(kù)啟動(dòng)-- Sybsystemproces數(shù)據(jù)庫(kù)啟動(dòng)--tempdb--model --用戶數(shù)據(jù)庫(kù)。
啟動(dòng)SQL Server的單用戶模式:如果要恢復(fù)一已被損壞的master數(shù)據(jù)庫(kù),則必須要啟動(dòng)SQL Server的單用戶模式。單用戶模式下僅允許一個(gè)系統(tǒng)管理員向SQL Server注冊(cè)。
Startserver -f RUN_SYBASE -m
2.3.2 關(guān)閉服務(wù)器
關(guān)閉SQL Server可以在isql中使用T-SQL命令:
關(guān)閉SQL備服務(wù)器:shutdown SYB_BACKUP
關(guān)閉SQL主服務(wù)器:shutdown [with nowait]
sybase存儲(chǔ)空間管理
初始安裝SQL Server時(shí),安裝程序和腳本初始化主設(shè)備,并建立master、model、tempdb和sybsystemprocs數(shù)據(jù)庫(kù)。系統(tǒng)數(shù)據(jù)庫(kù)、預(yù)定義設(shè)備和段按下列默認(rèn)方式組織:
1)master、model、tempdb數(shù)據(jù)庫(kù)安裝在主設(shè)備master上;
2)sybsystemprocs數(shù)據(jù)庫(kù)安裝在安裝時(shí)選擇的設(shè)備上(sysprocsdev)
3)為每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建三個(gè)預(yù)定義段:system、default和logsegment;
4)所有用戶創(chuàng)建數(shù)據(jù)庫(kù)的默認(rèn)設(shè)備是master設(shè)備
5)如果選擇安裝了審計(jì)數(shù)據(jù)庫(kù)sybsecurity,它位于自己的設(shè)備上。
2.4.1 設(shè)備與存儲(chǔ)管理考慮的主要問(wèn)題
(1)恢復(fù)問(wèn)題
物理磁盤(pán)崩潰時(shí),磁盤(pán)鏡像或在單獨(dú)的物理設(shè)備上保存日志為數(shù)據(jù)庫(kù)恢復(fù)提供了兩種機(jī)制。
(2)性能問(wèn)題
磁盤(pán)讀寫(xiě)速度是I/O操作的瓶頸,正確地把數(shù)據(jù)庫(kù)對(duì)象放置到物理設(shè)備上有利于改進(jìn)性能;把日志和數(shù)據(jù)庫(kù)對(duì)象置于單獨(dú)的設(shè)備上可以提高系統(tǒng)性能;把表放在一個(gè)硬盤(pán)上而把索引放在另一個(gè)硬盤(pán)上,由于把工作分置于兩個(gè)硬盤(pán)驅(qū)動(dòng)器上,所以可以確保物理讀寫(xiě)速度加快;磁盤(pán)鏡像會(huì)降低磁盤(pán)寫(xiě)的速度。
2.4.2 設(shè)備(Device)
Sybase SQL Server是一個(gè)多庫(kù)數(shù)據(jù)庫(kù)系統(tǒng)。這些數(shù)據(jù)庫(kù)包括系統(tǒng)數(shù)據(jù)庫(kù)和用戶數(shù)據(jù)庫(kù)。而不論是系統(tǒng)數(shù)據(jù)庫(kù)還是用戶數(shù)據(jù)庫(kù),都建立在數(shù)據(jù)庫(kù)設(shè)備上。即Sybase將數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)存放在設(shè)備上。刪除設(shè)備前必須刪除其上的所有數(shù)據(jù)庫(kù),刪除設(shè)備的命令是:sp_dropdevice。
2.4.2.1 設(shè)備的概念
設(shè)備是Sybase預(yù)先配置的專門(mén)存放數(shù)據(jù)庫(kù)的一塊連續(xù)的磁盤(pán)空間,并且它被映射到一操作系統(tǒng)文件或一原始磁盤(pán)分區(qū)上。即它不是指一個(gè)可識(shí)別的物理設(shè)備,而是指用于存儲(chǔ)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象的磁盤(pán)原始分區(qū)或操作系統(tǒng)文件。它有兩個(gè)對(duì)應(yīng)的名稱:邏輯名和物理名。NT僅支持設(shè)備映射到文件。所有的數(shù)據(jù)庫(kù)都創(chuàng)建在數(shù)據(jù)庫(kù)設(shè)備上。增加一個(gè)新的數(shù)據(jù)庫(kù)設(shè)備時(shí),必須對(duì)這些設(shè)備“初始化”。初始化的過(guò)程就是將物理磁盤(pán)、磁盤(pán)分區(qū)或操作系統(tǒng)文件變?yōu)镾YBASE數(shù)據(jù)庫(kù)可以識(shí)別的設(shè)備。初始化數(shù)據(jù)庫(kù)設(shè)備使用DISK INIT命令。
設(shè)備與數(shù)據(jù)庫(kù)之間的關(guān)系:多對(duì)多關(guān)系。一個(gè)數(shù)據(jù)庫(kù)可以被創(chuàng)建或擴(kuò)充到多個(gè)設(shè)備上,一個(gè)設(shè)備也可以被用來(lái)存放多個(gè)數(shù)據(jù)庫(kù)。不同的設(shè)備操作系統(tǒng)可以對(duì)其并行地讀寫(xiě),因此我們可以人為地將一個(gè)數(shù)據(jù)庫(kù)放置到多個(gè)數(shù)據(jù)庫(kù)設(shè)備上。
設(shè)備的分類:Database Device和Dump Device。數(shù)據(jù)庫(kù)設(shè)備存放數(shù)據(jù)庫(kù)和事務(wù)日志,轉(zhuǎn)儲(chǔ)設(shè)備用來(lái)存放數(shù)據(jù)庫(kù)或日志的備份。
2.4.2.1.1 默認(rèn)設(shè)備
在沒(méi)有指定設(shè)備的情況下,用戶創(chuàng)建的任何數(shù)據(jù)對(duì)象自動(dòng)存放在默認(rèn)設(shè)備上。初始安裝后,系統(tǒng)的主設(shè)備master被預(yù)指定為默認(rèn)設(shè)備,因此要盡快創(chuàng)建自己的默認(rèn)設(shè)備。確保系統(tǒng)主設(shè)備安全,指定僅被日志使用的設(shè)備不是默認(rèn)設(shè)備。
Sp_diskdefault 設(shè)備名[,DefaultOn|DefaultOff]
2.4.2.2磁盤(pán)鏡像
磁盤(pán)鏡像是出于數(shù)據(jù)庫(kù)安全性的考慮,當(dāng)介質(zhì)失敗時(shí),磁盤(pán)鏡像能提供不間斷恢復(fù)。磁盤(pán)鏡像是磁盤(pán)上的數(shù)據(jù)的絕對(duì)拷貝。如果某一硬盤(pán)事故發(fā)生,則該被損壞的拷貝就自動(dòng)變成離線狀態(tài),因而所有的讀寫(xiě)都被引向未被損壞的拷貝。
Sybase的磁盤(pán)鏡像是在設(shè)備級(jí)上進(jìn)行的,因此磁盤(pán)鏡像實(shí)質(zhì)上是設(shè)備鏡像。當(dāng)對(duì)某一設(shè)備進(jìn)行鏡像操作時(shí),Sybase自動(dòng)創(chuàng)建一個(gè)附加設(shè)備,由鏡像處理程序?qū)⒃O(shè)備上的所有數(shù)據(jù)拷貝到鏡像設(shè)備上。
如果要使某一數(shù)據(jù)庫(kù)成為鏡像,被分配給該數(shù)據(jù)庫(kù)的每一設(shè)備都必須成鏡像。Master設(shè)備在服務(wù)器中地位特殊,如果它損壞了,SQL Server將崩潰。因此,如果有可能總是要鏡像Master設(shè)備(在另一磁盤(pán)上)。
2.4.3 創(chuàng)建與使用段
段(Segment)是數(shù)據(jù)庫(kù)設(shè)備上磁盤(pán)空間的邏輯組合,它可以看作是指向一個(gè)或多個(gè)數(shù)據(jù)庫(kù)設(shè)備的標(biāo)簽。利用段可以控制數(shù)據(jù)庫(kù)對(duì)象的存放位置,可以將數(shù)據(jù)庫(kù)對(duì)象分類存放到不同的段上。
設(shè)備與段之間的關(guān)系:多對(duì)多關(guān)系。一個(gè)設(shè)備上可以創(chuàng)建多個(gè)段,一個(gè)段也可以覆蓋多個(gè)設(shè)備。
數(shù)據(jù)庫(kù)設(shè)備從邏輯上被劃分為數(shù)據(jù)庫(kù)段以允許將某一特定的對(duì)象放置在指定的段上(創(chuàng)建對(duì)象時(shí)指定),一數(shù)據(jù)庫(kù)設(shè)備可擁有多達(dá)192個(gè)段,一段可使用255個(gè)邏輯設(shè)備上的存儲(chǔ)空間。當(dāng)用戶創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)時(shí),SQL SERVER 會(huì)自動(dòng)在該數(shù)據(jù)庫(kù)中創(chuàng)建三個(gè)段?用來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)的系統(tǒng)表、事務(wù)日志和其他數(shù)據(jù)庫(kù)對(duì)象
2.4.3.1 使用段的優(yōu)點(diǎn)
1)控制空間的使用:放在一個(gè)段上的數(shù)據(jù)庫(kù)對(duì)象不會(huì)在段外增長(zhǎng);
2)提高性能:處于不同磁盤(pán)設(shè)備上的段可以并行地讀寫(xiě)
3)處理大表:利用段,可以將一個(gè)大表分段放在獨(dú)立的物理設(shè)備上,如將一個(gè)表的文本或圖象數(shù)據(jù)存儲(chǔ)另外的一個(gè)段上。
兩個(gè)數(shù)據(jù)庫(kù)放在同一設(shè)備的不同段上,它們不會(huì)相互影響;當(dāng)數(shù)據(jù)庫(kù)增加空間時(shí),增加的空間會(huì)自動(dòng)分配到它的每一個(gè)段上
sybase使用閾值管理
閾值(Threshold)管理是一種自動(dòng)監(jiān)控?cái)?shù)據(jù)庫(kù)自由空間的機(jī)制,Sybase的閾值管理允許用戶為數(shù)據(jù)庫(kù)的某個(gè)段上的自由空間設(shè)置閾值并定義相應(yīng)的存儲(chǔ)過(guò)程。當(dāng)該段上的自由空間低于所置頭閾值時(shí),Sybase自動(dòng)運(yùn)行相應(yīng)的存儲(chǔ)過(guò)程。
在一個(gè)實(shí)際運(yùn)行的數(shù)據(jù)庫(kù)中,日志的增長(zhǎng)速度一般要高于數(shù)據(jù)的增長(zhǎng),一旦日志段的自由空間用盡,SQL Server在默認(rèn)情況下會(huì)掛起所有數(shù)據(jù)操縱事務(wù),客戶端應(yīng)用程序停止執(zhí)行。
在每個(gè)分離的段上存儲(chǔ)其事務(wù)日志的數(shù)據(jù)庫(kù)均自動(dòng)設(shè)置有最后機(jī)會(huì)閾值(Last Chance Threshold),其閾值是備份事務(wù)日志所需的自由空間的估計(jì)值。當(dāng)該段上的自由空間低于所置閾值時(shí),Sybase自動(dòng)運(yùn)行名為sp_thresholdaction的存儲(chǔ)過(guò)程。該過(guò)程的名稱及參數(shù)由系統(tǒng)預(yù)定義,內(nèi)容由用戶編寫(xiě)。
sybase事務(wù)日志
通常用戶數(shù)據(jù)庫(kù)由系統(tǒng)管理員創(chuàng)建,它的默認(rèn)屬主是dbo。系統(tǒng)過(guò)程sp_changeddbowner可改變數(shù)據(jù)庫(kù)的屬主關(guān)系,它必須由數(shù)據(jù)庫(kù)管理員在要改變屬主關(guān)系的數(shù)據(jù)庫(kù)中執(zhí)行。
日志文件是用來(lái)記錄數(shù)據(jù)庫(kù)每一次修改活動(dòng)的文件。SQL Server中的每一個(gè)數(shù)據(jù)庫(kù)都有自己的日志文件,即系統(tǒng)表syslogs,也稱為事務(wù)日志。事務(wù)日志是撤消事務(wù)和出現(xiàn)故障時(shí)恢復(fù)事務(wù)的依據(jù)。在某些情況下,事務(wù)日志比數(shù)據(jù)本身更為重要。
數(shù)據(jù)庫(kù)的修改是以事務(wù)為單位進(jìn)行的。一個(gè)事務(wù)就是一個(gè)操作序列,這些操作要么全做,要么全不做,它是一個(gè)不可分割的工作單位。任何一個(gè)事務(wù)具備如下特征:
1)執(zhí)行的原子性(Atomic)
2)保持?jǐn)?shù)據(jù)的一致性(Consistency);
3)彼此的隔離性(Isolation)
4)作用的持久性(Durability);
上述事務(wù)的四個(gè)特征被稱為事務(wù)的ACID準(zhǔn)則。
事務(wù)在運(yùn)行過(guò)程中,SQL Server把事務(wù)開(kāi)始、事務(wù)結(jié)束以及對(duì)數(shù)據(jù)庫(kù)的插入、刪除和更新等每一個(gè)操作作為一個(gè)日志記錄存放到事務(wù)日志中。事務(wù)中的更新操作首先在數(shù)據(jù)庫(kù)緩沖區(qū)(內(nèi)存)中進(jìn)行,緩沖區(qū)分別有用來(lái)記錄操作活動(dòng)的數(shù)據(jù)頁(yè)(data page)和日志頁(yè)(log page)。當(dāng)運(yùn)行到commit tran時(shí),日志頁(yè)首先從緩沖區(qū)寫(xiě)到磁盤(pán)上,而后數(shù)據(jù)頁(yè)從緩沖區(qū)寫(xiě)到磁盤(pán)上,即遵循“先寫(xiě)日志(write_ahead log)”的原則,這樣保證出現(xiàn)故障的情況下,通過(guò)日志能夠得到最大限度的恢復(fù)。恢復(fù)必須撤消發(fā)生故障時(shí)還未提交的事務(wù),已完成的事務(wù)若仍有未從緩沖區(qū)寫(xiě)到數(shù)據(jù)庫(kù)設(shè)備中,還要重新運(yùn)行該事務(wù)。
sybase用戶管理
數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù)庫(kù)以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。SQL Server的安全管理是一種基于角色(role)的管理方法,位于不同權(quán)限層次(或角色)的用戶具有不同的用戶權(quán)限。
規(guī)定用戶權(quán)限有三個(gè)因素:用戶、數(shù)據(jù)對(duì)象和操作,即什么用戶在哪些數(shù)據(jù)對(duì)象上可以執(zhí)行什么操作。
訪問(wèn)SQL Server中數(shù)據(jù)的四道屏障:
1)操作系統(tǒng)——操作系統(tǒng)登錄
2)Sybase服務(wù)器——服務(wù)器登錄
3)Sybase數(shù)據(jù)庫(kù)——數(shù)據(jù)庫(kù)用戶登錄
4)數(shù)據(jù)庫(kù)對(duì)象——對(duì)象授權(quán)
2.7.1 用戶管理概述
在SYBASE數(shù)據(jù)庫(kù)中,用戶管理是系統(tǒng)管理的一個(gè)重要組成部分,但其重要性卻往往被人忽視。許多時(shí)候,操作數(shù)據(jù)庫(kù)的命令不成功常與用戶管理有關(guān),而許多誤操作命令的發(fā)生也可以通過(guò)用戶管理來(lái)避免。因此,弄清用戶管理的一些基本概念,對(duì)成功進(jìn)行數(shù)據(jù)庫(kù)系統(tǒng)管理有重要的作用。
2.7.1.1 SQL SERVER注冊(cè)用戶和數(shù)據(jù)庫(kù)用戶
剛接觸到這兩個(gè)概念的時(shí)候,可能會(huì)有所混淆,但只要了解SYBASE SQL SERVER的結(jié)構(gòu)后,就會(huì)清楚。SYBASE SQL SERVER為一進(jìn)程,進(jìn)程本身可管理多個(gè)數(shù)據(jù)庫(kù)。而有些數(shù)據(jù)庫(kù)是相互獨(dú)立的,有些數(shù)據(jù)庫(kù)是可以共用的,如tempdb和sysbsystemprocs數(shù)據(jù)庫(kù)。SQL SERVER與本身數(shù)據(jù)庫(kù)的關(guān)系猶如城市與其中樓房的關(guān)系,當(dāng)進(jìn)入某一城市時(shí)需某一合法的身份,但進(jìn)入城市的人并非每個(gè)樓房都可進(jìn)入,即使允許進(jìn)入也不能干某些事。SQL SERVER注冊(cè)用戶與數(shù)據(jù)庫(kù)用戶關(guān)系即是如此。當(dāng)SQL SERVER創(chuàng)建注冊(cè)用戶后,該用戶就能合法進(jìn)SQL SERVER,該注冊(cè)用戶信息會(huì)放在master數(shù)據(jù)庫(kù)中的 syslogins表中。但只有注冊(cè)用戶成為某一數(shù)據(jù)庫(kù)用戶,并且對(duì)該用戶賦予某些權(quán)限時(shí),該注冊(cè)用戶才能在限制條件下使用數(shù)據(jù)庫(kù)中的表。
2.7.1.2 SQL SERVER數(shù)據(jù)庫(kù)用戶分類
在SQL SERVER中用戶一般分為以下四種:
1)sa用戶。
2)數(shù)據(jù)庫(kù)屬主
3)數(shù)據(jù)庫(kù)對(duì)象屬主。
4)數(shù)據(jù)庫(kù)普通用戶。
sa用戶在SQL SERVER中為最高等級(jí)用戶,SQL SERVER中所有命令都可執(zhí)行。
數(shù)據(jù)庫(kù)屬主(dbo)用戶可對(duì)本數(shù)據(jù)庫(kù)中所有對(duì)象(如表、視圖、存儲(chǔ)過(guò)程等)進(jìn)行操作,一般有三種途徑創(chuàng)建:
a.為系統(tǒng)管理員的用戶
b.系統(tǒng)管理員的用戶將創(chuàng)建數(shù)據(jù)庫(kù)的權(quán)限賦予某個(gè)SQL SERVER中注冊(cè)用戶,由該用戶進(jìn)行數(shù)據(jù)庫(kù)的創(chuàng)建后,自然形成數(shù)據(jù)庫(kù)屬主
c.系統(tǒng)管理員的用戶創(chuàng)建數(shù)據(jù)庫(kù)后,將某個(gè)SQL SERVER中注冊(cè)用戶變?yōu)閿?shù)據(jù)庫(kù)的屬主。
數(shù)據(jù)庫(kù)對(duì)象屬主為創(chuàng)建該對(duì)象的用戶,在實(shí)際的數(shù)據(jù)庫(kù)的管理中,一般為數(shù)據(jù)庫(kù)屬主。
數(shù)據(jù)庫(kù)普通用戶必須在數(shù)據(jù)庫(kù)屬主對(duì)本數(shù)據(jù)庫(kù)中某些對(duì)象(如表、視圖、進(jìn)程等)賦予某些權(quán)限時(shí),才可對(duì)本數(shù)據(jù)庫(kù)中某些對(duì)象進(jìn)行允許的操作。
幾者的關(guān)系是相互包含的:系統(tǒng)管理員的用戶在進(jìn)入某個(gè)數(shù)據(jù)庫(kù)后,自然成為該數(shù)據(jù)庫(kù)的屬主,數(shù)據(jù)庫(kù)屬主可看作為特殊的數(shù)據(jù)庫(kù)普通用戶。
2.7.2 別名(aliases)與組(group)
別名(aliases)與組(group)在數(shù)據(jù)庫(kù)管理中是經(jīng)常用到的,它能簡(jiǎn)化數(shù)據(jù)庫(kù)用戶管理,方便對(duì)用戶的監(jiān)控。
所謂別名(aliases)即將SQL SERVER中的注冊(cè)用戶以同一個(gè)數(shù)據(jù)庫(kù)用戶的身份來(lái)訪問(wèn)數(shù)據(jù)庫(kù),并具有與該用戶相同的權(quán)限。也就是說(shuō),在數(shù)據(jù)庫(kù)中只要建立一個(gè)數(shù)據(jù)庫(kù)用戶,對(duì)該數(shù)據(jù)庫(kù)用戶各種操作定義好,并使SQL SERVER 中已經(jīng)定義好注冊(cè)用戶成為該數(shù)據(jù)庫(kù)用戶的別名用戶后,即擁有與該用戶相同的權(quán)限。這樣一來(lái),注冊(cè)用戶不必成為數(shù)據(jù)庫(kù)的用戶即可訪問(wèn)數(shù)據(jù)庫(kù),對(duì)所有別名用戶的權(quán)限的控制只需通過(guò)對(duì)一個(gè)數(shù)據(jù)庫(kù)用戶的控制達(dá)到。如:有一SQL SERVER名為T(mén)EST.SER,有一名為EXAMPLE的數(shù)據(jù)庫(kù),其中有一名為OK的表,當(dāng)系統(tǒng)管理員為T(mén)EST.SER創(chuàng)建名為JOHN和KATE的注冊(cè)用戶,EXAMPLE的數(shù)據(jù)庫(kù)中有一名為OK_SELECT的數(shù)據(jù)庫(kù)用戶,該數(shù)據(jù)庫(kù)用戶有對(duì)OK表的查詢權(quán)限。將JOHN和KATE這兩個(gè)注冊(cè)用戶變?yōu)镺K_SELECT的別名后,JOHN和KATE即可進(jìn)入數(shù)據(jù)庫(kù),并擁有與OK_SELECT的數(shù)據(jù)庫(kù)用戶相同的權(quán)限。
組(group)為數(shù)據(jù)庫(kù)用戶的集合,即通過(guò)對(duì)組(group)的權(quán)限的控制達(dá)到對(duì)該組中數(shù)據(jù)庫(kù)用戶的控制,但也可對(duì)該組中數(shù)據(jù)庫(kù)某些用戶進(jìn)行格外的權(quán)限控制。在上例中的EXAMPLE的數(shù)據(jù)庫(kù)中有一OK_INSERT的組,它對(duì)OK的表有插入的權(quán)限,數(shù)據(jù)庫(kù)中有兩個(gè)用戶:MARRY和KITY,當(dāng)這兩個(gè)用戶加入到OK_INSERT組后,MARRY和KITY就有對(duì)OK表的插入的權(quán)??的控制可得。而使MARRY對(duì)OK表有查詢權(quán)限,僅對(duì)MARRY用戶賦權(quán)即可。而別名則不行。
2.7.3 SYBASE SQL SERVER的角色
一般在管理分工較細(xì)的數(shù)據(jù)庫(kù)系統(tǒng)中,sa用戶往往被分為三種角色:系統(tǒng)管理員角色(SA role)、系統(tǒng)安全員角色(SSO role)和操作員角色(OPER role)。
sa用戶往往被鎖住,其權(quán)力被以上三種角色所瓜分。這三種角色將分別用不同的數(shù)據(jù)庫(kù)注冊(cè)用戶承擔(dān)。
角色是權(quán)限的集合。系統(tǒng)預(yù)定義角色:一個(gè)真正的數(shù)據(jù)庫(kù)管理員應(yīng)該是整個(gè)服務(wù)器及其數(shù)據(jù)庫(kù)的擁有者,具有管理服務(wù)器及其數(shù)據(jù)庫(kù)的所有權(quán)限。在一個(gè)大的系統(tǒng)中,數(shù)據(jù)庫(kù)管理員往往不只由一人承擔(dān),而是將管理任務(wù)進(jìn)行功能劃分,每人提當(dāng)不同的責(zé)任。系統(tǒng)預(yù)定義角色就是為適應(yīng)這種要求而設(shè)計(jì)的。
1)系統(tǒng)管理員(sa_role)
sa_role角色擁有執(zhí)行與數(shù)據(jù)庫(kù)具體應(yīng)用無(wú)關(guān)的管理權(quán)限:
a.安裝與更新SQL Server
b.管理服務(wù)器的物理存儲(chǔ)
c.配置系統(tǒng)設(shè)置參數(shù)
d.創(chuàng)建用戶數(shù)據(jù)庫(kù)
e.授予SQL Server用戶權(quán)限
2)系統(tǒng)安全管理員(sso_role)
a.sso_role用來(lái)實(shí)施安全上敏感的操作,執(zhí)行有關(guān)安全性的任務(wù):
b.建立服務(wù)器登錄帳戶
c.管理口令
d.授予除sa_role之外的任何角色
e.管理審計(jì)系統(tǒng)
3)操作員(oper_role)
a.oper_role執(zhí)行全服務(wù)器范圍的數(shù)據(jù)庫(kù)操作,如備份與恢復(fù)任意數(shù)據(jù)庫(kù)等:
b.轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)與日志
c.轉(zhuǎn)載數(shù)據(jù)庫(kù)與日志
sybase備份與恢復(fù)
數(shù)據(jù)庫(kù)的備份與恢復(fù)是SQL Server保障數(shù)據(jù)安全的一種重要手段,為防止意外,數(shù)據(jù)庫(kù)管理員必須定期和經(jīng)常制作數(shù)據(jù)庫(kù)的備份。一旦系統(tǒng)出現(xiàn)故障,數(shù)據(jù)能夠得到及時(shí)的恢復(fù)。
2.8.1 基本概念
(1)事務(wù)處理及其日志
SQL Server使用事務(wù)來(lái)跟蹤所有數(shù)據(jù)庫(kù)變化。事務(wù)是SQL Server的工作單元。一個(gè)事務(wù)包含一條或多條作為整體成功或失敗的T_SQL語(yǔ)句。每個(gè)數(shù)據(jù)庫(kù)都有自己的事務(wù)日志,即系統(tǒng)表syslogs,事務(wù)日志自動(dòng)記錄每個(gè)用戶發(fā)出的每個(gè)事務(wù),它影射了每個(gè)事務(wù)足夠多的信息,以確保數(shù)據(jù)能夠被恢復(fù)。
(2)檢查點(diǎn)(CheckPoint)
服務(wù)器在檢查點(diǎn)發(fā)生時(shí)更新數(shù)據(jù)。在服務(wù)器發(fā)出一個(gè)檢查點(diǎn)時(shí):
1)更新數(shù)據(jù)。
2)在日志中記錄下執(zhí)行檢查點(diǎn)的標(biāo)記。
檢查點(diǎn)可把所有“臟頁(yè)”寫(xiě)到數(shù)據(jù)庫(kù)設(shè)備上,“臟頁(yè)”是指從上一次檢查點(diǎn)以來(lái),在內(nèi)存中修改、但沒(méi)有在磁盤(pán)上修改的頁(yè)。SQL Server的自動(dòng)檢查點(diǎn)機(jī)制保證了被完成的事務(wù)修改的數(shù)據(jù)頁(yè)有規(guī)律地從內(nèi)存中的緩沖區(qū)寫(xiě)到數(shù)據(jù)庫(kù)設(shè)備上。
2.8.2數(shù)據(jù)庫(kù)備份
若硬件介質(zhì)出現(xiàn)故障(如磁盤(pán)損壞),當(dāng)且僅當(dāng)事先已對(duì)數(shù)據(jù)庫(kù)及其事務(wù)日志作了備份,才能恢復(fù)數(shù)據(jù)庫(kù)。
注意:絕對(duì)不要使用操作系統(tǒng)的拷貝數(shù)據(jù)庫(kù)設(shè)備,把這樣一個(gè)拷貝裝入SQL Server將導(dǎo)致大量數(shù)據(jù)庫(kù)受損。
備份的類型:
1)完全備份
2)增量備份——備份事務(wù)處理日志
說(shuō)明:
a.只有把事務(wù)日志放在單獨(dú)的設(shè)備上,才能進(jìn)行增量備份
b.備份事務(wù)日志會(huì)截?cái)嗳罩?,因此備份的?nèi)容是自上次備份以來(lái)的事務(wù)處理。
c.備份之前要啟動(dòng)備份服務(wù)器,并最好創(chuàng)建轉(zhuǎn)儲(chǔ)設(shè)備。
備注:truncate_only與no_log選項(xiàng)用于刪除事務(wù)處理而不作拷貝。Truncate_only截?cái)嗳罩?;在事?wù)處理日志完全滿時(shí)用no_log,它不為數(shù)據(jù)庫(kù)建立檢查點(diǎn)。兩個(gè)選項(xiàng)都會(huì)丟掉日志。當(dāng)使用了這兩個(gè)參數(shù)后,應(yīng)及時(shí)備份整個(gè)數(shù)據(jù)庫(kù)。no_truncate拷貝日志但不截?cái)嗳罩?,在出現(xiàn)介質(zhì)錯(cuò)誤時(shí)使用該選項(xiàng)。
2.8.3數(shù)據(jù)庫(kù)的恢復(fù)
使用load database加載備份到現(xiàn)有數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)可以是用于創(chuàng)建轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù),也可以不是。
由于事務(wù)日志在恢復(fù)數(shù)據(jù)庫(kù)中的特殊作用,應(yīng)定期備份數(shù)據(jù)庫(kù)及其事務(wù)日志,而且事務(wù)日志的備份要更頻繁一些。如:數(shù)據(jù)庫(kù)每周備份一次,事務(wù)日志每天備份一次。
SQL Server提供了兩種不同類型的恢復(fù):一類是系統(tǒng)自動(dòng)完成的恢復(fù);另一類是人工完成的恢復(fù)。
1)系統(tǒng)自動(dòng)恢復(fù)
系統(tǒng)自動(dòng)恢復(fù)是在系統(tǒng)軟件出現(xiàn)故障的情況下通過(guò)重新啟動(dòng)SQL Server進(jìn)行恢復(fù)。
自動(dòng)恢復(fù)從master數(shù)據(jù)庫(kù)開(kāi)始,然后是model數(shù)據(jù)庫(kù),再是temporary數(shù)據(jù)庫(kù),最后是用戶數(shù)據(jù)庫(kù)。在每個(gè)數(shù)據(jù)庫(kù)上,恢復(fù)機(jī)制觀察事務(wù)日志。如果日志寫(xiě)入比數(shù)據(jù)庫(kù)更近的數(shù)據(jù),則向前恢復(fù)數(shù)據(jù)庫(kù)。如果事務(wù)尚未完成,則要回退它們。
2)介質(zhì)故障的恢復(fù)
一旦介質(zhì)發(fā)生故障,只有通過(guò)以前備份的數(shù)據(jù)庫(kù)和事務(wù)日志才能恢復(fù)數(shù)據(jù)庫(kù),為此我們需要經(jīng)常備份數(shù)據(jù)庫(kù)和事務(wù)日志。備份數(shù)據(jù)庫(kù)和事務(wù)日志我們使用dump命令,而恢復(fù)數(shù)據(jù)庫(kù)和事務(wù)日志我們使用load命令。
與創(chuàng)建數(shù)據(jù)庫(kù)需要一個(gè)數(shù)據(jù)庫(kù)設(shè)備類似,我們備份數(shù)據(jù)庫(kù)和事務(wù)日志也需要一個(gè)卸出設(shè)備。增加卸出設(shè)備可以通過(guò)系統(tǒng)過(guò)程sp_addumpdevice來(lái)實(shí)現(xiàn)。卸出設(shè)備可以是磁盤(pán)、磁帶或操作系統(tǒng)文件。
在備份數(shù)據(jù)庫(kù)前的所有事務(wù)日志備份都是沒(méi)有意義的。我們一般不經(jīng)常備份數(shù)據(jù)庫(kù),但我們要經(jīng)常備份事務(wù)日志。這是因?yàn)閭浞菔聞?wù)日志比備份數(shù)據(jù)庫(kù)需要更少的時(shí)間和存儲(chǔ)空間。
3)恢復(fù)用戶數(shù)據(jù)庫(kù)
要恢復(fù)已被破壞的數(shù)據(jù)庫(kù),可以按如下步驟進(jìn)行:
a.用帶no_truncate選項(xiàng)的dump命令卸出用戶數(shù)據(jù)庫(kù)事務(wù)日志。
b.用和被破壞的數(shù)據(jù)庫(kù)的同樣的結(jié)構(gòu)建立一個(gè)新的數(shù)據(jù)庫(kù)。
c.用load命令重新裝入數(shù)據(jù)庫(kù)和事務(wù)日志。
sybaseT-SQL語(yǔ)言
關(guān)系數(shù)據(jù)庫(kù)以關(guān)系模型為基礎(chǔ),它由以下三部分組成:
1)數(shù)據(jù)結(jié)構(gòu)——模型所操作的對(duì)象、類型的集合
2)完整性規(guī)則——保證數(shù)據(jù)有效、正確的約束條件
3)數(shù)據(jù)操作——對(duì)模型對(duì)象所允許執(zhí)行的操作方式
關(guān)系(Relation)是一個(gè)由行和列組成的二維表格,表中的每一行是一條記錄(Record),每一列是記錄的一個(gè)字段(Field)。表中的每一條記錄必須是互斥的,字段的值必須具有原子性。
2.9.1 SQL語(yǔ)言概述
SQL(結(jié)構(gòu)化查詢語(yǔ)言)是關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言的一種國(guó)際標(biāo)準(zhǔn),它是一種非過(guò)程化的語(yǔ)言。通過(guò)編寫(xiě)SQL,我們可以實(shí)現(xiàn)對(duì)關(guān)系數(shù)據(jù)庫(kù)的全部操作。
1)數(shù)據(jù)定義語(yǔ)言(DDL)——建立和管理數(shù)據(jù)庫(kù)對(duì)象
2)數(shù)據(jù)操縱語(yǔ)言(DML)——用來(lái)查詢與更新數(shù)據(jù)
3)數(shù)據(jù)控制語(yǔ)言(DCL)——控制數(shù)據(jù)的安全性
T-SQL語(yǔ)言是Sybase對(duì)SQL92標(biāo)準(zhǔn)的一種擴(kuò)展,主要在它的基礎(chǔ)上增加了三個(gè)方面的功能:自己的數(shù)據(jù)類型/特有的SQL函數(shù)/流程控制功能。
T-SQL中的標(biāo)識(shí)符使用說(shuō)明:標(biāo)識(shí)符由1-30個(gè)字符或數(shù)字構(gòu)成,但首字符必須為字母。臨時(shí)表的表名以#開(kāi)頭,長(zhǎng)度不能超過(guò)13個(gè)字符。
Sybase數(shù)據(jù)庫(kù)亂碼問(wèn)題
搭建測(cè)試Sybase數(shù)據(jù)庫(kù)服務(wù)器時(shí),遇到亂碼問(wèn)題,之前沒(méi)有遇到是因?yàn)殚_(kāi)發(fā)數(shù)據(jù)庫(kù)服務(wù)器是早就安裝好并設(shè)置好字符集的,因此些問(wèn)題在部署測(cè)試環(huán)境時(shí)才出現(xiàn),當(dāng)已經(jīng)將數(shù)據(jù)庫(kù)配置完畢,并且所有的初始化腳本都已經(jīng)執(zhí)行完畢,工程也已經(jīng)成功部署在WebLogic上,打開(kāi)IE,運(yùn)行程序,卻發(fā)現(xiàn)所有從數(shù)據(jù)庫(kù)中讀取出來(lái)的都是亂碼,這種情況下就需要設(shè)置字符集進(jìn)行解決亂碼問(wèn)題。設(shè)置字符集的過(guò)程:
1、 安裝完Sybase后,如果要想設(shè)置字符集為CP936,就必須先安裝該字符集,因?yàn)镾ybase默認(rèn)的字符集表中并沒(méi)有該字符集,安裝步驟如下:(這里SYBASE的安裝路徑為c:\sybase)
1.c:\>;cd \sybase\charsets\cp936
2.c:\sybase\charsets\cp936>; charset -Usa -Psa_pass -Sserver_name binary.srt cp936通過(guò)上述命令就成功將CP936字符集安裝表Sybase的系統(tǒng)字符集表中,但必須重啟Sybase服務(wù)兩次才能看到結(jié)果,可以通過(guò)查看master數(shù)據(jù)庫(kù)中的syscharsets表查看是否已經(jīng)安裝成功,我們可以看到已經(jīng)安裝成功了:1002,171,0,1,'cp936','CP936 (Simplified Chinese).',’…’
2、看到CP936的編號(hào)為171,我們需要在Sybase的屬性中設(shè)置系統(tǒng)字符集為該ID,如下圖所示:
如果設(shè)置完字符集成出現(xiàn)錯(cuò)誤,是因?yàn)閙aster數(shù)據(jù)庫(kù)的表空間默認(rèn)只分配幾百K的空間,導(dǎo)入新的數(shù)據(jù)后已經(jīng)沒(méi)有足夠的空間了,所以要對(duì)master數(shù)據(jù)庫(kù)設(shè)置大一些的表空間,點(diǎn)擊master數(shù)據(jù)庫(kù)右鍵屬性,選擇表空間的tab頁(yè),對(duì)原有的表空間編輯重新分配大小,將master所有的表空間都分配了就可以解決該問(wèn)題。
3、 設(shè)置好字符集后就可以執(zhí)行初始化腳本了。
Sybase數(shù)據(jù)庫(kù)的中國(guó)市場(chǎng)
sybase公司于1991年12月進(jìn)入中國(guó)大陸,經(jīng)過(guò)一段時(shí)間的本地技術(shù)人才積蓄與市場(chǎng)開(kāi)拓后,在1993年投資230萬(wàn)美元正式建立Sybase在中國(guó)的公司,注冊(cè)名稱為賽貝斯軟件(中國(guó))有限公司。
經(jīng)過(guò)十幾年的發(fā)展,sybase公司贏得了大量的市場(chǎng),擁有遍及金融、電信、政府、制造、零售、交易、教育、鐵路、電力、水利、環(huán)保、軍事、外貿(mào)等行業(yè)超過(guò)1000家的用戶。擁有雄厚技術(shù)實(shí)力與產(chǎn)品魅力、一貫堅(jiān)持“走有特色的中國(guó)之路”的sybase中國(guó)公司衷心地愿為廣大國(guó)內(nèi)用戶開(kāi)啟未來(lái)的成功之門(mén)。sybase公司擁有經(jīng)驗(yàn)豐富的技術(shù)專家和工程人員,為用戶提供一流的技術(shù)支持與服務(wù),包括系統(tǒng)選型、方案論證、業(yè)務(wù)分析、系統(tǒng)設(shè)計(jì)和應(yīng)用開(kāi)發(fā)等,從而多角度全方位地滿足不同用戶、不同應(yīng)用系統(tǒng)的不同需求。
sybase公司在中國(guó)有員工近300人,其中技術(shù)人員數(shù)量占到公司總?cè)藬?shù)的85%。sybase中國(guó)公司除北京總部外,在上海、成都、廣州等地設(shè)立了辦事處,并在北京、上海、西安等地設(shè)立了研發(fā)中心,與合作伙伴一道為客戶就近提供服務(wù)與支持。為全力提升既定市場(chǎng)的領(lǐng)導(dǎo)地位,sybase于2002、2003年相繼在北京、上海成立“解決方案中心”,加強(qiáng)與客戶、合作伙伴的協(xié)作關(guān)系并提供最完善的技術(shù)顧問(wèn)。
自90年代初起,sybase已占穩(wěn)中國(guó)市場(chǎng),隨著中國(guó)加入世貿(mào)及北京成功申辦2008年奧運(yùn),亞太趨勢(shì)必享有策略性的優(yōu)勢(shì)。CCID報(bào)告指出,sybase在中國(guó)電信業(yè)已取得45%的市場(chǎng)占有率,并以36.2%的份額占據(jù)中國(guó)鐵路數(shù)據(jù)庫(kù)市場(chǎng)絕對(duì)的領(lǐng)導(dǎo)地位。sybase公司憑借優(yōu)異的服務(wù)質(zhì)量,連續(xù)三年榮獲CCID頒發(fā)“最佳用戶服務(wù)滿意度獎(jiǎng)”;更榮膺2002年中國(guó)數(shù)據(jù)庫(kù)軟件市場(chǎng)年度成功企業(yè)殊榮。IDC調(diào)查報(bào)告顯示,sybase公司在中國(guó)軟件市場(chǎng)的占有率名列第四,目前已占據(jù)著國(guó)內(nèi)軟件市場(chǎng)的主導(dǎo)地位。
Sybase數(shù)據(jù)庫(kù)技術(shù)著作
sybase技術(shù)在中國(guó)推廣以來(lái),已經(jīng)培養(yǎng)了大量的用戶和上萬(wàn)名相關(guān)工程技術(shù)人員。同時(shí),與Sybase相關(guān)的技術(shù)著作也不斷推出,例如下面的兩套Sybase 相關(guān)技術(shù)叢書(shū):
Sybase數(shù)據(jù)庫(kù)在UNIX、Windows上的實(shí)施和管理
Sybase全套技術(shù)支持資料
這些技術(shù)著作滿足了用戶對(duì)Sybase產(chǎn)品的理解,提高了用戶的Sybase應(yīng)用能力,對(duì)Sybase的發(fā)展產(chǎn)生著深遠(yuǎn)影響!
2010年05月13日,SAP公司以58億美元收購(gòu)軟件制造商Sybase。