包括網絡連接、客戶進程與服務器進程之間的連接;
2)客戶端通過網絡發送SQL語句給服務器,用來查詢或操作服務器中的數據或數據庫對象;
3)服務器接收到SQL語句後,對其進行語法分析、優化和編譯後執行;
4)如果執行的語句產生一個結果集,服務器通過網絡把結果集返回給客戶;
5)客戶端對收到的結果作相應的處理。
在客戶/服務器體系,有兩種數據庫引擎結構,即多進程數據庫引擎和單進程、多線程引擎結構。多進程結構即多個可執行程序同時運行。每當用戶登錄到數據庫系統時實際上都啟動了數據庫引擎的一個獨立實例。存在起協調作用的進程協調進行之間的通訊以保證當多用戶訪問相同數據時數據的完整性。多進程數據庫引擎一般用在大型機數據庫上。單進程多線程數據庫引擎在原理上和多進程數據庫引擎類似,不同的是多線程數據庫引擎自己負責調度各應用程序占用CPU的時間,而不依賴於操作系統。這樣,多線程數據庫引擎自我保護的能力更強。
Sybase數據庫管理系統采用的是單進程多線程的引擎結構。
1.2 Sybase產品概述
1.2.1 Sybase軟件的組成
Sybase軟件可劃分為三個部分:
1)進行數據管理與維護的聯機關系數據庫管理系統Sybase SQL Server;
2)支持數據庫應用系統的建立和開發的一組前端工具軟件Sybase SQL Tools;
3) 把異構環境下其他廠商的應用軟件和任何類型的數據連接在一起的接口軟件Open ClIEnt/Open Server。
SQL Server是個可編程的數據庫管理系統(DBMS),它是整個Sybase產品的核心軟件,起著數據管理、高速緩沖區管理、事務管理的作用。
ISQL是與SQL Server進行交互的一種SQL句法分析器。ISQL接收用戶發出的SQL語言,將其發送給SQL Server,並將結果以形式化的方式顯示在用戶的標准輸出上。
DWB是數據工作台,是Sybase SQL Toolset的一個主要組成部分,它的作用在於使用戶能夠設置和管理SQL Server上的數據庫,並且為用戶提供一種對數據庫的信息執行添加、更新和檢索等操作的簡便方法。在DWB中能完成ISQL的所有功能,且由於DWB是基於窗口和菜單的,因此操作比ISQL簡單,是一種方便實用的數據庫管理工具。
APT是Sybase客戶軟件部分的主要產品之一,也是從事實際應用開發的主要環境。APT工作台是用於建立應用程序的工具集,可以創建從非常簡單到非常復雜的應用程序,它主要用於開發基於表格(form)的應用。其用戶界面采用窗口和菜單驅動方式,通過一系列的選擇完成表格(form)、菜單和處理的開發。
通過Open ClIEnt的DB-LIB庫,應用程序可以訪問SQL Server。而通過Open Server的SERVER-LIB,應用程序可以訪問其它的數據庫管理系統。
1.2.2 SQL Server的基本特征
SQL Server具有如下一些基本特征:
1)SQL Server可以放在若干個磁盤設備上,初始安裝時所需的磁盤空間至少要17MB。
2)SQL Server支持多
Sybase在安裝時,自動創建了四個系統數據庫:
master、model、tempdb、sybsystemprocs
(1) master數據庫
它是管理和控制用戶數據庫以及維護服務器正常運行的核心數據庫,它包含許多系統表和系統過程,從總體上控制用戶數據庫和SQL Server的操作,構成了Sybase系統的數據字典,它保存了大量的系統信息,如服務器配置、用戶、設備等。
在master數據庫中不允許普通用戶在其中創建數據庫對象,否則會使得master數據庫的事務日志很快變滿。如果事務日志用盡,就無法使用dump transaction命令釋放master數據庫中的空間。
master數據庫主要記錄信息為:
1)登錄帳號(SQL服務器用戶名);syslogins,sysremolelogins
2)正在執行的過程;sysprocesses
3)可修改的環境變量;sysconfigures
4)系統錯誤信息;sysmessages
5)SQL服務器上每個數據庫的信息;sysdatabases
6)每個數據庫占用的存儲空間;sysusages
7)系統上安裝的磁帶及磁帶信息;sysdevices
8)活動鎖信息;syslocks
(2)model數據庫
它是為創建用戶數據庫而提供的模板。它提供了新用戶數據庫的初型。當我們每次用CREATE DATABASE命令時,SQL Server都產生一個model數據庫的拷貝,以此作為新用戶數據庫,然後把它擴展到命令要求的尺寸。如果我們修改了model數據庫,那麼以後新創建的數據庫都將隨它而改變。
Model數據庫中包含每個用戶數據庫所要求的系統表。Model數據庫可以被修改以便定制新創建的。
下面是幾個通常用到的對model數據庫的改變:
增加用戶數據庫類型、規則或缺省;
可存取SQL Server上所有數據庫的用戶用sp_adduser增加到model數據庫上;
缺省權限(特別是guest帳號)可在model中建立;
諸如select into/bulkcopy那樣的數據庫選項可在model中設置。這些設置反映到所有新創建的數據庫中。它們在model中最原始的值是關(off)。
在一般情況下,大多數用戶無權修改model數據庫,也沒被授權讀取。因為model中所有內容已拷貝到新數據庫中,授權讀model沒什麼意義。
(3)tempdb數據庫
它是個臨時數據庫,為服務器運行與處理提供一個共享的存儲區域,如group by和order by的中間結果就存放在這裡。Tempdb的空間為服務器中所有數據庫的所有用戶所共享。
每次重啟SQL Server,服務器的一個自動進程都拷貝model數據庫到tempdb數據庫,並清除tempdb中原來的內容。因此tempdb中的用戶表都是臨時的。臨時表分為兩類:可共享的和不可共享的。不可共享的臨時表在由create table中將符號#置於表名之前創立;可共享的臨時表通過create table中指定表名前綴tempdb..而創立。不可共享的臨時表SQL Server自動為其添加數字後綴名,且它只存在於當前會話中。
(4)sybsystemprocs數據庫
它是專門用來保存系統命令(存儲過程)的數據庫,如sp_help、sp_configure、sp_helpdevice等。當任一數據庫用戶運行以sp_開頭的存儲過程時,SQL Server按照以下順序查找:當前數據庫、sybsystemprocs數據庫、master數據庫。
其他可選數據庫:
(5)安全審核數據庫sybsecurity
數據庫中保存系統的安全審核信息,它可跟蹤記錄每個用戶的操作情況,為維護系統安全提供控制手段。
(6)示例數據庫pubs2
為用戶提供一個學習Sybase的數據庫模型。
(7)命令語法數據庫sybsyntax
庫中保存Sybase數據庫的命令語法及支持的語言庫。
1.2.3.2 用戶數據庫
用戶數據庫是我們使用Sybase服務器的真正目的。要管理用戶數據,必須在Sybase中創建自己的數據庫,是指用create database命令創建的數據庫。所有新的用戶數據庫都要在master數據庫中創建,也就是說,不能存取master數據庫的用戶是無權創建新的數據庫的。SA可以將創建數據庫的權限授予其他用戶。
您正在看的sybase教程是:系統集成備忘(Sybase介紹、產品概述和基礎知識:之二)。。顯示配置和改變配置使用系統過程sp_configure。
有兩種配置值:動態的和靜態的,動態值一旦改變立即生效,靜態值要在系統重啟動後才起作用。
2.3 系統的啟動和關閉
2.3.1 啟動SQL Server
應用SQL Server安裝程序(sybinit)創建SQL Server或Backup Server, 默認文件名為RUN_SYBASE 和RUN_SYB_BACKUP,放在$Sybase/INSTALL目錄下。Startserver 用來啟動SQL Server 或Backup Server:
可以通過showserver查看SQL Server 和Backup Server是否已經啟動。
SQL Server的啟動過程 :master數據庫啟動 -- Sybsystemproces數據庫啟動 -- tempdb--model -- 用戶數據庫 。
啟動SQL Server的單用戶模式 :如果要恢復一已被損壞的master數據庫,則必須要啟動SQL Server的單用戶模式。單用戶模式下僅允許一個系統管理員向SQL Server注冊。
Startserver -f RUN_Sybase -m
2.3.2 關閉服務器
關閉SQL Server可以在isql中使用T-SQL命令:
關閉SQL備服務器 :shutdown SYB_BACKUP
關閉SQL主服務器 :shutdown [with nowait]
2.4 數據庫設備與存儲空間管理
初始安裝SQL Server時,安裝程序和腳本初始化主設備,並建立master、model、tempdb和sybsystemprocs數據庫。系統數據庫、預定義設備和段按下列默認方式組織:
1)master、model、tempdb數據庫安裝在主設備master上;
2)sybsystemprocs數據庫安裝在安裝時選擇的設備上(sysprocsdev);
3)為每個數據庫創建三個預定義段:system、default和logsegment;
4)所有用戶創建數據庫的默認設備是master設備;
5)如果選擇安裝了審計數據庫sybsecurity,它位於自己的設備上。
2.4.1 設備與存儲管理考慮的主要問題
(1)恢復問題
物理磁盤崩潰時,磁盤鏡像或在單獨的物理設備上保存日志為數據庫恢復提供了兩種機制。
(2)性能問題
磁盤讀寫速度是I/O操作的瓶頸,正確地把數據庫對象放置到物理設備上有利於改進性能;把日志和數據庫對象置於單獨的設備上可以提高系統性能;把表放在一個硬盤上而把索引放在另一個硬盤上,由於把工作分置於兩個硬盤驅動器上,所以可以確保物理讀寫速度加快;磁盤鏡像會降低磁盤寫的速度。
2.6 數據庫與事務日志
通常用戶數據庫由系統管理員創建,它的默認屬主是dbo。系統過程sp_changeddbowner可改變數據庫的屬主關系,它必須由數據庫管理員在要改變屬主關系的數據庫中執行。
日志文件是用來記錄數據庫每一次修改活動的文件。SQL Server中的每一個數據庫都有自己的日志文件,即系統表syslogs,也稱為事務日志。事務日志是撤消事務和出現故障時恢復事務的依據。在某些情況下,事務日志比數據本身更為重要。
數據庫的修改是以事務為單位進行的。一個事務就是一個操作序列,這些操作要麼全做,要麼全不做,它是一個不可分割的工作單位。任何一個事務具備如下特征:
1)執行的原子性(Atomic);
2)保持數據的一致性(Consistency);
3)彼此的隔離性(Isolation);
4)作用的持久性(Durability);
上述事務的四個特征被稱為事務的ACID准則。
事務在運行過程中,SQL Server把事務開始、事務結束以及對數據庫的插入、刪除和更新等每一個操作作為一個日志記錄存放到事務日志中。事務中的更新操作首先在數據庫緩沖區(內存)中進行,緩沖區分別有用來記錄操作活動的數據頁(data page)和日志頁(log page)。當運行到commit tran時,日志頁首先從緩沖區寫到磁盤上,而後數據頁從緩沖區寫到磁盤上,即遵循“先寫日志(write_ahead log)”的原則,這樣保證出現故障的情況下,通過日志能夠得到最大限度的恢復。恢復必須撤消發生故障時還未提交的事務,已完成的事務若仍有未從緩沖區寫到數據庫設備中,還要重新運行該事務。
2.7 數據庫安全性與用戶管理
數據庫的安全性是指保護數據庫以防止不合法的使用所造成的數據洩露、更改或破壞。SQL Server的安全管理是一種基於角色(role)的管理方法,位於不同權限層次(或角色)的用戶具有不同的用戶權限。
規定用戶權限有三個因素:用戶、數據對象和操作,即什麼用戶在哪些數據對象上可以執行什麼操作。
訪問SQL Server中數據的四道屏障:
1)操作系統——操作系統登錄
2)Sybase服務器——服務器登錄
3)Sybase數據庫——數據庫用戶登錄
4)數據庫對象——對象授權
2.7.1 用戶管理概述
在Sybase數據庫中,用戶管理是系統管理的一個重要組成部分,但其重要性卻往往被人忽視。許多時候,操作數據庫的命令不成功常與用戶管理有關,而許多誤操作命令的發生也可以通過用戶管理來避免。因此,弄清用戶管理的一些基本概念,對成功進行數據庫系統管理有重要的作用。
2.7.1.1 SQL Server注冊用戶和數據庫用戶
剛接觸到這兩個概念的時候,可能會有所混淆,但只要了解SYBASE SQL SERVER的結構後,就會清楚。Sybase SQL SERVER為一進程,進程本身可管理多個數據庫。而有些數據庫是相互獨立的,有些數據庫是可以共用的,如tempdb和sysbsystemprocs數據庫。SQL SERVER與本身數據庫的關系猶如城市與其中樓房的關系,當進入某一城市時需某一合法的身份,但進入城市的人並非每個樓房都可進入,即使允許進入也不能干某些事。SQL SERVER注冊用戶與數據庫用戶關系即是如此。當SQL SERVER創建注冊用戶後,該用戶就能合法進SQL Server,該注冊用戶信息會放在master數據庫中的 syslogins表中。但只有注冊用戶成為某一數據庫用戶,並且對該用戶賦予某些權限時,該注冊用戶才能在限制條件下使用數據庫中的表。
2.7.1.2 SQL Server數據庫用戶分類
在SQL Server中用戶一般分為以下四種:
1)sa用戶。
2)數據庫屬主
3)數據庫對象屬主。
4)數據庫普通用戶。
sa用戶在SQL SERVER中為最高等級用戶,SQL Server中所有命令都可執行。
數據庫屬主(dbo)用戶可對本數據庫中所有對象(如表、視圖、存儲過程等)進行操作,一般有三種途徑創建:
a.為系統管理員的用戶;
b.系統管理員的用戶將創建數據庫的權限賦予某個SQL Server中注冊用戶,由該用戶進行數據庫的創建後,自然形成數據庫屬主;
c.系統管理員的用戶創建數據庫後,將某個SQL Server中注冊用戶變為數據庫的屬主。
數據庫對象屬主為創建該對象的用戶,在實際的數據庫的管理中,一般為數據庫屬主。
數據庫普通用戶必須在數據庫屬主對本數據庫中某些對象(如表、視圖、進程等)賦予某些權限時,才可對本數據庫中某些對象進行允許的操作。
幾者的關系是相互包含的:系統管理員的用戶在進入某個數據庫後,自然成為該數據庫的屬主,數據庫屬主可看作為特殊的數據庫普通用戶。
檢查點可把所有“髒頁”寫到數據庫設備上,“髒頁”是指從上一次檢查點以來,在內存中修改、但沒有在磁盤上修改的頁。SQL Server的自動檢查點機制保證了被完成的事務修改的數據頁有規律地從內存中的緩沖區寫到數據庫設備上。
2.8.2 數據庫備份
若硬件介質出現故障(如磁盤損壞),當且僅當事先已對數據庫及其事務日志作了備份,才能恢復數據庫。
注意:絕對不要使用操作系統的拷貝數據庫設備,把這樣一個拷貝裝入SQL Server將導致大量數據庫受損。
備份的類型:
1)完全備份
2)增量備份——備份事務處理日志
說明:
a.只有把事務日志放在單獨的設備上,才能進行增量備份;
b.備份事務日志會截斷日志,因此備份的內容是自上次備份以來的事務處理。
c.備份之前要啟動備份服務器,並最好創建轉儲設備。
備注:truncate_only與no_log選項用於刪除事務處理而不作拷貝。Truncate_only截斷日志;在事務處理日志完全滿時用no_log,它不為數據庫建立檢查點。兩個選項都會丟掉日志。當使用了這兩個參數後,應及時備份整個數據庫。no_truncate拷貝日志但不截斷日志,在出現介質錯誤時使用該選項。
2.8.3 數據庫的恢復
使用load database加載備份到現有數據庫,數據庫可以是用於創建轉儲的數據庫,也可以不是。
由於事務日志在恢復數據庫中的特殊作用,應定期備份數據庫及其事務日志,而且事務日志的備份要更頻繁一些。如:數據庫每周備份一次,事務日志每天備份一次。
SQL Server提供了兩種不同類型的恢復:一類是系統自動完成的恢復;另一類是人工完成的恢復。
1)系統自動恢復
系統自動恢復是在系統軟件出現故障的情況下通過重新啟動SQL Server進行恢復。
自動恢復從master數據庫開始,然後是model數據庫,再是temporary數據庫,最後是用戶數據庫。在每個數據庫上,恢復機制觀察事務日志。如果日志寫入比數據庫更近的數據,則向前恢復數據庫。如果事務尚未完成,則要回退它們。
2)介質故障的恢復
一旦介質發生故障,只有通過以前備份的數據庫和事務日志才能恢復數據庫,為此我們需要經常備份數據庫和事務日志。備份數據庫和事務日志我們使用dump命令,而恢復數據庫和事務日志我們使用load命令。
與創建數據庫需要一個數據庫設備類似,我們備份數據庫和事務日志也需要一個卸出設備。增加卸出設備可以通過系統過程sp_addumpdevice來實現。卸出設備可以是磁盤、磁帶或操作系統文件。
在備份數據庫前的所有事務日志備份都是沒有意義的。我們一般不經常備份數據庫,但我們要經常備份事務日志。這是因為備份事務日志比備份數據庫需要更少的時間和存儲空間。
3)恢復用戶數據庫
要恢復已被破壞的數據庫,可以按如下步驟進行:
a.用帶no_truncate選項的dump命令卸出用戶數據庫事務日志。
b.用和被破壞的數據庫的同樣的結構建立一個新的數據庫。
c.用load命令重新裝入數據庫和事務日志。
2.9 數據庫與T-SQL語言
關系數據庫以關系模型為基礎,它由以下三部分組成:
1)數據結構——模型所操作的對象、類型的集合
2)完整性規則——保證數據有效、正確的約束條件
3)數據操作——對模型對象所允許執行的操作方式
關系(Relation)是一個由行和列組成的二維表格,表中的每一行是一條記錄(Record),每一列是記錄的一個字段(FIEld)。表中的每一條記錄必須是互斥的,字段的值必須具有原子性。
2.9.1 SQL語言概述
SQL(結構化查詢語言)是關系數據庫語言的一種國際標准,它是一種非過程化的語言。通過編寫SQL,我們可以實現對關系數據庫的全部操作。
1)數據定義語言(DDL)——建立和管理數據庫對象
2)數據操縱語言(DML)——用來查詢與更新數據
3)數據控制語言(DCL)——控制數據的安全性
T-SQL語言是Sybase對SQL92標准的一種擴展,主要在它的基礎上增加了三個方面的功能:自己的數據類型/特有的SQL函數/流程控制功能。
T-SQL中的標識符使用說明:標識符由1-30個字符或數字構成,但首字符必須為字母。臨時表的表名以#開頭,長度不能超過13個字符。