存档

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

很郁闷,对360很失望。上午在用360优化电脑的时候,平时我是不用什么优化大师或者什么兔子、360来倒腾电脑的。因为:我觉得也不知道软件具体删除了哪些文件,误删了文件就麻烦了。果不其然,360把我的服务信息给搞没了。

在用360软件管家中的开机加速后,我的一些服务不能自动启动了。

从其他sybase服务器上导出项目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SYBSQL_TEST 的信息,用记事本打开,如下的信息:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SYBSQL_TEST ]
"Type"=dword:00000010
"Start"=dword:00000003
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):64,00,3a,00,5c,00,73,00,79,00,62,00,61,00,73,00,65,00,5c,00,\
  41,00,53,00,45,00,2d,00,31,00,32,00,5f,00,35,00,5c,00,62,00,69,00,6e,00,5c,\
  00,73,00,71,00,6c,00,73,00,72,00,76,00,72,00,2e,00,65,00,78,00,65,00,20,00,\
  2d,00,73,00,4c,00,49,00,55,00,5a,00,48,00,45,00,4e,00,46,00,55,00,20,00,2d,\
  00,43,00,00,00

"DisplayName"="Sybase SQLServer _ TEST"
"ObjectName"="LocalSystem"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SYBSQL_TEST \Enum]
"0"="Root\\LEGACY_SYBSQL_TEST \\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SYBSQL_TEST \Performance]
"Library"="d:\\sybase\\ASE-15_0\\dll\\sybperf15.dll"
"Open"="sybperf_open"
"Collect"="sybperf_collect"
"Close"="sybperf_close"
"Last Counter"=dword:00000ea2
"Last Help"=dword:00000ea3
"First Counter"=dword:00000a4a
"First Help"=dword:00000a4b
"inifile_version"="15"
"WbemAdapFileSignature"=hex:eb,32,0b,37,22,b5,36,f0,55,9b,2f,92,7a,2f,eb,3d
"WbemAdapFileTime"=hex:1e,bd,1d,f4,f4,99,c8,01
"WbemAdapFileSize"=dword:00009600
"WbemAdapStatus"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SYBSQL_TEST \Security]
"Security"=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,\
  00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\
  00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\
  05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\
  20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,\
  00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,\
  00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00

请将红色的TEST替换为你的sybase服务器名称即servername。如果你是导出的12.5版本的注册表信息,请修改对应的Library值(红色标记)。 蓝色标记的ImagePath是十六进制的,请在注册表内修改,就是系统启动的程序的路径。

修改完之后,就可以启动sybase服务了。在服务中启动或者sc start sybsql_servername   都是可以的!

其它类似backup,monitor,xpserver,和主服务类似。不再赘述。

但是很郁闷,我的sql server database analysis agent服务不知道该如何添加注册表信息了。估计只能通过重新安装程序来解决了。

到注册表了查看,关于SYBBCK_TEST_BS ,SYBMON_TEST_MS ,    SYBSQL_TEST ,SYBXPS_TEST_XP,以及 sql server database analysis agent 服务的信息全不见了。 360太可恨了,幸亏本人懂sybase的注册表配置信息,不然真的重装一遍sybase系统了。

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字: sybase 注册表 360 服务 恢复
————————————————————————————————————

昨天下午到现在已成功实现在linux 5.4 Enterprise下安装两个版本sybase数据库。ase12.5.4和ase15.0.3

两个版本的数据库使用不同的账户创建,并且已经配置了开机自动启动和关机自动结束服务。

ln -s /etc/init.d/autostartsyblinux /etc/rc5.d/S98autostartsyblinux

vi /etc/init.d/autostartsyblinux

su - sybase -c /etc/init.d/startsyblinux

vi /etc/init.d/startsyblinux

cd /sybase/ASE-12_5/install

startserver -f RUN_syblinux -f RUN_syblinux_bs

-------------------------------------------------------------------------------------

ln -s /etc/init.d/autostopsyblinux  /etc/rc5.d/K98autostopsyblinux

vi /etc/init.d/autostopsyblinux

su  - sybase -c /etc/init.d/stopsyblinux

vi  /etc/init.d/stopsyblinux

isql -Usa -P -Ssyblinux -i/etc/init.d/shutdown.sql >> /sybase/autoshutdown_erro.log

vi  /etc/init.d/shutdown.sql

shutdown SYB_BACKUP

go

shutdown with nowait

go

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字: ASE 15.0.3 linux RedHat 自动 启动 脚本
————————————————————————————————————

今天下午在shutdown数据库服务器的时候,只有两个isql连接。在其中一个isql连接上发命令 shutdown后然后退出了另一个会话。

