I was trying to set up a test job in Enterprise manager and I got this
error when it tried running the script.
I've created the script on a RAC cluster . It contains the following:
#!/bin/ksh
. /oracle/.kshrc
env >> /tmp/t.txt
which sqlplus >> /tmp/t.txt
sqlplus scott/abc@ORACLE123<<-!
set serveroutput on size 1000000
select 'Hello World' from dual
/
!
I've ran this successfully via the command line. Could someone advise
as to what I am missing or did wrong?
I had a look at metalink and check the points given there but I seem
to have them covered.
Regards
Justin
Which O/S user created the script? Which O/S users can actually
execute this script?
David Fitzjarrell
Hi David
Thanks for the reply. I am still new to this. How would I go about
finding out Which O/S user created the script? Which O/S users can
actually
execute this script?
When executing ls -l at the command line, the first set of three
letters for the script was rwx. Not sure if this was what you were
after?
No, I'm 'after' the owner and group for that script, as well as the
permissions for anyone other than the owner. The example below
describes how an ls -l record is arranged and which information I
requested:
o g w owner group
v v v v v
-rwx------ 1 oracle dba 685 Nov 19 06:17
get_version_all.sh
There are 10 characters in the first string, a 'special' character to
indicate things like named pipes, directories, special files, etc.
and, most commonly, three sets of 'rwx' or placeholders. The example
above lists that the OWNER has full rights to the script; the group
and the rest of the world have no rights whatsoever. Other
combinations might be:
-rw-rw-rw- 1 oracle dba 685 Nov 19 06:17
get_version_all.sh
giving the owner, group and rest of the 'world' read and write
permissions, but no execute privilege. Yet another possibility is:
-rwxr-xr-x 1 oracle dba 685 Nov 19 06:17
get_version_all.sh
giving the owner full privileges, and the group and world read and
execute, but no write privilege. It appears that someone other than
'oracle' wrote this script of yours and the permissions mask is set to
750, which translates to:
-rwxr-x--- 1 nackle dorf 685 Nov 27 16:39
grompenflommetz.sh
so the owner has full rights to read, write and execute the script,
the group has rights to read and execute the script and the rest of
the world can't do anything with it at all. In this situation
'oracle' is part of the 'rest of the world' and is left out in the
cold, so to speak. This could cause the 'permission denied' error you
are experiencing. Of course no one will know that until you can post
the information I've requested.
David Fitzjarrell
David's answer is part of the way there. So I'll explicitly ask:
Did you see metalink Note:391820.1 ? Does $ORACLE_HOME/rdbms/admin/
externaljob.ora exist?
Is your oracle executable -rwsr-s--x 1 oracle oinstall ?
(Those s's mean run as the user, which is probably nobody as that note
says - if you have different protection, you had an installation/
patching problem).
Which exact platform/OS/OS version are you on?
Which exact version of Oracle are you on, including 4 decimals. Have
you applied any critical patch updates? Note:735219.1 says you have to
change the permissions on the extjob executable.
Note:732963.1 points out the script must exist on all nodes of the
cluster with the proper permissions.
Are you sure the #!/bin/ksh is on the _first_ line of the script?
Are you sure there is a space after the period on the line . /
oracle/.kshrc?
Are all the /tmp/t.txt environment variables what you expect?
Are all the .kshrc environment variables exported?
Please remember to be specific as to which docs you've actually
followed. The 'puter takes things even more literal than the people
on this group.
jg
--
@home.com is bogus.
http://www.theregister.co.uk/2008/07/28/sun_dziuba_tm/
Hi David & JG
I will look into all that you've stated and get back to you. Thanks
again
jr
Ok. I've gone through the items. And here are the results:
1. The current permissions for that script is - -rwxr----x- (This was
prior to me reading your last post and still got the permission
denied)
2. I've actually gone through the Note:391820.1 before. I confirm the
following:
a. $ORACLE_HOME/rdbms/admin/externaljob.ora exists
b. #!/bin/ksh is on the 1st line of the script
c. There is a space after the period on the line . /oracle/.kshrc
d. all things mentioned in that note is the same on my end with the
exception of :
3. Edit $ORACLE_HOME/rdbms/admin/externaljob.ora and set run_user to
the OS account that owns the Oracle installation and the database and
run_group to the OS group that owns the Oracle_Home.
Example:
OS account: oracle
OS group: oinstall
I am not too sure that I should be changing the default of nobody. I
am only trying to execute not write to the file. Or is my
understanding of this is wrong?
3. How do I change the permission for the executable to -rwsr-s--x ?
4. I am on a Linux 2.6.9-55.0.0.0.2.ELsmp x86_64 x86_64 x86_64 GNU/
Linux and
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
Ok. I've set the permission of the script with chmod 6751 and now get
the following error instead:
ORA-27369: job of type EXECUTABLE failed with exit code: No such file
or directory
That is a long discussion about security. If you want nobody to run
your script, your script has to be readable and executable by nobody
(an actual user you should be able to see in your /etc/passwd). If
you want the oracle user to run the script, the script has to be
readable and executable by oracle:oinstall (or whoever the group
oracle is, you should log in as oracle and run the id command to see).
Search oracle.com for "project lockdown" I think it is called, for
security considerations.
>
> > 3. How do I change the permission for the executable to -rwsr-s--x ?
>
> > 4. I am on a Linux 2.6.9-55.0.0.0.2.ELsmp x86_64 x86_64 x86_64 GNU/
> > Linux and
> > Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
> > PL/SQL Release 10.2.0.3.0 - Production
> > CORE 10.2.0.3.0 Production
>
> Ok. I've set the permission of the script with chmod 6751 and now get
> the following error instead:
>
> ORA-27369: job of type EXECUTABLE failed with exit code: No such file
> or directory
That permission setting is for things that are run by oracle, not your
script, I want to be sure you set the correct executable, so ls -l
both the executable and your script file.
Also, ls -l the script file on all your nodes. I'm guessing you only
have it on one node? How many nodes do you have in your RAC?
jg
--
@home.com is bogus.
Getting poked by the repo man:
http://www3.signonsandiego.com/stories/2008/dec/16/australia-facebook-121608/?zIndex=23075