
dba_segments表内的bytes字段,这个不是完全正确, 不过基本来说还比较靠谱。
这个数据量是以字节为单位的。如果要查条数,那么就真的没有什么办法了,但是如果你每天都分析表,那么还可以在统计信息的表内查到,如果不是每天统计,那么基本就没有办法了。
看创建时间吧,可以用一个伪劣来看,ORA_ROWSCN,这个代表记录的变动
select ORA_ROWSCN,t from table t
可以用SCN_TO_TIMESTAMP(ora_rowscn)这个函数来看到ora_rowscn所代表的变动点,也就是时间
用具有dba权限的用户,执行下面的命令,查询目前表空间的使用率
select
from
dba_tablespace_usage_metrics;
可以将这个查询结果每天保存一次,就能观察到表空间的增长状况了。
查看方法:
1、查看所有表空间及表空间大小:
select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;
2、查看所有表空间对应的数据文件:
select tablespace_name,file_name from dba_data_files;
3、修改数据文件大小:
alter database datafile 'H:\ORACLE\PRODUCT\1010\ORADATA\ORACLE\USERS01DBF' RESIZE 10240M;
扩展资料
每张表都是作为“段”来存储的,可以通过user_segments视图查看其相应信息。
段(segments)的定义:如果创建一个堆组织表,则该表就是一个段。
sql:SELECT segment_name AS TABLENAME,BYTES FROM user_segments WHERE segment_name='表名'。
解释:
segment_name 就是要查询的表名(大写),BYTES 为表存储所占用的字节数。本sql的意思就是查询出表名和表所占的存储空间大小。
参考资料
csdn:怎么查看oracle数据库大小
这个值只能估算,可以查询数据字典表 user_tables ,
相关字段有 :
1 num_rows -- 数据总行数
2 blocks -- 占用数据块个数
3 empty_blocks -- 空闲块个数
4 avg_row_len 平均每行数据字节数
可用 下面公式推算:
每行占用空间大小 = 已使用块数(blocks - empty_blocks) / 总行数 每个块大小 (32位系统默认8K)
大型数据库系统中往往要用到查询统计 但是对于数据量大的系统 用户在进行复杂的查询统计时往往感到速度很慢 不能满足应用要求 这就要求我们在设计数据库系统时进行合理设置 提高查询统计的速度 本文结合笔者的项目开发经验 阐述具体的设置方法
以oracle 数据库系统为例 我们在开发大型oracle数据库系统时结合项目的特点 本着安全 高效的原则对数据库进行了一些物理设计 从而大大提高了数据库的查询统计速度 总结为如下几点
)扩大数据表空间到 M 用于存放本系统的数据;
)段盘区的初始大小为 K 增长大小为 K 增长幅度为 ;
)用户临时空间增大 M;
)系统临时表空间和回滚段表空间增大 M 并且新建 个回滚段;
)需要经常联结查询 而且数据量又大的库存表 名录表 收发料表放在一簇内;
)提供定时备份 备份文件放在另外的机器上
设置数据表空间的SQL语句如下
CREATE TABLESPACE WXGL_DATA DATAFILE WXGL_DATA ORA SIZE M ONLINE;
增加系统临时表空间和回滚段表空间的SQL语句如下
ALTER TABLESPACE TEMPORARY_DATA ADD DATAFILE TMP ORCL ORA SIZE M; ALTER TABLESPACE ROLLBACK_DATA ADD DATAFILE RBS ORCL ORA SIZE M;
将数据空间设置在指定的数据文件的SQL语句如下
CREATE USER ZBGL IDENTIFIED BY ZBGL; GRANT DBA TO ZBGL; ALTER USER ZBGL DEFAULT TABLESPACE WXGL_DATA TEMPORARY TABLESPACE TEMPORARY_DATA; 设置五个回滚段的SQL语句如下 SELECT SEGMENT_NAME FROM DBA_ROLLBACK_SEGS WHERE INITIAL_EXTENT < AND UPPPER(OWNER) = PUBLIC ; SELECT UPPER(STATUS) FROM DBA_ROLLBACK_SEGS WHERE UPPER(SEGMENT_NAME) = ALTER ROLLBACK SEGMENT RB OFFLINE; ALTER ROLLBACK SEGMENT RB OFFLINE; ALTER ROLLBACK SEGMENT RB OFFLINE; ALTER ROLLBACK SEGMENT RB OFFLINE; ALTER ROLLBACK SEGMENT RB OFFLINE; DROP ROLLBACK SEGMENT RB ; DROP ROLLBACK SEGMENT RB ;
DROP ROLLBACK SEGMENT RB ; DROP ROLLBACK SEGMENT RB ; DROP ROLLBACK SEGMENT RB ; CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA STORAGE (INITIAL NEXT MAXEXTENTS ); CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA STORAGE (INITIAL NEXT MAXEXTENTS ); CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA STORAGE (INITIAL NEXT MAXEXTENTS ); CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA STORAGE (INITIAL NEXT MAXEXTENTS ); CREATE PUBLIC ROLLBACK SEGMENT RB TABLESPACE ROLLBACK_DATA STORAGE (INITIAL NEXT MAXEXTENTS ); ALTER ROLLBACK SEGMENT RB ONLINE; ALTER ROLLBACK SEGMENT RB ONLINE; ALTER ROLLBACK SEGMENT RB ONLINE; ALTER ROLLBACK SEGMENT RB ONLINE; ALTER ROLLBACK SEGMENT RB ONLINE; MIT;
将数据量大的库存表等放在一簇内的SQL语句如下
lishixinzhi/Article/program/Oracle/201311/18984
如果是oracle9i版本,可以考虑如下两步实现:
(10g直接执行第二步就可以了)
统计一个用户下所有表的行数:
1exec
dbms_statsgather_schema_stats(owner=>'用户名');
2select
sum(num_rows)
from
user_tables;
统计全库所有表的行数:
1exec
dbms_statsgather_database_stats(estimate_percent=>'30');
2select
sum(num_rows)
from
dba_tables;
生产环境中需谨慎考虑收集新的统计信息后对应用产生的影响。
用一个过程
create or replace procedure procedure_name as
begin
insert into 统计表
select 字段名1,count(1) from 表 group by 字段名1
--统计表中的字段。(字段名1,数量)。如果有其它字段,请加入到下面select语句中。如:
/ insert into 统计表
select 字段名1,sysdate,'统计者的姓名', count(1) from 表 group by 字段名1/
end;
以上就是关于怎么查看oracle数据库数据量大小全部的内容,包括:怎么查看oracle数据库数据量大小、oracle 如何看表的增量、oracle数据库怎么查看表空间的增长状况等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)