一直报SHUTDOWN is waiting for 5 process(es) to complete.的错误,一直一直写。我看了一下。所有的系统进程都处于sleep状态,包括发shutdown命令的进程。在errorlog中没有任何信息。通过sp_who查看到进程里面有DEADLOCK TUNE,HOUSEHOLDER,JOB SCHEDULER等;发送shutdown命令的进程好像在执行checkpoint。不知道为什么?

最后通过另一个session中强制关闭数据库才算完事。shutdown with nowait. 感觉很奇怪!

ASE版本15.0.3/esd#1,网上说好像有一个是:562998 - NT storage access violation in omni_closetable destroyRemoteAccess

我的确遇到了这个bug在使用mon表的时候!

感觉sybase升级到了15.0版本了怎么系统还不是很稳定?

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字: ASE 15.0.3 shutdown 升级 补丁
————————————————————————————————————

已在solaris10,ASE12.5.2下用资源文件resource_files新建了一个4k的sybase服务器。测试该方法通过!
不过在windows下没有这个命令srvbuildres,相类似的命令工具为sybatch,况且windows下还要配置注册表信息才能启动服务除非你想每次都通过RUN_servername来启动!

本指南实际为本人两篇文章的合集,分为安装和迁移两大部分

第一部分:在无GUI环境下安装sybase for linux 12.5.0.1

通常我们建立sybase for linux数据库服务器的时候,都是执行asecfg来建立数据
库,但是这种方式是需要在
服务器上安装X的,即使是通过X FORWARD的方式来操作,也至少需要安装上X
lib。在许多时候下,我们都希望
在服务器上安装的软件包越精越好,即只需要在console环境下就能建立好我们所
需要的服务器。
sybase for linux 就提供了这样一套无需任何X软件包的数据库建立工具---
srvbuildres,它通过读取资源文件
来完成基于console的数据库建立工作。

一 安装rpm包
rpm -ivh --nodeps <rpm包名>

二 激活sybase帐号
passwd sybase

三 设置内核参数
echo $( expr <你的内存容量(以MB为单位)> \* 1024 \* 1024 ) >
/proc/sys/kernel/shmmax
echo "kernel.shmmax = "$( expr <你的内存容量(以MB为单位)> \* 1024 \*
1024 ) >> /etc/sysctl.conf
echo "本机ip hostname" >> /etc/hosts

四 创建数据库服务器和备份服务器
以sybase帐号登录
cp ~/ASE/init/sample_resource_files/srvbuild.adaptive_server.rs ~/server.rs
cp ~/ASE/init/sample_resource_files/srvbuild.backup_server.rs ~/backup.rs
编辑 server.rs

sybinit.release_directory: USE_DEFAULT
sybinit.product: sqlsrv
sqlsrv.server_name: kbibm_ase <--- 填入你所准备起的数据库服务器名称, 这里是我的数据库服务器名字
sqlsrv.new_config: yes
sqlsrv.do_add_server: yes
sqlsrv.network_protocol_list: TCP
sqlsrv.network_hostname_list: <--- 填入数据库服务器所在主机的主机名
sqlsrv.network_port_list: <---端口号
sqlsrv.server_page_size: USE_DEFAULT
sqlsrv.force_buildmaster: no
sqlsrv.master_device_physical_name: /opt/sybase-12.5/data/master.dat
<--- 设定master文件所在位置
sqlsrv.master_device_size: 100 <--- size以MB为单位,这里建立100MB大小的
设备文件。
sqlsrv.master_database_size: 90 〈--- master_database 的size 至少要小于
master_device 7MB,所以这里填90MB
sqlsrv.errorlog: USE_DEFAULT
sqlsrv.do_upgrade: no
sqlsrv.sybsystemprocs_device_physical_name:
/opt/sybase-12.5/data/systemprocs.dat
sqlsrv.sybsystemprocs_device_size: 200 <--- 建立200MB大小的systemprocs设
备文件
sqlsrv.sybsystemprocs_database_size: 200
sqlsrv.sybsystemdb_device_physical_name:
/opt/sybase-12.5/data/sybsystemdb.dat
sqlsrv.sybsystemdb_device_size: 200 <--- 建立200MB大小的sybsystempdb设备文件
sqlsrv.sybsystemdb_database_size: 200
sqlsrv.default_backup_server: kbibm_bak <--- 填入你所准备建立的备份数据库名

备份服务器的rs文件也按此方式进行修改

五 执行srvbuildres来建立数据库
$SYBASE/ASE/bin/srvbuildres -s $SYBASE -r <rs文件>

