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

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3023 更新时间:2009/4/22 23:09:49
 
Note Although a status of zero is usually appropriate, it is not the only possible status value you can use. Reset the database to the actual, normal status it had prior to entering bypass recovery status. 

1. Reset the database status to 0:
1> sp_configure "allow updates", 1 
2> go 
1> begin tran 
2> go 
1> use master 
2> go 
1> update sysdatabases set status=0 where name=<database_name> 
2> go 
Check that the above update command affected only one row (if more than one row was affected, issue a rollback transaction.) Then commit the transaction and shut down Adaptive Server as follows: 
1>commit tran 
2>go 
1>shutdown with nowait 
2>go 
2. Restart Adaptive Server. Run dbcc checkdb and dbcc checkalloc on the affected database to make sure there are no errors. 
Version in Which This Error is Raised 
All versions. 
再次谢谢aladdin,freebob,changing。
6) 数据库表BCP出来报错 
 http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1326&show=300
数据库表BCP出来报错
DB-LIBRARY error
  I/O error while writing bcp data-file
bcp出来的文件正好2GB,实际应该更大。
操作系统SCO OpenServer5.0.4, SYBASE 11.0.3
请问是何原因?谢谢。
当在后备数据量大于2GB的数据库时,可能会遇到以下错误: 
I/Oerror: 
operating system error,server device /backup/data. code 27 messages 
file too large. 
  这是由于后备文件的大小超出了操作系统的用户最大文件限制。而有些操作系统不支持大于2GB的文件,这时可以使用Backup Server将一个数据库后备到多个文件中。 
  1>dump database pubs2 to "/usr/sybase/pubs2_dump.1" 
  2>stripe on "/usr/sybase/pubs2_dump.2" 
  3>stripe on "/usr/sybase/pubs2_dump.3" 
  4>go 
  这种方法还可以提高后备及恢复的速度,但注意恢复也必须用相应多的设备。例如: 
  1>load database pubs2 from "/usr/sybase/pubs2_dump.1" 
  2>stripe on "/usr/sybase/pubs2_dump.2" 
  3>stripe on "/usr/sybase/pubs2_dump.3" 
  4>go 

7) sybase的sa口令丢失怎样恢复? 
   http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1239&show=270
在RUN-SERVER文件中加入一行-psa,重起dataserver,在控制台上可以看见新的口令 
http://www.powerba.com/develop/database/sybase/article/20010505001.htm

 sybase表中如何删掉多条相同的记录? 
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1438&start=0&show=180
sybase表中如何删掉多条相同的记录?
由于表出问题,将没有进行处理的*.txt文件bcp到表中,其中含有大量的重复记录。
请问有没有办法将表中重复的记录删掉呢?

那好办,那你就可以使用下面语句将唯一的记录先插入到临时表中:
select distinct a ,b,c,d ... into tempdb..tempdb_table from tablename
然后清空原表,把临时表中的数据插入正式表中!
试试看 

可以参考这种经典方法:
1---select * into tmp_tab from your_dup_tab where 1=2
2---若表无唯一性索引则建一个唯一性索引(一定能找到一个唯一性的索引建(复合索引))create unique index(列名1,列名2...) on tmp_tab with ignore_dup_key.
3----insert into tmp_tab from your_dup_tab
这样在新表中将自动删出重复记录。但数据量过大请留意日志空间(sp_spaceused syslogs).
很使用的方法.try it!

9) 关于阀值
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1231&show=180
发告警或者水自动溢出,以保护系统不至于达到危险境界。对于数据库而言,我们使用的存储设备毕竟有限,如果任由数据或日志增长,数据或日志日久天长终将占用所有存储设备,如果到了没有空间的时候,系统将挂起,这样业务将暂停。所以对于一些要求数据库可用性很高的系统,必须保证在可预见的情况下数据段或者日志段不至于没有空间!为做到这一点,传统的数据库一般都需要系统维护人员经常的定期的进行数据库检查,若数据段不够了,转储一部分数据或者增加一些设备,若日志空间不够了,转储日志!但这样系统管理员就有点累了!
为减轻系统管理员的负担,提高系统的自动化程度,sybase提出了用阀值进行自动管理的这样一种模式,只要在开始定义好各段的阀值,以及达到阀值后的处理存储过程,就可以实现自动管理了!
不过,我先前也想这样做,也研究了一阵子,但是后来还是放弃了这种懒惰的办法。因为使用阀值管理可能出现一些意想不到的问题,什么问题现在还没想到,只是sybase不推荐在大系统中这样做!再加上本身系统有omni back备份软件,何必自找麻烦呢!

10) 什么SYBASE安装完后要增加TEMPDB的空间?
  http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1444&show=180
扩展后sp_helpdb tempdb看应改master设备上是data/log的
你use tempdb
sp_dropsegment 'default',tempdb,master
sp_dropsegment system,tempdb,master
sp_dropsegment logsegment,tempdb,master
后,
sp_helpdb tempdb
select db_name(dbid),segmap,lstart,size,vstart,pad,unreservedpgs
from sysusages
where dbid=2
贴出来
如果第一行中segmap为0,就ok


你们回答的什么,驴唇不对马嘴(呵呵,开玩笑)
一般情况下数据库装好之后,都要给tempdb增加空间,因为在用户数据库中的很多插入,删除等操作需要用到tempdb数据库作为临时存储空间,所以要增大他的空间,否则可能你的事务不能执行 

http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=185&show=120

sybase 临时数据库 
缺省情况下,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"
说明:在同一个存储过程或批处理中,创建并使用一个表时,查询优化器无法决定这个表的大小。
结论:通过本实验我们知道,临时数据库经过优化可以极大的提高系统性能。实际工作中,必须考虑具体应用的情况,需长时间经验的积累。

11) 怎样利用脚本自动关闭sybase数据库 
  http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1484&show=180
不知你什么平台,如果是unix,ksh
#!/bin/ksh 
LOGIN="`whoami`"
if [ "${LOGIN}" != "sybase" ]; then
  echo "`basename $0`: You should login as 'sybase'\n"
  exit 0
fi 
 echo "\n\n"
{
 isql -Usa -P -Syourservername > /dev/null 2>&1 <<ISQL
use master
go
shutdown SYB_BACKUP
go
shutdown
go
ISQL
}

12) 请教存储过程动态使用表 
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1488&show=180
你指动态sql
要12.0版本以上才支持
CREATE PROCEDURE dbo.mytt 
(@c varchar(25))  
AS 
   BEGIN 
declare @cc varchar(25)
select @cc = "select * from " + @c
exec (@cc)
   END

13) sybase中的跨库操作
http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=10&topic=1489&show=150
假如本机server为loc_server,远程server为re_server 
在这两个server 各自的interface文件里都必须有定义
sp_configure "allow remote access"是否为1; 

在本机server上:
 sp_addserver re_server
 sp_addserver loc_server,LOCAL --->这样你select @@servername就有东西
在remote server 上:
 sp_addserver loc_server
 sp_addserver re_server,LOCAL 
在2个server 上
 sp_addremotelogin ...... 
检查这两个参数
number of remote sites 
number of remote connections . 
然后:
 如果isql从loc_server 到rs_server
 connect to rs_server
 disconnect 
 rs_server...sp_who在loc_s

上一页  [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……
    咸宁网络警察报警平台