Solved

Oracle scheduling

Posted on 2009-04-08
18
1,243 Views
Last Modified: 2013-12-07
Hi Gurus,
   I have oracle stored procedure which in turns calls 3 procedures. After the end of the third procedure, I want to kick start a shell script to be invoked. How do I do that?
At present in the third procedure i am planning to wirte a file a in a particular unix location. The shell script will keep looking for this file in that location. IF the file is found, it executes.
I am not satisfied with the way this is being done. Kindly suggest me a better way to handle this.
0
Comment
Question by:bandiravi
  • 9
  • 7
  • 2
18 Comments
 
LVL 47

Expert Comment

by:schwertner
ID: 24097427
DBMS_SCHEDULE can do such things.
Particularly it is able to schedule scripts.
This script can invole SQL*Plus and start the root procedure.
After the procedurees exit the rest of the script could be executed.
0
 
LVL 47

Expert Comment

by:schwertner
ID: 24097454
Mr. Burleson has prepared such example:

Here is a sample shell script invoked from dbms_scheduler. Note the use of program_type='EXECUTABLE':

BEGIN
-- Shell Script (OS executable file).
DBMS_SCHEDULER.create_program (
   program_name => 'test_executable_prog',
   program_type => 'EXECUTABLE',
   program_action => '/u01/app/oracle/dba/MyJob.ksh',
   number_of_arguments => 0,
   enabled => TRUE,
   comments => 'CREATE_PROGRAM test using a schell script.');
END;
/

Also, note that the user ID executing the script must have execute authority on the script (chmod 700), and these shell scripts normally run as the Oracle user who participates in the Linux DBA group.

0
 

Author Comment

by:bandiravi
ID: 24097485
I am not clear how you want this to be done.

Say suppose I have a procedure test...

Create or replace procedure test

procedure test 1

Procedure test 2

Procedure test 3

I want to invoke the shell script here.

end test prorcedure

Can you kindly give me the code to execute this. This is a production requirement and I really need to get this done fast
0
 
LVL 34

Accepted Solution

by:
Mark Geerlings earned 500 total points
ID: 24097522
Oracle PL\SQL cannot call operating system commands or shell scripts directly.  But, you have two possible options:
1. use DBMS_SCHEDULER (which schwertner suggested) since that can execute: SQL scripts, PL\SQL procedures, or operating system commands
2. write a Java procedure which calls your shell script, then call the Java procedure at the end of your PL\SQL procedure.  (This works because PL\SQL can execute Java procedures.)
0
 

Author Comment

by:bandiravi
ID: 24097528
Hi schwertner,

  I did not see your last comment.

So can I just call this piece of code inside a procedure.  
0
 
LVL 47

Expert Comment

by:schwertner
ID: 24097585
I think you can invoke SQL*Plus from the script and SQL*Plus in its turn can execute
(invoke) the stored procedures.
Of course the opinion of Mr. Markgeer is also very productive.
His approach was used many times and you could found on the
Expert-Exchange many examples how to do this.
The last case I recall was the answer of Mr. Stuber that was
appreciated by the askers.
0
 

Author Comment

by:bandiravi
ID: 24097637
Can you share with me the answer of Stuber?
0
 

Author Comment

by:bandiravi
ID: 24097966
Hi schwertner,
  I am not able to find the solution by stuber? Kindly let me know which one you are referring. Even if stuber solution works, I will give full points to you.

 
0
 
LVL 47

Expert Comment

by:schwertner
ID: 24098051
Dont worry about the points. Give the points to Mr. Stuber!

This is the answer of Mr. Stuber.
http://www.experts-exchange.com/Database/Oracle/Q_23222433.html#a23944402
 

Is it possible to execute an external command line tool (E.g. tshark.exe) through Oracle?
 

CREATE OR REPLACE TYPE VCARRAY AS TABLE OF VARCHAR2(4000)

/

 

 

 

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED Run_Cmd as 

import java.io.*;

import java.sql.*;

import java.util.*;

import oracle.sql.*;

import oracle.jdbc.driver.*;

 

public class Run_Cmd{

 

    public static oracle.sql.ARRAY run_it(java.lang.String p_cmd)

    throws java.sql.SQLException,IOException

    {

        Runtime v_rt = Runtime.getRuntime();

        ArrayList v_output = new ArrayList();

 

        

        try

        {

            Process v_proc = v_rt.exec(p_cmd);

            

            BufferedReader v_stdout = new BufferedReader(

                                            new InputStreamReader(

                                                    v_proc.getInputStream() 

                                                )

                                          );

            String v_line;

            while ((v_line = v_stdout.readLine()) != null)

                v_output.add(v_line);

 

            BufferedReader v_stderr = new BufferedReader(

                                            new InputStreamReader(

                                                    v_proc.getErrorStream() 

                                                )

                                          );

            while ((v_line = v_stderr.readLine()) != null)

                v_output.add(v_line);

 

               

            v_proc.waitFor();    

            

        }

 

        catch (Exception e)

        {

            e.printStackTrace();            

        }

 

        Connection v_conn = new OracleDriver().defaultConnection();            

        ArrayDescriptor v_descriptor = ArrayDescriptor.createDescriptor( "VCARRAY", v_conn );            

        return new ARRAY( v_descriptor, v_conn, v_output.toArray() );

    }

}

/

 

create or replace FUNCTION run_cmd(p_cmd IN VARCHAR2)

        RETURN vcarray

    AS

        LANGUAGE JAVA

        NAME 'Run_Cmd.run_it( java.lang.String ) return oracle.sql.ARRAY'; 

Open in new window

0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 

Author Comment

by:bandiravi
ID: 24098118
stuber talks about using a command. But how would i invoke a shell script here? Can I just use the filenname instead of the unix command
0
 
LVL 47

Expert Comment

by:schwertner
ID: 24098136
And this is mine script:


http://www.experts-exchange.com/Database/Oracle/Q_21048713.html
 

You can call Unix commands from within a pl/sql procedure. There are C way and Java way.
 

Insert this Java procedure into the database:
 

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "HOST" AS

import java.lang.*;

import java.io.*;
 

public class Host

{

 public static void executeCommand (String command, String etype) throws IOException

 {

   String[] wFullCommand = {"C:\\winnt\\system32\\cmd.exe", "/y", "/c", command};

   String[] uFullCommand = {"/bin/sh", "-c", command};

   if (etype.toUpperCase().equals("W"))

     Runtime.getRuntime().exec(wFullCommand);

   else if(etype.toUpperCase().equals("U+"))

     Runtime.getRuntime().exec(uFullCommand);

   else if(etype.toUpperCase().equals("U"))

     Runtime.getRuntime().exec(command);

 }

};

/
 

Now compile this pl/sql wrapper procedure in the database:
 

CREATE OR REPLACE PROCEDURE Host_Command_Proc (p_command  IN  VARCHAR2, p_etype  IN  VARCHAR2)

AS LANGUAGE JAVA 

NAME 'Host.executeCommand (java.lang.String, java.lang.String)';

/
 

To call a Unix command to remove all files from a directory for example, you would put this line in your pl/sql procedure:
 

host_command_proc ('cd home/yourdir/another_dir', 'U+');

host_command_proc ('rm -f *', 'U+');
 

Ensure that the needed Java classes are loaded in the database.

Open in new window

0
 
LVL 47

Expert Comment

by:schwertner
ID: 24098154
Finally this is the script of our Teacher, Mr. Markgeer:

http://www.experts-exchange.com/Database/Oracle/Q_21908413.html
You have to use Java for this, since Oracle PL\SQL does not support "host" calls directly.  Here are the two files that we thought should work for this in our Oracle10 database on Linux, first the *.java file (that we named "oscommands.java") then the *.sql file (that we named: "oscommands.sql").  Just run these as SYS (or as a DBA-privileged user in your system).  Following that are the two files we actually use now, "host.java" and "host.sql".  
 

Note that the "host.java" file does have two values that are specific to our system that I have replaced with: [IP-ADDRESS] and [ORACLE_SID].  You will have to replace those variables with values that are valid in your system.  Also, the grants in the "host.sql" file have [Oracle username].  You will have to replace that with the owner of this procedure in your system.
 

