1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

迁移了40多套PG,从入坑到出坑?

遇到的迁移“坑”(一)

开发在使用to_date()函数时,需要注意查询结果是否正确。在Oracle中,日期类型是带有时分秒的,而PostgreSQL的日期类型是不带时分秒的。因此,在迁移过程中会把Date类型改为Timestamp类型,而PostgreSQL自带的to_date函数返回的是PostgreSQL中的Date类型,类型不匹配会导致查询不到数据。解决办法是将to_date函数改为to_timestamp,或者安装第三方插件orafce或aws_oracle_ext,使用第三方插件的to_date函数。

迁移了40多套PG,从入坑到出坑?

遇到的迁移“坑”(二)

序列顺序问题。在创建序列后,开发发现序列产生的值比当前序列最大值还要小。这是因为Oracle和PostgreSQL序列的差别。在PostgreSQL中,序列的cache值会在当前会话中保留,如果返回到之前的会话,再次获取nextval值时,会从上一次的缓存值开始计算,而不是从当前序列最大值开始。解决办法是将序列的cache值设置为1。

遇到的迁移“坑”(三)

substr函数结果不一致。在使用substr函数时,需要注意起始位置要从1开始,如果从0开始,虽然有数据但是和Oracle不一致。

另外,在处理事务问题时,需要注意PostgreSQL与Oracle和MySQL的差异。在Oracle和MySQL中,当前会话在执行事务之前将重新检查最新的数据,而在PostgreSQL中,会话会忽略其他会话更新或删除的行。这可能会导致数据删除丢失,需要在应用程序侧考虑这个问题进行改造。

以上是本小编在割接40多套PG时遇到的几个“坑”,希望对大家有所帮助。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6008.html