Saturday, August 23, 2008

How to resolve ORA-4030 errors on UNIX

Reasons of ORA-04030
When a client program connects to oracle database an oracle process does work on behalf of the client. The Oracle process allocated memory from PGA(Program Global Area). For dedicated server process PGA contains stack, user session data, cursor information and the sort area. For shared server configuration UGA(user session data, cursor information and the sort area) is allocated in the SGA (System Global Area) and will not be responsible for ORA-4030 errors.

The ORA-4030 can come based on various reasons which is noted below.
1)The Oracle process need more memory in order to request client program and it requests additional memory from Operating System but the Operating System can't serve the request. This is likely to happen if OS does not have enough memory or swap space is not available.

2)There is a memory limit restriction from OS for oracle process to use. Oracle process already use the limit and now it requested additional memory and hence error appears.

3)Might be an oracle bug.

Solution of The Problem
1)Reduce the PGA(Program Global Area): If you don't have enough memory on your system then reducing the PGA can help you to avoid the error. In that case oracle process will not request more memory from OS and if needed more space it will use temporary tablespace segment. But lower the PGA can impact on database performance. If you don't have PGA_AGGREGATE_TARGET set then in order to set lower PGA set SORT_AREA_SIZE parameter to a lower value. You can set it dynamically by,
ALTER SYSTEM SET SORT_AREA_SIZE=10M;

If you have set PGA_AGGREGATE_TARGET then to reduce PGA you have to set PGA_AGGREGATE_TARGET toa lower value.
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=100M;

2)If you did not enabled automatic PGA management then enable the automatic SQL execution memory management feature by setting the parameter WORKAREA_SIZE_POLICY to AUTO and by specifying a size of PGA_AGGREGATE_TARGET then it will lessen to happen ORA-4030 error. As by setting automatic SQL execution memory management feature SORT_AREA_SIZE, HASH_AREA_SIZE are handled by oracle automatically and allocate/deallocate by demand.

ALTER SYSTEM SET WORKAREA_SIZE_POLICY=AUTO;

3)If you impose limit to oracle to use memory then increase the amount of memory a UNIX process can request and use from the operating system. The system administrator can see this soft limit
by issuing,
$limit
In order to see hard limit issue,
$limit -h

If you want to increase a specific resource soft limit by specifying it's name and the new value then on
C shell
use,
csh> limit -h datasize 524289
csh> limit -h datasize
To make all resource unlimited issue,
csh>unlimit
If you use
Bash and Korne Shell
then use,
$ulimit -a
In order to set all resource to unlimited.

4)Increase the amount of swap space available on the system. You should have 2-3 times the amount of physical memory available as swap space.

5)Increase the physical RAM on your system if you have lower RAM. If you don't have the scope to increase your RAM then lower the SGA settings. Lowering SGA size will allow to use more PGA.

6)If some PL/SQL procedures need much memory then you might think to rewrite it so that it needs less memory.

7)Install the latest patch set.

OUI-10020: A write lock cannot be obtained.

Problem Description
While using OUI it fails with following message,
OUI-10020:The target area /oracle/10gR2/oraInventory is being used by another session. A write lock cannot be obtained.

Cause of The Problem
There is some process or software that holds lock on the /oracle/10gR2/oraInventory file. Until that software release lock OUI continues to display message OUI-10020.

Solution of The Problem
1.Go to the oraInventory directory.
$cd /oracle/10gR2/oraInventory

2. See the contents of it.
$ls /oracle/10gR2/oraInventory
You will see the locks directory here.

3.Go to the lock directory and delete the read lock under the directory.
$cd locks
$ rm /oracle/10gR2/oraInventory/locks/reader0.lock


4.Now run your Oracle Universal Installer.

umask and permission in unix.

Many one got confused with the setting of umask in unix or linux system. Whenever I was a newbie in this field I also got a bit confused with this settings. In a nutshell umask defines what will be the default permission of a file whenever a user create the file. You already are familiar with the unix permission of 754. The first digit 7(4 read +2 write+1 execute) is for permission for owner, the second digit 5 is for permission for the group and third digit 4 is for permission for others.

In brief,
User class: Owner Group Others
character representation: rwx r-x r--
binary representation: 111 101 100
octal representation: 7 5 4


Now lets a look at ls -l after creating a file without setting any umask.
-bash-3.00$ touch without_umask.txt
-bash-3.00$ ls -l
total 0
-rw-r--r-- 1 oracle oinstall 0 Aug 24 00:05 without_umask.txt