--the "oscommands.java" file:

CREATE OR REPLACE and COMPILE

JAVA SOURCE NAMED "OSCommands"

AS

import java.lang.* ;

import java.io.* ;
 

public class OSCommands

{

  public static void RunCMD(String[] args)

   {

    try

   {
 

     Process m ;

     String S = "" ;
 

     m = Runtime.getRuntime().exec(args) ;
 

     BufferedReader in = 

           new BufferedReader(new InputStreamReader(

                               m.getInputStream()));
 

       while((S=in.readLine()) != null)

        {

         System.out.println(S);

        }

   }

    catch(Exception ex)

    {

     ex.printStackTrace () ;

    }

  }
 

    public static String copyFile(String sourceFile, String copyFile) {

        

        InputStream source;  // Stream for reading from the source file.

        OutputStream copy;   // Stream for writing the copy.

        int byteCount;  // The number of bytes copied from the source file.

        

        

      /* Create the input stream.  If an error occurs, end the program. */

        try {

            source = new FileInputStream(sourceFile);

        }

        catch (FileNotFoundException e) {

            return "Error: Can't find file \"" + sourceFile + "\".";

        }

        

      /* Create the output stream.  If an error occurs, end the program. */

        

        try {

            copy = new FileOutputStream(copyFile);

        }

        catch (IOException e) {

            return "Error: Can't open output file \"" + copyFile + "\".";

        }

        

      /* Copy one byte at a time from the input stream to the out put stream,

         ending when the read() method returns -1 (which is the signal that

         the end of the stream has been reached.  If any error occurs, print

         an error message.  Also print a message if the file has bee copied

         successfully.  */

        

        byteCount = 0;

        

        try {

            while (true) {

                int data = source.read();

                if (data < 0)

                    break;

                copy.write(data);

                byteCount++;

            }

            source.close();

            copy.close();

            return "Success: " + byteCount + " bytes copied.";

        }

        catch (Exception e) {

            return "Error: Error occured while copying.  "

            + byteCount + " bytes copied. " + e.toString();

        }

        

    }

    

     public static String delFile(String fileName) {

        

      boolean success = (new File(fileName)).delete();

          if (!success) {

        // Deletion failed

      return "Error: Can't find or open file \"" + fileName + "\" to be deleted.";

          }

       

        

        return "Success: " + fileName + " has been deleted.";

        

    }

    

    public static String renameFile(String oldName, String newName) {

        

     // File (or directory) with old name

    File file = new File(oldName);

    

    // File (or directory) with new name

    File file2 = new File(newName);

    

    // Rename file (or directory)

    boolean success = file.renameTo(file2);

    if (!success) {

        // File was not successfully renamed

      return "Error: File or directory could not renamed.";

    }

    

    // If no error return a successfull message

    return "Success: " + oldName + " was successfully renamed to " + newName;
 

    }
 

    public static String touchFile(String fileName) {

        

    File file = new File(fileName);

    

    // Get the last modified time

    long modifiedTime = file.lastModified();

    // 0L is returned if the file does not exist

    

    // Set the last modified time

    long newModifiedTime = System.currentTimeMillis();

    boolean success = file.setLastModified(newModifiedTime);

    if (!success) {

        // operation failed.

      return "Error: Touch of file was unsuccessfull.";

    }
 

    

    // If no error return a successfull message

    return "Success: " + fileName + " was successfully touched";
 

    }
 
 

}

/

-- end of "oscommands.java" file
 

-- the "oscommands.sql file:

create or replace PACKAGE OSCommands AS
 

  --Package spec for java calls to OSCommands class
 

  --This procedure runs an OS command

  --i.e. exec OSCommands.runCMD('/bin/bash, -c ls');

  PROCEDURE runCMD(OScmd IN VARCHAR2);
 

  --This function copies a file

  --i.e. select OSCommands.copyfile('/opt/ora_10g1/network/admin/tnsnames.ora', '/tmp/test1.txt') from dual;

  FUNCTION copyfile(sourceFile VARCHAR2, copyFile VARCHAR2) RETURN VARCHAR2;
 

  --This function deletes a file

  --i.e. select OSCommands.delfile('/tmp/test1.txt') from dual;

  FUNCTION delfile(fileName VARCHAR2) RETURN VARCHAR2;
 

  --This function renames a file or directory

  --i.e. select OSCommands.renamefile('/tmp/tnsnames.ora', '/tmp/tnsnames.ora.bak') from dual;

  FUNCTION renamefile(oldFile VARCHAR2, newFile VARCHAR2) RETURN VARCHAR2;
 

  --This function touches(updates timestamp) of a file

  --i.e. select OSCommands.touchfile('/tmp/tnsnames.ora.bak') from dual;

  FUNCTION touchfile(fileName VARCHAR2) RETURN VARCHAR2;
 

END OSCommands;

/

--** PACKAGE BODY Name: OSCOMMANDS

create or replace PACKAGE BODY Oscommands AS
 

  --Package body for java calls to OSCommands class

  --For full code refer to OSCommands java class

  --
 

  --This procedure runs an OS command

  --i.e. exec OSCommands.runCMD('/bin/bash ls -l');

  PROCEDURE runCMD(OScmd IN VARCHAR2) as

--  This didn't work for Oracle10 on Linux as of 21-Sep-2005, so call another "wrapper" procedure

--   that does work for Oracle10 on Linux.

--    AS LANGUAGE JAVA

--  NAME 'OSCommands.RunCMD(java.lang.String[])';

    begin

      -- Note: this will only work for Linux utilities that are in the /bin directory:

      host_command('/bin/'||OScmd);

    end;
 

  --This function copies a file

  --i.e. select OSCommands.copyfile('/opt/ora_10g1/network/admin/tnsnames.ora', '/tmp/test1.txt') from dual;

  FUNCTION copyfile(sourceFile VARCHAR2, copyFile VARCHAR2) RETURN VARCHAR2

    AS LANGUAGE JAVA

  NAME 'OSCommands.copyFile(java.lang.String, java.lang.String) return java.lang.String';
 

  --This function deletes a file

  --i.e. select OSCommands.delfile('/tmp/test1.txt') from dual;

  FUNCTION delfile(fileName VARCHAR2) RETURN VARCHAR2

    AS LANGUAGE JAVA

  NAME 'OSCommands.delFile(java.lang.String) return java.lang.String';
 

  --This function renames a file or directory

  --i.e. select OSCommands.renamefile('/tmp/tnsnames.ora', '/tmp/tnsnames.ora.bak') from dual;

  FUNCTION renamefile(oldFile VARCHAR2, newFile VARCHAR2) RETURN VARCHAR2

    AS LANGUAGE JAVA

  NAME 'OSCommands.renameFile(java.lang.String, java.lang.String) return java.lang.String';
 

  --This function touches(updates timestamp) of a file

  --i.e. select OSCommands.touchfile('/tmp/tnsnames.ora.bak') from dual;

  FUNCTION touchfile(fileName VARCHAR2) RETURN VARCHAR2

    AS LANGUAGE JAVA

  NAME 'OSCommands.touchFile(java.lang.String) return java.lang.String';
 

END Oscommands;

/

create public synonym oscommands for oscommands;

grant execute on oscommands to public;

-- end of "oscommands.sql" file
 

-- "host.java" file:

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "Host" AS

import java.io.*;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;
 

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~  File:                 host.java                                               ~

~  Author:               Aaron M. Brummitt                                       ~

~  Date Created:         20051129-2254                                           ~

~  Date Modified:        20051201-1548 AMB                                       ~

~                                                                                ~

~  Description: This class contains methods to execute operating system commands ~

~                                                             ~

~  Known Issues/Limitations: Only commands which are in $PATH will be able to be ~

~      executed, unless the full path to the binary is included                 ~

~                                                             ~

~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*/

public class Host

{

      /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      ~ executeCommand() requires one parameter and returns a string                   ~

      ~                                                                                ~

      ~ Params:                                                                        ~

