1. 程式人生 > >ORA-14404:分割槽表包含不同表空間中的分割槽

ORA-14404:分割槽表包含不同表空間中的分割槽

Drop tablespace 有下面兩種方式:

drop tablespace crm_data including contents and datafiles;
drop tablespace crm_data including contents cascade constraints;

報錯有下面幾種:

一. ORA-23515


--- ORA-23515: materialized views and/or their indices exist in the tablespace

drop tablespace crm_data including contents and datafiles
*
ERROR at line 1:
ORA-23515: materialized views and/or their indices exist in the tablespace

意思是:該表空間 CRM_DATA含有物化檢視,或者含有物化檢視的索引

解決辦法:

-- 首先刪掉該表空間下的的物化檢視
select 'drop  materialized view '||owner||'.'||segment_name||' ;'
  from dba_segments
 where segment_name in (select mview_name from dba_mviews)
   and tablespace_name = 'CRM_DATA'


-- 然後刪除該表空間下的其他表空間下物化檢視在本表空間下建立的索引
select *
  from dba_segments
 where tablespace_name = 'CRM_DATA'
   and segment_name in
       (select index_name
          from dba_indexes
         where table_name in (select mview_name from dba_mviews));

二. ORA-02429

---ORA-02429: cannot drop index used for enforcement of unique/primary key

drop tablespace crm_idx including contents cascade constraints
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-02429: cannot drop index used for enforcement of unique/primary key

ORA-02429的意思是: 讓你刪除該表空間下面的 primary key 和 unique key

處理辦法:
select 'alter table '||owner||'.'||table_name||' drop constraint '||constraint_name||' ;'
  from dba_constraints
 where constraint_type in ('U', 'P')
   and (index_owner, index_name) in
       (select owner, segment_name
          from dba_segments
         where tablespace_name = 'CRM_IDX');

三. ORA-14404

--ORA-14404: partitioned table contains partitions in a different tablespace


drop tablespace crm_arc_data including contents and datafiles
*
ERROR at line 1:
ORA-14404: partitioned table contains partitions in a different tablespace

意思是: 本表空間下面有這麼樣一個或一些分割槽表的分割槽: this partition OR partitions的table所包含的全部 partitions不在一個表空間下面:

處理辦法:
select 'alter table '||owner||'.'||segment_name||' drop partition '||partition_name||' ;'
  from dba_segments
 where segment_name in (select distinct segment_name
                          from dba_segments
                         where tablespace_name = 'CRM_ARC_DATA'
                           and segment_type like '%PART%')
   and tablespace_name <> 'CRM_ARC_DATA';

殺手鐗: 直接drop 這個分割槽表(如果允許的話)

四. ORA-02449

--- ORA-02449: unique/primary keys in table referenced by foreign keys


drop tablespace crm_data including contents and datafiles
*
ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by foreign keys

意思是: 這個要刪除的表空間 裡面含有這麼樣的一些主鍵: 其他表空間的表在這些主鍵上建有外來鍵

處理辦法: 去掉這些垃圾外來鍵

select 'alter table '||owner||'.'||table_name||' drop constraint '||constraint_name||' ;'
  from dba_constraints
 where constraint_type = 'R'
   and table_name in (select segment_name
                        from dba_segments
                       where tablespace_name = 'CRM_DATA'
                         and segment_type like '%TABLE%');
                        

如果還是不行的話,就用這個語句來刪表空間吧:

drop tablespace crm_data including contents cascade constraints

from:http://qq229248742.blog.sohu.com/196395595.html