您好,登錄后才能下訂單哦!
ORA-00257: archiver error. Connect internal only, until freed 錯誤的處理方法
oracle數據庫做了實時同步功能,同步必須要打開歸檔日志功能
1. 用sys用戶登錄
sqlplus sys/password as sysdba;
2. 看看archiv log有那些日志
SQL> show parameter log_archive_dest;
3. 可以用archive log list 檢查一下log sequence
SQL> archive log list;
4. 檢查flash recovery area的使用情況,可以看見archivelog已經很大了,達到97
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
5. 計算flash recovery area已經占用的空間
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
6. 查看日志所在目錄及日志空間設置的最大值:
SQL> show parameter db_recovery_file_dest;
用Rman轉移或清除對應的歸檔日志, 刪除一些不用的日期目錄的文件,注意保留最后幾個文件
---------------------------------------------------------------------------------------
注意:
如果直接刪除歸檔日志后,必須用RMAN維護控制文件,否則空間顯示仍然不釋放。
---------------------------------------------------------------------------------------
7. rman target sys/pass
8. 檢查一些無用的archivelog
RMAN> crosscheck archivelog all;
9. 刪除過期的歸檔
RMAN> delete expired archivelog all;
delete archivelog until time 'sysdate-1' ; 刪除截止到前一天的所有archivelog
10. 再次查詢,發現使用率正常,已經降下來
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
下面的命令用于校驗歸檔日志的有效性,列出無效的歸檔日志,以及以何種方式清除歸檔日志,列出幾種常用的:
crosscheck archivelog all; --->校驗日志的可用性
list expired archivelog all; --->列出所有失效的歸檔日志
delete archivelog until sequence 16; --->刪除log sequence為16及16之前的所有歸檔日志
delete archivelog all completed before 'sysdate-7'; --->刪除系統時間7天以前的歸檔日志,不會刪除閃回區有效的歸檔日志
delete archivelog all completed before 'sysdate - 1'; --->同上,1天以前的
delete archivelog from time 'sysdate-1'; --->注意這個命令,刪除系統時間1天以內到現在的歸檔日志
delete noprompt archivelog all completed before 'sysdate'; --->該命令清除所有的歸檔日志
delete noprompt archivelog all; --->同上一命令
其它有用的Command:
如果archive log模式下不能正常startup,則先恢復成noarchive log,startup成功后,再shutdown;
shutdown immediate;
startup mount;
alter database noarchivelog;
alter database open;
shutdown immediate;
再次startup以archive log模式
shutdown immediate;
startup mount;
show parameter log_archive_dest;
alter database archivelog;
archive log list;
alter database open;
如果還不行,則刪除一些archlog log
SQL> select group#,sequence# from v$log;
原來是日志組一的一個日志不能歸檔
SQL> alter database clear unarchived logfile group 1;
SQL> alter database open;
最后,也可以指定位置Arch Log, 請按照如下配置
SQL> select name from v$datafile;
SQL> alter system set log_archive_dest='/u/app/admin/backup' scope=spfile
或者修改大小
SQL> alter system set db_recovery_file_dest_size=100G scope=both;
備注:應該是scope=both和scope=spfile
Oracle 里面有個叫做spfile的東西,就是動態參數文件,里面設置了Oracle 的各種參數。所謂的動態,就是說你可以在不關閉數據庫的情況下,
更改數據庫參數,記錄在spfile里面。更改參數的時候,有4種scope選項。scope就是范圍
++ scope=spfile 僅僅更改spfile里面的記載,不更改內存,也就是不立即生效,而是等下次數據庫啟動生效。有一些參數只允許用這種方法更改
++ scope=memory 僅僅更改內存,不改spfile。也就是下次啟動就失效了
++ scope=both 內存和spfile都更改
++ 不指定scope參數,等同于scope=both.
將歸檔日志方式進行設定
一 設置為歸檔方式
Sql代碼
sql> archive log list; #查看是不是歸檔方式
sql> alter system set log_archive_start=true scope=spfile; #啟用主動歸檔
sql> alter system set log_archive_dest=''location=/oracle/ora11/oradata/arch'' scope=spfile;#設置歸檔路徑
sql> alter system set log_archive_dest_1=''location=/oracle/ora11/oradata/arch2'' scope=spfile;
sql> alter system set log_archive_dest_2=''location=/oracle/ora11/oradata/arch3'' scope=spfile;
#如果歸檔到兩個位置,則可以通過上邊方法實現
sql> alter system set log_archive_format=''arch_%d_%t_%r_%s.log'' #設置歸檔日記款式
sql> shutdown immediate;
sql> startup mount; #打開控制文件,不打開數據文件
sql> alter database archivelog; #將數據庫切換為歸檔模式
sql> alter database open; #將數據文件打開
sql> archive log list; #查看此時是否處于歸檔模式
查詢以確定數據庫位于archivelog模式中且歸檔過程正在運行
sql> select log_mode from v$database;
sql> select archiver from v$instance;
Sql代碼
日志切換
sql> alter system switch logfile;
這次日志切換將歸檔寫到兩個目標地,
即上邊的/oracle/ora11/oradata/arch2和/oracle/ora11/oradata/arch3,
要是要對目錄確認
在oracle情況中運行如下查詢:
sql> select name from v$archived_log;
而后在操作系統中確認查詢所列出的文件
二 設置非歸檔方式
Sql代碼
sql> archive log list; #查看是否是歸檔方式
sql> alter system set log_archive_start=false scope=spfile;
#禁用自動歸檔
sql> shutdown immediate;
sql> startup mount; #打開控制文件,不打開數據文件
sql> alter database noarchivelog; #將數據庫切換為非歸檔模式
sql> alter database open; #將數據文件打開
sql> archive log list; #查看此時便處于非歸檔模式
三 歸檔相關命令
Sql代碼
sql> archive log stop;
sql> archive log start;
sql> archive log list;
sql> show parameters;
sql> show parameters log_archive_start;
sql> show parameters log_archive_max_process; #歸檔進程數
sql> alter system set log_archive_max_process=5; #將歸檔進程數改為5
sql> select * from v$bgprocess; #檢察后臺進程
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。