Most of the DBA's work 24 x 7 and finds difficiult and time consuming to configure the Whole List of Server settings in PUTTY. I had gone through Google hits and found one workaround to import your putty settings .
Work Around
************
1. Run the command --> regedit /e "%userprofile%\desktop\putty.reg" HKEY_CURRENT_USER\Software\SimonTatham at the command prompt.
2. Copy the Putty.exe and putty.reg onto Target Machine.
3. Right Click the putty.reg and click the option "Merge", this will import the settings to the target registry, and after that you can see all the server details which were defined by you earlier in Source Machine.
Note:- SimonTatham is the person behind the PUTTY Software.
Monday, November 26, 2007
How to Import the PUTTY Settings from One Machine to Another Machine
Posted by M A D A N M O H A N at 2:15 PM 7 comments
Friday, November 23, 2007
Copy and Compress the Datafiles using multiple Processes.
Following are the scripts used for copying and compressing the Datafiles within the Same Server.
Scripts
*********
1. copy_process.sh ------> This File consists of all the functions which are used for copy and compress.
2. copy_file_process.sh ------> This File consists of commands used for copying , compressing , uncompressing . This file is being called by the copy_process.sh
3. worker_no ------> Define the No. of Workers (Process) for the whole process. This value can be dynamically changed by using the command , echo 4 > worker_no.
copy_process.sh
****************
#! /usr/bin/ksh
##################################################################################
# bkp_dir_path is the source (TO directory ) name
# src_path is the target (From directory ) name
# worker_pid is the worker pid file
# worker_no is the number of workers, can be adjusted while the script is running
# example, to set 3 workers, perform the following before running the script: echo 3 > worker_no
# file
function Gen_Env
{
bkp_dir_path="/tmp/to_data"
src_path="/tmp/from_data"
Log_Date=$(date +"%d%m%y")
worker_pid=/tmp/copy_process_
worker_no=/tmp/worker_no
worker_max_count=0
COPY_FILE_PROCESS=/tmp/copy_file_process.sh
File_List=$(cd $src_path; ls -l *.dbf |grep -v cntrl | awk '{print $9}')
}
function Copy_Phase
{
num_copy_workers=`cat $worker_no`
if [[ $worker_max_count -lt $num_copy_workers ]] then
worker_max_count=num_copy_workers
fi
worker=1
while [[ $worker -le $num_copy_workers ]]
do
worker_file=${worker_pid}${worker}.pid
if [[ ! -s $worker_file ]] then
echo "Busy" > $worker_file
$COPY_FILE_PROCESS $src_path $datafile $worker $worker_file $bkp_dir_path &
echo "Copy Assigned to Worker pid file: $worker"
Copy_Assigned=Yes
return
fi
let worker=$worker+1
done
sleep 5
}
function Check_Final_Copy
{
worker=1
while [[ $worker -le $worker_max_count ]]
do
worker_file=${worker_pid}${worker}.pid
if [[ -s $worker_file ]] then
echo "Background Copy is still Running... $(date)"
sleep 60
CheckFinal=No
return
else
rm -f $worker_file
fi
let worker=$worker+1
done
CheckFinal=Yes
}
function main
{
Gen_Env
echo "Total number of Datafiles in the Source Instance"
src_dbf_count=`ls $src_path|wc -l`
echo $src_dbf_count
date > $bkp_dir_path/time.log
for datafile in `echo $File_List`
do
echo "Copy $datafile : $(date)"
echo "Wait for the Next Worker ... $(date)"
Copy_Assigned=No
while [[ $Copy_Assigned == 'No' ]]
do
Copy_Phase
done
done
CheckFinal=No
while [[ $CheckFinal == 'No' ]]
do
Check_Final_Copy
done
date >> $bkp_dir_path/time.log
echo "**********************************************"
echo " Copy Process Completed Successfully"
echo "**********************************************"
echo "Number of Data files copied to the target "
target_dbf_count=`ls $bkp_dir_path|wc -l`
echo $target_dbf_count
}
main
################### End of Copy_process.sh ###########
copy_file_process.sh
**********************
#!/usr/bin/ksh
##############################################################
## Copy and compress script
## Phase - I = Copy the files from Source to Destination
## Phase - II = Compress the Destination Files.
## Phase - III = Uncompress the Destination File. (if required)
##
##
##############################################################
s_path=$1
filename=$2
worker_no=$3
statusfile=$4
d_path=$5
statuss=`cat $statusfile`
##############################################################
if [[ $statuss == 'Busy' ]] then
echo "$$" >$statusfile
## Phase I
echo "Copying $filename by worker $worker_no"
cp $s_path/$filename $d_path
sleep 5
# Phase II
echo "Zipping $filename by worker $worker_no"
/usr/bin/gzip $d_path/$filename
sleep 5
#Phase III
#echo "Unzipping $filename.gz by worker $worker_no"
#/usr/bin/gunzip $s_path/$filename.gz
>$statusfile
else
echo "Process is not Busy"
fi
echo '*********************'
################### END of copy_file_process.sh #############
Execution Syntax
*****************
1. Need to update the directory structure for the below variables within the script "copy_process.sh".
a) bkp_dir_path ---> Where to backup the datafiles.
b) src_path ---> Location of source data files.
c) COPY_FILE_PROCESS ---> Location of "copy_file_process.sh script.
Syntax
********
nohup ./Location of copy_process.sh &
Posted by M A D A N M O H A N at 2:35 PM 1 comments
Tuesday, November 20, 2007
Upgrading the Recovery Catalog Database from 9i to 10g
The Rman Catalog Upgarde is same as normal Database upgrade and can be accomplished in two ways.
a) Updrade the Database from 9i to 10g
- Connect to rman catalog datase.
- Issue the rman command "upgrade catalog" as this upgrades the catalog database from 09.02.00 to 10.02.00.03
b) Fresh Install of 10g Database / Use the existing 10g Database.
- Create the rman user and grant create session, recovery_catalog_owner, create type to rman user.
- Export import of Rman Schema
- Issue the rman Command :upgrade catalog"
Note:- You will encounter the below warning or error message , if you have not upgraded the catalog after the database version upgrade.
connected to target database: DSSPROD (DBID=1021024992)
connected to recovery catalog database
PL/SQL package RMAN.DBMS_RCVCAT version 09.02.00 in RCVCAT database is too old
Solution
**********
1. Connect to recovery catalog database as rman user.
2. issue the rman command " upgrade catalog" twice
Posted by M A D A N M O H A N at 9:18 AM 1 comments
Friday, November 16, 2007
Sizing the UNDO TABLESPACE for Automatic Undo management
Sizing an UNDO tablespace requires three pieces of data.
- (UR) UNDO_RETENTION in seconds
- (UPS) Number of undo data blocks generated per second
- (DBS) Overhead varies based on extent and file size (db_block_size)
UndoSpace = [UR * (UPS * DBS)] + (DBS * 24)
Two can be obtained from the initialization file: UNDO_RETENTION and DB_BLOCK_SIZE.
The third piece of the formula requires a query against the database. The number of undo blocks generated per second can be acquired from V$UNDOSTAT.
The following formula calculates the total number of blocks generated and divides it by the amount of time monitored, in seconds:
SQL>SELECT (SUM(undoblks))/ SUM ((end_time - begin_time) * 86400) FROM v$undostat;
Column END_TIME and BEGIN_TIME are DATE data types. When DATE data types are subtracted, the result is in days. To convert days to seconds, you multiply by 86400, the number of seconds in a day.
The result of the query returns the number of undo blocks per second. This value needs to be multiplied by the size of an undo block, which is the same size as the database block defined in DB_BLOCK_SIZE.
The following query calculates the number of bytes needed:
SQL> SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes"
FROM (SELECT value AS UR FROM v$parameter WHERE name = 'undo_retention'),
(SELECT (SUM(undoblks)/SUM(((end_time - begin_time)*86400))) AS UPS FROM
v$undostat), (select block_size as DBS from dba_tablespaces where
tablespace_name= (select value from v$parameter where name
= 'undo_tablespace'));
Posted by M A D A N M O H A N at 11:43 AM 1 comments
Thursday, November 15, 2007
Enabling , Disabling , Change the password protection on the RDBMS and Tools (8.0.6) listeners in an Oracle Applications 11.5.x
Pre-requisites
The steps in this guide should be performed after applying the following AutoConfig patches:-
3453499 (11i.ADX.F)
5225940 (Post ADX.F Fixes)
5107107 - AUTOCONFIG ENGINE & CONFIG TOOLS ROLLUP PATCH N or higher
How to enable/disable/change the password
To enable/disable or change the password script addlnctl.pl must be used.
DB Tier: $ORACLE_HOME/appsutil/bin/addlnctl.pl
Apps Tier: $AD_TOP/bin/addlnctl.pl
This has the following syntax:-
Valid arguments for addlnctl.pl:
help : get usage information
contextfile : provide Applications or DB Tier context file name
Set the Applications (APPSORA.env) or RBDMS ($CONTEXT_NAME.env)
Run one of the following commands
Example 1: To enable listener password
addlnctl.pl contextfile=$CONTEXT_FILE enablepassword
Example 2: To disable listener password
addlnctl.pl contextfile=$CONTEXT_FILE disablepassword
Example 3: To change existing listener password
addlnctl.pl contextfile=$CONTEXT_FILE changepassword
Further information:
This will change the contextfile variable s_enable_listener_password to "ON" or "OFF"
Update/Remove the listener.ora with a PASSWORDS_PROD entry and the encypted password value
Example
PASSWORDS_PROD=BC73ED1DD01AC862
If the listener is not running it will not start it.
If the listener is currently running it will stop and restart it.
Controlling a password protected listener .Once the password is enabled the following methods can now be used to stop/start the listener:-
Apps Tier:
Use script $COMMON_TOP/admin/scripts/$CONTEXT_NAME/adalnctl.sh
Examples:-
$COMMON_TOP/admin/scripts/$CONTEXT_NAME/adalnctl.sh start
$COMMON_TOP/admin/scripts/$CONTEXT_NAME/adalnctl.sh stop
This script will check the listener.ora for the encypted password, and use this to stop/start the listener.
DB Tier:
Method A: Use script $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME/addlnctl.sh
Examples:-
$ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME/addlnctl.sh start PROD
$ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME/addlnctl.sh stop PROD
This script will check the listener.ora for the encypted password, and use this to stop/start the listener.
Method B : Use command line options in the Listener Control Utility LSNRCTL
Start the Listener Control Utility
$ lsnrctl
Enter the listener name
LSNRCTL > set current_listener PROD
Enter password for the Listener
LSNRCTL > set password
Examples:
LSNRCTL > set password 654FA907952B15B
or:
LSNRCTL > set password
Password: apps
To determine the Status of the listener:
LSNRCTL > status
To Stop the listener:
LSNRCTL > stop
To start the listener:
LSNRCTL > start
To exit :
LSNRCTL > start
Posted by M A D A N M O H A N at 3:38 PM 2 comments
Tuesday, November 6, 2007
Changing DB 32-Bit to 64-Bit
INSTALLING THE 64BIT RELEASE
1. Ensure that there is ample free size for the 64bit release installation.
Recommended free space should be 3G.
2. Start the Installer GUI.
3. On the File Locations Screen, create a new name and path for the 64bit
oracle installation under the Destination.
A typical entry would be
Name: orahome920_64b
Path: /u01/app/oracle/product/9.2.0-64b
4. Proceed with the installation. Stop at the configuration assistant
configuration screen.
5. Install the latest 64bit patch set under the new oracle installation.
CHANGING THE WORD-SIZE OF YOUR CURRENT RELEASE
The instructions in this section guide you through changing the word-size of
your current release (switching from 32-bit software to 64-bit software or vice versa).
Complete the following steps to change the word-size of your current release:
1. Start SQL*Plus.
2. Connect to the database instance AS SYSDBA.
3. Run SHUTDOWN IMMEDIATE on the database:
SQL> SHUTDOWN IMMEDIATE
4. Perform a full offline backup of the data depending on the available backup
mechanism, eg BCV, Unix file copy.
5. If the initialization parameter file eg initSID.ora, spfileSID.ora, listener.ora, sqlnet.ora resides within the old OR
ACLE_HOME, then copy it to the corresponding location of the new 64b it ORACLE_HOME. If the parameter files are symbol
ic links to another location, then the symbolic links have to be created in the new ORACLE_HOME.
Example:
Old $ORACLE_HOME/dbs
initSID.ora->/u01/app/oracle/admin/lss/initSID.ora
spfileSID.ora->/u01/app/oracle/admin/lss/spfileSID.ora
The same links have to be created in new $ORACLE_HOME/dbs.
6. Change your active Oracle instance environment to point at the new 64Bit ORACLE_HOME.
Eg
a)
Edit /var/opt/oracle/oratab if using dbhome/oraenv to set the environment.
lss:/u01/app/oracle/product/9.2.0:Y
i) set it to the new 64bit Oracle Home path
lss:/u01/app/oracle/product/9.2.0-64b:Y
b)
Change the essential environment setting eg $ORACLE_HOME,$LD_LIBRARY_PATH to use new 64bit Oracle Home Path if h
ardcoded
export ORACLE_HOME=/u01/app/oracle/product/9.2.0
Change to
export ORACLE_HOME=/u01/app/oracle/product/9.2.0-64b
7. Set AQ_TM_PROCESSES=0 if it is not.
a) If using initSID.ora to start instance, then add it to the init file.
b) If using spfileSID.ora to start instance,then the database can be startup and the parameter set by running th
e below command.
SQL> ALTER SYSTEM SET aq_tm_processes=0 SCOPE=SPFILE;
c) shutdown the database again.
9. Set _system_trig_enabled = false.
a) If using initSID.ora to start instance, then add it to the init file.
b) If using spfileSID.ora to start instance, then the database can be startup and the parameter set by running th
e below command.
SQL> ALTER SYSTEM SET "_system_trig_enabled"=FALSE SCOPE=SPFILE;
c) shutdown the database again.
The parameter should be set to FALSE for scripts that perform dictionary operations as the objects on which the triggers d
epend may become invalid or be dropped, causing the triggers to fail and thus preventing the scripts from running successf
ully.
10. When migrating from a 32-bit Oracle version to a 64-bit Oracle version, Oracle recommends doubling the size of paramet
ers such as:
SHARED_POOL_SIZE
SHARED_POOL_RESERVED_SIZE
LARGE_POOL_SIZE
11. At a system prompt, change to the new 64bit ORACLE_HOME/rdbms/admin
directory.
12. Start SQL*Plus.
13. Connect to the database instance AS SYSDBA.
14. Run STARTUP RESTRICT:
SQL> STARTUP RESTRICT
15. Run the following script:
SQL> @?/rdbms/admin/catalog.sql
16. Check for DBMS_PACKAGE validity.
17. If invalid, run below
SQL> alter package dbms_standard compile;
18. Run the following script:
SQL> @?/rdbms/admin/catproc.sql
19. Set the system to spool results to a log file for later verification of
success.
SQL> SPOOL /tmp/catoutw.log
20. Run utlirp.sql:
SQL> @?/rdbms/admin/utlirp.sql
The utlirp.sql script recompiles existing PL/SQL modules in the format required by the new database. This script first
alters certain dictionary tables. Then, it reloads package STANDARD and DBMS_STANDARD, which are necessary for using P
L/SQL. Finally, it triggers a recompile of all PL/SQL modules, such as packages, procedures, types, and so on.
21. Turn off the spooling of script results to the log file:
SQL> SPOOL OFF
Then, check the spool file and verify that the packages and procedures compiled successfully. You named the spool fil
e in Step 12; the suggested name was catoutw.log. Correct any problems you find in this file.
22. Run ALTER SYSTEM DISABLE RESTRICTED SESSION:
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
23. Remove the parameter aq_tm_processes or set value back to the original value.
a) If using initSID.ora to start instance, then remove or edit it from the init file after shutting down the data
base.
b) If using spfileSID.ora to start instance, then the parameter can be change by running the below command.
SQL> ALTER SYSTEM SET aq_tm_processes=
To remove the parameter.
SQL> ALTER SYSTEM RESET aq_tm_processes SCOPE=SPFILE SID=.*.;
24. Remove the parameter _system_trig_enabled = FALSE
a) If using initSID.ora to start instance, then remove it from the init file after shutting down the database.
b) If using spfileSID.ora to start instance, then the parameter can be removed by running the below command.
SQL> ALTER SYSTEM RESET "_system_trig_enabled" SCOPE=SPFILE SID=.*.;
25. The word-size of your database is changed. The database can be shutdown and reopen for normal use.
Posted by M A D A N M O H A N at 4:56 PM 15 comments