oracle 閃回、歸檔的設置建議


閃回與歸檔的相關測試 詳見博客:http://www.cnblogs.com/hellojesson/p/7050097.html

數據庫在歸檔模式下的管理 詳見博客:http://www.cnblogs.com/hellojesson/p/7182219.html

場景描述:

本地數據庫 當前運行在非歸檔模式 沒有開啟閃回功能!!!

我們要做的操作是將:數據庫切換在歸檔模式 ,開啟數據庫的閃回功能;

並且:自定義閃回恢復區路徑以及大小 自定義歸檔日志存放路徑。

補充一個操作說明:其實可以參照oracle默認的配置,將歸檔日志存放在閃回區的指定路徑中,這里是為了說明,歸檔是可以自己定義指定目錄存放的,因此下文中的操作,將歸檔日志放在了和閃回不同的目錄!!!

在ORACLE10g和11g版本,ORACLE默認的日志歸檔路徑為閃回恢復區($ORACLE_BASE/flash_recovery_area)。對於這個路徑,ORACLE有一個限制,就是默認只有2G的空間,而且不只是歸檔日志的默認路徑,也是備份文件和閃回日志的默認地址,
這樣的話歸檔日志所使用的空間就達不到2G,在沒有設置好這個路徑大小的情況下,很多系統都遇到過歸檔日志滿,無法歸檔而導致數據庫夯住的問題。雖然閃回恢復區ORACLE會自動管理,即閃回恢復區空間不足就會清理掉沒用的數據,但是如果備份策略不是很完善,數據庫非常繁忙的情況下,還是有可能遇到無法歸檔導致數據庫夯住的問題,這時候通常需要修改歸檔日志的路徑,將歸檔日志放到其他不受限制的路徑下來解決這個問題,這種情況下就可通過下面操作來實現。

確認當前系統環境:  沒有開啟歸檔  沒有開啟閃回

SQL> archive log list
Database log mode           No Archive Mode
Automatic archival           Disabled
Archive destination           USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     6
Current log sequence               8

SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO

(1) 首先設置 歸檔日志路徑  設置歸檔日志存放格式

SQL> alter system set log_archive_dest_1='location=/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch';
System altered.

SQL> archive log list
Database log mode           No Archive Mode
Automatic archival           Disabled
Archive destination           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Oldest online log sequence     6
Current log sequence           8

打開歸檔模式

SQL> alter database archivelog;
Database altered.

修改日志文件命名格式:

SQL> alter system set log_archive_max_processes = 5;

SQL> alter system set log_archive_format = "%t_%s_%r.dbf" scope=spfile; 
--- 注意: 上方的%t_%s_%r.dbf命名格式,10g之后必須包含%t %s %r否則后續會報錯!!!
出現:“ORA-19905:log_archive_format must contain %s,%t and %r”錯誤,實例將無法啟動。

SQL> archive log list
Database log mode           Archive Mode
Automatic archival           Enabled
Archive destination           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Oldest online log sequence     6
Next log sequence to archive   8
Current log sequence           8

(2) 開啟閃回:

SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38709: Recovery Area is not enabled.
---如果出現上述 報錯 需要先在數據庫層面創建:閃回的路徑 並指定空間大小
  (有網友說這塊必須得先設置空間大小再指定路徑,否則報錯,我這塊暫沒有遇到這種情況,如果提示相關錯誤的話,下方的操作,就先設置閃回空間大小,再指定路徑),
   另外還需要在操作系統層面創建相應的目錄; 參考下方相關操作!!!然后再回來執行上述打開閃回的命令。

(3) 然后 設置閃回路徑 設置閃回路徑大小  設置閃回保存策略

設置閃回區位置:

SQL> alter system set db_recovery_file_dest='/home/oracle/u01/app/oracle/flashback_area' scope=spfile;

操作系統層面創建閃回相關目錄:

[oracle@dbserver oracle]$ mkdir -p /home/oracle/u01/app/oracle/flashback_area

設置閃回路徑大小

alter system set db_recovery_file_dest_size=30g scope=spfile;

