[計算機]Sybase基礎(chǔ)知識_第1頁
[計算機]Sybase基礎(chǔ)知識_第2頁
[計算機]Sybase基礎(chǔ)知識_第3頁
[計算機]Sybase基礎(chǔ)知識_第4頁
[計算機]Sybase基礎(chǔ)知識_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.第一講 Sybase基礎(chǔ)知識 一、客戶/服務(wù)器體系結(jié)構(gòu) Sybase是一種建立在客戶/服務(wù)器體系結(jié)構(gòu)上的數(shù)據(jù)庫管理系統(tǒng)。 什么是客戶/服務(wù)器體系結(jié)構(gòu)? 從硬件角度看,客戶/服務(wù)器體系結(jié)構(gòu)是指將某項任務(wù)在兩臺或多臺機器之間進行分配,其中客戶機(Client)用來運行提供用戶接口和前端處理的應用程序,服務(wù)器機(Server)提供客戶機使用的各種資源和服務(wù)。 從軟件角度看,客戶/服務(wù)器體系結(jié)構(gòu)是把某項應用或軟件系統(tǒng)按邏輯功能劃分為客戶軟件部分和服務(wù)器軟件部分??蛻糗浖糠忠话阖撠煍?shù)據(jù)的表示和應用,處理用戶界面,用以接收用戶的數(shù)據(jù)處理請求并將之轉(zhuǎn)換為對服務(wù)器的請求,要求服務(wù)器為其提供數(shù)據(jù)的存儲和檢索

2、服務(wù);服務(wù)器端軟件負責接收客戶端軟件發(fā)來的請求并提供相應服務(wù)。 客戶/服務(wù)器融合了大型機的強大功能和中央控制以及PC機的低成本和較好的處理平衡??蛻?服務(wù)器為任務(wù)的集中/局部分布提供了一種新的方法,這種體系能夠使用戶對數(shù)據(jù)完整性、管理和安全性進行集中控制。在緩解網(wǎng)絡(luò)交通和主機負荷以及滿足用戶需要方面,客戶/服務(wù)器體系提供了良好的解決方案。 總之,客戶/服務(wù)器的工作模式是:客戶與服務(wù)器之間采用網(wǎng)絡(luò)協(xié)議(如TCP/IP、IPX/SPX)進行連接和通訊,由客戶端向服務(wù)器發(fā)出請求,服務(wù)器端響應請求,并進行相應服務(wù)。 數(shù)據(jù)庫應用的客戶/服務(wù)器模式如下圖所示: 二、訪問Sybase服務(wù)器的基本過程 1建立

3、客戶與服務(wù)器之間的連接,包括網(wǎng)絡(luò)連接、客戶進程與服務(wù)器進程之間的連接; 2客戶端通過網(wǎng)絡(luò)發(fā)送SQL語句給服務(wù)器,用來查詢或操作服務(wù)器中的數(shù)據(jù)或數(shù)據(jù)庫對象; 3服務(wù)器接收到SQL語句后,對其進行語法分析、優(yōu)化和編譯后執(zhí)行; 4如果執(zhí)行的語句產(chǎn)生一個結(jié)果集,服務(wù)器通過網(wǎng)絡(luò)把結(jié)果集返回給客戶; 5客戶端對收到的結(jié)果作相應的處理。 在客戶/服務(wù)器體系,有兩種數(shù)據(jù)庫引擎結(jié)構(gòu),即多進程數(shù)據(jù)庫引擎和單進程、多線程引擎結(jié)構(gòu)。 多進程結(jié)構(gòu)即多個可執(zhí)行程序同時運行。每當用戶登錄到數(shù)據(jù)庫系統(tǒng)時實際上都啟動了數(shù)據(jù)庫引擎的一個獨立實例。存在起協(xié)調(diào)作用的進程協(xié)調(diào)進行之間的通訊以保證當多用戶訪問相同數(shù)據(jù)時數(shù)據(jù)的完整性。多進

4、程數(shù)據(jù)庫引擎一般用在大型機數(shù)據(jù)庫上。 單進程多線程數(shù)據(jù)庫引擎在原理上和多進程數(shù)據(jù)庫引擎類似,不同的是多線程數(shù)據(jù)庫引擎自己負責調(diào)度各應用程序占用CPU的時間,而不依賴于操作系統(tǒng)。這樣,多線程數(shù)據(jù)庫引擎自我保護的能力更強。 Oracle Server是一個真正的多進程數(shù)據(jù)庫引擎,Sybase數(shù)據(jù)庫管理系統(tǒng)采用的是單進程多線程的引擎結(jié)構(gòu)。 三、Sybase產(chǎn)品概述 1Sybase軟件的組成 Sybase 軟件可劃分為三個部分:一是進行數(shù)據(jù)管理與維護的聯(lián)機關(guān)系數(shù)據(jù)庫管理系統(tǒng)Sybase SQL Server;二是支持數(shù)據(jù)庫應用系統(tǒng)的建立和開發(fā)的一組前端工具軟件Sybase SQL Tools;三是可把

5、異構(gòu)環(huán)境下其他廠商的應用軟件和任何類型的數(shù)據(jù)連接在一起的接口軟件Open Client/Open Server。 SQL Server是個可編程的數(shù)據(jù)庫管理系統(tǒng)(DBMS),它是整個Sybase產(chǎn)品的核心軟件,起著數(shù)據(jù)管理、高速緩沖區(qū)管理、事務(wù)管理的作用。 2SQL Server的基本特征 SQL Server是個關(guān)系數(shù)據(jù)庫管理系統(tǒng),它具有如下一些基本特征: a.SQL Server可以放在若干個磁盤設(shè)備上,初始安裝時所需的磁盤空間至少要17MB。 b.SQL Server支持多庫結(jié)構(gòu),也就是說Sybase系統(tǒng)中可以有多個數(shù)據(jù)庫。Sybase可以管理多個數(shù)據(jù)庫。 c.SQL Server可以編

