Delete applied archivelog files

Standby серверт хэдийн орсон (applied) архив лог файлуудыг автоматаар хэрхэн цэвэрлэх скрипт оруулъя.

vi /home/oracle/crons/remove_applied_archivelog.sh

#!/bin/ksh
#
#
# apply hiigdsen archivelog file uudiig ustgana
#
#       www.batmunkh.net
#

ORACLE_SID=orcl; export ORACLE_SID
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME

tmpfile=/tmp/arch_id.tmp

$ORACLE_HOME/bin/sqlplus -S /nolog <<EOF > $tmpfile
connect / as sysdba
set head off
set pages 0
select max(sequence#) from v\$archived_log where applied = 'YES';
exit
EOF

echo DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = `head -n 1  $tmpfile | awk '{print $1}'` ';' > $tmpfile
#echo DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = `cat $tmpfile ` ';' > $tmpfile

$ORACLE_HOME/bin/rman target / <<EOF
 @$tmpfile
exit
EOF

Файлд permission өгөх

[oracle@orcl crons]$ chmod +x /home/oracle/crons/remove_applied_archivelog.sh

cronjob нэмэх

[oracle@orcl crons]$ crontab -e
05 22 * * * /home/oracle/crons/remove_applied_archivelog.sh

Дээрх үйлдлийг хийж дууссанаар өдөр бүрийн 22:05-д уг скрипт ажиллана.

2 Likes

vi remove_applied_archivelog.sh

ORACLE_SID=orcl; export ORACLE_SID
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
rman target / <<EOF
delete archivelog all
YES

delete archivelog all хийхэд apply хийгдсэн нь устаад apply хийгдээгүй нь устахгүй warning өгдөг, ингэж хийх нь ялгаатай юу ?

Уул шугамандаа crosscheck ажиллуулсны дараа устгах ёстой тийм үү? файл устгахгүй байна гэдэг нь цаанаа үлдэж байна гэсэн үг. Үлдсэн учир дара сэргээхэд ашиглаж болноо л гэсэн үг. Үр дүн харахад хэдийгээр ижил байгаа ч дүрмийн бус үйлдэл болоод байна л даа. Алдаан дээр INFO төрлөөс өөр алдаа гарахгүй бол уг зүйл маш сайн ажиллаж байнаа л гэсэн үг.
Дээрхи скриптийг standby талдаа л ер нь ашиглана. Primary бол policy-р явнаа. applied on all standby гэх мэт…
Зарим баазууд ч бас архивлогийг үйлдвэрлэх юм аа… тэр үед бас ашиглаж болох л юм…

archivelog policy харъя. Бүгдийг устгах комманд үлдээж байна гэхээр policy-д баригдаж байгаа байх.

1 Like

Primary дээр энэ шелл скриптээр устгаж болох уу заавал policy байх ёстой юу.?

Primary дээр policy байх хэрэгтэй. хэрэв лог шидэх чинь SYNC бол бас тоохгүй байж болох юм… Тийм үү. Apply гэдэг зүйл маань өөрөө standby дээр яригдаад байгаа юм…
Primary дээр crosscheck нтэр гэж байгаад устгана даа.

Архивлог полиси доорх шиг байвал ялгаагүй
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;

2 Likes

[quote=“batmunkh, post:1, topic:794”]
applied
[/quote] eniig ajiluulii geheer applied log baihgui baigan select hiij harsin teheer yaahu

apply хийгдээгүй үед устгаж болохгүй ээ. SBY -г шинээр тохируулах, эсвэл нөхөж хийх гээд ажил их гарна ш дээ…

Чиний хайгаад байгаа зүйл энэ бололтой…

enuuger uzsen bolj bna ahij garaar orj ustahgui amar bollo bayrllaa

1 Like

RAC to Single Dataguard дээр залхуураад дараах байдлаар хийчихлээ…

ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.1.0.2/dbhome_1; export ORACLE_HOME

tmpfile=/tmp/arch_id.tmp

$ORACLE_HOME/bin/sqlplus -S /nolog <<EOF > $tmpfile
connect / as sysdba
set head off
set pages 0
select max(sequence#) from v\$archived_log where thread#=1 AND applied = 'YES';
exit
EOF

echo DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = `head -n 1  $tmpfile | awk '{print $1}'` ' thread 1;' > $tmpfile
#echo DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = `cat $tmpfile ` ';' > $tmpfile

$ORACLE_HOME/bin/rman target / <<EOF
 @$tmpfile
exit
EOF

$ORACLE_HOME/bin/sqlplus -S /nolog <<EOF > $tmpfile
connect / as sysdba
set head off
set pages 0
select max(sequence#) from v\$archived_log where thread#=2 AND applied = 'YES';
exit
EOF

echo DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = `head -n 1  $tmpfile | awk '{print $1}'` ' thread 2;' > $tmpfile
#echo DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = `cat $tmpfile ` ';' > $tmpfile

$ORACLE_HOME/bin/rman target / <<EOF
 @$tmpfile
exit
EOF

2 node той RAC -ийг Single instance руу явуулж байгаа юм. Дээрхээр шийдэхгүй бол нэг thread ийнхэн лог үлдээд байна… copy paste and add thread option. :smile: :smile: :smile: