sybase资料.docx
- 文档编号:28590726
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:70
- 大小:200.56KB
sybase资料.docx
《sybase资料.docx》由会员分享,可在线阅读,更多相关《sybase资料.docx(70页珍藏版)》请在冰豆网上搜索。
sybase资料
关于SybaseASE数据库的license以及试用版过期的问题的解决方案
作者:
佚名来源:
中国自学编程网收集整理发布日期:
2009-02-18
当用户从Sybase官网上下载了ASE15.0.2以后,如果选择了安装ExpressEdition或者DeveloperEdition,基本上不会碰到什么问题,除了有些功能受限以下。
但大多数可能选择了EnterpriseEditionforEvaluation类型,即企业版试用。
都会碰到这样的问题,即一个月以后,license过期,无法启动server。
于是很郁闷,可能大部分人,会选择卸载再重新安装一遍,这样当然没问题,只是,太浪费时间了。
有一段时间,我自己甚至也以为只能这样去解决了。
实际上不是,通过在sybase论坛上与一些有经验的人交流以后,发现,是可以切换的。
首先,有三种安装类型:
1.ExpressEdition,完全免费,不用缀述。
2.DeveloperEdition,没有使用期限限制,用于开发和测试。
似乎不能商用,无所谓了。
我也是刚得知。
以前好像是有60天的限制。
3.EnterpriseEdition,它是有试用时间的限制的。
是30天。
只要能找到切换就OK了。
你的解决方法就是,把企业版的license切到开发版或者Express版。
怎么切?
先看看目录$SYBASE/SYSAM-2_0/licenses下边的三个文件:
SYBASE_ASE_DE.licSYBASE_ASE_XE.lic
第一个文件里边有这样的内容:
PE=DE;LT=DT
第二个文件里有这样的内容:
PE=XE;LT=CP
在$SYBASE/$SYBASE_ASE/sysam/
PE=EE
LT=EV(或是ET)什么的
将PE和LT后边的值,分别替换上边两个文件里的值。
替换成:
PE=XE
LT=CP
就变成express版
替换成:
PE=DE
LT=DT
就变成开发版。
于是,你又可以正常使用了,至少没有期限限制。
反过来也是可以的,即你开始一直使用开发版,后来,买到了合法的license,你把license文件安装好以后,找到其中的PE和LT值,然后修改$SYBASE/$SYBASE_ASE/sysam/
就变成了你购买的license了。
系统不用重装。
Sybase数据库乱码问题的解决方法
作者:
来源:
发布日期:
2008-08-26
搭建测试数据库服务器时,遇到了乱码问题,之前没有遇到是因为开发数据库服务器是早就安装好并设置好字符集的,因此些问题在部署测试环境时才出现,当时已经将数据库配置完毕,并且所有的初始化脚本都已经执行完毕,工程也已经成功部署在WebLogic上,打开IE,运行程序,却发现所有从数据库中读取出来的都是乱码,经过上网搜索的相关资料,需要设置字符集,但刚开始查找到的资料基本是都是支言片语,没有一个系统的讲解如何设置字符集,几乎将他们所有的方法都试过了,结果不但没有弄好,甚至连控制台和SQL平台都是乱码了,实在弄不明白了,就去问高人了,他给我发了一个专门讲解字符集的文档,讲的很全面,而且通过他的帮忙终于将解决了乱码问题。
下面我总结一下设置字符集的过程:
1、安装完Sybase后,如果要想设置字符集为CP936,就必须先安装该字符集,因为Sybase默认的字符集表中并没有该字符集,安装步骤如下:
(这里SYBASE的安装路径为c:
\sybase) 1.c:
\>;cd\sybase\charsets\cp936 2.c:
\sybase\charsets\cp936>;charset-Usa-Psa_pass-Sserver_namebinary.srtcp936通过上述命令就成功将CP936字符集安装表Sybase的系统字符集表中,但必须重启Sybase服务两次才能看到结果,可以通过查看master数据库中的syscharsets表查看是否已经安装成功,我们可以看到已经安装成功了:
1002,171,0,1,'cp936','CP936(SimplifiedChinese).',’…’2、看到CP936的编号为171,我们需要在Sybase的属性中设置系统字符集为该ID,如下图所示:
如果设置完字符集成出现错误,是因为master数据库的表空间默认只分配几百K的空间,导入新的数据后已经没有足够的空间了,所以要对master数据库设置大一些的表空间,点击master数据库右键属性,选择表空间的tab页,对原有的表空间编辑重新分配大小,将master所有的表空间都分配了就可以解决该问题。
3、设置好字符集后就可以执行初始化脚本了。
这其中还有几个小插曲,由于第二步的表空间不足的错误根本没有一个文档中有说明,所以我和郭立英根本谁也不知道,都以为Sybase被我们搞崩溃了呢,没办法只能重新安装,但安装后还是有该问题,后来请高人来帮我们看才知道是表空间的问题,还有就是虽然设置好字符集后,打开IE看还是乱码,不知道为什么,后来重新执行一遍脚本后就没有了,是因为之前默认的字符集为Cp850,所以用该字符集下执行的脚本再到CP936的环境中读取一定会乱码,所以在CP936的环境中再执行一遍脚本就没有问题了。
修复Sybase数据库及恢复sa口令的方法
作者:
来源:
发布日期:
2008-08-01
Sybase数据库管理系统中数据库损坏后,重新建立数据库的时间比较长,这将给应用(特别是对时间要求特别严格的应用,如金融、证券等)造成很大的损失。
而如果在应用中遗忘超级用户sa口令,更会给系统管理带来极大的不便,甚至很多操作都无法进行。
本文介绍一种简便的修复SYBASE数据库及恢复sa口令的方法。
以下假定server能正常启动,server名为SYBASE,数据库名为demodb。
一、修复SYBASE数据库分为两种情况:
1.数据库所用的设备正常,而库demodb的状态为suspect。
(1)以sa注册
isql -u sa -P
1>
(2)修改server属性,置系统表为允许修改该状态。
1>sp_configure "allow updates",1
2>go
3>recofigure with override
4>go
(3)修改数据库的状态,置数据库状态为server启动时不检测。
1>update master.sysdatabases set status = -32768
2>where name = "demodb"
3>go
(4)重启server。
(5)修改数据库的状态,置数据库状态为正常。
1>update master.sysdatabases set status = 0
2>where name ="demodb"
3>go
(6)修改server属性,置系统表为不允许修改状态。
1>sp_configure "allowupdates",0
2>go
3>reconfigure with override
4>go
(7)再次重启server。
至此,如果数据库能够正常,则恢复完毕。
以上步骤中,也可以用单用户模式启动server,命令为startserver-m,而不必修改server的"allowupdates"属性。
SYBASE11及以上版本的server只需重启,不需要执行reconfigurewithoverride。
如果上述方法仍不能恢复数据库,则只能使用dbcc命令删除该数据库,然后重新建立。
2.数据库所占用的设备不正常,库的状态为suspect使用sp_helpdb和sp_helpdevice命令查出数据库设备的逻辑名、物理名、设备号、大小等信息。
如果上述命令无法查出数据库设备的信息,可使用select*frommaster.sydatabases和select*frommaster.sysdevices。
然后用diskreinit重建设备。
最后,按照1的步骤恢复数据库。
上述第一种情况数据库损坏程度较轻,对数据库内容检查后即可使用。
而在第二种情况下,如果数据库的日志建立在不同的设备上,只是数据库的日志设备损坏,数据库的损坏程度会较轻,只是有些交易无法恢复;如果数据库的设备损坏,整个数据库的内容会全部丢失,其中表、表的内容、存储过程都需要重建。
所以建议数据库和数据库的日志建立在不同的设备上。
系统错误日志errorlog文件存有SYBASE数据库系统的错误信息,系统出错时应先检查此文件,据此判断错误原因,找出解决办法,以免误操作。
二、恢复sa口令
编辑RUN_SYBASE,在dataserver启动行尾加入参数-psa,然后存盘退出,执行startserver-fRUN_SYBASE重启server,系统会给超级用户sa一个随机的密码,以此密码注册进入server,然后使用sp_password命令修改密码即可。
修改Sybase数据库sa密码的方法
作者:
来源:
发布日期:
2008-07-29
问题描述:
在UNIX及某些系统内不能启动SybaseCenter,那么在这种情况下怎样修改sa密码呢,同时如果我们不需要密码时也可以使用该方法将sa密码置为空
解决方案:
$isql-Usa-P1222-SSYBASE
1>sp_configure"upgradeversion"
2>go
#记录打印的版本号,我的系统版本好是11920(sybase11.9.2)
1>sp_configure"upgradeversion",492
2>go
#更改版本号为492
1>sp_password'123456',NULL,sa
2>go
#修改密码将123456密码置为空
1>sp_configure"upgradeversion",11920
2>go
#更改版本号为原来的版本号
分数据结构和数据记录做两次备份
作者:
来源:
发布日期:
2008-07-22
在一般情况下,生产机的数据库都比较庞大,而实验机则相对较小,难以在实验环境中以load命令恢复工作机的内容。
所以,在工作实践中,我们摸索出了第二种全量备份方案。
1、数据结构备份:
在windows平台的SybaseSQLServerManager(数据库管理)平台中选择ServeràGenerateddl则产生整个数据库服务器的所有信息,如果选择databaseàgenerateddl则产生所选定数据库的信息,以master库为例,产生的文件主要包括:
config.ddl(配置)、devices.ddl(设备)、database.ddl(数据库)、logins.ddl(用户)、remote.ddl(远程)、cache.ddl(缓冲)、segment.ddl()、group.ddl(用户组)、user.ddl(用户)、default.ddl(确省)、rule.ddl(规则)、udt.ddl、table.ddl(表)、view.ddl(视图)、proc.ddl(存储过程)、triger.ddl(触发器)。
2、数据记录备份:
将数据库各表以Sybase自代的bcp(bulkcopy)工具的方式导成一定格式的文本文件,命令格式:
bcp表名out路径名文件名-c-t分隔符-u(用户名)-p(密码)-S(服务器名)
如果将一个数据库中的所有表都做一个bcp备份,就需要针对每一个表都做一次bcp,在一般情况下,一个数据库有100多个表,工作量比较大。
可以利用数据库中的系统表信息做一个bcp备份脚本。
原理是每一个用户表在系统表中都有信息记载,可以通过isql语句查询得到。
现举一例说明:
(1)先编辑一个名为mkbcpout.sql的文件,内容如下:
select"echobcp'"+name+"out……………………'
"+"bcp"+name+"out./+"name+".table-c-t'|'
-Uuser-Ppassword-SSERVER"fromsysobjectswheretype='U'
go
(2)执行isql命令,以此文件作为输入,执行结果输出到另外一个文件里:
isql-Uuser-Ppassword-Sserver-Imkbcpout.sql-Obcpout;
(3)对bcppout文件稍微修改,增加可执行权限:
chmod+xbcpout;
(4)执行bcpout,导出数据文本:
./bcpout;
3、数据库恢复:
业务生产机可能为小型机,而实验开发环境的硬件环境为PCserver,安装好winnt或SCOunix下的Sybase服务器后,根据需要创建空间足够大的数据库和tempdb(系统临时数据库),创建数据库用户,并将其更改为此数据库的所有者,要注意两点:
1)此数据库允许bcp拷贝,2)此数据库自动清除log。
命令格式为:
1>sp_dboptiondatabasedbname,"selectinto/bulkcopy",true
2>go
1>sp_dboptiondatabasename,"trunclogonchkpt",true
2>go
上述两个配置可能与生产机的配置不同。
然后以新创建的数据库用户登录,导入数据结构,注意要首先导入表结构,然后才是存储过程、触发器等等。
命令格式:
1、isql-Uusername-Ppassword-Itable.ddl-oerror.log.table
2、isql-Uusername-Ppassword-Iproc.ddl-oerror.log.proc
为了提高bcp导入数据的速度,需要将比较大的表的索引和主键删除,否则的话,每bcp进一条数据,数据库都自动写一条log日志,记载此数据的上一条和下一条记录,确定本记录在此表中的准确位置,一是影响bcp速度,二是数据库的log飞速膨胀。
数据库的自动清除log功能只有在一个事务结束后才起作用。
准备工作做完后,开始倒入数据记录。
使用类似做bcpout的方法做一个bcpin的脚本,然后执行:
./bcpin|teeerror.bcpin;
使用tee管道输出的目的是让计算机完整记录下倒入过程,自动存入error.bcpin文件中,待倒入结束后,我们只需要检查日志文件,不需要一直紧盯着计算机屏幕。
所有工作做完之后,不要忘记重新将删除的主键和索引建上。
如果有现成的数据库,只需要单纯地导入数据记录,则首先将数据库中所有用户表(也就是所有type=“U”的表)清空,命令格式:
1> truncate table tablename
2> go
当然最好也是利用做bcpout脚本的做一个truncate脚本,通过执行此脚本将所有用户表清空。
然后的数据导入、处理索引和主键的过程与上面类似。
三、利用做bcp备份脚本的方法做数据库碎片整理。
Sybase数据库作为联机事务处理应用服务器,每天应用程序都对数据库做大量的插入、修改和删除等操作,不可避免的在数据库的物理存储介质上留下页碎片和扩展单元碎片,从而影响数据库的存储效率和运行速度。
具体表现为:
业务繁忙时出现死锁(deadlock),数据库的输入/输出资源被大量占用,业务处理速度慢。
其解决办法是:
1、清空数据库中的所有表,命令格式:
isql -Uusername -Ppassword -I truncate.sql -o error.truncate
2、删除所有表的索引和主键:
isql -Uusername -Ppassword -I dropindex.sql -o error.dropindex
3、导入数据:
./bcpin
4、添加索引和主键:
isql -Uusername -Ppassword -I addindex.sql -o error.addindex
5、更新数据库状态:
1> update statistics tablename
2> go
上述操作都是针对数据库中的所有用户表进行的,利用做bcp备份脚本的方法做出相应的脚本,使繁琐的数据库维护变得简便易行,还克服了直接使用isql语句操作风险大、没有操作日志的毛病。
笔者在实际工作中,使用第一种方法对生产机做日常全量备份,日终通过unix的crontab定时批量作业bcp出全部数据。
使用高档PCserver搭建模拟运行环境,在需要的情况下导入生产机数据,处理运行中后台server的各种问题,待研究出解决办法后再在生产机上做相应调整,这样做风险小,效果好
SybaseIQ基础知识介绍
作者:
来源:
发布日期:
2008-05-30
我们开始审视SybaseIQ时,我们正是从此点开始,我们发现,Sybase对其使用列方法的好处所作的论述“相当令人信服”。
然而,通过对数据仓库不断增加需求、迅猛增长的来自Web的数据与用户所带来的分析和报表(更不必提即将到来的RFID应用),以及客户的经验等等,我们现在可以证明,SybaseIQ提供了一个远比那些传统的关系型供应商更优越的方法。
列存储
不同于传统的关系型数据库,其数据在表中是按行存储的,SybaseIQ是通过表中的列来存储与访问数据的。
尽管这种方式很明显的不太适合于交易环境,在交易环境中,一个事务与一行数据有效对应,而在查询进程环境中,很显然,查询是基于特定的列来选择的。
列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的。
事实上,情况并不象上述的这样简单,SybaseIQ有各种方法支持基于列的索引,我们将在下面就此讨论。
使用列方法的另一个结果就是,SybaseIQ在压缩方面比传统的关系型数据库更加有效(根据Sybase所称,效果可达5倍之好)。
这个原因,无消说,是由于同一列中的所有数据域有相同的数据类型。
因此,每一列都可以为优化的效率与检索进行压缩。
相比来讲,基于行的存储,各个不同的域拥有各不相同的数据类型,这非常适合于交易进程。
在这样的环境中,不断变换理想的压缩算法是不可行的,这意味着任何压缩都将可能是一种最低通用的规则。
基于列的方法的另一个重要优势完全基于所有读出的数据量。
无论何时你从传统的数据库中访问数据,你需要读出完整的每一行,而不管你实际所感兴趣的是哪些域。
实际上,这可能意味着读300个字节的数据仅仅检索20个字符的数据。
但是,基于列来读取数据,你仅仅需要读出你想要了解的数据。
当然,读取一条单独的记录时,性能上的不同可以忽略,但是许多查询需要进行全表扫描。
当读取数百万行数据时,性能的不同就会非常显著。
Sybase认为,SybaseIQ的列存储天然的比普通的ROLAP方法提供更佳的性能,IQ不需要象多数竞争对手或者SybaseAdaptiveServerEnterprise(ASE)一样支持硬件的并行处理。
尤其是,Sybase指出,与数据分区相关的问题就是需要支持硬件的并行机制。
显而易见,不论如何进行分区,分区都会带来很多问题(更不必说额外的维护了),不过,它打开了性能改进的实质性途径。
然而,Sybase进一步阐述道,这仅仅是对基于行的方法所与生俱来的糟糕性能的一种补偿机制。
Sybase有很多事实支持它的论断,但这并不意味着Sybase避免任何形式的数据分区。
然而,不同于水平分区,SybaseIQ实施的是垂直分区,也就是说分区是按照列而不是按照行进行的。
该方法的优势之一是分区从来不会变得不均衡,这是由于每个表中的每列都有相同数量的域。
这大大降低了管理分区的维护需求,同时消除了数据库的重新组织,而在分区变得不均衡从而开始影响性能的时候,数据库重新组织是必需进行的。
最后,需要注意的是,SybaseIQ并没有避免使用OLAP。
对于那些希望在聚合层次下以一个相对预先定义的方式进行查询的用户来讲,OLAP具有明显的优势。
基于此,Sybase支持OLAP功能属性如排列、百分比、平均。
数据压缩
传统的数据库引擎不能以一种通用的方式进行数据压缩,主要是由于存在以下三个问题:
1.按行存储的数据存储方式不利于压缩。
这是因为数据(大多为二进制数据)在以这种方式存储时重复并不多。
我们发现,按行存储的数据,最多能有5-10%的压缩比例;
2.对于许多2K和4K的二进制数据页来说,为压缩和解压缩而增加的开销太大;
3.在OLTP环境中,大量读取和更新混杂在一起。
每一次更新需要进行压缩操作,而读取只需解压缩操作,大多数的数据压缩算法在压缩时比解压缩时慢4倍。
这一开销将明显降低OLTP数据库引擎的事务处理效率而使得数据压缩的代价昂贵到几乎不能忍受。
在数据仓库应用中,数据压缩可以用小得多的代价换取更大好处。
其中包括减少对于存储量的要求;增大数据吞吐量,这相当于减少查询响应时间。
SybaseIQ使用了数据压缩。
这是由于数据按列存储,相邻接的字段值具有相同的数据类型,其二进制值的范围通常也要小得多,所以压缩更容易,压缩比更高。
SybaseIQ对按列存储的数据通常能得到大于50%的压缩。
更大的压缩比例,加上大页面I/O,使得SybaseIQ在获得查询的优良性能的同时,减少了对于存储空间的需求。
SybaseIQ基础知识介绍
作者:
来源:
发布日期:
2008-05-30
在传统的数据库中,为提高查询性能所建的索引占用的磁盘空间往往需要比数据本身需要的磁盘空间多出3-10倍。
而SybaseIQ存储数据所占用的磁盘空间通常只是原数据文件的40%-60%,是传统数据库所占用空间的几分之一。
图:
SybaseIQ与传统数据库在数据压缩方面的典型对比
智能压缩技术,与精巧的索引结构和列存储结合,给了IQ比其他数据库引擎高的多的存储效果。
这将获得更低的存储成本与更高的性能(因为系统仅需很少的磁盘I/O读取或写入任何给定的数据库块)。
索引
SybaseIQ的秘密在于其索引。
随着Sybase客户发现了新的分析需求,Sybase可以简捷地建立新的索引以满足这些需求。
这种方法的奇妙之处在于为数据仓库增加新的索引几乎不会(即使有也是微乎其微)影响数据仓库的架构或使用仓库的分析型应用。
在实时企业与闭环应用领域,Sybase将索引视为在TB数量级(将来)甚至
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sybase 资料