sybase基本命令.doc_第1頁
sybase基本命令.doc_第2頁
sybase基本命令.doc_第3頁
sybase基本命令.doc_第4頁
sybase基本命令.doc_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一講 Sybase基礎(chǔ)知識一、客戶/服務器體系結(jié)構(gòu)Sybase是一種建立在客戶/服務器體系結(jié)構(gòu)上的數(shù)據(jù)庫管理系統(tǒng)。什么是客戶/服務器體系結(jié)構(gòu)?從硬件角度看,客戶/服務器體系結(jié)構(gòu)是指將某項任務在兩臺或多臺機器之間進行分配,其中客戶機(Client)用來運行提供用戶接口和前端處理的應用程序,服務器機(Server)提供客戶機使用的各種資源和服務。從軟件角度看,客戶/服務器體系結(jié)構(gòu)是把某項應用或軟件系統(tǒng)按邏輯功能劃分為客戶軟件部分和服務器軟件部分??蛻糗浖糠忠话阖撠煍?shù)據(jù)的表示和應用,處理用戶界面,用以接收用戶的數(shù)據(jù)處理請求并將之轉(zhuǎn)換為對服務器的請求,要求服務器為其提供數(shù)據(jù)的存儲和檢索服務;服務器端軟件負責接收客戶端軟件發(fā)來的請求并提供相應服務??蛻?服務器融合了大型機的強大功能和中央控制以及PC機的低成本和較好的處理平衡??蛻?服務器為任務的集中/局部分布提供了一種新的方法,這種體系能夠使用戶對數(shù)據(jù)完整性、管理和安全性進行集中控制。在緩解網(wǎng)絡(luò)交通和主機負荷以及滿足用戶需要方面,客戶/服務器體系提供了良好的解決方案??傊?,客戶/服務器的工作模式是:客戶與服務器之間采用網(wǎng)絡(luò)協(xié)議(如TCP/IP、IPX/SPX)進行連接和通訊,由客戶端向服務器發(fā)出請求,服務器端響應請求,并進行相應服務。數(shù)據(jù)庫應用的客戶/服務器模式如下圖所示:二、訪問Sybase服務器的基本過程1建立客戶與服務器之間的連接,包括網(wǎng)絡(luò)連接、客戶進程與服務器進程之間的連接;2客戶端通過網(wǎng)絡(luò)發(fā)送SQL語句給服務器,用來查詢或操作服務器中的數(shù)據(jù)或數(shù)據(jù)庫對象;3服務器接收到SQL語句后,對其進行語法分析、優(yōu)化和編譯后執(zhí)行;4如果執(zhí)行的語句產(chǎn)生一個結(jié)果集,服務器通過網(wǎng)絡(luò)把結(jié)果集返回給客戶;5客戶端對收到的結(jié)果作相應的處理。在客戶/服務器體系,有兩種數(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ù)的完整性。多進程數(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;三是可把異構(gòu)環(huán)境下其他廠商的應用軟件和任何類型的數(shù)據(jù)連接在一起的接口軟件Open Client/Open Server。SQL Server是個可編程的數(shù)據(jù)庫管理系統(tǒng)(DBMS),它是整個Sybase產(chǎn)品的核心軟件,起著數(shù)據(jù)管理、高速緩沖區(qū)管理、事務管理的作用。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可以編譯和運行T-SQL語句,并可返回客戶程序所要求的結(jié)果。T-SQL語句是標準SQL的擴充,它除了有數(shù)據(jù)定義語句、數(shù)據(jù)操縱語句和數(shù)據(jù)控制語句之外,主要增加了流程控制語句。d.SQL Server可以管理多個用戶并具有較高的事務吞吐量和較低的事務響應時間??蛻舻膽贸绦蚩梢源嫒erver中某一個或幾個數(shù)據(jù)庫的數(shù)據(jù)。四、SQL Server的主要內(nèi)容Sybase SQL Server是一個多庫結(jié)構(gòu)的RDBMS,體系結(jié)構(gòu)大致如下:1數(shù)據(jù)庫服務器自身所使用的數(shù)據(jù)庫,也可以說是管理服務器和用戶數(shù)據(jù)庫的數(shù)據(jù)庫。Sybase在安裝時,自動創(chuàng)建了四個系統(tǒng)數(shù)據(jù)庫:master、model、tempdb、sybsystemprocs(1) master數(shù)據(jù)庫它是管理和控制用戶數(shù)據(jù)庫以及維護服務器正常運行的核心數(shù)據(jù)庫,它保存了大量的系統(tǒng)信息,如服務器配置、用戶、設(shè)備等。在master數(shù)據(jù)庫中不允許普通用戶在其中創(chuàng)建數(shù)據(jù)庫對象,否則會使得master數(shù)據(jù)庫的事務日志很快變滿。如果事務日志用盡,就無法使用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ù)庫中包含每個用戶數(shù)據(jù)庫所要求的系統(tǒng)表。Model數(shù)據(jù)庫可以被修改以便定制新創(chuàng)建的。(3)tempdb數(shù)據(jù)庫它是個臨時數(shù)據(jù)庫,為服務器運行與處理提供一個共享的存儲區(qū)域,如group by和order by的中間結(jié)果就存放在這里。Tempdb的空間為服務器中所有數(shù)據(jù)庫的所有用戶所共享。每次重啟SQL Server,服務器的一個自動進程都拷貝model數(shù)據(jù)庫到tempdb數(shù)據(jù)庫,并清除tempdb中原來的內(nèi)容。因此tempdb中的用戶表都是臨時的。臨時表分為兩類:可共享的和不可共享的。不可共享的臨時表在由create table中將符號#置于表名之前創(chuàng)立;可共享的臨時表通過create table中指定表名前綴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服務器的真正目的。要管理用戶數(shù)據(jù),必須在Sybase中創(chuàng)建自己的數(shù)據(jù)庫,它是指用create database命令創(chuàng)建的數(shù)據(jù)庫。不能存取master數(shù)據(jù)庫的用戶是無權(quán)創(chuàng)建新的數(shù)據(jù)庫的。數(shù)據(jù)庫中的主要內(nèi)容數(shù)據(jù)庫對象:表、視圖、臨時表索引、主鍵、外鍵缺省值、規(guī)則存儲過程、觸發(fā)器等五、Sybase的安裝與配置1服務器端的安裝安裝建立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)命名服務器;(3)修改文件名(保證Sybase Central正常啟動);(4)更改缺省設(shè)備;(5)增加tempdb的空間。4創(chuàng)建用戶數(shù)據(jù)庫以下通過一個建立數(shù)據(jù)庫的腳本說明建立數(shù)據(jù)庫的過程:/創(chuàng)建數(shù)據(jù)庫設(shè)備,設(shè)備大小以頁(2K)為單位disk initname=”test_dbdev”,physname=”c:testtest_dbdev.dat”,vdevno=10,size=10240godisk initname=”test_logdev”,phyname=”c:testtest_logdev.dat”,vdevno=11,size=5120go/創(chuàng)建數(shù)據(jù)庫TEST_DB,其大小為20M,日志大小為10Mcreate database TEST_DBon test_dbdev=20log on test_logdev=10go/打開數(shù)據(jù)庫use TEST_DBgo5系統(tǒng)管理的主要內(nèi)容a.物理資源的管理b.用戶及其權(quán)限管理c.數(shù)據(jù)庫的備份與恢復6SQL Server的配置參數(shù)服務器配置是系統(tǒng)管理員的職責,正確的配置對系統(tǒng)性能有重大的影響。有兩個系統(tǒng)表存儲配置信息:sysconfigures和syscurconfigs;sysconfigures是永久性的,一旦系統(tǒng)運行,sysconfigures的信息就拷貝到syscurconfigs中。顯示配置和改變配置使用系統(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、default和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)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ù)庫和事務日志,轉(zhuǎn)儲設(shè)備用來存放數(shù)據(jù)庫或日志的備份。2設(shè)備的創(chuàng)建命令語法:DISK INITName=device_name,Physname=physical_name,Vdevno=virtual_device_numberSize=number_of_pages.舉例說明:DISK INITName=My_Device,Physname=D:databaseMy_device.dat,Vdevno=3Size=5000注釋:邏輯名、物理名、設(shè)備虛擬號、設(shè)備大小創(chuàng)建轉(zhuǎn)儲設(shè)備:sp_addumpdevicedisk|tapeLogical_Name,Physical_Name,TapeSize3默認設(shè)備在沒有指定設(shè)備的情況下,用戶創(chuàng)建的任何數(shù)據(jù)對象自動存放在默認設(shè)備上。初始安裝后,系統(tǒng)的主設(shè)備master被預指定為默認設(shè)備,因此要盡快創(chuàng)建自己的默認設(shè)備。確保以下設(shè)備不是默認設(shè)備:系統(tǒng)主設(shè)備、指定僅被日志使用的設(shè)備。Sp_diskdefault 設(shè)備名,DefaultOn|DefaultOff4磁盤鏡像磁盤鏡像是出于數(shù)據(jù)庫安全性的考慮,當介質(zhì)失敗時,磁盤鏡像能提供不間斷恢復。磁盤鏡像是磁盤上的數(shù)據(jù)的絕對拷貝。如果某一硬盤事故發(fā)生,則該被損壞的拷貝就自動變成離線狀態(tài),因而所有的讀寫都被引向未被損壞的拷貝。Sybase的磁盤鏡像是在設(shè)備級上進行的,因此磁盤鏡像實質(zhì)上是設(shè)備鏡像。當對某一設(shè)備進行鏡像操作時,Sybase自動創(chuàng)建一個附加設(shè)備,由鏡像處理程序?qū)⒃O(shè)備上的所有數(shù)據(jù)拷貝到鏡像設(shè)備上。如果要使某一數(shù)據(jù)庫成為鏡像,被分配給該數(shù)據(jù)庫的每一設(shè)備都必須成鏡像。Master設(shè)備在服務器中地位特殊,如果它損壞了,SQL Server將崩潰。因此,如果有可能總是要鏡像Master設(shè)備(在另一磁盤上)。鏡像命令語法:Disk MirrorName=device_name,/被鏡像的設(shè)備Mirror=physical_name,writes=serial|noserial5刪除設(shè)備sp_dropdevice logical_name,delfile含有數(shù)據(jù)庫的設(shè)備不允許刪除。三、創(chuàng)建與使用段 段(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è)備上為某個數(shù)據(jù)庫創(chuàng)建一個段。擴展段的范圍sp_exetendsegment 段名,數(shù)據(jù)庫名,設(shè)備名說明:設(shè)備在數(shù)據(jù)庫中必須可用,否則需要擴展數(shù)據(jù)庫到新的設(shè)備上;指定的段、數(shù)據(jù)庫、設(shè)備必須存在??s小段的范圍:sp_dropsegment 段名,數(shù)據(jù)庫名,設(shè)備名說明:帶第三個參數(shù)時,該命令并不刪除段,只是段的范圍縮小了。若某個段包含了別的段要獨占的設(shè)備,就需要縮小該段的范圍。3使用段兩個數(shù)據(jù)庫放在同一設(shè)備的不同段上,它們不會相互影響;當數(shù)據(jù)庫增加空間時,增加的空間會自動分配到它的每一個段上;例如:alter database my_db on data_dev=50在data_dev設(shè)備上為my_db增加50M空間,這50M空間被自動分配到數(shù)據(jù)庫的每一個段中。注意:如果data_dev對于數(shù)據(jù)庫是新的,system和default段會自動擴展到該設(shè)備上??梢允褂胊lter database命令的log on選項分配附加的日志空間。(1)在段中創(chuàng)建新對象create table 表名(列名 數(shù)據(jù)類型)on 段名create clusterd|non clusterdindex 索引名 on 表名(列名)on 段名注意:按照定義,聚集索引總是與表放在同一段上。(2)在段上放置現(xiàn)有對象sp_placeobject 段名,對象名注意:該命令并不把對象從一個數(shù)據(jù)庫設(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)建的各種對象,除非它們明顯地指定到不同的段上。Logsegment段:存放數(shù)據(jù)庫的事務日志。(5)刪除段刪除段是縮小段范圍的一個特例:sp_dropsegment 段名,數(shù)據(jù)庫名4使用閾值管理閾值(Threshold)管理是一種自動監(jiān)控數(shù)據(jù)庫自由空間的機制,Sybase的閾值管理允許用戶為數(shù)據(jù)庫的某個段上的自由空間設(shè)置閾值并定義相應的存儲過程。當該段上的自由空間低于所置頭閾值時,Sybase自動運行相應的存儲過程。在一個實際運行的數(shù)據(jù)庫中,日志的增長速度一般要高于數(shù)據(jù)的增長,一旦日志段的自由空間用盡,SQL Server在默認情況下會掛起所有數(shù)據(jù)操縱事務,客戶端應用程序停止執(zhí)行。在每個分離的段上存儲其事務日志的數(shù)據(jù)庫均自動設(shè)置有最后機會閾值(Last Chance Threshold),其閾值是備份事務日志所需的自由空間的估計值。當該段上的自由空間低于所置閾值時,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_lefe int,/*剩余自由空間*/status int/*最后機會閾值,其值為1,其它閾值,其值為0*/ASBEGIN/*用戶編寫過程內(nèi)容*/dump transaction db_namewith truncate_onlyEND第三講 數(shù)據(jù)庫與事務日志一、創(chuàng)建用戶數(shù)據(jù)庫Create Database 數(shù)據(jù)庫名On 設(shè)備_1=Size_1,/單位:M 設(shè)備_2=Size_2,log on 日志設(shè)備=Log_SizeWith Override/在同一設(shè)備上創(chuàng)建數(shù)據(jù)庫和事務日志時使用該選項For Load /禁止用戶訪問直到數(shù)據(jù)庫的裝入或恢復操作完成為止舉例: Create 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。系統(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)擴展事務日志到新的設(shè)備上sp_logdevice 數(shù)據(jù)庫名,設(shè)備名舉例:將數(shù)據(jù)庫另外擴充5M,用于存儲日志 alter database my_db on my_dev=5 go sp_logdevice my_db,my_dev go3.刪除數(shù)據(jù)庫drop database 數(shù)據(jù)庫名刪除設(shè)備前必須刪除其上的所有數(shù)據(jù)庫,刪除設(shè)備的命令是:sp_dropdevice三、事務日志 日志文件是用來記錄數(shù)據(jù)庫每一次修改活動的文件。SQL Server中的每一個數(shù)據(jù)庫都有自己的日志文件,即系統(tǒng)表syslogs,也稱為事務日志。事務日志是撤消事務和出現(xiàn)故障時恢復事務的依據(jù)。在某些情況下,事務日志比數(shù)據(jù)本身更為重要。什么是事務?數(shù)據(jù)庫的修改是以事務為單位進行的。一個事務就是一個操作序列,這些操作要么全做,要么全不做,它是一個不可分割的工作單位。任何一個事務具備如下特征。(1)執(zhí)行的原子性(Atomic);(2)保持數(shù)據(jù)的一致性(Consistency);(3)彼此的隔離性(Isolation);(4)作用的持久性(Durability)。上述事務的四個特征被稱為事務的ACID準則。事務在運行過程中,SQL Server把事務開始、事務結(jié)束以及對數(shù)據(jù)庫的插入、刪除和更新等每一個操作作為一個日志記錄存放到事務日志中。事務中的更新操作首先在數(shù)據(jù)庫緩沖區(qū)(內(nèi)存)中進行,緩沖區(qū)分別有用來記錄操作活動的數(shù)據(jù)頁(data page)和日志頁(log page)。當運行到commit tran時,日志頁首先從緩沖區(qū)寫到磁盤上,而后數(shù)據(jù)頁從緩沖區(qū)寫到磁盤上,即遵循“先與日志(write_ahead log)”的原則,這樣保證出現(xiàn)故障的情況下,通過日志能夠得到最大限度的恢復?;謴捅仨毘废l(fā)生故障時還未提交的事務,已完成的事務若仍有未從緩沖區(qū)寫到數(shù)據(jù)庫設(shè)備中,還要重新運行該事務。附:創(chuàng)建與裝載數(shù)據(jù)庫實例use masterdecl are vedvno intselect vdevno=max(convert(tinyint,substring(convert(binary(4),d.low),v.low,1)+1from master.dbo.sysdevices d,master.dbo.spt_values vwhere v.type=Eand v.number=3declare v_str char(2)select v_str=convert(char(2),vdevno)print v_strdisk init name=”YDDATA”, physname=”D:Syb_DataYDDATA.dat”, vdevno=vdevno+1, size=153600disk init name=”YDINDEX”, physname=”D:Syb_DataYDINDEX.dat”, vdevno=vdevno+2, size=102400disk init name=”YDLOG”, physname=”D:Syb_DataYDLOG.dat”, vdevno=vdevno+3, size=76800create database YDMISDBon YDDATA=300,YDINDEX=200log on YDLOG=150use YDMISDBexecute sp_addsegment indexdev,YTMISDB,YTINDEXexecute sp_dropsegment “default”,YTMISDB,YTINDEXexecute sp_dropsegment system,YTMISDB,YTINDEXuse masterload database YDMISDB from d:yd_dumpydmis_backup.dmponline 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服務器服務器登錄(3)Sybase數(shù)據(jù)庫數(shù)據(jù)庫用戶登錄(4)數(shù)據(jù)庫對象對象授權(quán)二、理解數(shù)據(jù)庫角色角色是權(quán)限的集合。1系統(tǒng)預定義角色一個真正的數(shù)據(jù)庫管理員應該是整個服務器及其數(shù)據(jù)庫的擁有者,具有管理服務器及其數(shù)據(jù)庫的所有權(quán)限。在一個大的系統(tǒng)中,數(shù)據(jù)庫管理員往往不只由一人承擔,而是將管理任務進行功能劃分,每人提當不同的責任。系統(tǒng)預定義角色就是為適應這種要求而設(shè)計的。系統(tǒng)管理員(sa_role)sa_role角色擁有執(zhí)行與數(shù)據(jù)庫具體應用無關(guān)的管理權(quán)限:安裝與更新SQL Server管理服務器的物理存儲配置系統(tǒng)設(shè)置參數(shù);創(chuàng)建用戶數(shù)據(jù)庫;授予SQL Server用戶權(quán)限系統(tǒng)安全管理員(sso_role)sso_role用來實施安全上敏感的操作,執(zhí)行有關(guān)安全性的任務:建立服務器登錄帳戶;管理口令;授予除sa_role之外的任何角色;管理審計系統(tǒng);操作員(oper_role)oper_role執(zhí)行全服務器范圍的數(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)限是授予還是撤消。三、服務器的帳戶管理要想成為Sybase系統(tǒng)的一個用戶,首先必須擁有自己的登錄帳戶。通過這一帳戶連同自己的口令向服務器注冊后,才能使用Sybase系統(tǒng)中的一些資源,每一個這樣的登錄帳戶在系統(tǒng)中被賦予Server級的標識SUID。1添加登錄sp_addlogin 登錄名,口令,缺省的數(shù)據(jù)庫如果不指定缺省的數(shù)據(jù)庫,則該帳戶的缺省數(shù)據(jù)庫為master庫。2更改登錄屬性更改口令;鎖定帳戶;期限設(shè)置;賦予角色。Sybase四、數(shù)據(jù)庫用戶管理通過某一個帳戶注冊到服務器后,要想使用某一個數(shù)據(jù)庫,必須成為該數(shù)據(jù)庫的一個用戶。通過建立登錄與用戶之間的聯(lián)系來管理對數(shù)據(jù)庫的訪問。1組的概念組(group)是數(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ù)庫對象的訪問,有兩類權(quán)限:命令權(quán)限和對象權(quán)限。1命令權(quán)限Create DatabaseCreate TableCreate ViewCreate ProcedureCreate RuleCreate default命令權(quán)限授權(quán)與收權(quán):Grant 命令權(quán)限組合 to 組名|用戶名|角色Revoke 命令權(quán)限組合 from 組名|用戶名|角色2對象權(quán)限SelectUpdateInsertDeleteReferenceExecute對象權(quán)限授權(quán)與收權(quán):Grant 對象權(quán)限組合 on 數(shù)據(jù)庫對象 to public|組名|用戶名|角色With Grant OptionRevoke 對象權(quán)限組合 on 數(shù)據(jù)庫對象 to public|組名|用戶名|角色From public public|組名|用戶名|角色Cascade授權(quán)與收權(quán)舉例:Grant Insert,Delete on Employeeto user_1,Group_1Grant Execute on Pro_culculateto publicGrant Select on Employee(emp_id,emp_name)to user_3Grant All on Employeeto user_4Revoke update on Employee(emp_id,emp_name)from user_5Revoke 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事務處理及其日志SQL Server使用事務來跟蹤所有數(shù)據(jù)庫變化。事務是SQL Server的工作單元。一個事務包含一條或多條作為整體成功或失敗的T_SQL語句。每個數(shù)據(jù)庫都有自己的事務日志,即系統(tǒng)表syslogs,事務日志自動記錄每個用戶發(fā)出的每個事務,它飲食了每個事務足夠多的信息,以確保數(shù)據(jù)能夠被恢復。2檢查點(CheckPoint)服務器在何時更新數(shù)據(jù)?在檢查點。在服務器發(fā)出一個檢查點時:(1)更新數(shù)據(jù);(2)在日志中記錄下執(zhí)行檢查點的標記。檢查點可把所有“臟頁”寫到數(shù)據(jù)庫設(shè)備上,“臟頁”是指從上一次檢查點以來,在內(nèi)存中修改、但沒有在磁盤上修改的頁。SQL Server的自動檢查點機制保證了被完成的事務修改的數(shù)據(jù)頁有規(guī)律地從內(nèi)存中的緩沖區(qū)寫到數(shù)據(jù)庫設(shè)備上。二、數(shù)據(jù)庫備份若硬件介質(zhì)出現(xiàn)故障(如磁盤損壞),當且僅當事先已對數(shù)據(jù)庫及其事務日志作了備份,才能恢復數(shù)據(jù)庫。注意:絕對不要使用操作系統(tǒng)的拷貝數(shù)據(jù)庫設(shè)備,把這樣一個拷貝裝入SQL Server將導致大量數(shù)據(jù)庫受損。備份的類型:完全備份()增量備份備份事務處理日志說明:(1)只有把事務日志放在單獨的設(shè)備上,才能進行增量備份;(2)備份事務日志會截斷日志,因此備份的內(nèi)容是自上次備份以來的事務處理。(3)備份之前要啟動備份服務器,并最好創(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_truncateTruncate_only與no_log選項用于刪除事務處理而不作拷貝。Truncate_only截斷日志;在事務處理日志完全滿時用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ù)庫可以是用于創(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)DumpdatabaseDumptransactionDumptransactionDumptransactionDumptransactionDumpdatabase若數(shù)據(jù)磁盤在周二的下午六點損壞,可以采用如下步驟恢復數(shù)據(jù)庫:(1)使用dump transaction with no_truncate獲得當前的事務日志轉(zhuǎn)儲,磁帶7;(2)使用load database轉(zhuǎn)載最新的數(shù)據(jù)庫轉(zhuǎn)儲,磁帶6;(offline)(3)使用load transaction提交最新的事務日志轉(zhuǎn)儲,磁帶7;(4)使用online database把數(shù)據(jù)庫狀態(tài)設(shè)置為online。若數(shù)據(jù)磁盤在周二的下午4:50損壞,恢復過程如下:(1)使用dump transaction with no_truncate獲得當前的事務日志轉(zhuǎn)儲,磁帶7;(2)使用load database轉(zhuǎn)載最新的數(shù)據(jù)庫轉(zhuǎn)儲,磁帶6;(offline)(3)使用load transaction依次裝載磁帶2、3、4、5上的事務日志;(4)使用load transaction提交最新的事務日志轉(zhuǎn)儲,磁帶7;(5)使用online database把數(shù)據(jù)庫狀態(tài)設(shè)置為online。四、制定備份與恢復的策略 由于事務日志在恢復數(shù)據(jù)庫中的特殊作用,應定期備份數(shù)據(jù)庫及其事務日志,而且事務日志的備份要更頻繁一些。如:數(shù)據(jù)庫每周備份一次,事務日志每天備份一次。第六講 數(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ù)定義語言(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í)行語句在批處理的句首時,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 SmallMoney3日期/時間類型Datetime SmallDatetime兩者時間部分的精度不同,前者精確到分,后者精確到1/30秒。4文本和圖像類型Text Image5二進制數(shù)據(jù)類型Binary(n) VarBinary(n)四、數(shù)據(jù)定義語言用來定義數(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_expression|user|nullidentity|null|not null|constraint constraint_nameunique|primary keyclustered|nonclusteredwithfillfactor|max_rows_per_page=xon 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ù)檢索,Adaptive Server有三類索引:復合索引索引包含多列;當兩列或多列由于它們的邏輯關(guān)系而作為整體被查詢時可建立這種索引;唯一索引索引列的值不允許重復;簇聚索引和非簇聚索引簇聚索引強迫Server不斷地對表中數(shù)據(jù)排序或重排序以保證表中數(shù)據(jù)的物理順序和邏輯順序的一致性,簇聚索引對范圍查詢性能影響極大;非簇索引沒有這樣的要求,非簇聚索引對修改操作有利。何時建索引?如果手動插入identity列,則創(chuàng)建唯一索引以保證不插入已經(jīng)存在的值;經(jīng)常被排序訪問的列,即被列在order by子句中的列,最好對其建立索引以便Adaptive Server能充分利用索引順序的優(yōu)點;如果列經(jīng)常用手連接,則可對列建立索引,這樣系統(tǒng)能更快地執(zhí)行連接;包含主鍵的列一般都有簇聚索引,尤其是當它頻繁地和其它表的列相關(guān)聯(lián);經(jīng)常被范圍查詢的列最好為其建立簇聚索引,一旦查詢范圍內(nèi)的第一個值被發(fā)現(xiàn),則隨后的值在物理上一定相近。簇聚索引對單值查詢并沒有什么優(yōu)點。創(chuàng)建索引的基本語法:Create uniqueclustered|nonclusteredindex index_nameOn database.owner.table_name(column_name,column_name)on segment_namewith consumers=x上述語法包含了這樣的暗示:將簇聚索引和它的基表分離在不同的段上;段是邏輯概念,但段可以位于不同的物理設(shè)備上,也即將簇聚索引和基表物理上分開。 這是不允許的,我們將在后面討論設(shè)備、數(shù)據(jù)庫、段、表分區(qū)時作詳細討論。3鍵(key)理解鍵是理解關(guān)聯(lián)的關(guān)鍵。鍵和索引往往是一回事。鍵的意義在概念上,鍵用于參照完整性約束。主鍵是表的單值列的集合,主鍵通過在放置它們的表上創(chuàng)建一個單值索引來實現(xiàn)其單值性的。實際上主鍵是作為標志表的標志符而存在的,一旦主鍵確定,則由該主鍵就確定了的表也就確定了。外鍵是和其它表中的主鍵相關(guān)的列,主鍵和外鍵的關(guān)系確定了外鍵的值域,該值域即為相應主鍵的取值范圍。這樣就從理論上強制實現(xiàn)了表與表之間的參照完整性。前面創(chuàng)建表的語法里包含了創(chuàng)建鍵的成分。也可以通過其它途徑創(chuàng)建主鍵和外鍵。Unique約束和Primary key約束的區(qū)別Unique約束和Primary key約束用來保證同一表中指定的列上沒有重復值,這兩個約束都產(chǎn)生唯一索引確保數(shù)據(jù)一致性,默認情況下,Unique約束產(chǎn)生唯一的非聚集索引,Primary key約束產(chǎn)生唯一的聚集索引。Primary key約束比Unique約束嚴格:Primary key列不允許有空值,Unique列允許有空值。4視圖視圖是查看多表中數(shù)據(jù)的方法,視圖從基表派生,它并非物理存在,而是邏輯表;視圖也系統(tǒng)提供管理表的一種安全機制。視圖使得用戶集中精力在感興趣的數(shù)據(jù)集上。創(chuàng)建視圖的語法:create view database.owner.view_name(column_name,column_name)as select distinct select_statementwith check option有distinct關(guān)鍵字的視圖不能更新。當視圖涉及關(guān)聯(lián)時,定義視圖要小心,這時是對多表操作,完整性顯得很重要。五、數(shù)據(jù)操縱語言1Select語句基本語法:SELEC

溫馨提示

  • 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

提交評論