6、譯和運行T-SQL語句,并可返回客戶程序所要求的結(jié)果。T-SQL語句是標準SQL的擴充,它除了有數(shù)據(jù)定義語句、數(shù)據(jù)操縱語句和數(shù)據(jù)控制語句之外,主要增加了流程控制語句。 d.SQL Server可以管理多個用戶并具有較高的事務(wù)吞吐量和較低的事務(wù)響應時間。 客戶的應用程序可以存取Server中某一個或幾個數(shù)據(jù)庫的數(shù)據(jù)。 四、SQL Server的主要內(nèi)容 Sybase SQL Server是一個多庫結(jié)構(gòu)的RDBMS,體系結(jié)構(gòu)大致如下: 1數(shù)據(jù)庫 服務(wù)器自身所使用的數(shù)據(jù)庫,也可以說是管理服務(wù)器和用戶數(shù)據(jù)庫的數(shù)據(jù)庫。Sybase在安裝時,自動創(chuàng)建了四個系統(tǒng)數(shù)據(jù)庫: master、model、tempd

7、b、sybsystemprocs (1) master數(shù)據(jù)庫 它是管理和控制用戶數(shù)據(jù)庫以及維護服務(wù)器正常運行的核心數(shù)據(jù)庫,它保存了大量的系統(tǒng)信息,如服務(wù)器配置、用戶、設(shè)備等。 在master數(shù)據(jù)庫中不允許普通用戶在其中創(chuàng)建數(shù)據(jù)庫對象,否則會使得master數(shù)據(jù)庫的事務(wù)日志很快變滿。如果事務(wù)日志用盡,就無法使用dump transaction命令釋放master數(shù)據(jù)庫中的空間。 (2)model數(shù)據(jù)庫 它是為創(chuàng)建用戶數(shù)據(jù)庫而提供的模板。每當創(chuàng)建新的數(shù)據(jù)庫時,SQL Server自動建立model數(shù)據(jù)庫的一份拷貝,并把它擴充到用戶所要求的大小,以此作為新用戶數(shù)據(jù)庫。 Model數(shù)據(jù)庫中包含每個用戶

8、數(shù)據(jù)庫所要求的系統(tǒng)表。Model數(shù)據(jù)庫可以被修改以便定制新創(chuàng)建的。 (3)tempdb數(shù)據(jù)庫 它是個臨時數(shù)據(jù)庫,為服務(wù)器運行與處理提供一個共享的存儲區(qū)域,如group by和order by的中間結(jié)果就存放在這里。Tempdb的空間為服務(wù)器中所有數(shù)據(jù)庫的所有用戶所共享。 每次重啟SQL Server,服務(wù)器的一個自動進程都拷貝model數(shù)據(jù)庫到tempdb數(shù)據(jù)庫,并清除tempdb中原來的內(nèi)容。因此tempdb中的用戶表都是臨時的。臨時表分為兩類:可共享的和不可共享的。不可共享的臨時表在由create table中將符號#置于表名之前創(chuàng)立;可共享的臨時表通過create table中指定表名前

9、綴tempdb.而創(chuàng)立。不可共享的臨時表SQL Server自動為其添加數(shù)字后綴名,且它只存在于當前會話中。 (4)sybsystemprocs數(shù)據(jù)庫master數(shù)據(jù)庫 它是專門用來保存系統(tǒng)命令(存儲過程)的數(shù)據(jù)庫,如sp_help、sp_configure、sp_helpdevice等。當任一數(shù)據(jù)庫用戶運行以sp_ 開頭的存儲過程時,SQL Server按照以下順序查找:當前數(shù)據(jù)庫、sybsystemprocs數(shù)據(jù)庫、master數(shù)據(jù)庫。 2用戶數(shù)據(jù)庫 用戶數(shù)據(jù)庫是我們使用Sybase服務(wù)器的真正目的。要管理用戶數(shù)據(jù),必須在Sybase中創(chuàng)建自己的數(shù)據(jù)庫,它是指用create databas

10、e命令創(chuàng)建的數(shù)據(jù)庫。不能存取master數(shù)據(jù)庫的用戶是無權(quán)創(chuàng)建新的數(shù)據(jù)庫的。 數(shù)據(jù)庫中的主要內(nèi)容數(shù)據(jù)庫對象: 表、視圖、臨時表 索引、主鍵、外鍵 缺省值、規(guī)則 存儲過程、觸發(fā)器等 五、Sybase的安裝與配置 1服務(wù)器端的安裝 安裝建立SQL Server以后,要建立放置數(shù)據(jù)庫、日志和索引的邏輯磁盤設(shè)備。數(shù)據(jù)庫、日志和索引的配置應注意以下原則; a.不要把任何用戶對象安裝在master數(shù)據(jù)庫中。 b.日志應該保存在與數(shù)據(jù)庫分離的磁盤上。 c.可以通過跨越多個設(shè)備分配工作優(yōu)化I/O性能。 2客戶端的安裝 3需要立即更改的內(nèi)容 (1)更改sa的登錄口令;(2)命名服務(wù)器;(3)修改文件名(保證Sy

11、base Central正常啟動);(4)更改缺省設(shè)備;(5)增加tempdb的空間。 4創(chuàng)建用戶數(shù)據(jù)庫 以下通過一個建立數(shù)據(jù)庫的腳本說明建立數(shù)據(jù)庫的過程: /創(chuàng)建數(shù)據(jù)庫設(shè)備,設(shè)備大小以頁(2K)為單位 disk init name=”test_dbdev”, physname=”c:testtest_dbdev.dat”, vdevno=10, size=10240 go disk init name=”test_logdev”, phyname=”c:testtest_logdev.dat”, vdevno=11, size=5120 go /創(chuàng)建數(shù)據(jù)庫TEST_DB,其大小為20M,日志

12、大小為10M create database TEST_DB on test_dbdev=20 log on test_logdev=10 go /打開數(shù)據(jù)庫 use TEST_DB go 5系統(tǒng)管理的主要內(nèi)容 a.物理資源的管理 b.用戶及其權(quán)限管理 c.數(shù)據(jù)庫的備份與恢復 6SQL Server的配置參數(shù) 服務(wù)器配置是系統(tǒng)管理員的職責,正確的配置對系統(tǒng)性能有重大的影響。有兩個系統(tǒng)表存儲配置信息:sysconfigures和syscurconfigs; sysconfigures是永久性的,一旦系統(tǒng)運行,sysconfigures的信息就拷貝到syscurconfigs中。顯示配置和改變配置

13、使用系統(tǒng)過程sp_configure。 有兩種配置值:動態(tài)的和靜態(tài)的,動態(tài)值一旦改變立即生效,靜態(tài)值要在系統(tǒng)重啟動后才起作用。 第二講 數(shù)據(jù)庫設(shè)備與存儲空間管理 一、概述 1安裝初始化 初始安裝SQL Server時,安裝程序和腳本初始化主設(shè)備,并建立master、model、tempdb和sybsystemprocs數(shù)據(jù)庫。系統(tǒng)數(shù)據(jù)庫、預定義設(shè)備和段按下列默認方式組織: a.master、model、tempdb數(shù)據(jù)庫安裝在主設(shè)備master上; b.sybsystemprocs數(shù)據(jù)庫安裝在安裝時選擇的設(shè)備上(sysprocsdev); c.為每個數(shù)據(jù)庫創(chuàng)建三個預定義段:system、def

14、ault和logsegment; d.所有用戶創(chuàng)建數(shù)據(jù)庫的默認設(shè)備是master設(shè)備; e.如果選擇安裝了審計數(shù)據(jù)庫sybsecurity,它位于自己的設(shè)備上。 2設(shè)備與存儲管理考慮的主要問題 (1)恢復 物理磁盤崩潰時,磁盤鏡像或在單獨的物理設(shè)備上保存日志為數(shù)據(jù)庫恢復提供了兩種機制。 (2)性能 磁盤讀寫速度是I/O操作的瓶頸,正確地把數(shù)據(jù)庫對象放置到物理設(shè)備上有利于改進性能; 把日志和數(shù)據(jù)庫對象置于單獨的設(shè)備上可以提高系統(tǒng)性能; 把表放在一個硬盤上而把索引放在另一個硬盤上,由于把工作分置于兩個硬盤驅(qū)動器上,所以可以確保物理讀寫速度加快; 磁盤鏡像會降低磁盤寫的速度。 二、設(shè)備(Device

15、) Sybase將數(shù)據(jù)庫中的所有數(shù)據(jù)存放在設(shè)備上。 1設(shè)備的概念 設(shè)備是Sybase預先配置的專門存放數(shù)據(jù)庫的一塊連續(xù)的磁盤空間,并且它被映射到一操作系統(tǒng)文件或一原始磁盤分區(qū)上。它有兩個對應的名稱:邏輯名和物理名。NT僅支持設(shè)備映射到文件。 設(shè)備與數(shù)據(jù)庫之間的關(guān)系:多對多關(guān)系。一個數(shù)據(jù)庫可以被創(chuàng)建或擴充到多個設(shè)備上,一個設(shè)備也可以被用來存放多個數(shù)據(jù)庫。不同的設(shè)備操作系統(tǒng)可以對其并行地讀寫,因此我們可以人為地將一個數(shù)據(jù)庫放置到多個數(shù)據(jù)庫設(shè)備上。 設(shè)備的分類:Database Device和Dump Device。數(shù)據(jù)庫設(shè)備存放數(shù)據(jù)庫和事務(wù)日志,轉(zhuǎn)儲設(shè)備用來存放數(shù)據(jù)庫或日志的備份。 2設(shè)備的創(chuàng)建

16、命令語法: DISK INIT Name=device_name, Physname=physical_name, Vdevno=virtual_device_number Size=number_of_pages . 舉例說明: DISK INIT Name=My_Device, Physname=D:databaseMy_device.dat, Vdevno=3 Size=5000 注釋:邏輯名、物理名、設(shè)備虛擬號、設(shè)備大小 創(chuàng)建轉(zhuǎn)儲設(shè)備: sp_addumpdevicedisk|tape Logical_Name, Physical_Name, TapeSize 3默認設(shè)備 在沒有指定設(shè)

17、備的情況下,用戶創(chuàng)建的任何數(shù)據(jù)對象自動存放在默認設(shè)備上。 初始安裝后,系統(tǒng)的主設(shè)備master被預指定為默認設(shè)備,因此要盡快創(chuàng)建自己的默認設(shè)備。確保以下設(shè)備不是默認設(shè)備:系統(tǒng)主設(shè)備、指定僅被日志使用的設(shè)備。 Sp_diskdefault 設(shè)備名,DefaultOn|DefaultOff 4磁盤鏡像 磁盤鏡像是出于數(shù)據(jù)庫安全性的考慮,當介質(zhì)失敗時,磁盤鏡像能提供不間斷恢復。磁盤鏡像是磁盤上的數(shù)據(jù)的絕對拷貝。如果某一硬盤事故發(fā)生,則該被損壞的拷貝就自動變成離線狀態(tài),因而所有的讀寫都被引向未被損壞的拷貝。 Sybase的磁盤鏡像是在設(shè)備級上進行的,因此磁盤鏡像實質(zhì)上是設(shè)備鏡像。當對某一設(shè)備進行鏡像操

