楼主: ccwlm741212

[精华] SYBASE常见问题收集整理(希望大家一起不断更新)

[复制链接]
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
11#
 楼主| 发表于 2004-1-17 15:07 | 只看该作者
如何将SQL/ASE SERVER移植到同种平台(相同操作系统)的系统上?

A.N1 这里所列出的所有步骤,并不需要按顺序执行,只是表明了在实验中成功完成这项任务的顺序。
N2 SYBASE 提示您保留直至今日的ISQL脚本,包括建立login、create database、disk init等等。使用
这些脚本会使您完成这项任务更加容易。这些脚本也可以通过master中系统表的内容来重新生成,可能
会繁琐一些。
N3 成功的关键在于目标系统中系统表的字段与源系统中相应系统表的字段相同。特别是:syslogins与
sysdatabases中的'suid 以及 'dbid';sysusages中所有行的segmap、lstart以及size。
请在数据源系统上执行以下操作:

对所有的数据库进行数据一致性检查(DBCC),并后备所有的用户数据库。
保留master 数据库中数据表的内容,使用select * from table_name命令:
sysdevices,sysusages,sysdatabses
syslogins,sysservers,syssvrroles,sysloginroles,sysremotelogins
对于sysusages 表,请使用以下命令:
select * from sysusages order by dbid,lstart
对于sysdatabases 表,请使用以下命令:
select * from sysdatabases order by dbid
使用bcp命令拷贝(2)中所列出的系统表内容。
Unix:bcp master..table_name out file_name -Usa -Psa_password -c
Vms:bcp master..table_name out file_name /username="sa"/sa_password/char
保留sp_configure命令的执行结果
请在目标系统上执行以下操作:

安装并配置新的SQL Server和Backup Server。
确认所指定的master、tempdb、sybsystemprocs大小至少等于数据源系统上相应数据库的大小,同时确认
与数据源系统相同的语言模块以及字符集。
启动SQL Server,使之处于正常工作状态。参照数据源系统的配置(4中保留的执行结果)修改目标系统配
置与之相同,并确认'device'参数值至少等于源系统此参数值。
在model、sybsystemprocs数据库中任意执行几个动作以判断数据库工作正常。请不要添加用户、角色、修
改系统表。
重启SQL Server以测试新配置有效。
执行以下操作:
1> use master
2> go
1> sp_configure "allow updates",1
2> go
重启SQL Server。
使用bcp命令拷贝(2)中所列出的系统表内容。
Unix:bcp master..table_name in file_name -Usa -Psa_password -b 1 -c
Vms:bcp master..table_name in file_name /user="sa"/sa_password/char/batch=1
建数据库设备,大小至少等于源系统中相应数据库的大小。
运行create database和alter database的脚本(或者使用命令行)。注意create、alter顺序要与源系统
create、alter顺序一致,并使用与之相同的参数。完成后请对比源系统与目标系统中的sysdatabases、
sysusages,使之完全相同,否则要重新做12这步工作。(请参照N3提示)注意:
在10.0以及更高版本中segmap字段在做了数据库load之后会被修改。
在确定需要相同的dbid时,则要采用与在源系统中create、alter相同的顺序,在目标系统中做create、
alter,并且使用相同的参数值。而这种需求仅仅是当数据库中某些objects要参考不同的数据库中的
objects才会采用的。另外,这种需求只有在每一个数据库中都被采用,完成的结果才会使得sysusages表
中的segment、lastart、size字段,或者是fragment与源系统中数值相同。运行以下命令,与原系统的输
出进行比较:
select * from sysusages order by lstart
load用户数据库并执行dbcc检测。
执行以下操作:
1> sp_configure "allow updates",0
2> go
重启SQL Server。
后备master库以及用户数据库。

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
12#
 楼主| 发表于 2004-1-17 15:07 | 只看该作者
如何做Rebuild Master(没有后备master库,而使用命令disk reinit,disk refit)?

A.提示1:

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

提示2:

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

步骤:

.获得将要被恢复的SYBASE DEVICE的信息。
这些信息被用来重建sysdevices,sysusages以及sysdatabases。
    .从error log的server启动信息中获得SYBASE DEVICE的设备名、指定路径。
    .使用裸分区或系统文件的大小的最大值作为SYBASE DEVICE的
大小。
   .以上信息也可以通过最近的sysdevices系统表的内容来获得。如果
