資料庫歸檔模式
A. 如何打開oracle資料庫的歸檔模式
更改前先進行數據備份:
手工導出oracle資料庫命令:
---------------------------------------------
exp
system/manager
file=d:\chu.dmp
full=y
1、連接
windows系統:打開cmd窗口
Linux/Unix系統:打開終端
rman
target
/
nocatalog;
sqlplus
/nolog
conn
/
as
sysdba;
2、開啟歸檔
sqlplus>shutdown
immediate;(啟動歸檔前先要停止資料庫)
sqlplus>startup
mount;(資料庫以mount方式啟動)
sqlplus>alter
database
archivelog;(啟動資料庫歸檔)
sqlplus>alter
system
set
log_archive_dest_1="/arch"(改變歸檔日誌路徑,windows系統使用盤符)
sqlplus>alter
database
open;(打開資料庫)
sqlplus>archive
log
list;(查看歸檔是否已經打開)
關閉歸檔
alter
database
noarchivelog;
B. 如何將oracle資料庫設置為歸檔模式
則按下方法修改資料庫歸檔模式。
1. 關閉資料庫
SQL> shutdown immediate;
2. 啟動數據mount狀態:
SQL> startup mount;
3. 修改資料庫為歸檔模式:
SQL> alter database archivelog;
4. 打開資料庫:
SQL> alter database open;
C. 如何將oracle資料庫 設置為歸檔模式
查看歸檔狀態為非歸檔
sys@JSL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
archive狀態Disabled
sys@JSL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 2
Current log sequence 4
sys@JSL> select * from v$archive_processes;
PROCESS STATUS LOG_SEQUENCE STAT
---------- ---------- ------------ ----
0 STOPPED 0 IDLE
1 STOPPED 0 IDLE
2 STOPPED 0 IDLE
3 STOPPED 0 IDLE
...
...
29 STOPPED 0 IDLE
修改為歸檔模式
首先要關閉資料庫,啟動到mount狀態。
sys@JSL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@JSL> startup mount
ORACLE instance started.
Total System Global Area 184549376 bytes
Fixed Size 1218412 bytes
Variable Size 62916756 bytes
Database Buffers 117440512 bytes
Redo Buffers 2973696 bytes
Database mounted.
修改為歸檔模式
sys@JSL> alter database archivelog;
Database altered.
oracle 9i還要設置log_archive_start 這是個靜態參數
alter system set log_archive_start=true scope=spfile;
oracle 10g則不用設置了。
驗證修改結果
sys@JSL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
打開資料庫
sys@JSL> alter database open;
Database altered.
設置歸檔格式
log_archive_format,是設置歸檔命名規則的靜態參數,設置後重啟資料庫才生效。
對log_archive_dest和log_archive_dest_n指定的歸檔有效。
常用參數如下
%s log sequence number
%S log sequence number, zero filled
%t thread number
%T thread number, zero filled
%a activation ID
%d database ID
%r resetlogs ID
resetlogs,防止恢復的時候會報錯,歸檔默認文件擴展名是dbf,習慣設置成arc
例如:_%t_%s_%r.arc
sys@JSL> select name from v$database;
NAME
------------------------------
JSL
sys@JSL> alter system set log_archive_format='jsl_%t_%s_%r.arc' scope=spfile;
System altered.
重啟資料庫才生效。
sys@JSL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 2
Next log sequence to archive 4
Current log sequence 4
sys@JSL> alter system switch logfile;
System altered.
archive變成Enabled,我們沒有設置歸檔目的地,
默認USE_DB_RECOVERY_FILE_DEST使用DB_RECOVERY_FILE_DEST目錄,也就是我們常說的閃回目錄。
sys@JSL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 3
Next log sequence to archive 5
Current log sequence 5
查看當前日誌組
sys@JSL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
------ ------- --------- -------- -------- --- --------- ------------- -----------------
1 1 5 52428800 1 NO CURRENT 1565953 20101206 17:57:21
2 1 4 52428800 1 YES ACTIVE 1559083 20101206 15:07:00
3 1 3 52428800 1 YES INACTIVE 1534317 20101206 10:44:06
切換日誌
alter system archive log current; --先歸檔再切換
alter system switch logfile; --先切換至於能不能歸檔再說
sys@JSL> alter system switch logfile;
System altered.
查看已經歸檔的信息
sys@JSL> select RECID,NAME,DEST_ID,SEQUENCE#,RESETLOGS_CHANGE#,ARCHIVED,STATUS ,BACKUP_COUNT from v$archived_log;
RECID NAME DEST_ID SEQUENCE# RESETLOGS_CHANGE# ARC S BACKUP_COUNT
----- ------------------------------ ---------- ---------- ----------------- --- - ------------
1 /u01/app/oracle/flash_recovery 10 1 1484108 YES A 0
_area/HYJT/archivelog/2010_12_
05/o1_mf_1_1_6hq6z3db_.arc
2 /u01/app/oracle/flash_recovery 10 4 1484108 YES A 0
_area/JSL/archivelog/2010_12_0
6/o1_mf_1_4_6hsdw1mv_.arc
3 /u01/app/oracle/flash_recovery 10 5 1484108 YES A 0
_area/JSL/archivelog/2010_12_0
6/o1_mf_1_5_6hsdx63y_.arc
查看歸檔進程,開啟了三個歸檔進程
sys@JSL> select * from v$archive_processes;
PROCESS STATUS LOG_SEQUENCE STAT
---------- ---------- ------------ ----
0 ACTIVE 0 IDLE
1 ACTIVE 0 IDLE
2 ACTIVE 0 IDLE
3 STOPPED 0 IDLE
...
...
29 STOPPED 0 IDLE
如果歸檔進程報錯,8i可以使用下面命令嘗試解決
archive log stop;
archive log start;
10版本的archive log stop/start及alter system archive log stop/start命令已經不用了,只要在歸檔模式下就是自動歸檔模式
設置歸檔目錄
默認的歸檔目錄(Archive destination)是: USE_DB_RECOVERY_FILE_DEST,
如果取消DB_RECOVERY_FILE_DEST參數的設置,就會找standby_archive_dest參數,
默認是'?/dbs/arch'但是沒有真實目錄存在,所以雖然能開啟歸檔但是不能實現歸檔。
設置方式:
A: log_archive_dest_n (1-10) 這個參數與B是沖突的,可以設置本地和遠程作為歸檔目標地址。
下面有十個狀態參數log_archive_dest_state_n (1-10)與之對應,enable才可用。
例:
log_archive_dest_state_1=DEFER
log_archive_dest_state_2=ENABLE
此參數和log_archive_dest_n參數配對使用,預設值為ENABLE,如果想停止使用一個歸檔目錄,只需將其對應的log_archive_dest_state_n參數值設置為DEFER。
log_archive_dest_n 其中n為1-5的整數,必需從低到高設置,下面舉例說明:
log_archive_dest_1="LOCATION=/jia/arc MANDATORY REOPEN"
log_archive_dest_2="SERVICE=standby_db1 MANDATORY REOPEN=600"
log_archive_dest_3="LOCATION=/jia/arc2 OPTIONAL"
location指的是本地目錄。
service是tnsname里指定的名稱,可以實現連接到遠程。
MANDATORY 關鍵字說明聯機日誌文件必須要成功歸檔以後才能被覆蓋。
OPTIONAL 預設為可選(OPTIONAL),即使歸檔沒有成功也可以覆蓋。
在設置時應該至少有一個本地(LOCATION)強制(MANDATORY)歸檔目錄。
REOPEN 關鍵字說明如果歸檔不成功時系統要重新嘗試歸檔,預設每300秒嘗試一次直到成功。
reopen可以通過=n來指定嘗試的時間間隔,如 log_archive_dest_2中的時間間隔為600秒,
而log_archive_dest_1中的時間間隔為300 秒。
alter system set log_archive_dest_1='location=/xxx/xxx/x/ mandatory reopen=500';
B: log_archive_dest和log_archive_plex_dest 這個參數與A是沖突的,只能設置本地目錄,
log_archive_dest可以單獨存在,但是log_archive_plex_dest必須依附於log_archive_dest
log_archive_dest這是一個靜態參數,設置的時候要帶scope=spfile
sys@JSL> alter system set log_archive_dest='';
alter system set log_archive_dest=''
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST
帶上scope=spfile參數就不會有上面的報錯信息了
sys@JSL> alter system set log_archive_dest='/jia/arc' scope=spfile;
System altered.
如果使用這種方式,則log_archive_dest是強制(MANDATORY)歸檔目錄,而log_archive_plex_dest為可選(OPTIONAL)目錄。
C: db_recovery_file_dest 這個參數還有個輔助參數db_recovery_file_dest_size控制大小。
那麼著三種方式是否可以同時設置,以及那個方式設置的生效呢?
我們用下圖示加以說明:
A(n) B(y) C(y) -> oracle同時歸檔日誌到log_archive_dest和db_recovery_file_dest指定的目錄,C採用omf管理管理方式
A(n) B(y) C(n) -> 1份歸檔B
A(y) B(y) C(n) -> error A與B是沖突的
A(y) B(n) C(y) -> 1份歸檔A,如果設置了A,C就失效了。
在10g跟開歸檔跟flashback_on狀態無關,但是反過來開資料庫閃回功能必須先開歸檔。設置log_archive_dest以後重啟資料庫才生效。
D. oracle歸檔模式的配置資料庫的歸檔模式
1.改變非歸檔模式到歸檔模式:
1)SQL> conn / as sysdba (以DBA身份連接資料庫)
2)SQL> shutdown immediate; (立即關閉資料庫)
3)SQL> startup mount (啟動實例並載入資料庫,但不打開)
4)SQL> alter database archivelog; (更改資料庫為歸檔模式)
5)SQL> alter database open; (打開資料庫)
6)SQL> alter system archive log start; (啟用自動歸檔)
7)SQL> exit (退出)
做一次完全備份,因為非歸檔日誌模式下產生的備份日誌對於歸檔模式已經不可用了.這一步非非常重要!
2.改變歸檔模式到非歸檔模式:
1)SQL>SHUTDOWN NORMAL/IMMEDIATE;
2)SQL>STARTUP MOUNT;
3)SQL>ALTER DATABASE NOARCHIVELOG;
4)SQL>ALTER DATABASE OPEN;
3.啟用自動歸檔: LOG_ARCHIVE_START=TRUE
歸檔模式下,日誌文件組不允許被覆蓋(重寫),當日誌文件寫滿之後,如果沒有進行手動歸檔,那麼系統將掛起,直到歸檔完成為止.
這時只能讀而不能寫.
運行過程中關閉和重啟歸檔日誌進程
SQL>ARCHIVE LOG STOP
SQL>ARCHIVE LOG START
4.手動歸檔: LOG_ARCHIVE_START=FALSE
歸檔當前日誌文件
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
歸檔序號為052的日誌文件
SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;
歸檔所有日誌文件
SQL>ALTER SYSTEM ARCHIVE LOG ALL;
改變歸檔日誌目標
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH';
5.歸檔模式和非歸檔模式的轉換
第4步的逆過程.
6.配置多個歸檔進程
Q:什麼時候需要使用多個歸檔進程?
A:如果歸檔過程會消耗大量的時間,那麼可以啟動多個歸檔進程,這是個動態參數,可以用ALTER SYSTEM動態修改.
SQL>ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;
Oracle9i中最多可以指定10個歸檔進程
與歸檔進程有關的動態性能視圖
v$bgprocess,v$archive_processes
7.配置歸檔目標,多歸檔目標,遠程歸檔目標,歸檔日誌格式
歸檔目標 LOG_ARCHIVE_DEST_n
本地歸檔目標:
SQL>LOG_ARCHIVE_DEST_1 = LOCATION=D:ORACLEARCHIVEDLOG;
遠程歸檔目標:
SQL>LOG_ARCHIVE_DEST_2 = SERVICE=STANDBY_DB1;
強制的歸檔目標,如果出錯,600秒後重試:
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = LOCATION=E:ORACLEARCHIVEDLOG MANDATORY REOPEN=600;
可選的歸檔目標,如果出錯,放棄歸檔:
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = LOCATION=E:ORACLEARCHIVEDLOG OPTIONAL;
歸檔目標狀態:關閉歸檔目標和打開歸檔目標
關閉歸檔目標1
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = DEFER
打開歸檔目標2
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = ENABLE
歸檔日誌格式
LOG_ARCHIVE_FORMAT
8.獲取歸檔日誌信息
V$ARCHIVED_LOG
V$ARCHIVE_DEST
V$LOG_HISTORY
V$DATABASE
V$ARCHIVE_PROCESSES
ARCHIVE LOG LIST;
E. oracle資料庫是否開啟歸檔模式
首先用sys登錄資料庫,查看oracle是否開啟歸檔模式(su - oracle切換用戶,然後sqlplus / as sysdba進入sql模式)
輸入archive log list來查看是否開啟,如圖說明不是歸檔模式
F. 哪個數據字典視圖可顯示資料庫歸檔模式
你好
根據你的描述,
V$DATABASE可以顯示資料庫處於歸檔狀態。
你的採納是我前進的動力,還有不懂的地方,請繼續「追問」。
G. Oracle資料庫如何開啟自動歸檔
Oracle
Enterprise
Manager
Console——某一個資料庫——常式——配置——恢復——「歸檔日誌模式」(自動歸檔);
常式——配置——一般信息——所有初始化參數——log_archive_start=true
歸檔信息可以通過如下語句查看
SQL
archive
log
list
Oracle資料庫可以運行在兩種模式下:歸檔模式(archivelog)和非歸檔模式(noarchivelog)。
檢查歸檔模式命令
SQL
archive
log
list
設置歸檔模式
SQL
shutdown
immediate;
SQL
startup
mount
SQL
alter
database
archivelog;
SQL
alter
database
open;
SQL
archive
log
list;
如果需要停止歸檔模式,使用:alter
database
noarchivelog
命令。Oracle10g之前,你還需要修改初始化參數使資料庫處於自動歸檔模式。在pfile/spfile中設置如下參數
log_archive_start
=
true
重啟資料庫此參數生效,此時資料庫處於自動歸檔模式。也可以在資料庫啟動過程中,手工執行
archive
logstart使資料庫啟用自動歸檔,但是重啟後資料庫仍然處於手工歸檔模式
。10g使用db_recovery_file_dest來作為歸檔日誌的存放地。
SQL
show
parameter
db_recovery(
該語句在oracle11g下無效)NAME
TYPEVALUEdb_recovery_file_dest
string
/home/oracle/ora10g/flash_reco
very_area/
H. 如何查看資料庫是否處於歸檔模式
第一種方法
select name,log_mode from v$database;
-----------------------------------------------------------
第二種方法
archive log list
2,oracle啟動歸檔模式?
startup mount
alter database archivelog;
alter database open;
alter system set log_archive_start=true scope=spfile;
修改資料庫參數文件c:\oracle\admin\oradb\pfile\init.ora,
取消以下語句的#注釋
log_archive_start = true
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
關閉資料庫,重新啟動
查看C:\Oracle\oradata\oradb\archive目錄下,可以看到類似ORADBT001S01201.ARC的文件,說明歸檔成功
解釋init.ora參數文件中關於歸檔重做日誌參數項的含義
歸檔模式是自動還是手工,true為自動,false為手工
log_archive_start = true
歸檔日誌文件所保存的路徑
log_archive_dest_1 = "location=C:\Oracle\oradata\oradb\archive"
歸檔日誌文件的命名方法
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
2、禁止歸檔
a. 關閉資料庫shutdown immediate
b. startup mount
c. alter database noarchivelog
d. alter database open
I. 如何啟動或關閉資料庫的歸檔模式
1.管理員身份連接資料庫
C:\Users\Administrator>sqlplus
sys/sys@xxxxx
as
sysdba
2.查看當前歸檔模式,是歸檔還是非歸檔
SQL>
archive
log
list;
Database
log
mode
No
Archive
Mode
(此狀態為非歸檔狀態)
3.關閉資料庫
SQL>
shutdown
immediate;
Database
closed.
Database
dismounted.
ORACLE
instance
shut
down.
4.啟動資料庫到mount狀態
SQL>
startup
mount;
5.啟動歸檔模式
SQL>
alter
database
archivelog;
(此命令為將歸檔模式啟用)
Database
altered.
SQL>
archive
log
list;
Database
log
mode
Archive
Mode
(此狀態為歸檔狀態)
6.啟動資料庫
SQL>
alter
database
open;
Database
altered.
7.關閉歸檔模式
SQL>
shutdown
immediate;
Database
closed.
Database
dismounted.
ORACLE
instance
shut
down.
SQL>
startup
mount;
ORACLE
instance
started.
SQL>
alter
database
noarchivelog;
(此命令為將歸檔模式關閉)
Database
altered.
SQL>
archive
log
list;
Database
log
mode
No
Archive
Mode
J. 簡述Oracle 11g資料庫的歸檔模式與非歸檔模式的區別。
歸檔日誌是記錄了對某張表修改的時候的日誌,
選擇歸檔模式:這樣你可以選擇任何時間點去還原資料庫。
非歸檔模式,不記歸檔日誌,沒有辦法進行數據恢復。當然如果資料庫的量比較大,變換的頻率比較高,這個歸檔的模式也要合理規劃的,否則歸檔日誌的空間量是很可觀的!我已經吃過一次虧了。