查看歸檔日志大小及使用情況
select * from v$recovery_file_dest
SQL> select * from v$recovery_file_dest;
NAME
--------------------------------------------------------------------------------
SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------- ---------- ----------------- ---------------
/u03/fast_recovery_area
8589934592 6551817216
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
NUMBER_OF_FILES
---------------
CONTROL FILE 0 0
0
REDO LOG 1.83 0
3
ARCHIVED LOG 74.44 0
159
如果 ARCHIVED LOG 超過90% oracle隨時有宕機的危險
增大歸檔日志空間
SQL> alter system set db_recovery_file_dest_size=20G;
System altered.
刪除歸檔日志
1.看看現在用了多少歸檔日志了(按百分比):
select * from v$flash_recovery_area_usage;
如果超過90%隨時有宕機的危險
2.當刪除歸檔文件后需要用RMAN工具釋放歸檔所占用的空間,首先連接RMAN工具
rman target sys/pass
3.查查歸檔日志吧
crosscheck archivelog all;
4.覺着沒用就干掉它吧,如果想保留今天的用下面那個語句
delete expired archivelog all;(全部刪除)
delete archivelog until time 'sysdate - 1';(保留當天刪除,刪除之前所有)
也可以:$ORACLE_BASE/flash_recovery_area/你的實例名/archivelog/這個路徑下,找到歸檔日志文件,把沒用的刪了
關閉歸檔
1.,用SYS用戶進行登錄,首先設置歸檔進程關閉。
alter system set log_archive_start = false scope = spfile;
2.然后關閉數據庫
shutdown immediate;
3.啟動DB到mount模式
startup mount;
4.關閉閃回數據庫模式,如果不關的話總報錯ORA-38774
alter database flashback off;
5.接着將數據庫改為非歸檔模式吧
alter database noarchivelog;
6.打開數據庫
alter database open;
7.查看一下空間大小吧
select * from v$recovery_file_dest;
8.看一下日志狀態
select * from v$log;
9.使用情況查看方法還是如出一轍
select * from v$flash_recovery_area_usage;
歸檔設置
一 設置為歸檔方式
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'' #設置歸檔日記款式
或者:
1.SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=20G SCOPE=BOTH;
2.SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/DBA/FB' SCOPE=BOTH;
3 sql> shutdown immediate;
4 sql> startup mount; #打開控制文件,不打開數據文件
5 sql> alter database archivelog; #將數據庫切換為歸檔模式
6 sql> alter database open; #將數據文件打開
7 sql> archive log list; #查看此時是否處於歸檔模式
8 查詢以確定數據庫位於archivelog模式中且歸檔過程正在運行
sql> select log_mode from v$database;
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 database noarchivelog; #將數據庫切換為非歸檔模式
6 sql> alter database 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; #檢察后台進程
=================
SQL> show parameter archive log; 顯示所有的歸檔日志
SQL> show parameter recover;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u03/fast_recovery_area
db_recovery_file_dest_size big integer 8G 歸檔日志大小
db_unrecoverable_scn_tracking boolean TRUE
recovery_parallelism integer 0
轉載自:https://blog.csdn.net/zhaoxiaofei0929/article/details/38826921