Wednesday, June 8, 2011

Cluster verification Utility

  • To view what prerequisites are failing
    • ./runcluvfy.sh comp sys -n  t5120-241-06,t5220-241-03 -p crs
  • To generated a fixup script in /tmp/ directory to fix the prerequisites that are failing
    • ./runcluvfy.sh stage -pre crsinst -fixup -fixupdir /tmp/ritu.sh  -n t5120-241-06,t5220-241-03
  • Additional commands:
    • ./runcluvfy.sh -help
    • ./runcluvfy.sh stage -list or stage -help
    •  ./runclvfy.sh comp -list or comp -help
    • System requirement verification
      • ./runcluvfy.sh comp sys -n {node list} -p {crs|database} -verbose
    • Storage verification
      • ./runcluvfy.sh comp ssa -n {node list}  -s {storageid_list] - verbose
  • Detailed Documentation:

Monday, May 9, 2011

WARNING: oradism not setup correctly in alert log

If you see the following warning in alert file :

WARNING: -------------------------------
WARNING: oradism not set up correctly.
Dynamic ISM can not be locked. Please
setup oradism, or unset sga_max_size.
[diagnostic 0, 16, 64882]
----------------------------------------

the solution is as under:

1- cd $ORACLE_HOME/bin

2- chmod 4550 oradism
3- chmod g+s oradism
4- chown root:dba oradism
5- Bounce the database

Refer to Metalink note 374367.1 for additional info.

Tuesday, April 5, 2011

Sort Area in PGA

If parallel servers are disabled, than the max size of the sort area is determined by _smm_max_size parameter. The value is in KB. The _pga_max_size is the max size of a single session pga. It is expressed in bytes.

You can view this paramter as under:
select a.ksppinm name, b.ksppstvl value from sys.x$ksppi a,sys.x$ksppcv b where
a.indx = b.indx and a.ksppinm='_smm_max_size';
select a.ksppinm name, b.ksppstvl value from sys.x$ksppi a,sys.x$ksppcv b where
a.indx = b.indx and a.ksppinm='_pga_max_size';
show parameters 'pga%';
For 10gR2:

When max_parallel_servers is set to 0:

If pga_aggr_target < 500mb , _smm_max_size is set to 20% of PAT (pga_aggr_target)
if PAT is between 500mb and 1gb , _smm_max_size is set to 100M
if PAT > 1GB, _smm_max_size is set to 10% of PAT

When parallel operations are enabled

Upper bound limited to 50% of PAT/DOP

when DOP <=5, _smm_max_size is used
when DOP > 5 _smm_px_max_size/DOP limits the max memory usuage

_pga_max_size defaults to 2* _smm_max_size

Thursday, March 24, 2011

Recipes

Meetha pooda or sweet pancake is made in many parts of India including Punjab and Rajasthan. In Punjab, it is served as breakfast. You can also make it as an anytime sweet.
Recipe of meetha pooda (chilla)
1 cup whole wheat flour (atta)
1/2 cup sugar
1/2 tsp saunf (fennel) powder
2-3 green cardamom (hari elaichi) - crushed
Ghee (clarified butter) or oil to shallow fry
1. In a bowl, mix all the ingredients except oil or ghee. Add water slowly mixing with other hand. Add enough water to make lump free batter of consistency thicker than that of pakoda (fritters). Beat well.
2. Heat a non- stick tava (griddle). Grease it and turn the heat to low. Pour a ladlefull or 2 tablespoon batter in the center of the tava.
3. Spread it gently in the outward circular motion like you would do for a chilla or an omellete. Spread it with the back of a ladle (karchhi). Turn the heat to medium.
4. After 2 minutes, drizzle some oil or ghee on the pooda. Remove it with the help of a wide, thin spatula and turn over.
5. Cook the other side also for 2 minutes and remove from the tava. Your meetha pooda is ready. Similarly make other poodas from rest of the batter.
Always spread the pooda on low heat and cook it on medium heat.
If the first pooda sticks to the tava, don’t get disheartened. It usually happens with the first puda. As the tava get seasoned, rest of the meetha puda will turn out fine.

Out Of Memory Error

Execute prctl $$ command to  use the current shell process to determine resource limits


A threshold value on a resource control constitutes a point at which local actions can be triggered or global actions, such as logging, can occur.
Each threshold value on a resource control must be associated with a privilege level. The privilege level must be one of the following three types:
basic
Can be modified by the owner of the calling process.
privileged
Can be modified by the current process (requiring sys_resource privilege) or by prctl(1) (requiring proc_owner privilege).
system
Fixed for the duration of the operating system instance.
A resource control is guaranteed to have one system value, which is defined by the system, or resource provider. The system value represents how much of the resource the current implementation of the operating system is capable of providing.
Any number of privileged values can be defined, and only one basic value is allowed. Operations that are performed without specifying a privilege value are assigned a basic privilege by default.

