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