Blog dedicated to Oracle Applications (E-Business Suite) Technology; covers Apps Architecture, Administration and third party bolt-ons to Apps

Friday, November 30, 2007

Values for context variable s_appserverid_authentication

In E-Business Suite 11.5.10 the default value of context variable, s_appserverid_authentication, is SECURE. In previous E-Business Suite 11i versions, this was set to OFF.

There are 3 Modes of authentication:

OFF - Server security is not checked. Any application server machine can access the database. Code IDs are also not checked. Use this option on test systems or if you have full control over the software on all machines which can physically access your database.

ON - Some level of trust is required to access the database. Either the application server must be registered with the database or the code must pass a module and version ID known to be trusted. Use this option only if you wish to maintain compatibility with application servers that you cannot yet patch to the code level required for best security.

SECURE - Full trust is required for access to the database. Only registered application server machines may connect to the database, and only trusted code modules may connect to the database.

If you are on Oracle Applications 11.5.10.2, the context variable, s_appserverid_authentication, is the parameter that allows you to skip the framework login. Setting this parameter to "OFF" mode is only to be used for debugging purposes. Any other use, such as leaving it in the "OFF" mode for regular login, is not supported.

Thursday, November 29, 2007

adadmin errors out with ORA-00942: TABLE OR VIEW DOES NOT EXIST

After a clone in one of the environments, whenever adadmin was run the following error appeared:

AD Administration error:
The following ORACLE error:
ORA-00942: table or view does not exist
occurred while executing the SQL statement:
SELECT to_char(APPLSYS.AD_SESSIONS_S.NEXTVAL) FROM SYS.DUAL

Unable to get the current value of sequence APPLSYS.AD_SESSIONS_S

We tried to check for the ownership and existance of the sequence AD_SESSIONS_S:

SQL> SELECT SUBSTR(OWNER,1,12)
OWNER,SUBSTR(OBJECT_NAME,1,45) NAME, SUBSTR(OBJECT_TYPE,1,12) TYPE
FROM DBA_OBJECTS where object_name = 'AD_SESSIONS_S' ;


OWNER NAME TYPE
------------ --------------------------------------------- ------------
APPLSYS AD_SESSIONS_S SEQUENCE
APPS AD_SESSIONS_S SYNONYM
WAVESET AD_SESSIONS_S SYNONYM
APPS_WEB AD_SESSIONS_S SYNONYM

Also tried to execute the query manually:

SELECT to_char(APPLSYS.AD_SESSIONS_S.NEXTVAL) FROM SYS.DUAL;
TO_CHAR(APPLSYS.AD_SESSIONS_S.NEXTVAL)
----------------------------------------
1852

We tried recreating grants and synonyms but it did not work. So we followed note 149987.1 and recreated AD_SESSIONS_S:

Run adodfcmp adutil.odf to re-create the AD_SESSIONs_S
Run adodfcmp for both tables and sequences.

Navigate to $AD_TOP/admin/odf and run the adodfcmp command similar to the
following

$ adodfcmp mode=tables touser=apps/apps priv_schema=system/manager \
> odffile=adutil.odf userid=applsys/apps changedb=yes

$ adodfcmp mode=sequences touser=apps/apps priv_schema=system/manager \
> odffile=adutil.odf userid=applsys/apps changedb=yes

That fixed the error.

Wednesday, November 28, 2007

ORA-02083:database name has illegal character '.'

Recently I was asked for help in an issue which is related to ASCP.

In OLTP instance, from OM Order Administrator Primary responsibility
1.Open ATP Inquiry Form
2.Give the Item name and Qty
3.click on the Global Availability Button.
4.Following Error message appears and user is unable to view Global Availability:

ORA-02083:database name has illegal character '.'
ORA-06512:at "SYS.DBMS_SYS_SQL", line 909
ORA-06512:at "SYS.DBMS_SQL", line 39
ORA-06512:at "APPS.MSC_SCH_WB", line 842

Official documentation states the cause of ORA-02083 as:

The database name supplied contains an invalid character. For example, there can be no periods, semicolons, single quotes, double quotes, blanks, or non-printable characters in the database name.


First I checked for the global name of OLTP and ASCP instances:
OLTP:
SQL> select * from global_name;
oltp11i.production.example.com

The global name still had the domain for production. So I changed it to:

SQL> alter database rename global name to oltp11i.development.example.com;
Database Altered
SQL> select * from global_name;
oltp11i.development.example.com

ASCP:
SQL>select * from global_name;
ascp11i

If you query dba_db_links table, you'll find that it automatically attaches the domain name derived from global name of the instance.

I dropped and recreated the ASCP hookup DB links without domain name.
ASCP Instance:
SQL> drop database link ASCP2OLTP.DEVELOPMENT.EXAMPLE.COM;
SQL> create database link ASCP2OLTP connect to apps identified by apps using 'oltp11i';

OLTP Instance:
SQL>drop database link OLTP2ASCP.DEVELOPMENT.EXAMPLE.COM;
SQL> create database link OLTP2ASCP connect to apps identified by apps using 'ascp11i';

I checked for the DB link names in MRP_AP_APPS_INSTANCES:

SQL> select M2A_DBLINK,A2M_DBLINK from mrp_ap_apps_instances
2 /

M2A_DBLINK A2M_DBLINK
--------------------------------- --------------------------------
ASCP2OLTP.DEVELOPMENT.EXAMPLE.COM OLTP2ASCP.DEVELOPMENT.EXAMPLE.COM

The DB links had been specified with domain name. I removed the domain names altogether, as the '.' (period) is not allowed in the base db name by the following statement.

SQL> update mrp_ap_apps_instances
2 set m2a_dblink='ASCP2OLTP',A2M_DBLINK='OLTP2ASCP';
1 row updated.

SQL> COMMIT;
Commit complete.

SQL> select M2A_DBLINK,A2M_DBLINK from mrp_ap_apps_instances
2 /

M2A_DBLINK A2M_DBLINK
--------------------------- -----------------------
ASCP2OLTP OLTP2ASCP

After these changes the error changed to this:

ORA-02019: connection description for remote database not found
ORA-06512: at "APPS.MSC_ATP_PROC", line 3519
ORA-06512: at line 1
ORA-06512: at "APPS.MSC_ATPSOURCES_NEW", line 53
ORA-06512: at "APPS.MSC_SCH_WB", line 660
ORA-06512: at "APPS.ORDER_SCH_WB", line 54

------------------------------------------------
FRM-40735: WHEN-BUTTON-PRESSED trigger raised unhandled exception ORA-02019.

Tracing the error from forms side or the session from DB side is not logging this error. Still investigating this one.

Akhilesh solved this one for me. This is what he did:

On OLTP instance:

Checked the value of profile option MRP:ATP Database Link and it was oltp2ascp.development.example.com. So we removed the domain name and made it oltp2ascp

On ASCP Instance:

Logged in with Advanced Planning Administrator responsibility
Admin > Instances

The DB link values in the fields "From Source to APS" and "From APS to Source" had the dblink with domain name. Removed the domain name. Saved.

Voila, the issue is solved. Error message no longer appears and Global Availability form opens on clicking the button.

Tuesday, November 27, 2007

ld.so.1: vi: fatal: relocation error

While trying to solve the issue in the previous post, I had modified the LD_LIBRARY_PATH to include /usr/ucblib directory. This was the result:

$vi
ld.so.1: vi: fatal: relocation error: file /usr/bin/vi: symbol cur_term: referenced symbol not found

unset LD_LIBRARY_PATH

vi worked fine. /usr/ucblib directory should not be in the $LD_LIBRARY_PATH. If it is, you'll get this error.

libucb.so.1 open failed: No such file or directory

I got a mail from Sandeep today reporting this error:

$ adfrmctl.sh start

You are running adfrmctl.sh version 115.37

ld.so.1: FNDSVCRG: fatal: libucb.so.1: open failed: No such file or directory
Killed
Starting forms server for example11i on port 9000.
ld.so.1: FNDSVCRG: fatal: libucb.so.1: open failed: No such file or directory
Killed

adfrmctl.sh: exiting with status 0

I advised him to relink the FND and AD binaries, however adadmin resulted in this error:

$ adadmin
ld.so.1: adadmin: fatal: libucb.so.1: open failed: No such file or directory
Killed


We did a truss to find out in which directories it was searching for libucb.so.1:

$ truss adadmin
execve("/example11i/erpapp/appl/ad/11.5.0/bin/adadmin", 0xFFBEAFAC, 0xFFBEAFB4) argc = 1
resolvepath("/usr/lib/ld.so.1", "/usr/lib/ld.so.1", 1023) = 16
open("/var/ld/ld.config", O_RDONLY) = 3
fstat(3, 0xFFBEA808) = 0
mmap(0x00000000, 992, PROT_READ, MAP_SHARED, 3, 0) = 0xFF390000
close(3) = 0
stat("/example11i/erpapp/8.0.6/network/jre11/lib/sparc/native_threads/libclntsh.so.1.0", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/appl/cz/11.5.0/bin/libclntsh.so.1.0", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libclntsh.so.1.0", 0xFFBEA890) = 0
resolvepath("/example11i/erpapp/8.0.6/lib/libclntsh.so.1.0", "/example11i/erpapp/8.0.6/lib/libclntsh.so.1.0", 1023) = 43
open("/example11i/erpapp/8.0.6/lib/libclntsh.so.1.0", O_RDONLY) = 3
mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF380000
mmap(0x0D3731A8, 4595712, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON, -1, 0) = 0xFEC00000
mmap(0xFEC00000, 4322968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFEC00000
mmap(0xFF02E000, 144324, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 4317184) = 0xFF02E000
mmap(0xFF052000, 64584, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF052000
munmap(0xFF020000, 57344) = 0
memcntl(0xFEC00000, 445716, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
stat("/example11i/erpapp/8.0.6/network/jre11/lib/sparc/native_threads/libnsl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/appl/cz/11.5.0/bin/libnsl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libnsl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/dt/lib/libnsl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/openwin/lib/libnsl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/opt/SUNWcluster/lib/libnsl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libnsl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/lib/libnsl.so.1", 0xFFBEA890) = 0
resolvepath("/usr/lib/libnsl.so.1", "/usr/lib/libnsl.so.1", 1023) = 20
open("/usr/lib/libnsl.so.1", O_RDONLY) = 3
mmap(0xFF380000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF380000
mmap(0x15AFA2C0, 655360, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON, -1, 0) = 0xFF280000
mmap(0xFF280000, 582238, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF280000
mmap(0xFF310000, 33256, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 589824) = 0xFF310000
mmap(0xFF31A000, 23312, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF31A000
memcntl(0xFF280000, 84064, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
stat("/example11i/erpapp/8.0.6/network/jre11/lib/sparc/native_threads/libsocket.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/appl/cz/11.5.0/bin/libsocket.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libsocket.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/dt/lib/libsocket.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/openwin/lib/libsocket.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/opt/SUNWcluster/lib/libsocket.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libsocket.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/lib/libsocket.so.1", 0xFFBEA890) = 0
resolvepath("/usr/lib/libsocket.so.1", "/usr/lib/libsocket.so.1", 1023) = 23
open("/usr/lib/libsocket.so.1", O_RDONLY) = 3
mmap(0xFF380000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF380000
mmap(0x15AF9ED8, 114688, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON, -1, 0) = 0xFF360000
mmap(0xFF360000, 40558, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF360000
mmap(0xFF37A000, 4365, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 40960) = 0xFF37A000
munmap(0xFF36A000, 65536) = 0
mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF350000
memcntl(0xFF360000, 14496, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
stat("/example11i/erpapp/8.0.6/network/jre11/lib/sparc/native_threads/libgen.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/appl/cz/11.5.0/bin/libgen.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libgen.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/dt/lib/libgen.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/openwin/lib/libgen.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/opt/SUNWcluster/lib/libgen.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libgen.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/lib/libgen.so.1", 0xFFBEA890) = 0
resolvepath("/usr/lib/libgen.so.1", "/usr/lib/libgen.so.1", 1023) = 20
open("/usr/lib/libgen.so.1", O_RDONLY) = 3
mmap(0xFF380000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF380000
mmap(0x1516F4D0, 98304, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON, -1, 0) = 0xFF330000
mmap(0xFF330000, 23073, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF330000
mmap(0xFF346000, 2335, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 24576) = 0xFF346000
munmap(0xFF336000, 65536) = 0
memcntl(0xFF330000, 6932, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
stat("/example11i/erpapp/8.0.6/network/jre11/lib/sparc/native_threads/libdl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/appl/cz/11.5.0/bin/libdl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libdl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/dt/lib/libdl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/openwin/lib/libdl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/opt/SUNWcluster/lib/libdl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libdl.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/lib/libdl.so.1", 0xFFBEA890) = 0
resolvepath("/usr/lib/libdl.so.1", "/usr/lib/libdl.so.1", 1023) = 19
open("/usr/lib/libdl.so.1", O_RDONLY) = 3
mmap(0xFF380000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF380000
mmap(0x15B00850, 8192, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON, -1, 0) = 0xFF270000
mmap(0xFF270000, 2302, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF270000
close(3) = 0
stat("/example11i/erpapp/8.0.6/network/jre11/lib/sparc/native_threads/libc.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/appl/cz/11.5.0/bin/libc.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libc.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/dt/lib/libc.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/openwin/lib/libc.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/opt/SUNWcluster/lib/libc.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libc.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/lib/libc.so.1", 0xFFBEA890) = 0
resolvepath("/usr/lib/libc.so.1", "/usr/lib/libc.so.1", 1023) = 18
open("/usr/lib/libc.so.1", O_RDONLY) = 3
mmap(0xFF380000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF380000
mmap(0x15B042E8, 802816, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON, -1, 0) = 0xFF180000
mmap(0xFF180000, 704200, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF180000
mmap(0xFF23C000, 24772, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 704512) = 0xFF23C000
munmap(0xFF22C000, 65536) = 0
memcntl(0xFF180000, 113528, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
stat("/example11i/erpapp/8.0.6/network/jre11/lib/sparc/native_threads/libaio.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/appl/cz/11.5.0/bin/libaio.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libaio.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/dt/lib/libaio.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/openwin/lib/libaio.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/opt/SUNWcluster/lib/libaio.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libaio.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/lib/libaio.so.1", 0xFFBEA890) = 0
resolvepath("/usr/lib/libaio.so.1", "/usr/lib/libaio.so.1", 1023) = 20
open("/usr/lib/libaio.so.1", O_RDONLY) = 3
mmap(0xFF380000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF380000
mmap(0x0295B288, 106496, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON, -1, 0) = 0xFF160000
mmap(0xFF160000, 28909, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF160000
mmap(0xFF178000, 1584, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 32768) = 0xFF178000
munmap(0xFF168000, 65536) = 0
memcntl(0xFF160000, 7184, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
stat("/example11i/erpapp/8.0.6/network/jre11/lib/sparc/native_threads/libm.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/appl/cz/11.5.0/bin/libm.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libm.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/dt/lib/libm.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/openwin/lib/libm.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/opt/SUNWcluster/lib/libm.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libm.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/lib/libm.so.1", 0xFFBEA890) = 0
resolvepath("/usr/lib/libm.so.1", "/usr/lib/libm.so.1", 1023) = 18
open("/usr/lib/libm.so.1", O_RDONLY) = 3
mmap(0xFF380000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF380000
mmap(0x016884F8, 294912, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON, -1, 0) = 0xFF110000
mmap(0xFF110000, 225354, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF110000
mmap(0xFF156000, 7292, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 221184) = 0xFF156000
munmap(0xFF148000, 57344) = 0
memcntl(0xFF110000, 10604, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
stat("/example11i/erpapp/8.0.6/network/jre11/lib/sparc/native_threads/libucb.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/appl/cz/11.5.0/bin/libucb.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libucb.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/dt/lib/libucb.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/openwin/lib/libucb.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/opt/SUNWcluster/lib/libucb.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/example11i/erpapp/8.0.6/lib/libucb.so.1", 0xFFBEA890) Err#2 ENOENT
stat("/usr/lib/libucb.so.1", 0xFFBEA890) Err#2 ENOENT
ld.so.1: adadmin: fatal: libucb.so.1: open failed: No such file or directory
write(2, " l d . s o . 1 : a d a".., 77) = 77
munmap(0xFF380000, 8192) = 0
lwp_self() = 1
*** process killed ***

Based on the above it is clear that it is looking for libucb.so.1 in $LD_LIBRARY_PATH.

This is what we did as a workaround:

cd $ORACLE_HOME/lib
ln -s /usr/ucblib/libucb.so.1 libucb.so.1

After this both adadmin and adfrmctl.sh worked fine.

However the question still remains why it happened. I compared adadmin of this particular instance and a vision instance:

$ ldd /vision11i/erpapp/appl/ad/11.5.0/bin/adadmin
libclntsh.so.1.0 => /vision11i/erpapp/8.0.6/lib/libclntsh.so.1.0
libnsl.so.1 => /usr/lib/libnsl.so.1
libsocket.so.1 => /usr/lib/libsocket.so.1
libgen.so.1 => /usr/lib/libgen.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libc.so.1 => /usr/lib/libc.so.1
libaio.so.1 => /usr/lib/libaio.so.1
libm.so.1 => /usr/lib/libm.so.1
libmp.so.2 => /usr/lib/libmp.so.2
/usr/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1


$ ldd /example11i/erpapp/appl/ad/11.5.0/bin/adadmin
libclntsh.so.1.0 => /example11i/erpapp/8.0.6/lib/libclntsh.so.1.0
libnsl.so.1 => /usr/lib/libnsl.so.1
libsocket.so.1 => /usr/lib/libsocket.so.1
libgen.so.1 => /usr/lib/libgen.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libc.so.1 => /usr/lib/libc.so.1
libaio.so.1 => /usr/lib/libaio.so.1
libm.so.1 => /usr/lib/libm.so.1
libucb.so.1 => /gpswms76/erpapp/8.0.6/lib/libucb.so.1
libresolv.so.2 => /usr/lib/libresolv.so.2
libelf.so.1 => /usr/lib/libelf.so.1
libmp.so.2 => /usr/lib/libmp.so.2
/usr/platform/SUNW,Sun-Fire-V240/lib/libc_psr.so.1

The list of libraries being referenced is not same. Clearly something was wrong in the environment when the binaries were relinked.

Metalink Note 164279.1 describes a similar problem:

PROBLEM DESCRIPTION
====================

You receive the following error message when invoking an oracle executable
on Sun Solaris. This applies to all executbles including Database, Networking,
Tools,and Applications.

ld.so.1: : fatal: libucb.so.1: open failed:
No such file or directory
Killed


PROBLEM EXPLANATION
======================

The executable was built using the wrong linker ('ld'). The Solaris
operating system comes with two linkers, the SVR4 linker (/usr/ccs/bin/ld)
and SunOS 4.x compatibility linker (/usr/ucb/ld). Oracle requires the use of
the /usr/ccs/bin utitlities to properly link the executables and
if /usr/ucb/ld is used instead of /usr/ccs/bin/ld, executables will fail with
the above error message.

NOTE: Please see the appropriate product Installation Guide for
O/S requirments.


SOLUTION DESCRIPTION
=====================

To correct the problem, you'll need to modify your PATH environment variable
so that the /usr/ccs/bin directory comes before /usr/ucb directory, and then
relink the executables that were linked with the wrong linker.

1. Correct the PATH environment variable.

csh
-----
% setenv PATH /usr/ccs/bin:${PATH}

sh, ksh or bash
-----------
% PATH=/usr/ccs/bin:$PATH
% export PATH

2. Ensure the PATH is set correctly.

% which ld
/usr/ccs/bin/ld <== This should be returned if the the PATH is
correct.

3. Relink the executables:

See Note 131321.1 for Data Server relinking instructions.
I am not sure if PATH was incorrectly set when the binaries were relinked. However, I have advised the DBA team to relink all binaries based on the above analysis.

Monday, November 26, 2007

ORA-1403 when forms is launched from self service

In one of our instances, we are getting this error in Firefox whenever we try to launch forms from self service modules:

ORA-01403: no data found Content-type: text/html; charset=UTF-8 Location: http://justanexample.com:8000/oa_servlets/oracle.apps.fnd.sso.AppsLogin?requestUrl=APPSHOMEPAGE&cancelUrl=http%3A%2F%2F11ioltp.justanexample.com%3A8013%2Foa_servlets%2Foracle.apps.fnd.sso.AppsLogin&errText=Your%20session%20is%20no%20longer%20valid.%20Please%20login%20again.

This error only appears when we try the option from Firefox. Internet Explorer is silent and doesn't show any error.

I have asked the DBA team to enable trace on ORA-01403 in init.ora through this event to find out:

event = "1403 trace name errorstack: 10046 trace name context forever, level 12"

Some data purging had been done by DBAs, after which this error is occuring.

After trace was enabled, this is what we found in trace file:

PARSING IN CURSOR #3 len=272 dep=1 uid=173 oct=3 lid=173 tim=5586109696263 hv=1880614960 ad='9ab642f8'
SELECT FPOV.PROFILE_OPTION_VALUE FROM FND_PROFILE_OPTION_VALUES FPOV, FND_PROFILE_OPTIONS FPO WHERE FPO.PROFILE_OPTION_NAME =
'AFCORE_LOGGING_ENABLED' AND FPO.PROFILE_OPTION_ID = FPOV.PROFILE_OPTION_ID AND FPOV.LEVEL_ID = 10001 AND FPO.APPLICATION_ID
= FPOV.APPLICATION_ID
END OF STMT
PARSE #3:c=0,e=165,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=5586109696257
BINDS #3:
EXEC #3:c=0,e=126,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=5586109696528
FETCH #3:c=0,e=101,p=0,cr=5,cu=0,mis=0,r=0,dep=1,og=4,tim=5586109696670
*** 2007-11-26 15:39:02.788
ksedmp: internal or fatal error
ORA-01403: no data found
Current SQL statement for this session:
begin
owa.user_id := :userid;
owa.password := :passwd;
owa.ip_address := :ipaddress;
owa.hostname := :hostname;
owa.init_cgi_env(:n__, :nm__, :v__);
if (owa_custom.authorize = TRUE) then
:authorized := 'yes';
else
:authorized := 'no';
end if;
:realm := owa.protection_realm;
end;
----- PL/SQL Call Stack -----
object line object
handle number name
398b4f6f0 23 package body APPS.FND_CORE_LOG
398b4f6f0 158 package body APPS.FND_CORE_LOG
39cbe1d38 213 package body APPS.FND_PROFILE
39cbe1d38 1548 package body APPS.FND_PROFILE
39cbe1d38 1720 package body APPS.FND_PROFILE
39cbe1d38 2357 package body APPS.FND_PROFILE
398b8bbd0 35 package body APPS.FND_WEB_CONFIG
398b8bbd0 214 package body APPS.FND_WEB_CONFIG
398b8bbd0 411 package body APPS.FND_WEB_CONFIG
39b7cdf08 33 package body APPS.OWA_CUSTOM
39b7d8b00 7 anonymous block
----- Call Stack Trace -----

Still investigating this one.

Wednesday, November 21, 2007

ORA-20002, Error '-21525 while compiling flexfields

Sadiq reported this error today:

While compiling the flexfields, the procedure wf_event.raise failed with following

parameters:

event_name = oracle.apps.fnd.flex.dff.compiled

event_key = FND.$SRS$.FNDSCARU

The error raised is:

ORA-20002: 3825: Error '-21525 - ORA-21525: attribute number or (collection element at index) violated its constraints' encountered during execution of Rule function 'fnd_bes_proc.process_event' for event 'oracle.apps.fnd.flex.dff.compiled' with key 'FND.$SRS$.FNDSCARU'.

There is a similar error described in Metalink Note 430477.1 which suggests applying patch 5625612 (which is superseded by ATG_PF.H RUP5 which is again superseded by RUP6). However this patch was already applied in the instance where the above error occurred.

This was solved by increasing the open_cursors in init.ora reportedly.

Oracle Openworld 2007 presentations available for download

Openworld 2007 Content Catalog

Userid: cboracle
Password: oraclec6

You’ll be asked for userid and password when you click on the attachment icon for a given session

Tuesday, November 20, 2007

ORA-600 errors after upgrade from 9.2.0.8 to 10.2.0.3

1.ORA-00600: internal error code, arguments: [16203], [], [], [], [], [], [], []
2.ORA-00600: internal error code, arguments: [17281], [1001], [0x3AE64C028], [], [], [], [], []
3.ORA-00600: internal error code, arguments: [kcbzwb_4], [], [], [], [], [], [], []

1. Possibly bug 5108130:
Making a reference in a PL/SQL block to a synonym at a remote site R1 when
the referent of the synonym was on yet another site R2 could have resulted
in an ORA-600 [16203] error. The PL/SQL block must have been compiled by
a 9.2.0.X or earlier compiler.

2. Possibly bug 5482174:
Deinstantiation of a large number of PLSQL objects that have opened cursors
when session_cached_cursors is non-zero might hit an ORA-600 [17281] [36]
with a call stack of the form
'ksupop->kgiCallStateCleanUp->kgiLRUResize'
repeated within it a number of times.

Workaround:
Set session_cached_cursors to zero.

3. Possibly bug 5028099:
ORA-600 [kcbzwb_4] can occur when using in memory undo (IMU)
for private buffers.

Workaround:
Set "_in_memory_undo"=FALSE

Friday, November 16, 2007

LOB indexes cannot be renamed, rebuilt, or modified

Today, Anand asked me if it is possible to rebuild lob indexes. I knew that it is not possible, but wanted to explore why ? This is what Tom Kyte says in one of his responses in asktom.oracle.com:

You have a table with a LOB column in it.

A LOB is simply a pointer. It points to an index. the index points to the chunks that make up the LOB.

Hence when you create a LOB, you will always get a lob index created (to find the chunks
for the lob fast) and a segment that holds the lob data (chunks).

So by design, LOB indexes can not be renamed, rebuilt or modified.

If you ever try to issue alter index rebuild command on a LOB index you'll get an
ORA-02327 cannot create index on column with datatype LOB

Thursday, November 15, 2007

Visit to a data center

I had the privilege of visiting a data center with a group of colleagues for a tour. The Data Center manager was very passionate about his job. He showed us the generators, the UPS, the chillers which make the whole thing tick. Then he showed us the server rooms, Mainframes, SANs. He would use the phrase "everything under the sun" is under this roof. It was really good to see the machines on which we work everyday. There were very few people in the data center. Physical access is not needed unless there is a problem which can't be solved remotely. The tape libraries were all automatic operated by robots. It was very futuristic indeed. What amazed me was that the Data Center manager was more passionate about the Generators than about the servers. Come to think of it, we also worry more about the things which make E-Business Suite work, instead of the product itself.

Wednesday, November 14, 2007

GPL Ghostscript 8.54: Unrecoverable error, exit code 1

Leslie asked me about this error today:

GPL Ghostscript 8.54: Unrecoverable error, exit code 1

This error comes whenever trying to use ghostscript.

It is possible that this error is appearing because ghostscript is unable to find fonts. This is what I found when I googled:

Fonts are distributed (and installed) independently from GS since they are provided by others (not Artifex Software or the developers of Ghostscript).

Fonts will have the .pfb suffix, so a find . -name "*.pfb" -print from some top level directory (such as /usr or /app) will locate them for you. Then you can either:

1) Symbolic link to the font directory as the expected dir for example:

ln -s /usr/local/share/ghostscript/fonts /app/ghostscript-8.00/share/ghostscript/fonts

2) Tell gs where to find the fonts using the -I option to add a search path. For example:

gs -I/usr/local/share/ghostscript/fonts ...

3) Set the GS_LIB environment variable to specify the dir For example (bin/sh or bin/ksh or bin/bash):

export GS_LIB=/usr/local/share/ghostscript/fonts

Of course, if you don't already have the fonts installed, then do
so first.

Regards,
Ray Johnston
Artifex Software Inc.

Based on the above information, this is what I did:

# /usr/local/bin/pdf2ps /tmp/justanexample.pdf - | lp -d HPDLC
Error creating job: check spooling directory: /var/spool/print

$ /usr/local/bin/pdf2ps /tmp/justanexample.pdf
Error: /invalidfont in findfont
Operand stack:
--dict:5/5(L)-- F1 10 --dict:8/8(L)-- --dict:8/8(L)-- ModenaCondensedLight --dict:12/12(L)-- Helvetica-Narrow Helvetica-Narrow Font Helvetica-Narrow 1426219 Helvetica-Narrow --nostringval-- Helvetica-Narrow NimbusSanL-ReguCond
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop --nostringval-- --nostringval-- 2 1 5 --nostringval-- %for_pos_int_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- %array_continue --nostringval-- false 1 %stopped_push --nostringval-- %loop_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- 9 13 %oparray_pop 10 13 %oparray_pop --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 13 14 %oparray_pop --nostringval-- --nostringval-- --nostringval-- 1 -1 1 --nostringval-- %for_neg_int_continue
Dictionary stack:
--dict:1120/1686(ro)(G)-- --dict:2/20(G)-- --dict:75/200(L)-- --dict:75/200(L)-- --dict:105/127(ro)(G)-- --dict:253/347(ro)(G)-- --dict:21/24(L)-- --dict:4/6(L)-- --dict:20/20(L)-- --dict:1/1(ro)(G)-- --dict:1/1(ro)(G)-- --dict:1/1(ro)(G)-- --dict:8/8(L)-- --dict:17/17(ro)(G)-- --dict:1120/1686(ro)(G)--
Current allocation mode is local
Last OS error: 2
GPL Ghostscript 8.54: Unrecoverable error, exit code 1
dasvi@tsgsd1008 #

gs –h tells me the font directory:

dasvi@tsgsd1008 # gs -h
GPL Ghostscript 8.54 (2006-05-17)
Copyright (C) 2006 artofcode LLC, Benicia, CA. All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
-dNOPAUSE no pause after page | -q `quiet', fewer messages
-gx page size in pixels | -r pixels/inch resolution
-sDEVICE= select device | -dBATCH exit after last file
-sOutputFile= select output file: - for stdout, |command for pipe,
embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PostScriptLevel3 PDF
Default output device: x11
Available devices:
bbox bit bitcmyk bitrgb bj10e bj200 bjc600 bjc800 bmp16 bmp16m bmp256
bmp32b bmpgray bmpmono bmpsep1 bmpsep8 cdeskjet cdj550 cdjcolor cdjmono
cljet5 cljet5c deskjet devicen djet500 epswrite faxg3 faxg32d faxg4 ijs
jpeg jpeggray laserjet lj5gray lj5mono ljet2p ljet3 ljet3d ljet4 ljet4d
ljetplus nullpage pbm pbmraw pcx16 pcx24b pcx256 pcxcmyk pcxgray pcxmono
pdfwrite pgm pgmraw pgnm pgnmraw pj pjxl pjxl300 pkm pkmraw pksm pksmraw
png16 png16m png256 png48 pngalpha pnggray pngmono pnm pnmraw ppm ppmraw
ps2write psdcmyk psdrgb psgray psmono psrgb pswrite pxlcolor pxlmono
spotcmyk tiff12nc tiff24nc tiff32nc tiffcrle tiffg3 tiffg32d tiffg4
tiffgray tifflzw tiffpack tiffsep uniprint x11 x11alpha x11cmyk x11gray2
x11gray4 x11mono xcf
Search path:
. : /usr/local/share/ghostscript/8.54/lib :
/usr/local/share/ghostscript/8.54/Resource :
/usr/local/share/ghostscript/fonts
For more information, see /usr/local/share/ghostscript/8.54/doc/Use.htm.
Report bugs to bug-gs@ghostscript.com, using the form in Bug-form.htm.

I checked for font directory

$ ls -ltr /usr/local/share/ghostscript/fonts
/usr/local/share/ghostscript/fonts: No such file or directory
$ ls -ld /usr/local/share/ghostscript/fonts
/usr/local/share/ghostscript/fonts: No such file or directory

The problem is occurring because the fonts directory does not exist.

To fix this I created a soft link:

# cd /usr/local/share/ghostscript
# ln -s /usr/sfw/share/ghostscript/fonts fonts
# /usr/local/bin/pdf2ps /tmp/justanexample.pdf

**** Warning: Fonts with Subtype = /TrueType should be embedded.
The following fonts were not embedded:
ModenaCondensedLight
ModenaCondensedMedium
ModenaCondensedRegular

**** This file had errors that were repaired or ignored.
**** The file was produced by:
**** >>>> Actuate XML to PDF Converter 1.0 <<<< **** Please notify the author of the software that produced this **** file that it does not conform to Adobe's published PDF **** specification. # /usr/local/bin/pdf2ps /tmp/hutch_bill_Aug.pdf - | lp -d HPDLC **** Warning: Fonts with Subtype = /TrueType should be embedded. The following fonts were not embedded: ModenaCondensedLight ModenaCondensedMedium ModenaCondensedRegular **** This file had errors that were repaired or ignored. **** The file was produced by: **** >>>> Actuate XML to PDF Converter 1.0 <<<< **** Please notify the author of the software that produced this **** file that it does not conform to Adobe's published PDF **** specification. request id is HPDLC-10 (1 file) # ls -ltr justanexample.ps -rw-r--r-- 1 root root 201770 Nov 15 15:32 justanexample.ps The command is not erroring out any more and the expected output of .ps file is created. I did all this as root user. Lets test this as a normal user: dasvi@tsgsd1008 # /usr/local/bin/pdf2ps /tmp/hutch_bill_Aug.pdf **** Warning: Fonts with Subtype = /TrueType should be embedded. The following fonts were not embedded: ModenaCondensedLight ModenaCondensedMedium ModenaCondensedRegular **** This file had errors that were repaired or ignored. **** The file was produced by: **** >>>> Actuate XML to PDF Converter 1.0 <<<< **** Please notify the author of the software that produced this **** file that it does not conform to Adobe's published PDF **** specification. $ /usr/local/bin/pdf2ps /tmp/hutch_bill_Aug.pdf - | lp -d HPDLC_ Error creating job: check spooling directory: /var/spool/print

This could be due to the fact that lp can't be used by normal users. Let us check the permissions on lp binary:

$ which lp
/usr/bin/lp

$ sudo su - root
# ls -ltr lp
-rwxr-xr-x 1 root lp 28092 Jan 22 2005 lp

These permissions do not allow normal users to print. setuid needs to be on the lp binary to allow normal users to print. So I changed the permissions:

# chmod 4511 lp
# ls -ltr lp
-r-s--x--x 1 root lp 28092 Jan 22 2005 lp
# exit
$ /usr/local/bin/pdf2ps /tmp/hutch_bill_Aug.pdf - | lp -d HPDLC_G

**** Warning: Fonts with Subtype = /TrueType should be embedded.
The following fonts were not embedded:
ModenaCondensedLight
ModenaCondensedMedium
ModenaCondensedRegular

**** This file had errors that were repaired or ignored.
**** The file was produced by:
**** >>>> Actuate XML to PDF Converter 1.0 <<<< **** Please notify the author of the software that produced this **** file that it does not conform to Adobe's published PDF **** specification. request id is HPDLC-11 (1 file) Now it works for any normal user.

Tuesday, November 13, 2007

Backout an apps patch

Oracle documentation tells us that there is no way to backout a patch other than restoring from backup. With Apps databases growing in terabyte space, it is not practical to restore a backup. Logically speaking, if you can apply a patch, then you should be able to backout a patch too. Patches which replace a few forms or java classes, it is easy to backout with the help of the backup directory created by every patch which has the backup of files which were replaced by the patch. The problem comes when its database objects. Typically a patch will create new objects, modify existing objects, even drop some existing objects. Theoretically, you could drop the new objects, reverse the modifications and recreate the dropped objects. However to do all this, you need to understand what the patch does in the first place. To understand this you should open the driver file in a text editor. Let us take patch 6143275 which has u driver u6143275.drv. The driver file has 5474 lines. Till line 1870 there are lot of begin bug and end bug constructs similar to this one:

begin bug ar 6002847
begin actions
end actions
end bug ar 6002847

From line 1870 copy action starts:

#=================================#
# Actions for Copying Patch Files #
#=================================#

copy ad admin/driver adf01.drv 115.0
copy ad admin/driver adf02.drv 115.0
copy ad admin/driver adf03.drv 115.52

Some other actions are:

libin ad lib aifvaf.o
libout ad lib adifo.o
jcopy j6143275_fnd.zip
link ad bin adadmin
link ad bin adadmin_wrapper


#=======================================#
# Actions for Applying Database Objects #
#=======================================#
These are the phases in applying DB objects:
appwms76@tsgsd1004 # grep Phase u6143275.drv
# Phase FIRST - First phase, runs before all others
# Phase CON - Disable constraints, foreign keys
# Phase SEQ - Create Sequences
# Phase TAB - Create Tables and Indexes
# Phase TBM - Alter table in ways not supported by ODF
# Phase PLS - Create Package Specifications
# Phase VW - Create Views
# Phase PLB - Create Package Bodies
# Phase DAA - AOL Seed Data
# Phase DAT - non-AOL Seed Data
# Phase UPG - non-AOL Transaction Data
# Phase DFR - Create deferred indexes
# Phase EN - Enable constraints, create triggers
# Phase LAST - Last phase, runs after all others
# Phase NOEXEC - These files are intentionally not executed.

#
# Phase FIRST - First phase, runs before all others
#

# file-version-parsed ad ati adsysapp2.sql 115.2
sql admin top adsysapp2.sql none none none sqlplus_driver &phase=first checkfile:nocheck &systempwd

#
# Phase CON - Disable constraints, foreign keys
#

# file-version-parsed ad patch/115/sql adgrnctx4.sql 115.7
sql ad patch/115/sql adgrnctx4.sql none none none sqlplus &phase=con checkfile:ad:patch/115/sql:adgrnctx4.sql:ICX &systempwd &un_fnd CTXSYS &un_icx ICX


#
# Phase SEQ - Create Sequences
#

# file-version-parsed ad patch/115/odf adphst.odf 115.26
exec ad patch/115/odf adphst.odf odf &phase=seq checkfile:ad:patch/115/odf:adphst.odf:seq_sequences mode=sequences


#
# Phase TAB - Create Tables and Indexes
#

# file-version-parsed ad patch/115/odf adconc.odf 115.3
exec ad patch/115/odf adconc.odf odf &phase=tab checkfile:ad:patch/115/odf:adconc.odf:tab_tables mode=tables

# file-version-parsed ar patch/115/xdf ar_line_rev_adj_gt.xdf 115.0
exec java oracle/apps/fnd/odf2 FndXdfCmp.class java &phase=tab checkfile:ar:patch/115/xdf:ar_line_rev_adj_gt.xdf:tab_table &un_ar &pw_ar &un_apps &pw_apps &jdbc_protocol &jdbc_db_addr table &fullpath_ar_patch/115/xdf_ar_line_rev_adj_gt.
xdf &fullpath_fnd_patch/115/xdf_xsl

#
# Phase TBM - Alter table in ways not supported by ODF
#

# file-version-parsed ad patch/115/sql adphtm1g.sql 115.0
sql ad patch/115/sql adphtm1g.sql none none none sql_owner &phase=tbm &un_apps &pw_apps &un_fnd

#
# Phase PLS - Create Package Specifications
#

# file-version-parsed ad patch/115/sql adawld9is.pls 115.0
sql ad patch/115/sql adawld9is.pls MVIEW_RECOMMENDATIONS SYSTEM &systempwd sqlplus &phase=pls

# file-version-parsed ad patch/115/sql adcslcks.pls 115.2
sql ad patch/115/sql adcslcks.pls none none none package &phase=pls checkfile:ad:patch/115/sql:adcslcks.pls

#
# Phase VW - Create Views
#

# file-version-parsed ar patch/115/odf arcar.odf 115.16
exec ar patch/115/odf arcar.odf odf &phase=vw checkfile:ar:patch/115/odf:arcar.odf:vw_views mode=views

# file-version-parsed ar patch/115/odf ardt.odf 115.5
exec ar patch/115/odf ardt.odf odf &phase=vw checkfile:ar:patch/115/odf:ardt.odf:vw_views mode=views

#
# Phase PLB - Create Package Bodies
#

# file-version-parsed ad patch/115/sql adawld9ib.pls 115.5
sql ad patch/115/sql adawld9ib.pls MVIEW_RECOMMENDATIONS SYSTEM &systempwd sqlplus &phase=plb

# file-version-parsed ad patch/115/sql adcslckb.pls 115.3
sql ad patch/115/sql adcslckb.pls none none none package &phase=plb checkfile:ad:patch/115/sql:adcslckb.pls

# file-version-parsed ad patch/115/sql adddb.pls 115.9
sql ad patch/115/sql adddb.pls none none none package &phase=plb checkfile:ad:patch/115/sql:adddb.pls

#
# Phase DAA - AOL Seed Data
#

# file-version-parsed ar patch/115/xml/US arwfengs.wfx 115.1
exec java oracle/apps/fnd/wf WFXLoad.class java &phase=daa+39 checkfile:ar:patch/115/xml/US:arwfengs.wfx -u &un_apps &pw_apps &jdbc_db_addr &jdbc_protocol US &fullpath_ar_patch/115/xml/US_arwfengs.wfx

# file-version-parsed ar patch/115/import/US arnlu.ldt 115.4
exec fnd bin FNDLOAD bin &phase=daa+51 checkfile:ar:patch/115/import/US:arnlu.ldt &ui_apps 0 Y UPLOAD @FND:patc
h/115/import/aflvmlu.lct @AR:patch/115/import/US/arnlu.ldt

#
# Phase DAT - non-AOL Seed Data
#

# file-version-parsed ar patch/115/import/US b3966132ca.ldt 115.1
exec fnd bin FNDLOAD bin &phase=dat checkfile:ar:patch/115/import/US:b3966132ca.ldt &ui_apps 0 Y UPLOAD @AR:patch/115/import/ararca.lct @AR:patch/115/import/US/b3966132ca.ldt

#
# Phase UPG - non-AOL Transaction Data
#

# file-version-parsed ad patch/115/sql adasnupd3.sql 115.0
sql ad patch/115/sql adasnupd3.sql none none none sqlplus &phase=upg checkfile:ad:patch/115/sql:adasnupd3.sql &un_fnd


# file-version-parsed ad patch/115/sql adphenup.sql 115.5
sql ad patch/115/sql adphenup.sql none none none sqlplus &phase=upg checkfile:ad:patch/115/sql:adphenup.sql &un_fnd

#
# Phase DFR - Create deferred indexes
#

# file-version-parsed ad patch/115/odf adphst.odf 115.26
exec ad patch/115/odf adphst.odf odf &phase=dfr checkfile:ad:patch/115/odf:adphst.odf:dfr_tables mode=tables

# file-version-parsed ar patch/115/odf arcar.odf 115.16
exec ar patch/115/odf arcar.odf odf &phase=dfr checkfile:ar:patch/115/odf:arcar.odf:dfr_views mode=views

#
# Phase EN - Enable constraints, create triggers
#

# file-version-parsed ar patch/115/sql arpltgld.sql 115.13.15103.1
sql ar patch/115/sql arpltgld.sql none none none sqlplus &phase=en checkfile:ar:patch/115/sql:arpltgld.sql

#
# Phase LAST - Last phase, runs after all others
#

# file-version-parsed ad patch/115/sql adcf1151.sql 115.7
sql ad patch/115/sql adcf1151.sql none none none sqlplus &phase=last checkfile:ad:patch/115/sql:adcf1151.sql &un_fnd


# file-version-parsed ad patch/115/sql adcf1152.sql 115.7
sql ad patch/115/sql adcf1152.sql none none none sqlplus &phase=last checkfile:ad:patch/115/sql:adcf1152.sql &un_fnd

#
# Phase NOEXEC - These files are intentionally not executed.
#

# file-version-parsed ad admin/sql adaaddlb.pls 115.6
# noexec ad admin/sql adaaddlb.pls

# file-version-parsed ad admin/sql adaaddls.pls 115.7
# noexec ad admin/sql adaaddls.pls

#========================================#
# Actions for Generating Dependent Files #
#========================================#

genform ar forms/US ARBRREMI.fmb
genform ar forms/US ARHDATTR.fmb
genform ar forms/US ARXAIEXP.fmb
genform ar forms/US ARXCOECC.fmb
genform ar forms/US ARXCOQIL.fmb

If you can manually undo each of the above steps, you can backout of an apps patch.

Friday, November 9, 2007

Dots appearing in place of commas in number fields in forms and reports

I saw this posted in Metalink AOL forum:

From: Geeta Kolla 06-Nov-07 20:37
Subject: Number format flipped commas and periods on screen and reports


Number format flipped commas and periods on screen and reports

Every so often, maybe once every week or so, one of the users will experience *flipped* commas and periods in their dollar values.

EXAMPLE: what should be $1,234.56 instead appears as $1.234,56

It happens on both screen as well as reports.

Any ideas, please let me know.

My reply:

From Metalink Note 333785.1 (Internationalization Guide for Apps 11i):

When a number is displayed in digits, country-specific conventions determine how that number is entered and displayed. For example, the number "one million" is usually represented as 1,000,000.00 in the United States and United Kingdom, with the period (.) being used as the decimal separator, or radix, and the comma (,) being used as the grouping separator between thousands. In contrast, many European countries use the comma as the decimal separator and the period as the grouping separator, so "one million" is usually represented as 1.000.000,00.

Number Format Support enables the characters used for the decimal separator and grouping separator to be changed to suit user preference when numbers are entered or displayed. This is referred to as a multi-radix capability. The characters used for the separators may be the period, comma, or other characters.

On each server, the setting of the parameter NLS_NUMERIC_CHARACTERS is used to specify both the decimal separator and the grouping separator. For example, NLS_NUMERIC_CHARACTERS = ".," means that "." is used as the decimal separator and "," is used as the grouping separator. Oracle Applications products generally store numbers as a data type of NUMBER, enabling numbers to be interpreted correctly with any radix format.

Another good reference note is 30778.1: Init.ora Parameter "NLS_NUMERIC_CHARACTERS" Reference Note

Also refer to notes: 408261.1, 275411.1, 364582.1 and 241047.1

Thursday, November 8, 2007

PL/SQL native compilation in Apps 11i and 12

I got a query from Sandeep today:

Do we need to use this parameter plsql_native_library_dir ? Can you please check this in production and see if we need to set this ?
Or do we need to introduce this post 10g upgrade ? Can you please suggest on this.

Issue:

SQL> show error
Errors for PACKAGE APPS.AP_TAX_RECOVERY_PKG:

LINE/COL ERROR
-------- -----------------------------------------------------------------
44/2 PLS-00920: parameter plsql_native_library_dir is not set

This is what I replied:

Hi Sandeep,

Even though native plsql compilation is available since 9i, it was not being used in our environment. It is optional and set through initialization parameter, plsql_code_type (new in 10g) to native. As per metalink note 216205.1, which describes the database initialization parameters for Apps 11i, whenever you are setting plsql_code_type=NATIVE you need to set all these variables:

plsql_code_type = NATIVE
plsql_native_library_dir = /prod11i/plsql_nativelib # Uncomment if using native PL/SQL
plsql_native_library_subdir_count = 149 # Uncomment if using native PL/SQL

Please refer to

Parameter Metalink Note
plsql_code_type 394422.1
plsql_native_library_dir 153370.1
plsql_native_library_subdir_count 153371.1

To learn more about native compilation you may refer to metalink notes 311971.1 and 269012.1.

Thanks and regards,

- Vikram

Rashmi from Sandeep's team wrote back:

Hi Vikram,

Thanks for your guidelines on this.

Question: How did we come up with plsql_native_library_subdir_count = 149?

Has any rule of thumb to be followed? Please let us know.

Thanks,

Rashmi

My reply:

Hi Rashmi

It is the default as per note 216205.1. Also as per note 444524.1, in ATG_PF.H RUP6, PLSQL_NATIVE_LIBRARY_SUBDIR_COUNT has been AutoConfig-enabled to provide more flexibility. It is defined as %s_db_plsql_native_library_subdir_count% and has a default value of 149. Here is the explanation about this parameter from 10g DB reference guide (http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14237/initparams163.htm#REFRN10169):

PLSQL_NATIVE_LIBRARY_SUBDIR_COUNT

Property Description
Parameter type Integer
Default value 0
Modifiable ALTER SYSTEM
Range of values 0 to 232 - 1 (max value represented by 32 bits)

PLSQL_NATIVE_LIBRARY_SUBDIR_COUNT specifies the number of subdirectories created by the database administrator in the directory specified by PLSQL_NATIVE_LIBRARY_DIR.
When using the PL/SQL native compiler, Performance of file create/open operations is unacceptably slow if the number of files in a directory is very large. It is usually advisable to create subdirectories and use this parameter if the total number of different PL/SQL packages that may need to be compiled natively by all users of the database instance exceeds 10000.
The subdirectories should have names corresponding to zero-based decimal numbers, prefixed by d. For example, the database administrator can create 1000 subdirectories named d0, d1, ... d999, and set PLSQL_NATIVE_LIBRARY_SUBDIR_COUNT to 1000.
I recommend that you set

plsql_native_library_dir = 10.2.0_ORACLE_HOME/plsql_nativelib
plsql_native_library_subdir_count = 149

and create mkdir $ORACLE_HOME/plsql_nativelib/d0,d1,d2…..d148.

Thanks and regards,

- Vikram

Wednesday, November 7, 2007

ORAINST environment variable, invPtrLoc and oraInst.loc

Oracle keeps its inventory of installed products in a directory.

Central Inventory contains the information relating to all Oracle products installed on a host. Central inventory(oraInventory) is an inventory that lists ORACLE_HOMEs installed in the system using the inventory.xml file. Each central inventory consists of a file called inventory.xml, which contains the list of Oracle Homes installed.Any modification to the central Inventory should be done through OUI and it is not allowed or a supported method to manually modify the Central Inventory at any point of time. There are various other files associated with the central inventory so manually deleting the contents oraInventory directory and overwritting it leaves the database in an unstable state and may result in corruption of inventory. Every Installation and deinstallation through OUI updates the inventory.xml file as well as corresponding Oracle home comps.xml files hence manipulating manually the contents of oraInventory directory doesn't really help the cause and failes to update corresponding files associated with central Inventories.

The location of the oraInventory is determined by the contents of the /etc/oraInst.loc (AIX and Linux Platform) or /var/opt/oracle/OraInst.loc (Solaris and HP-UX platform). If the default oraInst.loc does not exist under /etc or /var/opt/oracle or it is not pointing to central inventory where Oracle Home is registered then we have to specify the oraInst.loc location with the help of invPtrLoc switch or ORAINST environment variable.

For Example:-

./runInstaller -invPtrLoc

opatch lsinventory -invPtrLoc

OR

1. Set the evironment variable ORAINST to the full path of oraInst.loc including the file name
itself:
ORAINST = /var/opt/oraInst.loc
export ORAINST

2. echo $ORAINST to verify it is set correctly.

You may get errors like those described in metalink note 384260.1 if the inventory is not set correctly:

Your ORACLE_HOME is /u01/applgld1/gld1ora/iAS
Your ORAINST is /tmp
Your JDK_HOME is /u01/applgld1/gld1ora/iAS/Apache/jdk
If these are correct, press Y to continue [N] => Y
Checking the inventory for Component oracle.apache.apache 1.3.19.0.0a
oracle.sysman.oii.oiii.OiiiInventoryDoesNotExistException: No install inventory
exists on this machine.
at
oracle.sysman.oii.oiii.OiiiInstallAreaControl.initAreaControl(OiiiInstallAreaControl.java:1669)
at
oracle.sysman.oii.oiic.OiicStandardInventorySession.initSession(OiicStandardInventorySession.java:257)
at
oracle.sysman.oii.oiic.OiicStandardInventorySession.initSession(OiicStandardInventorySession.java:216)
at
oracle.sysman.oii.oiic.OiicStandardInventorySession.initSession(OiicStandardInventorySession.java:165)
at Precheck.(Precheck.java:126)
at Precheck.main(Precheck.java:62)
Checking the inventory please wait for a while....

This may take few seconds......

java.lang.NullPointerException
at Precheck.getInventoryDetails(Precheck.java:172)
at Precheck.main(Precheck.java:71)
java.lang.NullPointerException
at Precheck.tokenize(Precheck.java:216)
at Precheck.main(Precheck.java:72)

Tuesday, November 6, 2007

Clicking on Notifications Summary logs you out

Another 11.5.10.2/10.2.0.3 post upgrade issue:

1. Login
2. Click on Purchasing Superuser responsibility
3. Click on Notification Summary

You are logged out and thrown back to the screen which asks for username and password and the URL looks like this:

http://justanexample.com:8000/OA_HTML/AppsLocalLogin.jsp?requestUrl=APPSHOMEPAGE&cancelUrl=http%3A%2F%2F11ioltp.justanexample.com%3A8068%2F
oa_servlets%2Foracle.apps.fnd.sso.AppsLogin&langCode=US&errText=Invalid+Function
.++Please+contact+the+System+Administrator.+Please+login+again.&username=SYSADMI
N&s1=0S7jLvK2s1HivPT87K8Pzg..

Metalink Notes 243026.1 and 186123.1 provide possible solutions. However we solved it by following metalink note 311802.1 which gives the cause and solution:

Cause

Workflow Notifications Funtion (FND_FNDWFNOT) was set improperly per Bug 3550358 for Application 11.5.10. Now, the system uses Oracle Framework to access the Worklist instead of the old form function calls.

Function: FNDWFNOT
User Function Name: Universal In-Box
Type: SSWA plsql function -> should be SSWA jsp function

HTML Call: wfa_html.worklist -> should be OA.jsp?akRegionCode=WF_SS_NOTIF_PAGE&akRegionApplicationId=0&OAHP=WF_SELF_SERVICE_APPLICATION&OASF
=WF_SS_NOTIFICATIONS

Solution

To implement the solution, please execute the following steps:
1. Check to see if script $FND_TOP/sql wfformfnc.sql already available.
Script wfformfnc.sql 115.2 updates references of form function calls FROM the old Worklist pages (pl/sql) TO the new Oracle Framework based Worklist.

2. Run script wfformfnc.sql
Please Note:
The script wfformfnc.sql does come with the following patches/releases:

Customers on 11.5.9 - the script is available:

Patch 3492743 (Post OWF.G ROLLUP 6) or higher.

Patch 3868138 (Post OWF.G ROLLUP 7) or higher.

Customers on 11.5.10 - the script is available:

Patch 3438354 (11i.ATG_PF.H) - Part of Base 11.5.10.

Monday, November 5, 2007

Natively compile PL/SQL code in Apps 11i with RDBMS 10.2.0.3

In the interop note 362203.1 for using RDBMS 10.2.x with 11i it is stated:

Natively compile PL/SQL code (optional)
If you are not on the Windows Itanium platform, you can choose to run Oracle Applications 11i PL/SQL database objects in natively compiled mode with Oracle Database 10g. See the "Compiling PL/SQL Code for Native Execution" section of Chapter 11 of Oracle Database PL/SQL User's Guide and Reference 10g Release 2 (10.2).

When modifying the initialization parameters pertaining to the PL/SQL native compilation, use document 216205.1, on OracleMetaLink as a guideline. You can set the plsql_native_library_subdir_count parameter as described in the PL/SQL user's guide. Create the associated subdirectories for the given plsql_native_library_dir and plsql_native_library_subdir_count parameters.

However if you check 10.1.0.4 interop note 282038.1, it recommends enabling plsql native code compilation for unix.

Natively compile PL/SQL code (optional)
If you are on a UNIX/Linux platform, you can choose to run Oracle Applications 11i PL/SQL database objects in natively compiled mode with Oracle Database 10g. See PL/SQL Native Compilation of Applications 11i on Oracle Database 10g Release 1 (10.1.0) on OracleMetaLink.
I am wondering why they made it optional in 10.2.x release.

In an SR raised with Oracle for a performance issue in Projects module, they have recommended that we set the following parameters:


Mandatory parameter current recommended



_system_trig_enabled (NOT FOUND) TRUE
o7_dictionary_accessibility TRUE FALSE
_sort_elimination_cost_ratio (NOT FOUND 5
_like_with_bind_as_equality (NOT FOUND TRUE
_fast_full_scan_enabled (NOT FOUND FALSE
_sqlexec_progression_cost (NOT FOUND 2147483647
plsql_optimize_level (NOT SET 2
plsql_code_type (NOT SET) NATIVE
plsql_native_library_dir (NOT SET)\ ?/prod11i/plsql_nativelib
_b_tree_bitmap_plans NOT FOUND FALSE
optimizer_secure_view_merging NOT SET FALSE



If you go through the 216205.1 note for init.ora parameters recommended for Apps 11i:
#########
#
# PL/SQL Parameters
#
# The following parameters are used to enable the PL/SQL global optimizer
# and specify the compilation type.
#

# Release 11i environments that use Oracle Database 10g can employ either
# interpreted or compiled (native) PL/SQL code. The default is interpreted.
# While native PL/SQL compilation can improve runtime performance, this may
# be at the expense of increased downtime
, because of the need to generate
# and compile the native shared libraries. If native compilation is to be used,
# the parameter plsql_native_library_dir should be set to the path of the
# directory that will be used to store the shared libraries, and that line
# and the plsql_native_library_subdir_count line below should be uncommented.
#
#########

plsql_optimize_level = 2 #MP
plsql_code_type = INTERPRETED
# plsql_native_library_dir = /prod11i/plsql_nativelib # Uncomment if using native PL/SQL
# plsql_native_library_subdir_count = 149
# Uncomment if using native PL/SQL

I am trying to understand how is downtime going to increase because of enabling native sql compilation. Will update this post once I have more information.

Friday, November 2, 2007

Identify dynamic and static init.ora parameters

To identify whether an init.ora parameter is static (changing it requires restarting database) or dynamic (can be changed without restarting database), let us take a look at the structure of the v$parameter2 view which is like v$parameter, but includes extra rows for long parameters. ORDINAL allows you to get the correct ordering of multiple VALUE columns for the same parameter.:

This view lists parameters and parameter values that are currently in effect for the session. Each list parameter value appears as a row in the view.

Presenting the list parameter values in this format enables you to quickly determine the values for a list parameter. For example, if a parameter value is "a,b" looking at V$PARAMETER does not tell you if the parameter has two values ("a" and "b") or one value ("a, b"). V$PARAMETER2 makes the distinction between the list parameter values clear.

Column Datatype Description
NUM NUMBER Parameter number
NAME VARCHAR2(80) Name of the parameter
TYPE NUMBER Parameter type:
  • 1 - Boolean

  • 2 - String

  • 3 - Integer

  • 4 - Parameter file

  • 5 - Reserved

  • 6 - Big integer

VALUE VARCHAR2(512) Parameter value for the session (if modified within the session); otherwise, the instance-wide parameter value
DISPLAY_VALUE VARCHAR2(512) Parameter value in a user-friendly format. For example, if the VALUE column shows the value 262144 for a big integer parameter, then the DISPLAY_VALUE column will show the value 256K.
ISDEFAULT VARCHAR2(6) Indicates whether the parameter is set to the default value (TRUE) or the parameter value was specified in the parameter file (FALSE)
ISSES_MODIFIABLE VARCHAR2(5) Indicates whether the parameter can be changed with ALTER SESSION (TRUE) or not (FALSE)
ISSYS_MODIFIABLE VARCHAR2(9) Indicates whether the parameter can be changed with ALTER SYSTEM and when the change takes effect:
  • IMMEDIATE - Parameter can be changed with ALTER SYSTEM regardless of the type of parameter file used to start the instance. The change takes effect immediately.

  • DEFERRED - Parameter can be changed with ALTER SYSTEM regardless of the type of parameter file used to start the instance. The change takes effect in subsequent sessions.

  • FALSE - Parameter cannot be changed with ALTER SYSTEM unless a server parameter file was used to start the instance. The change takes effect in subsequent instances.

ISINSTANCE_MODIFIABLE VARCHAR2(5) For parameters that can be changed with ALTER SYSTEM, indicates whether the value of the parameter can be different for every instance (TRUE) or whether the parameter must have the same value for all Real Application Clusters instances (FALSE). If the ISSYS_MODIFIABLE column is FALSE, then this column is always FALSE.
ISMODIFIED VARCHAR2(10) Indicates whether the parameter has been modified after instance startup:
  • MODIFIED - Parameter has been modified with ALTER SESSION

  • SYSTEM_MOD - Parameter has been modified with ALTER SYSTEM (which causes all the currently logged in sessions' values to be modified)

  • FALSE - Parameter has not been modified after instance startup

ISADJUSTED VARCHAR2(5) Indicates whether Oracle adjusted the input value to a more suitable value (for example, the parameter value should be prime, but the user input a non-prime number, so Oracle adjusted the value to the next prime number)
ISDEPRECATED VARCHAR2(5) Indicates whether the parameter has been deprecated (TRUE) or not (FALSE)
DESCRIPTION VARCHAR2(255) Description of the parameter
ORDINAL NUMBER Position (ordinal number) of the parameter value. Useful only for parameters whose values are lists of strings.
UPDATE_COMMENT VARCHAR2(255) Comments associated with the most recent update

If ISSES_MODIFIABLE parameter is true, the parameter can be changed on session level, and if issys_modifiable or isinstance_modifiable is true, the parameter can be changed on system level.

Improve imp and exp performance

orafaq.com has a very good information on imp and exp here. I am reproducing what they have written on improving imp and exp performance:

How can one improve Import/ Export performance?

EXPORT:
  • Set the BUFFER parameter to a high value (e.g. 2M)
  • Set the RECORDLENGTH parameter to a high value (e.g. 64K)
  • Stop unnecessary applications to free-up resources for your job.
  • If you run multiple export sessions, ensure they write to different physical disks.
  • DO NOT export to an NFS mounted filesystem. It will take forever.
IMPORT:
  • Create an indexfile so that you can create indexes AFTER you have imported data. Do this by setting INDEXFILE to a filename and then import. No data will be imported but a file containing index definitions will be created. You must edit this file afterwards and supply the passwords for the schemas on all CONNECT statements.
  • Place the file to be imported on a separate physical disk from the oracle data files
  • Increase DB_CACHE_SIZE (DB_BLOCK_BUFFERS prior to 9i) considerably in the init$SID.ora file
  • Set the LOG_BUFFER to a big value and restart oracle.
  • Stop redo log archiving if it is running (ALTER DATABASE NOARCHIVELOG;)
  • Create a BIG tablespace with a BIG rollback segment inside. Set all other rollback segments offline (except the SYSTEM rollback segment of course). The rollback segment must be as big as your biggest table (I think?)
  • Use COMMIT=N in the import parameter file if you can afford it
  • Use ANALYZE=N in the import parameter file to avoid time consuming ANALYZE statements
  • Remember to run the indexfile previously created

Export from 8i and import to 10g

Today, Sandeep asked me to confirm whether it is possible to import an 8i export dump file into 10g using data pump (impdp). As per metalink note 462261.1:

Regular export/import (exp/imp) utilities are different from DataPump expdp/impdp
utilities. The dump written by regular export/import (written with exp/imp utility) cannot be handled by DataPump import (expdp/impdp utility).

ERROR MESSAGES:

ORA-39000: bad dump file specification
Cause: The user specified a dump file that could not be used in the current job.
Action: Specify a dump file that is usable for the job.

ORA-31640: unable to open dump file "string" for read
Cause: Import was unable to open the export file for reading.
Action: Take appropriate action to restore the device.

From the error messages it is clear that Datapump is not able to read the dump file.

SOLUTION:

Use the regular import (imp utility - not the 10g IMDP) version 10g (10.2) to read the export dump written by exp utility version 8i.

Reference:http://download.oracle.com/docs/cd/B28359_01/server.111/b28319/dp_overview.htm#i1009203

Note:
Dump files generated by the Data Pump Export utility are not compatible with dump files generated by the original Export utility. Therefore, files generated by the original Export (exp) utility cannot be imported with the Data Pump Import (impdp) utility.

You could also refer to metalink note 132904.1 which has the Compatibility Matrix for Export & Import Between Different Oracle Versions.

Thursday, November 1, 2007

sudo (superuser do)

Sudo (superuser do) allows a system administrator to give certain users (or groups of users) the ability to run some (or all) commands as root while logging all commands and arguments.

In Solaris you don't find sudo (though its available on sunfreeware.com) because we have RBAC. For details on RBAC see Ben Rockwood's blog entry: http://www.cuddletech.com/blog/pivot/entry.php?id=362

Root privilege is required during Oracle RDBMS installation for running root.sh. Refer to Metalink Note 413855.1 Can root.sh be run as sudo. The other time when root access is required is when you are installing a fresh instance of E-Business Suite. On unix, root user starts the rapidwiz (Rapid Install) process which installs E-Business Suite.