Saturday, November 24, 2012

ORA-04031: unable to allocate 4032 bytes of shared memory ("shared pool","oracle/aurora/rdbms/DbmsJavaSYS","joxlod: in ehe","ioc_allocate_pal")


(Oracle 8.1.7 on Windows 2000 cluster)


In  my case,  java_pool_size was 32KB. When increased to 50MB, solved the problem.

***********************************************************************


Doc ID :  Note:19837.1

Error:  ORA 4031 Text:   unable to allocate %s bytes of shared memory (%s,%s,%s)

Cause:  More shared memory is needed than was allocated in the shared   pool.

Action: Either use the dbms_shared_pool package to pin large packages,  reduce your use of shared memory, or increase the amount of  available shared memory by increasing the value of the init.ora parameter "shared_pool_size".

 *** Important: The notes below are for experienced users - See [NOTE:22080.1]

Explanation: Over a period of time the free memory in the shared pool may become fragmented. When any attempt to allocate a large piece of memory in the shared pool fails Oracle first flushes all objects that are not currently in use from the pool and the resulting free memory chunks are merged. If there is still not a single chunk large enough to satisfy the request ORA 4031 is returned.

Note that in 7.3.4 onwards there are 2 parameters to help control this problem:
SHARED_POOL_RESERVED_SIZE and  SHARED_POOL_RESERVED_MIN_ALLOC

In Oracle 8.1.X if trying to use Java functionality and an ORA-4031 may occur.  To resolve this problem increase the init.ora parameter  Java_Pool_Size.

Monday, November 19, 2012

Starting sshd: Privilege separation user does not exist

Error message 'Starting sshd: Privilege separation user sshd does not exist' is received on restarting the 'sshd' service or connecting to the other computer using ssh. It indicates that the user ‘sshd’ does not exist at all. To fix the sshd privileges issue, you need to add the ‘sshd’ user on the server.

1. Add the below line in /etc/group
    sshd:x:74:
     
2. Add the below line in /etc/passwd
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

3. Resart the sshd service
    #  service sshd restart

Another less secure option  is to make UsePrivilegeSeparation yes to UsePrivilegeSeparation no in the file /etc/ssh/sshd_config and restart the sshd service.

Sunday, March 25, 2012

Oracle (10gR2) RAC on Itanium 64 bit System and RHEL 4 Update 4


Operating System        :  RHEL 4 U 6
Architecture                :  ia64 (Itanium 64 bit System)
RAM                          :  8GB
/oracle                         :  Oracle BASE
/database                     :  Oracle database – OCFS2   (/dev/mapper/disk1p1)
/archives                      :  Archives – OCFS2               (/dev/mapper/disk2p1)
db_name                     : hms
single instance              : hms
multiple instance          : hms1, hms2

First set up Oracle DB in single instance mode and then to Multiple instance.

1). /etc/hosts                                        (Node 1 & 2)

127.0.0.1                     localhost.localdomain             localhost
172.17.2.165               rh-rac-srv1.hq.mh                   rh-rac-srv1
172.17.2.166               rh-rac-srv2.hq.mh                   rh-rac-srv2
172.17.2.167               rh-rac-vip1.hq.mh                   rh-rac-vip1
172.17.2.168                          rh-rac-vip2.hq.mh                   rh-rac-vip2
10.10.10.1                   rh-rac-prv1.hq.mh                   rh-rac-prv1
10.10.10.2                   rh-rac-prv2.hq.mh                   rh-rac-prv2

2). /etc/sysconfig/network                   (Node 1)

NETWORKING=yes
HOSTNAME=rh-rac-srv1

3). /etc/sysconfig/network                   (Node 2)

NETWORKING=yes
HOSTNAME=rh-rac-srv2

# hostname                                          (Check)
rh-rac-srv1

4).  Create oracle users                        (Node 1 & 2)

#  groupadd –g 400 dba
#  useradd –g 400 –u 400 oracle
#  passwd oracle

5). Set environment variables in .bash_profile            (Node 1 & 2)

The commented environment variables should be set only after oracle installation, before configuring the database…