If you see "Out of memory errors" , you may want to enable logging of resource control limit threshold.
By default, Solaris 10  does not  log resource limit threshold notifications. You can see whether they are enabled or not by using the “rctladm” command:

To turn on the syslog for "project.max-shm-memory", issue the following:
rctladm -e syslog project.max-shm-memory



To set the process.max-address.space to 20GB, add the following line to /etc/project
         

user.ben:12345::::process.max-address.space=(privileged,20000000000,deny)

An example of /etc/project:
user.oracle:100::::process.max-address-space=(privileged,40240000000,deny);proce
ss.max-data-size=(priv,10737418240,deny);process.max-sem-nsems=(priv,8192,deny);
process.max-stack-size=(priv,10737418240,deny);project.max-file-descriptor=(priv
,65536,deny);project.max-sem-ids=(priv,100,deny);project.max-shm-ids=(priv,8192,
deny);project.max-shm-memory=(privileged,2199023255552,deny)




This setting however only takes effect for new processes and not for existing process.

ie prctl $$ (will continue to show old value for process.max-address-space)
'
$ su oracle -c 'sh -c "prctl $$"' (will show the new value as you are starting a new shell)
or ...su oracle -c 'sh -c "xterm"'

Mapping disk instance name with physical name

Say you need to find the instance name for the following disks:
'/dev/rdsk/c6t20030003BACCC8FAd0s6',
'/dev/rdsk/c6t20030003BACCC8FAd1s6',
'/dev/rdsk/c6t20030003BACCC902d0s6',
'/dev/rdsk/c6t20030003BACCC902d1s6



Look for 902 (0 and 1) in /etc/path_to_inst file:
"/pci@0/pci@0/pci@8/pci@0/pci@a/SUNW,qlc@0,1/fp@0,0/ssd@w20030003baccc902,1" 3 "ssd"
"/pci@0/pci@0/pci@8/pci@0/pci@a/SUNW,qlc@0,1/fp@0,0/ssd@w20030003baccc902,0" 4 "ssd"

Look for 8FA (0 and 1 ) in /etc/path_to_inst file:
"/pci@0/pci@0/pci@8/pci@0/pci@a/SUNW,qlc@0,1/fp@0,0/ssd@w20030003baccc8fa,1" 72 "ssd"
"/pci@0/pci@0/pci@8/pci@0/pci@a/SUNW,qlc@0,1/fp@0,0/ssd@w20030003baccc8fa,0" 7 "ssd"


The mapping is as under:
'/dev/rdsk/c6t20030003BACCC8FAd0s6  : ssd7
'/dev/rdsk/c6t20030003BACCC8FAd1s6:ssd72
/dev/rdsk/c6t20030003BACCC902d0s6:ssd4
/dev/rdsk/c6t20030003BACCC902d1s6:ssd3

Tuesday, March 8, 2011

Solaris Containers

  • How to create Zones
  • Create a root directory for zones with rwx permission for user.
    • mkdir /zones1
    • chmod 700 /zones1
  • Create a zone configuration file as under:
    • create
    • set zonepath=/zones1
    • set autoboot=true
    • Add network (exclusive IP or default shared IP):
      • Setting exclusive IP
    If you are setting up exclusive IP: (do not set address attribute for exclusive IP)
      set ip-type=exclusive
      add net
      set physical=e1000g2
      end

      Additional info about exclsive IP setup:
      http://download.oracle.com/docs/cd/E19082-01/819-6990/gicom/index.html

        • Setting default shared IP
      If you are setting default shared IPadd net
      set physical=e1000g2
      set address=<ip address of container>
      end

      • Add Raw devices
      To add raw devices to the containers configuration

      add device
      set match=/dev/rdsk/c6t20030003BACCC902*
      end
      add device
      set match=/dev/rdsk/c6t20030003BACCC8FA*
      end

      On Solaris 11:
      zonecfg:rac4Zone> add device
      zonecfg:rac4Zone:device> set match=/dev/rdsk/c1t0d0s0
      zonecfg:rac4Zone:device> set allow-partition=true
      zonecfg:rac4Zone:device> set allow-raw-io=true
      zonecfg:rac4Zone:device> end


      • Add FS
      To add fs refer to
      • http://docs.oracle.com/cd/E23824_01/html/821-1460/z.admin.task-11.html

      To mount a global directory as lofs to container

      zonecfg -z zones1
      add fs
      set dir=/oracle11gR2
      set special=/oracle11gR2
      set type=lofs
      set options=nodevices
      end

      • Set shared memory :
        global# zonecfg -z myzone
        zonecfg:myzone> set max-shm-memory=50G
        • Add dedicated CPU 
          Adding dedicated -cpu is a simpler form of creating a pool and attaching it to the container. Add dedicated-cpu command creates a temporary pool and assigns it to the container

          add dedicated-cpu
          set ncpus=32
          end

          • Remove dedicated CPU

          To remove the dedicated-cpu, issue the following command
          remove dedicated-cpu

          • Add resource pool
            • set pool=rac1pool
          • Remove pool
            • On Solaris 11
              •  clear pool
            • On Solaris 10 Update 3 and below
              • set pool=""

          • Steps to create and configure a container

          1. Invoke zonecfg command to configure the zone
            1. zonecfg -z zones1 -f test.cfg
          2.  Install the configured zone
            1. zoneadm -z zones1 install
          3.  Use the list subcommand of zoneadm to list the installed zones and verify their status. The status of the zone is "Installed"
            1. zoneadm list -iv
          4. Boot the zone
            1. zoneadm -z zones1 boot
          5.  Verify that status of the zone is "running"
            1. zoneadm list -v
          6.  Log in to Zone console to perform the internal zone configuration
            1. zlogin -C zone1
          7.  Optionally edit /etc/sysidcfg file to perfom the inital zone configuration
            1. Go to /etc/ directory of the local zone
              1. cd /export/home/zones/root/etc
            2. Create sysidcfg file in this directory

          • Steps to delete a container
            • zoneadm -z myzone halt
            • zoneadm -z myzone uninstall
            • zonecfg -z myzone delete -F

          • List a container and info about it

          • List all zones from global zone
            • zoneadm list -v
          • Login to local zone from global zone:
            • zlogin <zonename>
          • In the zone , issue zonename to print its name
          • Get info about the zone
            • zonecfg -z myzone info
          • To verify if /dev/rdsk/c6 is accessible in local container
            • ls /my_zone/root/dev/rdsk/.....

          • Initial zone configuration

          • Hostname and ip address: 
            • The hostname can be resolved through DNS or NIS
              • Verify if it is resolved through DNS
                • nslookup isve-111-212 
              • Verify if it resolves through NIS
                • ypcat hosts | grep isve-111-212
              • If hostname is resolved through dns /etc/nsswitch.conf should have the following 
                • ipnodes:        files dns
              • else it should be as under:
                • ipnodes:        files nis
          • netmask: /etc/inet/netmasks
          • Router IP : /etc/defaultrouter
          • Dominname : exec domainname command
          • Name service : Check /etc/nsswitch.conf to confirm it is NIS
          • Name server: output of ypwhich command
          • Ip addres of name server : ping -s <nameserver>
          • DNS name server ip address from /etc/resolv.conf

          • Modify exisiting zone

          • Change net settings {removing address or physical attribute of the net will delete both network parameters
            • zonecfg -z zone1 info
            • remove net address=<value> {or remove net physical=<value>}
            • add net
            •    set physical
            •     set address
            • end
          • Some changes need the zone to be rebooted to take effect
            • zoneadm -z zone1 reboot


          If you want to restart initial zone configuration
          • zlogin -S zonename /usr/sbin/sys-unconfig
          • or login to zones (zlogin zonename) , issue sys-unconfig and reboot
          • On Solaris 11, you can configure using the following commnd
            • /usr/sbin/sysconfig unconfigure
          How to specify netmask in containers:
          Why is zone booting command failing as under:

           zoneadm -z zones2 boot
          zoneadm: zone 'zones2': These file-systems are mounted on subdirectories of /zones2/root:
          zoneadm: zone 'zones2':   /zones2/root/var/sadm/install/.door
          zoneadm: zone 'zones2': call to zoneadmd failed
          You do not have the right zones patch installed..... Wait for 10 minutes and issue the command and it will work if you do not want  to install the updated patches


          If you see the following error, login in to the console to view the SCI ....


          root@unknown:~# sysconfig configure
          This program will re-configure your system.
          Do you want to continue (y/[n])? y
          Interactive configuration requested.
          System Configuration Interactive (SCI) tool will be launched on console.
          Since you are currently not logged on console,
          you may not be able to navigate SCI tool.
          Would you like to proceed with re-configuration (y/[n])? y