我从来没有这样的问题,但我有一个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运行,我想知道是否有办法在一个脚本中执行此操作。
问候。
路易斯
答案 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