对此信息怀有疑问,还是使用以上的方法比较稳妥。
.做操作系统级的SYBASE DEVICE后备。UNIX操作系统,使用"dd"命令实现。
.配置一个新的ASE Server。在以后的步骤中会用到这个新的master。
.如果需要,请再配置一个Backup Server。
.用单用户模式启动Server。
.运行disk reinit,用来重建sysdevices系统表,而没有重新初始化SYBASE DEVICE。
语法如下:
disk reinit
name="device_name",
physname="physical_name",
vdevno=virtual_device_number,
size=number_of_blocks
完成后,请查看error log。
.确认重建的sysdevices系统表中信息正确:
——select * from sysdevices
比较表中的信息是否与error log或者保留的sysdevices中的信息相同。
.运行disk refit,用来重建sysdevices以及sysdatabases。
用法如下:
use master
go
disk refit
go
查看error log中是否有错误提示。
.当disk refit完成后,会自动shut down ASE Server。
.确认重建的系统表的信息是否正确:
——单用户模式启动ASE Server
——select * from sysusages、select * from sysdatabases
——sysusages系统表看起来是否正确?可以和以前保留的的信息进行比较。如果没有这种可能,那么应该
保证不出现显而易见的错误。例如:是否缺少dbid;是否缺行;是否对于一个数据库来说只有segmap=4(表
示为日志行)的行等等。
——sysdatabases系统表看起来是否正确?是不是没有显而易见的错误?
11、 启动ASE Server,查看是否所有的数据库都已经正常恢复。
.对所有的库做dbcc检查。
.对所有库做后备。

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
13#
 楼主| 发表于 2004-1-17 15:07 | 只看该作者
如何移植master设备?

A.以下步骤说明了如何将master设备移植到不同的磁盘上。请注意,在执行buildmaster之前,要停止SQL
Server的应用。

成功的关键在于,新建的sysusages系统表中每一行内容与旧的sysusages系统表内容相符。

.对master库做dbcc检查,并后备master库。
.执行select * from table_name命令,并保留其输出内容。其中,table_name包括:sysdevices、
sysusages、sysdatabases。同样,可以使用bcp命令来实现。
.执行sp_configure命令,并保留其输出内容。
.拷贝$SYBASE/server_name.cfg文件,以做保留。
.Shut down SQL/ASE Server。
.执行以下命令,创建一个新的master设备:
    UNIX:buildmaster -d -ssize
    VMS:buildmaster /disk= /size=size    (size以页为单位,1页=2K)
.编辑RUN_server_name文件,-d(UNIX)或/device(VMS)参数指向新建的设备名。
.单用户模式启动SQL/ASE Server:
    UNIX:startserver -f RUN_sever_name -m
    VMS:startserver /server=server_name /masterrecover
.执行select * from sysdevices命令,并保留其输出内容。
.确认新建的sysusages系统表中每一行内容与旧的sysusages系统表内容相符,而且在配置好Server之后,
没有做过alter database,那么系统表sysusages的内容是正确的。如果做过alter database,则要按原来
的顺序执行这    些脚本,如果没有脚本,就要到保存的sysusages系统表的信息中找到alter database
的参数。
.Shutdown SQL/ASE Server,并用单用户模式启动Server,查看sysusages系统表内容是否正确。
.如果所配置的Backup Server名称不是SYB_BACKUP,则要执行:
1> sp_configure "allow updates",1
2> go
1> update sysservers set srvnetname="name in interfaces file"
   where srvname="SYB_BACKUP"
2> go
.装载master库。如果新master设备的大小与旧设备大小不同,则Server会Shut down。请注意新的系统表
将会被重写,而且你需要调整Sysdevices系统表中master设备的大小。请执行以下两步:
.用单用户模式启动Server.
.如果新设备大小与旧设备大小不同,请执行:
1> sp_configure "allow updates",1
2> go
1> update sysdevices set high=nnnn where name="master"
2> go
  其中nnnn是以页(2K)为单位的master设备的大小,此值可以从保留的sysdevices系统表的信息中找到。
如果 所建的设备比旧设备大,请执行:
1)创建一个与master设备差不多大的数据库,这样做的目的是重新初始化分 配页,使得整个master设备
可用。
2)删除这个数据库。
.重启Server。
.后备master数据库。
注意:

.在装载master库之前要确定SQL Server此时的字符集和语言模块与后备master库时的字符集和语言模块相同。
.在执行此任务之前和完成以后使用sp_helpsort查看字符集与语言模块是否相同。

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
14#
 楼主| 发表于 2004-1-17 15:07 | 只看该作者
如何重建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系统数据库中的用户自定义存储过程 。

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
15#
 楼主| 发表于 2004-1-17 15:07 | 只看该作者
如何恢复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

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
16#
 楼主| 发表于 2004-1-17 15:11 | 只看该作者
ASE数据库分布式事务管理手册

dtm.zip

387.55 KB, 下载次数: 908

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
17#
 楼主| 发表于 2004-1-17 15:12 | 只看该作者
介绍 Transact - SQL的构件

blocks_tsql.zip

1.06 MB, 下载次数: 828

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
18#
 楼主| 发表于 2004-1-17 15:13 | 只看该作者
ASE中对Java 的支持

jcs-kona.zip

748.31 KB, 下载次数: 542

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
19#
 楼主| 发表于 2004-1-17 15:14 | 只看该作者
ASE系统表和索引介绍

ref.tables.index.zip

829.96 KB, 下载次数: 783

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
20#
 楼主| 发表于 2004-1-17 15:15 | 只看该作者
 ASE中系统过程和存储过程

sprocref.zip

1.62 MB, 下载次数: 804

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表