Sybase Ase 12.5 for Linux 的使用

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0


sybase ase 12.5 for linux 的使用
發表於《開放系統世界》2005年11期作者:田逸(sery@163.com)

安裝好sybase資料庫伺服器以後,沒有什麼比使用這個資料庫最重要的事情了.

一、創建資料庫
但是在開始之前,很有必要定義用戶資料庫所需要的存儲區域,而不要在伺服器默認的主設備(master)上創建用戶資料庫.

創建資料庫設備:通過sybase安裝過程創建了master和sybsystemprocs,所有其他的資料庫設備則是通過 disk init 命令來創建.我們保證sybase的用戶對欲創建的設備的目錄具有讀寫許可權,否則就無法創建成功.先以sybase用戶登陸linux系統(資料庫是以sybase用戶安裝的,關於安裝和初試配置,請參照「redflag server 4搭建sybase」一文),進入sybase用戶的主目錄 /opt/sybase,創建目錄userdata;啟動資料庫服務,用sybase的isql連接資料庫,然後執行disk init 來完成此項操作.
[sybase@sybase sybase]$ cd ase-12_5/install
[sybase@sybase install]$ ./startserver //啟動sybase伺服器
[sybase@sybase sybase]$ cd
[sybase@sybase sybase]$ mkdir userdata //創建目錄用於存放用戶資料庫
[sybase@sybase sybase]$ cd /ocs-12_5/bin
[sybase@sybase bin]$ ./isql ╟u sa ╟s sybase //連接資料庫伺服器,我的數據//庫伺服器名稱為sybase,sa
//密碼為空
[sybase@sybase bin]$ ./isql -u sa -s sybase //下面是回顯
保密字:
msg 2401, level 11, state 2:
server 'sybase':
character set c is not available between client character set 'gb18030'
and server character set 'iso_1'.
no c will be done.
msg 4017, level 16, state 1:
server 'sybase':
neither language name in login record 'chinese' nor language name in syslogins
'<null>' is an official language name on this sql server. using server-wide


default 'us_english' instead. //回顯到此,進入客戶操作模式
1> disk init //如果輸錯了,按「ctrl」 」back space」刪除
2> name=userdev, //命名最好便於識別為佳
3> physname=」/opt/sybase/userdata/userdev.dat」, //要用絕對路徑
4> size=」500m」
5> go
1> disk init //給日誌文件分配設備
2> name=logdev,
3> physname=」/opt/sybase/userdata/logdev.dat」,
4> size=」50m」
5> go

更改默認設備:如本文開頭部分所言,為了防止用戶資料庫被分配到資料庫系統主設備master上,應該在安裝完資料庫后修改默認設備—安裝完sybase ase后,master是唯一的默認設備.sybase建議,master設備只應該提供給系統資料庫而不是用戶資料庫.因此,對於用戶資料庫,我們應當單獨創建設備,並且把用戶設備設置成默認狀態.上一步我們已經創建了用戶設備「userdev」和「logdev」.其過程如下:
1> sp_diskdefault 『master』, 『defaultoff』 //取消master的默認設備資格
2> go
1> sp_diskdefault 『userdev』, 『default //設定uerdev為默認設備
2> go
1> sp_diskdefault 『logdev』, 『default //設定logdev為默認設備
2> go
在後面創建用戶資料庫的過程中,如果不指定資料庫設備,則該用戶資料庫理所當然地創建在默認設備.

創建資料庫:本資料庫創建在設備 userdev上,而在分開的設備(logdev)上創建資料庫日誌.
1> create database mydatabase //創建一個名為mydatabase的資料庫
2> on userdev = 「50m」 //資料庫的存儲空間為50m,資料庫設備
//是userdev,而不是master
3> log on logdev=」10m」 //日誌文件的存儲空間為10m4> go
也可以用命令 create database mydatabase 來創建用戶資料庫mydatabase,這個資料庫也會默認的創建在設備userdev上,日誌文件也創建在userdev,但不幸的的是,用戶創建的這個資料庫將只有2m的容量,恐怕這不是創建者所期望的.因此,不管是sybase還是我本人,都強烈建議使用上表的過程創建用戶資料庫,以便於這個資料庫可以滿足真實的應用場景.創建完資料庫后,我們很想知道創建的這個資料庫到底是怎麼一個狀況?通過系統存儲過程-sp_helpdb來獲得資料庫的各種信息.下面是我的某個sybase伺服器的範例:


