存档

2009年11月18日 的存档,文章数:8

SQL SERVER DBCC命令解释 —————————————— –1 dbcc trraceon DBCC TRACEOFF –对于数据库死锁,通常可以通过TRACE FLAG 1204、1205、1206,检查ERRORLOG里面的输出,和分析SQLTRACE的执行上下文判断死锁问题的来由。 –TRACEON函数的第三个参数设置为-1,表示不单单针对当前connection, –而是针对所有包括未来建立的connection。这样,才够完全,否则只是监视当前已经建立的数据库连接了。 –执行下面的话可以把死锁记录到Errorlog中: dbcc traceon (1204, 3605, -1) go dbcc tracestatus(-1) go –说明: –260:打印关于扩展存储过程动态链接库的版本信息 –444:停止auto-parameterization –1200:输出锁信息 –1204:传回参与死锁的SQL SERVER相关程序之运行数据 –1211:停止lock escalation(锁升级) –1252:显示动态选择锁的相关信息 –2528:通过 DBCC CHECKDB、DBCC CHECKFILEGROUP 和 DBCC CHECKTABLE 禁用对象的并行检查。 –默认情况下,并行度由查询处理器自动确定。最大并行度的配置方式与并行查询相同。 –有关更多信息,请参见 max degree of parallelism 选项。 — 通常情况下,应将并行 DBCC 保留为启用状态。执行 DBCC CHECKDB 时, [...]

将Sybase临时数据库tempdb从master设备上移走的两种方法: 缺省情况下,tempdb数据库是放置在master 设备上,容量为2M,而临时数据库是活动最为平凡的数据库常常被用来排序、创建临时表、重格式化等操作,所以tempdb的优化应该受到特别的关注。本篇文章目的在于使你掌握临时数据库的优化策略以及临时表的优化使用。本文中,你将以调整临时库的位置开始,有步骤的完成临时数据库的优化,并在此过程中了解到优化临时数据库和临时表的一些方法和规则。 实验环境的要求:你应具有系统管理员的权限,系统中有auths和article表。 步骤: 第一步:调整临时库的位置   tempdb数据库缺省放在master设备上,将临时数据库发在分离的设备上是更可取的。 1) 初始化一个用来存放临时数据库的设备 disk init name=”tempdb_dev”, physname=”d:\sybase\example\tempdb.dat”, vdevno=13, size=15360 (注意:如果将tempdb数据库放在多个设备上,需初始化多个数据库设备) 2)将临时数据库扩展到该一个设备上 alter database tempdb on tempdb_dev=30 3)打开tempdb数据库,从段上删除master设备 sp_dropsegment “default”,tempdb,master sp_dropsegment logsegment,tempdb,master 4)发出如下命令,检查default段中是否不再包含master设备 select dbid,name,segmap from sysusages,sysdevices where sysdevices.low<=syusages.size+vstart and sysdevices.high>=sysusages.size+vstart-1 and dbid=2 and(status=2 or status=3) 说明:若将临时数据库放在多个磁盘设备上,可以更好的利用并行查询特性来提高查询性能。 第二步:将临时数据库与高速缓冲进行绑定。   由于临时表的创建、使用,临时数据库会频繁地使用数据缓存,所以应为临时数据库创建高速缓存,从而可以使其常驻内存并有助于分散I/O: 1、创建命名高速缓存 sp_cacheconfig “tempdb_cache”,”10m”,”mixed” 2、重新启动server 3、捆绑临时数据库到tempdb_cache高速缓存 sp_bindcache “tempdb_cache”, tempdb 4、若有大的I/O,配置内存池 第三步:优化临时表 大多数临时表的使用是简单的,很少需要优化。但需要对临时表进行复杂的访问则 [...]

今天下午一直在研究master设备的内部数据结构,视图通过编写程序向master设备文件后面追加数据来达到增加master设备大小的目的。在 sybase中初始化一块设备就是向操作系统中的文件系统请求一块空间,并且sybase对这块空间进行了一定的分配初始化。要是能够手动向master 设备尾部追加初始化的分配信息数据就可以物理得增加master设备的大小。然后,在 sysdatabases,sysdevices,sysusages表中修改相应的信息。 如果手动扩展master设备大小能够实现的话,个人感觉这种个方法可行! ———————————————————————————————————— ——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载; ——— 转载务必注明原始出处 : http://www.dbainfo.net ——— 关键字: ASE master 空间 扩展 手动 ————————————————————————————————————

sybase的syslogs(id=8)表中仅有两个字段:xactid:事务ID和op:更新操作的次数(sybase中文文档中的翻译)! 我觉得op应该理解为日志操作的类型。每个OP代表什么含义呢?常用的日志类型有:更新、插入、删除,对应的OP分别为:9,4,5。 下面列出OP值及其对象的操作类型。 Values:meanings 0: Transaction begin   4: Data page insert   5: Data page delete   6: Indirect insert (from deferred insert/update)   7: Index page insert   8: Index page delete   9: Direct replace/update   10: No Op (skipped in recovery)   11: Logged in first phase of deferred insert/update   [...]

ASE12.5.0.3新功能 一、性能监测系统表 一组新的系统性能监测系统表,利用这些系统表中的信息对分析ASE服务器的性能非常方便。这些性能监测系统表也是DB-XRAY的工作基础。 MDA表,安装配置文档中都有。这个很有用的。 二、多个临时库 能够让你在系统临 数据库tempdb外创建用户临时数据库。使用多个临时数据库的主要目的是减轻对系统临时数据库中系统表和日志表的争用。 三、外部文件系统 能够让你通过SQL语言访问外部文件系统,通过创建代理表将数据表映射到外部文件系统的文件目录或文件。 访问文件目录 访问文件 这个要licenses 四、Java和XML在DB中的应用 Adaptive Server内部提供了一个Java运行环境,这样就可在ASE中运行java代码。数据库服务器ASE就提供了一个新的方法来管理和存储数据及应用逻辑。 在ASE中可用下面三种方法使用java功能: 将java类用作SQL数据类型 在数据库中调用java方法 在数据库中存储和查询XML 五、新增强的功能和新函数 disk resize sampling : update statistics 可变页大小 large column size migrate utility ALS(asynchronous log service) 服务器动态参数配置 函数 year(date_expression) :表达式中年的部分 month(date_expression) :表达式中月份的部分 day(date_expression) :表达式中天的部分 str_replace(string_expression1, string_expression2, string_expression3) :使用string_expression3值替换 string_expression1中的string_expression2 字符串。 left(character_expression, integer_expression) :返回字符串的左边指定字符个数的字符串。 len(string_expression) :返回字符串的字符(character)数,注意不是字节数,而且不包含空隔。 square(numeric_expression) [...]

我们知道根据生产数据库的业务数据情况来安排备份的频率,比如:每月、每周、每日,有的甚至每小时备份一次。要备份sybase数据库,需要自己手动写命令。这样,下一次可能会覆盖上一次的备份文件。通过脚本在下一次备份时产生不同的备份文件名称就不会覆盖上一个备份文件了。这样,能够自动保留数据库的多个数据库备份文件,更有力的保障了数据库的安全。 将下面的脚本复制到记事本中,另存为bat格式。添加到windows的计划任务中, ============================================================================================ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 echo off cls :: 默认保留近7日来的数据库备份,可以把7改成自己想连续的天数 :: 其中d:\sybase\data为数据库备份地址,可以自己再次指定 :: master为默认备份的数据库名称,可以修改成其它用户数据库名称 set databak_path=d:\sybase\data set databasename=master echo dt=date()-7>%temp%\OldDate.vbs echo s=right(year(dt),4) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^& right("0" ^& day(dt),2)>>%temp%\OldDate.vbs echo wscript.echo s>>%temp%\OldDate.vbs for [...]

从多个渠道收集来的sybase trace flag With dbcc traceflags you can do many different things, like change the behaviour of the server, see why a certain query plan is choosen or fine-tune the optimizer. This page shows you how to use them and provides a list of known traceflags. You can set a traceflag in two ways 1.At [...]

专注于Sybase Adaptive Server Enterprise(ASE)以及 Sybase SQL Anywhere(ASA)数据库文件的恢复。

联系手机:(微信),QQ:
郑重承诺,修不好不收费。客户验证数据的正确性后,再付款。

Sybase ASE恢复工具产生背景:

曾经将笔记本电脑上的另一个数据库的备份文件B恢复到了一个在线数据库A里了(两个都是实验用数据库!)。库B比库A要小很多。向多方(包括sybase technical)咨询都说没有办法只能通过备份文件来恢复。但是,我感觉应该有种办法吧!难道sybase公司都没有办法?如果这样,我将一个小的备份文件load到一个大的数据库里面,难道这个大数据库也只能用备份来恢复吗? 突然产生了一种想法,能不能打开sybase的设备文件看看里面都存了一些什么样的数据?能读取一点数据也是收获啊!

于是,在接下来的三个月时间里我花了很大的精力来研究Sybase ASE的内部数据结构,用VB编写读取程序,并反复测试修改。最后,基本形成两个小工具。

1.能够从Sybase数据设备上提取数据的:READSYBDEVICE

2.从日志设备上提取日志信息的:LOG_ANALYZER_ASSISTANT (暂时叫这两个名字,以后可能会改)

下面为两个工具读取出来的数据截图:

一、下图为读取的Sybase数据库内页面上的数据(页号:165621,表名:FLOWREC1,右上部显示页面上的十六进制数据,下部分是FLOWREC1在页面165621上的数据)

读取的Sybase数据库内页面上的数据

二、下图为从日志设备上提取的日志信息(包括:页号,页内偏移,可用行号,日志类型OP,会话ID,列宽度,日志操作时间,SUID,UID,SPID,以及日志信息内容等)。针对插入(OP=4)、删除(OP=5)、更新(OP=9)能够逆向写出相应的SQL语句。从日志设备上提取的日志信息

Sybase ASE的恢复工具支持ASE v11.0, v11.5,v11.9.2,v12.0,v12.5.x,v15.x等各个版本,支持little endian以及big endian,支持cp850,iso_1,cp936,eucgb,utf8等国内常用的多个字符集。

关于从Sybase ASE设备文件中提取对象包含的页面不外乎两种方法。

第一:依次扫描页面获取页头控制信息中记录的对象ID;

第二:根据分配页追踪到对象的OAM页,再从OAM页上分析出对象占用的页面。

另 外,已经研发成功了能够从Sybase SQL Anywhere的DB文件中恢复数据的工具,支持ASA v5.0,v6.0,v7.0,v8.0,v9.0,v10.0,v11.0,v12.0等版本。恢复Sybase SQL Anywhere的工具在国内应该算首创。