[Archive]更改ORACLE預設歸檔路徑

梓沐發表於2016-02-15

今天群裡面有人問,資料庫的歸檔空間滿了,但是將歸檔日誌部分檔案移走了,但是空間仍然未釋放,該如何解決。

首先,在linux系統中,如何一個檔案被程式所佔用,這個時候即使將檔案移走或刪除,空間其實仍然是被佔用的。遇到上述情況空間未釋放可能有這方面的原因,將相關的程式殺掉即可,但是這可能會影響Oracle的執行。這時我們透過更改歸檔日誌的路徑大小來解決這種問題。

Oracle11g版本,ORACLE預設的日誌歸檔路徑為閃回恢復區($ORACLE_BASE/fast_recovery_area)。對於這個路徑,Oracle有一個限制,就是預設只有4G的空間,而且不只是歸檔日誌的預設路徑,也是備份檔案和閃回日誌的預設地址,這樣的話歸檔日誌鎖使用的空間就達不到4G,在沒有設定好這個路徑大小的情況下,很多系統都遇到過歸檔日誌滿而無法歸檔導致資料庫夯住的問題。

1.檢視歸檔日誌路徑

SQL> archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 4

Next log sequence to archive 6

Current log sequence 6

這裡可以看到Archive destination的值為USE_DB_RECOVERY_FILE_DEST,可以理解為USE(使用)DB_RECOVERY_FILE_DEST這個路徑

2.檢視DB_RECOVERY_FILE_DEST路徑

SQL> show parameter db_recovery

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      /u01/oracle/fast_recovery_area

db_recovery_file_dest_size           big integer 4G

由上可以很清楚的看到DB_RECOVERY_FILE_DEST路徑引數的值預設為/u01/oracle/fast_recovery_area,並且Oracle設定的大小為4G

預設情況下,歸檔日誌會存放到閃回恢復區($ORACLE_BASE/fast_recovery_area)內,如果閃回恢復區已經使用到4G,歸檔日誌就有可能無法繼續歸檔,資料庫夯住。

1)解決方法一

通常的解決方法是增大閃回恢復區,可以用以下SQL實現。

--修改語句

SQL> alter system set db_recovery_file_dest_size=10G;

System altered.

--再次檢視

SQL> show parameter db_recovery

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      /u01/oracle/fast_recovery_area

db_recovery_file_dest_size           big integer 10G

2)解決方法二

修改歸檔日誌的路徑,將歸檔日誌放到其他不受限制的路徑下來解決這個問題,可透過下面的SQL來修改歸檔日誌的存放路徑。

--修改log_archive_dest_1值來重新制定路徑

SQL> alter system set log_archive_dest_1='location=/u01/oracle/archive';

System altered.

這裡特別要注意location引數,並且指定的目錄要存在並且有Oracle的許可權

重新啟動資料庫,檢視歸檔路徑是否修改成功

--關閉

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area  784998400 bytes

Fixed Size                  2257352 bytes

Variable Size             478154296 bytes

Database Buffers          301989888 bytes

Redo Buffers                2596864 bytes

Database mounted.

Database opened.

--再次檢視,修改成功

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /u01/oracle/archive

Oldest online log sequence     4

Next log sequence to archive   6

Current log sequence           6

可以透過切換日誌,檢視歸檔路徑下是否有歸檔日誌產生來驗證歸檔路徑設定是否正確,可以透過下面的命令切換日誌

SQL> alter system switch logfile;

System altered.

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

[oracle@cancer oracle]$ ll /u01/oracle/archive/

total 36540

-rw-r----- 1 oracle oinstall  9608704 Oct 20 14:39 1_6_893515662.dbf

歸檔格式:

SQL> show parameter log_archive_format

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

log_archive_format                   string      %t_%s_%r.dbf


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29812844/viewspace-1988815/,如需轉載,請註明出處,否則將追究法律責任。

相關文章