ORACLE的審計表不可以使用expdp和impdp導出和導入,如果使用,會報如下錯誤:
需要使用exp和imp進行導出和導出
導出語句:
exp " '/ as sysdba' " file=/Data/expdp/AUD.dmp log=/Data/expdp/AUD.log tables=SYS.AUD\$
帶導出條件的exp語句:
exp " '/ as sysdba' " file=/Data/expdp/FGA_LOG_88.dmp log=/Data/expdp/FGA_LOG_88.log tables=SYS.FGA_LOG\$ query=\"where FROM_TZ\(ntimestamp\#, \'00:00\'\) AT LOCAL BETWEEN TO_TIMESTAMP\(TO_CHAR\(SYSDATE - 123,\'YYYYMMDD\'\) \|\| \'073000000\',\'YYYYMMDDHH24MISSFF\'\) AND TO_TIMESTAMP\(TO_CHAR\(SYSDATE,\'YYYYMMDD\'\) \|\| \'073000000\',\'YYYYMMDDHH24MISSFF\'\)\"
1.FROM_TZ:將ntimestamp#欄位的timestamp類型轉換為帶時區的,市區為UTC(世界標准時間),之后再AT LOCAL轉換為本地時間。ntimestamp#存入的不是本地時間,是UTC時間
2.to_timestamp:第一個參數是字符串類型的,如果直接傳入日期類型,那么oracle會根據NLS_DATE_FORMAT進行隱式轉換,所以需要使用to_char提前處理。
3.上述導出語句會有警告,需要在導出前設置一下NLS_LANG環境變量
解決方法
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
導入命令:
imp " '/ as sysdba' " file=/Data/expdp/FGA_LOG_88.dmp log=/Data/expdp/FGA_LOG_250.log fromuser=sys touser=monkey data_only=y