转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
sybase问题整理(希望大家追加)         ★★★★

sybase问题整理(希望大家追加)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3022 更新时间:2009/4/22 23:09:49
erver上执行rs_server 上的sp_who
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1560&start=15&show=90
这里给你提供一篇这方面的资料:
如何实现两个Sybase Adaptive Server之间的数据通信 
  在进行以Sybase作为后台数据库的MIS系统开发时,经常会碰到需要在两个Sybase Adaptive Server之间进行数据通信的问题。要解决这一问题通常由两类方法:其一便是在前台来做;这种方法一般是通过建立多个事务,分别连接到不同的Server,在应用程序中通过编程实现数据的交换。这种方法的缺点在于可维护性差,还有一点是由于需要多个事务肯定也会影响效率。另外一类方法就是利用Sybase 的Transact SQL在后台来做。这类方法把数据的通信工作交给了SQL服务器自己去做。这种方法显而易见的一种有点便是可维护性好,当业务发生变化或服务器设置改变时可以很少修改大部分情况是不用修改应用程序。下面举一个简单的例子来介绍一下如何利用Transact SQL在后台实现SQL服务器之间的数据通信。 
---- 假设有两台操作系统都是Windows NT的Sybase SQL服务器LocalServer、RemoteServer,两者能够相互访问即应是通过网络相连的;在LocalServer和RemoteServer上分别有数据库LS_database和RS_database;在数据库LS_database和RS_database里分别有表LS_table和RS_table。 
---- 假设现在业务规则是当LS_table更新时需要更新RS_table。 
---- 要实现这种业务逻辑首先需要在RemoteServer的RS_database里建立至少一个带参数的存储过程设为pro_upd_rst,用来更新RS_table;其次需要在表LS_table上建立三个触发器:设为update_rst、delete_rst和insert_rst,在这些触发器中调用RS_database中的存储过程。即采用触发器传递参数进行远程存储过程调用(Remote Procedure Calls)的技术来实现。当LS_table发生更新时触发器update_rst、delete_rst和insert_rst中有一个会被触发,通过临时表inserted和deleted能够得到更新的信息,赋给相应变量,传递参数给pro_upd_rst并调用之。 
---- 需要提到的一点是Sybase数据库的缺省安装并没有设置RPC,所以还要对LocalServer进行一些设置工作,这一点比较有必要强调尤其是对于初学者来说。这些设置工作主要有以下几点: 
运行LocalServer接口程序管理器Dsedit添加一个Server,Server Name设置为"RemoteServer"(可以是其他字符串),编辑Server Address,添加网络协议和端口号,通常选择TCP/IP协议,Network Address 设为"RemoteServer,5000",其中RemoteServer(这里指的是该服务器在网络中的机器名)可以用其IP地址来代替。试一试能否Ping通RemoteServer。Ping通后进行下面的工作。 
在LocalServer添加一个远程服务器,可以通过运行LocalServer的Sybase Central,打开LocalServer的"remote servers"文件夹,双击"Add Remote Server",在编辑框内输入一个字符串设为"Remote_Local"(注意区分大小写),在下面的下拉列表框中选择"RemoteServer"(这是第1步中的Server Name),点击下一步后在列表框中选择"sql_server"完成。 
重新设置LocalServer一些与RPC有关的参数,也可以通过Sybase Central。右键点击LocalServer,单击谈出菜单的"configure",在下拉列表框种选择"Component Integration Services",注意下面的两个参数"cis rpc handling" 和 "enable cis",这两个参数的缺省值都是"0",应该把它们都改为"1"。由于"enable cis"是静态参数所以修改后需要重起数据库才能生效。最后最好检查一下RemoteServer的"enable remote access"参数的值是否为"1"(缺省情况应该是"1"否则改为"1"。 
---- 其中第1步可以通过编辑接口文件sql.ini(在Sybase根目录的"ini"子目录下)来代替,打开sql.ini在最后加入如下三行: 
[RemoteServer] master=TCP,RemoteServer,5000 query= TCP,RemoteServer,5000 
         保存并关闭。 
---- 第2、3步可以通过系统存储过程"sp_configure"来代替,在SQL Advantage或isql中执行下列语句: 
sp_addserver Remote_Local,null,RemoteServer 
         go sp_configure "enable cis",1 go sp_configure "cis rpc handling",1 
         go 
---- LocalServer配置号以后应该测试一下,运行SQL Advantage或isql连接LocalServer执行下列语句"exec Remote_Local.master.dbo.sp_help",再次强调一点其中的Remote_Local区分大小写。 
---- 上面所举的只是一个简单的例子,只能在LocalServer上调用RemoteServer上的存储过程,若要在RemoteServer调用上LocalServer上的存储过程则要在RemoteServer进行同样的设置(添加Remote Server、重新配置RemoteServer的参数等),并且要保证LocalServer的"enable remote access"的值为"1"。 



14) ASE在windows xp/2000上安装的二个注意的问题
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1522&show=150
本人近日在Windows xp上安装Sybase ASE12.5开发版作学习之用。遇到了一点麻烦,现将解决办法介绍给大家参考,如有还有类似的问题可联系我:email: learun@hotmail.com 
一、ASE12.4 在XP下中文乱码解决办法: 
   查看注册表,在键:key_local_machine\software\microsoft\windows NT\CurrentVersion\CurrentVerison中,可知当前系统版本为5.1 

   进入Sybase源安装目录,查看run.bat文件,找到一行:set JAVA_HOME=.\shared-1_0\jre1.2.2,
