在Oracle中查询表的大小和表空间的大小
- 格式:docx
- 大小:176.15 KB
- 文档页数:8
Oracle查询表空间与表⼤⼩转⾃:数据表的⼤⼩由段和区组成当前⽤户下的可以使⽤下⾯SQL分别显⽰段和区信息:select US.segment_name,us.bytes from user_segments us order by us.bytes desc;select * from user_extents ue order by ue.bytes desc;如果在DBA中查询某表空间(如CONFIG表空间)的表段和区的组成信息,使⽤SQL显⽰:select ds.segment_name,ds.bytes from dba_segments ds where ds.tablespace_name='config' order by ds.bytes desc; select * from dba_extents de where de.tablespace_name='config' order by de.bytes desc;如果查询单个表记录:select us.segment_name,us.bytes from user_segments us where us.segment_name='test_table'order by us.bytes desc;查看每个表空间的⼤⼩SQL:select tablespace_name,sum(bytes)/1024/1024 from dba_segments group by tablespace_name;查看整个系统的表空间⼤⼩SQL:select upper(f.tablespace_name) "表空间名",d.tot_grootte_mb "表空间⼤⼩(M)",d.tot_grootte_mb-f.total_bytes "已使⽤空间(M)",to_char(round((d.tot_grootte_mb - f.total_bytes)/d.tot_grootte_mb*100,2),'990.99')||'%' "使⽤⽐",f.total_bytes "空闲空间(M)", f.max_bytes "最⼤块(M)"from (select tablespace_name,round(sum(bytes)/(1024*1024),2) total_bytes,round(max(bytes)/(1024*1024),2) max_bytesfrom sys.dba_free_spacegroup by tablespace_name) f,(select dd.tablespace_name,round(sum(dd.bytes)/(1024*1024),2) tot_grootte_mbfrom sys.dba_data_files ddgroup by dd.tablespace_name) dwhere d.tablespace_name=f.tablespace_nameorder by 1;。
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数据库表空间大小的查看、修改1、通过oracle客户端连接到oracle数据库a)安装好oracle客户端后,通过net manager工具配置本地net服务名,依次点击开始,程序,Oracle - OraClient10g_home1,配置和移植工具,Net Manager。
b)进入Net Manager配置窗口。
c)依次点击本地,服务命名。
d)可以看到左侧的号变成绿色,此时可以点击该,弹出net服务名的配置窗口e)这里的网络服务名是指的oracle客户端所在机器的本地服务名,随便设置个名字,例如sbzw,点击下一步。
f)默认设置,点击下一步。
g)在主机名后的输入框中输入oracle数据库所在的服务器的ip地址,例如:,点击下一步。
h)在服务名后的输入框中输入oracle数据库的全局服务名,例如tjsb,点击下一步。
i)此处不要点击完成,先点击测试查看连接是否正常。
j)在连接测试窗口中显示的应该是测试没有成功,此时请点击更改登录。
k)修改了用户名和密码后,点击确定,然后再次点击“测试”,提示连接成功后,关闭连接测试窗口,点击完成,至此本地net服务名配置完成。
2、通过oracle客户端的企业管理器修改数据库的表空间大小a)依次点击开始,程序,Oracle - OraClient10g_home1,EnterpriseManager Console(企业管理器)。
b)进入了oracle的企业管理器c)依次点击数据库,sbzw,弹出登录窗口,d)对于修改表空间而言,这里的用户名必须是sys用户,连接身份为SYSDBA。
e)输入完成后,点击确定,可以看到左侧sbzw的菜单已经打开。
f)依次选择存储,表空间,则页面左侧会显示当前的表空间的使用情况。
g)对于需要增大的表空间,双击该表空间,例如这里的TS_FZ4_DATA,弹出该表空间的编辑窗口。
h)对于表空间的修改,有两种办法:i.一种是直接修改单个数据文件的大小值,也就是直接修改上图中的大小里面的数值,单位是MB,修改完成后点击确定即可。
查看Oracle表空间SQL语句1.查看所有表空间大小SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024tablespacesize_M FROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME;2.未使用的表空间大小SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024TABSPACE_FREE_SIZE_M FROM DBA_FREE_SPACEgroup by TABLESPACE_NAME;3.所有使用空间可以这样计算SELECT a.tablespace_name,a.total,b.free,a.total-b.free used from(SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024TOTAL FROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME)A,(SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME)Bwhere a.tablespace_name=b.tablespace_name;4.下面这条语句查看所有段的大小select segment_nam,sum(bytes)/1024/1024from USER_EXTENTS GROUP BY segment_name;5.在命令行情况下如何将结果放到一个文件里用到了telnetSET TRIMSPOOL ONSET LINESIZE2000SET PAGESIZE2000SET NEWPAGE1SET HEADING OFFSET TERM OFFSPOOL D:\EXP.TXTSELECT*FROM V$DATABASE;spool off6.查看当前正在使用的临时表空间大小SELECT ERNAME,SE.SID,SU.BLOCKS*TO_NUMBER(RTRIM(P.VALUE))AS SPACE,tablespace,segtype,sql_textFROM V$SORT_USAGE SU,V$PARAMETER P,V$SESSION SE,V$SQL SWHERE ='db_block_size'AND SU.SESSION_ADDR=SE.SADDRAND S.HASH_VALUE=SU.SQLHASHAND S.ADDRESS=SU.SQLADDRorder by ername,se.sid;7.查询所有的表空间SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;8.查看表空间中分布的用户信息SELECT TABLESPACE_NAME,OWNER,SUM(BYTES)FROM DBA_SEGMENTSGROUP BY TABLESPACE_NAME,OWNER;9.查看表空间已经使用的百分比SELECT A.TABLESPACE_NAME,A.BYTES/1024/1024"Sum MB",(A.BYTES-B.BYTES)/1024/1024"used MB",B.BYTES/1024/1024"free MB", round(((a.bytes-b.bytes)/a.bytes)*100,2)"percent_used"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)BWHERE A.TABLESPACE_NAME=B.TABLESPACE_NAMEORDER BY((A.BYTES-B.BYTES)/A.BYTES)DESC;--"Sum MB"表示表空间所有的数据文件总共在操作系统占用磁盘空间的大小--比如:test表空间有2个数据文件,datafile1为300MB,datafile2为400MB,那么test表空间的“Sum MB"就是700MB--"userd MB"表示表空间已经使用了多少--"free MB"表示表空间剩余多少--”percent_user"表示已经使用的百分比10.比如从9中查看到MLOG_NORM_SPACE表空间已使用百分比达到90%以上,可以查看该表空间总共有几个数据文件--每个数据文件是否自动扩展,可以自动扩展的最大值SELECT FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024"byte MB",MAXBYTES/1024/1024"maxbytes MB"FROM DBA_DATA_FILESwhere tablespace_name='EXAMPLE';11.查看xxx表空间是否为自动扩展SELECTFILE_ID,FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE,INCREMENT_BY FROM DBA_DATA_FILESorder by file_id desc;12.比如MLOG_NORM_SAPCE表空间目前的大小为19G,但是最大每个数据文件只能为20GB,数据文件快要写满,--可以境加表空间的数据文件,用操作系统unix,linux中的df-g命令--获取创建表空间的语句SELECT DBMS_METADATA.GET_DDL('TABLESPACE','EXAMPLE')from dual;13.确认磁盘空间足够,增加一个数据文件ALTER TABLESPACE MLOG_NORM_SPACEADD DATAFILE'/orace/Mlog_Norm_data001.dbf'SIZE10M AUTOEXTEND ON MAXSIZE20G;14.验证已经增加的数据文件SELECT FILE_NAME,FILE_ID,TABLESPACE_NAME FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='MLOG_NORM_SPACE';15.删除表空间数据文件ALTER TABLESPACE MLOG_NORM_SPACEdrop datafile'/orace/Mlog_Norm_data001.dbf';16.确定控制文件的名称与大小select name,block_size*file_size_blks bytes from v$controlfile;17.确定联机重做日志文件成员的名称和大小select member,bytes from v$log join v$logfile using(group#);18.确定数据文件和临时文件的名称和大小SELECT NAME,BYTES FROM V$DATAFILEUNION ALLselect name,bytes from V$TEMPFILE;。
Oracle查询表空间使⽤情况 --查询表空间使⽤情况 SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间⼤⼩(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使⽤空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使⽤⽐", F.TOTAL_BYTES "空闲空间(M)", F.MAX_BYTES "最⼤块(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 1; --查询表空间的free space select tablespace_name, count(*) as extends, round(sum(bytes) / 1024 / 1024, 2) as MB, sum(blocks) as blocks from dba_free_space group by tablespace_name; --查询表空间的总容量 select tablespace_name, sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name; --查询表空间使⽤率 select total.tablespace_name, round(total.MB, 2) as Total_MB, round(total.MB - free.MB, 2) as Used_MB, round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct from (select tablespace_name, sum(bytes) / 1024 / 1024 as MB from dba_free_space group by tablespace_name) free, (select tablespace_name, sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name) total where free.tablespace_name = total.tablespace_name;1.查找当前表级锁的SQL如下:select sess.sid,sess.serial#,lo.oracle_username,lo.os_user_name,ao.object_name,lo.locked_modefrom v$locked_object lo,dba_objects ao,v$session sesswhere ao.object_id = lo.object_id and lo.session_id = sess.sid;2.杀掉锁表进程:alter system kill session '436,35123';3.RAC环境中锁查找:SELECT inst_id,DECODE(request,0,'Holder: ','Waiter: ')||sid sess,id1, id2, lmode, request, type,block,ctimeFROM GV$LOCKWHERE (id1, id2, type) IN(SELECT id1, id2, type FROM GV$LOCK WHERE request>0)ORDER BY id1, request;4.监控当前数据库谁在运⾏什么SQL语句select osuser, username, sql_textfrom v$session a, v$sqltext bwhere a.sql_address =b.address order by address, piece;5.找使⽤CPU多的⽤户sessionselect a.sid,spid,status,substr(a.program,1,40) prog, a.terminal,osuser,value/60/100 value from v$session a,v$process b,v$sesstat cwhere c.statistic#=12 andc.sid=a.sid anda.paddr=b.addrorder by value desc;6.查看死锁信息SELECT (SELECT usernameFROM v$sessionWHERE SID = a.SID) blocker, a.SID, 'is blocking',(SELECT usernameFROM v$sessionWHERE SID = b.SID) blockee, b.SIDFROM v$lock a, v$lock bWHERE a.BLOCK = 1 AND b.request > 0 AND a.id1 = b.id1 AND a.id2 = b.id2;7.具有最⾼等待的对象SELECT o.OWNER,o.object_name, o.object_type, a.event,SUM (a.wait_time + a.time_waited) total_wait_timeFROM v$active_session_history a, dba_objects oWHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATEAND a.current_obj# = o.object_idGROUP BY o.OWNER,o.object_name, o.object_type, a.eventORDER BY total_wait_time DESC;SELECT a.session_id, s.osuser, s.machine, s.program, o.owner, o.object_name,o.object_type, a.event,SUM (a.wait_time + a.time_waited) total_wait_timeFROM v$active_session_history a, dba_objects o, v$session sWHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATEAND a.current_obj# = o.object_idAND a.session_id = s.SIDGROUP BY o.owner,o.object_name,o.object_type,a.event,a.session_id,s.program,s.machine,s.osuserORDER BY total_wait_time DESC;8.查询当前连接会话数select s.value,s.sid,ernamefromv$sesstat S,v$statname N,v$session Awheren.statistic#=s.statistic# andname='session pga memory'and s.sid=a.sidorder by s.value;9.等待最多的⽤户SELECT s.SID, ername, SUM (a.wait_time + a.time_waited) total_wait_time FROM v$active_session_history a, v$session sWHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE GROUP BY s.SID, ernameORDER BY total_wait_time DESC;10.等待最多的SQLSELECT a.program, a.session_id, er_id, ername, s.sql_text,SUM (a.wait_time + a.time_waited) total_wait_timeFROM v$active_session_history a, v$sqlarea s, dba_users dWHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATEAND a.sql_id = s.sql_idAND er_id = er_idGROUP BY a.program, a.session_id, er_id, s.sql_text, ername;11.查看消耗资源最多的SQLSELECT hash_value, executions, buffer_gets, disk_reads, parse_callsFROM V$SQLAREAWHERE buffer_gets > 10000000 OR disk_reads > 1000000ORDER BY buffer_gets + 100 * disk_reads DESC;12.查看某条SQL语句的资源消耗SELECT hash_value, buffer_gets, disk_reads, executions, parse_callsFROM V$SQLAREAWHERE hash_Value = 228801498 AND address = hextoraw('CBD8E4B0'); 13.查询会话执⾏的实际SQLSELECT a.SID, ername, s.sql_textFROM v$session a, v$sqltext sWHERE a.sql_address = s.addressAND a.sql_hash_value = s.hash_valueAND a.status = 'ACTIVE'ORDER BY ername, a.SID, s.piece;14.显⽰正在等待锁的所有会话SELECT * FROM DBA_WAITERS;。
oracle查询表空间命令---看sys拥有哪些表空间及路径select * from dba_data_files--查询表空间的总容量------------------------------------------------select tablespace_name, sum(bytes) / 1024 / 1024 as MBfrom dba_data_filesgroup by tablespace_name;---------oracle 查询表空间的free space-----------------------------------select tablespace_name,count(*) as extends,round(sum(bytes) / 1024 / 1024, 2) as MB,sum(blocks) as blocksfrom dba_free_spacegroup by tablespace_name;-----------oracle 增大表空间的方法--------------------------------------方法一:增加表空间原有数据文件尺寸alter database datafile 'D:\oracle\product\10.1.0\oradata\BCDL\CMB_PTX.dbf' resize 10000m;方法二:为表空间增加数据文件alter tablespace users add datafile 'D:\oracle\product\10.1.0\oradata\BCDL\SYSAUX02.DBF' size 1000M;------------------查询表空间使用情况--------------------------------------SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",F.TOTAL_BYTES "空闲空间(M)",F.MAX_BYTES "最大块(M)"FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTESFROM SYS.DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MBFROM SYS.DBA_DATA_FILES DDGROUP BY DD.TABLESPACE_NAME) DWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 1;--------------------。
Oracle查看表空间及⼤⼩--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;--1G=1024MB--1M=1024KB--1K=1024Bytes--1M=11048576Bytes--1G=1024*11048576Bytes=11313741824BytesSELECT 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) freeFROM dba_free_spaceGROUP BY tablespace_name) a,(SELECT tablespace_name, SUM(bytes) totalFROM dba_data_filesGROUP BY tablespace_name) bWHERE a.tablespace_name = b.tablespace_name。
oracle数据库查询命令⼀、⽤户表数据查询1、⽤户查看当前⽤户的缺省表空间SQL>select username,default_tablespace from user_users;查看当前⽤户的⾓⾊SQL>select * from user_role_privs;查看当前⽤户的系统权限和表级权限SQL>select * from user_sys_privs;SQL>select * from user_tab_privs;2、表 tabs查看⽤户下所有的表SQL>select * from user_tables;查看名称包含log字符的表SQL>select object_name,object_id from user_objects where instr(object_name,'LOG')>0;查看某表的创建时间SQL>select object_name,created from user_objects where object_name=upper('&table_name');查看某表的⼤⼩SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&table_name');查看放在ORACLE的内存区⾥的表SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;3、索引 ind查看索引个数和类别SQL>select index_name,index_type,table_name from user_indexes order by table_name;查看索引被索引的字段SQL>select * from user_ind_columns where index_name=upper('&index_name');查看索引的⼤⼩SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name');4、序列号 seq查看序列号,last_number是当前值SQL>select * from user_sequences; 或 select * from seq;5、视图查看视图的名称SQL>select view_name from user_views;查看创建视图的select语句SQL>set view_name,text_length from user_views;SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的⼤⼩SQL>select text from user_views where view_name=upper('&view_name');6、同义词查看同义词的名称SQL>select * from user_synonyms;7、约束条件查看某表的约束条件SQL>select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper('&table_name');SQL>select c.constraint_name,c.constraint_type,cc.column_namefrom user_constraints c,user_cons_columns ccwhere c.owner = upper('&table_owner') and c.table_name = upper('&table_name') and c.owner = cc.owner and c.constraint_name = cc.constraint_nameorder by cc.position;8、存储函数和过程查看函数和过程的状态SQL>select object_name,status from user_objects where object_type='FUNCTION'; SQL>select object_name,status from user_objects where object_type='PROCEDURE';查看函数和过程的源代码SQL>select text from all_source where owner=user and name=upper('&plsql_name');9、获取创建表语句 设置输出长度 SQL> SET LONG 9999; SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','tablename') FROM DUAL;⼆、查看数据库的SQL1、查看表空间的名称及⼤⼩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_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;7、查看数据库库对象select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;8、查看数据库的版本Select version FROM Product_component_versionWhere SUBSTR(PRODUCT,1,6)='Oracle';9、查看数据库的创建⽇期和归档⽅式Select Created, Log_Mode, Log_Mode From V$Database;。
Oracle释放表及表空间大小1.查看一个表所占的空间大小:SELECT bytes/1024/1024 ||'MB' TABLE_SIZE ,u.* FROM USER_SEGMENTS U WHERE U.SEGMENT_NAME='JK_TEST';2.查看一个表空间所占的实际大小:SELECT SUM(BYTES) / 1024 / 1024 ||'MB' FROM USER_SEGMENTS U WHERE TABLESPACE_NAME = 'DATA01';3.查看一个表空间对应的数据文件:SELECT * FROM DBA_DATA_FILES D WHERE D.TABLESPACE_NAME = 'DATA01';4.查看表空间的使用情况:SELECT A.TABLESPACE_NAME,FILENUM,TOTAL "TOTAL (MB)",F.FREE "FREE (MB)",TO_CHAR(ROUND(FREE * 100 / TOTAL, 2), '990.00') "FREE%",TO_CHAR(ROUND((TOTAL - FREE) * 100 / TOTAL, 2), '990.00') "USED%",ROUND(MAXSIZES, 2) "MAX (MB)"FROM (SELECT TABLESPACE_NAME,COUNT(FILE_ID) FILENUM,SUM(BYTES / (1024 * 1024)) TOTAL,SUM(MAXBYTES) / 1024 / 1024 MAXSIZESFROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME) A,(SELECT TABLESPACE_NAME, ROUND(SUM(BYTES / (1024 * 1024))) FREEFROM DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) FWHERE A.TABLESPACE_NAME = F.TABLESPACE_NAME5.查看数据文件的实际使用情况:SELECT CEIL(MAX_BLOCK * BLOCK_SIZE / 1024)FROM (SELECT MAX(BLOCK_ID) MAX_BLOCKFROM DBA_EXTENTSWHERE FILE_ID IN (SELECT FILE_IDFROM DBA_DATA_FILES DWHERE D.TABLESPACE_NAME = 'USERS')) M,(SELECT VALUE / 1024 BLOCK_SIZEFROM V$PARAMETERWHERE NAME = 'db_block_size') B一、创建一个有十万条记录的测试表jk_test ,查看其所占空间大小3873Mdelete jk_test。
Oracle---SQL语句⼤全—查看表空间SQL语句⼤全—查看表空间(⼀)查看表空间的名称及⼤⼩:SQL> 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;查看表空间物理⽂件的名称及⼤⼩:SQL> SELECT TABLESPACE_NAME,FILE_ID,FILE_NAME,ROUND(BYTES / (1024 * 1024), 0) TOTAL_SPACEFROM DBA_DATA_FILESORDER BY TABLESPACE_NAME;查看回滚段名称及⼤⼩:SQL> 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;如何查看某个回滚段⾥⾯,跑的什么事物或者正在执⾏什么sql语句:SQL> SELECT D.SQL_TEXT, FROM V$ROLLNAME A, V$TRANSACTION B, V$SESSION C, V$SQLTEXT DWHERE N = B.XIDUSNAND B.ADDR = C.TADDRAND C.SQL_ADDRESS = D.ADDRESSAND C.SQL_HASH_VALUE = D.HASH_VALUEAND N = 1;(备注:你要看哪个,就把usn=?写成⼏就⾏了)查看控制⽂件:SQL> SELECT * FROM V$CONTROLFILE;查看⽇志⽂件:SQL> COL MEMBER FORMAT A50SQL>SELECT * FROM V$LOGFILE;如何查看当前SQL*PLUS⽤户的sid和serial#:SQL>SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE AUDSID=USERENV('SESSIONID');如何查看当前数据库的字符集:SQL>SELECT USERENV('LANGUAGE') FROM DUAL;SQL>SELECT USERENV('LANG') FROM DUAL;怎么判断当前正在使⽤何种SQL优化⽅式:⽤EXPLAIN PLAN產⽣EXPLAIN PLAN¡檢查PLAN_TABLE中ID=0的POSITION列的值SQL>SELECT DECODE(NVL(POSITION,-1),-1,'RBO',1,'CBO') FROM PLAN_TABLE WHERE ID=0;如何查看系统当前最新的SCN号:SQL>SELECT MAX(KTUXESCNW * POWER(2,32) + KTUXESCNB) FROM X$KTUXE;在ORACLE中查找TRACE⽂件的脚本:SQL>SELECT U_DUMP.VALUE || '/' || INSTANCE.VALUE || '_ORA_' ||V$PROCESS.SPID || NVL2(V$PROCESS.TRACEID, '_' || V$PROCESS.TRACEID, NULL ) || '.TRC'"TRACE FILE" FROM V$PARAMETERU_DUMP CROSS JOIN V$PARAMETER INSTANCE CROSS JOIN V$PROCESS JOIN V$SESSION ON V$PROCESS.ADDR =V$SESSION.PADDR WHERE U_ = 'USER_DUMP_DEST' AND = 'INSTANCE_NAME' AND V$SESSION.AUDSID=SYS_CONTEXT('USERENV','SESSIONID');SQL>SELECT D.VALUE || '/ORA_' || P.SPID || '.TRC' TRACE_FILE_NAMEFROM (SELECT P.SPID FROM SYS.V_$MYSTAT M,SYS.V_$SESSION S,SYS.V_$PROCESS P WHERE M.STATISTIC# = 1 ANDS.SID = M.SID AND P.ADDR = S.PADDR) P,(SELECT VALUE FROM SYS.V_$PARAMETER WHERE NAME ='USER_DUMP_DEST') D;如何查看客户端登陆的IP地址:SQL>SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM DUAL;如何在⽣产数据库中创建⼀个追踪客户端IP地址的触发器:SQL>CREATE OR REPLACE TRIGGER ON_LOGON_TRIGGER AFTER LOGON ON DATABASEBEGINDBMS_APPLICATION_INFO.SET_CLIENT_INFO(SYS_CONTEXT('USERENV', 'IP_ADDRESS'));END;REM 记录登陆信息的触发器CREATE OR REPLACE TRIGGER LOGON_HISTORYAFTER LOGON ON DATABASE --WHEN (USER='WACOS') --ONLY FOR USER 'WACOS'BEGININSERT INTO SESSION_HISTORY SELECT USERNAME,SID,SERIAL#,AUDSID,OSUSER,ACTION,SYSDATE,NULL,SYS_CONTEXT('USERENV','IP_ADDRESS'),TERMINAL,MACHINE,PROGR = USERENV('SESSIONID');END;查询当前⽇期:SQL> SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD,HH24:MI:SS') FROM DUAL;查看所有表空间对应的数据⽂件名:SQL>SELECT DISTINCT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM DBA_DATA_FILES;查看表空间的使⽤情况:SQL>SELECT SUM(BYTES)/(1024*1024) AS FREE_SPACE,TABLESPACE_NAMEFROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;SQL>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_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;COLUMN TABLESPACE_NAME FORMAT A18;COLUMN SUM_M FORMAT A12;COLUMN USED_M FORMAT A12;COLUMN FREE_M FORMAT A12;COLUMN PTO_M FORMAT 9.99;SELECT S.TABLESPACE_NAME,CEIL(SUM(S.BYTES/1024/1024))||'M' SUM_M,CEIL(SUM(EDSPACE/1024/1024))||'M'USED_M,CEIL(SUM(S.FREESPACE/1024/1024))||'M' FREE_M, SUM(EDSPACE)/SUM(S.BYTES)PTUSED FROM (SELECT B.FILE_ID,B.TABLESPACE_NAME,B.BYTES, (B.BYTES-SUM(NVL(A.BYTES,0))) USEDSPACE, SUM(NVL(A.BYTES,0)) FREESPACE, (SUM(NVL(A.BYTES,0))/(B.BYTES)) * 100 FREEPERCENTRATIO FROM SYS.DBA_FREE_SPACE A,SYS.DBA_DATA_FILESB WHERE A.FILE_ID(+)=B.FILE_ID GROUP BY B.FILE_ID,B.TABLESPACE_NAME,B.BYTES ORDER BY B.TABLESPACE_NAME)S GROUP BY S.TABLESPACE_NAME ORDER BY SUM(S.FREESPACE)/SUM(S.BYTES) DESC;查看数据⽂件的hwm(可以resize的最⼩空间)和⽂件头⼤⼩:SELECT V1.FILE_NAME,V1.FILE_ID,NUM1 TOTLE_SPACE,NUM3 FREE_SPACE,NUM1-NUM3 "USED_SPACE(HWM)",NVL(NUM2,0) DATA_SPACE,NUM1-NUM3-NVL(NUM2,0) FILE_HEADFROM(SELECT FILE_NAME,FILE_ID,SUM(BYTES) NUM1 FROM DBA_DATA_FILES GROUP BY FILE_NAME,FILE_ID) V1,(SELECT FILE_ID,SUM(BYTES) NUM2 FROM DBA_EXTENTS GROUP BY FILE_ID) V2,(SELECT FILE_ID,SUM(BYTES) NUM3 FROM DBA_FREE_SPACE GROUP BY FILE_ID) V3WHERE V1.FILE_ID=V2.FILE_ID(+) AND V1.FILE_ID=V3.FILE_ID(+);数据⽂件⼤⼩及头⼤⼩:SELECT V1.FILE_NAME,V1.FILE_ID,NUM1 TOTLE_SPACE,NUM3 FREE_SPACE,NUM1-NUM3 USED_SPACE,NVL(NUM2,0) DATA_SPACE,NUM1-NUM3-NVL(NUM2,0) FILE_HEADFROM(SELECT FILE_NAME,FILE_ID,SUM(BYTES) NUM1 FROM DBA_DATA_FILES GROUP BY FILE_NAME,FILE_ID) V1,(SELECT FILE_ID,SUM(BYTES) NUM2 FROM DBA_EXTENTS GROUP BY FILE_ID) V2,(SELECT FILE_ID,SUM(BYTES) NUM3 FROM DBA_FREE_SPACE GROUP BY FILE_ID) V3WHERE V1.FILE_ID=V2.FILE_ID(+)AND V1.FILE_ID=V3.FILE_ID(+);(运⾏以上查询,我们可以如下信息:Totle_pace:该数据⽂件的总⼤⼩,字节为单位Free_space:该数据⽂件的剩于⼤⼩,字节为单位Used_space:该数据⽂件的已⽤空间,字节为单位Data_space:该数据⽂件中段数据占⽤空间,也就是数据空间,字节为单位File_Head:该数据⽂件头部占⽤空间,字节为单位)。
oracle表空间及磁盘⼤⼩查看/*备注:表空间是数据库的逻辑组成部分从物理上将:数据库数据存放在数据⽂件中从逻辑上将:数据库则是存放在表空间中表空间由⼀个或是多个数据⽂件组成*/--1.查看⽤户下⾯的所有的表SELECT * FROM USER_TABLES;SELECT * FROM DBA_TABLES WHERE OWNER = 'COMM_USER';--1.1查看表所在的表空间select TABLE_NAME,TABLESPACE_NAME from dba_tables t where t.table_name='DM_LIST';--1.2查看⽤户所属的表空间SELECT DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME = 'COMM_USER';--1.3.查看所有的表空间SELECT * FROM DBA_TABLESPACES;SELECT * FROM V$TABLESPACE;--1.3查看默认的表空间select * from database_properties where property_name='DEFAULT_PERMANENT_TABLESPACE';--1.4创建索引到指定表空间create index IDX_DM_FINISHTIME_ORGANID on DM_COMM_PREM_LIST (FINISH_TIME,ORGAN_ID) tablespace TBS_DW_DATA; --1.5查看表空间下有多少⽤户,tablespace_name表空间的名字⼀定要⼤写SELECT DISTINCT S.OWNERFROM DBA_SEGMENTS SWHERE S.TABLESPACE_NAME = 'TBS_COMM_DATA';--1.6所有表空间的使⽤情况SELECT --B.file_name "⽂件名",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) FREEFROM DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) A,(SELECT TABLESPACE_NAME,-- file_name,SUM(BYTES) TOTALFROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME/*,file_name*/) BWHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME;--2、linux中查看服务器硬盘的使⽤情况df -k 以KB为单位显⽰磁盘使⽤量和占⽤率df -m 以M为单位显⽰磁盘使⽤量和占⽤率--3、给表空间新增数据⽂件并设置30G⼤⼩在命令窗⼝中执⾏,数据⽂件的⼤⼩最⼤不能超过32G,否则会报错:ORA-01144: ⽂件⼤⼩ (13107200 块) 超出 4194303 块的最⼤数⽅法1)给⽩空间增加数据⽂件SQL> alter tablespace AUDIT add datafile '/pi/app/oracle/oradata/enterprise_tbs05.dbf' size 30G;alter tablespace 表空间名 add datafile '数据⽂件存放路径' size 数据⽂件⼤⼩;⽅法2)⼿动增加数据⽂件尺⼨SQL>ALTER DATABASE AUDIT '/oracle/oradata/db/GAME.dbf' RESIZE 4000M;⽅法3)设定数据⽂件⾃动扩展SQL> ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE 10000M;执⾏完上述1、2、3.1)步骤之后:DBA_DATA_FILES中新增的数据⽂件的bytes的值要⽐maxbytes的值要⼤的原因?原因:当⼀个datafile ⼿⼯resize到⼀个⼤于maxsize(maxbytes)的值之后,DBA_DATA_FILES中bytes的值要⽐maxbytes的值要⼤。
oracle常用经典SQL查询常用SQL查询: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_A V AIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE CWHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME ANDA.TABLESPACE_NAME=C.TABLESPACE_NAME;7、查看数据库库对象select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;8、查看数据库的版本Select version FROM Product_component_versionWhere SUBSTR(PRODUCT,1,6)='Oracle';9、查看数据库的创建日期和归档方式Select Created, Log_Mode, Log_Mode From V$Database;10、捕捉运行很久的SQLcolumn username format a12column opname format a16column progress format a8select username,sid,opname,round(sofar*100 / totalwork,0) || '%' as progress,time_remaining,sql_textfrom v$session_longops , v$sqlwhere time_remaining <> 0and sql_address = addressand sql_hash_value = hash_value/11。
在Oracle中查询表的大小和表空间的大小上一篇/ 下一篇 2011-08-28 11:59:01 / 个人分类:计算机查看( 443 ) / 评论( 0 ) / 评分( 0 / 0 )原文:/cosio/article/details/3978747有两种含义的表大小。
一种是分配给一个表的物理空间数量,而不管空间是否被使用。
可以这样查询获得字节数:select segment_name, bytesfrom user_segmentswhere segment_type = 'TABLE';或者Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name另一种表实际使用的空间。
这样查询:analyze table emp compute statistics;select num_rows * avg_row_lenfrom user_tableswhere table_name = 'EMP';查看每个表空间的大小Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name 1.查看剩余表空间大小SELECT tablespace_name 表空间,sum(blocks*8192/1000000) 剩余空间M FROM dba_free_space GROUP BY tablespace_name;2.检查系统中所有表空间总体空间select ,sum(a.bytes/1000000)总空间from v$datafile a,v$tablespace b where a.ts#=b.ts# group by ;1、查看Oracle数据库中表空间信息的工具方法:使用oracle enterprise manager console工具,这是oracle的客户端工具,当安装oracle服务器或客户端时会自动安装此工具,在windows操作系统上完成oracle安装后,通过下面的方法登录该工具:开始菜单——程序——Oracle-OraHome92——Enterprise Manager Console(单击)——oracle enterprise manager console登录——选择‘独立启动’单选框——‘确定’ ——‘o racle enterprise manager console,独立’ ——选择要登录的‘实例名’ ——弹出‘数据库连接信息’ ——输入’用户名/口令’ (一般使用sys用户),’连接身份’选择选择SYSDBA——‘确定’,这时已经成功登录该工具,选择‘存储’ ——表空间,会看到如下的界面,该界面显示了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。
图1 表空间大小及使用率2、查看Oracle数据库中表空间信息的命令方法:通过查询数据库系统中的数据字典表(data dictionary tables)获取表空间的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句:selecta.a1 表空间名称,c.c2 类型,c.c3 区管理,b.b2/1024/1024 表空间大小M,(b.b2-a.a2)/1024/1024 已使用M,substr((b.b2-a.a2)/b.b2*100,1,5) 利用率from(select tablespace_name a1, sum(nvl(bytes,0)) a2 from dba_free_space group by tablespace_name) a,(select tablespace_name b1,sum(bytes) b2 from dba_data_files group by tablespace_name) b, (select tablespace_name c1,contents c2,extent_management c3 from dba_tablespaces) cwhere a.a1=b.b1 and c.c1=b.b1;该语句通过查询dba_free_space,dba_data_files,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。
dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。
上面语句中from子句后有三个select语句,每个select语句相当于一个视图,视图的名称分别为a、b、c,通过它们之间的关联关系,我们得到了表空间的相关信息。
语句执行结果如下:上面描述中分别介绍了查看Oracle数据库中表空间信息的工具方法和命令方法。
1、查看Oracle数据库中数据文件信息的工具方法:使用上面介绍过的方法登录oracle enterprise manager console工具,选择‘存储’ ——数据文件,会看到如下的界面,该界面显示了数据文件名称,表空间名称,以”兆”为单位的数据文件大小,已使用的数据文件大小及数据文件利用率。
图2 数据文件大小及使用率2、查看Oracle数据库中数据文件信息的命令方法:通过查询数据库系统中的数据字典表(data dictionary tables)获取数据文件的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句:selectb.file_name 物理文件名,b.tablespace_name 表空间,b.bytes/1024/1024 大小M,(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率from dba_free_space a,dba_data_files bwhere a.file_id=b.file_idgroup by b.tablespace_name,b.file_name,b.bytesorder by b.tablespace_name语句执行结果如下:上明描述中分别介绍了查看Oracle数据库中数据文件信息的工具方法和命令方法。
在oracle数据库中,临时表空间主要用于用户在使用order by 、group by语句进行排序和汇总时所需的临时工作空间。
要查询数据库中临时表空间的名称,大小及数据文件,可以查询数据字典dba_tablespaces及dba_data_files。
命令如下:selecta.talbespace_name 表空间名称,b.bytes 大小bytes,b.file_name 数据文件名from dba_tablespaces a, dba_data_files bWhere a.talbespace_name=b.talbespace_name and a.contents=’TEMPORARY’;查询结果如下:表空间名称大小bytes数据文件名TEMPONLINEG:/ORACLE/ORADATA/ORA92/TEMP01.DBF从oracle 9i开始,可以创建Temporary tablespace类表空间,即“临时“表空间,这类表空间使用临时文件。
临时文件的信息被存储在数据字典V$tempfile中。
命令如下:Select file#,status,name from V$tempfile;查询数据字典V$tempfile结果如下:在上面介绍的方法中,建议掌握命令方法,因为你的环境可能没有图形工具,而SQLPLUS一般情况下都是可以使用的,有了命令脚本,很容易得到表空间和数据文件的相关信息。
另外,数据库管理员应该多整理命令脚本,在需要时直接执行脚本以提高工作效率。
在数据库管理员的日常工作中,应该经常查询表空间的利用率,按照数据库系统的具体情况估算表空间的增长量,当表空间的利用率超过90%时,要及时采取措施,如清理历史表、历史数据以释放空间,向表空间中添加新的数据文件,扩展现有数据文件大小等方法来降低表空间的利用率,避免表空间利用率接近100%时,将产生空间不够的错误。
1.查询oracle表空间的使用情况select b.file_id文件ID,b.tablespace_name表空间,b.file_name物理文件名,b.bytes总字节数,(b.bytes-sum(nvl(a.bytes,0)))已使用,sum(nvl(a.bytes,0))剩余,sum(nvl(a.bytes,0))/(b.bytes)*100剩余百分比from dba_free_space a,dba_data_files bwhere a.file_id=b.file_idgroup by b.tablespace_name,b.file_name,b.file_id,b.bytesorder by b.tablespace_name2.查询oracle系统用户的默认表空间和临时表空间select default_tablespace,temporary_tablespace from dba_users3.查询单张表的使用情况select segment_name,bytes from dba_segments where segment_name = 'RE_STDEVT_FACT_DAY' and wner = USERRE_STDEVT_FACT_DAY是您要查询的表名称4.查询所有用户表使用大小的前三十名select * from (select segment_name,bytes from dba_segments where wner = USER order by bytes desc ) where rownum <= 305.查询当前用户默认表空间的使用情况select tablespacename,sum(totalContent),sum(usecontent),sum(sparecontent),avg(sparepercent) from(SELECT b.file_id as id,b.tablespace_name as tablespacename,b.bytes astotalContent,(b.bytes-sum(nvl(a.bytes,0))) as usecontent,sum(nvl(a.bytes,0)) assparecontent,sum(nvl(a.bytes,0))/(b.bytes)*100 as sparepercentFROM dba_free_space a,dba_data_files bWHERE a.file_id=b.file_id and b.tablespace_name = (select default_tablespace from dba_users where username = user)group by b.tablespace_name,b.file_name,b.file_id,b.bytes)GROUP BY tablespacename6.查询用户表空间的表select * from user_tables。