SCN:system change number
SCN是一串数字,这串数字是由时间经过一个函数算出来的。同理,可以经过这个函数把SCN转成时间。SCN其实就是一个时间。
如果以字符串的形式比较时间,消耗的资源多;如果以数字来比较时间,消耗的资源少。
在shared pool里面比较SQL语句是否一样也是把SQL经过hash运算以后得到一个数字,然后比较数字是否相等。
比较时间的意义:比较先后;比较新旧。Oracle为保证数据的一致性,在很多地方都用到SCN号。SCN就是一个时间点。
查询一个SCN:
SQL>select bms_flashback.get_system_change_number,SCN_TO_TIMESTAMP(dbms_flashback.get_system_change_number)from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
SCN_TO_TIMESTAMP(DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER)
---------------------------------------------------------------------------
855210
05-DEC-1504.25.28.000000000 PM
常见的SCN:
控制文件:
系统SCN :select checkpoint_change# from v$database;