{"id":751,"date":"2014-12-21T02:55:20","date_gmt":"2014-12-21T02:55:20","guid":{"rendered":"http:\/\/blog.moramcnt.com\/?p=751"},"modified":"2015-01-04T05:02:48","modified_gmt":"2015-01-04T05:02:48","slug":"%ec%98%a4%eb%9d%bc%ed%81%b4-alert-log%ec%97%90-%ec%97%90%eb%9f%ac-%eb%b0%9c%ec%83%9d%ec%8b%9c-sms%eb%a1%9c-%ec%a0%84%ec%86%a1%ed%95%98%eb%8a%94-%ec%89%98-%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8","status":"publish","type":"post","link":"http:\/\/blog.moramcnt.com\/?p=751","title":{"rendered":"\uc624\ub77c\ud074 Alert Log\uc5d0 \uc5d0\ub7ec \ubc1c\uc0dd\uc2dc SMS\ub85c \uc804\uc1a1\ud558\ub294 \uc258 \uc2a4\ud06c\ub9bd\ud2b8"},"content":{"rendered":"<p>\uc544\ub798\ub294 \uc7a5\uc560\ubc1c\uc0dd\uc2dc \uc624\ub77c\ud074\uc758 alert \ub85c\uadf8\uc5d0 &#8220;ORA-&#8220;\uc640 \uac19\uc774 \uc313\uc774\ub294\uac83\uc744 \ucc29\uc548\ud558\uc5ec \ub9cc\ub4e0 \ud504\ub85c\uadf8\ub7a8\uc774\ub2e4.<\/p>\n<pre>\r\n#! \/bin\/ksh\r\nexport ORACLE_HOME=\/rtd_orahome\r\nexport ORACLE_SID=XXXXX\r\nexport ORACLE_OWNER=AAAAA\r\nexport ORAWEB_HOME=$ORACLE_HOME\/ows\/3.0\r\nexport ORAWEB_SITE=web\r\nexport LANG=korean\r\nexport NLS_LANG=American_America.KO16KSC5601\r\nexport ORA_NLS32=$ORACLE_HOME\/ocommon\/nls\/admin\/data\r\nexport PATH=$PATH:.:\/opt\/SUNWspro\/bin:\/usr\/ccs\/bin:\/usr\/bin:\/usr\/ucb:\/etc:\/usr\/sbin:\/usr\/openwin\/bin:$ORACLE_HOME\/bin:$ORAWEB_HOME\/bin:.\r\nexport LD_LIBRARY_PATH=\/opt\/SUNWspro\/lib:\/usr\/lib:\/usr\/ccs\/lib:\/usr\/openwin\/lib:\/usr\/ucblib:$ORACLE_HOME\/lib\r\n\r\nSMS_CLIENT=\/rtd_home\/monitor\/bin\/SmsSender \r\nCONFIG_FILE=\/rtd_home\/monitor\/cfg\/config.ini\r\nHOST_NAME=`hostname`\r\n\r\n# \ub85c\uadf8\uc758 \ub77c\uc778\uc218 \uc800\uc7a5\ud30c\uc77c\r\nLOG_CNT=\/rtd_home\/monitor\/temp\/alertlog_line_cnt.txt\r\n\r\ntouch $LOG_CNT\r\n# \uc774\uc804\uc5d0 \uae30\ub85d\ud55c \ub77c\uc778\uc218\ub97c \uc77d\ub294\ub2e4\r\ncat $LOG_CNT | read intPrevLineCnt\r\n\r\n# \uc804\uccb4\ub77c\uc778\uc218 \uce74\uc6b4\ud2b8\r\nintTotLineCnt=$(cat \/rtd_orahome\/admin\/RTDORA7\/bdump\/alert_RTDORA7.log | wc -l)\r\n\r\n# Cat\ud560 \ub77c\uc778\uc218 \uc9c0\uc815\r\nlet LoopCnt=intTotLineCnt-intPrevLineCnt \r\n\r\ncat \/rtd_orahome\/admin\/RTDORA7\/bdump\/alert_RTDORA7.log  | tail -$LoopCnt | grep ORA- | while read ORAMSG\r\ndo\r\n\tgrep -w \"ORACLE_NOTIFY_PHONE_NUMBER\" $CONFIG_FILE | while read TEMP NOTIFY_PHONE_NUMBER\r\n\tdo\r\n\t\t$SMS_CLIENT 'Moramcnt' $NOTIFY_PHONE_NUMBER 021234567 \"$HOST_NAME $ORAMSG\"\t\r\n\t\tsleep 1\r\n\tdone\r\n\tprint `date '+%Y-%m-%d %T'` \"$HOST_NAME $ORAMSG\" >> \/rtd_home\/monitor\/logs\/check_alertlog_err.log\r\n\r\ndone\r\nrm -f $LOG_CNT\r\nprint $intTotLineCnt >> $LOG_CNT\r\nexit 0\r\n\r\n<\/pre>\n<p>\uc704\uc758 \uc258 \ud504\ub85c\uadf8\ub7a8\uc740 Config.ini\uc640 SMSSender\ub77c\ub294 \ud504\ub85c\uadf8\ub7a8\uc774 \ud544\uc694\ud558\ub2e4.<br \/>\nConfig.ini\uc758 \ud30c\uc77c\uc758 \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 sms\ub97c \uc218\uc2e0\ubc1b\uc744 \ub300\uc0c1\uc774 \uae30\ub85d\ub418\uc5b4 \uc788\ub2e4.<\/p>\n<pre>\r\n[ORACLE]\r\nORACLE_NOTIFY_PHONE_NUMBER\t\t0101234567\r\n<\/pre>\n<p>\ub610\ud55c SMSSender\ub294 \uc624\ub77c\ud074 Pro*C\ub85c \uac04\ub2e8\ud55c\uac8c \uad6c\ud604\ub418\uc5b4 \uc788\ub2e4.<\/p>\n<pre>\r\n\r\n#include <stdio.h>\r\n#include <stdlib.h>\r\n#include <sqlca.h>\r\n#include <sqlda.h>\r\n\r\n\r\n#define\tTRUE\t\t1\r\n#define\tFALSE\t\t0\r\n#define\tCONSOLE_MODE\t0\r\n\r\nint Connection( char *, char *, char *);\r\nint Commit( void);\r\nint RollBack( void);\r\nint Trim(char *);\r\nint SendSMS( char *, char *, char *, char *);\r\n\r\nint Connection( char *szUserId, char *szPasswd, char *szConnection)\r\n{\r\nEXEC SQL BEGIN DECLARE SECTION;\r\n    VARCHAR vcConnection[21];\r\n    VARCHAR vcUserId[21];\r\n\tVARCHAR vcPasswd[21];\r\nEXEC SQL END DECLARE SECTION;\r\n\r\n\tstrcpy( (char *)vcUserId.arr, szUserId);\r\n\tvcUserId.len\t= strlen( szUserId);\r\n\r\n\tstrcpy( (char *)vcPasswd.arr, szPasswd);\r\n\tvcPasswd.len\t= strlen( szPasswd);\r\n\r\n\t\/* If Connection String Is Not Empty *\/ \r\n\tif (szConnection[ 0] != NULL)\r\n\t{\r\n\t\tstrcpy( (char *)vcConnection.arr, szConnection);\r\n\t\tvcConnection.len\t= strlen( szConnection);\r\n\t}\r\n\telse\r\n\t{\r\n\t\tvcConnection.arr[0] = '\\0';\r\n\t\tvcConnection.len\t= 0;\r\n\t}\r\n\r\n\t\r\n\t\/* Connection *\/\r\n\tEXEC SQL CONNECT :vcUserId IDENTIFIED BY :vcPasswd USING :vcConnection;\r\n\tif( sqlca.sqlcode != 0)\r\n\t{\r\n#ifdef CONSOLE_MODE\r\n        printf(\"Oracle Connect Fail : %s\\n\", sqlca.sqlerrm.sqlerrmc);\r\n#endif\r\n\t\treturn FALSE;\r\n\t}\r\n\r\n#ifdef CONSOLE_MODE\r\n    printf(\"Oracle Connected.\\n\");\r\n#endif\r\n\treturn TRUE;\r\n}\r\n\r\n\r\nint Commit( void)\r\n{\r\n\r\nEXEC SQL COMMIT WORK RELEASE;\r\n\r\n  \tif (sqlca.sqlcode != 0)\r\n\t{\r\n\t\t\/* ORA-1034 : ORACLE not available *\/\r\n\t\tif (sqlca.sqlcode == 1034) return FALSE;\r\n#ifdef XCONSOLE_MODE\r\n\t\tprintf(\"Oracle Commit Fail : %s\\n\", sqlca.sqlerrm.sqlerrmc);\r\n#endif\r\n\t\treturn FALSE;\r\n    }\r\n#ifdef CONSOLE_MODE\r\n\tprintf(\"Oracle Commit Work Relese, Oracle DisConnected.\\n\");\r\n#endif\r\n    return TRUE;\r\n}\r\n\r\n\r\nint RollBack( void)\r\n{\r\n\tEXEC SQL ROLLBACK WORK;\r\n\tif (sqlca.sqlcode != 0) \r\n\t{\r\n\t\t\/* ORA-1034 : ORACLE not available *\/\r\n\t\tif (sqlca.sqlcode==1034) return FALSE;\r\n#ifdef CONSOLE_MODE\r\n\t\tprintf(\"Oracle Rollback Fail : %s\\n\", sqlca.sqlerrm.sqlerrmc);\r\n#endif\r\n\t\treturn FALSE;\r\n\t}\r\n\treturn TRUE;\r\n}\r\n\r\nint Trim(char *szText)\r\n{\r\n    int iCnt, iLength = strlen(szText);\r\n\r\n    for (iCnt = iLength-1; iCnt >= 0; iCnt--)\r\n\t{\r\n        if (szText[iCnt]==' ' || szText[iCnt]=='\\n' || szText[iCnt]=='\\r')\r\n\t\t{\r\n            szText[iCnt] = '\\0';\r\n            iLength--;\r\n        }\r\n\t\telse\r\n\t\t\tbreak;\r\n    }\r\n    return iLength;\r\n}\r\n\r\n\r\n\/*==================================================================================\r\n * SMS \uc804\uc1a1\r\n ===================================================================================*\/\r\nint SendSMS( char *szTranId, char *szTransPhone, char *szCallBackNo, char* szMessage)\r\n{\r\n\r\nEXEC SQL BEGIN\tDECLARE\tSECTION;\r\n\tVARCHAR\t\tvcTranId[21];\r\n\tVARCHAR \tvcTransPhone[16];\r\n\tVARCHAR\t\tvcTranCallBack[16];\r\n\tVARCHAR\t\tvcMessage[256];\r\nEXEC SQL END\tDECLARE\tSECTION;\r\n\r\n\tmemset( &vcTranId,\t\t0, sizeof(vcTransPhone));\r\n\tmemset( &vcTransPhone,\t0, sizeof(vcTransPhone));\r\n\tmemset( &vcTranCallBack, 0, sizeof(vcTranCallBack));\r\n\tmemset( &vcMessage,\t\t0, sizeof(vcMessage));\r\n\r\n\r\n\tstrncpy(vcTranId.arr, szTranId, 20);\r\n\tvcTranId.len\t= Trim( (char *)vcTranId.arr);\r\n\tvcTranId.arr[ vcTranId.len] = '\\0';\r\n\r\n\r\n\tstrncpy(vcTransPhone.arr, szTransPhone, 15);\r\n\tvcTransPhone.len\t= Trim( (char *)vcTransPhone.arr);\r\n\tvcTransPhone.arr[ vcTransPhone.len] = '\\0';\r\n\r\n\tstrncpy(vcTranCallBack.arr, szCallBackNo, 15);\r\n\tvcTranCallBack.len\t= Trim( (char *)vcTranCallBack.arr);\r\n\tvcTranCallBack.arr[ vcTranCallBack.len] = '\\0';\r\n\r\n\tstrncpy(vcMessage.arr, szMessage, 255);\r\n\tvcMessage.len\t= Trim( (char *)vcMessage.arr);\r\n\tvcMessage.arr[ vcMessage.len] = '\\0';\r\n\r\n#ifdef CONSOLE_MODE\r\n\tprintf(\"SMS szTranId...%s|\\n\", vcTranId.arr);\r\n\tprintf(\"SMS szTransPhone...%s\\n\", vcTransPhone.arr);\r\n\tprintf(\"SMS szCallBackNo...%s\\n\", vcTranCallBack.arr);\r\n\tprintf(\"SMS szMessage...%s\\n\", vcMessage.arr);\r\n#endif\t\r\n\r\nEXEC SQL INSERT INTO\r\n\t\tem_tran(tran_pr, tran_id, tran_phone, tran_callback, tran_status, tran_date, tran_msg, tran_type)\r\n\t\tVALUES(EM_TRAN_PR.NEXTVAL, :vcTranId, :vcTransPhone, :vcTranCallBack, '1', SYSDATE, :vcMessage, '1');\r\n\r\n\tif (sqlca.sqlcode == 0)\r\n\t{\r\n\t\tif (!Commit())\r\n\t\t{\t\r\n\t\t\tRollBack();\r\n\t\t\treturn FALSE;\r\n\t\t}\r\n#ifdef CONSOLE_MODE\r\n    printf(\"SMS Sent...\\n\");\r\n#endif\t\r\n\r\n\t\treturn TRUE;\r\n\t}\r\n\telse\r\n\t\treturn FALSE;\r\n}\r\n\r\n\r\n\r\nint main(int argc, char* argv[])\r\n{\r\n\tif( !Connection(\"\uc624\ub77c\ud074\uacc4\uc815\", \"\uc624\ub77c\ud074\ud328\uc2a4\uc6cc\ub4dc\", \"\uc624\ub77c\ud074SID\")) return -1;\r\n\tSendSMS( argv[ 1], argv[ 2], argv[ 3], argv[ 4]);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\uc544\ub798\ub294 \uc7a5\uc560\ubc1c\uc0dd\uc2dc \uc624\ub77c\ud074\uc758 alert \ub85c\uadf8\uc5d0 &#8220;ORA-&#8220;\uc640 \uac19\uc774 \uc313\uc774\ub294\uac83\uc744 \ucc29\uc548\ud558\uc5ec \ub9cc\ub4e0 \ud504\ub85c\uadf8\ub7a8\uc774\ub2e4. #! \/bin\/ksh export ORACLE_HOME=\/rtd_orahome export ORACLE_SID=XXXXX export ORACLE_OWNER=AAAAA export ORAWEB_HOME=$ORACLE_HOME\/ows\/3.0 export ORAWEB_SITE=web export LANG=korean export NLS_LANG=American_America.KO16KSC5601 export ORA_NLS32=$ORACLE_HOME\/ocommon\/nls\/admin\/data export PATH=$PATH:.:\/opt\/SUNWspro\/bin:\/usr\/ccs\/bin:\/usr\/bin:\/usr\/ucb:\/etc:\/usr\/sbin:\/usr\/openwin\/bin:$ORACLE_HOME\/bin:$ORAWEB_HOME\/bin:. export LD_LIBRARY_PATH=\/opt\/SUNWspro\/lib:\/usr\/lib:\/usr\/ccs\/lib:\/usr\/openwin\/lib:\/usr\/ucblib:$ORACLE_HOME\/lib SMS_CLIENT=\/rtd_home\/monitor\/bin\/SmsSender CONFIG_FILE=\/rtd_home\/monitor\/cfg\/config.ini HOST_NAME=`hostname` # \ub85c\uadf8\uc758 \ub77c\uc778\uc218 \uc800\uc7a5\ud30c\uc77c LOG_CNT=\/rtd_home\/monitor\/temp\/alertlog_line_cnt.txt touch $LOG_CNT # \uc774\uc804\uc5d0 \uae30\ub85d\ud55c \ub77c\uc778\uc218\ub97c \uc77d\ub294\ub2e4 cat $LOG_CNT | read intPrevLineCnt # \uc804\uccb4\ub77c\uc778\uc218 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[31,49],"tags":[59,55,56,57,58],"class_list":["post-751","post","type-post","status-publish","format-standard","hentry","category-31","category-unix","tag-alertlog","tag-oracle","tag-proc","tag-sms","tag-sms-sender"],"_links":{"self":[{"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/posts\/751","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=751"}],"version-history":[{"count":2,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/posts\/751\/revisions"}],"predecessor-version":[{"id":753,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=\/wp\/v2\/posts\/751\/revisions\/753"}],"wp:attachment":[{"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=751"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=751"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.moramcnt.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}