      ~       String p_sCommand is the command to be executed by the Operating System       ~

      ~                                                             ~

      ~ Return:                                                                        ~

      ~      String      a status                                                          ~

      ~                                                                                ~

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      */

      public static String executeCommand(String p_sCommand) throws IOException

      {

            //local variable declations

            Process p;

            boolean bPrintError = true;

            String sError= "";

            String sLogError = "";

            int iRetStat = -1;

      

            String[] myCMD = {"/bin/sh", "-c", ""};

            myCMD[2] = p_sCommand;

            

            try

            {

                  //run the command

                  p = Runtime.getRuntime().exec(myCMD);

            }//end try

            catch(IOException e)

            {      

                  //catch any Interuption errors and report

                System.out.println("IO Exception on Runtime.getRuntime().exec(): " +  e.getMessage());

                    logCmd(p_sCommand, -1, e.getMessage());

                        return "\nIO Exception Occured in Host.executeCommand\n";                                                
 

                  

            }//end catch IOException

            

            try

            {

                  //set up the error stream reader

                  BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

                        

                  //read the error stream, record them if any

                  while ((sError = stdError.readLine()) != null)

                  {

                        if(bPrintError)

                        {

                              System.out.println("Errors reported");

                              bPrintError = false;

                        }//end if iStatus

            

                        sLogError = sLogError + sError + " ";

                  

                  }//end while read error loop

            }//end try

            catch(IOException e)

            {

                  //catch any Interuption errors and report

                  System.out.println("IO Exception in error reading: " +  e.getMessage());

                return "\nIO Exception Occured in Host.executeCommand\n";

            }//end catch(IOException)                  

            

            try

            {

                  //wait for the proccess to end

                  iRetStat = p.waitFor();

                  

            }//end try

            catch(InterruptedException e)

            {

                  //catch any Interuption errors and report

                  System.out.println("Interrupted Exception on waitFor: " +  e.getMessage());

                  return "\nException Occured in Host.executeCommand\n";

            }//end catch
 

            //if there was an error, log it

            if(sLogError != "")

            {

                  logCmd(p_sCommand, iRetStat, sLogError);

                  return "\n Error encountered and logged, please check log\n";      

                        

            }//end if sLogError 

            

            //everythings good

            return "\nCommand  " + p_sCommand + " successfully completed\n";

            

      }//end executeCommand() Method
 

      /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      ~ logCmd() requires three parameters and returns void                           ~

      ~                                                                                ~

      ~ Params:                                                                        ~

      ~       String p_sCmd is the command to be executed by the Operating System      ~

      ~      int p_RetStat is the status returned from the Operating System             ~

      ~      String p_sError is the error message returned form the Operating System       ~

      ~                                                                                ~

      ~ Return:                                                                        ~

      ~            VOID                                                                     ~

      ~                                                                                ~

      ~ Credit(s):                                                       ~

