今天做基于时间戳的闪回查询,出现了错误:ORA-01466: unable to read data - table definition has changed
官方文档的解释:
ORA-01466: unable to read data - table definition has changed
在网上找到一个
> Solution Description:
> =====================
>
> This is usually caused when some change has been made to the
> initialisation parameter FIXED_DATE or the system date. It can occur
> Under different circumstances.
>
> 1. When doing Date testing and the init.ora parameter FIXED_DATE
> has been set to a future date. When the database is started, then
> that date & TIME does not change.
>
> So any objects created will have exactly the same Date & Time
> stamp as the FIXED_DATE.
>
> Now When you come to run the EXPORT, it checks the SYSDATE
> and the creation dates for the objects.
>
> You need to modify the TIME in the FIXED_DATE parameter,
> i.e. add 1 hour or few minutes, etc and you will not
> encounter the error ORA-1466 anymore.
>
> 2. The Operating System was reinstalled because of the server crash.
> The system date was not set correctly. The year was set to 2001
> instead of 1997 when they reinstalled Oracle. After some DB
> activity
> they realized the date was incorrect and reset it to 1997 causing
> some
> objects to exist with future dates.
>
> Perform full database export without specifying consistent=y and
> recreate the database.- Òþ²Ø±»ÒýÓÃÎÄ×Ö -
引用自:http://www.orafaq.com/usenet/comp.databases.oracle.server/2007/03/31/1586.htm
解决方法:指定一下会话的时间格式,重新执行即可。
10:26:02 TYGER@ORCL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
10:26:30 TYGER@ORCL>select sysdate from dual;
SYSDATE
-------------------
2014-03-14 10:26:38
10:27:12 TYGER@ORCL>select * from fb_tyger as of timestamp to_timestamp('2014-03-14 10:26:38','yyyy-mm-dd hh24:mi:ss');
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON