#######################
TO FIND SQL TEXT FROM SID
#######################
select a.sid,a.program,b.sql_text
from v$session a, v$sqltext b
where a.sql_hash_value = b.hash_value
and a.sid=429
order by a.sid,hash_value,piece;
Posted by Pavan DBA on March 30, 2012
#######################
TO FIND SQL TEXT FROM SID
#######################
select a.sid,a.program,b.sql_text
from v$session a, v$sqltext b
where a.sql_hash_value = b.hash_value
and a.sid=429
order by a.sid,hash_value,piece;
Posted in Performance Tuning, Scripts | Tagged: how to find sql, how to find sql text, how to find sql text with sid, how to find sql with sid, script to find sql text with sid of a session, script to get sql for a session, script to get sql for a sid, script to get sql text, script to get sql text for a session | Leave a Comment »
Posted by Pavan DBA on March 30, 2012
Sometimes, we will be getting a requirement to resize the datafile to a lower value in order to create some space in the mount point (file system). In that case, how we would know which datafile and to what size we can lower it? The below script will helps us in that….
###################################################
SCRIPT TO CALCUTE POSSIBLE RESIZE VALUE
###################################################
set verify off
column file_name format a50 word_wrapped
column smallest format 999,990 heading “Smallest|Size|Poss.”
column currsize format 999,990 heading “Current|Size”
column savings format 999,990 heading “Poss.|Savings”
break on report
compute sum of savings on report
column value new_val blksize
select value from v$parameter where name = ‘db_block_size’
/
select file_name,
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
ceil( blocks*&&blksize/1024/1024) currsize,
ceil( blocks*&&blksize/1024/1024) -
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
from dba_data_files a,
( select file_id, max(block_id+blocks-1) hwm
from dba_extents
group by file_id ) b
where a.file_id = b.file_id(+)
/
select file_name,
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
ceil( blocks*&&blksize/1024/1024) currsize,
ceil( blocks*&&blksize/1024/1024) -
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
from dba_temp_files a,
( select file_id, max(block_id+blocks-1) hwm
from dba_extents
group by file_id ) b
where a.file_id = b.file_id(+)
/
column cmd format a75 word_wrapped
select ‘alter database datafile ”’ || file_name || ”’ resize ‘ ||
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) || ‘m;’ cmd
from dba_data_files a,
( select file_id, max(block_id+blocks-1) hwm
from dba_extents
group by file_id ) b
where a.file_id = b.file_id(+)
and ceil( blocks*&&blksize/1024/1024) -
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0
/
select ‘alter database tempfile ”’ || file_name || ”’ resize ‘ ||
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) || ‘m;’ cmd
from dba_temp_files a,
( select file_id, max(block_id+blocks-1) hwm
from dba_extents
group by file_id ) b
where a.file_id = b.file_id(+)
and ceil( blocks*&&blksize/1024/1024) -
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0
/
Posted in Administration, Scripts | Tagged: possible resize value for a datafile, script to check possible resize value for a datafile | 2 Comments »
Posted by Pavan DBA on March 30, 2012
Friends, Many a times we will be requiring to resize a datafile. For suppose, we have a tablespace with 3 datafiles with equal size. Then how we would be knowing which datafile to increase?? It is based on free space in a datafile. So, the below script will provide the info of how much free space is left in each datafile for a tablespace
#################################################
DATAFILE FREE SIZE
#################################################
SELECT SUBSTR (df.NAME, 1, 40) file_name,dfs.tablespace_name, df.bytes / 1024 / 1024 allocated_mb,
((df.bytes / 1024 / 1024) – NVL (SUM (dfs.bytes) / 1024 / 1024, 0))
used_mb,
NVL (SUM (dfs.bytes) / 1024 / 1024, 0) free_space_mb
FROM v$datafile df, dba_free_space dfs
WHERE df.file# = dfs.file_id(+)
GROUP BY dfs.file_id, df.NAME, df.file#, df.bytes,dfs.tablespace_name
ORDER BY file_name;
Posted in Administration, Scripts | Tagged: datafile free space, script to check free space in a datafile | Leave a Comment »
Posted by Pavan DBA on March 26, 2012
#############################################################
windows script for deleting applied archives in standby database
#############################################################
windows:
There is a configuration file “E:\dba\orahome\mntdir\config\dba.xml” (you should replace { and } with the ones used in standard xml. I can not use them in this post, corrupts page)
{?xml version=”1.0″ encoding=”utf-8″ ?}
{config}
{general}
{archive_format}ARC_0628272535_001_SEQUENCE.ARC{/archive_format}
{archive_dir}E:\oracle\oradata\archive{/archive_dir}
{/general}
{stby}
{prodUser}dbuser{/prodUser}
{prodPass}password{/prodPass}
{prodTNS}PROD{/prodTNS}
{/stby}
{/config}
There is a file “E:\dba\orahome\stby\archive_last_deleted.txt” in which last deleted archived log’s sequence number is kept. At first it can be set as 1.
My scheduled vbs script “E:\dba\orahome\stby\stby_archclean.vbs” uses configuration file to connect primary site, query dataguard status and delete applied archived logs at standby server:
‘********************* CODE TO PARSE DBA.XML FILE ****************************
Set oXMLDoc = CreateObject(“MSXML2.DOMDocument.3.0″)
oXMLDoc.async = False
If Not oXMLDoc.load(“mntdir\config\dba.xml”) Then
Set oErr = oXMLDoc.parseError
sErrMsg = “XML Parsing Error. File: ” & oErr.url & ” Reason : ” & oErr.reason & ” Line: ” & oErr.line & “, Character: ” & oErr.linepos & “,Text: ” & oErr.srcText
Err.Raise 999, , sErrMsg
End If
‘******************************************************************************
Set WshShell = CreateObject(“WScript.Shell”)
pUSER = oXMLDoc.selectSingleNode(“/config/stby/prodUser”).text
pPASS = oXMLDoc.selectSingleNode(“/config/stby/prodPass”).text
ARCHIVE_FORMAT = oXMLDoc.selectSingleNode(“/config/general/archive_format”).text
ARCHIVE_DIR = oXMLDoc.selectSingleNode(“/config/general/archive_dir”).text
pTNS = oXMLDoc.selectSingleNode(“/config/stby/prodTNS”).text
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
set archive_last_deleted = objFSO.OpenTextFile(“stby\archive_last_deleted.txt”, 1) ‘for reading
DIM LAST_DELETED
if not archive_last_deleted.AtEndOfStream then
LAST_DELETED = cInt(archive_last_deleted.ReadLine)
else
WScript.Echo “Error on stby\archive_last_deleted file”
WScript.exit
end if
archive_last_deleted.close
NEXTTODELETE=LAST_DELETED+1
‘ADO Connection object
Set con = CreateObject(“ADODB.Connection”)
con.CursorLocation = 3
If con.State = 1 Then con.close
con.Open “PROVIDER=MSDAORA;DATA SOURCE=”&pTNS&”;USER ID=”&pUSER&”;PASSWORD=”&pPASS&”;”
‘ADO Command object
Set cmd = CreateObject(“ADODB.Command”)
cmd.CommandText=”select APPLIED_SEQ#-3 from v$ARCHIVE_DEST_STATUS where DEST_ID=2 “
cmd.CommandType=1
cmd.ActiveConnection=con
‘ADO Recordset object
set rs=CreateObject(“ADODB.Recordset”)
Set rs=cmd.Execute
if rs.EOF then
WScript.Echo “Error: No APPLIED_SEQ# record for DEST_ID 2″
rs.Close
con.Close
WScript.exit
else
DIM MAX_SEC_APPLIED
rs.MoveFirst
MAX_SEC_APPLIED = cInt(rs.Fields(0))
rs.Close
con.Close
end if
WScript.Echo “Archive Sequence Range to Clean:” & cStr(NEXTTODELETE) & ” – ” & cStr(MAX_SEC_APPLIED)
do while MAX_SEC_APPLIED > NEXTTODELETE
WScript.Echo “removing… ” & ARCHIVE_DIR & “\” & Replace(ARCHIVE_FORMAT,”SEQUENCE”,cStr(NEXTTODELETE))
‘WshShell.run(“del /Q ” & ARCHIVE_DIR & “\” & Replace(ARCHIVE_FORMAT,”SEQUENCE”,cStr(NEXTTODELETE)))
objFSO.DeleteFile ARCHIVE_DIR & “\” & Replace(ARCHIVE_FORMAT,”SEQUENCE”,cStr(NEXTTODELETE))
set archive_last_deleted = objFSO.OpenTextFile(“stby\archive_last_deleted.txt”, 2) ‘for writing
archive_last_deleted.Write cStr(NEXTTODELETE)
archive_last_deleted.close
NEXTTODELETE = NEXTTODELETE+1
loop
Posted in Dataguard, Scripts | Tagged: script to delete applied archives on standby database on windows OS | Leave a Comment »
Posted by Pavan DBA on March 26, 2012
#############################################################
unix script for deleting applied archives in standby database
#############################################################
#!/usr/bin/ksh
ARCH_DIR=/archive/orcl
#take the log number to be applied
LogNo=`tail -30000 /oracle/app/oracle/product/10.2.0/admin/orcl/bdump/alert* | grep “Media Recovery Log” | cut -d ” ” -f 4 | cut -d “_” -f 5 | tail -1 `
echo “Oracle applied LogNo is $LogNo”
#extract 10
let SecLogNo=${LogNo}-10
echo “new backlog log No: $SecLogNo”
#delete small numbers from this in arch dir
cd $ARCH_DIR
for i in `ls *.arc`
do
Newi=`echo $i | cut -d “_” -f 4`
if [ $Newi -lt $SecLogNo ] ; then
echo “$i to be deleted…”
rm $i
fi
done
Posted in Dataguard, Scripts | Tagged: script for deleting applied archive on standby database on unix OS, script to delete applied archives | Leave a Comment »