sybase数据库 如何使用sql语句查询,数据库容量大小和数据库使用量大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sybase数据库 如何使用sql语句查询,数据库容量大小和数据库使用量大小相关的知识,希望对你有一定的参考价值。

Sybase公司是世界著名的数据库厂家,其关系数据库产品SYBASE SQL Server在中国大中型企事业单位中拥有大量的用户。针对获取数据库相关信息也提供了对应的API,以便管理进行维护。
一.sp_spaceused 可看到数据库空间包括日志(对应数据库)
打开Sql Advantage 对话框——输入sp_spaceused(上边数据库选择要查的数据库)或直接
use your_db_name
go
sp_spaceused
go
运行!出现如下信息
Database name:数据库名称
Datebase Size:数据库空间总大小
Reserved:已分配空间
data数据:已分配空间中数据占用空间大小
index_size索引:已分配空间中index_size索引占用空间大小
unused:为已分配空间中未使用空间大小
计算关系:
reserved(已分配空间)=data+index_size+unused
剩余空间= Datebase Size(总空间)—已分配空间(resrved)

二.sp_helpdb db_name 可看到数据库占用的数据库设备device的空间信息(对应数据库设备和数据库)
打开Sql Advantage 对话框——输入sp_s helpdb db local(local为要看的数据库名字如不输入则显示所有数据库)
运行!显示如下信息:
(一).数据库方面
1. name:数据库名字
2. db_size:数据库空间大小
3. owner:数据库所有者
4. created:数据库创建时间
5. status:状态
(二).数据库设备方面
1. device_fragments:数据库设备名称
2. size:数据库占用数据库设备的空间大小 单位MB
3. usage:用法 用途
4. created:数据库占用的数据库设备的空间的创建时间
5. free kbytes :数据库占用的数据库设备的剩余空间 单位KB
6. log only free
kbytes:数据库日志设备中日志剩余空间 单位KB

注意:由于数据库创建后不一定全部占用数据库设备的所有空间,可以在以后通过增加的方法占用设备空间,因此每增加一次就会有一条数据库设备信息

计算关系:

剩余空间=所有free Kbytes(剩余KB)相加+log only
free Kbytes

数据库占用数据库设备总空间(size)=size1+size2+……..(所有相加)=数据库总空间(db_size)=
reserved(已分配空间)+剩余空间

free Kbytes(剩余KB)相加+log only free Kbytes= Datebase
Size(总空间)—已分配空间(resrved)
参考技术A 如sybase数据库的主界面中,
在tools 菜单有个Command 菜单项,在这里就可以输入命令了。
参考技术B 使用isql连接数据库,执行 :

sp_helpdb
go

在shell脚本中使用 isql 执行SQL语句 查询sybase数据库中满足条件的记录条数,怎么把查询结果赋给变量?

语句如下:
#!/bin/bash
isql -U natuser -P zjtt@nat -S natdb <<END
use natdb
go
select count(*) from test_userdata
go
END
这个执行完后,我想判断是否存在记录,存在的话我就update,不存在的话我就insert,但是不知道怎么把结果赋给变量,也就不知道该怎么判断。刚学shell,很多概念不大懂,在线等。

参考技术A 注意此处:
isql -U natuser -P zjtt@nat -S natdb <<END
如下供参考
·1 若要重定向到文件
isql -U natuser -P zjtt@nat -S natdb <<END >out.txt
即将查询结果重定向到out.txt文件中

·2若要输出至变量
isql -U natuser -P zjtt@nat -S natdb <<END |read xarg

·3若要循环输出至变量,可参照read方式类推追问

今天测试 写到文件可行,写到变量貌似不行。不过最后我用shell调用存储过程解决了。

追答

【基于oracle数据库】
·1、如果想将sqlplus的多个查询结果循环输出至变量,那是不明智的选择。
-->因为,sqlplus的查询有点儿封闭,如果采用while循环将查询结果赋值给变量,那就会导致每输出一行,就会执行一次sqlplus,效率低下至极,所以一般都是将查询结果为多行的操作先一次输出至文件,在利用文件执行遍历。附利用sqlplus执行多行查询并输出至变量:
sqlplus -s uid/pwd@ora_tns <<!| while read stout
select col_a,col_b from table;
!
do
echo $col_a,$col_b
done
______________________________________________________________________

没用过Sybase啊,抱歉

本回答被提问者采纳

以上是关于sybase数据库 如何使用sql语句查询,数据库容量大小和数据库使用量大小的主要内容,如果未能解决你的问题,请参考以下文章

怎么通过excel连接Sybase IQ数据库?然后可以在excel里面通过SQL查询该数据库

SQL如何显示查询结果的前100条?

SQL查询语句是啥?

我们正在使用Sybase / ODBC如何在运行长批量SQL查询时处理断开连接?

Sybase 上的慢速 SQL 查询

可能的sybase sql查询