Wednesday, May 7, 2014

How to find Cluster name on Oracle RAC

How to find Cluster name on Oracle RAC

Environment Details:
OS: Linux 5.8
User: oracle
Two Node RAC: linux01, linux02
Database Version: 11.2.0.4.0
Oracle Home: /u01/app/oracle/product/11.2.0/dbhome_1
Grid Home: /u01/app/11.2.0/grid

There are various method through which we can find out the cluster name. Few of them listed below

Set the GRID HOME & PATH Variable
[oracle@linux01 ~]export ORACLE_HOME=/u01/app/11.2.0/grid
[oracle@linux01 ~]$ export PATH=$ORACLE_HOME/bin:$PATH

Method 1: Execute the below command
[oracle@linux01 ~]$ cemutlo -n
racclu01

Method 2: Execute the below command
[oracle@linux01 ~]$ olsnodes -c
racclu01

Method 3: In Grid Home, there is a cdata directory, inside there will be a directory having the same name as cluster name
[oracle@linux01 ~]$ cd $ORACLE_HOME/cdata
[oracle@linux01 /u01/app/11.2.0/grid/cdata]$ ls
linux01  linux01.olr  localhost racclu01

Method 4: Do a ocrdump and open the dumpfile. Search for SYSTEM.css.clustername in the file.
[oracle@linux01 ~]$ ocrdump
[oracle@linux01 ~]$ vi OCRDUMPFILE

[SYSTEM.css.clustername]
ORATEXT : racclu01
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : root, GROUP_NAME : root}


Monday, April 7, 2014

Password less ftp setup in linux

Environment Details:
Source Server Name: linux_src
Destination Server Name: linux_dest
Operating System: Red Hat Enterprise Linux Server 
Version: Release 6.4

When we connect to a server using ftp, we need to provide the username and password of the destination server.
We are going to setup a password less ftp connection authentication to the destination server

Please follow the below steps

Steps(Destination Server):
1. Verify whether vsftpd package is installed or not on the server, if not then install it.
[root@linux_dest bin]# rpm -qa|grep vsftpd
vsftpd-2.2.2-11.el6.x86_64

2. Take a backup of /etc/vsftpd/vsftpd.conf file and edit the value of anonymous_enable to YES
[root@linux_dest ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
[root@linux_dest ~]# vi /etc/vsftpd/vsftpd.conf

3. Check whether ftp services are running or not, if not then start it
[root@linux_dest bin]# service vsftpd status
vsftpd is stopped
[root@linux_dest bin]# service vsftpd start
Starting vsftpd for vsftpd:                          [  OK  ]
[root@linux_dest bin]# service vsftpd status
vsftpd (pid 10652) is running...

Configuration on the destination server complete

Verify whether we are able to connect to the destination server using ftp or not(since we have not done any configuration on source server yet, it will ask for a username and password

[oracle@linux_src ~]$ ftp linux_dest
Connected to linux_dest (10.11.11.180).
220 (vsFTPd 2.2.2)
Name (linux_dest:testuser): oracle
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

We are good, please follow the below steps on source server

Steps(Source Server from where we are planning to connect to the destination server):
1. In our home directory create a file .netrc and change its permission to 400
[oracle@linux_src ~]$ pwd
/home/oracle
[oracle@linux_src ~]$ touch .netrc
[oracle@linux_src ~]$ chmod 400 .netrc

2. Edit the file .netrc and put the value in the following format
machine <dest_server_name> login <username> password <password>
e.g. machine linux_dest login oracle password oracle

[oracle@linux_src ~]$ vi .netrc

3. cat .netrc
machine linux_dest login oracle password oracle

4. Now issue the ftp command from the source to connect to destination server

[oracle@linux_src ~]$ ftp linux_dest
Connected to linux_dest (10.11.11.180).
220 (vsFTPd 2.2.2)
331 Please specify the password.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

We are successfully connected to the destination server without supplying the username and password.

Saturday, March 29, 2014

Starting a Pluggable database in 12c

In Oracle 12c when we open a CDB (Container database), the PDBs(Pluggable Databases in the CDB) are by default in mount mode.

Solution: We either need to open the pluggable databases manually or we can create a trigger which can bring up the pluggable databases once the CDB is started.

If we want the PDBs to be opened manually issue the below command in the CDB:
alter pluggable database <pdb_name> open;

If we want the PDBs to be opened automatically, we can create a database event trigger that opens all the PDBs after STARTUP.

Create the below trigger in the CDB, which will bring up all the pluggable database when the CDB instance starts 

CREATE TRIGGER OPEN_ALL_PDBs
after startup on database
begin
execute immediate 'alter pluggable database all open';
end Open_ALL_PDBs;
/

Tuesday, February 18, 2014

How to move oracle datafile from Non ASM to ASM

How to move datafile from Non ASM (file system) to ASM

Solution: Verify the Name and location of datafile and in which tablespace the datafile resides

SQL> select tablespace_name "Tablespace",file_id "ID",file_name "File", bytes/1024/1024 "Size" from dba_data_files where TABLESPACE_NAME='TEST_TBS';

Tablespace ID File                                 Size
---------- --- -------------------------------------- ---------
TEST_TBS    8 /u01/oradata/orcl/test_tbs01.dbf         2016

Verify if you have sufficient space available on the ASM Disk Group

SQL> select name,total_mb,free_mb, state from v$asm_diskgroup;
NAME TOTAL_MB FREE_MB STATE
----- -------- ---------- ---------
DATA 101355 59017 MOUNTED


Take the tablespace offline

SQL> alter tablespace TEST_TBS offline;
Tablespace altered.


SQL> Select tablespace_name,status from dba_tablespaces where tablespace_name='TEST_TBS';

TABLESPACE_NAME STATUS
--------------- -------
TEST_TBS OFFLINE

Use the RMAN command to copy the datafile from the file system to asm disk
[oracle@linux01 ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Tue Feb 18 06:15:45 2014

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=2195477165)

RMAN> copy datafile 8 to '+DATA';

Starting backup at 18-FEB-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=212 instance=ORCL2 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00008 name=/u01/oradata/orcl/test_tbs01.dbf
output file name=+DATA/orcl/datafile/test_tbs01.259.123 tag=TAG20140218T061630 RECID=1 STAMP=839831287
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:11:45
Finished backup at 18-FEB-14

RMAN> switch datafile 8 to copy;

datafile 8 switched to datafile copy "+DATA/orcl/datafile/test_tbs01.259.123"


Bring back the tablespace online

[oracle@linux01 ~]$ sqlplus sys as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Feb 18 06:41:36 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Enter password: 

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> alter tablespace TEST_TBS online;
Tablespace altered.

Check the new location of the data file and the status

SQL> Select tablespace_name,status from dba_tablespaces where tablespace_name='TEST_TBS';

TABLESPACE_NAME STATUS
--------------- -------
TEST_TBS ONLINE

SQL> select tablespace_name "Tablespace",file_id "ID",file_name "File", bytes/1024/1024 "Size" from dba_data_files where TABLESPACE_NAME='TEST_TBS';

Tablespace ID File                                 Size
---------- --- -------------------------------------- ---------
TEST_TBS    8  +DATA/orcl/datafile/test_tbs01.259.123  2016


Remove the file from the OS file system:
rm /u01/oradata/orcl/test_tbs01.dbf

Friday, February 7, 2014

SP2-1503: Unable to initialize Oracle call interface

Issue: In one my environment where multiple databases of different versions(9i, 10gR2, 11gR1, 11gR2) are running simultaneously, after I have set the ORACLE_HOME & PATH variables I received the below error while logging into the server.

oracle@linux01=> export ORACLE_HOME=/u01/app/oracle/product/11.1.0.7.0
oracle@linux01=> export PATH=$ORACLE_HOME/bin:$PATH
oracle@linux01=> sqlplus sys as sysdba

SP2-1503: Unable to initialize Oracle call interface
SP2-0152: ORACLE may not be functioning properly

Solution: After carefully analyzing the environment variables(initial troubleshooting), I observed that the LD_LIBRARY_PATH variable was pointing to a different Oracle Home. Corrected that and was successfully able to login to the database.

Previous Value:
oracle@linux01=> echo $LD_LIBRARY_PATH
/u01/app/oracle/product/11.2.0.3.0/lib

Setting to correct value:
oracle@linux01=> export LD_LIBRARY_PATH=/u01/app/oracle/product/11.1.0.7.0/lib

After Modifying:
oracle@linux01=> echo $LD_LIBRARY_PATH
/u01/app/oracle/product/11.1.0.7.0/lib