1> sp_helpdb
2> go
name db_size owner dbid
created
status
------------------------ ------------- ------------------------ ------
------------------
------------------------------------------------------------------------------------------------------
master 12.0 mb sa 1
jun 28, 2005
mixed log and data
model 4.0 mb sa 3
jun 28, 2005
mixed log and data
myfirstdatabase 110.0 mb sa 4
jul 08, 2005
no opti set
secdatadb 98.0 mb sa 5
jul 08, 2005
no opti set
sybsystemdb 4.0 mb sa 31513
jun 28, 2005
mixed log and data
sybsystemprocs 120.0 mb sa 31514
jun 28, 2005
trunc log on chkpt, mixed log and data
tempdb 4.0 mb sa 2
aug 13, 2005
select into/bulkcopy/pllsort, trunc log on chkpt, mixed log and data

(1 row affected)
(return status = 0)
1>
在創建用戶資料庫時,應該預留足夠大的空間,以便能夠保留將來輸入的所有數據.但是也不要把資料庫定義得太大,以免在將來恢複數據時產生麻煩.究竟需要定義多大的空間才算合適,這需要資料庫管理員多次試驗才可以決定的.一個經驗是-低估一個資料庫的大小比高估要好,如果資料庫空間太小了,可以很容易的擴充資料庫的空間,如果空間過大,則非常麻煩.這裡,我們來修改一下前面創建的資料庫的空間大小,過程如下:
1> alter database mydatabase
2> on userdev=」1024m」 //由50m變成1g
3> log on logdev=」50m」 //由10m變成50m4> go
二、資料庫的管理
設置資料庫管理員密碼:在安裝完sybase ase資料庫后,資料庫管理員的默認管理員密碼為空,基於安全考慮,為資料庫管理員賬號設置密碼.先以賬號sybase登錄系統,然後啟動sybase資料庫,用isql連接資料庫伺服器(操作過程如前面「創建資料庫設備」一節),接著執行下面的操作:


1> sp_password null , dr5623h //設置新密碼為「dr5623h」2> go
在退出資料庫,下一次客戶端連接資料庫時,提示用戶輸入密碼.

用戶和授權:sybase ase伺服器提供一種嚴密的體系來保障數據的安全,並且使數據的保護級別達到非常精細的程度.在通常情況下,資料庫伺服器不是只給一個用戶sa來使用,為了讓資料庫滿足實際需求,需要在 sybase 資料庫里添加賬號/用戶,為添加的用戶分配適合的許可權.這個操作分以下幾步進行:
1、 添加資料庫系統的註冊賬號.執行存儲過程sp_addlogin來完成資料庫註冊賬號的添加,如 exec sp_addlogin sery , d7#w6g , mydatabase 表示添加一個註冊賬號sery,密碼是「d7#w6g」,登錄到默認資料庫為「mydatabase」.這個操作執行完畢后,將在master資料庫的syslogins表中增加一行紀錄.添加資料庫系統註冊賬號屬於伺服器級的安全,換句話說就是這個賬號只能連接資料庫伺服器,但沒有訪問用戶資料庫的權力.
2、 添加資料庫用戶.執行存儲過程sp_adduser將用戶直接添加到資料庫,添加資料庫用戶屬於資料庫級的安全,這時才可以以用戶的身份訪問用戶資料庫.這個操作執行完畢后,將在允許訪問的資料庫的sysusers表中添加紀錄.
3、 授權.能夠訪問資料庫但並不意味可以訪問其中的數據,有時需要具備單個資料庫對象的相應許可,才可以選取、更改資料庫所屬表中的數據信息或執行一個存儲過程.這是屬於對象訪問級的安全.授權的格式為: grant <許可權列表> on <表名> to <角色/用戶>.這個操作執行完畢后,會向sysprotects表中添加紀錄.
接著,我們通過下面的事例來總結這3個步驟:
[sybase@sybase sybase]$ cd ase-12_5/install
[sybase@sybase install]$ ./startserver //啟動sybase伺服器


[sybase@sybase sybase]$ cd /ocs-12_5/bin
[sybase@sybase bin]$ ./isql ╟u sa ╟s sybase ╟p dr5623h
1> sp_addlogin sery , d7#w6g , mydatabase
2> go
1> use mydatabase
2> go
1> sp_adduser sery
2> go
1> grant select ,insert, update on custom to sery
2> go
1> shutdown2> go
[sybase@sybase bin]$ ./isql ╟u sery ╟s sybase ╟p d7#w6g //以用戶sery登錄數
//據庫mydatabase
1>
為了便於維護和管理資料庫,最好讓註冊名和資料庫用戶名使用相同的名稱.另外,註冊用戶的刪除、資料庫用戶的刪除以及授權的刪除都是比較簡單的了,請參照下面的操作:
1> revoke select ,insert, update on custom from sery
2> go
1> sp_dropuser sery
2> go
1> sp_droplogin sery2> go
需要注意的是,上述操作除用戶sery登錄資料庫外,都是在sa下完成的.