18、作時,Sybase自動創(chuàng)建一個附加設(shè)備,由鏡像處理程序?qū)⒃O(shè)備上的所有數(shù)據(jù)拷貝到鏡像設(shè)備上。 如果要使某一數(shù)據(jù)庫成為鏡像,被分配給該數(shù)據(jù)庫的每一設(shè)備都必須成鏡像。Master設(shè)備在服務(wù)器中地位特殊,如果它損壞了,SQL Server將崩潰。因此,如果有可能總是要鏡像Master設(shè)備(在另一磁盤上)。 鏡像命令語法: Disk Mirror Name=device_name,/被鏡像的設(shè)備 Mirror=physical_name ,writes=serial|noserial 5刪除設(shè)備 sp_dropdevice logical_name,delfile 含有數(shù)據(jù)庫的設(shè)備不允許刪除。 三、創(chuàng)

19、建與使用段 段(Segment)是數(shù)據(jù)庫設(shè)備上磁盤空間的邏輯組合,它可以看作是指向一個或多個數(shù)據(jù)庫設(shè)備的標簽。利用段可以控制數(shù)據(jù)庫對象的存放位置,可以將數(shù)據(jù)庫對象分類存放到不同的段上。 設(shè)備與段之間的關(guān)系:多對多關(guān)系。一個設(shè)備上可以創(chuàng)建多個段,一個段也可以覆蓋多個設(shè)備。 1使用段的優(yōu)點 a. 控制空間的使用:放在一個段上的數(shù)據(jù)庫對象不會在段外增長; b. 提高性能:處于不同磁盤設(shè)備上的段可以并行地讀寫; d.處理大表:利用段,可以將一個大表分段放在獨立的物理設(shè)備上,如將一個表的文本或圖象數(shù)據(jù)存儲另外的一個段上。 2創(chuàng)建段 sp_addsegment 段名,數(shù)據(jù)庫名,設(shè)備名 說明:在指定設(shè)備上為

20、某個數(shù)據(jù)庫創(chuàng)建一個段。 擴展段的范圍 sp_exetendsegment 段名,數(shù)據(jù)庫名,設(shè)備名 說明:設(shè)備在數(shù)據(jù)庫中必須可用,否則需要擴展數(shù)據(jù)庫到新的設(shè)備上;指定的段、數(shù)據(jù)庫、設(shè)備必須存在。 縮小段的范圍: sp_dropsegment 段名,數(shù)據(jù)庫名,設(shè)備名 說明:帶第三個參數(shù)時,該命令并不刪除段,只是段的范圍縮小了。若某個段包含了別的段要獨占的設(shè)備,就需要縮小該段的范圍。 3使用段 兩個數(shù)據(jù)庫放在同一設(shè)備的不同段上,它們不會相互影響; 當數(shù)據(jù)庫增加空間時,增加的空間會自動分配到它的每一個段上; 例如:alter database my_db on data_dev=50 在data_de

21、v設(shè)備上為my_db增加50M空間,這50M空間被自動分配到數(shù)據(jù)庫的每一個段中。注意:如果data_dev對于數(shù)據(jù)庫是新的,system和default段會自動擴展到該設(shè)備上。 可以使用alter database命令的log on選項分配附加的日志空間。 (1)在段中創(chuàng)建新對象 create table 表名(列名 數(shù)據(jù)類型)on 段名 create clusterd|non clusterdindex 索引名 on 表名(列名)on 段名 注意:按照定義,聚集索引總是與表放在同一段上。 (2)在段上放置現(xiàn)有對象 sp_placeobject 段名,對象名 注意:該命令并不把對象從一個數(shù)據(jù)庫

22、設(shè)備移動到另一設(shè)備上,它只影響未來的空間分配。 可以將某個大表的text字段或image字段放置到一個單獨的設(shè)備段上。 Sp_placeobject 段名,“表名字段名” (3)在段上創(chuàng)建聚集索引 按照定義,聚集索引總是與表放在同一段上。如果在一個段上創(chuàng)建表,而在另一個段上創(chuàng)建聚集索引,則其表與其索引一起移動,整個表將離開創(chuàng)建表的段而遷移到創(chuàng)建聚集索引的段中。通過這種方法,可以快速而方便地把指定表移動到指定的設(shè)備上。 (4)系統(tǒng)預定義段 當用戶創(chuàng)建一個數(shù)據(jù)庫時,Sybase自動創(chuàng)建三個預定義的段: system段:存放系統(tǒng)表(包括所有用戶對象的定義) default段:存放用戶創(chuàng)建的各種對象,

23、除非它們明顯地指定到不同的段上。 Logsegment段:存放數(shù)據(jù)庫的事務(wù)日志。 (5)刪除段 刪除段是縮小段范圍的一個特例: sp_dropsegment 段名,數(shù)據(jù)庫名 4使用閾值管理 閾值(Threshold)管理是一種自動監(jiān)控數(shù)據(jù)庫自由空間的機制,Sybase的閾值管理允許用戶為數(shù)據(jù)庫的某個段上的自由空間設(shè)置閾值并定義相應的存儲過程。當該段上的自由空間低于所置頭閾值時,Sybase自動運行相應的存儲過程。 在一個實際運行的數(shù)據(jù)庫中,日志的增長速度一般要高于數(shù)據(jù)的增長,一旦日志段的自由空間用盡,SQL Server在默認情況下會掛起所有數(shù)據(jù)操縱事務(wù),客戶端應用程序停止執(zhí)行。 在每個分離的

24、段上存儲其事務(wù)日志的數(shù)據(jù)庫均自動設(shè)置有最后機會閾值(Last Chance Threshold),其閾值是備份事務(wù)日志所需的自由空間的估計值。當該段上的自由空間低于所置閾值時,Sybase自動運行名為 sp_thresholdaction的存儲過程。該過程的名稱及參數(shù)由系統(tǒng)預定義,內(nèi)容由用戶編寫。下面是一個簡單示例。 CREATE PROCEDURE dbo.sp_thresholdaction /*本過程參數(shù)通過位置傳遞,名稱可以改變,但其定義及順序不能變*/ db_name varchar(30),/*數(shù)據(jù)庫名*/ seg_name varchar(30),/*段名*/ space_lef