After omitting first digit as it indicates whether file or folder we get
first 3 digit after - is 110 that is 6 for user oracle permission.
second pair of 3 digits are 100 that is 4 which is for all users who are under oinstall group.
third pair of 3 digits are 100 that is 4 which is for others.

Now start with setting umask of 022. With this setting, Files (and directories) normally created with mode 777 become mode 755. Files (and directories) created with mode 666 become mode 644).

In a word umask just deducted its value(here is 022) from 777 (or other mode that a file created) and then it changes permission to the file.

-bash-3.00$ umask 022
-bash-3.00$ touch with_umask1.txt
-bash-3.00$ ls -l

total 0
-rw-r--r-- 1 oracle oinstall 0 Aug 24 00:06 with_umask1.txt
-rw-r--r-- 1 oracle oinstall 0 Aug 24 00:05 without_umask.txt

Here we see umask of 022 set permission to with_umask1.txt file to 644.

-bash-3.00$ umask 002
-bash-3.00$ touch with_umask2.txt
-bash-3.00$ ls -l

total 0
-rw-r--r-- 1 oracle oinstall 0 Aug 24 00:06 with_umask1.txt
-rw-rw-r-- 1 oracle oinstall 0 Aug 24 00:06 with_umask2.txt
-rw-r--r-- 1 oracle oinstall 0 Aug 24 00:05 without_umask.txt
Here we see umask of 002 set permission to with_umask2.txt file to 664.

-bash-3.00$ umask 000
-bash-3.00$ touch with_umask3.txt
-bash-3.00$ ls -l

total 0
-rw-r--r-- 1 oracle oinstall 0 Aug 24 00:06 with_umask1.txt
-rw-rw-r-- 1 oracle oinstall 0 Aug 24 00:06 with_umask2.txt
-rw-rw-rw- 1 oracle oinstall 0 Aug 24 00:06 with_umask3.txt
-rw-r--r-- 1 oracle oinstall 0 Aug 24 00:05 without_umask.txt

Here we see umask of 000 set permission to the file (666-000)=666.
We can chnage its settings later by chmod if we wish.
-bash-3.00$ chmod 777 with_umask3.txt
-bash-3.00$ ls -l

total 0
-rw-r--r-- 1 oracle oinstall 0 Aug 24 00:06 with_umask1.txt
-rw-rw-r-- 1 oracle oinstall 0 Aug 24 00:06 with_umask2.txt
-rwxrwxrwx 1 oracle oinstall 0 Aug 24 00:06 with_umask3.txt
-rw-r--r-- 1 oracle oinstall 0 Aug 24 00:05 without_umask.txt

Wednesday, August 20, 2008

Major Oracle Clusterware components

The Oracle Clusterware comprises several background processes that facilitate cluster operations. These processes or components are the main communication links between the Oracle Clusterware high availability components and the Oracle Database as well as they monitor and manage database operations.

Here is the list of major oracle clusterware components or processes.

1)Cluster Synchronization Services (CSS): It manages and controls which nodes are members of the cluster and notify members when a node joins or leaves the cluster.

2)Cluster Ready Services (CRS): It manages high availability operations within a cluster. The CRS process start, stop, monitor and failover operations. It generates events when a resource status changes. When you have installed Oracle RAC, crs monitors the Oracle instance, Listener, and so on, and automatically restarts these components when a failure occurs.

3)Event Management (EVM): It is a background process that publishes events that crs creates.

4)Oracle Notification Service (ONS): It publishes and subscribes service for communicating Fast Application Notification (FAN) events.

5)RACG: It runs server callout scripts when FAN events occur.

6)Process Monitor Daemon (OPROCD): This process is locked in memory to monitor the cluster and provide I/O fencing. OPROCD performs its check, stops running, and if the wake up is beyond the expected time, then OPROCD resets the processor and reboots the node. An OPROCD failure results in Oracle Clusterware restarting the node. OPROCD uses the hangcheck timer on Linux platforms.

Configure Raw Devices for ASM in RAC.

Configuring RAW decides in RAC is just similiar as you do configure raw devices for voting disk and OCR. In this example, I have faced a different scenario where in

In racnode-1 disk sdb is mapped to sdf in ranode-2
In racnode-1 disk sdc is mapped to sdd in ranode-2
In racnode-1 disk sdd is mapped to sde in ranode-2


First I have created three raw partitions from my raw devices sdb, sdc and sdd of racnode-1 each of 80GB for ASM.
[root@racnode-1 ~]# /sbin/fdisk /dev/sdb

The number of cylinders for this disk is set to 19581.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (33-19581, default 33): +80000M
Last cylinder or +size or +sizeM or +sizeK (9726-19581, default 19581):
Using default value 19581

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

[root@racnode-1 ~]# /sbin/fdisk /dev/sdc

The number of cylinders for this disk is set to 19581.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (33-19581, default 33):
Using default value 33
Last cylinder or +size or +sizeM or +sizeK (33-19581, default 19581): +80000M

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

[root@racnode-1 ~]# /sbin/fdisk /dev/sdd

The number of cylinders for this disk is set to 19581.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (33-19581, default 33):
Using default value 33
Last cylinder or +size or +sizeM or +sizeK (33-19581, default 19581): +80000M

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

For RACNODE-1
[root@racnode-1 ~]# vi /etc/udev/rules.d/63-oracle-raw.rules
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add", KERNEL=="sdc2", RUN+="/bin/raw /dev/raw/raw7 %N"
ACTION=="add", KERNEL=="sdd2", RUN+="/bin/raw /dev/raw/raw8 %N"
KERNEL=="raw[6-8]*", OWNER="oracle", GROUP="oinstall", MODE="644"

Then reboot the node if it suggest as in this example. The new table will be used at the next reboot.
[root@racnode-1 ~]# reboot
For immediate affect if you don't see any reboot message,
#/bin/raw /dev/raw/raw6 /dev/sdb2
/bin/raw /dev/raw/raw7 /dev/sdc2
/bin/raw /dev/raw/raw8 /dev/sdd2

Adjust the permission settings by,
#chown oracle:oinstall /dev/raw/raw6
chown oracle:oinstall /dev/raw/raw7
chown oracle:oinstall /dev/raw/raw8
chmod 640 /dev/raw/raw6
chmod 640 /dev/raw/raw7
chmod 640 /dev/raw/raw8


For RACNODE-2
[root@racnode-2 ~]# vi /etc/udev/rules.d/63-oracle-raw.rules
ACTION=="add", KERNEL=="sdf2", RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add", KERNEL=="sdd2", RUN+="/bin/raw /dev/raw/raw7 %N"
ACTION=="add", KERNEL=="sde2", RUN+="/bin/raw /dev/raw/raw8 %N"
KERNEL=="raw[6-8]*", OWNER="oracle", GROUP="oinstall", MODE="644"

Then reboot the node if it suggest as in this example. The new table will be used at the next reboot.
[root@racnode-2 ~]# reboot
For immediate affect, if you don't see any reboot message
#/bin/raw /dev/raw/raw6 /dev/sdf2
/bin/raw /dev/raw/raw7 /dev/sdd2
/bin/raw /dev/raw/raw8 /dev/sde2

and adjust the permission settings by,
#chown oracle:oinstall /dev/raw/raw6
chown oracle:oinstall /dev/raw/raw7
chown oracle:oinstall /dev/raw/raw8
chmod 640 /dev/raw/raw6
chmod 640 /dev/raw/raw7
chmod 640 /dev/raw/raw8


Related Documents

Tuesday, August 19, 2008

Possible Limitations When Adding Datafiles to a Tablespace

Before discussing limitations of adding datafiles to a tablespace let's think about DB_FILES parameter. DB_FILES is an initialization parameter in oracle. When an oracle instance starts, this parameter indicates the amount of SGA space to reserve for datafile information and thus, the maximum number of datafiles that can be created for the instance. This parameter exists throughout the life cycle of the instance. So, changes to DB_FILES affect only after restarting the instance.

As this parameter indicates the amount of SGA space to reserve for datafile information the bigger value settings indicates memory is unnecessarily consumed.

And smaller value setting of this parameter impose limit to create another datafile.

So setting of DB_FILES parameter value is important.

Now let's look about possible limitations when adding datafiles to a tablespace.

Possible Limitations When Adding Datafiles to a Tablespace

•OS imposes a limit of the number of files a process can be opened at a time.

•OS imposes a limit of number and size of datafiles.

•The database imposes a maximum limit on the number of datafiles for any Oracle Database opened by any instance. This limit is operating system specific.

•Number of datafiles can't exceed DB_FILES initialization parameter.

•It is good to know that after oracle 8i the MAXDATAFILES parameter (of CREATE CONTROLFILE or CREATE DATABASE command) is not responsible of the limitations of adding datafiles.

•If you attempt to add a new file whose number is greater than MAXDATAFILES, but less than or equal to DB_FILES, the MAXDATAFILES parameter of the control file will expand automatically to accommodate more files.

Related Documents
MAXDATAFILES , DB_FILES parameters and ORA-00059

How to Resize a Datafile

ORA-01667: cannot add any more tablespaces: limit of exceeded

New Feature of 10.2g: Eliminate Control File Re-Creation

When and How to Recreate the Controlfile

Monday, August 18, 2008

MAXDATAFILES , DB_FILES parameters and ORA-00059

Problem Description
Whenever I try to create tablespace it fails with error message, ORA-00059.

SQL> create tablespace test_tbs;
create tablespace test_tbs
*
ERROR at line 1:
ORA-00059: maximum number of DB_FILES exceeded

Cause of The Problem
You have reached the limit of DB_FILES parameter. Before entering into solution part let's have an idea about DB_FILES and MAXDATAFILES parameter.

The DB_FILES parameter limits the maximum number of datafile can exist in oracle database. We can't change this parameter dynamically. We have to change it spfile by using ALTER SYSTEM .... SCOPE=SPFILE or in the pfile.

And the MAXDATAFILES parameter you can find with the CREATE DATABASE command or in CREATE CONTROLFILE command. It is also a limitation of maximum number of datafiles can be in the datafile. But starting from oracle 8 this hard limit parameter can be easily expanded up to DB_FILES parameter. So, if you attempt to add a new file whose number is greater than MAXDATAFILES, but less than or equal to DB_FILES, the MAXDATAFILES parameter of the control file will expand automatically to accommodate more files.

So, if you are after oracle 8i then we should just forget about MAXDATAFILES parameter. We should rather think about DB_FILES parameter.

Solution of The Problem
If you use pfile to startup the database then edit pfile and add/modify the DB_FILES parameter to a greater value so that it can accommodate higher number of datafiles. Then start the database using that pfile.

If you use spfile to startup the database then issue,

SQL> alter system set db_files=300 scope=spfile;
System altered.

Then start your database and either create tablespace or add datafile to an existing tablespace. Hopefully it will work.

SQL> conn / as sysdba
SQL> startup force
SQL> CREATE TABLESPACE or ALTER TABLESPACE command to add datafile.

Related Documents
http://arjudba.blogspot.com/2008/07/ora-01667-cannot-add-any-more.html
http://arjudba.blogspot.com/2008/09/list-of-parameters-that-must-have.html
http://arjudba.blogspot.com/2008/08/possible-limitations-when-adding.html

CRS Stack Fails to Start After Reboot ORA-29702 CRS-0184

Problem Description
An attempt to manually start the instance fails with,

ORA-29702: error occurred in Cluster Group Service operation

crs_stat produces the error,

/oracle/crs/bin/crs_stat -t
CRS-0184: Cannot communicate with the CRS daemon.

CSS stack did not come up as the following command issued out of init.cssd
crsctl check boot
failed with error message
Failed 3 to bind listening endpoint: (ADDRESS=(PROTOCOL=tcp)(HOST=node2priv))
and return code 11.
The error message was also written to /var/log/messages on this node.

Note that in 10gR2 the message no longer gets written to /var/log/messages, instead it will be written to /tmp/crsctl.


Cause of the Problem
Error message 'Failed 3 to bind listening endpoint: (ADDRESS=(PROTOCOL=tcp)(HOST=node2priv))' indicated that CSS had a problem creating the listening endpoint for hostname node2

In node1 within the /etc/hosts file the name of the private interconnect exist. But on node2 somehow it is missing the private interconnect in the /etc/hosts file. That's why the problem occurs.

Solution of The Problem

1. Add the missing hostnames to /etc/hosts

2. Stop and start CRS stack
Related Documents
http://arjudba.blogspot.com/2010/03/cluvfy-fails-with-prvf-5436-prvf-9652.html
http://arjudba.blogspot.com/2010/03/in-11gr2-grid-rootsh-fails-with-crs.html
http://arjudba.blogspot.com/2010/03/what-to-do-after-failure-of-oracle.html
http://arjudba.blogspot.com/2009/12/enable-archive-log-mode-for-rac.html
http://arjudba.blogspot.com/2008/09/list-of-parameters-that-must-have.html
http://arjudba.blogspot.com/2008/08/oracle-rac-software-components.html
http://arjudba.blogspot.com/2008/08/oracle-clusterware-processes-on-unix.html
http://arjudba.blogspot.com/2008/08/configure-raw-devices-for-asm-in-rac.html
http://arjudba.blogspot.com/2008/08/crs-stack-fails-to-start-after-reboot.html
http://arjudba.blogspot.com/2008/08/configure-network-for-oracle-rac.html
http://arjudba.blogspot.com/2008/08/pre-installation-rac-environement-setup.html
http://arjudba.blogspot.com/2008/08/configure-server-to-install-oracle-rac.html

How to Resize a Datafile

There may be situations when you need to increase or decrease your datafile size. Prior to oracle 7.2 there was no easy way to resize the datafile. Before 7.2 the solutions was to drop and recreate the tablespace with different sized datafiles, or to add more datafiles to a tablespace whenever you need more space in the tablespace.

Before 7.2 the RESIZE command will raise error,
ORA-00923: FROM keyword not found where expected

Before entering into resize datafile let's be familiar with several views related to datafile.
From V$DATAFILE.CREATION_TIME we can see the timestamp of the datafile creation time.
From V$DATAFILE.BYTES we can see the current datafile size in bytes. 0 in this fields indicate the datafile is inaccessible.
From V$DATAFILE.CREATE_BYTES we can the datafile size when it was created.
From V$DBA_DATA_FILES.MAXBYTES we can see the maximum size of the datafile.

Before going into resize I just create one tablespace containing one datafile of size 10M which can be extended up to 100M.

SQL> create tablespace test_tbs datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ARJU\test_tbs01.dbf' size 10M autoextend on maxsize 100M;
Tablespace created.

Now have a look at the current size of maximum size of this data file from dba_data_files view.
SQL> select bytes/1024/1024, maxbytes/1024/1024 from dba_data_files where file_id=6;
BYTES/1024/1024 MAXBYTES/1024/1024
--------------- ------------------
10 100

Increase datafile size
To see the current settings of the datafile query from v$datafile view. The BYTES column shows the current size of the datafile, and the CREATE_BYTES column shows what the size was
specified when the file was created.

Current size is 10M we can increase it upto 15M by,

SQL> alter database datafile 6 resize 15M;
Database altered.

SQL> select bytes/1024/1024, maxbytes/1024/1024 from dba_data_files where file_id=6;

BYTES/1024/1024 MAXBYTES/1024/1024
--------------- ------------------
15 100

SQL> select bytes/1024/1024, create_bytes/1024/1024 from v$datafile where file#=6;
BYTES/1024/1024 CREATE_BYTES/1024/1024
--------------- ----------------------
15 10

Here 12 is current size and 10 is creation time size.

Decrease Datafile size
Downsizing a datafile is more complicated than increasing the size of a datafile. Because you cannot deallocate space from a datafile that is currently being used by database objects. To remove space from a datafile, you have to have contiguous space at the END of the datafile. From DBA_FREE_SPACE we can see the free space in the datafile.

To resize our datafile to 2M issue,
SQL> alter database datafile 6 resize 2M;

If you try to resize a datafile to a size smaller than is needed to contain all the database objects in that datafile, the following error is returned,

ORA-03297: file contains blocks of data beyond requested RESIZE value
Or
ORA-03297: file contains used data beyond requested RESIZE value

Sunday, August 17, 2008

How to Find out or Check Linux Version Information

Before installing oracle clusterware it is necessary in which version of linux you are trying to install to. Because based on the version procedure may vary to install clusterware.
Here I mention several ways to check the version of linux.

Find out linux release information
1)On Red Hat Linux,
-bash-3.1$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 4 (Tikanga)

Alternatively,
# rpm -q redhat-release
redhat-release-4ES-2
2)On SUSE Linux,
$cat /etc/SuSE-release
SUSE LINUX Enterprise Server 9 (i586)
VERSION = 9

3)On Debian Release,
debian:/home/Arju/Spark# cat /etc/debian_version
4.0

Find out linux Kernel Version
debian:/home/Arju/Spark# uname -s -r
Linux 2.6.18-4-686

debian:/home/Arju/Spark# uname -a
Linux debian 2.6.18-4-686 #1 SMP Wed May 9 23:03:12 UTC 2007 i686 GNU/Linux

-bash-3.1$ uname -a
Linux racnode-1 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux

-bash-3.1$ uname -s -r
Linux 2.6.18-8.el5

Description of the output of uname -a
At the end but the before of OS name the output of "uname -a " shows the OS word-size.
- i686 i386 indicates 32-bit Linux on standard x86 microprocessor series hardware
- x86_64 indicates 64-bit Linux on standard AMD64 or Intel EM64T hardware
- ia64 indicates 64-bit Linux on the Itanium-2 processor developed jointly by Hewlett-Packard and Intel
- s390x indicates 64-bit Linux on IBM S/390 (31-bit) and zSeries (64-bit) hardware.
- ppc64 indicates 64-bit Linux on IBM power based systems that support Linux includes machines branded as pSeries, iSeries, System p5 and System i5.

The first word of the output shows the kernel name. We see the kernel name is linux.
Only itself can be seen by,
-bash-3.1$ uname -s
Linux

The second word of the output of " uname -a " shows the hostname. Here we see the hostname is debian for debian machine and racnode-1 for redhat linux machine.
Only itself can be seen by,
-bash-3.1$ uname -n
racnode-1

The third word of the output of "uname -a" prints the kernel release. Here for racnode-1 machine we see kernel release is 2.6.18-8.el5. Only itselef can be seen by uname -r
-bash-3.1$ uname -r
2.6.18-8.el5

The fourth word print the kernel version. For racnode-1 we see kernel version is #1 SMP Fri Jan 26 14:15:21 EST 2007. Only itself can be seen by, uname -v.
-bash-3.1$ uname -v
#1 SMP Fri Jan 26 14:15:21 EST 2007

The fifth one prints the machine hardware name. Only itself can be seen from ,
-bash-3.1$ uname -m
i686

The sixth one prints the processor type. Here it is seen by,
-bash-3.1$ uname -p
i686

The seventh one prints the hardware platform. Here it is
-bash-3.1$ uname -i
i386

The eighth one print the operating system. Here it is
-bash-3.1$ uname -o
GNU/Linux

In fact "uname -a" is the combination of all these 8. That is "uname -a" is equivalent to,
-bash-3.1$ uname -snrvmpio
Linux racnode-1 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux

Another Way by Cheking issue file
From the /etc/issue file you can also check the version information. In fact it is a text file which contains a message or system identification to be printed before the login prompt.

From here we see for debian machine it is 4.0 and for red hat racnode-1 it is 5.
debian:/home/Arju/Spark# cat /etc/issue
Debian GNU/Linux 4.0 \n \l

-bash-3.1$ cat /etc/issue
Red Hat Enterprise Linux Server release 5 (Tikanga)
Kernel \r on an \m

Related Documents
How to Identify OS or Oracle 64 bit or 32 bit on Unix

Different ways to take Screenshot on Linux

Way 1: Using GUI if you have GNOME:
If you have GNOME installed then using graphical tool you can easily take a screenshot. To do it
Click Applications —> Accessories —> Take Screenshot.
You are done.

Way 2: With the PrintScreen Button
To get a screenshot of your active window just press ALT+Print Screen button. A new window will appear. Just enter your name of the screenshot there as well as the location.

Way 3: Using ImageMagick Tool: This tool can be useful in certain scenario. Suppose to take a screenshot of a menu you can't use GNOME tool. You have to use this tool then as it support a delay before taking the screenshot. You need to install this tool to use.
To check whether ImageMagick tool is installed or not just issue,
# import -version
bash: import: command not found

You can get this tool from http://www.imagemagick.org/script/index.php.
The next step is to install it. On my debian linux, I issue
#apt-get install imagemagick

To take a screenshot in the terminal with ImageMagick, type the following line into a terminal and then click-and-drag the mouse over a section of the screen:

import MyScreenshot.jpg

To view it,
#eog MyScreenshot.jpg

To capture a creenshot after 10 seconds delay you can issue,
sleep 10; import -window root MyScreenshot2.jpg

Way 4: Using scrot
To install scrot on my system I used,
sudo aptitude install scrot

To take a snapshot with it use,
scrot MyScreenshot.png

Way 5: With the Terminal using gnome-panel-screenshot:
Using terminal in GNOME you can also take the snapshot in linux. Do it as,
$gnome-panel-screenshot

Also delay can be added by,
$gnome-panel-screenshot --delay 5

Way 6: With the GIMP
Install gimp on my debian system by,
# apt-get install gimp
And to take snapshot open gimp and follow,
File —> Acquire —> Screen Shot.

Way 7: Web Page Snapshot With Firefox
With screengrab you can take screenshot within webpage just by a click if you use firefox. To get screengrab just download it from https://addons.mozilla.org/en-US/firefox/search?q=screengrab&cat=all

To use it just right click on a web page and choose: ScreenGrab! —> Save document as image.

Way 8: With xwd to screen a terminal
Just on your terminal write,
$xvd> screen.xvd

And then convert it to any format that you wish using convert command.
$convert screen.xvd screen.jpg

Way 9: Using ksnpshot
With ksnapshot you can easily take snapshot. It can be used in KDE as well as GNOME.

Way 10: Using gimp Tool

If you know any other ways just enter inside comments in this post. Thank you.

Related Documents
How to change/configure IP Address on Linux/ Fedora /Ubuntu
Copy files between Unix and Windows with rcp
Screen -A very useful unix tool to work with remote system
How to change the hostname in Linux
Memory Usage of Solaris Operating System

RunInstaller fails with java.lang.UnsatisfiedLinkError

To install clusterware whenever I run runIstaller it fails with following errors along with unknown source.
-bash-3.1$ ./runInstaller
Starting Oracle Universal Installer...

Checking installer requirements...

Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Passed


All installer requirements met.

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2008-08-17_03-53-41PM. Please wait ...-bash-3.1$ Oracle Universal Installer, Version 10.2.0.1.0 Production
Copyright (C) 1999, 2005, Oracle. All rights reserved.

Exception java.lang.UnsatisfiedLinkError: /tmp/OraInstall2008-08-17_03-53-41PM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory occurred..
java.lang.UnsatisfiedLinkError: /tmp/OraInstall2008-08-17_03-53-41PM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at sun.security.action.LoadLibraryAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(Unknown Source)
at sun.awt.DebugHelper.(Unknown Source)
at java.awt.Component.(Unknown Source)
at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.(OiifmGraphicInterfaceManager.java:222)
at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.createInterfaceManager(OiicSessionInterfaceManager.java:193)
at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:202)
at oracle.sysman.oii.oiic.OiicInstaller.getInterfaceManager(OiicInstaller.java:436)
at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:926)
at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866)
Exception in thread "main" java.lang.NoClassDefFoundError
at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.(OiifmGraphicInterfaceManager.java:222)
at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.createInterfaceManager(OiicSessionInterfaceManager.java:193)
at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:202)
at oracle.sysman.oii.oiif.oiifm.OiifmAlert.(OiifmAlert.java:151)
at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:984)
at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866)


Solution of The problem

Create the dynamic link with the library as following,
$cd /usr/lib
$ln -s libXpm.so.4.11.0 libXp.so.6

Running Runinstaller fails with DISPLAY not set

When I running the runinstaller command on my linux server after entering through ssh it fails with DISPLAY not set.
$ssh oracle@192.168.1.91
-bash-3.1$ /oradata1/clusterware/runInstaller
Starting Oracle Universal Installer...

Checking installer requirements...

Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Passed


All installer requirements met.

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2008-08-17_04-01-48PM. Please wait ...
DISPLAY not set. Please set the DISPLAY and try again.
Depending on the Unix Shell, you can use one of the following commands as examples to set the DISPLAY environment variable:
- For csh: % setenv DISPLAY 192.168.1.128:0.0
- For sh, ksh and bash: $ DISPLAY=192.168.1.128:0.0; export DISPLAY
Use the following command to see what shell is being used:
echo $SHELL
Use the following command to view the current DISPLAY environment variable setting:
echo $DISPLAY
- Make sure that client users are authorized to connect to the X Server.
To enable client users to access the X Server, open an xterm, dtterm or xconsole as the user that started the session and type the following command:
% xhost +
To test that the DISPLAY environment variable is set correctly, run a X11 based program that comes with the native operating system such as 'xclock':
% <full path to xclock.. see below>
If you are not able to run xclock successfully, please refer to your PC-X Server or OS vendor for further assistance.
Typical path for xclock: /usr/X11R6/bin/xclock

Solution of The Problem
If you are trying to run GUI on remote unix machine using ssh from the client unix machine then you have to ssh with the -X or -Y option. To solve the problem just quit the session and reenter to the remote machine using anyone of the following,

ssh oracle@192.168.1.91 -X
ssh oracle@192.168.1.91 -Y


If your are already on the machine and got above message then as a root user issue,

#xhost +
Now as oracle user run oracle universal installer.

Installing Clusterware through OUI fails Cheking OS version in RHL-5

Whenever to install oracle clusterware I run runInstaller on Red hat linux 5 machine it fails with operating system version test. The same problem happens whenever you try to install Oracle Clusterware or oracle database 10g on Oracle Enterprise Linux 5.0 or SUSE Linux Enterprise Server 10 then the current version of Oracle Universal Installer does not recognized these operating systems as supported operating systems and does not perform the installation. It fails like below.

-bash-3.1$ ./runInstaller
Starting Oracle Universal Installer...

Checking installer requirements...

Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Failed <<<< style="font-weight: bold;">Cause of The Problem
The installer picks up the version of Linux installed from the /etc/redhat-release file. There may be several reasons for which the above messages can be shown.

1. Your OS is not certified with the oracle certification to install clusterware.

2. The /etc/redhat-release become corrupted and installer can't read the file.

3. It cannot identify the version of Linux installed in the machine and reports a failure accordingly.

4. May be bug of the OUI.

Solution of The Problem
Method 1: Change the release value in /etc/redhat-release
Step 1: Ensure that your OS version is certified with clusterware installation or the product you want to install. This can be seen by oracle certification matrix.

Step2: Ensure that /etc/redhat-release is there and not corrupted. You can copy it to somewhere and edit it.

Step 3: I have seen if you want to install oracle clusterware on RHL 5 then then it shows above failure though it is certified and I have intact /etc/redhat-release. In that case to meet clusterware installation edit the /etc/redhat-release file to make it from 5 to 4.

The original value and changed value is listed below.
•On Oracle Enterprise Linux 5.0, original value is "Enterprise Linux Enterprise Linux server release 5". Change it to Enterprise Release Enterprise Linux server release 4.

•On Red Hat Enterprise Linux 5.0, original value is "Red Hat Enterprise Linux server release 5". Change it to Red Hat Enterprise Linux server release 4.

•On SUSE Linux Enterprise Server 10, original value is
SUSE Linux Enterprise Server 10 (x86_64)
VERSION = 10

Change it to
SUSE Linux Enterprise Server 9 (x86_64)
VERSION = 9


I have done this on my Red Hat system as,

-bash-3.1$ vi /etc/redhat-release
Red Hat Enterprise Linux Server release 4 (Tikanga)

Now again try to run runInstaller and possibly you will not get the error.

Method 2: (recommended) Running as ignoreSysPrereqs flag:
The idea is while running OUI( Oracle Universal Installer) command it to skip operating system test. Start the runIstaller as
./runinstaller -ignoreSysPrereqs
which causes the installer to skip the operating system check and continue with the installation.

Related Documents
Install Oracle Database 10g Software on Red Hat Linux

Some Tips of Mozilla Firefox

1)Zooming: If you get any small font or tiny text in your browser you can enlarge your text by simply pressing
CTRL + plus (+) sign (zoom out) or
CTRL + minus(-) sign (zoom in)

2)Handling Tabs: With firefox you can handle many web page in a single firefox window with the help of tabbed browsing.
CTRL+T will open a new empty tab on an existing firefox window.
CTRL+W will close the current tab.
CTRL+SHIFT+T will will reopen a close tab.
Middle click on a link will open a link in a new tab.

3)Single click bookmarking: While browsing if you find any page useful then you can simply bookmark that page with single click bookmarking so that you can easily find that page from Bookmarking menu. To do single click bookmarking just click star button on the location bar. Your current page will be added to the bookmark.

4)Useful keyboard Shortcut:
CTRL+L will move your cursor to the Address bar so that you can type a new site.
CTRL+K will move your cursor to the search bar so that you can search on net.
CTRL+F will move your cursor to find bar so that you can search text within your current page. This is specially helpful in order to search a word on a larger webpage.
CTRL+N will open a new firfox window.
CTRL+O will open a new file in your firefox browser window.
CTRL+SHIFT+W will close your current window.
CTRL+S will save your current page.
CTRL+P will print your web page.
CTRL+R will reload your current web page.
CTRL+0 will reset your zooming.
F11 will show your browser in full screen.
CTRL+D will bookmark your current page.
CTRL+SHIFT+D will bookmark all current page.
CTRL+SHIFT+B will prompt you to organize bookmarks.
CTRL+J will show you your download window.

5)Assign Tags to bookmarks: If you have many bookmarks entry then you can distinguish them easily by assigning them into tags. In order to do that just double click on the star button in the location bar. There you will see Tags tab. Just simply give a name. In order to give a page multiple tags just separate them by comma. Later to find the page just enter tag name in the location bar. The sites will appear from them you can choose.

6)Add ons: You can do a lots of task you wish to make firefox works. To do it,
go to Tools → Add-ons to open the Add-ons Manager and discover all the ways you can make Firefox your own.

7)Manage Search Engines: Just at the left on the search bar (You can see a big G for google) click on the drop down menu. You will see a list of search engines. Click on the Manage Search Engines and from there you can edit, move up and down and remove a search engine.

8)Clear Private Data: After browsing if you want not to keep track your browsing and downloading history you can clear your private data. To do it go to Tools and select clear private data.