我在多分区上运行了一些弹簧批处理作业...我想使用oracle的全局临时表作为我的批处理作业的临时表,以便临时表仅在我的作业运行期间存在...截至目前我有物理表
我在tomcat中运行所有这些。已经实现了tomcat连接池......
所以我的登台表由登台编写者填充。我可以看到数据。到目前为止,一切看起来都很好
在此之前,我的工作是单线程..在此之后,多个读者都会在临时表中读取不同的记录范围。
Staging Reader是分区的,每个分区都使用池中的一个连接..所以大多数读者都无法看到临时表中的数据..可能是一个或两个读者,我可以认为它们是使用创建和插入表格的同一会话
有没有办法使用连接池为所有读者提供数据?
答案 0 :(得分:2)
全局临时表中的数据只会在插入它的会话中可见。与使用本地临时表的其他数据库不同,表本身将始终存在(您的注释表明“表仅在我的作业运行期间存在”似乎不正确)。
如果您希望数据在会话中可见,您实际上需要将其加载到永久登台表中。还有其他方法可以跨多个会话共享数据 - 例如全局上下文 - 但如果要生成多个线程来处理数据,那么这些选项可能对您的数据量不实用。根据处理的性质,您可能在应用程序中有一个线程将数据分发给所有其他线程,以便只有协调器才需要查询登台表。