ORA-01653: unable to extend table X by Y in tablespace

最近几天遇到了好几次Oracle的这个问题了,场景不太一样而已(注意:标题上的Y的单位是KB):

wKiom1PF5DWjS0RjAAIUA-fWiBg847.jpg

1.insert into table1 values(...) select (...) from table2:(会占用temp tablespace,如果table2数据很大,temp tablespace不够大的话,可能会报出上面的问题)


2.update table1 set is_deleted='Y':(因为在table1上建有物化视图,而这个视图要新增对应的物化视图的log表,由于这个log表对应的tablespace满了,导致上面的问题)


3.insert into table1 values(...):(最正常不过的insert语句,由于table1对应的tablespace满了,导致上面的问题)


在网上找了一下相关的资料,摘抄了下三个关键的sql记录一下,以备后面的不时之需:


查询表空间相关信息


SELECT a.tablespace_name ,

      a.bytes / 1024 / 1024                              "表空间大小(M)",

      ( a.bytes - b.bytes ) / 1024 / 1024                "已使用空间(M)",

      b.bytes / 1024 / 1024                              "空闲空间(M)",

      Round(( ( a.bytes - b.bytes ) / a.bytes ) * 100, 2) "使用比率"

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

WHERE  a.tablespace_name = b.tablespace_name

ORDER  BY ( ( a.bytes - b.bytes ) / a.bytes ) DESC


查看表空间对应的datafile的信息


SELECT file_name,

      tablespace_name,

      bytes / 1024 / 1024    "bytes MB",

      maxbytes / 1024 / 1024 "maxbytes MB"

FROM  dba_data_files

WHERE  tablespace_name = 'PSR_DATA';


查看表空间对应的datafile是否可以自动扩展(当然有些场景开启自动扩展功能可能会带来一些潜在的问题,所以不是所有的公司都开启这个)


SELECT file_id,

      file_name,

      tablespace_name,

      autoextensible,

      increment_by

FROM  dba_data_files

WHERE  tablespace_name = 'PSR_DATA'

ORDER  BY file_id DESC;


你可能感兴趣的:(oracle学习,OCP,ocm,cuug官网,oracle官网)