25、e int,/*剩余自由空間*/ status int/*最后機會閾值,其值為1,其它閾值,其值為0*/ AS BEGIN /*用戶編寫過程內(nèi)容*/ dump transaction db_name with truncate_only END 第三講 數(shù)據(jù)庫與事務(wù)日志 一、創(chuàng)建用戶數(shù)據(jù)庫 Create Database 數(shù)據(jù)庫名 On 設(shè)備_1=Size_1,/單位:M 設(shè)備_2=Size_2, log on 日志設(shè)備=Log_Size With Override/在同一設(shè)備上創(chuàng)建數(shù)據(jù)庫和事務(wù)日志時使用該選項 For Load /禁止用戶訪問直到數(shù)據(jù)庫的裝入或恢復操作完成為止 舉例: Cre

26、ate Database test_db On data_dev=100,/單位:M Index_dev=50 Log on log_dev=30 說明: (1)將日志放在單獨的設(shè)備上,有利于數(shù)據(jù)庫性能的提高; (2)圖示: Data_dev Index_dev log_dev (3)如果將數(shù)據(jù)庫和日志放在同一設(shè)備上,就不能實現(xiàn)增量備份; (4)通常將System和Default段縮減范圍到一個設(shè)備上,如刪除設(shè)備Index_dev上的System段和Default段,創(chuàng)建新的段,用來存放專門的數(shù)據(jù)庫對象。 二、更改數(shù)據(jù)庫 1改變數(shù)據(jù)庫屬主 通常用戶數(shù)據(jù)庫有系統(tǒng)管理員創(chuàng)建,它的默認屬主是dbo。

27、系統(tǒng)過程sp_changeddbowner可改變數(shù)據(jù)庫的屬主關(guān)系,它必須由數(shù)據(jù)庫管理員在要改變屬主關(guān)系的數(shù)據(jù)庫中執(zhí)行。語法如下: sp_changeddbowner login_name,True 其中參數(shù)True用于將權(quán)限一半傳遞給新屬主。 2擴展數(shù)據(jù)庫 (1)擴展數(shù)據(jù)庫空間 alter database 數(shù)據(jù)庫名 on 設(shè)備名=擴展空間 /單位:M 如果擴展的設(shè)備對于數(shù)據(jù)庫是新的,System和Default段會自動擴展到該設(shè)備上。 (2)擴展事務(wù)日志到新的設(shè)備上 sp_logdevice 數(shù)據(jù)庫名,設(shè)備名 舉例:將數(shù)據(jù)庫另外擴充5M,用于存儲日志 alter database my_db

28、 on my_dev=5 go sp_logdevice my_db,my_dev go 3.刪除數(shù)據(jù)庫 drop database 數(shù)據(jù)庫名 刪除設(shè)備前必須刪除其上的所有數(shù)據(jù)庫,刪除設(shè)備的命令是:sp_dropdevice 三、事務(wù)日志 日志文件是用來記錄數(shù)據(jù)庫每一次修改活動的文件。SQL Server中的每一個數(shù)據(jù)庫都有自己的日志文件,即系統(tǒng)表syslogs,也稱為事務(wù)日志。事務(wù)日志是撤消事務(wù)和出現(xiàn)故障時恢復事務(wù)的依據(jù)。 在某些情況下,事務(wù)日志比數(shù)據(jù)本身更為重要。 什么是事務(wù)? 數(shù)據(jù)庫的修改是以事務(wù)為單位進行的。一個事務(wù)就是一個操作序列,這些操作要么全做,要么全不做,它是一個不可分割的工作

29、單位。任何一個事務(wù)具備如下特征。 (1)執(zhí)行的原子性(Atomic); (2)保持數(shù)據(jù)的一致性(Consistency); (3)彼此的隔離性(Isolation); (4)作用的持久性(Durability)。 上述事務(wù)的四個特征被稱為事務(wù)的ACID準則。 事務(wù)在運行過程中,SQL Server把事務(wù)開始、事務(wù)結(jié)束以及對數(shù)據(jù)庫的插入、刪除和更新等每一個操作作為一個日志記錄存放到事務(wù)日志中。事務(wù)中的更新操作首先在數(shù)據(jù)庫緩沖區(qū)(內(nèi)存)中進行,緩沖區(qū)分別有用來記錄操作活動的數(shù)據(jù)頁(data page)和日志頁(log page)。當運行到commit tran時,日志頁首先從緩沖區(qū)寫到磁盤上,而后

