# 归档 ## 关闭归档 ```sql archive log list; #查看是否是归档方式 alter system set log_archive_start=false scope=spfile; #禁用自动归档 shutdown immediate; startup mount; #打开控制文件,不打开数据文件 alter database noarchivelog; #将数据库切换为非归档模式 alter database open; #将数据文件打开 archive log list; #查看此时便处于非归档模式 ``` ## 开启归档 ```sql # 关闭oracle shutdown immediate; # 启动为mount状态 startup mount # 更改为归档模式 alter database archivelog # 更改数据库为‘打开’状态 alter database open ``` ## 查看归档日志使用情况 ```sql sqlplus / as sysdba select * from v$recovery_file_dest; select * from V$FLASH_RECOVERY_AREA_USAGE; ``` ## 按小时统计归档量 ```sql SELECT SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5) Day, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'00',1,0)) H00, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'01',1,0)) H01, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'02',1,0)) H02, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'03',1,0)) H03, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'04',1,0)) H04, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'05',1,0)) H05, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'06',1,0)) H06, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'07',1,0)) H07, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'08',1,0)) H08, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'09',1,0)) H09, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'10',1,0)) H10, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'11',1,0)) H11, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'12',1,0)) H12, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'13',1,0)) H13, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'14',1,0)) H14, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'15',1,0)) H15, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'16',1,0)) H16, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'17',1,0)) H17, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'18',1,0)) H18, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'19',1,0)) H19, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'20',1,0)) H20, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'21',1,0)) H21, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'22',1,0)) H22, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'23',1,0)) H23, COUNT(*) TOTAL FROM v$log_history a WHERE first_time>=to_char(sysdate-11) GROUP BY SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5) ORDER BY SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1,5) DESC; ``` ## 查询日志目录位置 ```sql show parameter recover; ``` ## 计算fast_recovery_area已经占用的空间 ```sql select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; ``` ## 修改fast_recovery_aread的空间 ```sql ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=8g; ``` ## rman登录 ```sql rman target / ``` ## 删除过期归档日志 ```sql # 检查日志 crosscheck archivelog all; # 删除提示 delete expired archivelog all; # 无删除提示 delete noprompt expired archivelog all; ``` ## 删除所有的Archivelog files ```sql delete archivelog all;  ``` ## 删除昨天以前的归档日志 ```sql # 无删除提示 delete noprompt archivelog until time 'sysdate-1'; # 强制删除昨天之前的日志 delete force archivelog until time 'sysdate-1'; # 无提示强制删除昨天之前的日志 delete noprompt force archivelog until time 'sysdate -1'; ``` # 备份 ## 列出备份信息 ```sql list backup; list backup summary; list backup of database; list backup of tablespace table_name; list backup of controlfile; list backup of spfile; list backupset id; ``` ## 校验备份 ```sql crosscheck backup; crosscheck backup of database; crosscheck backup of tablespace system; crosscheck backup of controlfile; crosscheck backup of spfile; crosscheck backup of archivelog all; ``` ## 删除陈旧备份 ```sql delete obsolete; delete noprompt obsolete; ``` ## 删除所有expired的备份(包括归档日志、控制文件、备份聚) ```sql delete expired backup; ``` ## 删除所有备份 ```sql delete backup; ``` ## 删除指定tag备份 ```sql delete backup tag xxx; ``` ## 改为长期备份 ```sql change backupset id unavailable; change backupset id keep forever logs; change backupset id keep until time 'sysdate+30' logs; change backupset id nokeep; ``` ## 改为基于时间的备份 ```sql configure retention policy to recovery window of 30 days; ``` # 其他 ## 显示rman配置 ```sql show all; ``` ## 报告目标数据库的物理结构 ```sql report schema; ``` ## 报告陈旧备份 ```sql report obsolete; ``` ## 报告不可恢复的数据文件 ```sql report unrecoverable; ``` ## 改为基于冗余数量的备份 ```sql configure retention policy to redundancy n ; ``` ## 取消备份保留策略 ```sql configure retention policy to none; ```