
data_pages() 或者data_pgs()
curunreservedpgs()
通过这两个函数自己计算。
查看数据库内使用对象占用的空间
use xxxx ----你的数据库名字
go
--查看数据库内所有对象使用的数据空间:
select count( data_pages(db_id(),id,doampg) + data_pages(db_id(),id,ioampg)) from sysindexes where id <> 8
--查看数据库内日志空间:
select count( data_pages(db_id(),id,doampg) + data_pages(db_id(),id,ioampg)) from sysindexes where id
= 8
函数data_pages的第一个参数为数据库id,第二个参数为对象ID,第三个参数为 doampg或者ioampg分别表示统计数据、日志所占空间。
函数curunreservedpgs统计设备上面指定段的剩余空间。
sybase数据库是不少企业管理系统的常用数据库,可运行在windows和linux等 *** 作系统环境之下,适用性广。
>
列出某个数据库中所有表:
Select Name from sysobjects where Type='U'
列出数据库中某个表中的所有字段:
Select Name from syscolumns where ID=OBJECT_ID(N'TableName')
列出所有的数据库:
1)use master select from dbosysdatabases
2)exec sp_MSforeachdb N'use []select dbname=db_name(),username=user_name()'
; PowerBuilder(PB)是一种跨平台的且功能强大 性能优异的开发工具 在客户端/服务器系统结构的应用模式中 作为客户端的一种面向对象的可视化设计工具 在与数据库相连接 *** 作的系统中得到较为广泛的应用 笔者在使用PB开发Sybase数据库应用 建立企业管理信息系统的过程中 积累了一点经验和技巧 现将其中的一部分在此做点介绍 或许能够对朋友们有点启发和帮助
一 PowerBuilder与Sybase SQL Server的连接
若在连接时出现问题 必须要冷静多思考 首先要检查客户端的情况 确认Open Client已经安装 并正确配置 要注意OPen Client必须与PowerBuilder同为 位 或同为 位 PB与Sybase连不上 常见的几种错误现象及处理方法说明如下
已连接上Sybase数据库 但在PB的数据库(database)画板中却看不到用户已经定义过的表
此时可打开isql或Sybase Advantage 用 sa 登录到 master 数据库 执行pbsyc sql脚本文件(该文件位于PB安装盘的server目录)即可 值得一提的是 对Sybase Adaptive Server的版本号要加以注意 根据资料对有的相关项进行点改动
在打开PB的项目画板(Project)或库画板(Library)时 出现错误信息提示: cannot locate source management dll 这个问题是因为在安装PB时 选择了安装版本控制软件(如PVCS)的接口 实际上该用户的机器上并未安装相应的版本控制软件
解决方法: 在PB的设置中 将版本控制软件的接口去掉 具体 *** 作步骤是 可在PB ini文件中 找到[Library]节 将 SourceVendor= 这一行注释去掉
数据库连接正常 但打开用户表时若该表中有汉字则出现乱码
这个问题通常是由于客户端的缺省字符集设置和服务器端的字符集设置不一致 应修改locales dat文件(该文件位于Sybase安装目录的locales子目录下) 如果在Windows / *** 作系统下 可修改[NT]节下的相关内容
若 *** 作系统平台是Windows x 则修改[win ]节下的内容 在此节有一行文本为locale=default us_english is _ 则说明客户端的缺省字符集设为iso_ 开发中文管理信息系统一般建议将字符集改为cp o 在服务器端必须要做相应的调整
二 PB编程的几点技巧
在数据窗口(Datawindow)中实现数据列自动折行
PB软件在市场上受用户欢迎的原因之一 就是它的数据窗口功能很强 而且方便应用 在使用Datawindow时 常会遇到某列的数据太长 不能同时显示全部的情况 若采用自动水平滚动 *** 作起来又不够简便 有一种方法能实现列数据多行显示(自动折行) 具体步骤如下
① 在Datawindow Panter中打开此DataWindow 在需设定自动折行的列上双击鼠标 d开此列的属性窗口 点Position标签 选中Autosize Heigh多选框; 再选择Edit标签 不选中Auto HorzScroll多选框 单击OK按钮 保存所做的修改
② 点中Detail Band(即写有Detail的灰色长带) 单击鼠标右键 选择Properties 菜单项 选中Autosize Height多选框 单击OK按钮 保存所做的修改
lishixinzhi/Article/program/PB/201311/24574
data_pages() 或者data_pgs()
curunreservedpgs()
通过这两个函数自己计算。
查看数据库内使用对象占用的空间
use xxxx ----你的数据库名字
go
--查看数据库内所有对象使用的数据空间:
select count( data_pages(db_id(),id,doampg) + data_pages(db_id(),id,ioampg)) from sysindexes where id <> 8
--查看数据库内日志空间:
select count( data_pages(db_id(),id,doampg) + data_pages(db_id(),id,ioampg)) from sysindexes where id
= 8
函数data_pages的第一个参数为数据库id,第二个参数为对象ID,第三个参数为 doampg或者ioampg分别表示统计数据、日志所占空间。
函数curunreservedpgs统计设备上面指定段的剩余空间。
作者: 佘涛 对于像Sybase这样的大型DBMS系统而言 作为OLTP(联机事务处理)应用的基石 它需要能每天 小时 每年 天不间断运行 由于其应用程序每天对数据库进行大量的插入 更新 删除等 *** 作 在数据库的物理存储介质上产生了大量存储碎片 从而影响了存储的效率以及数据库应用运行的速度 是否可以像Windows *** 作系统的 碎片整理 程序一样 整理这些碎片 从而优化数据库存储 提高数据库的运行速度呢?答案是肯定的 本文将介绍Sybase数据库的碎片类型以及碎片整理方法 碎片类型 由于Sybase是通过OAM页 分配单元和扩展页来管理数据的 所以对OLTP应用的Database Server会十分频繁地进行数据删除 插入和更新等 *** 作 时间一长就会出现以下几种情况 页碎片 即本来可以存放在一个页上的数据却分散地存储在多个页上 如果这些页存储在不同的扩展单元上 Database Server就要访问多个扩展单元 因此降低了系统性能 扩展单元碎片 在堆表中 当删除数据链中间的记录行时 会出现空页 随着空页的累积 扩展单元的利用率也会下降 从而出现扩展单元碎片 带cluster index的table也有可能出现扩展单元碎片 当有扩展单元碎片存在 会出现以下问题 ● 对表进行处理时 常常出现死锁 ● 利用较大的I/O *** 作或增加I/O缓冲区的大小也无法改变较慢的I/O速度 ● 行 *** 作的争用 扩展单元遍历 带有cluster index的table会由于插入记录而导致页分裂 但当删除记录后 页会获得释放 从而形成跨几个扩展单元和分配单元的数据 而要访问该数据就必须遍历几个扩展单元和分配单元 这将导致访问/查询记录的时间大大延长 开始时数据库的性能虽然较高 但使用一段时间后性能就会下降等问题 实际上 数据在存储空间上排列得越紧密有序 Database Server访问的速度就越快 消除碎片有助于提高系统的性能和更有效地利用数据存储空间 碎片优化方法 处理碎片有多种方法 如重新定义table的填充因子 根据table的定义删除并重新创建索引 重建表等 本文给出的方法是通过BCP实用程序将用户数据库的数据以文本形式导出 然后将用户数据库彻底清空 截断 再将文本数据导入到数据库 从而达到消除碎片的目的 具有通用性 下面以Sun Solaris *** 作系统下的Sybase Adaptive Server Enterprise 为例 说明整理数据库数据的具体方法 备份数据库 为防止在数据库碎片整理过程中出现不可预见的问题 有必要先备份数据库 创建bcp out脚本并导出数据 ● 创建包含下列SQL语句的文件 cre_bcp_out sql select bcp + name + out / + name + _out txt Udboname Pdbopwd Ssys_name c from sysobjects where type = U order by name go ● isql Udboname Pdbopwd Ssystemname < cre_bcp_out sql > b_out ● 编辑输出文件 去掉文件第一行和最后两行无关的字符 vi b_out ● 执行脚本 将数据库的数据导出到文本文件 sh b_out 创建truncate table脚本并截断数据库 ● 创建包含下列SQL语句的文件 cre_trunc_out sql select truncate table + name from sysobjects where type = U order by name go ● isql Udboname Pdbopwd Ssystemname < cre_ trunc_out sql > trunc_out sql ● 编辑输出文件 去掉文件第一行和最后两行无关的字符 并在最后一行加入 go构成完整的SQL语句 vi trunc_out ● 执行以下语句 清空数据库的数据 isql Udboname Pdbopwd < trunc_out sql 4 创建bcp in脚本并导入数据 ● 创建包含下列SQL语句的文件: cre_bcp_in sql select “bcp” + name + “in /” + name + “_outtxt -Udboname -Pdbopwd -Ssys_name -c”from sysobjects where type = ‘U’ order by name go ● isql -Udboname -Pdbopwd -Ssystemname < cre_ bcp_in sql > b_in ● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_in ● 从文本中导入数据:sh b_in 5 更新数据库状态 Sybase不自动维护索引的统计信息,当用truncate table截断数据库时,索引并没有改变,所以必须用update statistics来确保索引的统计信息对应当前表数据的统计。tWWiNgwiT ● 创建包含下列SQL语句的文件: cre_upd_st sql select “update statistics” + name from sysobjects where type = “U” order by name go ● isql -Udboname -Pdbopasswd -Ssystemname < cre_upd_st sql > upd_st sql ● 编辑输出文件,去掉文件第一行和最后两行无关的字符,在最后一行加入 go构成完整的SQL语句: vi upd_st sql ● 更新数据库状态: isql -Udboname -Pdbopasswd -Ssystemname < upd_st sql 至此,基本上完成了数据库用户表的碎片整理工作。 小 结 在整理过程中,有以下两点需要注意: 1 Tempdb的大小 当Sybase执行bcp in脚本时,会占用导入数据2倍的tempdb空间,因此在执行前要仔细估计最大的table的大小,保证有足够的tempdb空间。当空间不够时,要考虑用分割table或删除陈旧数据的方法缩小table的大小,或者考虑增加tempdb的大小。 2 数据库配置选项的设置 当数据库执行bcp in脚本时会产生大量的log,为保证bcp in进程不致因为log溢出而中断,应该设置database的选项“truncate log on cpt”为“true”。 虽然Sybase数据库是自优化的,但只要数据库是动态的,数据库碎片现象就会存在。在OLTP应用的场合,随着数据的不断增大,系统变得越来越缓慢,并且经常出现死锁时,应该检查数据库的碎片,并且采用以上方法进行优化。 实际上,应该定期做数据库的碎片整理,保证数据库的物理存储经常处于最优状态,相对于增加硬件而言,这是一种更好的保持数据库性能的低成本的途径。 lishixinzhi/Article/program/Oracle/201311/17019
以上就是关于如何判断sybase数据库的剩余空间全部的内容,包括:如何判断sybase数据库的剩余空间、如何查看sybase数据库运行情况、SyBase数据库用什么方法可以查看其数据内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)