然后进入: .\shared-1_0\jre1.2.2\lib目录,将文件font.properties.zh.NT4.0的名称改为font.properties.zh.NT5.1即可。如果源目录在光 
盘上,将jre1.2.2目录、run.bat文件拷到硬盘上,修改run.bat中的JAVA_HOME项,然后运行run.bat. 

  安装后,基于中文的管理工具依然会出现乱吗,按上面的方法更改%sybase%\shared-1_0\jre1.2.2\lib中的font.properties.zh.NT4.0文件 
名。 
  一些windows操作系统的版本号: 
  windows9898
  windows nt4nt4.0
  windwos 2000nt5.0
  windows xpnt5.1 

二、网络地址 
  安装过程中,需要配置sql server和sybase xp server的网络地址。在安装界面上,对网络地址没有什么说明,如果输入错了,也没什么提 
示。它其实与协议类型有关,如果是TCP协议,它的构成为:机器名(或IP地址), 端口号。例如:myserver,9001 。在安装后也可以用 
“Dsedit"来编辑。网络地址很重要,如果错了,服务器无法启动。 
  另:当启动信息中含有:in module 'e:\rel12501\porttree\svr\sql\generic\ksource\strmio\n_winsock.c' 。不必为这句话迷惑,这是 
Sybase程序的硬编码输出,与你的E盘有无此文件无关。 
15) 关于数据库锁
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1118&show=120
SYBASE 11.9以上的版本提供行级锁。
锁类型选择的确是sybase数据库设计的一个需要重要考虑的问题!见大家讨论的如此火热,特上点干材支持一把,来点关于lock的借介绍性资料! 

所支持的加锁机制 
2.1 全页加锁 
  全页加锁既是一个新术语,它又是由ASE(Adaptive Server Enterprise)在过去所支持的一种加锁类型。这种类型有下列特性: 
对所有可被访问的页面在页面级加锁 
当各种类型的页面以任何方式发生改变时,对这些排它性的页面进行加锁;而且这种加锁机制一直保持到该事务终止; 
当下一个所需的页面已经成功地获得,对那些已经释放的的当前访问页进行共享页面加锁(如果采用了第三层ANSI隔离,则把这种加锁机制保持到该事务终止为止) 
采用页级时间印记(timestamp)以确定是否发生改变,详细信息记录在事务日志中,以便在系统恢复时以向前或向后方式使用。 
  这种加锁方式常常提供性能最高的解决方案,特别是当应用设计时已经考虑了这些特性时更是如此。但是,有一些应用系统,当发生某些活动时,这种对整个页面进行加锁的方式就可能会对系统性能产生有重大意义的影响。对于那些面对诸如文件系统或其它已经支持更细小尺度加锁机制的数据库厂家产品的一般环境而设计的应用系统而言,这种情况尤其如此。 
  此外,还存在一系列问题,它们要围绕着更加困难的条件进行工作。它们通常要采用更加具有Sybase特性的解决方案。对于商用的应用软件制造厂商而言,对他们是一个挑战,因为这将要求他们必须跨越他们所支持的数据库平台,去完成维护其原代码的工作,而这个工作有相当工作量。在这个领域的基本问题如下: 
