我想要一个批处理脚本来清除超过 7 天的 oracle 数据库跟踪文件。与"adrci> purge -age 10080 -type TRACE"



我想要一个批处理脚本来清除超过7天的oracle数据库跟踪文件。

我确实手动删除像:

adrci> purge -age 10080 -type TRACE

bash脚本是:

#!/bin/bash
#cleanup Automatic Diagnostic Repository (i.e trace files)
#set oracle_home (have a script with your home info)
source ~/OracleHomeScript.sh
#list current repo size
echo ""
echo "##############size before############"
du -shx /u01/app/oracle/diag
echo ""
echo "Listing diag directory homes..."
echo ""
ADR_HOMES=`adrci exec="show homes" |grep -v "ADR Homes:"`
adrci exec="show homes" |grep -v "ADR Homes:"
echo ""
echo ""
#Set-up loop for each home
#
for f in $ADR_HOMES
do
echo "purging $f older than 1 week"
#Slow ADRCI Execution When Purging Files After Upgrade to 12.2 (Doc ID 2335738.1)
adrci exec="set homepath $f; purge -age 10080 -nolog"
done
#list ADR repo size after
echo ""
echo "##############size after############"
du -shx /u01/app/oracle/diag
param(
[Int]$Purge_days=7
)
$NLS_LANG="AMERICAN_AMERICA.CL8MSWIN1251"
$ORACLE_HOME_BIN="D:appproduct12.2.0dbhome_1bin"
$Purge_time=$Purge_days*60*24
function set_oracle_env
{
[Environment]::SetEnvironmentVariable("NLS_LANG", $NLS_LANG , [System.EnvironmentVariableTarget]::PROCESS)
$PATH_USER=[Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::PROCESS)
[Environment]::SetEnvironmentVariable("PATH", $ORACLE_HOME_BIN+";"+ $PATH_USER, [System.EnvironmentVariableTarget]::PROCESS)
}
function du($path=".") {
$path_short=$path -replace "\[^\]*(?:\)?$"
Get-ChildItem $path_short |
ForEach-Object {
if  ($_.FullName -eq $path ) {
$file = $_
Get-ChildItem -File -Recurse $_.FullName | Measure-Object -Property length -Sum |
Select-Object -Property  @{Name="Name";Expression={$file.FullName}},
@{Name="Size(MB)";Expression={[math]::round(($_.Sum / 1MB),2)}} # round 2 decimal places

}
}
}
# set ORACLE_HOME ORACLE_SID NLS_LANG
set_oracle_env
echo ""
echo "Show ADR base "
$ADR_BASE=adrci exec="show base" |%{$_.split('"')[1]}
$ADR_BASE=$ADR_BASE+""
echo $ADR_BASE
echo ""
echo "Listing diag directory homes..."
echo ""
$ADR_HOMES=adrci exec="show homes" |select-string  -pattern  'ADR Homes:' -NotMatch
echo $ADR_HOMES
echo ""
echo "##############size before############"
foreach ( $ADR_HOME in $ADR_HOMES )
{
$diag_dir=$ADR_BASE + $ADR_HOME

$size=du $diag_dir
echo $size
}
#Set-up loop for each home
foreach ( $ADR_HOME in $ADR_HOMES )
{
echo "purging $ADR_HOME older than $Purge_days days"
$ADR_HOME_COMMAND=$ADR_HOME -replace '\','\';
$adrci_command="set home $ADR_HOME_COMMAND; purge -age $Purge_time "
echo $adrci_command
adrci exec=$adrci_command
}

echo ""
echo "##############size after############"
foreach ( $ADR_HOME in $ADR_HOMES )
{
$diag_dir=$ADR_BASE + $ADR_HOME

$size=du $diag_dir
echo $size
}

例如输出

upworkstackoverflowadrci>powershell .purge_trace.ps1                                                                                                                             
Show ADR base
D:app                                                                                                                                                                            

Listing diag directory homes...

diagclientsuser_oraclehost_4248464613_107
diagrdbmstesttest
diagtnslsnrDEMINlistener

##############size before############
Name     : D:appdiagclientsuser_oraclehost_4248464613_107
Size(MB) : 0,27

Name     : D:appdiagrdbmstesttest
Size(MB) : 15,92

Name     : D:appdiagtnslsnrDEMINlistener
Size(MB) : 0,72
purging diagclientsuser_oraclehost_4248464613_107 older than 7 days
set home diag\clients\user_oracle\host_4248464613_107; purge -age 10080
purging diagrdbmstesttest older than 7 days
set home diag\rdbms\test\test; purge -age 10080
purging diagtnslsnrDEMINlistener older than 7 days
set home diag\tnslsnr\DEMIN\listener; purge -age 10080
##############size after############
Name     : D:appdiagclientsuser_oraclehost_4248464613_107
Size(MB) : 0,58

Name     : D:appdiagrdbmstesttest
Size(MB) : 10,93

Name     : D:appdiagtnslsnrDEMINlistener
Size(MB) : 1,04

最新更新