Sybase学习笔记(8)

2019-03-06 07:33

SYBASE学习笔记

(2) 用isql登录到SQL Server, 须用sa帐号 (本文以pubs2数据库为例) 1>sp_configure \ 2>go

1>begin tran 2>go

1> use master 2> go

1>update sysdatabases 2>set status = -32768 3>Where name=\ 4>go

如果得到(1 row affected),则 1>commit 2>go 否则

1>rollback 2>go

(3)这时重新启动SQL Server, 使用bcp工具将该数据库(本例中为pubs2)内的全部数据导出备份(这一步很重要!)

(4)以sa帐号登录到SQL Server,执行下面操作: 1>dump tran pubs2 with no_log 2>go

1>begin tran 2>go

1> use master 2> go

1>update sysdatabases 2>set status=0

3>Where name=\ 4>go

如果得到(1 row affected),则 1>commit 2>go 否则

1>rollback 2>go

1>sp_configure \ 2>go

(5) 重新启动server

(6) 如果你的数据库原来有dboption(例如\等), 你需要重新设置这些option..

(7) 当数据库已经恢复可使用状态后,运行dbcc命令检查数据库的一致性(参照\如何检查数据库中数据一致性\文章) (8) 后备用户数据库

北京易初电子技术有限公司软件中心 2005-01

- 36 -

SYBASE学习笔记

例如:

1>dump database pubs2 to \ 2>go

如何删除坏的用户数据库?

http://www.sybase.com.cn/cn/content/support/exp_jszc_ase_zj_00004.htm (以pubs2为例)

当使用drop database无法删除数据库时,使用本文所示方法可以删除。 (1)使用isql以sa注册SQL server (2)设置允许修改系统表

1>sp_configure \2>go

(3)把 要删除的用户数据库置为\状态 1>use master 2>go

1>begin tran 2>go

1>update sysdatabases set status=256 2>where name=\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 \2>go

(7)结束

如何查找数据库启动失败原因

在实际环境中,数据库Server无法启动的原因很多,本文仅列出了几种常见的情况,供您参考。

首先,应检查Server的日志文件。不同版本缺省的日志文件如下(其中

北京易初电子技术有限公司软件中心 2005-01

- 37 -

SYBASE学习笔记

为Sybase Server的名称: UNIX:

11.0*: $SYBASE/install/errorlog

11.5* 或 11.9*: $SYBASE/install/.log 12.0*: $SYBASE_ASE/install/.log NT:

11.0* 11.5* 或 11.9*: $SYBASE\\install\\errorlog 12.0*: $SYBASE\\ASE-12_0\\install\\errorlog CASE 1:

basis_dlock: file '/sybase/master.dat' already in use by a SQL Server kernel kdconfig: unable to read primary master device kernel kiconfig: read of config block failed

检查server是否已经启动( showserver, ps -u sybase 或NT service ) CASE 2:

dopen: open '/sybase/master.dat' failed, permission denied kernel kdconfig: unable to read primary master device kernel kiconfig: read of config block failed

检查master设备文件的所有者及权限 CASE 3:

ninit: All master network listeners have failed. Shutting down

检查network ip 及 port配置 ( netstat -a ) CASE 4:

kernel:kscsinit: connectivity library error. Operation: cs_ctx_alloc(). 检查操作系统参数是否已经修改并重新启动操作系统 (参见安装手册)

若操作系统异常宕机,ASE未启动而$SYBASE/.krg已经存在, 删除该文件

日常数据库备份

http://www.sybase.com.cn/cn/content/support/exp_jszc_ase_cj_00011.htm

SYBASE 数据库的备份主要是通过 dump 命令来实现的, 分为数据库备份和日志备份。 简单语法格式如下:

dump database database_name to device_name dump transaction database_name to device_name

如果使用磁带设备做备份, 还要使用capacity、int选项。

应该多长时间备份一次数据库呢? 这决定于发生系统故障时( 例如磁盘故障 ) 应用系统允许丢失多长时间的数据。 如果允许丢失一个小时的数据, 那么可以考虑每天至少备份一次数据库, 并每个小时至少备份一次日志。

备份数据库之前, 应对数据库做 dbcc 检查, 确保备份的数据库是完好的数据库。如果数据库有损坏, 备份时可能不会报错, 但将来可能无法装载(load)。

通常情况下, 只有发生严重故障需要恢复时才进行装载数据库, 但是 SYBASE 建议偶尔对备份的数据库装载到一个测试环境上, 以保证备份工作过程正常并熟悉备份和装载工

北京易初电子技术有限公司软件中心 2005-01

- 38 -

SYBASE学习笔记

作过程。

Master 数据库的备份也不能忽略。每次master 数据库的内容有变动时, 应及时备份 master 数据库, 例如增加 login, 增加设备, 增加用户数据库等。

用户可根据自己的应用制定可行的备份方案。 详细的命令语法及备份方案的详细建议均可在 SYBASE 手册中查到。

举例:Unix平台后备pubs2数据库 启动ASE和BACKUP SERVER isql -Usa -Pxxxxxx -SSYBASE

dump database pubs2 to \go

dump transaction pubs2 to \capacity=1500000,file=\with init(capacity取值为磁带容量的70%左右) go

如何恢复master数据库

http://www.sybase.com.cn/cn/content/support/exp_jszc_ase_gj_00009.htm 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的内容。 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

北京易初电子技术有限公司软件中心 2005-01

- 39 -

SYBASE学习笔记

$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、重启ASE

11、执行installmaster脚本

$isql -Usa -P < $SYBASE/scripts/installmaster

如何做Rebuild Master

http://www.sybase.com.cn/cn/content/support/exp_jszc_ase_gj_00005.htm (没有后备master库,而使用命令disk reinit,disk refit) 提示1:

如果有可能,在执行这个任务之前,请先做操作系统级SYBASE DEVICES的后备。UNIX操作系统可使用命令\。因为如果disk reinit使用了错误的信息,那么,在执行了disk refit之后就会产生无法弥补的错误。倘若,存在一个SYBASE DEVICES的后备文件,将会给我们一个弥补的机会。例如:当disk reinit 使用了过小的size值,我们还可以重新恢复SYBASE DEVICES文件,重新做disk reint、disk refit。 提示2:

在使用disk reinit命令时,将覆盖SYBASE DEVICE(请参照以下语法),安全的做法是size值使用裸分区或系统文件的大小的最大值。如果使用的是UNIX裸分区,即使你不能确认SYBASE DEVICE最初大小是不是最大值,都要使用裸分区大小的最大值。 步骤:

1. 获得将要被恢复的SYBASE DEVICE的信息。

? 这些信息被用来重建sysdevices,sysusages以及sysdatabases。

? 从error log的server启动信息中获得SYBASE DEVICE的设备名、指定路径。 ? 使用裸分区或系统文件的大小的最大值作为SYBASE DEVICE的大小。 ? 以上信息也可以通过最近的sysdevices系统表的内容来获得。如果对此信息怀有疑

问,还是使用以上的方法比较稳妥。

2. 做操作系统级的SYBASE DEVICE后备。UNIX操作系统,使用\命令实现。 3. 配置一个新的ASE Server。在以后的步骤中会用到这个新的master。 4. 如果需要,请再配置一个Backup Server。 5. 用单用户模式启动Server。

6. 运行disk reinit,用来重建sysdevices系统表,而没有重新初始化SYBASE DEVICE。

语法如下: disk reinit

name=\

physname=\vdevno=virtual_device_number, size=number_of_blocks

完成后,请查看error log。

7. 确认重建的sysdevices系统表中信息正确:

——select * from sysdevices

比较表中的信息是否与error log或者保留的sysdevices中的信息相同。

北京易初电子技术有限公司软件中心 2005-01

- 40 -


Sybase学习笔记(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:名词解释+大题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: