查看表空间数据文件
Oracle管理表空间和数据文件详解

Oracle管理表空间和数据⽂件详解介绍表空间是数据库的逻辑组成部分从物理上将:数据库数据存放在数据⽂件中从逻辑上将:数据库则是存放在表空间中表空间由⼀个或是多个数据⽂件组成数据库的逻辑结构介绍:Oracle中逻辑结构包括表空间、段、区、块说明:数据库由表空间构成⽽表空间⼜是由段构成⽽段⼜是由区构成⽽区⼜是由Oracle块构成这样的⼀种结果,可以提⾼数据库的效率表空间介绍:表空间⽤于从逻辑上组织数据库的数据数据库逻辑上是由⼀个或是多个表空间组成的表空间的作⽤:1、控制数据库占⽤的磁盘空间2、dba可以将不同数据类型部署到不同的位置。
这样有利于提⾼i/o性能,同时利于备份和恢复等管理操作建⽴表空间建⽴表空间是使⽤create tablespace命令完成的,要注意时,⼀般情况下,建⽴表空间是特权⽤户或是dba来执⾏的,如果⽤其它⽤户来创建表空间,则⽤户必须要具有create tablespace的系统权限建⽴数据表空间在建⽴数据库后,为便于管理表,最好建⽴⾃⼰的表空间create tablespace 表空间名 datafile '数据⽂件路径' size 数据⽂件的⼤⼩ uniform size 区的⼤⼩;create tablespace tangtao001 datafile 'd:\t001.dbf' size 20m uniform size 128k;使⽤数据表空间向新建的表空间添加表:create table myDept(deptno number(4),dname varchar2(15),loc varchar2(13)) tablespace tangtao001;说明:执⾏完上述命令后,会建⽴名称为tangtao001 的表空间,并为该表空间建⽴名称为t001.dbf的数据⽂件,区的⼤⼩为128k1、显⽰表空间信息a) 查询数据字典视图dba_tablespaces。
查看Oracle数据库表空间大小,是否需要增加表空间的数据文件

from
(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b
--4确认磁盘空间足够,增加一个数据文件
alter tablespace MLOG_NORM_SPACE
add datafile '/oracle/oms/oradata/mlog/Mlog_Norm_data001.dbf'
size 10M autoextend on maxsize 20G
select file_name,tablespace_name,bytes/1024/1024 "bytes MB",maxbytes/1024/1024 "maxbytes MB" from dba_data_files
where tablespace_name='MLOG_NORM_SPACE';
--3比如MLOG_NORM_SPACE表空间目前的大小为19GB,但最大每个数据文件只能为20GB,数据文件快要写满,可以增加表空间的数据文件
用操作系统UNIX、Linux中的df -g命令(查看下可以使用的磁盘空间大小)
获取创建表空间的语句:
Oracle 表空间查询与操作方法 电脑资料

Oracle 表空间查询与操作方法电脑资料一,1.查询oracle表空间的使用情况select b.fileid 文件ID,b.tablespacename 表空间,b.filename 物理文件名,b.bytes 总字节数,(b.bytes-sum(nvl(a.bytes,0))) 已使用,sum(nvl(a.bytes,0)) 剩余,sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比from dbafreespace a,dbadatafiles bwhere a.fileid=b.fileidgroup by b.tablespacename,b.filename,b.fileid,b.bytesorder by b.tablespacename2.查询oracle系统用户的默认表空间和临时表空间select defaulttablespace,temporarytablespace from dbausers 3.查询单张表的使用情况select segmentname,bytes from dbasegments where segmentname = 'RESTDEVTFACTDAY' and wner = USERRESTDEVTFACTDAY是您要查询的表名称4.查询所有用户表使用大小的前三十名select * from (select segmentname,bytes from dbasegments where wner = USER order by bytes desc ) where rownum <= 30 5.查询当前用户默认表空间的使用情况selecttablespacename,sum(totalContent),sum(usecontent),sum(sparec ontent),avg(sparepercent)from(SELECT b.fileid as id,b.tablespacename as tablespacename,b.bytes as totalContent,(b.bytes-sum(nvl(a.bytes,0))) as usecontent,sum(nvl(a.bytes,0)) as sparecontent,sum(nvl(a.bytes,0))/(b.bytes)*100 as sparepercentFROM dbafreespace a,dbadatafiles bWHERE a.fileid=b.fileid and b.tablespacename = (select defaulttablespace from dbausers where username = user) group by b.tablespacename,b.filename,b.fileid,b.bytes)GROUP BY tablespacename6.查询用户表空间的表select * from usertables=========================================================== =======================CREATE TABLESPACE testDATAFILE 'c:/oracle/oradata/db/test01.dbf' SIZE 50M UNIFORM. SIZE 1M; #指定区尺寸为128k,如不指定,区尺寸默认为64k或CREATE TABLESPACE testDATAFILE 'c:/oracle/oradata/db/test01.dbf' SIZE 50M MINIMUM EXTENT 50K EXTENT MANAGEMENT LOCALDEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0);可从dbatablespaces中查看刚创立的表空间的信息CREATE UNDO TABLESPACE testundoDATAFILE 'c:/oracle/oradata/db/testundo.dbf' SIZE 50M UNDO表空间的EXTENT是由本地的,而且在创立时的SQL语句中只能使用DATAFILE和EXTENT MANAGEMENT子句。
Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令

Oracle中查询当前数据库中的所有表空间和对应的数据⽂件语句命令Oracle中查询当前数据库中的所有表空间和对应的数据⽂件语句命令-----------------------------------------------------------------------------------------1、在cmd中输⼊sqlplus,弹出命令⾏窗体2、输⼊⼝令和密码3、SQL>col file_name for a60;4、SQL>set linesize 160;5、SQL>select file_name,tablespace_name,bytes from dba_data_files;---------------------------------------------------------------------------------------------同样的可以从dba_temp_files数据字典中查询临时表空间的信息SQL>select tablespace_name,file_name from dba_temp_files;----------------------------------------------------------------------------------------------删除Oracle表空间与表空间⽂件语句如下:SQL>drop tablespace 表空间名称 including contents and datafiles ;⽰例:--删除Oracle表空间和⽂件的语句命令drop tablespace 表空间名称 including contents and datafiles cascade constraints;--including contents 删除表空间中的内容--datafiles 删除表空间中的数据⽂件--cascade constraints 删除所有与表空间数据有关的级联,如主外键等----------------------------------------------------------------------------------------------。
linux下查看数据库表空间

1.在Linux下进入SQLPlus,# su – oracle$ sqlplus / as sysdbaSQL>2.查看一个表空间所对应的数据文件SQL>select file_name from dba_data_fileswhere tablespace_name=’BING’;FILE_NAME————————————————————————————————————-/u01/app/oracle/oradata/ora10g/bing001.dbf/u01/app/oracle/oradata/ora10g/bing002.dbf3.查看一个表空间数据文件的大小SQL>select tablespace_name, sum(bytes)/1024/1024―SIZE_M‖,sum(maxbytes)/1024/1024 ―MAX_SIZE‖from dba_data_fileswhere tablespace_name=’BING’group by tablespace_name;TABLESPACE_NAME SIZE_M MAX_SIZE—————————————- ———-BING 200 33791.98444.查看一个表空间空闲的大小,SQL>select tablespace_name, sum(bytes)/1024/1024 ―Free_M‖from dba_free_spacewhere tablespace_name=’BING’group by tablespace_name;TABLESPACE_NAME Free_M—————————————-BING 199.875说明:size_M说明BING这个表空间对应的数据文件现在的大小是200MB,Free_M说明现在这个表空间还剩余199.874MB。
由于这个表空间设置了自动扩展,MAX_SIZE 说明这个表空间最大可以增大到33791.9844 MB5.其他方法查看a. 在Oracle10g新增加了视图dba_tablespace_usage_metrics,以block为单位显示使用率。
如何查看ORACLE空间占用问题

1、查看ORACLE表空间及表数据大小Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents group By Segment_Name order by Sum(bytes)/1024/1024 desc;2、从返回的结果看,有一个segment名为"SYS_LOB0000053810C00004$$"的对象占用了大量的空间;即LOB(BLOB和CLOB)对象占用的大小对象3、根据segment_name,就可以从dba_lobs 表里查到是哪个表,哪个字段;select * from dba_lobs where segment_name like 'your_segment_name';里面显示的TABLE_NAME和COLUMN_NAME为表名和字段名。
set pagesize 200column "数据文件名称" format a25column "表空间名称" format a18column "容量(M)" format a12column "使用率%" format a12column "最大容量(M)" format a15column "可扩充容量(M)" format a15column "空闲(M)" format a12column "自动扩展" format a10select a.FILE_NAME "数据文件名称",a.TABLESPACE_NAME"表空间名称",to_char(100-round((nvl(b.free_bytes,0)/a.BYTES)*100,2)) "使用率%", to_char(round(a.BYTES/1024/1024,2)) "容量(M)",to_char(round(nvl(b.free_bytes,0)/1024/1024,2)) "空闲(M)",to_char(round(decode(a.autoextensible,'YES',a.maxbytes/1024/1024,'NO' ,a.bytes/1024/1024),2)) "最大容量(M)",a.autoextensible "自动扩展",to_char(round(decode(a.autoextensible,'YES',a.maxbytes/1024/1024,'NO' ,a.bytes/1024/1024)-a.BYTES/1024/1024,2)) "可扩充容量(M)"from dba_data_files a,(select FILE_ID,sum(bytes) free_bytes from dba_free_space groupby FILE_ID) bwhere a.FILE_ID=b.FILE_IDorderby to_number("可扩充容量(M)") asc;。
Oracle查看表空间的大小及使用情况sql语句

Oracle查看表空间的⼤⼩及使⽤情况sql语句表空间使⽤情况包括:查看表空间的名称及⼤⼩/查看表空间物理⽂件的名称及⼤⼩/查看回滚段名称及⼤⼩等等感兴趣的你可以参考下本⽂SQL1:复制代码代码如下:--1、查看表空间的名称及⼤⼩SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_sizeFROM dba_tablespaces t, dba_data_files dWHERE t.tablespace_name = d.tablespace_nameGROUP BY t.tablespace_name;--2、查看表空间物理⽂件的名称及⼤⼩SELECT tablespace_name,file_id,file_name,round(bytes / (1024 * 1024), 0) total_spaceFROM dba_data_filesORDER BY tablespace_name;--3、查看回滚段名称及⼤⼩SELECT segment_name,tablespace_name,r.status,(initial_extent / 1024) initialextent,(next_extent / 1024) nextextent,max_extents,v.curext curextentFROM dba_rollback_segs r, v$rollstat vWHERE r.segment_id = n(+)ORDER BY segment_name;--4、查看控制⽂件SELECT NAME FROM v$controlfile;--5、查看⽇志⽂件SELECT MEMBER FROM v$logfile;--6、查看表空间的使⽤情况SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_nameFROM dba_free_spaceGROUP BY tablespace_name;SELECT a.tablespace_name,a.bytes total,b.bytes used,c.bytes free,(b.bytes * 100) / a.bytes "% USED ",(c.bytes * 100) / a.bytes "% FREE "FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free cWHERE a.tablespace_name = b.tablespace_nameAND a.tablespace_name = c.tablespace_name;--7、查看数据库库对象SELECT owner, object_type, status, COUNT(*) count#FROM all_objectsGROUP BY owner, object_type, status;--8、查看数据库的版本 SELECT versionFROM product_component_versionWHERE substr(product, 1, 6) = 'Oracle';--9、查看数据库的创建⽇期和归档⽅式SELECT created, log_mode, log_mode FROM v$database;SQL2:复制代码代码如下:--1G=1024MB--1M=1024KB--1K=1024Bytes--1M=11048576Bytes--1G=1024*11048576Bytes=11313741824Bytes SELECT a.tablespace_name "表空间名",total "表空间⼤⼩",free "表空间剩余⼤⼩",(total - free) "表空间使⽤⼤⼩",total / (1024 * 1024 * 1024) "表空间⼤⼩(G)",free / (1024 * 1024 * 1024) "表空间剩余⼤⼩(G)", (total - free) / (1024 * 1024 * 1024) "表空间使⽤⼤⼩(G)", round((total - free) / total, 4) * 100 "使⽤率 %"FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_spaceGROUP BY tablespace_name) a,(SELECT tablespace_name, SUM(bytes) total FROM dba_data_filesGROUP BY tablespace_name) bWHERE a.tablespace_name = b.tablespace_name。
查看表、表空间实际大小

查看指定表空间下最大的前10个表Select * from (select SEGMENT_NAME,SEGMENT_TYPE,bytes/1024/1024 total from dba_segments where TABLESPACE_NAME='SMS_DATA' order by bytes/1024/1024 desc ) where rownum <20;查看自动增长SELECT FILE_NAME, TABLESPACE_NAME, AUTOEXTENSIBLE FROM DBA_DATA_FILES where TABLESPACE_NAME='SYSTEM';查看所有表空间大小Select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;未使用的表空间大小Select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;查看所有表空间对应的文件select file_name,tablespace_name,bytes from dba_data_files where tablespace_name='SMS_DATA';select file_name,tablespace_name||','||bytes from dba_data_filesOracle中有两种含义的表大小一种是分配给一个表的物理空间数量,而不管空间是否被使用。
可以这样查询获得字节数:select segment_name, bytesfrom user_segmentswhere segment_type = TABLE;效果如下:或者Select Segment_Name,Sum(bytes)/1024/1024 from User_Extents Group By Segment_Name;效果如下:【这个查询速度慢】上两图结果所示,查询均为10896M分配给表的大小下图查询出该表当前占用的实际空间大小另一种表实际使用的空间。