Oracleオブジェクト型の作成とサブタイプスーパータイプ。サブタイプの数の制限?

StackOverflow https://stackoverflow.com/questions/2101660

質問

スーパータイプから継承する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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top