Hi,

In 10gR2 RAC on IBM AIX we had a database when starting the database in nomount stage we got the following error

SQL> startup nomount
ORA-27504: IPC error creating OSD context
ORA-27300: OS system dependent operation:sendmsg failed with status: 59
ORA-27301: OS failure message: Message too long
ORA-27302: failure occurred at: sskgxpsnd1

However when the root cause of error was improper tcp udp parameter settings which is required in an RAC environment for cache fusion.

The following is the required settings for tcp-udp parameter for RAC environment on IBM-AIX systems

Using the following commands change the values of the following parameters(in AIX):

# no -o tcp_sendspace=262144
# no -o tcp_recvspace=262144
# no -o udp_sendspace=65536
# no -o udp_recvspace=262144

Also the parameter rfc1323 needs to be set to 1 for any TCP/ UDP parameters settings of
over 64K.

no -o rfc1323=1
Adding these entries to /etc/rc.net will ensure that the parameter take effect on every reboot.

Also, the following are the appropriate ulimit settings for RAC environment on IBM AIX systems

As a root user, add the following entries for the root and Oracle users:

root:
fsize = -1
core = 2097151
cpu = -1
data = -1
rss = -1
stack = -1
nofiles = -1

oracle:
fsize = -1
core = 2097151
cpu = -1
data = -1
rss = -1
stack = -1
nofiles = -1

This needs to be done on all nodes of the cluster. A server reboot might be necessary to activate updated limits. After you modify the settings, the “ulimit –a” command should display the following:

# ulimit –a
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) 2097152
memory(kbytes) unlimited
coredump(blocks) 2097151
nofiles(descriptors) unlimited

Verify the same for the Oracle user. Next, you need to increase Oracle user processes to 8192. You can increase the processes for the Oracle user via the “smit” utility on AIX-based servers.

 

Hi ,

Prior to creating the Logical Standby please ensure the following:

1) Determine if the primary database contains datatypes or tables that are not
supported by a logical standby database.

SQL> select distinct owner,table_name from dba_logstdby_unsupported order by owner,table_name;

to view the column names and datatypes for one of the tables listed in previous query.

SQL> select column_name,data_type from dba_logstdby_unsupported where owner=’ ‘ and table_name=’
‘;

2) Ensure that table rows in the primary database can be uniquely identified.

to find the tables which do not have unique key use the following query.

SQL> select owner,table_name,bad_column from dba_logstdby_not_unique where table_name not in ( select table_name from dba_logstdby_unsupported);

3) Ensure that the primary database is in ARCHIVELOG mode and that archiving is enabled.

4. Ensure supplemental logging is enabled on the primary database. To see if supplemental logging is enabled, start a SQL session and query the
V$DATABASE fixed view.

For example, enter:

SQL> SELECT SUPPLEMENTAL_LOG_DATA_PK, SUPPLEMENTAL_LOG_DATA_UI FROM V$DATABASE;

SUP SUP
— —
YES YES

If supplemental logging is not enabled, execute the following statements:

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

SQL> ALTER SYSTEM SWITCH LOGFILE;

5. Ensure LOG_PARALLELISM init.ora parameter is set to 1 (default value).

 

Hi,

1. Verify that the primary database is setup to remotely archive by checking the parameter log_archive_dest_2=’SERVICE=tnsname alias lgwr’;

2. Verify that remote archiving to the logical standby is successful.

Use the following query to determine the error

SQL> SELECT DEST_ID “ID”,STATUS “DB_status”,DESTINATION “Archive_dest”,ERROR “Error” FROM V$ARCHIVE_DEST;

When there is no error output is as shown

ID DB_STATUS ARCHIVE_DEST ERROR
————————————————————————-
1 VALID LOCATION=c:oraclearchive
2 VALID SERVICE=stby lgwr

3. Verify that archive logs are being created in the standby_archive_dest.

SQL> show parameter standby_archive_dest;

4. Verify that log apply services on the standby are currently running.

SQL> SELECT PID, TYPE, STATUS, HIGH_SCN FROM V$LOGSTDBY;

When querying the V$LOGSTDBY view, pay special attention to the HIGH_SCN
column. This is an activity indicator. As long as it is changing each time
you query the V$LOGSTDBY view, progress is being made. The STATUS column
gives a text description of the current activity.

If the query against V$LOGSTDBY returns no rows then logical apply is not running. Start logical apply by issuing the following statement:

SQL> alter database start logical standby apply;

If the query against V$LOGSTDBY continues to return no rows then proceed to step 5.

5. To determine if there is an archive gap, query the DBA_LOGSTDBY_LOG view on the logical standby database.

SQL> SELECT SUBSTR(FILE_NAME,1,100) FILE_NAME, SUBSTR(SEQUENCE#,1,10) “SEQ#”,
FIRST_CHANGE#, NEXT_CHANGE#, TO_CHAR(TIMESTAMP, ‘HH:MI:SS’) TIMESTAMP,
DICT_BEGIN BEG, DICT_END END, SUBSTR(THREAD#,1,4) “THR#”FROM DBA_LOGSTDBY_LOG ORDER BY SEQUENCE#;

Copy the missing logs to the logical standby system and register them using
the ALTER DATABASE REGISTER LOGICAL LOGFILE statement on your logical standby
database. For example:

SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE ‘/u01/oradata/arch/1_57.arc’;

6. Determine is logical apply is receiving errors while performing apply operations.

SQL> SELECT XIDUSN, XIDSLT, XIDSQN, STATUS, STATUS_CODE FROM DBA_LOGSTDBY_EVENTS WHERE EVENT_TIME = (SELECT MAX(EVENT_TIME) FROM DBA_LOGSTDBY_EVENTS);

7. Query DBA_LOGSTDBY_PROGRESS to verify that log apply services is progressing.

The DBA_LOGSTDBY_PROGRESS view describes the progress of SQL apply operations on the logical standby databases. For example:

SQL> SELECT APPLIED_SCN, APPLIED_TIME, READ_SCN, READ_TIME, NEWEST_SCN, NEWEST_TIME FROM DBA_LOGSTDBY_PROGRESS;

8. Verify that the table that is not receiving rows is not listed in the DBA_LOGSTDBY_UNSUPPORTED.

 

Hi All,

Generally when Oracle dataguard is configured it is necessary to check progress of your database so as to make sure that archive logs are getting shipped to physical standby.

In order to check the progress of the dataguard you can use the following queries.

From Primary Destination.

SQL> select status,error from gv$archive_dest where dest_id=2; (where dest_id =2 is the remote archive log destination for physical standby)

STATUS ERROR
———————————————————————————–
VALID

From The Standby

Use the following queries.

SQL> select thread#,sequence#,archived,applied from v$archived_log ;

Thread# sequence# archived applied
————————————–
1 771 YES YES
1 772 YES YES
1 773 YES YES
1 774 YES YES
1 775 YES YES
1 776 YES YES
1 777 YES YES

To determine the max archive sequence applied on the physical standby

select max(sequence#) from v$archived_log where applied=’YES’;

max(sequence#)
————————–
777

We can also use v$archived_log view at the primary destination and above query by giving dest_id=2 in the where clause but v$archived_log view at the primary is not alwayss updated for dest_id =2 due to BUG with oracle database so it is better to use this view at the standby.

Also,

to enable the dataguard or to defer the datagauard use the following query.

At primary

SQL> alter system set log_archive_dest_state_2=enable;

system altered.

To startup the standby databaase.

SQL> startup nomount;

SQL> alter database mount stanby database;

SQL> alter database recover managed standby database disconnect from session;

To open in read only mode.

SQL> alter database recover managed standby database cancel;

SQL> alter database open read only;

 

Hi All,

Many a times due to corruption of data blocks or associated Index, the execution of query on corrupt data blocks gives Ora-600[12700] which is being logged in alert log .

The follwing is excerpt of alert log

Sat May 5 15:03:12 2007
ARC1: Beginning to archive log 3 thread 1 sequence 49943
Creating archive destination LOG_ARCHIVE_DEST_1: ‘/archive/oradata/ODSORA/1_49943.arc’
ARC1: Completed archiving log 3 thread 1 sequence 49943
Sat May 5 15:35:49 2007
Errors in file /oracle/dbs/admin/ODSORA/bdump/odsora_s003_27559.trc:
ORA-00600: internal error code, arguments: [12700], [90646], [71560692], [9], [0], [79], [], []
Sat May 5 15:40:25 2007
Errors in file /oracle/dbs/admin/ODSORA/bdump/odsora_s001_2441.trc:
ORA-00600: internal error code, arguments: [12700], [90646], [71560692], [9], [0], [79], [], []
Sat May 5 15:55:32 2007
Thread 1 advanced to log sequence 49945
Sat May 5 15:55:32 2007
Current log# 5 seq# 49945 mem# 0: /oracle/dbs/oradata/ODSORA/redo05a.log
Current log# 5 seq# 49945 mem# 1: /u20/oradata/ODSORA/redo05b.log
Sat May 5 15:55:32 2007
ARC0: Evaluating archive log 4 thread 1 sequence 49944
Sat May 5 15:55:32 2007
ARC0: Beginning to archive log 4 thread 1 sequence 49944

The following is the procedure to diagnose the error Ora-600[12700]

1) Create the following procedure as “SYS” user

CREATE OR REPLACE PROCEDURE oerr12700( a number , b number, c number) IS
un varchar2(99);tn varchar2(99); trowid varchar2(99);
ind_name varchar2(99); ind_col varchar2(99);
nfile number; nblock number; nrow number;
fname VARCHAR2(513) ;
dbs number ;
dbs_x varchar2(129);
x number;

BEGIN

x:= dbms_utility.get_parameter_value(‘db_block_size’,dbs,dbs_x);

nfile:=dbms_utility.data_block_address_file(b);
select FILE_NAME into fname from dba_data_files
where RELATIVE_FNO = nfile ;

nblock:=dbms_utility.data_block_address_block(b);
select NAME,dba_users.username into tn,un from obj$,dba_users where dataobj#=a
and dba_users.user_id=obj$.owner# ;

trowid:= dbms_rowid.rowid_create(1,a,nfile,nblock,c);

dbms_output.put_line(‘ ORA-600 [12700] ['||a||'],['||b||'],['||c||']‘);
dbms_output.put_line(‘————————————————–’);
dbms_output.put_line(‘there is an index pointing to a row in ‘||un||’.'||tn);
dbms_output.put_line(‘row is slot ‘||c||’ in file ‘||nfile||’ block ‘||nblock);
dbms_output.put_line(‘one index entry is pointing to ROWID=”’|| trowid||””);
dbms_output.put_line(‘————————————————–’);
dbms_output.put_line(‘You may want to check the integrity of ‘||un||’.'||tn);
dbms_output.put_line(‘executing :’);
dbms_output.put_line(‘dbv file=’||fname||’
blocksize=’||dbs||’ start=’|| nblock||’ end=’||nblock);
dbms_output.put_line(‘————————————————–’);


dbms_output.put_line(‘IF dbv does not show any corruption, you can try to’);
dbms_output.put_line(‘find the corrupted indexes using the queries proposed’);
dbms_output.put_line(‘by the procedure oerr12700diag(‘||a||’,'||b||’,'||c||’)');
dbms_output.put_line(‘——————————————————-’);
END;
/

2) Then execute the procedure as follows

SQL> set serveroutput on
SQL> execute oerr12700( 90646, 71560692, 9);

The output of the above procedure execution gives the following result

SQL> execute oerr12700( 90646, 71560692, 9);
ORA-600 [12700] [90646],[71560692],[9]
————————————————–
there is an index pointing to a row in PORTAL.PREMIUM_TRANSACTION_DATA
row is slot 9 in file 17 block 257524
one index entry is pointing to ROWID=’AAAWIWAARAAA+30AAJ’
————————————————–
You may want to check the integrity of PORTAL.PREMIUM_TRANSACTION_DATA
executing :
dbv file=/u03/oradata/portals.dbf
blocksize=8192 start=257524 end=257524
————————————————–
IF dbv does not show any corruption, you can try to
find the corrupted indexes using the queries proposed
by the procedure oerr12700diag(90646,71560692,9)
——————————————————-

PL/SQL procedure successfully completed.

Now, To verify whether data blocks is corrupted or corruption lies in index use the dbv utility as shown

dbv file=/u03/oradata/portals.dbf blocksize=8192 start=257524 end=257524;

If there is no data block corruption the output of the dbv utility will as shown:

bash-2.05$ dbv file=/u03/oradata/portals.dbf blocksize=8192 start=257524 end=257524;

DBVERIFY: Release 9.2.0.4.0 – Production on Mon May 7 13:23:42 2007

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

DBVERIFY – Verification starting : FILE = /u03/oradata/portals.dbf

DBVERIFY – Verification complete

Total Pages Examined : 1
Total Pages Processed (Data) : 1
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing (Index): 0
Total Pages Processed (Other): 0
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 0
Total Pages Marked Corrupt : 0
Total Pages Influx : 0

The above confirms that data blocks are not corrupted and hence we to verify the index corruption as shown:

1) create the following procedure as SYS use

SQL> CREATE OR REPLACE PROCEDURE oerr12700diag( a number , b number, c number) IS
un varchar2(99);tn varchar2(99); trowid varchar2(99);
ind_name varchar2(99); ind_col varchar2(99);
nfile number; nblock number; nrow number;

cursor pindexes(towner varchar2, tname varchar2) is
select C.INDEX_NAME,COLUMN_NAME from dba_ind_columns C, dba_indexes I
where c.INDEX_NAME=i.INDEX_NAME
and I.INDEX_TYPE <> ‘DOMAIN’
and C.TABLE_OWNER=towner and C.TABLE_NAME=tname
and C.COLUMN_POSITION=1 ;

rpindexes pindexes%rowtype;

BEGIN
nfile:=dbms_utility.data_block_address_file(b);
nblock:=dbms_utility.data_block_address_block(b);
select NAME,dba_users.username into tn,un from obj$,dba_users where dataobj#=a
and dba_users.user_id=obj$.owner# ;

trowid:= dbms_rowid.rowid_create(1,a,nfile,nblock,c);

dbms_output.put_line(‘————————————————–’);
dbms_output.put_line(‘IF dbv did not show any corruption, you can try to’);
dbms_output.put_line(‘find the corrupted indexes using following queries:’);
dbms_output.put_line(‘——————————————————-’);
dbms_output.put_line(‘If a query returns “no rows selected” index is sane’);
dbms_output.put_line(‘If a query returns ‘||trowid||’ index is corrupted’);
dbms_output.put_line(‘…………………………………………..’);

dbms_output.put_line(‘.’);
dbms_output.put_line(‘To test ‘||un||’.'||tn||’ indexes ‘) ;
dbms_output.put_line(‘.’);
for rpindexes in pindexes(un,tn) loop
dbms_output.put_line(‘.’);
dbms_output.put_line(‘To test INDEX ‘||rpindexes.INDEX_NAME||’ you run :’ );
dbms_output.put_line(‘.’);
dbms_output.put_line(‘select rowid “‘||rpindexes.INDEX_NAME||’ corrupted!”
from ‘);
dbms_output.put_line(
‘(SELECT /*+ INDEX_FFS(‘||tn||’,'||rpindexes.INDEX_NAME||’) */ ‘);
dbms_output.put_line(
rpindexes.COLUMN_NAME||’,rowid from ‘||
un||’.'||tn||’ where ‘||
rpindexes.COLUMN_NAME||’='||rpindexes.COLUMN_NAME||’) ‘ );
dbms_output.put_line( ‘where rowid=”’||trowid||”’;'||’ ‘);
end loop ;
END;
/

2) execute the procedure as note the output

SQL> set serveroutput on
SQL> execute oerr12700diag( 90646, 71560692, 9);

————————————————–
IF dbv did not show any corruption, you can try to
find the corrupted indexes using following queries:
——————————————————-
If a query returns “no rows selected” index is sane
If a query returns AAAWIWAARAAA+30AAJ index is corrupted
…………………………………………..
.
To test PORTAL.PREMIUM_TRANSACTION_DATA indexes
.
.
To test INDEX PREMIUM_TRANSACTION_DATA_PK you run :
.
select rowid “PREMIUM_TRANSACTION_DATA_PK corrupted!”
from
(SELECT /*+ INDEX_FFS(PREMIUM_TRANSACTION_DATA,PREMIUM_TRANSACTION_DATA_PK) */
CUST_ID,rowid from PORTAL.PREMIUM_TRANSACTION_DATA where CUST_ID=CUST_ID)
where rowid=’AAAWIWAARAAA+30AAJ’;

PL/SQL procedure successfully completed.

Now, we execute the following query

SQL> select rowid “PREMIUM_TRANSACTION_DATA_PK corrupted!” from
(SELECT /*+ INDEX_FFS(PREMIUM_TRANSACTION_DATA,PREMIUM_TRANSACTION_DATA_PK) */
CUST_ID,rowid from PORTAL.PREMIUM_TRANSACTION_DATA where CUST_ID=CUST_ID) where rowid=’AAAWIWAARAAA+30AAJ’;

The output to above query is

PREMIUM_TRANSACTION_DATA_PK corrupted!
——————————————————-
AAAWIWAARAAA+30AAJ

then it mean that index PREMIUM_TRANSACTION_DATA_PK is corrupted and hence we will have to drop and recreate the index PREMIUM_TRANSACTION_DATA_PK to avoid the error.

If there is any data block corruption them you have raise an SR with Oracle Support and follow appropriate steps.

 

Hi all,

The support team members or even for a DBA who are planning to install oracle on their system must first ensure whether oracle is previously installed in the system because different versions of oracle might conflict with each other.

As per OFA structure proposed by Oracle.
It is essential to have a standard pattern where in ORACLE_BASE contains all the oracle installation of different version.In other words each oracle version must be installed in a seperate oracle home and all the oracle homes must reside in oracle base directory.

So prior performing an installation it is necessary to ensure which oracle version is previously installed on the system.

In Windows systems,
The services panel located in control panel / adminstrative tools gives us the indication or Oracle Installations.
If It contains any serive with the name Oracle then it can be assumed that oracle is installed .
Further to dtermine the version go to start–>programs–> Oracle Instllation products , this will help u determine the oracle version being installed

In Unix systems,

For any Oracle installation on Unix systems there is directory named ORACLE created in the mount point /var/opt imside /var/opt/oracle there is a file called oraInst.loc which gives the location and owner of oraInventory.
The existance of oraInventory indicates the presence of oracle. Further checking the instrallation logs in oraInventory can help u determine the version of oracle Installed.

 

Hi all,

Many a times it is required to start the database automatically when the system is rebooted.This is becuase most system administartors are not aware of procedure to start the database.Hence it is required that database is restarted automatically on reboot.

For WINDOWS BASED SYSTEMS this can be done as explained below.

In windows for every database that is created there is service availbale to access it. To view that services go to control panel and click on the administartative tools and then click on services Icon.

The Database service are of the type ORACLEService .

In order for that database to start automatically the service should be set to start AUTO.This can be done by right clicking on the services and selecting AUTO.

For Unix Based Systems

For unix based systems like Sun Solaris,Linux etc during the installation of oracle a directory is created in mount point /var/opt called as oracle and in the oracle directory there are 2 files viz oraInst.loc and oratab .

The oraInst.loc specifies the location and owner of oraInventory while oratab is used to specify the list of the database that should be started automatically on reboot.

In the oratab file the database which is to be started automatically is specified in the format

::Y (y indicates to start the database auto)
(n indicates to start the database manual and not auto)

 

Hi all,

Many a times it is required to relink oracle binaries which are nothing but oracle executables.There are number of cases where solution given by oracle support is relinking of oracle executables.

The following is method to relink the oracle executables.

For Unix system

set $ORACLE_HOME, $ORACLE_BASE, $ORACLE_SID and also the $PATH

and the go into $ORACLE_HOME/bin and then fire the command relink all or relink oracle.

$ORACLE_HOME/bin/relink all;

OR

$ORACLE_HOME/bin/relink oracle;

 

PERFORMING A CLIENT-SIDE SQL*NET TRACE

(1) Open the SQLNET.ORA file typically found in the following location:

ORACLE_BASEORACLE_HOMENetworkAdmin (7.3.x, 8.1.x or later)
ORACLE_BASEORACLE_HOMENet80Admin (8.0.x)

(2) Add the following parameters at the end of the file:

#CLIENT-SIDE SQL*NET TRACE PARAMETERS
#====================================
TRACE_UNIQUE_CLIENT = ON
TRACE_LEVEL_CLIENT = 16
TRACE_DIRECTORY_CLIENT = C:temp
TRACE_FILE_CLIENT = SQLNetTrace
TRACE_TIMESTAMP_CLIENT = ON
#TRACE_FILELEN_CLIENT = 2048
#TRACE_FILENO_CLIENT = 2

Parameters prefixed with a “#” are interpreted as comments and will not
affect tracing.

If you want to change the location where the trace file will be saved
modify the following two parameters:

(a) TRACE_DIRECTORY_CLIENT

Set this parameter to the folder where you want the trace file to be
saved.

WARNING: Do not end the path with a “”. This is not necessary and may
prevent the trace file from being generated.

(b) TRACE_FILE_CLIENT

Set this parameter to the filename of the trace file that will be
created. The actual trace filename may contain additional information
appended to the end of the filename such as

SQLNetTrace_ _<#>.trc

where is the application’s process id while it was running and
<#> distinguishes different client connections established from the
same process id (or session) to the database. This occurs since the
parameter TRACE_UNIQUE_CLIENT is set to ON.

The parameter TRACE_LEVEL_CLIENT=16 ensures that maximum trace
information is logged.

NOTE: If you think the size of the trace file will exceed the free space
on the drive where TRACE_DIRECTORY_CLIENT is saving the file, then
uncomment the last two parameters which will have the following
affect:

(a) TRACE_FILELEN_CLIENT – will create trace files of the size
specified in kilobytes (KB)

(b) TRACE_FILENO_CLIENT – will write to multiple trace files up
to the maximum size specified by
TRACE_FILELEN_CLIENT and then cycle
through the files again overwriting
previously written trace information

The default values specified above for these two paramters will
cycle the trace output between two trace files with a maximum size
of 2MB each.

Once you have made the appropriate changes to the SQLNET.ORA file be
sure to SAVE the file.

NOTE: If the application you are tracing is running from inside a web
server environment, such as Microsoft’s Internet Information
Server (IIS), you will need to RESTART THE WEB SERVER at this
point in order for these changes to be seen by the web server.
This is due to the fact that web servers may cache the SQLNET.ORA
file.

(3) Immediately run the application that uses one of the programmatic
interfaces and generate the error.

(4) Immediately go back to the SQLNET.ORA file and turn tracing off by using
any of the following methods:

(a) Modify the following parameter:

TRACE_LEVEL_CLIENT = OFF

(b) Remove all the tracing parameters you added to this file or

(c) Comment all the tracing parameters out by placing the “#”
character before each one.

Save the changes to the SQLNET.ORA file.

(5) Retrieve the “.trc” file(s) from the location “C:tempSQLNetTrace” or
wherever you have saved the file(s) based on what was specified in the
parameters TRACE_DIRECTORY_CLIENT and TRACE_FILE_CLIENT. If you did not
specify a location please check the location of the directory where the
application was run from or search your hard drive for all “.trc” files.
Check the size of the “.trc” file(s) and make sure they do not have a
size of 0 bytes but do have the current time and date. Zip the file up
and upload it to support.

 

Hi all,

Many a times, DBCA which is a utility for the creation of database fails due to number of reasons.In such cases we need to create the database manually by performing all the steps which is automatically performed. Also Manual creation of database gives a better control over no. of parameters if properly understood.

The steps for manual creation of database are:

1) First create a init pfile to suit your requirements by setting appropriate parameters like db_name,instance_name,control_files,background_dump_dest etc…You can use the sample parameter file available %ORACLE_HOME%/database in windows or $ORACLE_HOME/database or you can use the pfile of existing database and modify the parameters according.

2) Create a password file for the sysdba to login to the instance from the command prompt

$ orapwd file=file path for password file generally at $ORACLE_HOME/dbs/PWD.ora password=password for sys entries=no. of members with sysdba priviledge

3) Start SQL*PLUS and login as sysdba with the same password as defined in orapwd.

4) Startup the instance in nomount mode using pfile defined step 1

5) Execute the create database script to create the database as shown

CREATE DATABASE
CONTROLFILE REUSE
LOGFILE
GROUP 1 (‘loc for logfile group 1 member 1 ‘,’loc for logfile group 1 member 2′) SIZE 50M,
GROUP 2 (‘loc for logfile group 2 member 1 ‘,’loc for logfile group 2 member 2′) SIZE 50M
DATAFILE ‘loc of datafiles/system01.dbf’ size 50M AUTOEXTEND ON NEXT 30M MAXSIZE 150M
MAXLOGFILES 100
MAXDATAFILES 100
CHARACTERSET US7ASCII
EXIT;

The output of the script should be Database created. Incase of error s check the alert_log at the location specified BACKGROUND_DUMP_DEST to find the error

6) If database creation is sucessful mount the database at the SQL prompt as shown

SQL> alter database mount;

SQL> alter database open;

7) Now u have to create tablespace for data,temp segments and undo segments when database is sucessfullly opened.

8 ) Finally you have to run catalog.sql script followed by cataproc.sql to create data dictionary views and to create oracle supplied packages and procedures as shown

SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql

This may tke some time to execute and complete

SQL>@$ORACLE_HOME/rdbms/admin/catproc.sql

This will also take time.