ogg设置目标分区与主分区不一致
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ogg设置目标分区与主分区不一致相关的知识,希望对你有一定的参考价值。
参考技术A 建议启动数据库。源端来个insert,目标端也是执行了相同的insert,所以源端和目标端的数据才是一致的。比如说:同步A表,源端还有与A表相同结构的B表,而目标端没有B表,那么将B表数据插入A表(insertintoAselect*fromB;),按照我之前的说法,ogg同步进程就应该abend了。一,检查服务是否启动,
二,如果已经启动,说明你的数据库没有启动,需要使用管理员身份登陆后,使用startup启动,操作为sys/assysdba进去后,说已连接什么空闲内存,然后使用startup启动,如果不能启动,先可以使用shutdownimmediate再启动,再不行,就只有查错误,在不链接数据库情况下,下设置环境,将相应的错误修复后在启动。
对分区表使用 FIRST 或 LAST 会返回不一致的值
【中文标题】对分区表使用 FIRST 或 LAST 会返回不一致的值【英文标题】:Using FIRST or LAST over partitioned tables returns inconsistent values 【发布时间】:2016-07-24 05:20:16 【问题描述】:在跨多个表运行的查询中使用 LAST 或 FIRST 时,返回的结果不一致。再次执行相同的查询每次都会返回不同的结果。
返回的值与查询中一个表的正确 LAST 和 FIRST 值匹配。但是,每种情况下使用的表格似乎都是随机选择的。
例如下面的查询:
SELECT
FIRST(timestamp) as first_ts,
FROM TABLE_DATE_RANGE([some_table]_, timestamp('2016-07-21'), timestamp('2016-07-22'))
将返回:
first_ts
2016-07-22 07:35:30 UTC
第一次运行,并且:
first_ts
2016-07-21 23:16:26 UTC
下一次运行。等等。
预期结果是2016-07-21 23:16:26
。但是,值2016-07-22 07:35:30 UTC
是表[some_table]_20160722
的第一个时间戳,所以我认为发生的情况是BigQuery 不允许您在跨表查询时对表进行排序。结果,FIRST 和 LAST 变得不可靠,因为不知道表的顺序。请注意,MAX 和 MIN 确实可以很好地跨表。
不仅在使用旧版 SQL 时如此,在使用新 SQL 以及函数 FIRST_VALUE 和 LAST_VALUE 时也是如此(因为不再支持 FIRST 和 LAST。可能相关?)请参见下面使用新 SQL 的示例。
SELECT
FIRST_VALUE(timestamp) OVER (ORDER BY event_sequence ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) first_ts,
FROM `some_table_*`
WHERE _TABLE_SUFFIX BETWEEN '20160721' AND '20160722'
此外(这可能被视为一个单独的问题)在查询 单个表 时会观察到类似的行为,其中 数据已多次附加到该表。 FIRST 和 LAST 的结果不一致。加载的每个数据子集都表现为一个分区。
在我看来,这就像一个错误,除非有人知道如何做到这一点。 Google Bigquery 团队,我们喜欢您的产品。但是你能解决这个问题吗?我们不能以可靠的方式使用 FIRST 和 LAST 聚合,这对我们来说很重要。谢谢!
【问题讨论】:
【参考方案1】:我们不能以可靠的方式使用 FIRST 和 LAST 聚合,那就是 对我们来说很重要
我认为这里没有错误!
来自文档:
FIRST(expr) 返回函数范围内的第一个连续值。
表格本身不被视为有序序列。 BigQuery 不保证输出行的顺序,除非您提供一些提示 - 例如 ORDER BY
所以在你的例子中 - 你应该在下面使用。这将以可靠的方式为您提供预期的结果!
SELECT
FIRST(timestamp) AS first_ts
FROM (
SELECT *
FROM TABLE_DATE_RANGE([some_table]_, TIMESTAMP('2016-07-21'), TIMESTAMP('2016-07-22'))
ORDER BY timestamp
)
注意:MAX 和 MIN 当然可以工作,因为它们不关心顺序
【讨论】:
对,有道理。谢谢。很高兴知道table by itself is not considered as an ordered sequence
。这就是我们目前正在使用的解决方案,但是对于我们必须查询的数据量,我们得到一个resources exceeded
总有解决办法!提供更多详细信息,我们可能会提供帮助:o)我建议您为此发布新问题
太棒了。会做。谢谢!以上是关于ogg设置目标分区与主分区不一致的主要内容,如果未能解决你的问题,请参考以下文章
OGG-01163 Bad column表结构一致trail文件meta不一致处理