天天看點

關于Sql developer 中schema表名為CAT的奇怪問題ORACLE系統表和資料字典視圖

【問題描述】

Oracle版本:10.2.0.1.0

Sql developer版本:2.1.0.63

SID:orcl

在SID為orcl的資料庫下面建立一個schema(我的命名為:SD_CUST_00_HOST),然後在這個schema下面建立一個名稱為CAT的使用者表。接着,插入一條資料。然後sql developer的connection視圖裡面一次展開schema和cat表,展開cat表之後在sql developer的後邊視圖裡面顯示的是cat表的詳細資訊,此時預設顯示的是Columns TAB,切換到Data TAB,然後看不到任何東西。并且右下方的Data Edite_log視圖裡面顯示  ORA-00904: "TABLE_TYPE": invalid identifier

【問題原因】

Cat is the synonym to user_catalog view which can be used to query a couple of object_types owned by user ( such things like tables,cluster etc.). You can see the definition of that view even if you doesn't have any such objects in your schema, but in that case you get no rows returned from this view.

這是在國外一個網站上面網友的留言,大概意思就是:cat是user_catalog 視圖的别名(注:讀者可以在sql editer屬兔裡面輸入 DESC USER_CATALOG;檢視此視圖的結構,還可以用 select * from  user_catalog;查詢視圖裡面的資料),user_catalog是用來查詢此schema下面的user對象(例如表,SYNONYM,SEQUENCE,cluster等等)。即使你沒有在這個schema下面定義任何oracle對象,你還是可以檢視這個視圖的定義,但是這樣的話,當你查詢這個視圖的時候,你就得不到任何資料。

【解決辦法】

貌似CAT被系統使用了,是以,不要在自己的schema裡面定義這個對象。

附:

ORACLE系統表和資料字典視圖

1.系統表

  ORACLE資料庫的系統參數都存儲在資料庫中,可以通過SQLPLUS,以使用者SYSYTEM進行查詢。幾個重要的表或者視圖如下:

  v$controlfile:控制檔案的資訊;

  v$datafile:資料檔案的資訊;

  v$log: 日志檔案的資訊;

  v$process:處理器的資訊;

  v$session:會話資訊;

  v$transaction:事務資訊;

  v$resource:資源資訊;

  v$sga:系統全局區的資訊。

  上面的視圖名中的‘v$’,隻是視圖名字中的字元。類似于上面的視圖或表還有很多,位于:

  $ORACLE_HOME/RDBMS/ADMIN/CATALOG.SQL檔案中。

  這些視圖或表可以在SQLPLUS中用SELECT語句進行查詢。

  2.資料字典視圖

  表和列

  DBA_TABLES、ALL_TABLES和USER_TABLES顯示了有關資料庫表的一般資訊。

  DBA_TAB_COLUMNS、ALL_TAB_COLUMNS和USER_TAB_COLUMNS顯示了每個資料庫表的列的資訊。

  注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS顯示了模式對象的資訊,包括表。

  完整性限制

  DBA_CONSTRAINTS、ALL_CONSTRAINTS和USER_CONSTRAINST顯示有關限制的一般資訊。

  DBA_CONS_COLUMNS、ALL_CONS_COLUMNS和USER_CONS_COLUMNS顯示有關列的相關限制的一般資訊。

  視圖

  DBA_VIEWS、ALL_VIEWS和USER_VIEWS。

  注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS顯示了模式對象的資訊,包括視圖。

  序列

  DBA_SEQUENCES、ALL_SEQUENCES和USER_SEQUENCES。

  注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS顯示了模式對象的資訊,包括序列。

  同義詞

  DBA_SYNONYMS、ALL_SYNONYMS和USER_SYNONYMS。

  注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS顯示了模式對象的資訊,包括同義詞。

  索引

  DBA_INDEXS、ALL_INDEXS、USER_INDEXS、DBA_IND_COLUMNS、ALL_IND_COLUMNS和USER_IND_COLUMNS。

  使用者

  DBA_USERS。

  角色

  DBA_ROLES。

  表空間定額

  DBA_TS_QUOTAS。

  配置表

  DBA_PROFILES。

  表空間

  DBA_TABLESPACES。

  資料檔案

  DBA_DATA_FILES。

  段

  DBA_SEGMENTS、USER_SEGMENT。

  復原段

  DBA_ROLLBACK_SEGS、V$ROLLNAME、V$ROLLSTAT。

注:如果你想找oracle的内置對象的話,用system或者sys以DBA的身份登入資料庫,可以自己在table,view等等下面去檢視