成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

sqlldr標(biāo)準(zhǔn)輸出未處理導(dǎo)致批處理掛起問題

1問題
    生產(chǎn)環(huán)境一個(gè)批量處理沒有完成。

 2分析
    批量處理邏輯:
    java->shell->sqlldr
    檢查數(shù)據(jù)庫會話,發(fā)現(xiàn)對應(yīng)會話等待事件為SQL*Net message from client,對應(yīng)v$session.program為sqlldr@xxx,v$session.seq#保持不變,持續(xù)超過5個(gè)小時(shí)(6:45-12:20)。
    查詢數(shù)據(jù)庫加載的表,發(fā)現(xiàn)已加載部分?jǐn)?shù)據(jù),但對應(yīng)sqlldr日志為空。

     對應(yīng)sqlldr命令如下:
     sqlldr user/pwd data=a.txt control=a.ctl log=a.log bad=a.bad discard=a.dis errors=9999999 rows=1000

     在測試環(huán)境驗(yàn)證,sqlldr直接運(yùn)行時(shí),可以順利加載所有數(shù)據(jù);通過java->shell->sqlldr方式運(yùn)行時(shí),在加載特定行數(shù)后停止,問題可以重現(xiàn)。

     在進(jìn)行以上測試時(shí),sqlldr直接運(yùn)行時(shí),當(dāng)前窗口會輸出已加載了xx行。其實(shí),問題正出在這里。通過java->shell->sqlldr方式運(yùn)行時(shí),標(biāo)準(zhǔn)輸出沒有程序讀取,在要加載的數(shù)據(jù)量達(dá)到一定程度時(shí)(超過缺省緩沖區(qū)大小),就會導(dǎo)致加載過程停止。

     驗(yàn)證過程參考附錄。

3解決方案
處理sqlldr的標(biāo)準(zhǔn)輸出與錯(cuò)誤輸出,可選方法:
方法一: sqlldr ...  silent=(ALL)
方法二: sqlldr .... 1>std.log 2>err.log


附,測試腳本
--RunShell.java
import java.util.Date;
import java.text.SimpleDateFormat;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class RunShell {
    public static void main(String[] args){
        try {
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String shpath="/home/oracle/java/test.sh";
            System.out.println("---1--" + df.format(new Date()));
            Process ps = Runtime.getRuntime().exec(shpath);
            System.out.println("---2--" + df.format(new Date()));
            //ps.waitFor();
            BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
            String loop = args[0];
            System.out.println(loop);
            String line;
            while ("0".equals(loop) && (line = br.readLine()) != null) {
                System.out.println(line);
            }

            System.out.println("---3--" + df.format(new Date()));
            ps.waitFor();
            System.out.println("---4--" + df.format(new Date()));

            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
}


--test.sh
seq -w 1 100000|awk '{print $0"xxxxxxxxxxxxxx"}'


測試1--傳入?yún)?shù)0,主線程主動讀取shell的標(biāo)準(zhǔn)輸出
java RunShell 0
---1--2018-04-20 13:23:25
---2--2018-04-20 13:23:25
0
...
...
---3--2018-04-20 13:23:34
---4--2018-04-20 13:23:34

==〉可以順利完成


測試2--傳入?yún)?shù)1,主線程不讀取shell的標(biāo)準(zhǔn)輸出
java RunShell 1
---1--2018-04-20 13:28:30
---2--2018-04-20 13:28:30
1
---3--2018-04-20 13:28:30

==〉長時(shí)間掛起
Ctrl-C

^C---4--2018-04-20 16:37:08

當(dāng)前題目:sqlldr標(biāo)準(zhǔn)輸出未處理導(dǎo)致批處理掛起問題
URL分享:http://jinyejixie.com/article46/gceoeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司Google、電子商務(wù)響應(yīng)式網(wǎng)站、云服務(wù)器、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
东源县| 安达市| 南木林县| 花莲县| 博爱县| 永德县| 六枝特区| 铜鼓县| 永善县| 长武县| 牟定县| 卢湾区| 宁河县| 尖扎县| 安多县| 安阳县| 阜阳市| 库伦旗| 麦盖提县| 陇南市| 郎溪县| 呼图壁县| 平谷区| 荥阳市| 伊金霍洛旗| 大渡口区| 东阿县| 双流县| 隆德县| 赤峰市| 项城市| 建水县| 维西| 额尔古纳市| 和静县| 遵化市| 滨州市| 开原市| 鄂尔多斯市| 根河市| 青铜峡市|