0

我正在尝试在 KornShell (ksh) 协同进程中并行运行一堆脚本。其中一些脚本包含许多 DDL 语句。这些 DDL 语句被确定为独立的,并且针对不同的(和大型/昂贵的,例如:3500 万行及以上)数据库对象工作。为了并行运行它们,我正在考虑为每个 DDL 语句创建单独的子脚本 - 这样我就可以说: SQL*Plus - 这将是很多 :( - 导致读取和写入过多 -因为它是一个批处理过程,所以所需的时间不是很关键,但是(在这个单一的磁盘并行执行环境中可能仍然会导致抖动)..

我仍然不喜欢物理脚本扩散的想法。想知道是否有办法从 ksh 调用解析器,以便我可以从相当大的脚本文件中提取每个 DDL / DML 或任何其他语句并以编程方式执行它们在后台进程中..有什么想法吗?

4

1 回答 1

0

这会起作用吗:

cat DDL_statements | parallel -j20 --pipe -N 10 sql oracle://scott:tiger@server

这假设 DDL_statements 是 1 行长(如果它们不是 1 行长,请举几个例子)。它并行运行 20 个作业,并以 10 个语句块的形式启动它们。

它使用 GNU Parallel(和 GNU sql - GNU Parallel 的一部分)。

于 2012-11-15T12:15:42.440 回答