Social Icons

Wednesday, July 24, 2013

UNIX SCRIPTING


In Oracle APPS we can Run Unix Script as a Concurrent Program.

Basically the Unix file has a ".sh" Extension and we directly excute this Unix script in Putty,

but here in Oracle apps the Unix file has ".prog" Extension and we execute this Unix script as Concurrent program.
We call this Concurrent Program as HOST based Program

Basic Steps to Create Host Concurrent Program
 1. Create a ".prog" File
 2. Move the File to Server in any Custom TOP "bin" Folder (Tools Winscp / Filezilla)
 3. Execute the Below commands oderly maner
     3.1 Putty> cd $XXCUSTOM_TOP/bin
          -- Here the Custom TOP is the File Location TOP 
     3.2 Putty> dos2unix sample.prog
     3.3 chmod 755 sample.prog
     3.4 Putty> ln -s $FND_TOP/bin/fndcpesr sample
           -- Here the File name with out .prog Extension
           -- We are creating the Softlink to our File
     3.5 Add continue to create concurrent program Excutable and Program but the Executable type is "HOST"


Here i am Giving the Sample Commands i have used in my programming

1. Commenting any line in UNIX by using hash(#)
 
  # this is commented
2. Getting the Oracle Standard Parameters
   #user/bin/ksh
   ORAUSER_PASSWD=$1
   USER_ID=$2
   USER_NAME=$3
   REQUEST_ID=$4
  
3. Below command is used to print to Log File
   echo "Hi this is Kranthi!"
  
4. In Unix we can create Variables directly when evere we need and we can run any sql/plsql script directly
   like a block
  
Unixvariable =  `sqlplus -S  ${ORAUSER_PASSWD}<< ENDOFSQL
     set feedback off
     set serveroutput on
     exec APPS.Package_name.procedure_name(parameters);
     exit
     ENDOFSQL`
echo "${Unixvariable}"

5. I have text containg three value seperated by comma(,)
   -- Unixvariable = '123,234,456' 
   i want to store every value into different variable

value1 = `echo $Unixvariable | awk -F"," '{print $1}'`

value2 = `echo $Unixvariable | awk -F"," '{print $2}'`
value3 = `echo $Unixvariable | awk -F"," '{print $3}'`

6. if there is any spaces in text we can remove
 newvalue1 = `echo $value1 | sed -e 's# ##g'`

7. UNIX is power full we can track each and every step, below function works like SQL%NOTFOUND in Oracle

    here i have written script for connecting to SFTP Server, if the connection is success no issue, if connection is not established due to any problem we can track this failure by using  below command
 if [ ${?} -ne 0 ]
 
 it check most recent command is executed successfully / not.
 
 connection=`sftp "${vendor_username}"@"${vendor_host}" << END
    cd "${Direcoty Address}"
    lcd "$CUSTOM_TOP/bin"
    GET *.csv
    quit
    END`
 #Check Log File Exist Before Validation Start
 if [ ${?} -ne 0 ]
 then
    echo "Unable to connect to destination server."
 echo "${connection}"
    exit 2 
    fi
 
8. We can call the SQL*LOADER Programs from UNIX Script easily

   CONTROL_STATUS=`sqlldr userid=${ORAUSER_PASSWD}            control=$CUSTOM_TOP/bin/control_file.ctl data=datafile.csv log=$APPLCSF/log/datafile.log bad=$APPLCSF/log/datafile.bad<< ENDOFSQLLDR

   ENDOFSQLLDR`
   echo "${CONTROL_STATUS}"

9. We can capture the date into variable

   currdate = `date +%d_%m_%g_%H_%M_%S`


10. We can create Files into the server using unix script in an easy manner
    `sqlplus -S ${ORAUSER_PASSWD} >> Kranthi.csv <<EOF
 set head off;
 set pages 0;
 set linesize 2000;
 set feedback off;
 SELECT  'Emp Number'||','||
   'Emp Name' ||','||
      'Emp Sal'
 from dual
 /

 exit

 EOF`
 
11. Move the All ".csv" Files from Source Directory to Destination Directory
    cd "Source_Direcoty"
    find ./ -type f -name "*.csv" -print | xargs -l56 -i mv -f {} "Destination_Directory"
 
12. We can create Functions and we can pass parameters to Functions, here i am passing one parameter to Function
    
Delete_Files()
    {
    cd $1
    echo "${PWD}"
    fileArray=($(find *.csv -mtime +10))
    filescount=${#fileArray[@]}
    for (( i=0; i<${filescount}; i++ ));
    do
    echo "${fileArray[$i]}"
    rm -f ${fileArray[$i]}
    echo "File deleted from Folder"=${fileArray[$i]}
    done
   }
   echo "Searching Files in bin direcory older than 10 Days...."
   Delete_Files $CUSTOM_TOP/bin

13. We can apply file permission(777) to all subfolders by using this command
    
chmod -R 777 *
 
14. If i have a File name kranthi.csv i want to split the name and file extenstions into multiple variables
  
     datafile = 'kranthi.csv'
 
  filename = ${data_file%.*}
  fileextension = ${data_file#*.}
      
15. Control Structres in UNIX
  
    
 if test condition
      then
        statements;
  fi
 
  if [condition];
  then
       statements;
     else
       statements;
     fi
 
  if [condition];
  then
     statements;
     elif
     then
       statements;
  else
        statements;
     fi
 

     for expression

     do
    statements;
     done

16. File Comparisions
  
  -eq equal to
 -ne not equal to
 -lt less than
 -le less than or equal to
 -gt greater than
 -ge greater than or equal to
 

No comments :

Post a Comment

">