对已经按照升序值创建的非群聚性索引的最末端叶型页面存在着争议 
对非群聚性索引的表进行插入和查询时可能发生死锁; 
在按照群聚性的索引值进行更新和对非群聚性索引的表进行查询访问之间可能发生死锁; 
在没有作索引的表的最后一行可能发生冲突(尽管对最后的特定地址可以使用分区) ; 
有可能使行数很少的表之间发生潜在的冲突(尽管对特定的地址可以使用填充因子[ fillfactors]和每页最大行数[ max_rows_per_page]这两个参数) 
对每个页面两边进行加锁的需要常常被分割开来; 
如果一个表特别小,以致在一个单一页面中进行驻留,那么对单一行的访问实际上将破坏对整个表的加锁机制。 
2.2 仅对数据加锁 
  仅对数据加锁机制试图去解决本文前一节所关注的主要问题(其他的议题将在其它功能领域中加以解决)。这种加锁方式支持两类不同的工作方式: 数据行加锁和数据页加锁。在这两种情况中,对于它们所支持的加锁方式,都与以前的加锁机制有所不同。仅对数据加锁具有下列特性: 
在索引页面中不会破坏事务加锁。相反,而是采用了一种称之为锁存的机制。锁存是一种类似于旋转锁(spinlocks)的同步方法,它们与事务无关并且只保留很短的周期(一般而言,当一个任务在数据库中物理上改变一小片数据时,这个周期相当于在共享存贮区中在一个2K的页面改变某些字节数据的时间)一旦完成之后,这个任务将直接打开这个锁存。当这种情况还可能临时同其它组块时 ,因为这种锁存不能对服务器任务进行有上下文的切换,也不能涉及死锁,并且只能保持主要的一小段时间,所以它们不能产生有显著意义的争用。 
采用一个RID对单一行进行数据行加锁(行标识[RID----Row ID]是逻辑页号与所在页面上该行号的组合); 
支持固定的行标识 RIDs, 它可以是向前的,允许不进行其RID的改变,就完成数据行的移动。当一行变大超过了它的可用空间时,采用上述结果对非群聚索引不需要进行任何改变。 
不需要进行任何争用就可以在表的尾部进行插入操作,这一功能已经增加进来。. 
支持采用范围加锁、下一个关键字加锁和无限大加锁等方式对逻辑范围值进行加锁 
支持由最顶层操作所导致的页面分割。这些情况直接加以提交,"系统"事务可以导致在更短一点的时间周期里保持分裂的页面处于锁定状态。 
  为了支持这些变化,需要对采用的存贮表结构进行一系列改善。这些改进的主要效果如下: 