設置閃回目標為5天,以分鍾為單位,oracle默認1440分鍾,即一天)

SQL> alter system set db_flashback_retention_target=7200 scope=spfile;

SQL> archive log list
Database log mode           Archive Mode
Automatic archival           Enabled
Archive destination           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Oldest online log sequence     6
Next log sequence to archive   8
Current log sequence           8

SQL> select open_mode,flashback_on from v$database;
OPEN_MODE         FLASHBACK_ON
-------------------- ------------------
MOUNTED          YES

(4) 重啟數據庫

  查看相關配置是否生效

SQL> select open_mode,flashback_on from v$database;
OPEN_MODE         FLASHBACK_ON
-------------------- ------------------
MOUNTED          YES

SQL> alter database open;
SQL> shutdown immediate
SQL> startup

SQL> archive log list
Database log mode           Archive Mode
Automatic archival           Enabled
Archive destination           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Oldest online log sequence     6
Next log sequence to archive   8
Current log sequence           8

SQL> select open_mode,flashback_on from v$database;
OPEN_MODE         FLASHBACK_ON
-------------------- ------------------
READ WRITE         YES

查看閃回恢復區的配置

SQL> show parameter db_recovery

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest             string     /home/oracle/u01/app/oracle/account_flashback_area
db_recovery_file_dest_size         big integer 5G
檢查flash recovery area的使用情況,查看archivelog
SQL> set linesize 200
SQL> set pagesize 80
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                      0             0        0
ARCHIVED LOG                  0             0        0
BACKUP PIECE                  0             0        0
IMAGE COPY                    0             0        0
FLASHBACK LOG               1.95            0        2
FOREIGN ARCHIVED LOG          0             0        0
7 rows selected.

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

SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
SUM(PERCENT_SPACE_USED)*3/100
-----------------------------
            .0585

SQL>  select archiver from v$instance;  

ARCHIVE
-------
STARTED

SQL> select name from v$archived_log;
NAME
-----------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf

強制切換歸檔:

SQL> alter system switch logfile;
System altered.

SQL> select name from v$archived_log;
NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch_1_8_947091054.log


SQL> show parameter db_recover
NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest             string     /home/oracle/u01/app/oracle/fl
                         ashback_area
db_recovery_file_dest_size         big integer 30G

補充個發現:
當選擇oracle默認的配置,將歸檔日志存放在閃回區之后,生成的歸檔日志,是以日期為文件夾,並且日志后綴名為.arc,
而如果歸檔日志是自定義指定的存放路徑,那么歸檔日志文件是以定義的日志格式存放的,后綴名為.bdf。

SQL> col name for a100
SQL> select recid, name, first_time from v$archived_log;

   RECID   NAME                                                          FIRST_TIME
---------- ---------------------------------------------------------------------------------------------------- -------------------
     1 /home/oracle/u01/app/oracle/archivelog/1_6_950980202.dbf                            2017-08-02 17:10:47
     2 /home/oracle/u01/app/oracle/archivelog/1_7_950980202.dbf                            2017-08-03 10:13:28
     3 /home/oracle/u01/app/oracle/archivelog/1_8_950980202.dbf                            2017-08-03 11:48:58
     4 /home/oracle/u01/app/oracle/archivelog/1_9_950980202.dbf                            2017-08-03 11:49:47
     5 /home/oracle/u01/app/oracle/flashback_area/ORCL/archivelog/2017_08_03/o1_mf_1_10_dr5lkd29_.arc     2017-08-03 14:44:51
     6 /home/oracle/u01/app/oracle/flashback_area/ORCL/archivelog/2017_08_03/o1_mf_1_11_dr5lm0og_.arc     2017-08-03 15:01:00
     7 /home/oracle/u01/app/oracle/flashback_area/ORCL/archivelog/2017_08_03/o1_mf_1_12_dr5lqxsh_.arc     2017-08-03 15:01:52
     8 /home/oracle/u01/app/oracle/flashback_area/ORCL/archivelog/2017_08_03/o1_mf_1_13_dr5lstob_.arc     2017-08-03 15:04:29 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM