KSH脚本太大而无法运行

时间:2018-03-22 13:53:18

标签: oracle ksh

我从来没有这样的问题,但我有一个KSH脚本来插入Oracle行,脚本失败因为太大,我知道这是问题,因为如果删除了一些插入,脚本就可以了。< / p>

脚本大小为90.000 kb aprox,结构如下:

#!/bin/ksh

$ORACLE_HOME/bin/sqlplus -s << LABEL1
USER/PasWoRd@10.10.10.10:1234/oraSID

-- Define 3 variables
variable msgVal number;
variable msgeId varchar2(50);
variable msgseqval varchar2(50);

-- 1 Original time: 3/1/2018 12:46:34 AM
EXEC :msgVal := MESSAGEIDSEQ.NextVal;
EXEC :msgeId := CONCAT ('B_',to_char (sysdate, 'YYYYMMDDHH24MISS');

INSERT into TABLE_CONTROL (MESSAGE_ID, NUMBER_OF_ROWS, SEND_DATE) VALUES (:msgeId, 1, to_char (sysdate, 'YYYYMMDDHH24MISS'));
INSERT into TABLE_DATA(MESSAGE_ID, SHORT_TEXT, LONG_TEXT_FLAG) VALUES (:msgeId,  'SHORT TEXT', 'N');

commit;
EXEC dbms_lock.sleep (30);

-- PFP 2 Original time: 3/1/2018 1:46:25 AM
EXEC :msgseqval := MESSAGEIDSEQ.nextval;
EXEC :msgVal := MESSAGEIDSEQ.NextVal;
EXEC :msgeId := CONCAT (CONCAT (CONCAT ('B_',to_char (sysdate, 'YYYYMMDDHH24MISS')), '_'), to_char (:msgVal));
INSERT into TABLE_CONTROL (MESSAGE_ID, NUMBER_OF_ROWS, SEND_DATE) VALUES (:msgeId, 1, to_char (sysdate, 'YYYYMMDDHH24MISS'));
INSERT into TABLE_DATA(MESSAGE_ID, SHORT_TEXT, LONG_TEXT_FLAG) VALUES (:msgeId,  'SHORT TEXT', 'N');

commit;
EXEC dbms_lock.sleep (30);

LABEL1

但大约有200,000个插页。

我需要使用nohup运行,我想知道是否有办法在一个脚本中执行此操作。

问候。

路易斯

1 个答案:

答案 0 :(得分:0)

它可能与sqlplus输入缓冲区有关。为什么不将语句和命令写入文件并执行它:

cat <<LABEL1 >/tmp/foobar
USER/PasWoRd@10.10.10.10:1234/oraSID
...
commit;
EXEC dbms_lock.sleep (30);

LABEL1
$ORACLE_HOME/bin/sqlplus -s @/tmp/foobar
rm /tmp/foobar