Oracleオブジェクト型の作成とサブタイプスーパータイプ。サブタイプの数の制限?
質問
スーパータイプから継承するOracle 10gでオブジェクト型を作成するときに
私が問題に遭遇してきました。現在、このスーパータイプと、最近のコンパイラからの継承は、次のエラーを投げ始めたことを多くのオブジェクトタイプを持っている。
ORA-30745: error occured while trying to add column "SYS_NC_ROWINFO$" in table "DATA_CACHE.CACHE_ENTRIES"
ORA-01792: maximum number of columns in a table or view is 1000
のサブタイプの数の上限は、あなたがスーパータイプからその継承を生成することができますがありますか。
解決
ユーザー定義型に基づいた列を持つ表を作成すると、
は、Oracleは、カバーの下にあなたのための追加の「秘密」の列を作成します。たとえばます:
SQL> create type emp_data_t as object (empno number, ename varchar2(30));
2 /
Type created.
SQL> create table emp_data_table (id int, emp_data emp_data_t);
Table created.
このテーブルには、を2列を持っているを表示されます
SQL> desc emp_data_table
Name Null? Type
-------------------------- -------- ------------------------
ID NUMBER(38)
EMP_DATA EMP_DATA_T
...しかし、それの本当にの4を持っています:
SQL> select name
2 from sys.col$
3 where obj# = (select object_id
4 from user_objects
5 where object_name='EMP_DATA_TABLE');
NAME
------------------------------
ID
EMP_DATA
SYS_NC00003$
SYS_NC00004$
あなたが見てきたように、は、Oracleは、テーブルごとに1000列の制限があります。この制限は、タイプとスーパータイプから派生これらの隠された列のいずれかが含まれます。あなたのテーブルがこの上限を超えているように見えます。
他のヒント
useコマンド:
PURGE RECYCLEBIN;
所属していません StackOverflow