Oracle資料庫歸檔模式的開啟和關閉

chengxuyonghu發表於2024-11-12

一、Oracle環境

Oracle伺服器:oracle11g

oracle版本:11.2.0.1.0

作業系統版本:Red Hat Enterprise Linux Server release 7.6 (Maipo)


二、歸檔模式介紹
oracle是款高安全性的資料庫,剛安裝好的資料庫一般沒有開啟歸檔模式,我們需要開啟歸檔模式,特別是業務資料庫,開啟歸檔後,故障發生時才可以實現資料庫的完全恢復。

在實際應用中,我們需要實現對資料的備份,其實現方式主要有冷備份和熱備份兩種。現在我們主要討論熱備份的具體操作。熱備份也稱為聯機備份,在資料庫的歸檔模式下進行備份。oracel資料庫預設歸檔模式為關閉狀態,要實現資料的熱備份,需要改變資料庫的歸檔模式,將其開啟。並且需要注意的是資料庫的歸檔模式的操作需要在MOUNT例項中進行,且資料庫不能處於OPEN狀態。

三、開啟歸檔模式

步驟一:首先用sys登入資料庫,檢視oracle是否開啟歸檔模式(su - oracle切換使用者,然後sqlplus / as sysdba進入sql模式)

輸入archive log list來檢視是否開啟,如下說明不是歸檔模式

[oracle@oracle11g ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 18 00:48:26 2020

Copyright (c) 1982, 2009, Oracle. All rights reserved.

SQL> conn /as sysdba

Connected.

SQL> archive log list;

Database log mode No Archive Mode

Automatic archival Disabled /*目前不是歸檔模式

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 7

Current log sequence 9

步驟二:需要將資料庫歸檔更改為enable,使用shutdown immediate來關閉資料庫(因為不能在open狀態下進行操作)

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

步驟三:使用startup mount來啟動資料庫例項(當資料庫處於這個模式時,可以執行一些管理的任務,像恢復操作)

SQL> startup mount

ORACLE instance started.

Total System Global Area 1068937216 bytes

Fixed Size 2220200 bytes

Variable Size 281022296 bytes

Database Buffers 780140544 bytes

Redo Buffers 5554176 bytes

Database mounted.

步驟四:修改歸檔位置

SQL>alter system set log_archive_dest_1='location=/nbumedia-store' scope=spfile; /*可建立指定的歸檔目錄

System altered.

步驟五:alter database archivelog開啟歸檔模式

SQL> alter database archivelog;

Database altered.


步驟六:alter database open開啟資料庫,此模式為資料庫的正常模式.

SQL> alter database open;

Database altered.

步驟七:此時檢視歸檔狀態,已經變為enable,已經開啟歸檔

SQL> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination /nbumedia-store

Oldest online log sequence 7

Next log sequence to archive 9

Current log sequence 9

SQL> exit

四、關閉歸檔模式

前面已經提到,資料的存檔模式的操作必須要在mount例項中進行,且資料庫要處於非open狀態。所有關閉存檔模式前,我們需要檢視當前資料庫的狀態,並且關閉資料庫,啟動mount例項,才可進行操作。其具體操作為:

步驟一:使用SQL:select status from v$instance;檢視當前資料庫的狀態,正常情況下一般都處於open狀態。

SQL> select status from v$instance;

STATUS

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

OPEN

SQL>

步驟二:使用SQL:shutdown immediate; --關閉資料庫,因為資料庫當前狀態為open

startup mount; --啟動mount例項--

alter database noarchivelog; --改變資料庫存檔模式為非存檔模式

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

Total System Global Area 1068937216 bytes

Fixed Size 2220200 bytes

Variable Size 281022296 bytes

Database Buffers 780140544 bytes

Redo Buffers 5554176 bytes

Database mounted.

SQL> alter database noarchivelog;

Database altered.

步驟三:此時使用SQL:archive log list 檢視,存檔模式已經變更為非存檔模式。

SQL> archive log list;

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination /nbumedia-store

Oldest online log sequence 9

Current log sequence 11

SQL>

步驟四:再次使用SQL:select status from v$instance;進行檢視資料庫的當前狀態,當前狀態為mount狀態。

SQL> select status from v$instance;

STATUS

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

MOUNTED

SQL>

步驟五:最後別忘記使用SQL:alter database open;開啟資料庫。

SQL> alter database open;

Database altered.

步驟六:再次使用SQL:select status from v$instance;檢視資料庫狀態,為open狀態。

SQL> select status from v$instance;

STATUS

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

OPEN

最後使用快捷鍵Crtl + C 退出sqlplus。

檢視歸檔模式

建立歸檔目錄

修改歸檔目錄和歸檔格式

SQL> alter system set log_archive_format= 'cjcdb_%t_%s_%r.arc' scope=spfile sid='*';

SQL> alter system set log_archive_dest_1='location=+ARCH/arch' scope=spfile sid='*';

2 設定恢復目錄/歸檔目錄(僅節點1)


- 正確設定
歸檔檔案可以放在本地,也可以放在asm共享磁碟中,RAC環境要放ASM中。

- 如果是ASM
SQL>alter system set log_archive_dest_1='location=+DATA';

- 如果是檔案系統
SQL>alter system set log_archive_dest_1='location=/archivelog';

- 錯誤設定
SQL>alter system set db_recovery_file_dest_size=500g;
SQL>alter system set db_recovery_file_dest='+DATA';

原因分析:如果歸檔盤是500g,快滿的時候就需要手動增加容量;
如果歸檔空間滿了,資料庫就會報歸檔錯誤,應用無法連線。

- 設定資料庫為非叢集模式(僅節點1)
SQL>show parameter cluster
SQL>alter system set cluster_database=false scope=spfile;

- 節點1和2關閉資料庫
關閉資料庫,啟動後mount(僅節點1)
SQL>shutdown immediate

- 僅在節點1操作
SQL>startup mount
SQL>alter database archivelog;
SQL>alter database open;

- 檢視歸檔狀態
SQL>archive log list;

設定資料庫為叢集模式(僅節點1)


SQL>alter system set cluster_database=true scope=spfile;


此前是在節點1操作,節點2並沒有開啟歸檔,選擇開啟叢集模式後,重新資料庫,節點二也就開啟了歸檔

重啟資料庫,並開啟(僅節點1)
節點1:
SQL>shutdown immediate;
SQL>startup


先等節點一啟動完成後,再啟動節點二

節點2:
SQL>startup

檢查節點2的歸檔模式:
SQL>archive log list;

Oracle 19c RAC開歸檔

7、配置歸檔日誌刪除指令碼和定時任務

mkdir -p /home/oracle/scripts/

vi /home/oracle/scripts/del_arch.sh

##新增以下指令碼

!/bin/bash

source ~/.bash_profile

deltime=`date +"20%y%m%d%H%M%S"`

rman target / nocatalog msglog /home/oracle/scripts/del_arch_${deltime}.log<<EOF
crosscheck archivelog all;
delete noprompt archivelog until time 'sysdate-7';
delete noprompt force archivelog until time 'SYSDATE-10';

EOF

相關文章