一、Sybase數據庫簡介
1.版本
1984年,Mark B. Hiffman和Robert Epstern創建了Sybase公司,並在1987年推出了Sybase數據庫產品。SYBASE主要有三種版本,一是UNIX操作系統下運行的版本,二是Novell Netware環境下運行的版本,三是Windows NT環境下運行的版本。對UNIX操作系統目前廣泛應用的為SYBASE 10 及SYABSE 11 for SCO UNIX。 2.Sybase數據庫的特點
1)它是基於客戶/服務器體系結構的數據庫
一般的關系數據庫都是基於主/從式的模型的。在主/從式的結構中,所有的應用都運行在一台機器上。用戶只是通過終端發命令或簡單地查看應用運行的結果。 而在客戶/服務器結構中,應用被分在了多台機器上運行。一台機器是另一個系統的客戶,或是另外一些機器的服務器。這些機器通過局域網或廣域網聯接起來。 客戶/服務器模型的好處是: 它支持共享資源且在多台設備間平衡負載 允許容納多個主機的環境,充分利用了企業已有的各種系統 2) 它是真正開放的數據庫
由於采用了客戶/服務器結構,應用被分在了多台機器上運行。更進一步,運行在客戶端的應用不必是Sybase公司的產品。對於一般的關系數據庫,為了讓其它語言編寫的應用能夠訪問數據庫,提供了預編譯。Sybase數據庫,不只是簡單地提供了預編譯,而且公開了應用程序接口DB-LIB,鼓勵第三方編寫DB-LIB接口。由於開放的客戶DB-LIB允許在不同的平台使用完全相同的調用,因而使得訪問DB-LIB的應用程序很容易從一個平台向另一個平台移植。 3) 它是一種高性能的數據庫
Sybase真正吸引人的地方還是它的高性能。體現在以下幾方面:
可編程數據庫
通過提供存儲過程,創建了一個可編程數據庫。存儲過程允許用戶編寫自己的數據庫子例程。這些子例程是經過預編譯的,因此不必為每次調用都進行編譯、優化、生成查詢規劃,因而查詢速度要快得多。 事件驅動的觸發器
觸發器是一種特殊的存儲過程。通過觸發器可以啟動另一個存儲過程,從而確保數據庫的完整性。 多線索化
Sybase數據庫的體系結構的另一個創新之處就是多線索化。一般的數據庫都依靠操作系統來管理與數據庫的連接。當有多個用戶連接時,系統的性能會大幅度下降。Sybase數據庫不讓操作系統來管理進程,把與數據庫的連接當作自己的一部分來管理。此外,Sybase的數據庫引擎還代替操作系統來管理一部分硬件資源,如端口、內存、硬盤,繞過了操作系統這一環節,提高了性能。
3.Sybase數據庫的組成
Sybase數據庫主要由三部分組成:
(1) 進行數據庫管理和維護的一個聯機的關系數據庫管理系統Sybase SQL Server; Sybase SQL Server是個可編程的數據庫管理系統,它是整個Sybase產品的核心軟件,起著數據管理、高速緩沖管理、事務管理的作用。
(2) 支持數據庫應用系統的建立與開發的一組前端工具Sybase SQL Toolset;
ISQL是與SQL Server進行交互的一種SQL句法分析器。ISQL接收用戶發出的SQL語言,將其發送給SQL Server,並將結果以形式化的方式顯示在用戶的標准輸出上。
DWB是數據工作台,是Sybase SQL Toolset的一個主要組成部分,它的作用在於使用戶能夠設置和管理SQL Server上的數據庫,並且為用戶提供一種對數據庫的信息執行添加、更新和檢索等操作的簡便方法。在DWB中能完成ISQL的所有功能,且由於DWB是基於窗口和菜單的,因此操作比ISQL簡單,是一種方便實用的數據庫管理工具。 APT是Sybase客戶軟件部分的主要產品之一,也是從事實際應用開發的主要環境。APT工作台是用於建立應用程序的工具集,可以創建從非常簡單到非常復雜的應用程序,它主要用於開發基於表格Form)的應用。其用戶界面采用窗口和菜單驅動方式,通過一系列的選擇完成表格Form)、菜單和處理的開發。
(3) 可把異構環境下其它廠商的應用軟件和任何類型的數據連接在一起的接口Sybase Open Client/Open Server。 通過Open Client的DB-LIB庫,應用程序可以訪問SQL Server。而通過Open Server的SERVER-LIB,應用程序可以訪問其它的數據庫管理系統。
二、SYBASE有關概念
Sybase SQL Server是一個多庫數據庫系統。這些數據庫包括系統數據庫和用戶數據庫。 而不論是系統數據庫還是用戶數據庫,都建立在數據庫設備上。 1. 數據庫設備
所有的數據庫都創建在數據庫設備上。所謂數據庫設備,不是指一個可識別的物理設備,而是指用於存儲數據庫和數據庫對象的磁盤原始分區或操作系統文件。增加一個新的數據庫設備時,必須對這些設備“初始化”。初始化的過程就是將物理磁盤、磁盤分區或操作系統文件變為SYBASE數據庫可以識別的設備。初始化數據庫設備使用DISK INIT命令:
DISK INIT NAME=設備名, PHYSNAME=物理設備名, VDEVNO=虛擬設備號, SIZE=塊數其中,NAME指數據庫設備名,此名將用於CREATE DATABASE和ALTER DATABASE命令。PHYSNAME是原始磁盤分區或操作系統文件名。VDEVNO是數據庫設備的標識號,在SQL Server中,它必須是唯一的。SIZE的單位是2K的塊,對於新創建的數據庫,最小的SIZE是model數據庫的尺寸,即1024個2K的塊2M)。 例如:/*將/dev目錄下400M的物理設備初始化為SYBASE的數據庫設備tele114_log01*/
1>disk init 2>name=“tele114_log01”, 3>physname=“/dev/rtelelog” 4>vdevno=4 5>size=204800 /*2Kbyte*204800=400Mbyte*/ 6>go2、段
● 主數據庫master; ● 模型數據庫model; ● 系統過程數據庫sybsystemprocs; ● 臨時數據庫tempdb。 也可選擇下列數據庫: ● 安全審核數據庫sybsecurity; ● 示例數據庫pubs2; ● 命令語法數據庫sybsyntax。 1) master數據庫包含許多系統表和系統過程,從總體上控制用戶數據庫和SQL Server的操作,構成了SYBASE系統的數據字典。MASTER數據庫主要記錄信息為:
● 登錄帳號SQL服務器用戶名);syslogins,sysremolelogins ● 正在執行的過程;sysprocesses ● 可修改的環境變量;sysconfigures ● 系統錯誤信息;sysmessages ● SQL服務器上每個數據庫的信息;sysdatabases ● 每個數據庫占用的存儲空間;sysusages ● 系統上安裝的磁帶及磁帶信息;sysdevices ● 活動鎖信息;syslocks2) model數據庫
● 增加用戶數據庫類型、規則或缺省; ● 可存取SQL Server上所有數據庫的用戶用sp_adduser增加到model數據庫上; ● 缺省權限特別是guest帳號)可在model中建立; ● 諸如select into/bulkcopy那樣的數據庫選項可在model中設置。 這些設置反映到所有新創建的數據庫中。它們在model中最原始的值是關off)。在一般情況下,大多數用戶無權修改model數據庫,又沒被授權讀取。因為model中所有內容已拷貝到新數據庫中,授權讀model沒什麼意義。
1> use model 2> go 3> sp_help 4> go Name Owner Object_type --------------- --------------- ---------------------- sysalternates dbo system table syscolumns dbo system table syscomments dbo system table sysconstraints dbo system table sysdepends dbo system table sysgams dbo system table sysindexes dbo system table syskeys dbo system table syslogs dbo system table sysobjects dbo system table sysprocedures dbo system table sysprotects dbo system table sysreferences dbo system table sysroles dbo system table syssegments dbo system table systhresholds dbo system table systypes dbo system table sysusermessages dbo system table sysusers dbo system table3) sybsystemprocs數據庫
1> use master 2> go 3> sp_help 4> go Name Owner Object_type ------------------------------ ----------------------------------------------- spt_committab dbo user table spt_datatype_info dbo user table spt_datatype_info_ext dbo user table spt_monitor dbo user table spt_server_info dbo user table spt_values dbo user table sysalternates dbo system table syscharsets dbo system table syscolumns dbo system table syscomments dbo system table sysconfigures dbo system table sysconstraints dbo system table syscurconfigs dbo system table sysdatabases dbo system table sysdepends dbo system table sysdevices dbo system table sysengines dbo system table sysgams dbo system table sysindexes dbo system table syskeys dbo system table syslanguages dbo system table syslisteners dbo system table syslocks dbo system table sysloginroles dbo system table syslogins dbo system table syslogs dbo system table sysmessages dbo system table sysmonitors dbo system table sysobjects dbo system table sysprocedures dbo system table sysprocesses dbo system table sysprotects dbo system table sysreferences dbo system table sysremotelogins dbo system table sysroles dbo system table syssegments dbo system table sysservers dbo system table syssrvroles dbo system table systestlog dbo system table systhresholds dbo system table systypes dbo system table sysusages dbo system table sysusermessages dbo system table sysusers dbo system table sp_configure dbo stored procedure sp_dboption dbo stored procedure sp_getmessage dbo stored procedure sp_procxmode dbo stored procedure sp_prtsybsysmsgs dbo stored procedure sp_validlang dbo stored procedure 說明見附錄表12)視圖(Views)
Sp_addgroup 在當前數據庫中建立一個數據庫用戶組 Sp_addlogin 建立一個SQL服務器用戶 Sp_adduser 在當前數據庫中增加一個用戶 sp_changegroup 改變數據庫用戶組 Sp_dboption 查詢或改變數據庫系統設置 Sp_dropdevice 刪除設備 Sp_dropgroup 刪除組 Sp_droplogin 刪除帳號 Sp_help 查詢數據庫對象及所有數據庫信息 Sp_helpdb 查詢數據庫信息 Sp_helpdevice 查詢設備信息 Sp_helpgroup 查詢組信息 Sp_helpindex 查詢給定表信息 Sp_helpuser 查詢用戶信息 Sp_lock 查詢當前加鎖信息 Sp_monitor 查詢SQL服務器統計信息 Sp_password 改變登錄帳號口令 Sp_spaceused 查詢表中的行數、數據頁數及空間大小 Sp_who 查詢當前用戶及過程信息 Sp_syntax 查詢操作語法 Sp_configure 配置系統參數 例: 1> sp_helpdb 2> go name db_size owner dbid created status -------------------------------------------------------- master 3.0 MB sa 1 Jan 01, 1900 no options set model 2.0 MB sa 3 Jan 01, 1900 no options set sybsystemprocs 10.0 MB sa 4 Oct 24, 1997 trunc log on chkpt tele114 370.0 MB sa 5 Oct 24, 1997 select into/bulkcopy, trunc log on chkpt tempdb 22.0 MB sa 2 May 05, 1998 select into/bulkcopy (0 rows affected, return status = 0) 例: 1> sp_monitor 2> go last_run current_run seconds -------------------------- ---------- May 5 1998 4:09PM May 5 1998 4:13PM 224 (0 rows affected) cpu_busy io_busy idle ------------------------- ------------ 17(1)-0% 5(0)-0% 923(223)-99% (0 rows affected) packets_received packets_sent packet_errors ------------------------- ------------- 21(9) 51(23) 0(0) (0 rows affected) total_read total_write total_errors connections ------------------- ------------------- 947(1) 595(113) 0(0) 3(1) (0 rows affected, return status = 0)5)觸發器(Triggers)
1、簡單查詢 A、選擇若干列 Select expression [,expression]... From table_list B、選擇若干行 查出電話號碼以415到頭的記錄 Select * from code_1th where tel like '415%' 查詢中消除值重復的行 Select distinct tel from code_1th 對Text 和 char 可用 like ,其中可用通配符‘%’及‘-’, 分別代表多個字符和單個字符。 其他常用查詢條件有:(出text類型除外) 大小比較 =、>、<、>=、<=、!=、!>、!< 范圍確定 between exp1 and exp2 /net between exp1 and exp2 列表或集合 in (exp1[,exp2,[...]]) not in (...) 謂詞 like 多重條件 and or not 2、連接查詢 A、等值連接和不等值連接:通過‘=’來比較兩個表之間的數據時, 稱為等值連接;而通過其他比較符時,稱為不等值連接 等值連接: Select * from publishers, authors where publishers.city=authors.city 不等值連接: B、自然連接: 在連接的目標列中相同名的列只保留一個 Select publishers.pub_id publishers.pub_name, publishers.state, authors.* From publishers, authors where publishers.city=authors.city 3、子查詢 A、表達式子查詢 Select au_lname, au_fname from authors where city= (select city from publishers where pub_name="abcde") 可以使用一切大小比較操作符;在操作符和子查詢之間可以使用All 或any。 B、限定謂詞子查詢 Select pub_name from publishers from publishers Where pub_id in (select pub_id from titles where type='abcde') C、相關查詢 相關查詢即嵌套查詢依賴於外部父查詢的值, 嵌套查詢要重復執行若干次。 Select distinct t1.type from titles t1 Where t1.type in ( select t2.type from titles t2 where t1.pub_id!=t2.pub_id) 4、集函數、分組與排序 A、對查詢結果進行聚集處理 聚集函數: Sum([all|distinct] expression), avg([all|distinct] exoression) , Count([all|distinct]expression), count(*), max(expression), min(expression) Select count(*) from titles B、用Group by 和 having 子句對查詢結果分組 Select type ,avg(advance), sum(total_sales) from titles group by type Select type from titles group by type having count(*) >1 Having 類似於where , 但where 不能用聚集函數。 C、用Order by 對查詢結果進行排序 Select type ,avg(price) from titles group by type order by avg(price) D、Compute 子句 完成基於每一組中的值的聚集運算,聚集值 作為一個新行出現在查詢結果中。 Select type ,price advance from titles order by type compute sum(price), sum(advance) by type
四、數據庫、數據庫對象的增、刪、改 1、數據庫 x 打開數據庫 Use tele114 x 創建數據庫。擁有創建數據庫權利的用戶可以創建自己的數據庫。 CREATE DATABASE tele114 ON tele114_def01=10,tele114_run01=200,tele114_idx01=200 LOG ON tele114_log01=80 x 刪除數據庫 Drop database tele114 x 修改數據庫 Alter database tele114 on tele114_run02=100, tele114_idx02=100 2、表 x 建表 create table spec_code ( No tinyint not null, /*特編號(0--99)*/ Name varchar(50) null, /*名稱*/ Addr varchar(50) null, /*地址*/ Tel varchar(null, /*電話號碼*/ StaffNo varchar(4) not null /*錄入員工號*/ ) on segrun /*將表放在segrun段上*/ x 刪除表 Drop tabel tele114_1th x 修改表,在表中增加新的列(用這個命令增加的列必須允許null值) Alter table friends_etc add country varchar(20 null x 表級或列級約束 Create table my_publishers (pub_id char(4), Pub_name carchar(40). Constraint my_chk_constraint Check (pub_id in ('1389','0736','0877')) Or (pub_name not like 'bad news books')) x 指定默認值 Create table ny_titles (title_id char(6t), Title varchar(80), Price money default null, Total_sales int default (0)) x 指定Unique 和primary key 約束 Primary key 不允許空值,常用來產生唯一的聚集索引, unique 允許空值,常用來產生唯一的非聚集索引 Create table my_sales (stor_id char(4), Ord_num varchar(20), Date datetime, Unique clustered(stor_id,ord_num)) 3、索引 x 建立索引 create unique clustered index code1thidx1 on code_1th(Code1,Name,UnitNo1,Used) on segrun Unique: 建立唯一性索引 Clustered : 建立聚集索引,使得數據行的邏輯順序與物理順序一致,查詢速度較快; 每個表僅允許建立一個唯一性索引。(非聚集索引nonclustered) On segrun:將索引放在segrun上 x 刪除索引: drop index code_1th.code1thidx1 4、 默認:當用戶沒有顯示地為某一列賦值時,SQL SERVER 為該列插入的值 x 創建默認值CA,把默認值CA用到friends_etc表中的State列上 Creat default statedflt Go Sp_bindefault statedflt, "frends_etc.state" go x 斷離默認 Sp_unbindefault "frends_etc.state" x 刪除默認 Drop default statedflt 5、規則:可以理解為對數據庫、某一列、某用戶數據類型的限制. 規則中的任何變量名必須 冠以@,不能直接引用列或其他數據庫對象。 x 創建規則並把他關聯到用戶定義的數據類型P#上 Create rule phonerule as @phone like 415[0-9][0-9][0-9][0-9] Sp_bindrule phonerule ,"p#" x 斷離規則 Sp_unbindrule "p#" x 刪除規則 Drop rule phonerule 6視圖:視圖是從一個或多個基本表或其他視圖上導出的表, 可以在視圖上進行增、刪、改 x 創建視圖 創建視圖的句法為: create view view_name (column_1,...,column_n) as select_statements 例:在authors表和publishers表上定義一個視圖如下: Create view cities (authorname, acity, publishername, pcity) As select au_lname,authors.city, pub_name, publishers.city From authors, publishers x 通過使用Drop view 命令來撤消一個視圖 Drop view view_name 7、存儲過程 x 創建存儲過程 CREATE PROCEDURE procedure_name [(para1[,para2, ...])] As sql_statements 存儲工程的參數名必須一@開頭,包括@最長為30個字符。 x 執行存儲過程 EXEC[UTE] procedure_name [(para1[,para2, ...])] 存儲過程能夠返回一個整數,用來指示存儲過程執行是完全錯誤還是錯誤。 SQL SERVER 用0指示成功的返回,-1~-99指示不同的錯誤。 當前所用的0及-1~-14的含義如表所示。 值 含義 0 過程執行無錯 -1 丟失對象 -2 數據類型錯誤 -3 進程被選作死鎖的犧牲品 -4 權限錯誤 -5 語法錯誤 -6 各種用戶錯誤 -7 資源錯誤:如空間錯誤 -8 非嚴重的內部錯誤 -9 觸及系統限制 -10 嚴重的內部不一致 -11 嚴重的內部不一致 -12 表或索引壞了 -13 數據庫壞了 -14 硬件錯誤 x 更改存儲過程名 Sp_rename objname newname x 刪除存儲過程 DROP PROCEDURE procedure_name 8 、觸發器 x 創建觸發器 CREATE TRIGGER [owner.]trigger_name ON [owner.]table_name {FOR INSERT,UPDATE,DELETE} AS SQL_statements 或使用IF UPDATE 子句: CREATE TRIGGER [owner.]trigger_name ON [owner.]table_name {FOR INSERT,UPDATE} AS [IF UPDATE (column_name) [{AND|OR} UPDATE (column_name)]...} SQL_statments [IF UPDATE(column_name) [{AND|OR} UPDATE column_name)]... SQL_statements]... x 觸發器的刪除 DROP TRIGGER [owner.]trigger_name 五、批處理和流控制語言 1、批處理 SYBASE系統允許用戶將若干條相關的語句組成一個整體, 交給系統同時處理。 一批語 句的結束以go語句為標志。嚴格地講, 單條SQL語句也是一個批處理。 例:Select count(*) from titles Select count(*) from authors Go 也可以將一組SQL命令放在一個操作系統文件中, 再將這個文件交給isql執行。 2、流控制語言 流控制語句 在批處理中,我們可以加入流程控制語句, 從而達到編程的目的。在T-SQL語言中, 流控制語句有: · if。。。Else。。。 · begin。。。End。。。 · while和break。。。Continue · declare和局部變量以及全局變量 · Goto · Return · Waitfor · print和Raiserror · 注釋 例: if exists(select * from zyl where xm="李軍") print "ok" else print "no this one" 使用批處理有以下規則: x CREATE PROCEDURE、CREATE RULE、 CREATE DEFAULT 、 CREATE TRIGGER 以及 CREATE VIEWE 必須單獨交給SQL SERVER, 他們不能和別的SQL語句一起作批處理CREATE DATABASE、 CREATE TABLE 和CREATE INDEX 能和其他語句組成批處理)。 x 規則和默認值都不能在一組批處理中剛關聯就使用。 x USE命令必須在引用這個數據庫的對象的語句的前一組批處理中提交。 x 不能剛刪除DROP)一個數據庫對象又在同一批處理中重新創建他。 x 用SET語句做的任何選擇設置在批處理尾處發生作用。 可以把SET語句和查詢語句放入一組批處理中, 但SET選擇項不能在這組批處理中使用。 六、系統的啟動和關閉 1、啟動SQL Server 應用SQL Server安裝程序sybinit)創建SQL Server或Backup Server, 默認文件名為RUN_SYBASE 和RUN_SYB_BACKUP,放在¥SYBASE/INSTALL目錄下。 Startserver 用來啟動一SQL Server 或Backup Server: Startserver -f RUN_SYBASE Startserver -f RUN_SYB_BAKUP 可以通過showserver查看SQL ServerBackup Server是否已經啟動, 在$SYASE/INSTALL下運行showserver 查看SQL Server 是否啟動 UID PID PPID C STIME TTY TIME CMD Backup Server已啟動的信息) sybase 831 830 0 17:23:50 ttyp1 00:00:00 /sybase/bin/backupserver SYB_BACKUP -I/sybase/interfaces -M/sybase/bin/sybmul SQL Server已啟動的信息) sybase 674 1 0 14:29:11 ttyp0 00:00:45 /sybase/bin/dataserver -d/sybase/master.dat YBASE -e/sybase/install/errorlog SQL Server的啟動過程 master數據庫啟動 2、啟動SQL Server的單用戶模式 如果要恢復一已被損壞的master數據庫, 則必須要啟動SQL Server的單用戶模式。 單用戶模式下僅允許一個系統管理員向SQL Server注冊。 Startserver -f RUN_SYBASE -m 3、關閉服務器 關閉SQL Server可以在isql中使用T-SQL命令: 關閉SQL備服務器 shutdown SYB_BACKUP 關閉SQL主服務器 shutdown [with nowait] 4、Sybase數據庫目錄說明 /usr/sybase =.. 主目錄 .. /install 安裝程序 ../bin 執行程序 ../include 庫函數文件 ../lib 宿主語言庫 ../doc 聯機文件 ../scripts SQL 動態描述文件 ../help 幫助信息 ../locales 語言限制文件 ../termdef 終端定義文件 ../charsets 字符集文件 七、SQL Server的用戶及權限 Sybase中的用戶分為兩種:SQL服務器用戶登錄帳號)和數據庫用戶。 安裝完SQL服務器後,系統自動建立一個SQL服務器用戶sa,口令為空, 即系統管理員,他對整個系統有操作權,其他用戶均由系統管理員建立。 在SQL Server中有三種特殊的用戶:系統管理員、用戶數據庫所有者 建立相應數據庫的數據庫用戶)DBO、一般用戶。系統管理員對整個系統有操作權; 用戶數據庫所有者對他所建立的數據庫具有全部操作權利; 一般用戶對給定的數據庫只有被授權的操作權限。 數據庫用戶一般可分為用戶組,任一數據庫在建立後即被賦予一個用戶組public。 1、建立SQL服務器用戶名登錄帳號) 作為一個用戶,為了使用SQL Server,他必須在SQL Server上有一個SQL服務器用戶名登錄帳號)。 這個帳號是系統管理員通過sp_addlogin來增加的。 sp_addlogin 登錄名,口令,庫名,語言,全名 例:建立用戶zhang, 口令為zhangling(最低六位),全名為Zhang ling 1> sp_addlogin zhang,zhangling,null,null,"Zhang ling" 2> go 3> select * from syslogins 4> go 2、增加數據庫用戶名 同樣,為了使用SQL Server上的數據庫,他必須在數據庫中有一個用戶名, 這個用戶名是數據庫所有者通過sp_adduser來增加的。數據庫用戶名不必和 用戶帳戶一樣,而且在不同的數據庫中用戶名可以不同。 多個用戶可以有相同的SQL Server帳戶。同樣, 多個SQL Server帳戶可以有相同的數據庫名。 sp_adduser 登錄名,別名,組名 登錄名為用戶的SQL服務器登錄名;別名為用戶在數據庫中的用戶名; 組名為用戶所屬的數據庫用戶組。 例:用戶zhang增加為tele114的用戶,別名為zhang1,屬於用戶組china 1>sp_addgroup china 2>go 1>sp_adduser zhang,zhang1,china 2>go 1> sp_helpuser 2> go *例:刪除別名zhang1,用戶組china,登錄名zhang 1> use tele114 2> go 3> sp_dropuser zhang1 4> go 5> sp_helpuser 6> go 1>sp_dropgroup china 2>go 1> sp_helpgroup 2> go 3> use master 4> go 5> sp_droplogin zhang 6> go 7> select * from syslogins 8> go 3、數據庫操作授權 grant 命令序列 to 用戶名 A. 系統管理員可以授予其他用戶CREATE DATABASE的權限, 使其他用戶可以成為數據庫所有者。 B. 數據庫所有者在他所擁有的數據庫中, 可以授予其他用戶的權限有: l CREATE TABLE ------------------- 建表 lCREATE DEFAULT ------------------ 建缺省 lCREATE RULE ------------------- 建規則 lCREATE PROCedure ------------------ 建存儲過程 lCREATE VIEW ------------------- 建視圖 lDUMP DATABASE ------------------- 備份數據庫 lDUMP TRANsaction ------------------ 備份日志 C. 數據庫對象所有者可以授予其他用戶的操作權限有: l SELECT l UPDATE l INSERT l EXECute l DELETE l REFERENCE 例:授予zhang1在數據庫tele114上建表,建視圖,建存儲過程; 對表students有select,reference權;對name,native字段有update權。 1> use tele114 2> go 3> grant creat table,create procedure ,create view to zhang1 4> go 5> grant select,reference on students to zhang1 with grant option 6> go 7> grant update on students(name,native) to zhang1 8> go 9> sp_helprotect 10> go 八、數據庫備份與恢復 SQL Server提供了兩種不同類型的恢復: 一類是系統自動完成的恢復;另一類是人工完成的恢復。 1.系統軟件故障恢復 系統自動恢復是在系統軟件出現故障的情況下 通過重新啟動SQL Server進行恢復。 自動恢復從master數據庫開始,然後是model數據庫, 再是temporary數據庫,最後是用戶數據庫。在每個數據庫上, 恢復機制觀察事務日志。如果日志寫入比數據庫更近的數據, 則向前恢復數據庫。如果事務尚未完成,則要回退它們。 所謂事務日志就是一張系統表,syslogs。 在這張表中記錄著對數據庫的更新請求, 例如插入、修改和刪除。查詢操作不記入事務日志中。 2.介質故障的恢復 一旦介質發生故障,只有通過以前備份的數據庫和事務日志才能恢復數據庫, 為此我們需要經常備份數據庫和事務日志。 備份數據庫和事務日志我們使用dump命令,而恢復數據庫和事務日志我們使用load命令。 與創建數據庫需要一個數據庫設備類似, 我們備份數據庫和事務日志也需要一個卸出設備。 增加卸出設備可以通過系統過程sp_addumpdevice來實現。 卸出設備可以是磁盤、磁帶或操作系統文件。 sp_addumpdevice "type",device_name,physicalname 例: sp_addumpdevice "disk", "db114", "/usr/sybase/zyl114.bak",1 1) 備份數據庫和事務日志 備份數據庫的語法為: dump database database_name to dump_device 例如: dump database tele114 to db114 備份事務日志的語法為: dump transaction database_name to dump_device [with truncate_only | with no_log | with no_truncate] 前兩項在日志中刪除提交的事務,後一項不刪除。 在備份數據庫前的所有事務日志備份都是沒有意義的。 我們一般不經常備份數據庫,但我們要經常備份事務日志。 這是因為備份事務日志比備份數據庫需要更少的時間和存儲空間。 2)恢復用戶數據庫 要恢復已被破壞的數據庫,可以按如下步驟進行: · 用帶no_truncate選項的dump命令卸出用戶數據庫事務日志。 · 用和被破壞的數據庫的同樣的結構建立一個新的數據庫。 · 用load命令重新裝入數據庫和事務日志。 裝入數據庫的語法為: load database database_name from file_name 裝入事務日志的語法為: load transaction database_name from file_name 例:數據庫備份 1> dump db_name to file_name 2> go 數據庫恢復 1> load db_name from file_name 2> go 日志備份 1> dump transaction db_name to file_name 2> go 日志恢復 1> load transaction db_name from file_name 2> go 日志刪除 1> dump transaction db_name with truncate_only 2> Go 3)master數據庫的恢復 A、保存系統表的拷貝:sysdatabases、sysdevices、 sysusages、sysloginroles和Syslogins。 B、轉儲主設備上的用戶數據庫。 C、關閉SQL Server並使用buildmaster建立新的master數據庫或主設備。 Buildmaster -m ...僅重建master數據庫 Buildmaster ...重建主設備 D、已單用戶模式啟動SQL Server( Master-Recover Startserver -f RUN_服務器名 -m E、若master數據庫用alter database 命令擴展過, 嚴格重建它在sysusages中的分配。 F、若Backup Server 的網絡名接口文件中的名字) 不是SYB_BACKUP,在sysservers中改動網絡名。 Update sysservers set srvnetname="PRODUCTION_BSRV" where srvname="SYB_BACKUP" G、使用showserver查看,檢查確保Backup Server正運行, 若有必要,重啟Bakup Server H、裝載master的備份。 Load database master from 'master.bak' Load database執行成功後,SQL Server 自動關閉。 I、若自master的上次轉儲以來增加過數據庫設備, 執行disk reinit命令以重建sysdevices。 J、若執行了disk reinit,或自上次轉儲以來使用過create database 或alter database,執行disk refit 重建sysusages和sysdatabases表, 執行完畢後SQL Server自動關閉。 K、檢查一致性:比較sysusages和sysdatabases的備份和新的聯機版本, 對每個數據庫執行dbcc checkalloc, 並檢查每個數據庫中重要的表; 若發現錯誤重新執行disk reinit和disk refit。 L、若恢復了整個主設備,則恢復model數據庫。 Cd $SYBASE/scripts Setenv DSQUERY 服務器名 Isql -Usa -P口令 -S服務器名 M、重新裝載所有受影響的用戶數據庫。 N、恢復服務器用戶ID。 O、以多用戶模式重新啟動SQL Server。 4)恢復model 數據庫 Buildmaster -d/設備名 -x 5)恢復sybsystemproces數據庫 A、刪除sybsystemproces數據庫若物理磁盤損壞,刪除設備, 使用Disk init 重建設備) B、重建數據庫 Create database sybsystemporces on 設備名=數據庫大小 C、恢復數據庫 Cd $SYBASE/scripts Setenv DSQUERY 服務器名 Isql -Usa -P口令 -S服務器名 九、幾個實用程序 1、bcp 以用戶指定的形式將數據庫表拷貝到操作系統文件中, 或從操作系統文件中拷貝一個數據庫表。 提供了在數據庫表和操作系統文件之間傳遞數據的一個方便、快速的方法。 bcp [[database-name.]owner.]table_name {in|out} datafile [各種開關] 其中,table_name是想要拷貝的數據庫表名;{in/out}為拷貝方向, in表示從文件到數據庫的拷貝,out表示從數據庫到文件的拷貝; datafile是操作系統文件的全路徑名。 常用的開關有: -f formatfile----存有上次使用bcp處理同一表時得到的應答文件的全路徑名, 格式文件名的擴展名為.fmt。使用格式文件,省去了再重復回答前面的問題。 -U username----允許用戶指定一個注冊名。 -P password----允許用戶指定當前的SQL Server口令。 如果未使用-P選項,bcp將提示輸入一個口令。 -S Server----允許用戶指定與其相連的SQL Server的名字。 例:在客戶端備份tele114數據庫中code_1th表,按照code_1th.fmt的格式 c> bcp tele114..code_1th out code_1th.txt -杅code_1th.fmt 朥sa 朠 2、 isql 與SQL Server交互的SQL句法分析器。 isql [各種開關] 常用的開關有: -U username----允許用戶指定一個注冊名。 -P password----允許用戶指定當前的SQL Server的口令。 -S Server----允許用戶指定與其連接的SQL Server的名稱。 -i輸入文件 -o輸出文件 終止一條命令:go 清除查詢緩沖:reset 調用編輯器:vi 執行一條操作系統命令:!!命令 退出isql:quit或exit 3、showserver 顯示當前在本機上正在運行的SQL Server。 showserver 4、startserver 啟動SQL Server。 startserver [各種開關] 常用的開關有: -f runserverfile----指定一個運行服務器文件名, 每次重啟SQL Server時,以這個文件為參考。在我們的實際機器上, 這個文件名為RUN_SYBASE或RUN_SYB_BACKUP。 -m ----以單用戶的方式啟動SQL Server。這個方式用於恢復master數據庫。 5、syman 顯示聯機的庫例程,系統過程及實用程序手冊。 syman [keyword] syman實用程序的聯機文本文件存放在$SYBASE下的doc子目錄中。 6、dbcc 數據庫一致性檢查 Dbcc 用來檢查一個數據庫的邏輯一致性和 物理一致性。通常在下面的情況下使用dbcc: x 常規數據庫維護 x 確定當一個系統錯誤後可能損壞的范圍 x 在備份數據庫之前 x 懷疑數據庫受到損壞。 dbcc有兩個主要功能:可檢查分配表結構 命令checkalloc、tablealloc和Indexalloc);可檢查頁鏈接和頁級、 行級上的數據指針。 只有表屬主可以用checktable、fix-text和reindex選項執行dbcc命令。 只有數據庫屬主可以使用checkdb、 checkalloc、checkcatalog、 indexalloc和tablealloc選項。只有系統管理員可以使用dbrepair選項 dbcc命令的完整語法格式如下: Dbcc {checktable({表明|表標識}[,Skip_ncindex])| Checkdb [(數據庫名[,skip_ncindex])]| Checkalloc [(數據庫名[,fix|nofix])]| Talbealloc {表明|表標識}[, {full|optimized|fast|null}[,fix|nofix]]))| Indexalloc {表明|表標識},索引標識[, {full|optimized|fast|null}[,fix|nofix]]))| Checkcatalog [數據庫名)] Dbrepair (數據庫名,dropdb)| Reindex ({表明|表標識})| fix_text({表明|表標識})} 十 、SQL客戶端軟件 1. DOS狀態下SQL客戶端軟件 軟件位於c:\sqlbin 運行步驟: 運行TCPIP協議程序tcp.bat c:\nwclient\lsl /c:\nwclient\net.cfg c:\nwclient\ne2000 c:\nwclient\tcpip (2) ping 129.6.114.201 (服務器地址) 返回129.6.114.201 is alive 正常 返回No response from 129.6.114.201 為異常 3)運行sybclenv.bat------------------ Sybase的DOS接口啟動程序,內容如下: set path=c:\sqlbin\binr;%path% ------------- Sybase的DOS接口程序所在目錄 set dsquery=129.6.114.201,4114------------- 連接服務器IP地址和端口號 c:\sqlbin\binr\dbnovtcp C:\sqlbin\binr\rmineti dbping 129.6.114.201------------ 檢查是否連通SYBASE服務器 連接成功出現“Successfully opened network connection" (5) isql 朥sa 朠 1> sp_help 2> go 十一、附錄 附錄1:只有在master數據庫中才能有的系統表 系統表名 表中的內容 Sysconfigures 一行記錄了用戶可設置的配置參數 Syscurconfigs 有關SQL Server當前正使用的配置參數情況 Sysdatabases 一行記錄了SQL Server中的一個數據庫 Sysdevices 一行記錄了數據庫的每一磁帶轉儲設備, 磁盤轉儲設備,數據庫設備和磁盤分區 設備和磁盤分區 Syslocks 有關動態鎖的情況 Syslogins 一行記錄了每一有效的SQL Server的用戶帳號 Sysmessages 一行記錄了每一系統錯誤或警告 Sysprocesses 有關Server進程的情況 Sysremotelogins 一行記錄了一個遠程用戶 Sysservers 一行記錄了一個遠程SQL Server 附錄2:Sysusages 一行記錄了 分配給一個數據庫的每一個磁盤分析 系統表名 表中的內容 Sysalternates 一行記錄了SQL Server用戶在當前數據庫中的標識 syscoumns 一行記錄了一個表或視圖的每一列,一個存儲過程的每一參數 syscomments 一行或多行記錄了每一視圖、規則、缺省值、觸發器和存儲過程 sysdepends 一行記錄了由一個過程、視圖或觸發器所參照的每一過程,視圖或表 Syskeys 一行記錄了每一主碼,外碼或公用碼 Syslogs sysobjects 一行記錄了每一表、視圖、存儲過程、日志、規則、 缺省值、觸發器和臨時表僅在tempdb中) sysprocedures 一行記錄了每一視圖、規則、缺省、觸發器和過程 syprotects 記錄用戶的權限信息 sysegments 一行記錄了每一片段命名的的磁盤分片匯集) systypes 一行記錄了每一由系統提供的和用戶定義的數據類型 sysusers 一行記錄了一個數據庫的合法用戶,或用戶組 附錄3: 由SQL Server提供的系統過程功能和執行權 過程名 功能 執行權限 sp_addalias 把數據庫中的一個用戶映象到另一個用戶數據庫所有者 sp_addgroup 向數據庫增加分組, 在授權和撤權命令中分組被用作聚合名字 數據庫所有者 sp_addlanguage 為服務器定義可替換語言, 並把它增加到master,dbo,syslanguages中。 sp_addlogin 通過向master.dbo,syslogins 中增加表項授權新的SQL Server用戶 系統管理員 sp_addremotelogin 通過向master,bo,sysremotelogins 增添表項授權新的遠程服務器用戶 sp_addsegment 在指定的數據庫設備上創建一個段 數據庫所有者系統管理員 sp_addserver 定義遠程服務器,或定義本地服務器名字 數據庫所有者系統管理員 sp_addtype 創建用戶定義的數據類型 Public sp_addumpdervce 向SQL Server增加轉儲設備 系統管理員 sp_adduser 向當前數據庫添加新的用戶 數據庫所有者 sp_bindefault 為一列或用戶下義的數據類型定義缺省值 目標對象)所有者 sp_bindrule 向一列或用戶定義的數據類型賦一規則 目標汽有者 sp_changedbowner 改變數據庫的所有者 數據庫所有者 sp_changegroup 改變用戶所屬的分組 數據庫所有者 sp_checknames 檢查當前數據庫在7位ASCII碼集之外的字符的名字 public sp_commonkey 在兩個表或視圖之間定義一 公共鍵--經常被連接的列 兩表或視圖)的所有者 sp_configure 顯示或改變配置變量 沒有參數或只有第一個參數 的執行權屬於public,否則屬於系統管理員 sp_dboption 顯示或改變數據庫選項 不帶參數屬於public, 帶參數時屬於數據庫所有者 sp_defaultdb 改變一用戶的缺省數據庫 系統管理員但每個用戶都可以改變他自己的缺省語言) sp_depends 顯示數據庫目標相關性的信息 public sp_diskdefault 設備數據庫設備的狀態為defaulton或defaultoff 表明一數據設備是否能用於數據庫的豈省存儲) 系統管理員 sp_dropalias 刪除用sp_addalias建立的用戶名別名標識 數據庫所有者 sp_dropdevice 刪除一SQL Server數據庫設備或轉儲設備 系統管理員 sp_dropgroup 從數據庫中刪除一分組 數據庫所有者 sp_droplanguage 從服務器中刪除可替換語言, 並從master.dbo.syslanguages中刪掉相應的行 系統管理員 sp_droplogin 通過刪掉用戶在master,dbo,syslogins中的表項刪除SQL Server用戶 sp_dropremotelogin 刪除遠程用戶注冊 系統管理員 sp_dropsegment 從數據庫中刪除一個段或從 特定數據庫設備上卸掉一個段的映象 數據庫所有者 sp_dropserver 刪除遠程服務器 系統管理員 sp_droptype 刪除用戶定義的數據類型 數據庫所有者數據類型所有者 sp_dropuser 從當前是數據庫中刪除一用戶 數據庫屬主 sp_extendsegment 把段的區域擴充到另一個數據庫設備或 在當前數據庫設備上進行擴充 數據庫屬主 sp_foreignkey 在當前數據庫的表或視圖上定義一外部鍵 表的屬主 sp_help 報告目標或SQL Server提供的或用戶定義的數據庫類型的信息 public sp_helpdb 報告--指定數據庫或所有數據庫的信息 public sp_helpdevice 報告--指定設備或所有SQL Server數據庫設備轉儲設備的信息 public sp_helpgroup 報告--特定組或當前數據庫的所有組的信息 public sp_helpinde 報告--表中的索引信息 public sp_helpjoins 列出可連接兩個表或視圖的列 public sp_helpkey 報告某個特定表或視圖的一主鍵, 外部鍵或公共鍵或者當前數據庫中所有鍵的信息 public sp_helplanguage 報告一特替換語言或所有語言的信息 public sp_helplog 報告包括日志第一頁的設備名 public sp_helpremotelogin 報告一特定遠程服務器或所有遠程服務器的注冊信息 public sp_helprotect 報告一數據庫對象或用戶權限,且由用戶選擇對象 public sp_helpsegment 報告當前數據庫中一特定段或所有段的信息 public sp_helpserver 報告一特定遠程服務器或所有遠程服務器的信息 public sp_helpsort 顯示SQL Server的缺省排列順序以及字符集 public sp_helptext 打印一系統過程、觸發器、視圖、缺省或規則的定義文本 public sp_helpuser 報告當前數據庫中一個用戶或所有用戶的信息 public sp_lock 報告當前上鎖的進程的信息 public sp_logdevice 將系統表syslogs其中包括事務日志) 放在一個分設的數據庫設備中 數據庫屬主 sp_monitor 顯示SQL Server的統計數字 系統管理員 sp_password 增加或改變SQL Server注冊的口令 對自己的口令, 權限屬於public,系統管理員有權修改所有用戶口令 sp_placeobject 為一特定中某個表或索引放置將來的空間分配 表屬主,數據庫屬主系統管理員 sp_primarykey 定義一表或視圖上的主鍵主碼) 表的所有者 sp_recompile 使生個使用被指定表的存儲過程、觸發器在下次運行時重新編譯 public sp_remoteoption 顯示或改變遠程注冊選項 顯示選項時屬 public改變選項時屬系統管理員 sp_rename 改變當前數據庫中一用戶建立目標的名稱 特定目標, 權限屬目標屬主對數據庫所有對象,權限屬數據庫所有者 sp_renamedb 改變數據庫名 系統管理員 sp_serveroption 顯示或改變服務器選項 顯示選項,權限, 權限屬 public改變選項,權限屬系統管理員 sp_setlangalian 分配或改變一替換語言的別名 系統管理員 sp_spaceused 顯示行數、數據頁數以及當前數據庫中由某個 目標或所有目標所占用的空間 public sp_unbindefault 從一列或用戶定義的數據類型中解除一規則 目標屬主所有者) sp_who 報告特定用戶或SQL Server所有當前用戶和進程的信息 public 附錄4:常用SQL命令 表4 1.load isql -Usa -P --進入ISQL環境 quit ----退出ISQL環境 2.shutdown (server_name) --關閉SYBASE服務器 ex. shutdown SYB_BACKUP 3.use (database_name) --打開數據庫 ex. use tele114 4.set rowcount (number) -- 設置顯示記錄條數 ex. set rowcount 10 (為0則取消設置) 5.select (select_list) from (table_name) where (search_conditions) --查看符合要求的內容 ex. select max(UnitNo1) from code_1th 6.update (table_name) set (column_name1)=(value1), column_name2)=value2) where (search_conditions) --重新賦值 ex.update code_1th set Password='12345', RevCode1=substring(RevCode1,1, datalength(rtrim(RevCode1))-1) where substring(Code1,1,1)='v' and substring(Code1,2,1)!=' ' 7.select (select_list) into (table_name1) from (table_name2) where (search_conditions) --將符合要求的table_name2中的內容存在table_name1中 ex.select * into sample from code_1th where substring(Code1,1, 1)='V' 8.truncate table (table_name) --刪去表 ex.truncate table sample delete (table_name) where (search_conditions) -- 刪去表的一部分 ex. delete example where County='5' 9.sp_addumpdevice 'disk',(logicalname), (physicalname) --定義轉儲設備 ex.sp_addumpdevice 'disk','nbdump_1', 'vol1:\nbdump\nbdump.dat' 10.sp_dropdevice (device_name) --刪去轉儲設備 ex.sp_dropdevice nbdump_1 11.dump tran (database_name) with truncate_only --刪去日志 ex.dump tran tele114 with truncate_only 12.sp_configure (config_name),(config_value) --更改設置值 ex.sp_configure 'allow updates',1 13.reconfigure with override --使更改設置值有效 14.sp_who --使用數據庫用戶列表 15.kill (spid) --刪去無效的數據庫用戶 ex.kill 9 --刪去spid為9的數據庫用戶 16.sp_helpindex (tabel_name) --查看索引情況 ex. sp_helpindex code_2th 17.sp_helpdb (database_name) --查看數據庫占用空間情況 ex. sp_helpdb tele114 附錄5:SYBASE實用安裝、 Sybase 10.0.1 For SCO UNIX3.0.x的安裝 (一)安裝前准備 1. SCO UNIX需兩張補丁盤 a. UOD381異步I/O盤一張 b. aet382網絡盤一張 重啟UNIX後進入維護模式,用custom命令裝入此兩張補丁盤 2. 在UNIX系統中增加sybase用戶 3. 在工作站上通過TCP/IP將SYB_SCO拷入 /usr/sybase中在工作站上運行 LSL NE2000 TCPIP FTP 129.18.114.99 (129.18.114.99為服務器的網絡地址) 用sybase用戶登錄 bi put SYB_SCO (SYB_SCO在C盤當前目錄中) 4. 用cpio 展開安裝程序 以root登錄 cd/usr/sybase Cpio 杋dvC 5. 配置UNIX內核 a. 以root登錄 b. 設置環境變量,用vi 編輯 /.profile加入以下兩行 SYBASE=/usr/sybase export sybase c. 用vi編輯/etc/conf/cf.d/mtune 修改參數為 NSTREAM 700 NAIOHBUF 400 d. cd/usr/sybase/install sh sco_kernal sybase 重新 relink 後reboot (二)安裝 1)以sybase 登錄 2)cd/usr/syabsw/install 3)sybinit 4)選3 SYBINIT 1. Rrlease Directory: /sur/u/sybasw-100 2. Edit /View interfaces File 3. Configure a server product 4. Configure an Open Coient/Server Product 5. Configure a Front End Product 5)選1 CONFIGURE SERVER PRODUCTS 1. Configure a mew SQL Server 2. Configure an existing SQL Server 3. Upgrad an existing SQL Server 7)ADD NEW SQL SERVER 1. SQL Server name: lyg114 a. 選1,輸入服務器名如:lyg114 b. 按Ctrl-a SQL SERVER VONFIGURATION 1. CONFIGURE SERVER'S INTERFACES FILE ENTRY Incomplete 2. MASTER DEVICE CONFIGURATION Incomplete 3. SYBSYSTEMPROCS DATABASE CONFIGURATION Incomplete 4. SET ERRORLOG LOCATION Incomplete 5. CONFIGURE DEFAULT BACKUP SERVER Incomplete 6. CONFIGURE LANGUAGES Incomplete 7. CONFIGURE CHARACTER SETS Incomplete 8. CONFIGURE SORT ORDER Incomplete 9. ACTIVATE VUDITING Incomplete 分別選1,2,3,---9配置參數,使各項Incmplete----->complete 參數配置如下:例) a. SERVER INTERFACES FILE ENTERY SCREEN Server name : lyg114 1. Retry Count: 10 2. Retry Delay: 10 Listener services available: Protocol Address Port Name Alias rcp scosysv 4114 注意:Port=4114,此參數為1024--65535為間的4個或5個數字 Address=scosysv,此參數為UNIX服務器主機名 b. MASTER DRVICE CONFIGURATION 1. Master Device: /usr /sybase/madter.bay 2. size (Meg) : 30 c. SYBSYSTEMPROCS DATABASE CONFIGURATION 1.sybsytemprocs database size (Meg) : 10 2. sybsystemprocs logical device name: sysprocsdev 3. create new device for the sybsystemprocs database : yes 4. physical name of new device: /usr /sybase/sybtemp.dat 5. size of the new device (Meg) : 10 d. SET ERRORLOG LOCATION 1. SQL Server errorlog: /usr/sybase/errorlog e. SET THE SQL ERVER'S BACKUP SERVER 1.SQL Server backup Server mname: SYB-BACKUP 注意:此備份服務器名一定要與後面配置的備份服務器名一致 f. SONFIGURE LANGUAGES 選 1. us-english g.CONFIGURE CHARACTER SETS 選 1. SACII, fro use with unsp 及4.ISO 8859-1 (latin-1)-w (4.為缺省) h. CONFIGURE SORT ORDER 選 1. Binary ordering ,for the ISO 8859/1 or Latin-1 Charact i. ACTIVATE AVDITING 1. Install auiting: yes 2. sybsecurity database size (Meg): 5 3. sybsecuyty logical device name : sybsecurity 4. dreate new device for the sybsecurity database : yes 5. sybsecurity physical device name : /usr/sybase/sybsecur.dat 6. size of the new device (Meg): 5 9) 參數配置完後,按Ctrl-a Execute the SQL Server Configuration now? y 10)看到下面的信息表示SQL Server 安裝成功 Configuration completed successfully. Press to continue.(回車) 11) 按Ctrl-x 退出安裝程序 12) 要$提示符下運行 startserver-fRUN-lyg114 啟動SQL Server 13) 要$提示符下運行 isql-Usa -P- Slyg114 屏幕出現:1> 安裝完畢 Sybase 11.0.2 For SCO UNIX 5.02C的安裝 一)首先建立sybase組, 組號可設為100;再建立sybase用戶, 然後修改/usr/sybase/.profile文件, 加入一句:SYBASE=“/usr/sybase”; export SYBASE。 二)調整系統核心參數 a. 共享內存: # cd /etc/conf/cf.d # ./configure選16,shared data SHMMAX,輸入新值,如83886080 越大越好,系統啟動後省下的全部內存) 退出。 b. 激活異步I/O: # cd /etc/conf/sdevice.d;進入此目錄 # Vi aio將“N”改為“Y”;編輯aio文件 # Vi suds將“N”改為“Y”;編輯suds文件 # Vi /etc/rc2 在最後加入下面一行: /etc/suds_ctrl -a c. 重建內核: # /etc/conf/cf.d/link_unix d. 重新啟動openserver 三)安裝sybase a. 以sybase登錄: $ ./sybload -D 依輸入y 、l, 然後執行”./sybimage“ b. 依提示輸入序列號,解完包後: Vi /usr/sybase/locales/locales.dat 在[SCO]中,加入: C_C.C.,us-English,ico_1 然後進入Install,配置SYBASE服務器。 ※SYBASE 11.0.2 For SCO UNIX 5.0.2安裝補充說明 目前SCO UNIX 5.0有多種版本, 針對5.0.2,SYBASE 11.0.2的安裝需安裝Kernel Patch: a. OSS437a-streams lock timeout and protocal Data b. OSS441a-SUDS aio supplement c. OSS446a-tape drive unload for nonrewinding devices 在SCO UNIX 5.0.4C上不需安裝補丁盤。