三、備份和恢復
災難的發生是不可預料的,作為資料庫管理員,可以通過備份數據來抵禦這些風險.創建備份和還原計劃可能需要大量的時間和精力,但這是值得的,否則一旦災難發生,後果真的不堪設想.因此定期備份資料庫是一個重要的任務,也是一個極好的習慣.

備份的策略和類型:一天備份一次資料庫和備份多次事務日誌是個值得推薦的選擇,實際上,很多系統管理員也是這樣執行的.資料庫備份是完全備份,而事務日誌的備份是增量備份,在做一個恢復備份計劃時,將完全備份和增量備份結合起來是十分必要的.

備份:在ase10以前的版本,備份是由資料庫伺服器直接執行,這會對導致大量的系統資源爭用而引起伺服器處理性能下降.備份伺服器是伺服器上的一個單獨open server應用程序,該程序可以直接訪問資料庫設備,在資料庫伺服器運行一個備份伺服器 backup server,定會帶來很多額外的好處.所幸的是我們在安裝 sybase ase 12_5時已經把備份伺服器默認安裝好了,這裡只需要啟用它(.以sybase用戶登陸系統,執行命令 #/opt/sybase/ase-12_5/install/startserver ╟r run_sybase_backup啟動sybase備份伺服器).


備份的過程還是有點繁複,我們還是分步驟來進行吧!
1、創建備份存儲設備.為安全起見,最好把資料庫備份到另外的磁碟,為此,準備一個大的硬碟,分好區后(一個分區)把它掛接到文件系統,再進行創建設備的操作.當然sybase也支持直接使用原始設備.
[sybase@root /]# mkdir ╟p /sybbackup
[sybase@root /]# chown sybase.sybase /sybbackup
[sybase@root /]# mount /dev/sdc1 /sybbackup //掛接新的硬碟分區到///sybbackup
[sybase@root /]# su sybase
[sybase@sybase sybase]$ cd /sybbackup
[sybase@sybase sybbackup]$ touch bk_mydatabase.dat
[sybase@sybase sybbackup]$ touch bk_log.dat

[sybase@sybase sybase]$ cd ase-12_5/install
[sybase@sybase install]$ ./startserver //啟動sybase伺服器
[sybase@sybase sybase]$ cd /ocs-12_5/bin
[sybase@sybase bin]$ ./isql ╟u sa ╟s sybase ╟p dr5623h
1>sp_addumpdevice 『disk』,『bk_mydatabase』,『/sybbackup/bk_sybbackup.dat』
1> go //創建備份設備bk_mydatabase
1> sp_addumpdevice 『disk』 , 『bk_log』 , 『/sybbackup/bk_log.dat』
2> go //日誌文件的存儲位置
2、備份資料庫.使用dump database 命令備份資料庫數據.
1> dump database mydatabase to 『bk_mydatabase』 with init2> go
3、 備份事務日誌.使用命令dump transaction.
1> dump transaction mydatabase to 『bk_log』2> go
如果有多個資料庫,則需要多次執行備份資料庫和備份事務日誌操作.備份完成後,非常有必要對備份數據進行驗證,如果不這樣做將可能發生可怕的後果.筆者在此建議把備份文件多做幾份拷貝,放置在不同的地理位置,就算某天失火把伺服器和備份燒毀了也可起死回生.

資料庫恢復:可能需要經常備份資料庫和事務日誌,但不必經常進行資料庫恢復操作.只有在資料庫發生意外、資料庫移植、試驗等情況下才需要進行恢復操作.與備份相對應,恢復也可分幾步進行.需要注意的是,在資料庫恢復期間,不要讓用戶連接資料庫.


1、 創建資料庫.與要恢復的資料庫同名,如果是原資料庫損壞,需要先把資料庫刪除,然後再創建同名資料庫.
2、 恢復資料庫.使用命令load database命令來恢復資料庫.
1> load database mydatabase from 『bk_mydatabase』2> go
3、 恢復事務日誌.使用命令load transacti
1> load transaction mydatabase from 『bk_log』
2> go
4、 聯機資料庫.事務日誌裝載完畢之後,才可以使資料庫成為聯機狀態.
1> database mydatabase2> go




2005-9-21 於北京通州





[火星人 ] Sybase Ase 12.5 for Linux 的使用已經有612次圍觀

http://coctec.com/docs/linux/show-post-53842.html