打印本文 打印本文 关闭窗口 关闭窗口
SYBASE 使用技巧集锦 FAQ by 杨冶军(6)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数828  更新时间:2009/4/22 23:09:12  文章录入:mintao  责任编辑:mintao
Q.如何重建sybsystemprocs系统数据库?

A.依照以下步骤可以实现移动sybsystemprocs系统数据库以及设备的任务。同时这个过程也可以用来扩建
sybsystemprocs系统数据库。

以下过程中所提到的语法结构,可以参看SYBASE相关资料。

SYBASE提醒您,在修改系统表时,SQL Server要以单用户模式运行,同时要以"sa"用户登录。

. 保留驻留在sybsystemprocs系统数据库中自定义的存储过程脚本。
.单用户模式启动SQL Server,执行:
1> sp_configure "allow updates",1
2> go
1> reconfigure with override(10.0版本以上,省略此步)
2> go
.删除sybsystemprocs系统数据库:
1> use master
2> go
1> drop database sybsystemprocs
2> go
在重建sybsystemprocs系统数据库之前,不要创建任何其他数据库。
.删除sysdevices系统表中有关sybsystemprocs系统数据库的信息:
1> begin tran
2> delete from sysdevices where name="sysprocsdev"
我们假定sysprocsdev是默认的sybsystemprocs系统数据库设备名。
3> select * from sysdevices
确定删除是否正确有效,如果正确,执行:
4> commit tran
否则,执行:
4>rollback
.重启SQL Server.
.创建sybsystemprocs系统数据库设备:
1> disk init name="sysprocsdev",physname="physical_path",vdevno=4,size=25600
2> go
其中size是以页为单位(512页=1M)。
sybsystemprocs系统数据库设备的vdevno应该是4,SQL Server在单用户模式下4不能被重新利用,所以
如果以上语句执行时出现问题,请重启SQL Server。

.sybsystemprocs系统数据库:
1> create database sybsystemprocs on sysorocsdev=50
2> go
在sysdatabases系统表中,sybsystemprocs系统数据库的dbid=4,如果在重建
sybsystemprocs系统数据库之前,没有创建任何其他数据库。
.以多用户模式启动SQL Server,并执行:
1> sp_configure "allow updates",0
2> go
3> reconfigure with override(10.0版本以上,省略此步)
4> go
.运行installmaster脚本:
%isql -Usa -Psa_password -Sserver_name -n -iinstallmaster -o< output_file
installmaster脚本在$SYBASE/scripts路径下。
.重建sybsystemprocs系统数据库中的用户自定义存储过程 。



Q.如何恢复master数据库?

A.ASE can''''t setup and has no valid dump of master

1、编辑RUN_servername
在命令行最后加入:-T3607

2、单用户模式启动ASE
$cd install
$startserver -f RUN_servername -m

3、bcp out系统表
$bcp master..sysdevices out /directory.spec/devs -Usa -P -c
$bcp master..sysdatabases out /directory.spec/dbs -Usa -P -c
$bcp master..sysusages out /directory.spec/usages -Usa -P -c
$bcp master..syslogins out /directory.spec/logins -Usa -P -c
$bcp master..sysconfigures out /directory.spec/configures -Usa -P -c
$bcp master..syscharsets out /directory.spec/charsets -Usa -P -c

4、shutdownASE

5、创建新master设备
$buildmaster -d -s
(new_master_device_size以2K为单位)

6、编辑RUN_servername
将指定master设备指定为新创建的master设备,并删除在第1步中增加的参数。

7、删除/directory.spec/dbs、/directory.spec/usages文件中有关master、tempdb、model的内容。


Q.如何做 rebuild log?

A.注意:这个过程可能会引起数据的不一致性。

(1)赋予sa用户sybase_ts_role的角色
isql -Usa -P
1>sp_role "grant","sybase_ts_role",sa
2>go
1>quit

(2)将数据库置为"bypass recovery"状态
isql -Usa -P
1>sp_configure "allow updates",1
2>go
1>use master
2>go
1>update sysdatabases set status=-32768
2>where name="database_name"
3>go
1>shutdown with nowait
2>go

(3)rebuild数据库日志
isql -Usa -P
1>use master
2>go
1>dbcc rebuild_log(database_name,1,1)
2>go
1>shutdown with nowait
2>go

(4)重启SQL server
1>use master
2>go
1>update sysdatabases set status=0 where name="database_name"
2>go
1>sp_configure "allow updates",0
2>go
1>shutdown with nowait
2>go

(5)在重启SQL server之后,如果数据库恢复正常,rebuild log工作将会成功完成,否则要恢复数据库备
份,使用dump database或bcp命令。

8、单用户模式启动ASE
$cd install
$startserver -f RUN_servername -m

9、 bcp in系统表
$ bcp master..sysdevices in /directory.spec/devs -Usa -P -b 1 -c
$bcp master..sysdatabases in /directory.spec/dbs -Usa -P -b 1 -c
$bcp master..sysusages in /directory.spec/usages -Usa -P -b 1 -c
$bcp master..syslogins in /directory.spec/logins -Usa -P -b 1 -c
$bcp master..sysconfigures in /directory.spec/configures -Usa -P -b 1 -c
$bcp master..syscharsets in /directory.spec/charsets -Usa -P -b 1 -c

10、shudown ASE

11、执行installmaster脚本
$isql -Usa -P < $SYBASE/scripts/installmaster

12、启动ASE

打印本文 打印本文 关闭窗口 关闭窗口