導(dǎo)讀:DSsmtp:[210.75.71.180]dssendmail_template.txt*OnUNIXtorunsendmail,thetemplatelookslikethis(doesn'trequirea<file>section):#!/bin/sh/usr/lib/sendmail-t<<////From:%from%To ![]() DSsmtp:[210.75.71.180] dssendmail_template.txt * On UNIX to run sendmail, the template looks like this (doesn't require a <file> section): #! /bin/sh /usr/lib/sendmail -t <<//// From: %from% To: %to% Subject: %subject% Server: %server% %body%
3.23 隨機(jī)錯(cuò)誤問題 DataStage Sequence程序隨機(jī)錯(cuò)誤,錯(cuò)誤是找不到/tmp目錄下的該JOB的臨時(shí)文件,重新編譯后正常Run,錯(cuò)誤描述: I_Tr_EDS_TM_DOL_BRAND.#0.CNTR_WEdsTmDolBrandLdf_ins.LK05-Input.LK01: ds_ipcopen() - Error in open(/tmp/ade.SGMEDW.I_Tr_EDS_TM_DOL_BRAND.#0.CNTR_WEdsTmDolBrandLdf_ins.LK05-Input) - No such file or directory
解決方法: 目前修改了以下參數(shù),連續(xù)兩天未發(fā)現(xiàn)隨機(jī)錯(cuò)誤: 1.APT_MONITOR_SIZE to 100000 and APT_MONITOR_TIME to 5 2.可能是因?yàn)樵赑arallel Job中使用了Server Share Container導(dǎo)致的, 打開Project Property 確保已經(jīng)選擇Enable row buffer,并且選擇Inter process 最終確認(rèn)的原因: 1.Default.app設(shè)置的并行節(jié)點(diǎn)數(shù)為4,那對(duì)于一個(gè)Stage就會(huì)起4個(gè)進(jìn)程,stage過多會(huì)導(dǎo)致資源耗盡 解決方案: 1.盡量降低并發(fā)度 2.首先采用1個(gè)節(jié)點(diǎn)運(yùn)行,待穩(wěn)定后逐步增加節(jié)點(diǎn)數(shù),也可對(duì)復(fù)雜JOB進(jìn)行 3.24 DS中的日期問題 在Datastage7.5.1A中,日期抽取問題,例如,時(shí)間問題,'2006-04-12'等日期在datastage中變?yōu)?'2006-04-11' 答: 問題原因: dsenv 的TZ設(shè)置不能使用別名BEIST,缺省值為GMT0這表示格林標(biāo)準(zhǔn)時(shí)間 解決方法: Datastage dsenv參數(shù)TZ="GMT-8" GMT-8表示的就是北京時(shí)間
3.25 DS連接oracle問題 DATASTAGE +oracle 10g 客戶端連接windows平臺(tái)下oracle 10G數(shù)據(jù)庫失敗,報(bào)plug_in初始化失敗。 答: 原因:未將ETL賬戶加入到DBA權(quán)限組中。加入以后就解決了。
3.26 在Sequence File Stage中的空值處理問題 在使用Sequence File Stage, ,給CHAR型等固定長度的字段賦空值時(shí)會(huì)報(bào)錯(cuò) 。 例如在往一個(gè)可以為NULL并且類型是CHAR(20)的字段FI_CARLINE 中寫NULL數(shù)據(jù)時(shí)會(huì)報(bào)如下信息: Sequential_File_8: When checking operator: When validating export schema: At field "FI_CARLINE": "null_field" length (0) must match field's fixed width (20) 但是如果是varchar類型的就沒有問題。 解決方法: 在DataStage Administrator中的這個(gè)Project的User Defined中添加一個(gè)參數(shù)APT_IMPEXP_ALLOW_ZERO_LENGTH_FIXED_NULL 類型為string并且值設(shè)為0 就可以了?!咀⒁猓菏菙?shù)字中的0】 3.27 在DS中使用Oracle Enterprise Stage必須的權(quán)限 Oracle Enterprise Stage必須有以下權(quán)限才能使用 Have SELECT privilege on: DBA_EXTENTS DBA_DATA_FILES DBA_TAB_PARTITONS DBA_TAB_SUBPARTITONS DBA_OBJECTS ALL_PART_INDEXES ALL_PART_TABLES ALL_INDEXES SYS.GV_$INSTANCE (Only if Oracle Parallel Server is used) 3.28 DS中去除‘回車符’的問題以及從char類型轉(zhuǎn)變成整型的方法 在datastage中,從char類型變成整型用可以stringToDecimal這個(gè)函數(shù),不能用AsInteger,更不能直接轉(zhuǎn) 。 在datastage中和SQL server中‘回車’是用char(10)來表示的,在ORACLE中是用CHR(10)來表示的。 在datastage中要把字段中的回車替代掉就用 Ereplace(LK01.col_num,CHAR(10),' ') replace(replace(deliverer_phone,CHR(13),''),CHR(10),'') deliverer_phone 其中deliverer_phone是表示需要處理的字段,注意后面要用個(gè)別名!
3.29 從后臺(tái)看JOB列表的方法 怎樣查詢一個(gè)工程里的JOB列表? 方法一: cd $DSHOME cd bin dsjob -ljobs 工程名(SGMEDS01) | grep ds > 要存放的文件目錄(/SGMEDWETL/tmp/tangning.txt) 方法二: uvsh LOGTO SGMEDS01 SELECT NAME FROM DS_JOBS WHERE NAME LIKE '%SAP%' 方法三: 進(jìn)入存放JOB的位置,要產(chǎn)看某個(gè)project的JOB信息就進(jìn)到相應(yīng)的project下面
用dssh“SELECT * FROM DS_JOBS WHERE NAME=’ I_Tr_TRC_TI_TRC_ASC’” 或者是uvsh “SELECT * FROM DS_JOBS WHERE NAME=’ I_Tr_TRC_TI_TRC_ASC’” 都可以實(shí)現(xiàn)查詢。如下圖所示:
3.30 Datastage和數(shù)據(jù)庫的連接方法 Datastage和數(shù)據(jù)庫有兩種方法連接: 一種是通過ODBC連接,這個(gè)可以查看.odbc.ini文件里查看 另一種方法是通過客戶端連接,就象是oracle的tnsnames.ora文件還有db2的directory一樣。 從后臺(tái)查看服務(wù)器配置了哪些db2客戶端用db2 list db directory 3.31 在datastage中使用環(huán)境變量的問題 在datastage中如果用到了環(huán)境變量的話,那么這個(gè)環(huán)境變量一定也要在/$dshome/dsenv 中配置一下,然后重啟datastage服務(wù)器以后 才會(huì)生效! 例如:在dsadm用戶下的 .profile 文件中配置了一個(gè)環(huán)境變量 export ETLPATH=/SGMEDWETL/dsdata/projects 那么同樣我們也要在/$dshome/dsenv 中配置一下 export ETLPATH=/SGMEDWETL/dsdata/projects 無論是在datastage 的routines 中用到這個(gè)環(huán)境變量還是用一個(gè)stage調(diào)用shell程序都要這樣做,只要是通過datastage 來用到這個(gè)環(huán)境變量,那么都要在兩個(gè)文件中配置! 3.32 IConv 和 OConv IConv 將一個(gè)字符型的日期轉(zhuǎn)換成一個(gè)國際數(shù)字,是天數(shù) ; OConv 將一個(gè)日期的‘天數(shù)’轉(zhuǎn)換成一個(gè)具有格式的字符串; 例如: IConv(“12-31-1967”,“D-DMY[2,2,4]” ) -----》0 IConv(“12311967” ,“D4 DMY[2,2,4]”) -----》0 IConv(“12-31-67” ,“D2-MDY[2,2,2]”) -----》0
OConv(0,“D-DMY[2,2,4]”)----》“12-31-1967” OConv(IConv(“12311967” ,“D4 DMY[2,2,4]”),”D/YDM[4,2,A10]“)-----》”1967/31/December"
3.33 在Merge中使用特殊字符 在語句中間要是需要加字符的話要用下面的方法: Merge into (SELECT \* FROM ##SCHEMA##.TD_ASC_PART WHERE VALID=1 AND ASC_CODE<>'\'SGM\'') 注意語句中的 '\'SGM\'' 本身應(yīng)該是‘SGM’ 注意:用來判斷是否匹配的字段值不能為NULL,如果有為NULL的可以用一下方法來替換一下: 例如: 若字段是字符形的:coalesce(ah.STORAGE_CODE,'\'1\'')=coalesce(sh.STORAGE_CODE,'\'1\'') 若字段是數(shù)字形的:VALUS(ah.STORAGE_CODE,1)=VALUS(sh.STORAGE_CODE,1) 注釋: 如何把雙引號(hào)包含到echo命令的字符串中,引號(hào)是一個(gè)特殊字符,所以必須要使用反斜杠 \ 來使shell 忽略它的特殊含義!例如你希望輸出字符串: "/dev/abc" 那么只需要在引號(hào)前面加上反斜杠 \ 就可以了 echo "\"/dev/abc"\" "/dev/abc" 4 部分常用Stage 的使用說明 五星文庫包含總結(jié)匯報(bào)、人文社科、經(jīng)管營銷、考試資料、辦公文檔、文檔下載、黨團(tuán)工作以及datastage經(jīng)驗(yàn)總結(jié)等內(nèi)容。 |
|