30、數(shù)據(jù)頁從緩沖區(qū)寫到磁盤上,即遵循“先與日志(write_ahead log)”的原則,這樣保證出現(xiàn)故障的情況下,通過日志能夠得到最大限度的恢復?;謴捅仨毘废l(fā)生故障時還未提交的事務(wù),已完成的事務(wù)若仍有未從緩沖區(qū)寫到數(shù)據(jù)庫設(shè)備中,還要重新運行該事務(wù)。附:創(chuàng)建與裝載數(shù)據(jù)庫實例 use master decl are vedvno int select vdevno=max(convert(tinyint,substring(convert(binary(4),d.low),v.low,1)+1 from master.dbo.sysdevices d,master.dbo.spt_values v

31、 where v.type=Eand v.number=3 declare v_str char(2) select v_str=convert(char(2),vdevno) print v_str disk init name=”YDDATA”, physname=”D:Syb_DataYDDATA.dat”, vdevno=vdevno+1, size=153600 disk init name=”YDINDEX”, physname=”D:Syb_DataYDINDEX.dat”, vdevno=vdevno+2, size=102400 disk init name=”YDLOG”,

32、 physname=”D:Syb_DataYDLOG.dat”, vdevno=vdevno+3, size=76800 create database YDMISDB on YDDATA=300,YDINDEX=200 log on YDLOG=150 use YDMISDB execute sp_addsegment indexdev,YTMISDB,YTINDEX execute sp_dropsegment “default”,YTMISDB,YTINDEX execute sp_dropsegment system,YTMISDB,YTINDEX use master load da

33、tabase YDMISDB from d:yd_dumpydmis_backup.dmp online database YDMISDB 第四講 數(shù)據(jù)庫安全性與用戶管理 一、安全管理概述 數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。SQL Server的安全管理是一種基于角色(role)的管理方法,位于不同權(quán)限層次(或角色)的用戶具有不同的用戶權(quán)限。 規(guī)定用戶權(quán)限有三個因素:用戶、數(shù)據(jù)對象和操作,即什么用戶在哪些數(shù)據(jù)對象上可以執(zhí)行什么操作。 訪問SQL Server中數(shù)據(jù)的四道屏障: (1)操作系統(tǒng)操作系統(tǒng)登錄 (2)Sybase服務(wù)器服務(wù)器登錄 (3)Syb

34、ase數(shù)據(jù)庫數(shù)據(jù)庫用戶登錄 (4)數(shù)據(jù)庫對象對象授權(quán) 二、理解數(shù)據(jù)庫角色 角色是權(quán)限的集合。 1系統(tǒng)預定義角色 一個真正的數(shù)據(jù)庫管理員應該是整個服務(wù)器及其數(shù)據(jù)庫的擁有者,具有管理服務(wù)器及其數(shù)據(jù)庫的所有權(quán)限。在一個大的系統(tǒng)中,數(shù)據(jù)庫管理員往往不只由一人承擔,而是將管理任務(wù)進行功能劃分,每人提當不同的責任。系統(tǒng)預定義角色就是為適應這種要求而設(shè)計的。 系統(tǒng)管理員(sa_role) sa_role角色擁有執(zhí)行與數(shù)據(jù)庫具體應用無關(guān)的管理權(quán)限: 安裝與更新SQL Server 管理服務(wù)器的物理存儲 配置系統(tǒng)設(shè)置參數(shù); 創(chuàng)建用戶數(shù)據(jù)庫; 授予SQL Server用戶權(quán)限 系統(tǒng)安全管理員(sso_role)

35、sso_role用來實施安全上敏感的操作,執(zhí)行有關(guān)安全性的任務(wù): 建立服務(wù)器登錄帳戶; 管理口令; 授予除sa_role之外的任何角色; 管理審計系統(tǒng); 操作員(oper_role) oper_role執(zhí)行全服務(wù)器范圍的數(shù)據(jù)庫操作,如備份與恢復任意數(shù)據(jù)庫等: 轉(zhuǎn)儲數(shù)據(jù)庫與日志 轉(zhuǎn)載數(shù)據(jù)庫與日志 2創(chuàng)建與使用自定義角色 (1)創(chuàng)建新的角色:create role (2)賦予角色權(quán)限:grant (3)設(shè)置登錄帳戶的角色權(quán)限:sp_role 格式:sp_role “grant”|”revoke”,角色名,登錄帳號名 這里的“grant”|”revoke”是指對角色權(quán)限是授予還是撤消。 三、服務(wù)器的

36、帳戶管理 要想成為Sybase系統(tǒng)的一個用戶,首先必須擁有自己的登錄帳戶。通過這一帳戶連同自己的口令向服務(wù)器注冊后,才能使用Sybase系統(tǒng)中的一些資源,每一個這樣的登錄帳戶在系統(tǒng)中被賦予Server級的標識SUID。 1添加登錄 sp_addlogin 登錄名,口令,缺省的數(shù)據(jù)庫 如果不指定缺省的數(shù)據(jù)庫,則該帳戶的缺省數(shù)據(jù)庫為master庫。 2更改登錄屬性 更改口令; 鎖定帳戶; 期限設(shè)置; 賦予角色。Sybase 四、數(shù)據(jù)庫用戶管理 通過某一個帳戶注冊到服務(wù)器后,要想使用某一個數(shù)據(jù)庫,必須成為該數(shù)據(jù)庫的一個用戶。通過建立登錄與用戶之間的聯(lián)系來管理對數(shù)據(jù)庫的訪問。 1組的概念 組(grou

37、p)是數(shù)據(jù)庫用戶的集合。屬于某個組的用戶,他自動獲得該組所擁有的權(quán)限。 Sp_addgroup 組名 將一個用戶加入某個組:(1)改變用戶屬性;(2)創(chuàng)建新用戶時指定。 所有用戶自動屬于public組,即使這個用戶已經(jīng)屬于其他組了。 2創(chuàng)建新的用戶 sp_adduser 登錄名,用戶名,組名 3別名用戶 Sybase的別名機制可以使得多個帳戶對應于同一個數(shù)據(jù)庫用戶,這樣使不同的登錄在數(shù)據(jù)庫中擁有同樣的權(quán)限。這在審計系統(tǒng)中是一種控制責任的一種手段。 Sp_addalias 登錄名,數(shù)據(jù)庫中的用戶名 別名相當于給某個用戶配一把別人的鑰匙(登錄)。 五、用戶的權(quán)限管理 控制用戶對數(shù)據(jù)庫對象的訪問,有

38、兩類權(quán)限:命令權(quán)限和對象權(quán)限。 1命令權(quán)限 Create Database Create Table Create View Create Procedure Create Rule Create default 命令權(quán)限授權(quán)與收權(quán): Grant 命令權(quán)限組合 to 組名|用戶名|角色 Revoke 命令權(quán)限組合 from 組名|用戶名|角色 2對象權(quán)限 Select Update Insert Delete Reference Execute 對象權(quán)限授權(quán)與收權(quán): Grant 對象權(quán)限組合 on 數(shù)據(jù)庫對象 to public|組名|用戶名|角色 With Grant Option Revo

39、ke 對象權(quán)限組合 on 數(shù)據(jù)庫對象 to public|組名|用戶名|角色 From public public|組名|用戶名|角色 Cascade 授權(quán)與收權(quán)舉例: Grant Insert,Delete on Employee to user_1,Group_1 Grant Execute on Pro_culculate to public Grant Select on Employee(emp_id,emp_name) to user_3 Grant All on Employee to user_4 Revoke update on Employee(emp_id,emp_nam

40、e) from user_5 Revoke Create Table,Create Rule from user_6 第五講 數(shù)據(jù)庫的備份與恢復 數(shù)據(jù)庫的備份與恢復是SQL Server保障數(shù)據(jù)安全的一種重要手段,為防止意外,數(shù)據(jù)庫管理員必須定期和經(jīng)常制作數(shù)據(jù)庫的備份。一旦系統(tǒng)出現(xiàn)故障,數(shù)據(jù)能夠得到及時的恢復。 一、基本概念 1事務(wù)處理及其日志 SQL Server使用事務(wù)來跟蹤所有數(shù)據(jù)庫變化。事務(wù)是SQL Server的工作單元。一個事務(wù)包含一條或多條作為整體成功或失敗的T_SQL語句。每個數(shù)據(jù)庫都有自己的事務(wù)日志,即系統(tǒng)表syslogs,事務(wù)日志自動記錄每個用戶發(fā)出的每個事務(wù),它飲食了每個

41、事務(wù)足夠多的信息,以確保數(shù)據(jù)能夠被恢復。 2檢查點(CheckPoint) 服務(wù)器在何時更新數(shù)據(jù)? 在檢查點。在服務(wù)器發(fā)出一個檢查點時:(1)更新數(shù)據(jù);(2)在日志中記錄下執(zhí)行檢查點的標記。 檢查點可把所有“臟頁”寫到數(shù)據(jù)庫設(shè)備上,“臟頁”是指從上一次檢查點以來,在內(nèi)存中修改、但沒有在磁盤上修改的頁。SQL Server的自動檢查點機制保證了被完成的事務(wù)修改的數(shù)據(jù)頁有規(guī)律地從內(nèi)存中的緩沖區(qū)寫到數(shù)據(jù)庫設(shè)備上。 二、數(shù)據(jù)庫備份 若硬件介質(zhì)出現(xiàn)故障(如磁盤損壞),當且僅當事先已對數(shù)據(jù)庫及其事務(wù)日志作了備份,才能恢復數(shù)據(jù)庫。 注意:絕對不要使用操作系統(tǒng)的拷貝數(shù)據(jù)庫設(shè)備,把這樣一個拷貝裝入SQL Ser

42、ver將導致大量數(shù)據(jù)庫受損。 備份的類型: 完全備份() 增量備份備份事務(wù)處理日志 說明: (1)只有把事務(wù)日志放在單獨的設(shè)備上,才能進行增量備份; (2)備份事務(wù)日志會截斷日志,因此備份的內(nèi)容是自上次備份以來的事務(wù)處理。 (3)備份之前要啟動備份服務(wù)器,并最好創(chuàng)建轉(zhuǎn)儲設(shè)備。 命令語法: dump database 數(shù)據(jù)庫名 to 轉(zhuǎn)儲設(shè)備名/物理文件名 dump transaction 數(shù)據(jù)庫名 with truncate_only|no_log to 轉(zhuǎn)儲設(shè)備名/物理文件名 with No_truncate Truncate_only與no_log選項用于刪除事務(wù)處理而不作拷貝。Trunc

43、ate_only截斷日志;在事務(wù)處理日志完全滿時用no_log,它不為數(shù)據(jù)庫建立檢查點。兩個選項都會丟掉日志。當使用了這兩個參數(shù)后,應及時備份整個數(shù)據(jù)庫。 No_truncate拷貝日志但不截斷日志,在出現(xiàn)介質(zhì)錯誤時使用該選項。 圖形界面的選項與命令參數(shù)的對應關(guān)系: (1)dump transaction (2)dump transaction with no_truncate (3)dump transaction with truncate_only (4)dump transaction with no_log 三、數(shù)據(jù)庫的恢復 使用load database加載備份到現(xiàn)有數(shù)據(jù)庫,數(shù)據(jù)庫

44、可以是用于創(chuàng)建轉(zhuǎn)儲的數(shù)據(jù)庫,也可以不是。語法為: load database 數(shù)據(jù)庫名 from 轉(zhuǎn)儲設(shè)備名/物理文件名 load transaction數(shù)據(jù)庫名 from 轉(zhuǎn)儲設(shè)備名/物理文件名 利用備份恢復數(shù)據(jù)庫舉例: 某數(shù)據(jù)庫數(shù)據(jù)和日志分別存儲在兩個獨立的磁盤上,正常運轉(zhuǎn)時的執(zhí)行的備份計劃如下,每天的17:00執(zhí)行整個數(shù)據(jù)庫的備份,每天的10:00、12:00、14:00、16:00點執(zhí)行增量備份: 周一17:00磁帶1(100M)周二10:00磁帶2(30M)周二12:00磁帶3(30M)周二14:00磁帶4(30M)周二16:00磁帶5(30M)周二17:00磁帶6(30M) Dum

45、pdatabaseDumptransactionDumptransactionDumptransactionDumptransactionDumpdatabase 若數(shù)據(jù)磁盤在周二的下午六點損壞,可以采用如下步驟恢復數(shù)據(jù)庫: (1)使用dump transaction with no_truncate獲得當前的事務(wù)日志轉(zhuǎn)儲,磁帶7; (2)使用load database轉(zhuǎn)載最新的數(shù)據(jù)庫轉(zhuǎn)儲,磁帶6;(offline) (3)使用load transaction提交最新的事務(wù)日志轉(zhuǎn)儲,磁帶7; (4)使用online database把數(shù)據(jù)庫狀態(tài)設(shè)置為online。 若數(shù)據(jù)磁盤在周二的下午4:5

46、0損壞,恢復過程如下: (1)使用dump transaction with no_truncate獲得當前的事務(wù)日志轉(zhuǎn)儲,磁帶7; (2)使用load database轉(zhuǎn)載最新的數(shù)據(jù)庫轉(zhuǎn)儲,磁帶6;(offline) (3)使用load transaction依次裝載磁帶2、3、4、5上的事務(wù)日志; (4)使用load transaction提交最新的事務(wù)日志轉(zhuǎn)儲,磁帶7; (5)使用online database把數(shù)據(jù)庫狀態(tài)設(shè)置為online。 四、制定備份與恢復的策略 由于事務(wù)日志在恢復數(shù)據(jù)庫中的特殊作用,應定期備份數(shù)據(jù)庫及其事務(wù)日志,而且事務(wù)日志的備份要更頻繁一些。如:數(shù)據(jù)庫每周備份一

47、次,事務(wù)日志每天備份一次。 第六講 數(shù)據(jù)庫與T-SQL語言 一、關(guān)系模型的基本概念 關(guān)系數(shù)據(jù)庫以關(guān)系模型為基礎(chǔ),它有以下三部分組成: 數(shù)據(jù)結(jié)構(gòu)模型所操作的對象、類型的集合 完整性規(guī)則保證數(shù)據(jù)有效、正確的約束條件 數(shù)據(jù)操作對模型對象所允許執(zhí)行的操作方式 關(guān)系(Relation)是一個由行和列組成的二維表格,表中的每一行是一條記錄(Record),每一列是記錄的一個字段(Field)。表中的每一條記錄必須是互斥的,字段的值必須具有原子性。 二、SQL語言概述 SQL(結(jié)構(gòu)化查詢語言)是關(guān)系數(shù)據(jù)庫語言的一種國際標準,它是一種非過程化的語言。通過編寫SQL,我們可以實現(xiàn)對關(guān)系數(shù)據(jù)庫的全部操作。 數(shù)據(jù)定

48、義語言(DDL)建立和管理數(shù)據(jù)庫對象 數(shù)據(jù)操縱語言(DML)用來查詢與更新數(shù)據(jù) 數(shù)據(jù)控制語言(DCL)控制數(shù)據(jù)的安全性 T-SQL語言是Sybase對SQL92標準的一種擴展,主要在它的基礎(chǔ)上增加了三個方面的功能:自己的數(shù)據(jù)類型/特有的SQL函數(shù)/流程控制功能 T-SQL中的標識符使用說明: (1)標識符由1-30個字符或數(shù)字構(gòu)成,但首字符必須為字母。臨時表的表名以#開頭,長度不能超過13個字符。 (2)數(shù)據(jù)庫對象的標識方法舉例 database.owner.tablename.columnname 執(zhí)行遠程存儲過程: EXEC c_name 當執(zhí)行語句在

49、批處理的句首時,EXEC可以省略。 三、Sybase的數(shù)據(jù)類型 在創(chuàng)建表或聲明局部變量時,必須使用Sybase系統(tǒng)預定義類型。 1字符類型 Char(n) VarChar(n) 2數(shù)值類型 整數(shù)類型Integer SmallInt TinyInt 浮點類型Real Float NumberP,S DecimalP,S 貨幣類型Money SmallMoney 3日期/時間類型 Datetime SmallDatetime 兩者時間部分的精度不同,前者精確到分,后者精確到1/30秒。 4文本和圖像類型 Text Image 5二進制數(shù)據(jù)類型 Binary(n) VarBinary(n) 四、數(shù)據(jù)

50、定義語言 用來定義數(shù)據(jù)庫對象。數(shù)據(jù)庫對象是Sybase用來存儲數(shù)據(jù)的邏輯實體,主要有: 表(Table)、視圖(View)、臨時表(Temp Table); 主鍵(Primary Key)、外鍵(Foreign Key)、索引(Index)、規(guī)則(Rule)、默認值(Default); 存儲過程(Stored Procedure)、觸發(fā)器(Trigger) 基本語法 下面給出創(chuàng)建主要數(shù)據(jù)庫對象的語法: 1表 創(chuàng)建表的基本語法是: Create tabledatabase.owner.table_name (column_name datatype default constant_expres

51、sion|user|null identity|null|not null|constraint constraint_name unique|primary keyclustered|nonclustered withfillfactor|max_rows_per_page=x on segment_name |referencesdatabase.owner.ref_table (ref_column) |check(search_condition) 在建立大型的數(shù)據(jù)庫時,可以考慮將創(chuàng)建表乃至其它數(shù)據(jù)庫對象的過程寫到一個文本里,當數(shù)據(jù)庫系統(tǒng)出現(xiàn)問題時,在最壞的情況下,重建過程可以得到簡化,也能比較好的對數(shù)據(jù)庫的建設(shè)過程進行監(jiān)視。 創(chuàng)建表的過程完成下列活動: 定義表的每一列; 定義列名和列的數(shù)據(jù)類型并指定列是否處理空值; 指定列是否具有IDENTITY屬性; 定義列級的完整性約束和表級的完整性約束 上述過程可見,創(chuàng)建表的過程可以設(shè)定填充因子,將列置于段上,設(shè)計索引,外鍵等等。 2索引 索引對查詢性能的影響很大,要引起重視。 索引加速了數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論