ORACLE_BASE=/oracle
#CRS_HOME=$ORACLE_BASE/product/10.2.0/crs
#RDBMS_HOME=$ORACLE_BASE/product/10.2.0/db_1
#ORACLE_HOME=$RDBMS_HOME
#PATH=$PATH:$HOME/bin:$RDBMS_HOME/bin:$CRS_HOME/bin
#ORACLE_SID=hms1 ( hms2 in Node 2)
#TNS_ADMIN=$RDBMS_HOME/network/admin
#NLS_LANG='american_america.we8iso8859p1'

#LD_LIBRARY_PATH=$ORACLE_HOME/lib

export ORACLE_BASE
#export RDBMS_HOME
#export ORACLE_HOME
#export CRS_HOME
#export LD_LIBRARY_PATH
#export ORACLE_SID
export PATH
#export TNS_ADMIN
#export NLS_LANG
unset USERNAME
umask 022

6). # chown oracle.dba /oracle –R                  (Node 1 & 2)

7). Install rpms                                                (Node 1 & 2)

a.       ocfs2
b.      ocfs2tools
c.       osfs2console
d.      ocfs2devel

8). Configure ssh (Node 1 & 2) – The important thing is the same node should be connected without password after configuring ssh for both root and oracle.. Example from rh-rac-srv1

$ ssh rh-rac-srv1

This should work without password…

9). #  ocfs2console
           
           » Cluster » Configure Nodes

Note : If you get the error (bug) : ‘o2cb_ctl : Unable to access cluster service while creating node’, do the following
           
# /etc/init.d/o2cb offline ocfs2
# /etc/init.d/o2cb unload
# rm /etc/ocfs2/cluster.conf
# /rm –rf /config

Repeat step 9 in node 2

# ocfs2console » Cluster » Configure Nodes » Add

            rh-rac-srv1       172.17.2.165   » Apply
            rh-rac-srv2       172.17.2.166   » Apply

Check /etc/ocfs2/cluster.conf

10). # /etc/init.d/o2cb  enable

11). # mkdir /database
       # mkdir /archives

12). # mkfs.ocfs2        -b 4K   -C 32K -N 4 –L /database /dev/mapper/disk1p1
       # mkfs.ocfs2        -b 4K   -C 32K -N 4 –L /archives /dev/mapper/disk2p1

Note : If you get the error : ocfs2-inititalize-super : 1455 Error : Couldn't mount because of   unsupported optional feature (50), use --fs-feature-level=max-compat option...

# mkfs.ocfs2 -b 4K   -C 32K -N 4 –L /database /dev/mapper/disk1p1
                                                                                        --fs-feature-level=max-compat
# mkfs.ocfs2  -b 4K   -C 32K -N 4 –L /archives /dev/mapper/disk2p1
                                                                                        --fs-feature-level=max-compat

13). # mount –t ocfs2 /dev/mapper/disk1p1   /database
       # mount –t ocfs2 /dev/mapper/disk2p1   /archives

If everything is OK

14). # umount /database
       # umount /archives

15). # mount –t ocfs2 –o datavolume,nointr /dev/mapper/disk1p1 /database
       # mount –t ocfs2 –o datavolume,nointr /dev/mapper/disk2p1 /archieves

16). Add the below 2 lines in /etc/fstab          (Node 1 & 2)

/dev/mapper/disk1p1   /database         ocfs2   -netdev,datavolume,nointr      0 0
/dev/mapper/disk2p1   /archives          ocfs2   -netdev,datavolume,nointr      0 0

17). # chkconfig --add osfs2
       # chkconfig --add o2cb

18). # /etc/init.d/o2cb configure » y » » ocfs2 » » 

19). # mkdir /database/oracrs
       # mkkdir /database/hms

20). Add to /etc/sysctl.conf

net.core.rmem_default = 534288
net.core.rmem_max = 534288
net.core.wmem_default = 534288
net.core.wmem_max = 534288
kernel.sysrq = 0
kernel.shmmax = 5368709120            (Out of 8 GB RAM, 5 GB is allocated)
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 300 45000 300 150
fs.file-max = 65536

21).  Add to /etc/limits.conf

            oracle           hard        nproc           16384
