Query below lists:
(A) all tables accessible to the current user in Oracle database that don't have foreign keys
(B) all tables in Oracle database that don't have foreign keys
Query was executed under the Oracle9i Database version.
Query
A. Tables accessible to the current user
select t.owner as schema_name,
t.table_name,
'>- no FKs' as foreign_keys
from sys.all_tables t
left join (select distinct owner,
table_name
from sys.all_constraints
where constraint_type = 'R'
) fks
on t.owner = fks.owner
and t.table_name = fks.table_name
where fks.table_name is null
-- excluding some Oracle maintained schemas
and t.owner not in ('ANONYMOUS','CTXSYS','DBSNMP','EXFSYS', 'LBACSYS',
'MDSYS', 'MGMT_VIEW','OLAPSYS','OWBSYS','ORDPLUGINS', 'ORDSYS','OUTLN',
'SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM', 'TSMSYS','WK_TEST',
'WKPROXY','WMSYS','XDB','APEX_040000', 'APEX_PUBLIC_USER','DIP', 'WKSYS',
'FLOWS_30000','FLOWS_FILES','MDDATA', 'ORACLE_OCM', 'XS$NULL',
'SPATIAL_CSW_ADMIN_USR', 'SPATIAL_WFS_ADMIN_USR', 'PUBLIC')
order by t.owner, t.table_name;
B. If you have privilege on dba_tables and dba_constraints
select t.owner as schema_name,
t.table_name,
'>- no FKs' as foreign_keys
from sys.dba_tables t
left join (select distinct owner,
table_name
from sys.dba_constraints
where constraint_type = 'R'
) fks
on t.owner = fks.owner
and t.table_name = fks.table_name
where fks.table_name is null
-- excluding some Oracle maintained schemas
and t.owner not in ('ANONYMOUS','CTXSYS','DBSNMP','EXFSYS', 'LBACSYS',
'MDSYS', 'MGMT_VIEW','OLAPSYS','OWBSYS','ORDPLUGINS', 'ORDSYS','OUTLN',
'SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM', 'TSMSYS','WK_TEST',
'WKPROXY','WMSYS','XDB','APEX_040000', 'APEX_PUBLIC_USER','DIP', 'WKSYS',
'FLOWS_30000','FLOWS_FILES','MDDATA', 'ORACLE_OCM', 'XS$NULL',
'SPATIAL_CSW_ADMIN_USR', 'SPATIAL_WFS_ADMIN_USR', 'PUBLIC')
order by t.owner, t.table_name;
Columns
- schema_name - table owner, schema name
- table_name - table name
- foreign_keys - symbol indicating lack of FKs
Rows
- One row represents one table that doesn't have a foreign key
- Scope of rows: (A) all tables accessible to the current user in Oracle database that don't have foreign keys (do not refer to other tables), (B) all tables in Oracle database that don't have foreign keys (do not refer to other tables)
- Ordered by schema name, table name