ORA-00257:archiver error解決辦法

出現ORA-00257錯誤(空間不足錯誤),經過查找資料,絕大部分說這是因爲歸檔日誌太多,佔用了所有的硬盤剩餘空間致使的,經過簡單刪除日誌或加大存儲空間就可以解決。html

(一)、oralce 11g更改歸檔模式、目錄、日誌大小(本人採用的這種作法sql

 

1、更改Oracle爲歸檔模式
   1.關閉oracle
SQL> shutdown immediate;
   Database closed.
   Database dismounted.
   ORACLE instance shut down.數據庫


    2.啓動爲mount狀態
SQL> startup mountbash

ORACLE instance started.服務器

Total System Global Area 2572144640 bytes
Fixed Size                  2283984 bytes
Variable Size             738199088 bytes
Database Buffers         1828716544 bytes
Redo Buffers                2945024 bytes
Database mounted.oracle


  3.更改成歸檔模式
SQL>   alter database archivelog
  Database altered.
備註:‘archivelog’爲 歸檔模式;‘noarchivelog’爲非歸檔模式。app

 

  4.更改數據庫爲‘打開’狀態
SQL>  alter database openpost

  5.查看歸檔模式信息
SQL>   archvie log list
它會提示歸檔的模式、是否啓用、參數
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     88
Next log sequence to archive   90
Current log sequence           90測試

 

2、更改歸檔目錄
   1.查看參數db_recovery_file_desturl

  (1)「db_recovery_file_dest」是用於定義存儲歸檔日誌的目錄。經過show parameter命令,顯示參數的值爲(默認爲)fast_recovery_area。示例以下:

SQL> show parameter db_recovery

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /usr/local/oracle/flash_recovery_area
db_recovery_file_dest_size           big integer 4182M
 

  (2)查看v$recovery_file_dest視圖,可得知fast_recovery_area的空間限制、已使用的空間、文件數等。

SQL> select * from v$recovery_file_dest;

NAME     SPACE_LIMIT      SPACE_USED     SPACE_RECLAIMABLE     NUMBER_OF_FILES
----------- ---------- ----------------- ---------------
D:\oracle\fast_recovery_area  4385144832    4346230272           2741248             102

   2.更改歸檔日誌目錄
   語法:alter system set   參數=值  scope=spfile;(設置成比較大的空間的目錄,我這裏是設置成了home下面)

   示例:SQL> alter system set db_recovery_file_dest='/home/oracle/flash_recovery_area' scope=spfile;

                System altered.

 

3、更改歸檔日誌大小

   1.查看參數'db_recovery_file_dest_size'值
SQL> show parameter db_recov

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /usr/local/oracle/flash_recovery_area
db_recovery_file_dest_size           big integer 4182M

 

 

   2.更改參數'db_recovery_file_dest_size'值大小

SQL> alter system set db_recovery_file_dest_size=41820M scope=spfile;

System altered.

 

   3.關閉數據庫,重啓數據庫

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup open;
ORACLE instance started.

Total System Global Area 2572144640 bytes
Fixed Size                  2283984 bytes
Variable Size             738199088 bytes
Database Buffers         1828716544 bytes
Redo Buffers                2945024 bytes
Database mounted.
Database opened.

   4.再次查看參數'db_recovery_file_dest_size'值
SQL> show parameter db_reco
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /home/oracle/flash_recovery_area
db_recovery_file_dest_size           big integer 41820M

 

此時重啓以後,就能夠了。

 

 

 =========================================================================

(如下僅供參考)

(二)、百度經驗的解決方案:以下本人採用的這種作法

解決:

一、

SecureCRT登陸服務器,切換用戶oracle,鏈接oracle

[root@userbeta~]# su - oracle

[oracle@userbeta~]$ sqlplus /nolog

SQL> connect /as sysdba

 

二、

檢查flash recovery area的使用狀況,能夠看見archivelog已經很大了,達到99.94

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;

三、

計算flash recovery area已經佔用的空間

SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;

以上是檢查,能夠直接設置歸檔文件大大小,以下:

四、

修改FLASH_RECOVERY_AREA的空間修改成6GB,修改前確認磁盤有足夠空間

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=8g;

五、

如今來清理一下archivelog歸檔日誌,生產環境建議備份

查詢日誌目錄位置

show parameter recover;

刪除歸檔日誌,USERDB是數據庫實例名

cd /u01/app/oracle/flash_recovery_area/USERDB/archivelog

使用root賬戶刪除該目錄下的文件或者備份其它地方

 

 

六、

使用rman 操做,內容太多,只作部分截圖

[oracle@userbeta archivelog]$ rman

RMAN> connect target sys/sys_passwd

crosscheck backup; 

delete obsolete; 

delete expired backup; 

crosscheck archivelog all; 

delete expired archivelog all; 

//此步會有提示,輸入 YES 回車

host;   //退出rman

 七、

確認是否操做成功

#  sqlplus /nolog

SQL>  connect /as sysdba

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;

八、刪除完成,從新鏈接數據庫

 

 

ORACLE 歸檔日誌打開關閉方法

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;   #查看此時便處於非歸檔模式  

 

bash: sqlplus: command not found 解決方法

su - oracle

 
vi ~/.bash_profile
 
在最後加上如下內容
 
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data
使設置生效
 
source /home/oracle/.bash_profile
 
參考本人另外一日誌:
http://www.cnblogs.com/gmq-sh/p/5773374.html
 

Oracle shutdown immediate沒法關閉數據庫解決方法

在測試服務器上使用shutdown immediate命令關閉數據庫時,長時間沒法關閉數據庫,以下所示

 

   1: [oracle@DB-Server admin]$ sqlplus / as sysdba
   2:  
   3: SQL*Plus: Release 10.2.0.4.0 - Production on Thu Nov 21 13:55:13 2013
   4:  
   5: Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
   6:  
   7:  
   8: Connected to:
   9: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
  10: With the Partitioning, OLAP, Data Mining and Real Application Testing options
  11:  
  12: SQL> shutdown immediate;


在另一個會話中,查看告警日誌的輸出結果,以下所示:告警日誌信息在輸出Active processes prevent shutdown operation後,就再無提示信息。

 

 

   1: [oracle@DB-Server bdump]$ tail -f 20 alert_epps.log 
   2:  
   3: Thu Nov 21 13:55:23 2013
   4: Starting background process EMN0
   5: Shutting down instance: further logons disabled
   6: EMN0 started with pid=59, OS id=19244
   7: Thu Nov 21 13:55:24 2013
   8: Errors in file /u01/app/oracle/admin/epps/udump/epps_ora_19242.trc:
   9: ORA-04098: trigger 'ADMIN.PIND_ON_SHUT' is invalid and failed re-validation
  10: Thu Nov 21 13:55:24 2013
  11: Shutting down instance (immediate)
  12: License high water mark = 10
  13: All dispatchers and shared servers shutdown
  14: Thu Nov 21 14:00:29 2013
  15: SHUTDOWN: Active processes prevent shutdown operation


關於SHUTDWON IMMEDIATE關閉數據庫方式:

 

當即關閉方式(IMMEDIATE) 
     當即關閉方式可以在儘量短的時間內關閉數據庫,以當即方式關閉數據庫時,ORACLE將執行如下一些操做: 
         *阻止任何用戶創建新的鏈接,同時阻止當前鏈接的用戶開始任何新的事物。 
         *任何未提交的事物均被回退。 
         *ORACLE再也不等待用戶主動斷開鏈接,而是直接關閉、卸載數據庫,並終止實例。


方法1:

此時能夠經過下面命令Kill掉系統中(LOCAL=NO)的ORACLE進程

[oracle@DB-Server ~]$ ps -ef|grep ora|grep -v grep|grep -v ora_|grep LOCAL=NO|awk '{print $2}' 
[oracle@DB-Server ~]$ ps -ef|grep ora|grep -v grep|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill

此時能夠順利關閉數據庫。

方法2:

使用CTRL+C取消操做,而後使用shutdown abort命令關閉數據庫。固然生產環境仍是慎用shutdown abort命令,使用它每每是在沒有辦法的狀況下。由於 
shutdown abort 執行後,全部正在運行的SQL語句都將當即停止。全部未提交的事務將不回滾。Oracle也不等待目前鏈接到數據庫的用戶退出系統。下一次啓動數據庫時須要實例恢復,所以,下一次啓動可能比平時須要更多的時間。

方法3:網上比較通用的方法

1 :首先停應用服務。 
2 :其次中止監聽服務(listener) 
3 :間隔一段時間後,運行本身寫的腳本去檢查一下還有沒有用戶進程,若有, KILL. 
4 :shutdown immediate;

固然,有時候實際狀況每每有些出入,例如步驟1,DBA沒有應用服務器的權限。沒法中止應用服務。固然也不妨礙後面步驟的執行。 

 

關閉歸檔提示:ORA-38774: cannot disable media recovery - flashback database is enabled

SQL> select * from v$version;
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
 
數據庫啓動到MOUNT狀態:
SQL> alter database noarchivelog;
alter database noarchivelog
*
ERROR at line 1:
ORA-38774: cannot disable media recovery - flashback database is enabled
 
 
SQL> select flashback_on from v$database;
 
FLASHBACK_ON
------------------
YES
 
SQL> alter database flashback off;
 
Database altered.
 
SQL> alter database noarchivelog;
 
Database altered.
 
SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            L:\oradata\test\arch11
Oldest online log sequence     227
Current log sequence           231
*******VICTORY LOVES PREPARATION*******
相關文章
相關標籤/搜索