The source database is a 2 Node RAC Database(10.2.0.4)
Source :
Unique Name : SHCL1DR
Db_Name : SHCL1
SID : SHCL1DR2
The destination will be a single instnace.
Destination :
Unique Name : SHCL1REC
Db_Name : SHCL1
SID : SHCL1REC
1] Prepare SHCL1DR for taking RMAN backup
- 1.a] Create directories to store the RMAN backup
mkdir /u04/RMAN_BACKUPS
- 1.b] Configure the RMAN persistant parameters to point to the backup directory and enable controlfile autobackup.
export ORACLE_SID=SHCL1DR2
rman target /
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1';
CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1';
CONFIGURE CHANNEL 3 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1';
CONFIGURE CHANNEL 4 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1';
CONFIGURE CHANNEL 5 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1';
CONFIGURE CHANNEL 6 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1';
The backupsets will be created under /u04/RMAN_BACKUPS/ and the controlfile would be backed up at the default location.
RMAN> show all; using target database control file instead of recovery catalog RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 90 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 6;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' CONNECT '*';
CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' CONNECT '*';
CONFIGURE CHANNEL 3 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' CONNECT '*';
CONFIGURE CHANNEL 4 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' CONNECT '*';
CONFIGURE CHANNEL 5 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' CONNECT '*';
CONFIGURE CHANNEL 6 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' CONNECT '*';
CONFIGURE MAXSETSIZE TO UNLIMITED;
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/10.2.0/db_1/dbs/snapcf_SHCL1DR2.f'; # default
RMAN>
- 1.c] Take the backup from on of the node
rman target /
crosscheck archivelog all;
backup database plus archivelog;
I used the below script to run RMAN in background mode.
T02[SHCL1DR2]$ cat /export/home/oraprd/bkp.sh
#!/bin/sh
rman target / <<EOF
backup database plus archivelog;
exit;
EOF
exit
T02[SHCL1DR2]$
T02[SHCL1DR2]$ nohup /export/home/orapd/bkp.sh > /export/home/orapd/bkp. 2>&1 &
2] Prepare environmet for SHCL1REC
- 2.a] Create the directories to hold the controlfile,redo logs,datafiles and archivelogs
(I used the same machine, hence restored to a different location)
mkdir /u02/oracle/shcl1rec/
This directory would hold all files pertaining to this new instance.
(If you are going to use this restored instance for Prod or Dev activities, use separate directories.
All i wanted was to test the backups, hence restoring them to same dir for simplicity)
mkdir /u01/app/oracle/admin/SHCL1REC/adump
mkdir /u01/app/oracle/admin/SHCL1REC/bdump
mkdir /u01/app/oracle/admin/SHCL1REC/cdump
mkdir /u01/app/oracle/admin/SHCL1REC/udump
mkdir /u02/oracle/shcl1rec/archivelogs
- 2.b] Restore the spfile from the controlfile backup
export ORACLE_SID=SHCL1REC
rman target /
startup nomount
restore spfile from '/u02/oracle/shcl1/flashbacklog/SHCL1DR/autobackup/2009_07_23/o1_mf_s_692991347_56j874gd_.bkp';
[Make sure that you have enough memory for the SGA as that of the Source DB, else you cannot mount using this
spfile as its a clone of the source spfile. If not enough memory, then copy the initSHCL1DR2.ora to initSHCL1REC.ora]
- 2.c] Modify the initSHCL1REC.ora file
Change the path for controlfiles,*dumps,archive_logs.
Comment the cluster parameters
Change the db_unique_name,service_names and domain
Change the SGA and PGA
Comment/change those parameters that refer the RAC instances.
- 2.d] Using this new init.ora file, start the instance in nomount mode.
- 2.e] Restore the controlfile from the backup
export ORACLE_SID=SHCL1REC
rman target /
restore controlfile from '/u02/oracle/shcl1/flashbacklog/SHCL1DR/autobackup/2009_07_23/o1_mf_s_692991347_56j874gd_.bkp';
alter database mount;
RMAN> restore controlfile from '/u02/oracle/shcl1/flashbacklog/SHCL1DR/autobackup/2009_07_22/o1_mf_s_692897986_56ff1mk7_.bkp'; Starting restore at 22-JUL-09 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=647 devtype=DISK channel ORA_DISK_1: restoring control file channel ORA_DISK_1: restore complete, elapsed time: 00:00:04 output filename=/u02/oracle/shcl1rec/control1 output filename=/u02/oracle/shcl1rec/control2 output filename=/u02/oracle/shcl1rec/control3 Finished restore at 22-JUL-09 RMAN> RMAN> alter database mount; database mounted released channel: ORA_DISK_1 RMAN>
Confirm that the control files are created under /u02/oracle/shcl1rec/.
- 2.f] Create the password file for the new instance.
RMAN need to connect to the new instance as sysdba, so create the password file.
For simplicity copy the password file of the source.
cp $ORACLE_HOME/dbs/orapwSHCL1DR2 $ORACLE_HOME/dbs/orapwSHCL1REC
- 2.g] Create the tns entry
RMAN would need dedicated connection, so if dispatchers are configured, then make sure you have SERVER=DEDICATED
embedded in the tnsenrty.
SHCL1REC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST=10.28.19.6)(PORT= 1521))
(CONNECT_DATA = (SERVICE_NAME = SHCLREC.s.com) (SERVER = DEDICATED))
)
- 2.h] Configure the persistant parameters for the new instance
Configure the rman persistant parameter (to change the connection string)
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1REC';
CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1REC';
CONFIGURE CHANNEL 3 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1REC';
CONFIGURE CHANNEL 4 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1REC';
CONFIGURE CHANNEL 5 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1REC';
CONFIGURE CHANNEL 6 DEVICE TYPE DISK FORMAT '/u04/RMAN_BACKUPS/%d_%I_%U' connect 'sys/pasd@SHCL1REC';
- 2.i] Prepare the RMAN restore script and restore it.
Since we are using a different path for datafiles, we need to specify it using the ‘SET NEWNAME’ and rename the
redo log files.
I used the below pl/sql to generate the script.
sqlplus / as sysdba
set head off
set feedback off
set pages 1000
set lines 160
set serveroutput on
--The below plsql is for creating script for renaming the datafile
declare
dfile varchar2(100);
fileno varchar2(100);
begin
for d_path in (select file#,name from v\$datafile)
loop
dfile :=SUBSTR(d_path.name, INSTR(d_path.name,'/', 1, 5)+1);
fileno := d_path.file#;
dbms_output.put_line('set newname for datafile '||fileno||' to ''/u02/oracle/shcl1rec/'||dfile||''';');
end loop;
end;
/
--The below plsql is for creating script for renaming the log files
declare
rlog varchar2(100);
begin
for l_path in (select member from v\$logfile)
loop
rlog :=SUBSTR(l_path.member, INSTR(l_path.member,'/', 1, 5)+1);
dbms_output.put_line('sql "alter database rename file '''''||l_path.member||''''' to ''''/u02/oracle/shcl1rec/'||rlog||''''' ";');
--dbms_output.put_line(rlog);
end loop;
end;
/
Below is the script that i used
T02[SHCL1DR2]$ cat /export/home/oraprd/restore.sh #!/bin/ksh rman target / <<EOF set newname for datafile 1 to '/u02/oracle/shcl1rec/system01.dbf'; set newname for datafile 2 to '/u02/oracle/shcl1rec/undo01.dbf'; set newname for datafile 3 to '/u02/oracle/shcl1rec/sysaux01.dbf'; set newname for datafile 4 to '/u02/oracle/shcl1rec/undo02.dbf'; sql "alter database rename file ''/u04/oracle/shcl1/onlinelog/redo1_1.log'' to ''/u02/oracle/shcl1rec/redo1_1.log'' "; sql "alter database rename file ''/u03/oracle/shcl1/onlinelog/redo1_2.log'' to ''/u02/oracle/shcl1rec/redo1_2.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/onlinelog/redo2_1.log'' to ''/u02/oracle/shcl1rec/redo2_1.log'' "; sql "alter database rename file ''/u03/oracle/shcl1/onlinelog/redo2_2.log'' to ''/u02/oracle/shcl1rec/redo2_2.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/onlinelog/redo3_1.log'' to ''/u02/oracle/shcl1rec/redo3_1.log'' "; sql "alter database rename file ''/u03/oracle/shcl1/onlinelog/redo3_2.log'' to ''/u02/oracle/shcl1rec/redo3_2.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/onlinelog/redo4_1.log'' to ''/u02/oracle/shcl1rec/redo4_1.log'' "; sql "alter database rename file ''/u03/oracle/shcl1/onlinelog/redo4_2.log'' to ''/u02/oracle/shcl1rec/redo4_2.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/onlinelog/redo5_1.log'' to ''/u02/oracle/shcl1rec/redo5_1.log'' "; sql "alter database rename file ''/u03/oracle/shcl1/onlinelog/redo5_2.log'' to ''/u02/oracle/shcl1rec/redo5_2.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/onlinelog/redo6_1.log'' to ''/u02/oracle/shcl1rec/redo6_1.log'' "; sql "alter database rename file ''/u03/oracle/shcl1/onlinelog/redo6_2.log'' to ''/u02/oracle/shcl1rec/redo6_2.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/onlinelog/redo7_1.log'' to ''/u02/oracle/shcl1rec/redo7_1.log'' "; sql "alter database rename file ''/u03/oracle/shcl1/onlinelog/redo7_2.log'' to ''/u02/oracle/shcl1rec/redo7_2.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/onlinelog/redo8_1.log'' to ''/u02/oracle/shcl1rec/redo8_1.log'' "; sql "alter database rename file ''/u03/oracle/shcl1/onlinelog/redo8_2.log'' to ''/u02/oracle/shcl1rec/redo8_2.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/standby_redo01.log'' to ''/u02/oracle/shcl1rec/standby_redo01.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/standby_redo02.log'' to ''/u02/oracle/shcl1rec/standby_redo02.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/standby_redo03.log'' to ''/u02/oracle/shcl1rec/standby_redo03.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/standby_redo04.log'' to ''/u02/oracle/shcl1rec/standby_redo04.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/standby_redo05.log'' to ''/u02/oracle/shcl1rec/standby_redo05.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/standby_redo06.log'' to ''/u02/oracle/shcl1rec/standby_redo06.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/standby_redo07.log'' to ''/u02/oracle/shcl1rec/standby_redo07.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/standby_redo08.log'' to ''/u02/oracle/shcl1rec/standby_redo08.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/standby_redo09.log'' to ''/u02/oracle/shcl1rec/standby_redo09.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/standby_redo10.log'' to ''/u02/oracle/shcl1rec/standby_redo10.log'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/SHCL1_2srl0.f'' to ''/u02/oracle/shcl1rec/SHCL1_2srl0.f'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/SHCL1_2srl1.f'' to ''/u02/oracle/shcl1rec/SHCL1_2srl1.f'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/SHCL1_2srl2.f'' to ''/u02/oracle/shcl1rec/SHCL1_2srl2.f'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/SHCL1_2srl3.f'' to ''/u02/oracle/shcl1rec/SHCL1_2srl3.f'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/SHCL1_2srl4.f'' to ''/u02/oracle/shcl1rec/SHCL1_2srl4.f'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/SHCL1_1srl0.f'' to ''/u02/oracle/shcl1rec/SHCL1_1srl0.f'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/SHCL1_1srl1.f'' to ''/u02/oracle/shcl1rec/SHCL1_1srl1.f'' "; sql "alter database rename file ''/u04/oracle/shcl1/dataguard/SHCL1_1srl2.f'' to ''/u02/oracle/shcl1rec/SHCL1_1srl2.f'' "; restore database;switch datafile all; recover database; exit; EOF exit T02[SHCL1DR2]$ T02[SHCL1DR2]$ nohup /export/home/oraprd/restore.sh > /export/home/oraprd/restore.log 2>&1 &
If you are applying the archive logs to recover to a point in time, you might want to disable ‘Block Change Tracking’ before ‘recover’ if it is enabled.
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING
- 2.j] Open the database using RESETLOGS
rman target /
alter database open resetlogs;
Opening the database would create the redologs, but not the standby logs.
- 2.k] Remove the standby redologs
Since the source db contained standby redo logs, either we should create it or should drop them, else we would
get ORA-00313 errors as the files are not created along with the redologs.
Errors in file /u01/app/oracle/admin/SHCL1REC/bdump/shcl1rec_arc2_12529.trc:
ORA-00313:
*** SERVICE NAME:(SYS$BACKGROUND) 2009-07-24 17:59:53.687
*** SESSION ID:(631.5) 2009-07-24 17:59:53.687
*** 2009-07-24 17:59:53.687 2561 kcrf.c
tkcrf_clear_srl: Started clearing Standby Redo Logs
ORA-00312: /u02/oracle/shcl1rec/standby_redo01.log'
SVR4 Error: 2: No such file or directory
Additional information: 3
ORA-00312: /u02/oracle/shcl1rec/standby_redo02.log'
SVR4 Error: 2: No such file or directory
SQL> select group#,status,type from v$logfile;
GROUP# STATUS TYPE
---------- --------------------- ---------------------
1 ONLINE
1 ONLINE
2 ONLINE
2 ONLINE
3 ONLINE
3 ONLINE
4 ONLINE
4 ONLINE
5 ONLINE
5 ONLINE
6 ONLINE
6 ONLINE
7 ONLINE
7 ONLINE
8 ONLINE
8 ONLINE
9 STANDBY
10 STANDBY
11 STANDBY
12 STANDBY
13 STANDBY
14 STANDBY
15 STANDBY
16 STANDBY
17 STANDBY
18 STANDBY
19 STANDBY
20 STANDBY
21 STANDBY
22 STANDBY
23 STANDBY
24 STANDBY
25 STANDBY
26 STANDBY
34 rows selected.
alter database drop standby logfile group 9
alter database drop standby logfile group 10
alter database drop standby logfile group 11
alter database drop standby logfile group 12
alter database drop standby logfile group 13
alter database drop standby logfile group 14;
alter database drop standby logfile group 15;
alter database drop standby logfile group 16;
alter database drop standby logfile group 17;
alter database drop standby logfile group 18;
alter database drop standby logfile group 19;
alter database drop standby logfile group 20;
alter database drop standby logfile group 21;
alter database drop standby logfile group 22;
alter database drop standby logfile group 23;
alter database drop standby logfile group 24;
alter database drop standby logfile group 25;
alter database drop standby logfile group 26;
- 2.l] Disable the redo thread(unused)
Typically, an oracle instance would have only 1 redo thread. An n node RAC would have n redo threads.
Since we restored the backup of a 2 node RAC database to a single instance, whilst startup of the single instnace
Oracle would consider one of the thread as Private to the instance and the other as Public.
A peep into the alert.log says, this instance has mounted redo thread 1.
:
Mon Jul 27 13:45:56 2009
Successful mount of redo thread 1, with mount id 1863696975
Mon Jul 27 13:45:56 2009
Database mounted in Exclusive Mode
Completed: ALTER DATABASE MOUNT
:
SQL> select group#,thread#,sequence#,status from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ------------------------------------------------
1 1 5 INACTIVE
2 1 6 ACTIVE
3 1 7 CURRENT
4 1 4 INACTIVE
5 2 1 INACTIVE
6 2 2 INACTIVE
7 2 3 INACTIVE
8 2 4 CURRENT
8 rows selected.
Groups 1-4 belong to the Thread 1, which is private to this instance and 5-8 belong to Thread 2, which is public.
Means, this instance would write the commit/rollback changes only to thread 1, but in case of recovery it would use
thread 2 also.
A look into the archivelog destination says,
-rw-r----- 1 oraprd oinstall 1024 Jul 27 14:03 SHCL1REC_2_2_693078959.arch
-rw-r----- 1 oraprd oinstall 4768768 Jul 27 14:03 SHCL1REC_1_5_693078959.arch
-rw-r----- 1 oraprd oinstall 1024 Jul 27 2009 SHCL1REC_2_3_693078959.arch
-rw-r----- 1 oraprd oinstall 1798144 Jul 27 2009 SHCL1REC_1_6_693078959.arch
The size of the archive logs created by Thread 2 are much small when compared to those created by Thread 1.
I used the logminer utility to confirm that the Thread 2 does not contain any Undo/Rollback data.
–Mining archvielog from Thread 1
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/u02/oracle/shcl1rec/archivelogs/SHCL1REC_1_6_693078959.arch', OPTIONS => DBMS_LOGMNR.NEW);
EXECUTE DBMS_LOGMNR.START_LOGMNR( OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
SQL> select count(8) from V$LOGMNR_CONTENTS;
COUNT(8)
----------
5449
EXECUTE DBMS_LOGMNR.END_LOGMNR();
–Mining archvielog from Thread 2
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/u02/oracle/shcl1rec/archivelogs/SHCL1REC_2_3_693078959.arch', OPTIONS => DBMS_LOGMNR.NEW);
EXECUTE DBMS_LOGMNR.START_LOGMNR( OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
SQL> select count(8) from V$LOGMNR_CONTENTS;
COUNT(8)
----------
0
EXECUTE DBMS_LOGMNR.END_LOGMNR();
No data is being written to the thread 2 ( log groups# 5,6,7 and 8 ), so we can disable it using:
ALTER DATABASE DISABLE THREAD 2;
SQL> select group#,thread#,sequence#,status from v$log;
GROUP# THREAD# SEQUENCE# STATUS
---------- ---------- ---------- ------------------------------------------------
1 1 5 INACTIVE
2 1 6 INACTIVE
3 1 7 CURRENT
4 1 4 INACTIVE
5 2 1 INACTIVE
6 2 2 INACTIVE
7 2 3 INACTIVE
8 2 4 INACTIVE
8 rows selected.
Since Group# 8 was the CURRENT(of Thread 2) before disabling, archive it.
SQL> alter system archive log group 8;
System altered.
Now we can drop the groups that belonged to Thread 2.
ALTER DATABASE DROP LOGFILE GROUP 5;
ALTER DATABASE DROP LOGFILE GROUP 6;
ALTER DATABASE DROP LOGFILE GROUP 7;
ALTER DATABASE DROP LOGFILE GROUP 8;
SQL> select group#,thread#,sequence#,status from v$log; GROUP# THREAD# SEQUENCE# STATUS ---------- ---------- ---------- ------------------------------------------------ 1 1 5 INACTIVE 2 1 6 INACTIVE 3 1 7 CURRENT 4 1 4 INACTIVE
Hello,
can you tell me what is the difference between db_unique_name and db_name ?
Thank you for your response.
The “db_unique_name” says it all. It is unique. One scenario where in you would need this is, if you plan to have your standby on the same server as the primary (though its a stupid decision..but when some shop run out of money.. they keep ’em together.), the db_name would be same, but the db_unique_name should be different. A lock file would be created under $ORACLE_HOME/dbs based on the db_unique_name. If the db_unique_name=INSYS and db_name=INSYSDB, then once you start the instance the lock file will be created and it would be lkINSYS.
Hope this helps
Pingback: Other DBA Related « Center Point for Oracle DBA & Kuwait Info