データベースで交換パーティションを実行しようとしていて、次のエラーが発生しました。ORA-14097:ALTER TABLE EXCHANGEで列の型またはサイズの不一致Oracle 11gのデータベースで期待どおりにPARTITIONパーティション交換型またはサイズの不一致(ORA-14097)
これはすでに作成された実行するスクリプト、それを走っていました。私が12cに更新するとすぐに、私はこの問題を抱えています。パーティション交換を行う方法は次のとおりです。
-- The new partitioned table.
CREATE TABLE NEW_TABLE
(
id NUMBER(18) NOT NULL,
message VARCHAR2(4000) NOT NULL,
details VARCHAR2(4000),
partition_time TIMESTAMP(6) DEFAULT to_timestamp('01-01-2016','dd-mm-yyyy HH24:MI') NULL
) NOCOMPRESS LOGGING
PARTITION BY RANGE (partition_time) INTERVAL (NUMTODSINTERVAL(1,'HOUR'))
(PARTITION initial VALUES LESS THAN (to_timestamp('01-01-2016','dd-mm- yyyy HH24:MI')));
-- The old table.
CREATE TABLE OLD_TABLE
(
id NUMBER(18,0) NOT NULL,
message VARCHAR2(4000 byte) NOT NULL,
details VARCHAR2(4000),
);
-- Add the column that does not exist on the old table (keep the same columns).
ALTER TABLE OLD_TABLE ADD partition_time TIMESTAMP(6) DEFAULT to_timestamp('01-01-2016','dd-mm-yyyy HH24:MI') NULL;
ALTER TABLE NEW_TABLE
EXCHANGE PARTITION INITIAL
WITH TABLE OLD_TABLE
WITHOUT VALIDATION;
(...)
ここでもまた、Oracle 11gではこれが完全に機能していました。 Oracle 12cでは、上記のエラーが発生しました。私はいくつかの研究を行いました。私は人々が不可解な列について話しているのを見ました。さて、私はOLD_TABLEを再作成しているので、目に見えない列はないと思います。
EDIT:
私は、Oracle 12cの上で私は(SYS_NC00011 $という名前の)別の不可視の列が作成された新しい列を作成するには、テーブルを変更しようとすることを実現しました。パーティション交換が機能しないのはこのためです。私の質問は、なぜこれが起こっているのか、そして「このコラムを削除する」最良の方法は何ですか?既に使用されていない列を削除して成功しません。
ありがとう!
関連する統計情報をサポートする列グループがありますか。 – BobC