一部のデータを、ある Oracle スキーマ/テーブルから同じデータベースの新しいスキーマ/テーブルに移行しています。
移行スクリプトは次のことを行います。
create table newtable as select
...
cast(ACTIVITYDATE as date) as ACTIVITY_DATE,
...
FROM oldtable where ACTIVITYDATE > sysdate - 1000;
元のデータを見ると、問題ないように見えます。ここに 1 つのレコードがあります。
select
activitydate,
to_char(activitydate, 'MON DD,YYYY'),
to_char(activitydate, 'DD-MON-YYYY HH24:MI:SS'),
dump(activitydate),
length(activitydate)
from orginaltable where oldpk = 1067514
結果:
18-NOV-10 NOV 18,2010 18-NOV-2010 12:59:15 Typ=12 Len=7: 120,110,11,18,13,60,16
データが破損していることを示す、移行されたデータ:
select
activity_date,
to_char(activity_date, 'MON DD,YYYY'),
to_char(activity_date, 'DD-MON-YYYY HH24:MI:SS'),
dump(activity_date),
length(activity_date)
from newtable
where id = 1067514
結果:
18-NOV-10 000 00,0000 00-000-0000 00:00:00 Typ=12 Len=7: 120,110,11,18,13,0,16
350k レコードのうち約 5000 件がこの問題を示しています。
誰がこれがどのように起こったのか説明できますか?