If all your tables are parsed, you can check the num_rowstable column user_tables.
Otherwise, you will need PL / SQL to do this work. This will output all the tables of your current user without records (use all_tablesif you need tables of other users):
Set Serveroutput On;
Declare
cnt PLS_INTEGER;
Begin
For c In ( Select table_name From user_tables ) Loop
Execute Immediate 'Select Count(*) From "' || c.table_name || '" where rownum=1'
Into cnt;
If( cnt = 0 ) Then
dbms_output.put_line( c.table_name );
End If;
End Loop;
End;
source
share