1.日志歸檔的概述和用途
日志歸檔是指將數(shù)據(jù)庫(kù)的歸檔日志文件保存到指定的位置,以便在需要時(shí)進(jìn)行恢復(fù)和回滾操作。在Oracle數(shù)據(jù)庫(kù)中,日志歸檔是一種重要的備份和恢復(fù)策略,可以保證數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性和可靠性。
日志歸檔的主要用途包括:
數(shù)據(jù)庫(kù)備份:歸檔日志文件可以用于數(shù)據(jù)庫(kù)備份,以保證在數(shù)據(jù)庫(kù)出現(xiàn)故障或數(shù)據(jù)丟失時(shí)可以進(jìn)行恢復(fù)操作。
數(shù)據(jù)庫(kù)恢復(fù):歸檔日志文件可以用于數(shù)據(jù)庫(kù)恢復(fù),以恢復(fù)到某個(gè)特定的時(shí)間點(diǎn)或事務(wù)點(diǎn)。
數(shù)據(jù)庫(kù)回滾:歸檔日志文件可以用于數(shù)據(jù)庫(kù)回滾,以撤銷(xiāo)某個(gè)特定的事務(wù)或操作。
數(shù)據(jù)庫(kù)復(fù)制:歸檔日志文件可以用于數(shù)據(jù)庫(kù)復(fù)制,以保證在主數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí)可以切換到備份數(shù)據(jù)庫(kù)。
?是聯(lián)機(jī)重做日志(redo log)組文件的一個(gè)副本
包含redo記錄以及一個(gè)唯一的log sequence number
啟用歸檔模式的目的:數(shù)據(jù)變更前需要由LGWR進(jìn)程將內(nèi)存中的log buffer(重做數(shù)據(jù))寫(xiě)入redo log(重做日志)日志組,但由于日志組是循環(huán)復(fù)用結(jié)構(gòu).日志組切換需要覆蓋時(shí)如果未開(kāi)啟歸檔模式會(huì)被覆蓋,造成日志缺失,無(wú)法完成數(shù)據(jù)庫(kù)的完全恢復(fù).既開(kāi)啟歸檔模式后,可以完成數(shù)據(jù)庫(kù)的介質(zhì)恢復(fù)(recovery).
對(duì)日志組中的一個(gè)日志文件進(jìn)行歸檔,如果該組其中一個(gè)損壞,則另一個(gè)可用的日志將會(huì)被歸檔
對(duì)于歸檔模式的日志切換,當(dāng)日志歸檔完成后,下一個(gè)日志才能被覆蓋或重新使用
自動(dòng)歸檔功能如開(kāi)啟,則后臺(tái)進(jìn)程ARCn在日志切換時(shí)自動(dòng)完成歸檔,否則需要手動(dòng)歸檔
使用LogMiner 提取歷史日志的相關(guān)信息
LGWR是Oracle數(shù)據(jù)庫(kù)中的一個(gè)重要進(jìn)程,全稱(chēng)為Log Writer。它的主要作用是將數(shù)據(jù)庫(kù)緩沖區(qū)中的臟數(shù)據(jù)寫(xiě)入到磁盤(pán)上的重做日志文件中,以保證數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性和可靠性。
具體來(lái)說(shuō),LGWR進(jìn)程的主要工作包括:
將臟數(shù)據(jù)寫(xiě)入重做日志緩沖區(qū):當(dāng)用戶(hù)提交事務(wù)時(shí),Oracle會(huì)將事務(wù)的修改操作記錄到重做日志緩沖區(qū)中,這些數(shù)據(jù)被稱(chēng)為臟數(shù)據(jù)。LGWR進(jìn)程會(huì)定期將這些臟數(shù)據(jù)寫(xiě)入到磁盤(pán)上的重做日志文件中。
維護(hù)重做日志文件:LGWR進(jìn)程會(huì)定期將重做日志文件切換到下一個(gè)文件,以保證重做日志文件不會(huì)過(guò)大或過(guò)小。
提供數(shù)據(jù)恢復(fù)支持:重做日志文件可以用于數(shù)據(jù)庫(kù)的恢復(fù)和回滾操作,LGWR進(jìn)程的工作可以保證重做日志文件的完整性和可靠性,從而保證數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性和可靠性。
LogMiner是Oracle數(shù)據(jù)庫(kù)中的一個(gè)工具,可以用于分析和查看數(shù)據(jù)庫(kù)的重做日志文件,以便進(jìn)行數(shù)據(jù)恢復(fù)、數(shù)據(jù)分析和數(shù)據(jù)審計(jì)等操作。LogMiner可以解析重做日志文件中的SQL語(yǔ)句,并將其轉(zhuǎn)換為易于理解的格式,從而方便用戶(hù)進(jìn)行數(shù)據(jù)分析和恢復(fù)操作。
具體來(lái)說(shuō),LogMiner的主要功能包括:
數(shù)據(jù)恢復(fù):LogMiner可以用于恢復(fù)誤刪除或誤修改的數(shù)據(jù),通過(guò)分析重做日志文件中的SQL語(yǔ)句,可以找到被刪除或修改的數(shù)據(jù),并進(jìn)行恢復(fù)操作。
數(shù)據(jù)分析:LogMiner可以用于分析數(shù)據(jù)庫(kù)的歷史數(shù)據(jù),通過(guò)分析重做日志文件中的SQL語(yǔ)句,可以了解數(shù)據(jù)庫(kù)的操作歷史和數(shù)據(jù)變化情況。
數(shù)據(jù)審計(jì):LogMiner可以用于審計(jì)數(shù)據(jù)庫(kù)的操作,通過(guò)分析重做日志文件中的SQL語(yǔ)句,可以了解數(shù)據(jù)庫(kù)的操作情況和操作者。
使用LogMiner需要先啟用數(shù)據(jù)庫(kù)的歸檔模式,并將重做日志文件保存到指定的位置。然后,可以使用DBMS_LOGMNR包中的函數(shù)來(lái)分析重做日志文件,例如使用DBMS_LOGMNR.START_LOGMNR函數(shù)開(kāi)始分析重做日志文件,使用DBMS_LOGMNR.ADD_LOGFILE函數(shù)添加重做日志文件,使用DBMS_LOGMNR.START_LOGMNR函數(shù)結(jié)束分析重做日志文件等。
2. 歸檔和非歸檔的區(qū)別
歸檔和非歸檔是Oracle數(shù)據(jù)庫(kù)中兩種不同的工作模式,它們的主要區(qū)別在于重做日志文件的處理方式。
在歸檔模式下,Oracle會(huì)將數(shù)據(jù)庫(kù)的歸檔日志文件保存到指定的位置,以便在需要時(shí)進(jìn)行恢復(fù)和回滾操作。在歸檔模式下,重做日志文件會(huì)被自動(dòng)歸檔,即當(dāng)一個(gè)重做日志文件被寫(xiě)滿(mǎn)后,Oracle會(huì)將其重命名并移動(dòng)到歸檔目錄中,然后創(chuàng)建一個(gè)新的重做日志文件。這樣可以保證數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性和可靠性,同時(shí)也可以提高數(shù)據(jù)庫(kù)的可用性和可靠性。
在非歸檔模式下,Oracle不會(huì)將重做日志文件保存到指定的位置,而是直接覆蓋之前的重做日志文件。這樣會(huì)導(dǎo)致重做日志文件的數(shù)據(jù)被不斷覆蓋,無(wú)法進(jìn)行恢復(fù)和回滾操作,因此非歸檔模式下的數(shù)據(jù)庫(kù)容易出現(xiàn)數(shù)據(jù)丟失和不可恢復(fù)的情況。
在生產(chǎn)環(huán)境中,建議使用歸檔模式來(lái)保證數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性和可靠性。
3. 查看歸檔模式的方法
3.1 archive log list
使用SQLPlus命令查詢(xún):可以使用SQLPlus命令查詢(xún)數(shù)據(jù)庫(kù)的歸檔模式,具體操作步驟如下:
a. 打開(kāi)SQL*Plus命令行界面;
b. 連接到目標(biāo)數(shù)據(jù)庫(kù);
c. 執(zhí)行以下命令:
[oracle@oracle-db-19c ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Apr 2 14:25:06 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show user;
USER is "SYS"
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
SQL> alter session set container=PDB1;
Session altered.
SQL> show user;
USER is "SYS"
SQL> show con_name;
CON_NAME
------------------------------
PDB1
SQL>
SQL>
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch
Oldest online log sequence 395
Next log sequence to archive 397
Current log sequence 397
SQL>
如果查詢(xún)結(jié)果中包含“Database log mode: Archive Mode”,則表示數(shù)據(jù)庫(kù)處于歸檔模式;如果查詢(xún)結(jié)果中包含“Database log mode: No Archive Mode”,則表示數(shù)據(jù)庫(kù)處于非歸檔模式。
3.2 V$DATABASE視圖
SQL>
SQL> set pagesize 200 linesize 200
SQL> select name,log_mode from v$database;
NAME LOG_MODE
--------------------------- ------------------------------------
CDB1 ARCHIVELOG
SQL>
如果查詢(xún)結(jié)果為ARCHIVELOG,則表示數(shù)據(jù)庫(kù)處于歸檔模式;如果查詢(xún)結(jié)果為NOARCHIVELOG,則表示數(shù)據(jù)庫(kù)處于非歸檔模式。
3.3 通過(guò)查看數(shù)據(jù)庫(kù)的參數(shù)文件進(jìn)行查看歸檔模式
查看數(shù)據(jù)庫(kù)參數(shù)文件:可以查看數(shù)據(jù)庫(kù)的參數(shù)文件,以確定數(shù)據(jù)庫(kù)的歸檔模式。具體操作步驟如下:
a. 打開(kāi)數(shù)據(jù)庫(kù)參數(shù)文件(通常為$ORACLE_HOME/dbs/init<ORACLE_SID>.ora);
b. 查找參數(shù)log_archive_start,如果該參數(shù)的值為TRUE,則表示數(shù)據(jù)庫(kù)處于歸檔模式;如果該參數(shù)的值為FALSE,則表示數(shù)據(jù)庫(kù)處于非歸檔模式。
4. 日志歸檔
日志歸檔是Oracle數(shù)據(jù)庫(kù)中的一種重要功能,它可以將數(shù)據(jù)庫(kù)的重做日志文件保存到指定的位置,以便在需要時(shí)進(jìn)行恢復(fù)和回滾操作。在歸檔模式下,重做日志文件會(huì)被自動(dòng)歸檔,即當(dāng)一個(gè)重做日志文件被寫(xiě)滿(mǎn)后,Oracle會(huì)將其重命名并移動(dòng)到歸檔目錄中,然后創(chuàng)建一個(gè)新的重做日志文件。這樣可以保證數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性和可靠性,同時(shí)也可以提高數(shù)據(jù)庫(kù)的可用性和可靠性。
日志歸檔的主要作用包括:
數(shù)據(jù)恢復(fù):日志歸檔可以用于恢復(fù)誤刪除或誤修改的數(shù)據(jù),通過(guò)分析歸檔日志文件中的SQL語(yǔ)句,可以找到被刪除或修改的數(shù)據(jù),并進(jìn)行恢復(fù)操作。
數(shù)據(jù)備份:日志歸檔可以用于備份數(shù)據(jù)庫(kù)的數(shù)據(jù),通過(guò)備份歸檔日志文件,可以保證數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性和可靠性。
數(shù)據(jù)分析:日志歸檔可以用于分析數(shù)據(jù)庫(kù)的歷史數(shù)據(jù),通過(guò)分析歸檔日志文件中的SQL語(yǔ)句,可以了解數(shù)據(jù)庫(kù)的操作歷史和數(shù)據(jù)變化情況。
數(shù)據(jù)審計(jì):日志歸檔可以用于審計(jì)數(shù)據(jù)庫(kù)的操作,通過(guò)分析歸檔日志文件中的SQL語(yǔ)句,可以了解數(shù)據(jù)庫(kù)的操作情況和操作者。
總之,日志歸檔是Oracle數(shù)據(jù)庫(kù)中非常重要的一個(gè)功能,可以用于數(shù)據(jù)恢復(fù)、數(shù)據(jù)備份、數(shù)據(jù)分析和數(shù)據(jù)審計(jì)等操作,可以幫助用戶(hù)更好地管理和維護(hù)數(shù)據(jù)庫(kù)。
在歸檔時(shí),Oracle會(huì)將歸檔信息寫(xiě)入到控制文件中。控制文件是Oracle數(shù)據(jù)庫(kù)中的一個(gè)重要文件,它記錄了數(shù)據(jù)庫(kù)的結(jié)構(gòu)信息、日志信息和備份信息等,是數(shù)據(jù)庫(kù)的重要組成部分之一。
在歸檔模式下,當(dāng)一個(gè)重做日志文件被寫(xiě)滿(mǎn)后,Oracle會(huì)將其重命名并移動(dòng)到歸檔目錄中,同時(shí)將歸檔信息寫(xiě)入到控制文件中。歸檔信息包括歸檔日志文件的名稱(chēng)、路徑、創(chuàng)建時(shí)間等信息,可以用于恢復(fù)和回滾操作。
控制文件中的歸檔信息可以通過(guò)以下SQL語(yǔ)句查詢(xún):
SQL> SELECT * FROM v$archived_log;
該查詢(xún)語(yǔ)句可以列出所有已歸檔的日志文件的信息,包括文件名、路徑、創(chuàng)建時(shí)間、歸檔時(shí)間等信息。
總之,在歸檔模式下,Oracle會(huì)將歸檔信息寫(xiě)入到控制文件中,以便在需要時(shí)進(jìn)行恢復(fù)和回滾操作??刂莆募械臍w檔信息可以通過(guò)SQL語(yǔ)句查詢(xún)。
4.1 非歸檔到歸檔模式
? a.一致性關(guān)閉數(shù)據(jù)庫(kù)(shutdown [immediate | transactional |normal])
? b.啟動(dòng)到mount階段(startup mount)
? c.切換到歸檔模式(alter database archivelog [manual])
? d.切換到open階段(alter database open)
? e.對(duì)數(shù)據(jù)做一個(gè)完整備份(full backup)
演示非歸檔到歸檔模式
4.1.1 shutdown immediate
SQL> shutdown immediate -- 這里shutdown 一定要immediate方式 Database closed.
Database dismounted.
ORACLE instance shut down.
4.1.2 startup mount
SQL> startup mount -- 到mount下設(shè)置
4.1.3 alter database archivelog;
SQL> alter database archivelog;
Database altered.
4.1.4 alter database open;
SQL> alter database open;
4.1.5 archive log list
SQL>
SQL>
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch
Oldest online log sequence 398
Next log sequence to archive 400
Current log sequence 400
SQL>
4.2 歸檔模式切換到非歸檔模式
? a.一致性關(guān)閉數(shù)據(jù)庫(kù)(shutdown [immediate | transactional |normal])
? b.啟動(dòng)到mount階段(startup mount)
? c.切換到歸檔模式(alter database noarchivelog )
? d.切換到open階段(alter database open)
? e.對(duì)數(shù)據(jù)做一個(gè)完整備份(full backup)
4.3 手動(dòng)歸檔
手動(dòng)歸檔時(shí)需要將日志模式切換為alter database archivelog manual
再使用alter system archive log current | all 實(shí)現(xiàn)歸檔
注意:手動(dòng)歸檔模式下不支持standby數(shù)據(jù)庫(kù)
-- 將日志模式切換為手工歸檔模式
SQL> ALTER DATABASE ARCHIVELOG MANUAL;
Database altered.
-- 打開(kāi)數(shù)據(jù)庫(kù)
SQL> ALTER DATABASE OPEN;
Database altered.
-- 對(duì)當(dāng)前的日志進(jìn)行歸檔(建議在mount階段完成)
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
System altered.
-- 對(duì)所有的日志進(jìn)行歸檔
SQL> ALTER SYSTEM ARCHIVE LOG ALL;
alter system archive log all
*
ERROR at line 1:
ORA-00271: there are no logs that need archiving -- 沒(méi)有需要?dú)w檔的日志
-- 在alter database archivelog模式下也可以實(shí)現(xiàn)對(duì)日志的歸檔
-- 手工歸檔方法一.
SQL> alter system switch logfile;
-- 手工歸檔方法二,此方式僅限于Archive mode.
SQL> alter system archive log current;
-- 查看已經(jīng)歸檔日志:
SQL> col name format a80
SQL> select name from v$archived_log;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_171_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_172_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_173_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_174_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_175_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_176_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_177_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_178_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_179_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_180_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_181_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_182_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_183_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_184_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_185_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_186_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_187_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_188_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_189_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_190_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_191_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_192_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_193_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_194_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_195_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_196_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_197_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_198_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_199_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_200_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_201_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_202_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_203_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_204_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_205_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_206_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_207_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_208_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_209_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_210_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_211_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_212_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_213_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_214_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_215_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_216_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_217_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_218_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_219_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_220_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_221_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_222_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_223_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_224_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_225_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_226_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_227_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_228_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_229_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_230_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_231_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_232_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_233_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_234_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_235_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_236_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_237_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_238_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_239_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_240_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_241_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_242_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_243_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_244_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_245_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_246_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_247_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_248_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_249_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_250_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_251_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_252_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_253_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_254_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_255_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_256_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_257_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_258_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_259_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_260_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_261_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_262_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_263_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_264_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_265_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_266_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_267_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_268_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_269_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_270_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_271_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_272_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_273_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_274_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_275_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_276_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_277_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_278_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_279_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_280_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_281_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_282_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_283_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_284_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_285_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_286_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_287_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_288_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_289_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_290_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_291_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_292_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_293_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_294_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_295_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_296_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_297_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_298_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_299_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_300_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_301_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_302_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_303_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_304_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_305_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_306_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_307_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_308_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_309_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_310_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_311_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_312_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_313_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_314_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_315_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_316_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_317_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_318_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_319_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_320_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_321_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_322_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_323_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_324_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_325_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_326_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_327_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_328_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_329_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_330_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_331_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_332_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_333_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_334_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_335_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_336_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_337_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_338_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_339_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_340_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_341_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_342_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_343_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_344_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_345_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_346_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_347_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_348_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_349_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_350_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_351_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_352_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_353_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_354_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_355_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_356_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_357_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_358_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_359_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_360_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_361_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_362_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_363_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_364_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_365_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_366_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_367_1119711914.dbf
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_368_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_369_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_370_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_371_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_372_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_373_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_374_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_375_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_376_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_377_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_378_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_379_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_380_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_381_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_382_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_383_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_384_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_385_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_386_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_387_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_388_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_389_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_390_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_391_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_392_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_393_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_394_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_395_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_396_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_397_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_398_1119711914.dbf
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_399_1119711914.dbf
229 rows selected.
SQL>
5. 歸檔日志路徑及命名
5.1 歸檔日志默認(rèn)路徑
如果log_archive_dest_n為空,歸檔日志文件目錄為log_archive_dest,
如果log_archive_dest值也是空,則默認(rèn)的是db_recover_file_dest參數(shù)指定的位置.缺省安裝后db_recover_file_dest指向flash_recover_area
注意: 另外指定并不意味著你要取消閃回恢復(fù)區(qū)的參數(shù),因?yàn)檫@個(gè)閃回恢復(fù)區(qū)不僅歸檔日志,還有RMAN的備份及閃回日志等等.
SQL>
SQL> show parameter archive
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
archive_lag_target integer 0
log_archive_config string
log_archive_dest string
log_archive_dest_1 string LOCATION=/u01/app/oracle/produ
ct/19.3.0/dbhome_1/dbs/arch
log_archive_dest_10 string
log_archive_dest_11 string
log_archive_dest_12 string
log_archive_dest_13 string
log_archive_dest_14 string
log_archive_dest_15 string
log_archive_dest_16 string
log_archive_dest_17 string
log_archive_dest_18 string
log_archive_dest_19 string
log_archive_dest_2 string
log_archive_dest_20 string
log_archive_dest_21 string
log_archive_dest_22 string
log_archive_dest_23 string
log_archive_dest_24 string
log_archive_dest_25 string
log_archive_dest_26 string
log_archive_dest_27 string
log_archive_dest_28 string
log_archive_dest_29 string
log_archive_dest_3 string
log_archive_dest_30 string
log_archive_dest_31 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_11 string enable
log_archive_dest_state_12 string enable
log_archive_dest_state_13 string enable
log_archive_dest_state_14 string enable
log_archive_dest_state_15 string enable
log_archive_dest_state_16 string enable
log_archive_dest_state_17 string enable
log_archive_dest_state_18 string enable
log_archive_dest_state_19 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_20 string enable
log_archive_dest_state_21 string enable
log_archive_dest_state_22 string enable
log_archive_dest_state_23 string enable
log_archive_dest_state_24 string enable
log_archive_dest_state_25 string enable
log_archive_dest_state_26 string enable
log_archive_dest_state_27 string enable
log_archive_dest_state_28 string enable
log_archive_dest_state_29 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_30 string enable
log_archive_dest_state_31 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
log_archive_duplex_dest string
log_archive_format string %t_%s_%r.dbf
log_archive_max_processes integer 4
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
SQL>
SQL> show parameter db_recovery
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
db_recovery_file_dest string /u02/oradata/fra
db_recovery_file_dest_size big integer 20G
SQL>
5.2 指定歸檔日志路徑
log_archive_dest_n
log_archive_dest_n (n:1-10)表示可以有10個(gè)目標(biāo)路徑存放歸檔日志(鏡像關(guān)系),即可以多路復(fù)用10個(gè)歸檔日志的備份.
5.2.1 Location
SQL> alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch';
5.2.2 Location mandatory
SQL> alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch mandatory';
//mandatory 強(qiáng)制歸檔: 聯(lián)機(jī)日志文件必須要成功歸檔到這個(gè)目錄后才能被覆寫(xiě)(聯(lián)機(jī)日志文件是重復(fù)使用的文件),在設(shè)置時(shí)至少有一個(gè)本地的(location) 強(qiáng)制(mandatory)歸檔目錄(NOTE)
//默認(rèn)optional, 即使歸檔沒(méi)有成功也可以覆蓋聯(lián)機(jī)日志文件.
5.2.3 Service
SQL> alter system set log_archive_dest_2='service=test';
/W/遠(yuǎn)程備份,把歷史日志備份到服務(wù)名為test的數(shù)據(jù)庫(kù)上.(service 代表遠(yuǎn)程),配置雙機(jī)時(shí)有用.
5.3 影響歸檔路徑的4個(gè)參數(shù)
LOG_ARCHIVE_DEST #:指定歸檔文件存放的路徑,該路徑只能使用本地磁盤(pán),并且只能為mandatory 主歸檔.默認(rèn)為' '
LOG_ARCHIVE_DUPLEX_DEST #:指定歸檔文件存放的路徑,該路徑只能使用本地磁盤(pán),并且只能為optional 從歸檔.默認(rèn)為' '
LOG_ARCHIVE_DEST_N #:指定歸檔存放路徑,11G中可以提供31條路徑.該路徑可以使用本地磁盤(pán)和網(wǎng)絡(luò)遠(yuǎn)端磁盤(pán),默認(rèn)為' '
DB_RECOVERY_FILE_DEST #:指定閃回恢復(fù)區(qū)路徑, 默認(rèn)flash recovery area的路徑
?5.4 歸檔日志命名方法
log_archive_format
是定義命名格式的,例如使用了下面三個(gè)內(nèi)置符號(hào)(模板),其含義是:
%t ,thread# , 日志線程號(hào)
%s ,sequence , 日志序列號(hào)
%r ,resetlog , 代表數(shù)據(jù)庫(kù)的周期文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-408546.html
SQL> alter system set log_archive_format ='arch_%t_%r_%s.log' scope=spfile;
6. 在Linux下查看歸檔進(jìn)程
[oracle@oracle-db-19c ~]$ ps -ef | grep ora_arc
oracle 2179 1 0 11:48 ? 00:00:00 ora_arc0_cdb1
oracle 2183 1 0 11:48 ? 00:00:04 ora_arc1_cdb1
oracle 2185 1 0 11:48 ? 00:00:00 ora_arc2_cdb1
oracle 2187 1 0 11:48 ? 00:00:00 ora_arc3_cdb1
oracle 53221 51429 0 15:08 pts/7 00:00:00 grep --color=auto ora_arc
[oracle@oracle-db-19c ~]$
ARCn?就是歸檔進(jìn)程,這里啟動(dòng)了4個(gè) arc0 ,arc1,arc2,arc3歸檔進(jìn)程,最多可達(dá) 30 ,由 log_archive_max_processes參數(shù)指定.文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-408546.html
到了這里,關(guān)于【數(shù)據(jù)庫(kù)管理】⑤歸檔日志Archive Log的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!