六 建立sqlloc.rs来设置本地化
sybinit.release_directory: USE_DEFAULT
sqlsrv.server_name: kbibm_ase
sqlsrv.sa_login: sa
sqlsrv.sa_password: serverj
sqlsrv.default_language: us_english
sqlsrv.language_install_list: us_english
sqlsrv.language_remove_list: USE_DEFAULT
sqlsrv.default_characterset: cp850
sqlsrv.characterset_install_list: cp850
sqlsrv.characterset_remove_list: USE_DEFAULT
sqlsrv.sort_order: binary

执行$SYBASE/ASE/bin/sqlloc sqlloc.rs 设置locale

七 由于/etc/init.d/sybase中有两处存在bug,所以我们要修改它
将SYBASE_ASE=`basename $SYBASE/ASE*` 改为 SYBASE_ASE=`basename $SYBASE/ASE`
将SYBASE_OCS=`basename $SYBASE/OCS*` 改为 SYBASE_OCS=`basename $SYBASE/OCS`
否则将不能正常启动sybase

八 /etc/init.d/sybase restart

现在我们就可以用 isql -U sa -P -S <数据库服务器名> 登录进去了。

以上步骤在redhat 7.3 上操作通过。

将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,配置内存池
第三步:优化临时表
大多数临时表的使用是简单的,很少需要优化。但需要对临时表进行复杂的访问则
应通过使用多个过程或批处理来把表的创建和索引分开。以下两种技术可以改善临时表的优化
slash; 在临时表上创建索引
1) 临时表必须存在
2) 统计页必须存在(即不能在空表上创建索引)
slash; 把对临时表的复杂的使用分散到多个批处理或过程中,以便为优化器提供信息
下面的这个过程需要进行优化:
create proc base_proc
as
select * into #huge_result from auths
select * from article, #huge_result where article.author_code=
#huge_result.author_code and sex=”0”
使用两个过程可以得到更好的性能
1)create proc base_proc
as
select *
into #huge_result
from auths
exec select_proc
2) create proc select_proc
as
select * from article,#huge_result
where article.author_code=#huge_result.author_code and sex=”0”
说明:在同一个存储过程或批处理中,创建并使用一个表时,查询优化器无法决定这个表的大小。
结论:通过本实验我们知道,临时数据库经过优化可以极大的提高系统性能。实际工作中,必须考虑具体应用的情况,需长时间经验的积累。

=======================================================================
第二种方法转自echoaix的博客,个人感觉方法可行。

tempdb如何真正使用自己的设备

大家知道tempdb缺省是在master设备上占用2兆,第一大小太小,第二占用master设备。方法都是先建一个新的设备,然后把tempdb扩到这个设备上,再从段上删除master设备
sp_dropsegment "default",tempdb,master
sp_dropsegment logsegment,tempdb,master
可是这样tempdb是扩大了,可是占用的master上的2兆好象并不能真正删掉(至少我没有成功)。
我的方法是:1建一个在独立设备上的数据库如testdb,查看 sysdatabases表找到对应dbid假如为9。
2删除sysdatabases和sysusages中tempdb的信息即dbid为2的记录。
3将sysdatabases中dbid为9的记录的dbid改为2,name改为tempdb,将sysusages中dbid为9的记录的dbid改为2。
4记住sp_dboption tempdb,"select into/bulkcopy" ,true,把新的tempdb的selectinto/bulkcopy属性打开
5重启

今天下午一直在研究master设备的内部数据结构,尝试通过编写程序向master设备文件后面追加数据来达到增加master设备大小的目的。

在sybase中初始化一块设备就是向操作系统中的文件系统请求一块空间,并且sybase对这块空间进行了一定的分配初始化。

要是能够手动向master设备文件尾部追加初始化的分配信息数据就可以物理上增加master设备的大小;然后,在 sysdatabases,sysdevices,sysusages表中修改相应的信息。

手动扩展master设备大小的示例:

原master设备大小为50MB,逻辑页号:0 - 25599(逻辑页面大小为2K)。

将master设备增加50MB空间,使得master设备空间变为100MB。

新的master设备逻辑页号: 0 - 51199。

1、修改master设备的high为51199,

update sysdevices set high=51200-1 where name='master'

go

2、给master设备文件尾部增加50MB空间

dd if=/dev/zero  of=./master.dat bs=2048 seek=25600 count=25600

3、重启Sybase数据库服务器

4、验证master设备空间大小变为100MB

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字: ASE master 空间 扩展 手动
————————————————————————————————————

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) :返回平方数 newid([optionflag]) :产生一个32位或36位(包括破折号)的可读随机字符串。 六、SQL debugger ASE12.5提供一个命令行方式的debug工具sqldbgr,使用它可对存贮过程和触发器进行debug跟踪。

ASE 12.5.1新功能