如何在Oracle中查看各个表,表空间占用空间的大小

如何在Oracle中查看各个表,表空间占用空间的大小,第1张

用如下语句查询: select segment_name,tablespace_name,bytes B, bytes/1024 KB, bytes/1024/1024 MB from user_segments where segment_type='TABLE' and tablespace_name='USERS'结果: 说明,其中segment_type='TABLE'中的TABLE必须要大写,

oracle表空间数据删除后 还会占用表空间

释放表空间解决方法:先把表数据备份到另外一张表中,然后执行truncate table table_name,然后再把备份的导入到这个表中,然后删除备份表,你可以试试

oracle

数据库里查看表空间使用状况;

oracle表空间的事情状况要经常查看,一般空闲比例过低的时候就应该考虑增大表看空间了。查看方法如下sql:

方法一:

select

dbftablespace_name,

dbftotalspace

"总量(m)",

dbftotalblocks

as

总块数,

dfsfreespace

"剩余总量(m)",

dfsfreeblocks

"剩余块数",

(dfsfreespace

/

dbftotalspace)

100

"空闲比例"

from

(select

ttablespace_name,

sum(tbytes)

/

1024

/

1024

totalspace,

sum(tblocks)

totalblocks

from

dba_data_files

t

group

by

ttablespace_name)

dbf,

(select

tttablespace_name,

sum(ttbytes)

/

1024

/

1024

freespace,

sum(ttblocks)

freeblocks

from

dba_free_space

tt

group

by

tttablespace_name)

dfs

where

trim(dbftablespace_name)

=

trim(dfstablespace_name)

方法二:

select

totalname

"tablespace

name",

free_space,

(total_space-free_space)

used_space,

total_space

from

(select

tablespace_name,

sum(bytes/1024/1024)

free_space

from

sysdba_free_space

group

by

tablespace_name

)

free,

(select

bname,

sum(bytes/1024/1024)

total_space

from

sysv_$datafile

a,

sysv_$tablespace

b

where

ats#

=

bts#

group

by

bname

)

total

where

freetablespace_name

=

totalname

当发现有的表空间不够的错误时,处理如下:

1:找出该表空间对应的数据文件及路径

select

from

dba_data_files

t

where

ttablespace_name

=

'ard'

2:增大数据文件

alter

database

datafile

'全路径的数据文件名称'

resize

m

3:增加数据文件

alter

tablespace

表空间名称

add

datafile

'全路径的数据文件名称'

m

注解:表空间尽量让free百分比保持在10%以上,如果低于10%就增加datafile或者resizedatafile,一般数据文件不要超过2g

不奇怪呀。

特别是使用数据泵导出导入的dumpfile文件,比以前EXP/IMP得到的dmp更小了。

你这个应该还包括索引。

具体占用空间对照,你可以在现在库和之前库的做个比对,查询2个库里表空间大小信息就可以了。

甲骨文公司毕竟也在持续改进。

1 启动SQLPLUS,并用sys登陆到数据库。

#su - oracle    

$>sqlplus / as sysdba

2 查找数据库的UNDO表空间名,确定当前例程正在使用的UNDO表空间:

Show parameter undo_tablespace。

3 确认UNDO表空间;

SQL> select name from v$tablespace;    

NAME    

------------------------------    

UNDOTBS1

4 检查数据库UNDO表空间占用空间情况以及数据文件存放位置;

SQL>select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS%';

5 查看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间(特别是生产环境)。

SQL> select susername, uname from v$transaction t,v$rollstat r, v$rollname u,v$session s    

where staddr=taddr and txidusn=rusn and rusn=uusn order by susername;

6 检查UNDO Segment状态;

SQL> select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks  

from v$rollstat order by rssize;  

USN  XACTS  RSSIZE/1024/1024/1024  HWMSIZE/1024/1024/1024  SHRINKS  

1    0    0     0000358582             0000358582               0  

2    14   0     0796791077             0796791077               735  

3    44   1     000920867919921875     399295806884766          996

这还原表空间中还存在3个回滚的对象。

7 创建新的UNDO表空间,并设置自动扩展参数;

SQL> create undo tablespace undotbs2 datafile '/opt/oracle/oradata/ge01/UNDOTBS2dbf' size 100m reuse autoextend on next 50m maxsize 5000m;   

Tablespace created

8 切换UNDO表空间为新的UNDO表空间 , 动态更改spfile配置文件;

SQL> alter system set undo_tablespace=undotbs2 scope=both;    

System altered

9验证当前数据库的 UNDO表空间

SQL> show parameter undo  

NAME                                 TYPE        VALUE  

------------------------------------ ----------- --------------  

undo_management                      string      AUTO  

undo_retention                       integer     900  

undo_tablespace                      string      UNDOTBS2

9 等待原UNDO表空间所有UNDO SEGMENT OFFLINE;

select usn,xacts,status,rssize/1024/1024,hwmsize/1024/1024, shrinks from v$rollstat order by rssize;   

select tsegment_name,ttablespace_name,tsegment_id,tstatus from dba_rollback_segs t;  

      SEGMENT_NAME      TABLESPACE_NAME SEGMENT_ID   STATUS  

1     SYSTEM             SYSTEM          0           ONLINE  

2     _SYSSMU1$          UNDOTBS1        1           OFFLINE  

3     _SYSSMU2$          UNDOTBS1        2           OFFLINE  

4     _SYSSMU47$         UNDOTBS1        47          OFFLINE

上面对应的UNDOTBS1还原表空间所对应的回滚段均为OFFLINE

10到$ORACLE_HOME/dbs/init$ORACLE_SIDora如下内容是否发生变更:

#cat $ORACLE_HOME/dbs/initddptestora  

……  

undo_management=’AUTO’  

undo_retention=10800  

undo_tablespace=’UNDOTBS2’  

……

如果没有发生变更请执行如下语句:

SQL> create pfile from spfile;  

File created

11 删除原有的UNDO表空间;

SQL> drop tablespace undotbs1 including contents;

最后需要在重启数据库或者重启计算机后到存储数据文件的路径下删除数据文件(为什么要手动删除呢:以上步骤只是删除了ORACLE中undo表空间的逻辑关系,即删除了数据文件在数据字典中的关联,不会自动删除项关联的数据文件)。

drop tablespace undotbs1 including contents and datafiles;

以上就是关于如何在Oracle中查看各个表,表空间占用空间的大小全部的内容,包括:如何在Oracle中查看各个表,表空间占用空间的大小、oracle表空间数据删除后 还会占用表空间吗、oracle 数据库怎么查看temp表空间使用情况等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10196733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存