PROBLEM:
While dropping a tablespace, got error ORA-14404.
SQL> drop tablespace TEST_2 including contents and datafiles; drop tablespace TEST_2 including contents and datafiles * ERROR at line 1: ORA-14404: partitioned table contains partitions in a different tablespace
CAUSE & SOLUTION:
This error occurs when we try to drop a tablespace, which contains tables, whose partitions/subpartitions are not completely residing in this tablespace.
So let’s find the table name, which is causing this error.
1. Run transportable tablespace check against the tablespace
SQL> execute sys.dbms_tts.transport_set_check('TEST_2', true);
PL/SQL procedure successfully completed.
SQL> select * from sys.transport_set_violations;
VIOLATIONS
--------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
ORA-39901: Partitioned table DBA_RAJ.DBACLASS is partially contained in the transportable set.
ORA-39921: Default Partition (Table) Tablespace USERS for DBACLASS not contained in transportable set.
It shows partitioned table DBA_RAJ.DBACLASS is partially contained in this tablespace.
Below query can also be used
SET LINES 200
SET PAGESIZE 200
COL TABLE_NAME FOR A14
COL TABLE_OWNER FOR A14
COL PARTITION_NAME FOR A14
select table_owner, table_name,partition_name,tablespace_name from dba_tab_partitions
where (table_owner, table_name)
in (select table_owner, table_name from dba_tab_partitions X where x.tablespace_name='&TABLESPACE_TO_DROP' and exists (select * from dba_tab_partitions Y
where x.table_owner=y.table_owner and x.table_name=y.table_name and y.tablespace_name NOT IN ('&TABLESPACE_TO_DROP')
group by table_owner, table_name)
order by 1,2,partition_position;
TABLE_OWNER TABLE_NAME PARTITION_NAME TABLESPACE_NAME
-------------- -------------- -------------- ------------------------------
DBA_RAJ DBACLASS DBACLASS_1 TEST
DBA_RAJ DBACLASS DBACLASS_2 TEST
DBA_RAJ DBACLASS DBACLASS_3 TEST
DBA_RAJ DBACLASS DBACLASS_4 TEST
DBA_RAJ DBACLASS DBACLASS_5 TEST_2 ----- >
Now it is clear, that the partitioned table DBACLASS is spread over 2 tablespaces TEST and TEST_2.
So the solution is to either move/drop the partition which exists in the tablespace(which we are trying to drop).
SQL> alter table DBA_RAJ.DBACLASS drop partition DBACLASS_5; Table altered.
Now drop the tablespace:
SQL> drop tablespace TEST_2 including contents and datafiles; Tablespace dropped.

Thanks for the idea to solve the problem.
How can I make this work if I have a SubPartitioned Table
Seems to be a “)” missing in the query against dba_tab_partitions