Sybase簡單知識培訓
第一章 數據庫系統概念及Sybase簡介
第一節 數據庫系統的概念
1. 數據庫系統(DBMS-Data Base Management System)―商業軟件:通用性;定義和處理格式化數據文件。
2. DBMS由下列四個部分組成:
數據定義語言DDL(Data Description Language):建立數據庫框架(數據結構)――>DBA(Data Base Administrator)(數據庫管理員);
數據操縱語言DML(Data Manipulation Language):查詢:SQL(Structured Query Language)語言――最終用戶;
數據庫運行控制DCL(Data Control Language)――主要由如下幾個控制功能組成:並發控制功能;數據的安全性控制;數據的完整性控制。
數據字典(Data Dictionary):存放著對實際數據庫各級模式所做的定義,即對數據庫結構的描述――元數據(metadata)。
3. 數據庫系統作用
進行數據的存儲,共享和管理,以及事務的處理等等
第二節 數據庫系統的發展歷程
數據管理工作的發展歷程(數據管理技術的幾個歷史發展階段):
1、數據與程序合一――科學計算;(人工管理階段)
2、數據與程序分離――數據管理;(文件系統階段)
3、數據庫――管理海量數據;(數據庫系統階段):
a. 六十年代,IBM相繼推出了第一個數據庫管理系統IDS和第一個商品化的層次數據管理系統IMS
b. 1970年,Codd提出了關系數據庫理論
c. 數據庫新技術――管理眾多新型或非傳統型數據;分布式數據庫系統、OODB、數據倉庫、多媒體數據庫、工程數據庫、數據挖掘技術以及互聯網數據庫等。
第三節 Sybase數據庫的介紹及地位
1. 客戶/服務器:用戶工作站和中央數據庫系統服務器之間的交互作用。工作站運行應用程序,查詢和更新集中存儲在數據庫服務器上的數據。
2. 客戶/服務器特點
a. 客戶進程和服務器進行可以由LAN或WAN連接,也可以在同一台計算機上運行
b. 用於在客戶和數據庫服務器之間通信的基本語言是SQL實現的
3. Sybase是一個單進程多線程的關系數據庫系統-RDBMS(Oracle是一個真正的多進程數據庫引擎,通過多達16種不同的可執行程序來完成不同的任務),通過數據庫本身來協調需要進行的多個操作和任務。它可以在較小的硬件平台上達到最快的性能,提供給用戶以下特征:
a. 命名高速緩存(named caches):允許管理員針對具體數據庫或對象把大量數據時運行SQL池
b. 在復雜的查詢方面,改善後的優化處理過程提供了良好的系統性能
c. 內存存儲的更大塊尺寸提供了更好的表掃描功能
d. 表分區使數據加載可以並行處理
e. 通過靈活的配置簡化管理功能
f. 每個活動會話的私有注冊緩存技術使大宗業務系統可更為有效地運行
4. Sybase業界地位:
第二章 數據庫對象
第一節 數據庫(Database)
數據庫是存儲在一起的相關數據的集合,這些數據是結構化的,無有害的或不必要的冗余,並為多種應用服務;數據的存儲獨立於使用它的程序;對數據庫插入新數據,修改和檢索原有數據均能按一種公用的和可控制的方式進行。
第二節 設備(Device)
數據庫使用的物理區域,必須在創建數據庫之前進行定義
第三節 表(Table)
表就是一組相關的數據分類後(字段)按行排列,像一張表格一樣。包含幾個元素:
a. 數據:數據指的是儲存在數據表中的信息,數據可能是一個字段中的一個內容,一個由一系列字段組成的記錄,或是一個記錄的集合。數據庫應用項目能取得、增加、修改或是刪除數據表中的數據。
b. 字段:在數據表中,每一列稱為一個字段。每一個字段都有相應的描述信息,如數據類型、數據寬度等。
c. 記錄:在數據表中每一行稱為一條記錄。
d. 主鍵:主鍵是表中一列或多列的組合,其值惟一標識了表中的一行記錄。
第四節 索引(Index)
為了加快訪問數據庫的速度,數據庫都使用索引,類似於圖書館為圖書建立的圖書索引,使讀者可以方便的查閱所到需要的圖書。索引是一個獨立的文件或表格(每個數據庫處理的方式不同);在數據庫的整個生命周期中,它一直存在,並得到相應的維護。
第五節 約束
約束定義了數據的完整性要求,包括主鍵和唯一性約束,檢驗約束,外部鍵標約束。
第六節 視圖(VIEw)
視圖是觀察位於表中的物理數據的一種邏輯方法。其作用主要是保護數據的安全以及方便SQL的使用。
第七節 存儲過程(Store Procedure)
存儲過程是經過語法分析和編譯的SQL代碼,它駐留在數據庫中,可以通過名稱從客戶應用程序或另一個存儲過程調用。其優點是:
1. SQL的快速執行
2. 減少網絡通信量
3. 模塊化程序設計和代碼重用
4. 受限的基於函數的表格訪問
5. 減少運算符錯誤
6. 加強了數據的一致性和完整性
7. 復雜和敏感事務處理的自動化
第八節 觸發器(Trigger)
數據庫觸發器指的是自動地對某一行為做出反應同時采取特定操作的一組SQL 語句,例如修改數據表的數據等。觸發器由一個事件(針對觸發器關聯數據表的INSERT、DELETE或UPDATE語句)和一個行動(關聯的過程)組成。觸發器可以通過一致的方式檢查或修改數據來保證數據的完整性。
觸發器是在引發它的語句執行之前進行工作。對單個數據的修改語句,觸發器只執行一次,而不論受影響的行數為多少。
第九節 規則(Rule)
規則提供了一種為欄和用戶定義的數據類型增強范圍約束的有效機制。其作用於insert和update命令執行之前。
第十節 缺省值
在插入欄時,如果用戶不指定值,系統能夠自動給出缺省的值。用於在插入欄時未給其規定值的場合。
第三章 Sybase的安裝
第一節 Sybase安裝環境
1. 支持的操作系統:Unix(Sun Solaris,HP/UX,IBM AIX等),Windows NT/2000,OS/2,NetWare,Open VMS,Linux.
2. 硬件指標:總線速度,內存大小,CPU,磁盤,網絡性能等。
第二節 Unix平台的Sybase安裝
Sybase在unix下安裝大致步驟說明如下:
1、 建立 sybase用戶和sybase組,並將sybase用戶歸屬於Sybase組
2、 Sybase登錄,
在/usr/sybase目錄下.profile文件最後加入如下語句: SYBASE=/usr/sybase export SYBASE DSQUERY=Sybase export DSQUERY
3、 root登錄,設置共享內存最大值:
#cd /etc/conf/cf.d
#./configure
然後在出現的一系列設置選項中選擇第16項來設置共享內存最大值,根據計算機的內存大小來設置不同的值,64M設為67108864,128M設為68108864。錄入新值後,以後3項不改,直接回車,然後按q退出,出現提示是否接受(y/n),選y
4、 更改目錄 /etc/conf/sdevice.d中aio、sio、suds三個文件的第一項,將N改Y
5、 #vi /etc/rc2 在最後加入一行: /etc/suds_ctrl -a 50
6、 執行#/etc/conf/cf.d/link_unix 進行鏈接,
出現 ……………boot by default?(y/n) y
……………kernel enviroment rebuilt (y/n) y
#reboot
7、 root登錄,#mount /dev/cd0 /mnt
8、 Sybase登錄,$/mnt/sybload -D
提示:是否/usr/Sybase目錄(y/n)? y
… Local or Remote … >L
… disk file of the global archive… >/mnt/sybimage
… Authoring String … >序列號
…Sybase Products available for installation… 1. ……
2. product No.2 SQL Server.sco.10.0.2 3. …… >2
>回車
if this list is correct as show …… please enter ‘y’ or ‘Y’ to cotinue …(y/n)
Positioning Media For loading Please Wait 開始從光盤上拷貝文件 x. ………
9、$su #umount /mnt
10、 Ctrl-d
回到Sybase用戶
$cd /usr/Sybase/install
$./sybinit
1. release directory
2. Edit/vIEw interfaces file
3. Configure a server product
4. Configure an open clIEnt/server product
5. Configure a Front End product Ctrl_a(accept) Ctrl_x(exit screen) 選2 後出現
1. Add a new entry
2. Modify an exisiting entry
3. VIEw an existing entry
4. Delete an existing entry
選1 後出現
1. Server name: 輸入1後再輸入server名字:Sybase,
按Ctrl_a後出現
1. Retry count : 0
2. Retry deiay : 0
3. Add a new listetener service
分別選1和2,將其值改為2
選3後出現
1. Hostname/Address
2. Port: ( 建議在5000-50000之間)
3. Name Alias:
4. Delete this service from the interfaces entry
選1輸入本機名:localhost,
選2輸入8888,Ctrl_a接受
Is this information correct ……(y/n) y
Ctrl_a
Write the changes to the interfaces file now?
Ctral_a
11、 返回主菜單,
選3.configure a server product 後出現
1. SQL Server
2. Backup Server
選1後出現
1. Configure a new SQL Server
2. Configure an existing SQL
3. Upgrade an existing SQL Server
選1,Ctrl_a 確認後出現9項
1. CONFIGURE SERVER’S INTERFACES FILE ENTRY COMPLETE
2. MASTER DEVICE CONFIGURATION INCOMPLETE
3. SYBSYSTEMPROCS DATABASE CONFIGURATION INCOMPLETE
4. SET ERRORLOG LOGATION INCOMPLETE
5. CONFIGURE DEFAULT BACKUP SERVER INCOMPLETE
6. CONFIGURE LAGUAGES INCOMPLETE
7. CONFIGURE CHARACTER SETS INCOMPLETE
8. CONFIGURE SORT ORDER INCOMPLETE
9. ACTIUATE AUDITING INCOMPLETE
從2至9開始設置
選2出現
1. Master device
2. Size <17>
選2設為30,
Ctrl_a確認退回上級菜單
選3出現
1. Sybsystemprocs database size (Meg):12
2. Sybsystemprocs logical device name: sysprocsdev
3. Create new device for the sybsystemprocs database: yes
4. Physical name of new device: /usr/Sybase/sybprocs.dat
5. Size of the new device (Meg): 12
選1和5將值改為17,Ctrl_a確認退回上級菜單
依次選擇第4到第9項出現
分別Ctrl+a 確認即可 ,然後出現提示(y/n) 選擇 "y"
Ctrl+a 確認
設置完成後根據提示進行確認。
12。 開始安裝程序。
13 安裝完成後退出
回到菜單 1. SQL Server
2. Backup server
選擇 2
Ctrl+a 確認
出現的菜單下選擇 2。Enter/modify backup server interfaces files informantion
Ctrl+a 確認
出現菜單中
將 1,2 項設為2 《與前面相應步驟類似》
然後選擇第3項
將 1. hostname/address <本機名> (如 localhost)
2.prot <設為9999> (注5000-50000之間任意,但不要與前面設的port相同)
第3,4 項不改。
Ctrl+a 確認
以下操作根據提示或Ctrl+a確認,或根據提示(y/n)按y
完成操作後也就完成了Sybase 的安裝。
第三節 Sybase的檢測
數據庫安裝以後,需要檢測數據是否能夠正常工作,可以沿用以下步驟進行:
1. 運行showserver看服務器是否已經啟動
2. 用isql看是否能夠登錄服務器
3. 檢測客戶端機器與服務器的網絡是否聯通
4. 用客戶端的dbping工具ping服務器看能否找到服務器
5. 從客戶端登錄服務器的master庫是否正常
第四節 Sybase的配置
Sybase安裝完成後,必須根據實際情況對Sybase的某些參數進行重新配置。
1. 修改sa密碼(缺省為null)
sp_passWord null,新口令
2. 關閉主設備狀態(否則用戶會誤將用戶數據庫安裝在主設備上)
sp_diskdefault master,defaultoff
3. 同時刪除缺省備份設備(否則因為沒有相應連接的物理設備而備份失敗)
sp_dropdevice diskdump
4. 增加tempdb空間(缺省只有2M)
初始化設備:
disk init
name=”temp_dev”,
physname=物理位置
vdevno=99
size=頁數
增加庫空間:
alter database tempdb
on temp_dev=頁數
log on log_dev1=頁數
5. 為服務器命名(在sysservers表中設置名字)
sp_addserver,服務器名字,local
6. 設置重要的參數項(Open database,Memory,User Connection)
sp_configure “open database”,最大數據庫數目
sp_configure “total memory”,內存頁數
sp_configure “user connection”,最大用戶聯接數目
7. 建立model數據庫對象,用戶和數據類型(否則需要手工復制到用戶數據庫中)
建立rules,defaults,用戶,以及其他全局用戶自定義類型
(可選)
8. 安裝pubs2數據庫(Sybase系統的樣本表,視圖和數據)
修改腳本的內容$Sybase/scripts/installpubs2腳本內容
在isql中執行$Sybase/scripts/installpubs2腳本
(可選)
9. 安裝sybsyntax數據庫(Sybase關於T-SQL語法幫助信息)
修改$Sybase/scripts/ins_syn.sql腳本內容
在isql中執行$Sybase/scripts/ins_syn.sql腳本
(可選)
第四章 T-SQL知識
第一節 SQL概念及T-SQL介紹
SQL即結構化查詢語言,是負責與ANSI維護的數據庫交互的標准。最新的版本是SQL-99,還有一個新標准SQL-200n尚處於制定過程中。大多數RDBMS廠商的產品都支持SQL(至少支持SQL-92標准)。ANSI SQL一般被認為是一種查詢和執行語言,而不是發展成熟的編程語言。其組件包括:
1. 數據定義語言(DDL):創建和放棄數據結構並管理對象級安全性
2. 數據修改語言(DML):修改,增加和刪除表中數據
3. 數據控制語言(DCL):負責表數據的安全。
T-SQL對ANSI SQL進行了擴展,增加了程序流控制結構,局部變量和允許DBA創建基於代碼的對象(存儲過程,觸發器等)
Sybase把在SQL批處理提交給服務器之後(即執行go語句後),服務器巴批處理作一個整體進行語法分析,優化和編譯,然後逐條語句進行執行。
第二節 常用SQL語句的使用
在SQL語句中,最常用的幾個語句是select,insert,update和delete,它們都屬於DML范疇。以下是它們的基本語法結構:
1. SELECT 語句
SELECT[predicate]{*|tablename.*|[tablename.]field1[,[tablename.]fIEld2[,...]]} [AS alias1 [,alias2[,...]]]
FROM tableexpression [,...]
[WHERE...]
[GROUP BY...]
[HAVING...]
[ORDER BY...]
SELECT 語句包括下面幾個部分
A. SELECT主體
predicate包括了ALL,DISTINCT,DISTINCTROW,與TOP 我們可以利用這樣的語句去限制查詢後所得的結果。從指定表格中指定所有的字段。
table針對被選擇出的記錄的字段,所指定表格的名稱。
field1,fIEld2想要讀取數據的字段名稱,如果包含了一個以上的字段,會依照列出的順序來讀取數據。
alias1,alias2用來替代在表格實際字段名稱的化名。
tableexpression表格名稱或包含我們所想要的數據的表格。
ALL,DISTINCT,DISTINCTROW,TOP屬性詞用法
B. FROM 條件子句:指定表格名稱或是查詢,其中包含列在SELECT語句的字段數據。
WHERE 條件子句:指定查詢的條件與限制。
C. HAVING 條件子句:指定一特定的分組記錄,並滿足HAVING 所指定的條件或狀態,但條件是針對分組的條件設置
D. GROUP BY 條件子句:依據指定的字段,將具有相同數值的記錄合並成一條。
2. INSERT語句
多條記錄插入:
INSERT INTO target[(field1[,fIEld2[,...]])]
SELECT [source.]field1[,fIEld2[,...]
FROM tableexpression
單條記錄插入:
INSERT INTO target[(field1[,fIEld2[,...]])]
VALUES(value1[,value2[,...]]
target
3. UPDATE語句
更新表數據,通過條件的限制來修改特定的數據。
UPDATE tablename
SET newvalue
WHERE criteria;
4. DELETE語句
我們可以利用DELETE語句,將表格中的記錄刪除。(記錄被刪除後,無法再復原,所以條件設置要正確)
DELETE[table.*]
FROM tableexpression
WHERE criteria
5. 清除表數據
truncate table tablename
truncate table只是釋放表及索引所占用的空間,而不是象delete一樣一行一行地刪除數據,所以其速度快得多,特別適合大表的數據清除。
第五章 Sybase系統管理
第一節 Sybase啟動,登錄以及關閉
以UNIX平台為例進行說明:
1. 啟動服務器:可以將/usr/Sybase/install目錄下的runserver文件拷貝出來,並對其中的內容進行修改(主要是server名稱),確保該文件可執行。執行改後的文件即可啟動服務器
2. 登錄服務器:isql CU用戶 CP密碼
3. 關閉服務器:shutdown [with nowait]
在以下情況下必須關閉並重啟服務器:修改配置項,移去異常日志,設置跟蹤標志,配置主設備鏡像
第二節 用戶管理
1. 登錄用戶管理
a. 添加登錄用戶(只有sso_role才允許進行)
sp_addlogin login_name,passWord,[defaultdb,[,language]]
passWord長度不小於6,只有sso_role才允許添加登錄
也可以利用指定參數的方法進行登錄,如指定@loginname=“liming”等
b. 修改登錄用戶信息
sp_modifylogin login_name,option,value
option包括defdb,deflanguage或fullname.
c. 鎖定或解除鎖定用戶
sp_locklogin login_name,{“lock”|”unlock”}
d. 刪除登錄用戶
sp_droplogin login_name
e. 查看登錄
sp_who
2. 口令管理(只有sso_role才允許進行)
a. 設置口令
sp_password old_password,new_passWord,[,login_name]
b. 失效時間設置
sp_configure “passWord expiration interval”,#_of_day
_of_day=0表示永不失效
3. 數據庫用戶管理
a. 數據庫用戶組管理
sp_addgroup groupname
sp_dropgroup groupname
b. 數據庫用戶管理
sp_adduser login_name[,name_in_db[,groupname]]
Sybase擁有兩個特殊的用戶,dbo和guest,其中dbo是數據庫的創建者本身,而guest必須顯式添加到數據庫中
改變用戶組
sp_changegroup group_name,name_in_db
刪除用戶
sp_dropuser login_name
查看用戶信息
sp_helpuser [user_name]
c. 別名管理
sp_addalias login_name,name_in_db
sp_dropalias login_name
第三節 數據庫對象管理
1. 數據庫對象(設備除外)一般的管理方法
a. 對象創建:create object_type object_name…
b. 對象重命名:sp_rename old_name,new_name
c. 對象刪除:drop object_type object_name
2. 設備管理
a. 設備初始化
disk init
name=’logical_name_of_device’,
physname=’os-location-device’,
vdevno=virtual_device_number,
size=size_of_device_in_pages
[,vstart=virtual_address,cntrltype=controller_number]
b. 缺省設備
sp_diskdefault device_name,defaulton(缺省開啟)
sp_diskdefault device_name,defaultoff(缺省關閉)
c. 設備鏡像(以sa_role身份登錄)
建立鏡像
disk mirror
name=’logical_device_name’
morror=’physical_device_name’
[,writes={serial|noserial}]
關閉鏡像
disk unmirror
name=’logical_device_name’
[,side={‘primaryl’|secondary}]
[,mode={retain|remove}]
重新建立鏡像
disk remirror
name=’logical_device_name’
3. 數據庫管理
a. 創建用戶數據庫
create database <db_name>
[on <device_name>[=<size>],[…]]
log on <device_name>[=<size>],[…]]
[for load]
如果for load有選項,則該庫只允許對備份數據庫進行load database操作
影響日志區大小的因素是數據庫活動水平,增量備份的頻率以及同時更新的容量。
b. 增加數據庫容量
alter database <db_name>
[on <device_name>[=<size>],[…]]
log on <device_name>[=<size>],[…]]]
如果只是將一個設備空間用作日志空間,可以使用sp_logdevice進行
sp_logdevice <databasename>,<devicename>
c. 查看數據庫信息
sp_helpdb <db_name>
d. 刪除數據庫(必須無人使用情況下)
drop database <db_name>
如果數據庫因為崩潰而無法刪除,則用以下方法刪除:
dbcc dbrepair (db_name,dropdb)
e. 數據庫選項:
sp_dboption <db_name>,<option>,{true|false}
option包括數據庫的狀態標志:
allow null:是否允許使用空值字段
dbo use only:只允許數據庫創建者使用
read only:只讀
single user:每次只允許一個用戶訪問
4. 表管理
a. 創建表
creat table table_name
(column_name datatype {identify|null|not null})
[,…]
[[constraint cons_name
{unique|primary key}
[{clustered|nonclustered}]
(column_name,…)
check(search_condition)]
只有在激活identify選項狀態後,才允許identify字段進行手工插入
set identify_insert table_name on
b. 查看表
sp_help table_name
c. 修改表
alter table table_name [{add|drop}]
[colum|constraint|]
d. 一般臨時表創建(只存在於會話期間或存儲過程期間)
方法一:create table #table_name…
方法二:直接利用select field1,fIEld2 into #table1_name from table2_name ……….
e. 永久性臨時表創建(存在於整個服務器正常工作期間,直至重啟或故障)
在tempdb中直接創建,如
select * into tempdb..table1_name from table2_name
f. 刪除表
drop table table_name
5. 索引管理
a. 創建索引
create [unique][clustered|nunclustered] index
index_name on table_name(column [,…])
在索引定義成unique是,只能有唯一的索引值(包括空值)
缺省狀態下,索引是不唯一且非群集的
b. 刪除索引
drop index index_name.
6. 視圖管理
a. 創建視圖
create view vIEw_name [(col_name,…)]
as select statement
[with check option]
check option標志可以阻止行的插入和更新
b. 限制性數據修改
只允許更改不多於一個表的欄
c. 查看視圖信息
select * from sysobjects where type=”V”
或sp_help vIEw_name
d. 刪除視圖
drop view vIEw_name
7. 規則管理
a. 創建規則
create rule rule_name as
@varialble Operatior expression
b. 綁定規則
sp_bindrule rule_name,”table_colname”
c. 刪除規則
drop rule rule_name
8. 缺省值管理
a. 創建缺省值
create default default_name as constant_expression
b. 綁定缺省值
sp_binddefault default_name,”table_colname”
c. 刪除缺省值
drop default default_name
9. 存儲過程管理
a. 創建存儲過程
create procedure pro_name[;number]
[(@parm_name datatype=default_value [output][,…])]
[with recompile]
SQL statement
[return [integer_status_value]]
b. 調用存儲過程
execute [@status=] pro_name[;number]
[[@parm_name=]expression [output][,…]
[with recompile]
c. 光標使用
d. 刪除存儲過程
drop procedure pro_name
10. 觸發器管理
a. 創建觸發器
create trigger tri_name
on table_name
for {insert|update|delete}[,…]
SQL statement
[return]
b. 觸發器限制
觸發器不允許出現以下命令
任何create和drop命令
Ø alter database/table
Ø grant
Ø revoke
Ø select into
Ø truncate table
Ø update statics
Ø reconfigure
Ø load database/trasaction
Ø disk init /mirror/reinit/remirror/unmirror
11. 視圖管理
a. 創建視圖
create view vIEw_name [(col_name,…)]
as select statement
[with check option]
check option標志可以阻止行的插入和更新
b. 限制性數據修改
只允許更改不多於一個表的欄
c. 查看視圖信息
select * from sysobjects where type=”V”
或sp_help vIEw_name
d. 刪除視圖
drop view vIEw_name
第四節 角色與權限管理
1. 角色概念及分類
Sybase的角色是為了分配Sybase的某些活動,並確定這些活動的用戶。
Sybase的角色一種定義了六種,分別是系統管理員(sa_role),站點安全員(sso_role),操作員(oper_role),導航員(navigator_role),復制管理角色(replication_role),Sybase技術支持角色(Sybase_ts_role)。其中前面三個角色是常用角色。
2. 角色的職責范圍
a. 系統管理員(sa_role):系統的最高管理者
Ø 安裝Sybase或特定模塊
Ø 管理服務器的物理存儲份分配
Ø 調試,配值變量
Ø 創建用戶數據庫並轉讓所有權
Ø 作為任何數據庫所有者進行活動
b. 站點安全員(sso_role):維護系統的安全
Ø 向服務器添加登錄
Ø 管理口令
Ø 管理審計系統
Ø 授予除sa_role以外的所有角色
c. 操作員(oper_role):管理備份與恢復
只能對database和transation執行dump和load命令
d. 導航員(navigator_role):管理游動服務器
e. 復制管理角色(replication_role):管理復制服務器
f. Sybase技術支持角色(Sybase_ts_role):執行被認為是超出正常系統管理的任務
3. 授權管理
a. 角色授權
sp_role {“grant”|revoke},{sa_role|sso_role|oper_role},login_name
set role{sa_role|sso_role|oper_role},{on|off}
b. 對象授權
grant {all|permission_list} on object[(column_list)]
to {public|name_list|role_name}[with grant option]
grant {all|commant_list} to {public|name_list|role_list}
perssion_list可以是select,insert,update,delete的任何組合。Name_list可以是用戶和組的組合
command_list可以是包括任何creat命令(creat database/rule/table/vIEw/procedure/default)
with grant option授予指定的權限
c. 對象撤權
revoke [grant option for]{all|permission_list|execute} on object[(column_list)]
from {public|name_list|role_name}[cascade]
revoke {all|command_list}
from {public|name_list|role_name}
grant option for取消用戶授予指定的許可
第五節 事務處理
事務處理是被一次完成的一系列操作,如同一個操作一樣。事務要麼作完,要麼根本都不做
1. 事務控制:
a. begin transaction開始一個工作單元
b. commit transaction結束一個工作單元
c. rollback transaction取消一個工作單元
2. 事務處理日志:事務處理日志是數據庫級的系統表syslogs,其中含有對數據庫中每個對象所有修改的順序列表以及維護數據完整性的信息:
Ø 由一個數據庫的所有用戶共享
Ø 在高速緩存中修改,只有在提交時才刷新到磁盤上
Ø 先於數據被寫入
Ø 不能用SQL操作
Ø 對任何有用的格式不可讀
徹底清除日志:
DUMP TRANSACTION db_name WITH NO_LOG
只有在作完整性備份以後才允許進行日志清除
第六節 備份與恢復
1. 添加轉儲設備
sp_addumpdevice “tape”,logicalname,physical_name,size
sp_addumpdevice “disk”,logicalname,physical_name
(在新版本的Sybase中可以不用添加設備,直接在備份時進行指定物理路徑)
2. 備份數據庫
a.備份數據庫
dump database db_name to dump_device [at backup_server_name]
[,stripe on dump_device [at backup_server_name]…]
[with dismount|nodismount],
[nounload|unload],
[noinit|init],
[retaindays=#day],
[file=fale_name]
b.備份事務日志
dump trasation to dump_device [at backup_server_name]
[,stripe on dump_device [at backup_server_name]…]
[with dismount|nodismount],
[nounload|unload],
[noinit|init],
[retaindays=#days
[{truncate_only}|no_log|no_truncate]]
3. 恢復數據庫
a.從數據庫恢復
load database db_name from dump_device [at backup_server_name]
[,stripe on dump_device [at backup_server_name]…]
[with dismount|nodismount],
[nounload|unload],
[noinit|init],
[file=fale_name]
[listonly[=full]],
[headeronly]
b.從事務日志恢復
load transaction db_name from dump_device [at backup_server_name]
[,stripe on dump_device [at backup_server_name]…]
[with dismount|nodismount],
[nounload|unload],
[noinit|init],
[file=fale_name]
[listonly[=full]],
[headeronly]
第七節 系統配置
1. 查看配置選項
所有的配置參數都存儲在sysconfigures與syscurconfigs兩個系統表中。其中。
可以用sp_configure查看當前的配置信息
2. 設置配置值
sp_configure “option”,value
option是sysconfigure表中所有description列中的配置參數
3. 使用配置文件
配置文件格式:parameter_name={value|default}
sp_configure “configuration file”,0,{“write”|“read”|“verity”|“restore”} “filename”
第八節 遠程管理
1. 對本地和遠程服務器分別命名
sp_addserver far_server_name(在本地服務器中配置)
sp_addserver near_server_name(在遠程服務器中配置)
2. 對遠程訪問配置每個服務器
sp_configure ‘remote Access’,1 (遠程和本地都配置)
3. 將所有服務器加至本地接口文件中
4. 在遠程服務器上,定義登錄和用戶的映射
sp_addremotelogin near_server_name[,local_name[,remote_name]]
5. 設置遠程選項(可選)
sp_remoteoption remote_server_name,login_name,remote_name,option_name,{true|false}
(如sp_remoteoption near_server,near_login_name,null,trusted,true)
第六章 Sybase性能調整
第一節 性能定義
1. 性能定義
性能的衡量標准包括吞吐量,並發性,同時運行OLTP(在線事務處理),DSS(決策支持系統),批處理(管理和脫機報告系統)的組合。
2. 性能解決辦法
a. 歸一化(清除重復數據)
b. 非歸一化(儲存重復數據)
c. 索引創建和刪除
d. 數據庫分段,以將特定的對象移到特定的物理設備中
e. 對跨數據庫的表進行拆分
3. 性能影響因素
a. 系統結構問題
包括CPU/Symmetric Multi-Processing(SMP)的使用和管理,磁盤I/O性能,網絡性能和吞吐能力,並發能力等
b. 應用程序問題
包括查詢設計,邏輯數據庫設計,物理數據庫設計等
c. Sybase系統問題
包括配置選項,查詢優化,鎖定管理和競爭等
d. 並發問題
包括維護性活動的影響
批處理的影響
並發進程的管理
第二節 鎖與性能
1. 鎖的類型
Sybase的鎖包括共享鎖,更新鎖和互斥鎖三種類型
2. 檢查當前鎖的活動
sp_lock
顯示鎖id,類型,數據庫,表,頁號,是否光標鎖
3. 配置鎖定
缺省鎖為5000個,一般每個用戶需要20個左右的並發鎖。
sp_configure “locks” ,鎖數量
死鎖檢查設定
sp_configure “deadlock checking period”,1000 (缺省500毫秒)
第三節 性能調試
1. 估算查詢次數
首先設計一個大表test_table,並存儲足夠的數據
重啟服務器,執行以下語句:
set statistics in on
set statistics time on
select count(*) from test_table
從讀取的結果中反映出物理和邏輯讀取次數和耗費時間
2. 了解物理I/O速度
測試的方法同上,唯一需要設計的是將test_table放到不在高速緩存中
3. 了解邏輯I/O速度(從高速緩存讀出的頁數)
測試的方法同上,唯一需要設計的是將test_table放到在高速緩存中
4. 日常性能監控因素
a. 引擎CPU
b. 虛擬設備I/O
c. 並發性
d. 吞吐量
e. 批處理影響
第七章 Sybase客戶端工具
第一節 Windows平台的Sybase客戶端工具介紹
Sybase本身提供了許多客戶端的工具方便於用戶進行各種通訊和管理的使用,其中最常用的工具有:DSEdit,Sybase Central,SQL Advantage以及一個常用的BCP實用程序。
第二節 Sybase DSEdit的使用
DSEdit是配置Sybase目錄服務和sql.ini文件的程序。
第三節 Sybase Central的使用
Sybase Central是對Sybase進行管理的主要客戶端工具,可以顯示,創建和刪除各種數據庫對象。
第四節 Sybase SQL Advantage的使用
Sybase SQL Advantage主要是提供給用戶進行T-SQL編程的集中調試和執行環境。
第五節 BCP實用程序使用
利用BCP程序可以實現對Sybase Server進行大批量數據導入或導出的功能。BCP能夠按照用戶制定格式在操作系統文件和數據庫之間進行數據的相互復制。
BCP語法:
bcp [[database_name.]owner.][vIEw_name | table_name
[:partition_id]] {in | out} datafile
[-c] [-E] [-n] [-X]
[-a display_charset]
[-A size]
[-b batchsize]
[-e errfile]
[-f formatfile]
[-F firstrow]
[-g id_start_value]
[-I interfaces_file]
[-J clIEnt_charset]
[-L lastrow]
[-m maxerrors]
[-P passWord]
[-q datafile_charset]
[-r row_terminator]
[-R remote_server_principal]
[-S server]
[-t fIEld_terminator]
[-T text_or_image_size]
[-U username]
[-z language]