      ~      Oracle Metalink website (http://metalink.oracle.com),                    ~

      ~                                                             ~

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

      */
 

      public static void logCmd(String p_sCmd, int p_iRetStat, String p_sError)

      {

            System.out.println("Logging error: \n" + "Command: " + p_sCmd + "\np_iRetStat: " + p_iRetStat + "\np_sError: " + p_sError);

            

            try

            {

                  //create insert string

                  final String sInsert = "INSERT INTO app_error_log(form_name, err_code, err_desc, user_name, timestamp) VALUES (" +

                              "'Host.executeCommand', " + p_iRetStat + ",'" + p_sError.replaceAll("'", "''") + "', user, sysdate)";

                  //System.out.println(sInsert);

                  //connect to DB

                  //syntax examples for Oracle:

                  //Statement stmt = DriverManager.getConnection ("jdbc:oracle:thin:dbUser/dbPassword@[IP_ADDRESS]:1521:[ORACLE_SID]");

                  //Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@" + tnsName,dbUser,dbPassword);

                  Statement stmt = DriverManager.getConnection("jdbc:default:connection:").createStatement();

                  //execute the insert string

                  stmt.executeUpdate(sInsert);

                  //close the connection

                  stmt.close();

            }//end try

            catch (SQLException e)

            {

                  //catch any sql errors

                  System.out.println("SQLException on INSERT: " + e.getMessage()); 

            }//end catch

      

      }//end logCmd() Method      

      

}//end class host

-- end of "host.java" file
 

-- "host.sql" file:

CREATE OR REPLACE PROCEDURE Host_Command (p_command IN VARCHAR2)

AS LANGUAGE JAVA 

NAME 'Host.executeCommand (java.lang.String)';

/

-- end of "host.sql" file
 

Note that you will have to run a number of grants like this for the owner of the "host_command" procedure:

EXEC Dbms_Java.Grant_Permission('[Oracle username]', 'java.io.FilePermission', '<>', 'read ,write, execute, delete');

EXEC Dbms_Java.Grant_Permission('[Oracle username]', 'SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '');

EXEC Dbms_Java.Grant_Permission('[Oracle username]', 'SYS:java.lang.RuntimePermission', 'readFileDescriptor', '');

EXEC Dbms_Java.Grant_Permission('[Oracle username]', 'SYS:java.io.FilePermission','/bin/sh', 'execute' );

EXEC Dbms_Java.Grant_Permission('[Oracle username]', 'SYS:java.io.FilePermission','/bin/ls', 'execute' );

EXEC Dbms_Java.Grant_Permission('[Oracle username]', 'SYS:java.io.FilePermission','/bin/cp', 'execute' );

EXEC Dbms_Java.Grant_Permission('[Oracle username]', 'SYS:java.io.FilePermission','/bin/mv', 'execute' );

Open in new window

0
 
LVL 47

Expert Comment

by:schwertner
ID: 24098211
Of course you can put an OS command.
0
 
LVL 47

Expert Comment

by:schwertner
ID: 24098222
Please regard the Mr. Markgeer answer and give him the points!
He has really big experience in this matter.
0
 

Author Comment

by:bandiravi
ID: 24098299
if you say so schwertner
0
 
LVL 34

Expert Comment

by:Mark Geerlings
ID: 24098411
I do have some experience with calling host commands (in Linux) from PL\SQL via Java, but schwertner found my earlier posts on this subject and copied those details here for you, so he should at least share the points.

I have had some difficulty though with host commands (shell scripts) that I wanted to have executed via Java from PL\SQL, so we have managed now to avoid most of those.  I use utl_file.fcopy for any O/S file copy operations I want to have PL\SQL do.  For other tasks where I need O/S and Oracle inter-operation, I usually use O/S shell scripts (running as "cron" jobs) that call SQL*Plus and run a *.SQL file to execute any PL\SQL procedures I need, then either use a "host" command in the *.SQL script for an O/S command, or exit SQL*Plus, and have the script execute the O/S command directly.  Another variation that I have used occasionally is to have an O/S job running in a loop with a "sleep" command for a minute or two or 10 (whatever is reasonable for the job) that wakes up and checks for the existance of a particular file.  If it finds the file, it deletes it, then executes whatever O/S command I need.  I use a PL\SQL procedure with utl_file to create the text file that the O/S command checks for.  That is a way to have PL\SQL execute a host command indirectly .
0
 
LVL 47

Expert Comment

by:schwertner
ID: 24098544
it is my pleasure to help.
Points are nothing, the  friendship is very valuable.
Good luck!
0
 

Author Comment

by:bandiravi
ID: 24098570
Great going guys!!!I would request you guys to respond to all of my questions really fast and help me with a best solution.
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Join & Write a Comment

This article started out as an Experts-Exchange question, which then grew into a quick tip to go along with an IOUG presentation for the Collaborate confernce and then later grew again into a full blown article with expanded functionality and legacy…
How to Create User-Defined Aggregates in Oracle Before we begin creating these things, what are user-defined aggregates?  They are a feature introduced in Oracle 9i that allows a developer to create his or her own functions like "SUM", "AVG", and…
This video shows how to copy a database user from one database to another user DBMS_METADATA.  It also shows how to copy a user's permissions and discusses password hash differences between Oracle 10g and 11g.
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now