在使用sqoop增量抽取数据时,在不指定m的情况下,导出日志中可以看到添加了截止时间,但这个时间并不是系统时间,经过多次比较发现,这个时间比当前系统时间早8个小时。因此怀疑是时区问题。
检查Oracle中的回话时区和数据库时区:
SQL> SELECTSESSIONTIMEZONE FROM DUAL;
SESSIONTIMEZONE
---------------------------------------------------------------------------
+08:00
会话时区是北京时区
SQL> SELECTDBTIMEZONE FROM DUAL;
DBTIME
------
+00:00
可以看出正好相差8个小时,因此将数据库时区修改为东8区:
改变数据库时区
SQL> ALTER DATABASE SET TIME_ZONE = '+8:00';
关闭数据库
SQL> shutdownimmediate
重启数据库
SQL> startup
再次检查时区,如下所示二者已经一致:
SQL> SELECT TZ_OFFSET(SESSIONTIMEZONE),TZ_OFFSET(DBTIMEZONE) FROM DUAL;
TZ_OFFS TZ_OFFS
------- -------
+08:00 +08:00
再次执行sqoop脚本,此时已经可以正常抽取。
【参考】https://www.cnblogs.com/jimeper/archive/2013/04/17/3026810.html