一 设置为归档方式
1 sql> archive log list; #查看是不是归档方式
2 sql> alter system set log_archive_start=true scope=spfile; #启用主动归档
sql> alter system set log_archive_dest=\'\'location=/oracle/ora9/oradata/arch\'\' scope=spfile;
#设置归档路径
sql> alter system set log_archive_dest_1=\'\'location=/oracle/ora9/oradata/arch1\'\' scope=spfile;
sql> alter system set log_archive_dest_2=\'\'location=/oracle/ora9/oradata/arch2\'\' scope=spfile;
#如果归档到两个位置,则可以通过上边方法实现
sql> alter system set log_archive_format=\'\'arch_%d_%t_%r_%s.log\'\' #设置归档日记款式
3 sql> shutdown immediate;
4 sql> startup mount; #打开控制文件,不打开数据文件
5 sql> alter data archivelog; #将数据库切换为归档模式
6 sql> alter data open; #将数据文件打开
7 sql> archive log list; #查看此时是否处于归档模式
8 查询以确定数据库位于archivelog模式中且归档过程正在运行
sql> select log_mode from v$data ;
sql> select archiver from v$instance;
9 日志切换
sql> alter system switch logfile;
10 这次日志切换将归档写到两个目标地,
1,即第二步的/oracle/ora9/oradata/arch1和/oracle/ora9/oradata/arch1,要是要对目录确认
在oracle情况中运行如下查询:
sql> select name from v$archived_log;
而后在操作系统中确认查询所列出的文件
二 设置非归档方式
1 sql> archive log list; #查看是否是归档方式
2 sql> alter system set log_archive_start=false scope=spfile; #禁用自动归档
3 sql> shutdown immediate;
4 sql> startup mount; #打开控制文件,不打开数据文件
5 sql> alter data noarchivelog; #将数据库切换为非归档模式
6 sql> alter data open; #将数据文件打开
7 sql> archive log list; #查看此时便处于非归档模式
三 归档相关命令
archive log stop;
archive log start;
archive log list;
show parameters;
show parameters log_archive_start;
show parameters log_archive_max_process; #归档进程数
alter system set log_archive_max_process=5; #将归档进程数改为5
select * from v$bgprocess; #检察后台进程
四 归档日志删除
OS层面非正常删除
find /oraarchive -xdev -mtime +7 -name \"*.dbf\" -exec rm -f {} ;
1. 进入rman
2. connect target /
3. crosscheck archivelog all;
4. delete expired archivelog all;
这时候我们再去OEM中看就一定看不到,如果你的从来没有做过这个动作的话,我们可以比较从这个动作前的controlfile后动作后的controlfile的大小!
ORACLE正确删除归档并回收空间的方法
rman target/
或rman target/@orcl
在命令窗口里面执行
DELETE ARCHIVELOG ALL COMPLETED BEFORE \'SYSDATE-7\';
五、rman归档备份策略和脚本
------rman 备份脚本
rman target /
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;
level0_backup.sh
#!/bin/ksh
#lzccb rman full backup
#export env
cd /oraclebackup
rman cmdfile=level0_backup.sql msglog=/oraclebackup/level0_`date +\'%y%m%d%H%M\'`.log
level0_backup.sql
connect target /
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental level 0
tag \'level0 include controlfile\'
format \'/oraclebackup/level0_%d_%U.bak\'
data ;
release channel c1;
release channel c2;
}
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
----crontab -e
0 5 * * 1,4 /oraclebackup/level0_backup.sh 1>/oraclebackup/crontab_rman.log 2>&1 &
[@more@]
继续阅读与本文标签相同的文章
-
淘集集经营模式变更:合伙人自营,主要供应商已成股东合伙人
2026-05-18栏目: 教程
-
88%中国员工相信AI超过经理 人见多了就更喜欢狗?
2026-05-18栏目: 教程
-
删库不要跑,我站起来还可以删
2026-05-18栏目: 教程
-
拼硬件真过时了?卡萨帝冰箱乌镇全讲场景
2026-05-18栏目: 教程
-
哈弗F7有AI更便捷 全球最流行的交互方式了解一下
2026-05-18栏目: 教程
