存档

文章标签 ‘ASE’,文章数:63

Job Scheduler 提供了定义和调度数据库管理和维护任务的能力,从而简化了 ASE 的管理。有了 Job Scheduler,就可以将通常需要数据库管理员干预的作业安排为在合适的时间以无人值守的方式运行,从而让数据库管理员腾出手来关注其它问题。

    先介绍四个属于:作业、日程表、作业历史、预定作业、Job Scheduler任务、Job Scheduler代理、目标服务器、模板。

作业:在一次数据库操作中,例如备份、更新统计信息和转储数据库,对数据库执行的一个或多个系列操作。

日程表:定义了执行作业的时间以及如何重复执行作业。

作业历史:曾经执行过的预定作业。

预定作业:是指已绑定到某个日程表的作业。只有经过调度的作业才会执行。

Job Scheduler 任务(JS 任务):是功能性组件,负责管理日程表和及时通知 Job Scheduler 代理执行某个特定作业。

Job Scheduler 代理(JS 代理):是功能性组件,负责在接到 JS 任务通知时执行某个作业。

重复执行的日程表:是将要多次执行的日程表。所有重复执行的日程表都必须有开始和结束时间。

目标服务器:是预定要在其上运行业务的 Adaptive Server。

模板:是一组带有参数的 Transact-SQL (T-SQL) 语句,可用于在 Job Scheduler 中创建作业。

统计Sybase ASE数据库的数据段和日志段的剩余空间以及剩余率。以下SQL在ASE12.5.1及以上版本通过测试。

 

select convert(char(16),db_name(data_segment.dbid)) DBName
,str(round(total_data_pages / ((1024.0 * 1024) / @@maxpagesize),2),10,2) "Total Data(MB)"
,str(round(free_data_pages / ((1024.0 * 1024) / @@maxpagesize),2),10,2) "Free Data(MB)"
,str(round(total_log_pages / ((1024.0 * 1024) / @@maxpagesize),2),10,2) "Total Log(MB)"
,str(round(free_log_pages / ((1024.0 * 1024) / @@maxpagesize),2),10,2) "Free Log(MB)"
,str( round(100.0 * free_data_pages / total_data_pages ,2),10,2) "Free_Data%"
,str( round(100.0 * free_log_pages / total_log_pages,2),10,2) "Free_Log%"
from
(select dbid,sum(size) total_log_pages,lct_admin("logsegment_freepages", dbid ) free_log_pages
  from master.dbo.sysusages
    where segmap & 4 = 4
    group by dbid
) log_segment
,
(select dbid,sum(size) total_data_pages ,sum(curunreservedpgs(dbid, lstart, unreservedpgs)) free_data_pages
  from master.dbo.sysusages
    where segmap <> 4
    group by dbid
) data_segment
where data_segment.dbid = log_segment.dbid
  --and data_segment.dbid > 3 and data_segment.dbid < 31513
order by data_segment.dbid
go

 

一、Sybase ASE中对表中已有的列修改默认值属性,使用命令:

alter table [database.][owner].table_name replace column_name default { constant_expression | user | null}

比如将表tmp1中dealtime字段设置成默认值为当前日期,使用:

alter table tmp1 replace dealtime default getdate()

删除列上的默认值属性:

将缺省值设置为null会删除缺省值,如: alter table tmp1 replace dealtime default null

Sybase ASE对null is null的处理结果是什么呢?
下面的SQL语句会返回所有的对象名吗?
select name from sysobjects where type=null or null is null
答案是:根据ASE版本不同,结果也不同。

在ASE v15.0.3之前的版本中会报下面的错误:
Invalid operator for datatype op: is null type: VOID TYPE.
在v15.0.3及以后的版本中,对is null的处理结果和我们平时直观的想法相同,
上面SQL语句会返回所有的对象名称。

sybase数据库中去除重复数据的方法有很多中,比如:identity+max(),set rowcount N 或 top N,distinct,ignore_dup_key等等。

以后花时间整理一下去除重复数据的不同方法。

今天,仅仅介绍如何使用union操作符来去除重复值。

在select命令中union all不删除重复行,而union会删除重复行。

这样的话,将包含重复行的记录通过union操作符插入到一张临时表中,然后再倒回来就行了。

Sybase ASE12.5.3ESD#7的错误日志文件中频繁报下面的错误信息:

Error 1204, Severity 17, State 2 occurred for User 'sa'. Client IP address is 'XXX.XXX.XXX.XXX'.
SQL Text: select xxxx from xxxxx where xxxxx

查询Sybase错误信息手册,Error 1204是由锁数量不够导致的。

Error 1204的错误信息内容应该为:

SQL Server has run out of LOCKS. Re-run your command when there are fewer active users, or contact a user with System Administrator (SA) role to reconfigure SQL Server with more LOCKS.

自ASE12.5.2后,数据库引擎向错误日志文件中记录Error1204时还记录一些额外的信息,比如:客户端IP地址,登录用户名以及执行的SQL语句。

我这次看到的错误日志文件中仅有一些额外信息,比如:for User 'sa'. Client IP address is 'XXX.XXX.XXX.XXX'. SQL Text: sql_clause,并没有显示SQL Server has run out of LOCKS.这一行信息。

本文转自:http://www.fwolf.com/blog/post/357 作者:Fwolf

开始之前

先把ubuntu装上,用7.04的server安装盘默认安装即可,先装i386的,如果sybase安装顺利,再试试64位的sybase是否好用。

从sybase网站上注册免费用户之后,可以下载免费的ASE Express Edition下载页面),目前的版本是15.0.2,限制只能使用1个cpu,2G内存和管理5G数据,更详细的资料在快速安装手册中。

如果您也想自己装一个试试,建议您先跳过下面这一段。

安装

下载后的ase1502_xe_linux.tgz,直接解压到一个目录,比如ase1502中,然后运行./setup就可以开始安装了。默认的安装是java图形界面的,而我是远程ssh上去装的,所以加上-console参数运行setup。首先是欢迎信息:

Welcome to the InstallShield Wizard for Sybase Adaptive Server Enterprise Suite
version 15.0.2 GA

The InstallShield Wizard will install Sybase Adaptive Server Enterprise Suite
on your computer. Shut down all Sybase products, then click Next to begin
installation.

Press 1 for Next, 3 to Cancel or 4 to Redisplay [1]

按1继续,接着是选择用户协议类型: