看你的截图应该是ASE1254,业务可以停的前提下,我的做法是select into 新表 from 旧表,truncate table 旧表, select into 旧表 from 新表,这个不存在锁,比delete效率高。bcp out/in也可以,作为一个DBA应该不会在业务繁忙的时候做数据维护的,不知道你怎么考虑这个问题……
空间问题可能原因:
1、SybaseIQ的事务日志,存放在iq store中,由DBMS管理,所以所有表空间相加不等于数据库空间;
2、SybaseIQ运行过程中可能由于锁的机制,other version增大,可以通过数据库命令: sp_iqstatus查看;
3、空间分配上建议最后使用符号连接,底层变化,不影响dbspace 对应的路径和文件名。
故障现象:
1 sp_iqdbspace统计db空间,占用14TB,同时发现空间使用量,非正常的增长过快
2 sp_iqstatus查询db状态,发现other versions有很大的占用量
3 sp_iqdbsize统计db实际占用空间,发现占用12TB
4 存在数百G,空间的差异
5 由于备份空间问题,有进行增加盘柜空间动作,过程中,对write server有做停机维护,read server没有动作
故障原因:
1 系统为多节点架构1台write server,1台read server
2 重启write server,进行维护,没有通过sybase central,关闭read server的访问,导致read server上,有大量old version的数据,与write server数据不一致
3 old version数据,也是同样保存在iq的main db space中,所以,做sp_iqdbspace统计,会计算到这些数据,而做sp_iqdbsize,统计的是实际数据空间,故不会计算到这些old version的数据
4 old version的数据的检查,对应sp_iqdbsize中的other versions栏位,大小就是后面的数值
解决方法:
1 Sybase central中关闭read server的服务
2 write server上关闭多节点服务
3 write server重新启动IQ服务,让IQ系统做相应检测,释放other versions空间
4 启动多节点服务在write server上的Agent服务
5 在Sybase central中的多节点配置里,启动write server和read server的服务
6 启动后,SQL Remote,应该为active
7 在write server上sp_iqstatus,other version为0,问题解决
1 如何锁一个表的某一行
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT FROM table ROWLOCK WHERE id = 1
2 锁定数据库的一个表
SELECT FROM table WITH (HOLDLOCK)
加锁语句:
sybase:
update 表 set col1=col1 where 1=0 ;
MSSQL:
select col1 from 表 (tablockx) where 1=0 ;
oracle:
LOCK TABLE 表 IN EXCLUSIVE MODE ;
加锁后其它人不可 *** 作,直到加锁用户解锁,用commit或rollback解锁
以上就是关于sybase数据库,数据库正在使用,想大批量删除部分历史数据,但是删除的过程中经常上锁,影响数据库正常使全部的内容,包括:sybase数据库,数据库正在使用,想大批量删除部分历史数据,但是删除的过程中经常上锁,影响数据库正常使、请教关于Sybase IQ空间问题、sqlserver怎么实现一个行锁等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)