Hãy thử sử dụng ALL_TAB_COLUMNS thay vì ALL_TAB_COLS. Trong Oracle 11.2, tôi thấy rằng các cột không sử dụng xuất hiện trong ALL_TAB_COLS (mặc dù đã được đổi tên) nhưng không xuất hiện trong ALL_TAB_COLUMNS.
Tôi đã tạo một bảng như thế này:
create table t1 (c1 varchar2(30), c2 varchar2(30);
Sau đó đặt c2 không sử dụng:
alter table t1 set unused column c2;
Sau đó, tôi thấy:
select column_name from all_tab_cols where owner='ME' and table_name='T1';
COLUMN_NAME
-----------
C1
SYS_C00002_10060107:25:40$
select column_name from all_tab_columns where owner='ME' and table_name='T1';
COLUMN_NAME
-----------
C1