程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> SYBASE 使用技巧集錦 FAQ(一)

SYBASE 使用技巧集錦 FAQ(一)

編輯:SyBase綜合文章
Q.如何解決數據庫被標記為"suspect"的問題之一( 一般解決方案)?
A.現象:Error 926
 Severity Level 14
 Error Message Text
 Database 'xx' cannot be opened - it has been marked SUSPECT by recover Explanation
(1) 當你使用Transact_SQL命令操作這個數據庫的數據時, 出現這個信息, 這是一個嚴重的錯誤, 如果
你要使用這個數據庫的數據, 必須改正這個錯誤.  
(2) 啟動Backup Server, 後備master數據庫
1>dump database master to "/usr/Sybase/master_dump.19991201"
2>go
(3) 用isql登錄到SQL Server, 須用sa帳號 (本文以pubs2數據庫為例)
1>sp_configure "allow updates", 1
2>go
1>begin tran
2>go
1>update master..sysdatabases
2>set status = -32768
3>Where name="pubs2"
4>go
如果得到(1 row affected),則
1>commit
2>go
  否則
1>rollback
2>go
(4.1)如果條件允許,bcp out用戶數據或dump用戶數據庫
(5.1)這時重新啟動SQL Server, 再有sa帳號注冊到SQL Server.
1>begin tran
2>go
1>update master..sysdatabases
2>set status=0
3>Where name="pubs2"
4>go
如果得到(1 row affected),則
1>commit
2>go
否則
1>rollback
2>go
1>sp_configure "allow updates" ,0
2>go
(4) 如果你的數據庫原來有dboption(例如"select into","trunc log on chkpt"等), 你需要重新設置
這些option..
(5) 運行dbcc命令檢查數據庫的一致性
isql -Usa -P -i dbcc.sql -o dbcc.out
dbcc.sql文件示例:
dbcc checkdb("pubs2")
go
dbcc checkalloc("pubs2")
go
dbcc checkcatalog("pubs2")
go
grep Msg dbcc.out
6) 後備用戶數據庫
1>dump database pubs2 on "/usr/Sybase/pubs2_dump.19991201"
2>go
Q.如何解決數據庫被標記為"suspect"的問題之二( 數據庫設備損壞時的解決方案 )?
A.現象: 926錯誤產生的原因有幾種。本文討論當數據庫設備初始化失敗( 設備文件丟失或文件讀寫權限
不正確 )時,導致數據庫恢復失敗,出現926錯誤的情況。
(1) 請先恢復數據庫設備及讀寫權限。
(2) 啟動Backup Server, 後備master數據庫
1>dump database master to "/usr/Sybase/master_dump.19991201"
2>go
3) 用isql登錄到SQL Server, 須用sa帳號 (本文以pubs2數據庫為例)
1>sp_configure "allow updates", 1
2>go
1>begin tran
2>go
1>update master..sysdatabases
2>set status = status - 256
3>Where name="pubs2"
4>go
如果得到(1 row affected),則
1>commit
2>go
否則
1>rollback
2>go
(4) 重新啟動SQL Server, 運行dbcc命令檢查數據庫的一致性編輯生成dbcc.sql文件:
dbcc checkdb("pubs2")
go
dbcc checkalloc("pubs2")
go
dbcc checkcatalog("pubs2")
go
isql -Usa -P -i dbcc.sql -o dbcc.out
grep Msg dbcc.out
(5) 後備用戶數據庫
1>dump database pubs2 on "/usr/Sybase/pubs2_dump.19991201"
2>go
Q.如何解決ASE11.5裝載或備份數據庫報3230的錯誤?
A.用sp_dropdevice或
Sybase central刪除邏輯設備後,不重啟服務器,不回收虛擬設備號,重用它建立
設備,新建數據庫。這時dump&load數據庫會出3230錯誤。這是ASE11.5的BUG,過去不重新啟動服務器,
老的虛擬設備號不能使用,現在服務器不提示錯誤。但dump&load數據庫會出現3230錯誤。
解決辦法是重啟服務器,3230錯便會消失。
Q.如何刪除壞的用戶數據庫?(以pubs2為例)
A.當使用drop database無法刪除數據庫時,使用本文所示方法可以刪除。
(1)使用isql以sa注冊SQL Server
(2)設置允許修改系統表
1>sp_configure "allow updates",1
2>go
(3)把 要刪除的用戶數據庫置為"suspect"狀態
1>use master
2>go
1>begin tran
2>go
1>update sysdatabases set status=256
2>where name="pubs2"
3>go
如果得到(1 row affected),則
1>commit
2>go
否則
1>rollback
2>go
(4)重啟server,並用isql以sa注冊。
(5)刪除數據庫
1>dbcc dbrepair(pubs2,dropdb)
2>go
(6)恢復允許修改系統表
1>sp_configure "allow updates",0
2>go
(7)結束
Q.如何修改IP地址改變後的interfaces文件?
A.安裝Sybase Adapive Server的機器IP地址改變後, 應修改 interfaces 文件及有關的設置。
如果 interfaces 文件中使用的是機器名而不是 IP 地址, 則不需要變動。 但如果客戶端聯結服務器使
用的是服務器的 IP 地址而不是機器名,那麼客戶端需修改聯結服務器的 IP 地址.。
如果 interfaces 文件中使用的是 IP 地址, 那麼需要修改 interfaces 文件中和地址有關的部分,
可使用dscp 或 dsedit 進行修改。 如果客戶端聯結服務器使用的是服務器的地址而不是機器名,那麼客
戶端也需修改。
Q.如何檢查數據庫中數據的一致性?
A.數據庫一致性檢查(dbcc)提供了一些命令用於檢查數據庫的邏輯和物理一致性。Dbcc主要有兩個功能:
使用checkstorage 或 checktable 及 checkdb 在頁一級和行一級檢查頁鏈及數據指針。
使用checkstorage, checkalloc, 或 checkverify, tablealloc, 及indexalloc 檢查頁分配。
在下列情況中需要使用 dbcc 命令:
作為數據庫日常維護工作的一部分, 數據庫內部結構的完整性決定於sa 或dbo 定期地運行 dbcc 檢查。
在系統報錯以後, 確定數據庫是否有損壞。
在備份數據庫之前, 確保備份的完整性。
如果懷疑數據庫有損壞時, 例如, 使用某個表時報出表損壞的信息, 可以使用 dbcc 確定數據庫中其他
表是否也有損壞。
下面是dbcc的簡單用法:
dbcc checktable (table_name)
檢查指定的表, 檢查索引和數據頁是否正確鏈接, 索引是否正確排序, 所有指針是否一致, 每頁的數據
信息是否合理, 頁偏移是否合理。
dbcc checkdb (database_name)
對指定數據庫的所有表做和checktable 一樣的檢查。
dbcc checkalloc (database_name,fix|nofix)
檢查指定數據庫, 是否所有頁面被正確分配, 是否被分配的頁面沒被使用。當使用"fix"選項時,
在檢查數據庫的同時會自動修復有問題的頁面。(若數據庫數據量很大,則該過程會持續很長時間。)
dbcc tablealloc (table_name,fix|nofix)
檢查指定的表, 是否所有頁面被正確分配, 是否被分配的頁面沒被使用。是 checkalloc 的縮小版本,
對指定的表做完整性檢查。當使用"fix"選項時,在檢查數據表的同時會自動修復數據表中有問題的頁
面。
關於上述命令的其它選項及詳細使用方法和checkstorage, checkverify, indexalloc 的詳細使用方
法, 請參閱有關命令手冊。
舉例1: Unix平台檢查pubs2數據庫的一致性
單用戶模式啟動Server:
$Sybase/install startserver -f RUN_server_name -m
vi dbcc_db.sql
use master
go
sp_dboption pubs2,"single user",true
go
use pubs2
go
checkpoint
go
dbcc checkdb(pubs2)
go
dbcc checkalloc(pubs2,fix)
go
dbcc checkcatalog(pubs2)
go
use master
go
sp_dboption pubs2,"single user",false
go
use pubs2
go
checkpoint
go
quit
go
isql -Usa -Pxxxxxx -SSybase dbcc_db.out
grep Msg dbcc_db.out
舉例2: Unix平台檢查pubs2數據庫中titles表的一致性
vi dbcc_table.sql
use pubs2
go
dbcc checktable(titles)
go
dbcc tablealloc(titles)
go
isql -Usa -Pxxxxxx -SSybase   dbcc_table.out
grep Msg dbcc_table.out
Q.如何在Windows NT上手動卸載Sybase Server ?
A.關閉 Adaptive Server.
將Adaptive Server在Windows NT Services中由自動改為手動
重新啟動 Windows NT server
運行sybedt32修改注冊表, 刪除以下內容:
\HKEY_LOCAL_MacHINESOFTWARESybaseServer
\HKEY_LOCAL_MacHINESOFTWARESybaseServer_BS
\HKEY_LOCAL_MacHINESOFTWARESybaseServer_HS
\HKEY_LOCAL_MacHINESOFTWARESybaseServer_MS
到注冊表的如下結構下:
\HKEY_LOCAL_MacHINESYSTEMCurrentControlSetControlSession ManagerEnvironment
刪除DSLISTEN, DSQUERY, SYBASE, 並修改 LIB, INCLUDE, PATH刪除Sybase有關目錄
刪除如下注冊鍵值:
\HKEY_LOCAL_MacHINESYSTEMCurrentControlSetServices
SYBSQL_
SYBXPS__XP
SYBBCK__BS
SYBMON__MS
SYBHIS__HS
重新啟動 Windows NT server
使用 Start | Control Panel | Settings | Services 確認Sybase已經卸載
刪除Sybase Server所用數據庫設備文件及Sybase系統文件   
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved