Pavan DBA's Blog

The DBA Knowledge Store

Archive for the ‘Scripts’ Category

script to find sql text with sid of a session

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: , , , , , , , , | Leave a Comment »

script to check possible resize value for a datafile

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: , | 2 Comments »

script to check free space in a datafile

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: , | Leave a Comment »

script to delete applied archives on standby database on windows OS

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: | Leave a Comment »

script for deleting applied archive on standby database on unix OS

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: , | Leave a Comment »

 
Follow

Get every new post delivered to your Inbox.

Join 1,477 other followers