群聚索引现在被存贮为象许多人所熟悉的IBM DB2产品所采用的"放置索引"("placement indexes.")方式。这种结构类似于非群聚性的索引,需要类似的空间总量。这种修正的结构导致了在数据初始存贮时可以按照顺序跨数据页进行存储,但是当发生插入时,它们就要尽可能紧密存放以便在正确的逻辑页面中不存在页面分割。此外,在数据页中的数据顺序在新行增加时是不进行维护整理的。这种索引的应用使每个群聚化的索引周游增加了一次I/O操作。 
行位移表已经增加到索引页和数据页中。这种增加和新的行索引行存贮格式具有使每个索引页面所存贮的索引条目个数减少的潜在能力。 
固定行标识(RIDS)。当一行移动时,对于分配新行位置的向前地址被放在用于驻留该行的位置上。当这种移动需要改变非群聚性索引时,对该行的访问需要增加一次I/O操作以得到'向前'的位置。 
一般而言,索引将更小和更短,这是因为如下原因: 
从每个叶级页面中采用双重键限制机制来限制双重键(Duplicate key)例如,如果值"绿"("GREEN")在下列行标识(RIDs)值等于123-1,234-2,和345-3的行中, 就分别存贮值“绿”("GREEN"),123-1,234-2,345-3,而不是存贮值"绿"("GREEN,")三次。在每个索引页中每个值只存贮一次。 
在非群聚性索引树的非叶型结点中将后缀实行压缩(例如,如果键值是"GREEN"和"HAMILTON",而在这两个值之间发生分裂,那么就在非页级索引页面中存储"G"和"H"
2.3 数据页和数据行加锁 
  只对数据加锁机制支持两种方式:数据页加锁和数据行加锁。这些与它们的工作方式和所提供的功能相类似。这两种方式仅在对数据访问产生阻碍作用时,在加锁的尺度上有所区别。在数据页加锁方式下再采用数据行加锁方式具有两种作用(一种起正向作用,另一种起反向作用)。首先,较小尺度加锁机制的使用可能导致减少争用与冲突,然而当大量数据发生变化时,就有可能对加锁产生大量阻碍的情况发生。 
2.4 特定使用的加锁类型 
  除非对配置参数加以特定,对所有的表都予置了隐含的全页面加锁机制。 
sp_configure 'lock scheme', [allpages | datapages | datarows] 
  当数据库从原先版本的服务器中转储出来重新加载时,所有的表都被定义为全页面加锁的表。当建立一个新表时,可以不使用这个缺省值,可采用如下的句法格式: 
create table <tablename>… lock [allpages | datapages | datarows] 
  为了在使用的一个表中改变加锁类型,可以采用如下的句法格式: 
alter table <tablename> lock [allpages | datapages | datarows] 
  在一个现存的表中改变加锁方式,将引起下列三种行动后果发生: 
首先,如果一张表从全页加锁转变为仅对数据加锁,或者从仅对数据加锁转变为全页加锁,在这两种类型之间就要对表进行选择以允许进行存贮格式改变。如果这是一个分区表,就要同时假定必要的并行级别和工作线程已经配置好的情况下,才能执行。 
其次, 对表中的群聚性索引必须重新创建。因为我们能保证数据,所以如果从全页加锁方式转换为只对数据加锁时,这种重新创建可以通过"with sorted_data"来完成。然而,当从仅对数据加锁机制转换为全页加锁方式时,就要进行并行的索引创建操作。(请注意:如果这是一个分区表时,那么并行等级和工作线程的数目必须加以配置才能允许进行这种改变,否则这种迁移将会失败) 
最后,非群聚性的索引将被重建,如果服务器已经为并行处理所加以配置,当进行本步骤时将加以采用。 
  由于这些活动同潜在的工作量有关,从全页加锁机制改变为仅对数据加锁或从仅对数据加锁改变为全页加锁机制都可能是耗费时间的活动。为了标注这一点,有以下一些选择: 
如果可能的话,应该配置使用并行方式。这至少对执行非群聚性索引的哈斯(杂凑,即hashed)创建方法是必须的,但是如果可能的话,采用分区表和分区扫描将使系统得到更大的改进。 
在选择进入和创建群聚性的索引之后,该任务将被设置检查点(checkpointed )所以,如果有充分的硬件资源,通过允许在任何一个时间点上,检查点任务可以具有多于10个(系统缺省值)的异步I/O请求,利用dbcc进行调谐将能够带来有益的效果。('maxwritedes', number) 
进一步作为降低使用检查点成本的一种方法,在相关的高速缓冲池(cache pool)、大数据量的I/O操作中,采用对高淘汰程度进行标记的方法,并允许清洁程序(好象家庭主妇一样

上一页  [1] [2] [3] [4]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台