oracle           soft         nproc           16384
oracle           hard        nofile          65536
oracle           soft         nofile          65536
oracle           soft         memlock    3145728
oracle           hard        memlock    3145728
 
22). Install Oracle Clusterware 10.2.0.1 in a separate home. (/oracle/product/10.2.0/crs)

If you get : ‘An unexpected error has been detected by HotSpot Virtual Machine’ error (bug) , install Oracle patch 5390722 (JDK & JRE) in separate home, first. And then install Oracle Clusterware with –jreLoc option. (Reference : Doc ID – 391844.1, 401332.1, 400227.1)

Eg : Assume that you have installed the 5390722 patch in /oracle/product/jre/jre/ folder :

/database//media/cdrom/runinstaller –jreLoc /oracle/product/jre/jre/1.4.2


23). Install libaio-0.3.105-2.ia64.rpm & libaio-devel (3rd Linux CD)


24). Install oracle in separate home (/oracle/product/10.2.0/db_1) using –jreLoc option.

Eg : $/media/cdrom/runinstaller –jreLoc /oracle/product/jre/jre/1.4.2


25). Change  JREDIR variable in /oracle/product/10.2.0/crs/bin/vipca to  /oracle/product/jre/jre/1.4.2 and install vipca.


26). Change JREDIR vairable in /oracle/product/10.2.0/crs/bin/cluvfy to
/oracle/product/jre/jre/1.4.2 and execute it.

Eg : $./cluvfy stage –post crsinst –n rh-rac-srv1, rh-rac-srv2


27). Install Oracle Patch (5337014) 10.2.0.3 using the –jreLoc option.

Eg : ./runinstaller –jreLoc /oracle/product/10.2.0/jre/jre/1.4.2

First patch the crs home and then database home


28).  Set & starting up Oracle Single Instance

a.       Copy the Hot Backup & archives
b.      Edit init.ora file & create spfile
c.       Create required folders such as adump, bdump, etc
d.      Edit .bash_profile (add TNS_NAMES & ORACLE_HOME etc)
e.       Configure listener.ora & tnsnames.ora

Recover the database :

Startup mount;
Alter database recover database using backup controlfile until cancel;
Shutdown immediate;
Startup upgrade;
@/oracle/product/10.2.0/db_1/rdbms/admin/utlirp.sql
Shutdown immediate;
Startup;
@/oracle/product/10.2.0/db_1/rdbms/admin/utlrp.sql
Alter tablespace undotbs rename to undotbs1;
Alter system set undo_tablespace=undotbs1;
Shutdown immediate;


28).  Set & starting up Oracle Multiple Instance

a.       Edit listener.ora & tnsnames.ora  (execute netca using –jreLoc option)
b.      ln –s spfilehms.ora spfilehms1.ora            (Node 1)
c.       ln –s hms hms1                                         (Node 1)
d.      ln –s spfilehms.ora spfilehms2.ora            (Node 2)
e.       ln –s hms hms2                                          (Node 2)
f.       Configure init.ora & create new spfile in both nodes.
g.      Sqlplus / as sysdba
h.      Startup;
i.        Spool catclust.log
j.        @catclust.sql
k.      spool off
l.        shutdown immediate;
m.    # srvctl add database –d hms –o $ORCLE_HOME
n.      # srvctl add instance –d hms –i hms1 –n rh-rac-srv1
o.      # srvctl add instance –d hms –i hms2 –n rh-rac-srv2
p.      # srvctl start instance –d hms –i hms1
q.      sqlplus / as sysdba
r.        startup;
s.       create redo logs for thread 2
t.        alter database enable thread 2;
u.      create undo tablespace undotbs2
v.      # srvctl start instance –h hms –i hms2
w.    connect to db using ‘hms’ as connect string & check the load balance;

 

Sample listener.ora

# listener.ora.rh-rac-srv1 Network Configuration File: /oracle/product/10.2.0/db_1/network/admin/listener.ora.rh-rac-srv1
# Generated by Oracle configuration tools.

SID_LIST_LISTENER_RH-RAC-SRV1 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )

LISTENER_RH-RAC-SRV1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rh-rac-vip1)(PORT = 1521)(IP = FIRST))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.2.165)(PORT = 1521)(IP = FIRST))
    )
  )

 

Sample tnsname.ora

# tnsnames.ora.mh-rac-srv1 Network Configuration File: /oracle/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora.mh-rac-srv1
# Generated by Oracle configuration tools.

LISTENER_HMS =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.2.167)(PORT = 1521))
    )
LISTENER_HMS_REMOTE =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.2.167)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.2.168)(PORT = 1521))
    )

HMS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rh-rac-vip1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = rh-rac-vip2)(PORT = 1521))
    )
    (LOAD_BALANCE=yes)
    (CONNECT_DATA =
      (SERVICE_NAME = hms.hq.mh)
      (FAILOVER_MODE=
           (TYPE=SELECT)
           (METHOD=BASIC)
           (DELAY=5)
           (RETRIES=200)
      )
    )
  )

HMS1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rh-rac-vip1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = hms.hq.mh)
      (INSTANCE_NAME = hms1)
    )
  )
HMS2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rh-rac-vip2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = hms.hq.mh)
      (INSTANCE_NAME = hms2)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

 

Sample init.ora

*.cluster_database_instances=2
*.cluster_database=true
*.remote_listener='LISTENER_HMS'
hms1.thread=1
hms2.thread=2
hms1.instance_number=1
hms2.instance_number=2
hms1.instance_name=hms1
hms2.instance_name=hms2
*._spin_count=512
*.audit_file_dest='/oracle/admin/hms/adump'
*.audit_trail='db_extended'
*.background_dump_dest='/oracle/admin/hms/bdump'
*.compatible='10.2.0.3.0'
*.control_file_record_keep_time=30
*.control_files='/database/hms/control01.ctl','/database/hms/control02.ctl','/database/hms/control03.ctl'
*.core_dump_dest='/oracle/admin/hms/cdump'
*.cursor_sharing='exact'
*.db_block_checking='TRUE'
*.db_block_checksum='TRUE'
*.db_block_size=8192
*.db_cache_advice='on'
*.db_domain='hq.mh'
*.db_file_multiblock_read_count=8
*.db_files=75
*.db_flashback_retention_target=10080
*.db_name='hms'
*.db_recovery_file_dest='/database/hms/flashdb'
*.db_recovery_file_dest_size=10737418240
*.db_unique_name='hms'
*.fast_start_mttr_target=45
*.fast_start_parallel_rollback='low'
*.global_names=FALSE
*.job_queue_processes=2
*.local_listener='listener_hms'
*.log_archive_dest_1='LOCATION=/archives/hms/archive1
                    VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
                    DB_UNIQUE_NAME=hms
                    MANDATORY
                    REOPEN=60'
*.log_archive_dest_2='LOCATION=/archives/hms/archive2
                    VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
                    DB_UNIQUE_NAME=hms
                    MANDATORY
                    REOPEN=60'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_archive_format='hms%s_%t_%r.arc'
*.log_archive_max_processes=10
*.log_archive_min_succeed_dest=2
*.log_buffer=10485760
*.max_dump_file_size='3m'
*.nls_date_format='DD/MM/RRRR'
*.nls_territory='AMERICA'
*.open_cursors=600
*.optimizer_features_enable='10.2.0.1'
*.optimizer_index_caching=25
*.optimizer_index_cost_adj=75
*.optimizer_mode='first_rows_100'
*.parallel_max_servers=16
*.pga_aggregate_target=1048576000
*.processes=75
*.remote_login_passwordfile='EXCLUSIVE'
*.local_listener='listener_hms_remote'
*.resource_limit=true
*.service_names='hms.hq.mh'
*.session_cached_cursors=200
*.sga_max_size=5368709120
*.sga_target=5368709120
*.star_transformation_enabled='true'
*.statistics_level='typical'
*.undo_management='AUTO'
*.undo_retention=0
hms1.undo_tablespace='UNDOTBS1'
hms2.undo_tablespace='UNDOTBS2'
*.user_dump_dest='/oracle/admin/hms/udump'

***
Tested long back,  someday on August, 2008. Just sharing the information !