Oracle 归档开启切换和归档日志删除(单实例和RAC)

Oracle默认安装后,是没有开启归档模式的,需要手动开启。

开启归档
--单实例
如果archive log模式下不能正常startup,则先恢复成noarchive log,startup成功后,再shutdown;
SQL> select group#,thread# from v$log;

GROUP# THREAD#
---------- ----------
1 1
2 1
3 2
4 2
5 1

shutdown immediate;
startup mount;
alter database noarchivelog;
alter database open;
--alter system set log_archive_format='%s_%t_%r.log' scope=spfile;
--alter system set log_archive_dest_1='location=/u01/app/oracle/archive';

再次startup以archive log模式
shutdown immediate;
startup mount;
show parameter log_archive_dest;
alter database archivelog;
archive log list;
alter database open;
SQL> show parameter archive;
alter system archive log current;

--RAC ,把归档日志放在asm上
ASMCMD> cd ARCH
ASMCMD> ls
ASMCMD> pwd
+FRA/BOL/ARCH
ASMCMD> lsdg
SQL> select instance_name,host_name,status from gv$instance;

SQL> alter system set log_archive_dest_1='location=+FRA/BOL/ARCH' scope=spfile sid='bol1';
SQL> alter system set log_archive_format='%s_%t_%r.log' scope=spfile sid='bol1';

SQL> alter system set log_archive_dest_1='location=+FRA/BOL/ARCH' scope=spfile sid='bol2';
SQL> alter system set log_archive_format='%s_%t_%r.log' scope=spfile sid='bol2';
srvctl stop database -d bol
srvctl start instance -d bol -i bol1 -o mount

SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +FRA/bol/arch
Oldest online log sequence 91
Next log sequence to archive 93
Current log sequence 93

srvctl start instance -d bol -i bol2 -o mount
SQL> alter database open;
SQL> show parameter archive;
SQL> show parameter cluster_da

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cluster_database boolean TRUE
cluster_database_instances integer 2
select *from v$archived_log;
1 991992944 +FRA/bol/arch/32_2_990861401.log 1 2 32
2 991993151 +FRA/bol/arch/93_1_990861401.log 1 1 93
--2个实例的归档日志
[grid@rac2 ~]$ asmcmd
ASMCMD> cd FRA/BOL/ARCH
ASMCMD> ls
32_2_990861401.log
33_2_990861401.log
93_1_990861401.log
94_1_990861401.log
--2个实例的归档文件


删除归档日志
--单实例
手工删除os的归档日志后,在controfile中仍然记录着这些归档日志的信息,这时候需要删除
1 删除os文件
[root@localhost archivelog]# pwd
/u01/app/oracle/archivelog
[root@localhost archivelog]# find /u01/app/oracle/archivelog/ -mtime +30 -name '*.arc'
---执行删除命令
find /u01/app/oracle/archivelog/ -mtime +30 -name '*.arc' -exec rm -f {} \;
[oracle@localhost ~]$ find /u01/app/oracle/archivelog/ -mtime +30 -name '*.arc' -exec rm -f {} \;
2 rman执行删除
[oracle@localhost ~]$ rman target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
RMAN> report obsolete;
RMAN> delete obsolete;
RMAN> list expired archivelog all;
或者直接执行
RMAN> delete archivelog all completed before 'sysdate -29';
--删除全部归档日志
delete noprompt archivelog all completed before 'sysdate'; --->该命令清除所有的归档日志
delete noprompt archivelog all; --->同上一命令
select * from V$FLASH_RECOVERY_AREA_USAGE;
select * from v$archived_log order by first_time desc
--脚本删除
#!/bin/bash
source /home/oracle/.bash_profile
#LOGFILE=/data/rman/rman_delete.log
#RMAN=$ORACLE_HOME/bin/rman
$ORACLE_HOME/bin/rman log=/home/oracle/del_arch$(date +%Y-%m-%d).log <<EOF
connect target sys/***@sid
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog until time 'sysdate-1';
exit;
EOF
--删除rac的归档日志
[grid@rac2 ~]$ asmcmd
ASMCMD> cd FRA/BOL/ARCH
ASMCMD> ls
32_2_990861401.log
33_2_990861401.log
93_1_990861401.log
94_1_990861401.log
--进行rm删除文件
ASMCMD> rm 32_2_990861401.log

转载于:https://www.cnblogs.com/yhq1314/p/9944917.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值