2017-05-18 19 views
1

に、私はテーブルを使用してOracleデータベースを持っていながら、次のようにドロップ:ユーザー定義型を使用

create table Table1 
(Column1 number(5,0), 
Column2 special_type); 

を今、何らかのデータエラーのために、サポートチームは修正がドロップし、タイプを再作成することであろうことを決めました。

問題がある
Table1 
Column1 number(5,0), 
Column2 null 

、私は「表にエラーがある」というメッセージを取得し、テーブルをドロップすることはできません。次のように

は、私は今、テーブルを持っています。私はテーブルを変更することはできません、私は "テーブルがエラー"メッセージを取得します。私はOracle SQL DeveloperでDDLを操作しようとしましたが、私が得たものは何ですか? 「テーブルにエラーがあります」というメッセージが表示されます。

誰でも正しい方向に向けることができますか?

+0

'ALTER TABLE table1 DROP UNUSED COLUMNS;を実行する前に、' ALTER TABLE table1 SET UNUSED(Column2); 'を試してみてください。 –

答えて

0

あなたが試すことができ、次の -

  1. タイプ

  2. が第二のテーブル

にデータを挿入同じテーブル構造を持つ別のテーブルを作成して再作成します

今すぐ2番目のテーブルを使用してください。

以前に問題を引き起こしたため、タイプを再作成したくない場合があります。代替案を見つける。あなたの問題を解決するかもしれません。

1

サポートチームが強制的にタイプを削除したようです。通常のシナリオでは、依存表があれば型を削除できません。

参照のデモ:

SQL> drop type nuu; 
drop type nuu 
* 
ERROR at line 1: 
ORA-02303: cannot drop or replace a type with type or table dependents 

は、だから私は強制的にドロップ:今

SQL> CREATE OR REPLACE TYPE NUU AS TABLE OF NUMBER; 
    /

Type created. 

SQL> CREATE TABLE TBLLL(NUM NUU) 
NESTED TABLE NUM STORE AS VVVVV ; 
/
Table created. 

私は、単純なドロップタイプをしようと、私は以下のエラーを取得

SQL> drop type nuu force; 

Type dropped. 

そして、私が選択をしようとするとエラーが出る:

SQL> select * from tblll; 
select * from tblll 
       * 
ERROR at line 1: 
ORA-04063: table "USER.TBLLL" has errors 

したがってAlterのテーブルには、最初にtypeを作成する必要があります。 typeが作成されると、テーブル定義はcorrectになり、次にテーブルAlterになります。

その他の解決策は、テーブルを削除して、すでに述べたように再作成することです。

+0

これを行ったDBAだと思いますか? – APC

関連する問題