Thursday, 15 January 2009

Oracle: DBCA template reverse engineering problem solved


Silent create template
dbca -createTemplateFromDB -sourceDB lontestdb02:1521:NEWDEV4 -templateName ZPFL1 -sysDBAUserName sys -sysDBAPassword password -maintainFileLocations false -silent


Problem
When using the DBCA to create a RAC database when selecting next on the node selection screen are
receiving the following error:

java.security.AccessControlException: access denied (java.sql.SQLPermission setLog)
at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
at
java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.sql.DriverManager.setLogStream(DriverManager.java:392)

Cause

The problem is that the user (oracle user) which use the DBCA does not have the permission to use the java packages for the RAC environment across the nodes. To create a file which set the permissions it will be checked and used to perform the action needed to be able to create the instances across the nodes

Fix

Create the file:

.java.policy on each node in the Oracle Users Home directory.

containing the following code.

grant {
permission java.security.AllPermission;
};

When done, changed the permission to 770 for the .java.policy file for the files/nodes
Start the DBCA again.

Template created in $ORACLE_HOME/dbca

1 comments:

carlos said...

Excellent article!! I applied this solution not for a RAC, but for a single instance database... and it worked like a charm... Thanks!!!