ArchiveMode 에서의 Backup & Recovery-
logmnr
LOGMINER
- redo sql과 undo sql을 만드는 툴
추가정보
@log
select group#, sequence#, status, archived, members, bytes/1024/1024 mb
from v$log;
@logfile
col member for a35
SELECT a.group# ,b.sequence#,a.member , b.bytes/1024/1024 MB , b.archived , b.status
FROM v$logfile a , v$log b
WHERE a.group#=b.group#
ORDER BY 1;
@data
col name for a35
select name, status from v$datafile
@switch
alter system switch logfile;
@check
alter system checkpoint;
@logmnr
col filename for a35
select db_name, filename from v$logmnr_logs;
@db_list
set echo off
set pages 0
set head off
set feed off
create pfile from spfile;
spool orcl2_backup.sh
select 'cp -av ' || name||' /home/oracle/backup/arch/cold'
from v$controlfile
union all
select 'cp -av ' || name||' /home/oracle/backup/arch/cold'
from v$datafile
union all
select 'cp -av ' || member ||' /home/oracle/backup/arch/cold'
from v$logfile;
select 'cp -av $ORACLE_HOME/dbs/initorcl2.ora /home/oracle/backup/arch/cold' from dual;
spool off
set feedback on
set head on
set pages 100
set echo on
-- logminer를 이용한 복구
-- logmnr을 사용하기 위해서는 보조 정보를 만들어 주어야 한다
SYS@orcl2> select supplemental_log_data_min from v$database;
SUPPLEME
--------
NO
SYS@orcl2> alter database add supplemental log data;
Database altered.
SYS@orcl2> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES
SYS@orcl2> ! mkdir -p /home/oracle/utl_dir
SYS@orcl2> alter system set utl_file_dir = '/home/oracle/utl_dir' scope=spfile;
System altered.
SYS@orcl2> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@orcl2> startup
ORACLE instance started.
Total System Global Area 431038464 bytes
Fixed Size 1337016 bytes
Variable Size 146803016 bytes
Database Buffers 276824064 bytes
Redo Buffers 6074368 bytes
Database mounted.
Database opened.
SYS@orcl2> show parameter utl_file_dir
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir string /home/oracle/utl_dir
SYS@orcl2> @logfile
GROUP# SEQUENCE# MEMBER MB ARC STATUS
---------- ---------- ----------------------------------- ---------- --- ----------------
1 1 /u01/app/oracle/orcl2/redo01.log 50 NO CURRENT
2 0 /u01/app/oracle/orcl2/redo02.log 50 YES UNUSED
3 0 /u01/app/oracle/orcl2/redo03.log 50 YES UNUSED
/* UNUSED 상태의 LOG GROUP의 있을 경우 log switch 를 수행하세요 */
SYS@orcl2> @switch
System altered.
SYS@orcl2> /
System altered.
SYS@orcl2> @logfile
GROUP# SEQUENCE# MEMBER MB ARC STATUS
---------- ---------- ----------------------------------- ---------- --- ----------------
1 1 /u01/app/oracle/orcl2/redo01.log 50 YES INACTIVE
2 2 /u01/app/oracle/orcl2/redo02.log 50 YES INACTIVE
3 3 /u01/app/oracle/orcl2/redo03.log 50 NO CURRENT
SYS@orcl2> create table hr.test(id number, name varchar2(30)) tablespace example;
Table created.
SYS@orcl2> insert into hr.test(id,name) values(1,'oracle');
1 row created.
SYS@orcl2> insert into hr.test(id,name) values(2,'overwatch');
1 row created.
SYS@orcl2> commit;
Commit complete.
SYS@orcl2> update hr.test set name = 'itwill' where id = 1;
1 row updated.
SYS@orcl2> delete from hr.test where id = 2;
1 row deleted.
SYS@orcl2> commit;
Commit complete.
SYS@orcl2> select * from hr.test;
ID NAME
---------- ------------------------------
1 itwill
SYS@orcl2> @logfile
GROUP# SEQUENCE# MEMBER MB ARC STATUS
---------- ---------- ----------------------------------- ---------- --- ----------------
1 1 /u01/app/oracle/orcl2/redo01.log 50 YES INACTIVE
2 2 /u01/app/oracle/orcl2/redo02.log 50 YES INACTIVE
3 3 /u01/app/oracle/orcl2/redo03.log 50 NO CURRENT
SYS@orcl2> begin
dbms_logmnr_d.build('dict.dat','/home/oracle/utl_dir');
end;
/
LogMnr Dictionary Procedure started
LogMnr Dictionary File Opened
Procedure executed successfully - LogMnr Dictionary Created
PL/SQL procedure successfully completed.
SYS@orcl2> begin
dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/orcl2/redo02.log',options=>dbms_logmnr.new);
dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/orcl2/redo03.log',options=>dbms_logmnr.addfile);
end;
/
PL/SQL procedure successfully completed.
SYS@orcl2> select db_name, filename from v$logmnr_logs;
DB_NAME FILENAME
-------- -----------------------------------
ORCL2 /u01/app/oracle/orcl2/redo02.log
ORCL2 /u01/app/oracle/orcl2/redo03.log
SYS@orcl2> begin
dbms_logmnr.start_logmnr(dictfilename => '/home/oracle/utl_dir/dict.dat');
end;
/
PL/SQL procedure successfully completed.
SYS@orcl2> select to_char(timestamp, 'yyyy-mm-dd hh24:mi:ss'), operation, sql_redo, sql_undo
from v$logmnr_contents
where seg_name = 'TEST';
TO_CHAR(TIMESTAMP,' OPERATION
------------------- --------------------------------
SQL_REDO
-------------------------------------------------------------------------------------------------
SQL_UNDO
-------------------------------------------------------------------------------------------------
2019-04-17 12:00:10 DDL
create table hr.test(id number, name varchar2(30)) tablespace example;
2019-04-17 12:00:17 INSERT
insert into "HR"."TEST"("ID","NAME") values ('1','oracle');
delete from "HR"."TEST" where "ID" = '1' and "NAME" = 'oracle' and ROWID = 'AAASOAAAFAAAAHnAAA';
2019-04-17 12:00:17 INSERT
insert into "HR"."TEST"("ID","NAME") values ('2','overwatch');
delete from "HR"."TEST" where "ID" = '2' and "NAME" = 'overwatch' and ROWID = 'AAASOAAAFAAAAHnAAB';
2019-04-17 12:00:23 UPDATE
update "HR"."TEST" set "NAME" = 'itwill' where "NAME" = 'oracle' and ROWID = 'AAASOAAAFAAAAHnAAA';
update "HR"."TEST" set "NAME" = 'oracle' where "NAME" = 'itwill' and ROWID = 'AAASOAAAFAAAAHnAAA';
2019-04-17 12:00:26 DELETE
delete from "HR"."TEST" where "ID" = '2' and "NAME" = 'overwatch' and ROWID = 'AAASOAAAFAAAAHnAAB';
insert into "HR"."TEST"("ID","NAME") values ('2','overwatch');
SYS@orcl2> select to_char(timestamp, 'yyyy-mm-dd hh24:mi:ss'), operation, sql_redo, sql_undo
from v$logmnr_contents
where seg_owner = 'HR'; 2 3
TO_CHAR(TIMESTAMP,' OPERATION
------------------- --------------------------------
SQL_REDO
--------------------------------------------------------------------------------------------------
SQL_UNDO
--------------------------------------------------------------------------------------------------
2019-04-17 12:00:10 DDL
create table hr.test(id number, name varchar2(30)) tablespace example;
2019-04-17 12:00:17 INSERT
insert into "HR"."TEST"("ID","NAME") values ('1','oracle');
delete from "HR"."TEST" where "ID" = '1' and "NAME" = 'oracle' and ROWID = 'AAASOAAAFAAAAHnAAA';
2019-04-17 12:00:17 INSERT
insert into "HR"."TEST"("ID","NAME") values ('2','overwatch');
delete from "HR"."TEST" where "ID" = '2' and "NAME" = 'overwatch' and ROWID = 'AAASOAAAFAAAAHnAAB';
2019-04-17 12:00:23 UPDATE
update "HR"."TEST" set "NAME" = 'itwill' where "NAME" = 'oracle' and ROWID = 'AAASOAAAFAAAAHnAAA';
update "HR"."TEST" set "NAME" = 'oracle' where "NAME" = 'itwill' and ROWID = 'AAASOAAAFAAAAHnAAA';
2019-04-17 12:00:26 DELETE
delete from "HR"."TEST" where "ID" = '2' and "NAME" = 'overwatch' and ROWID = 'AAASOAAAFAAAAHnAAB';
insert into "HR"."TEST"("ID","NAME") values ('2','overwatch');
SYS@orcl2> exec dbms_logmnr.end_logmnr;
PL/SQL procedure successfully completed.
=========================================================================
다음을 반드시 수행 : 전체 DB cold backup 수행
ARCHIVE LOG : 전체 DB 백업
SYS@orcl2> @db_list
SYS@orcl2> shutdown immediate
[orcl2:~]$ chmod 755 orcl2_backup.sh
[orcl2:~]$ . orcl2_backup.sh -- 전체 DB 백업
[orcl2:~]$ rm /home/oracle/arch1/* /home/oracle/arch2/* -- 불필요한 archive log 삭제
SYS@orcl2> startup
=========================================================================
-- TEMP DB를 이용한 불완전 복구 : time based recovery using TEMP DB
-- 테이블을 drop하기 이전으로 복구해야 함
-- 전체 DB가 과거로 돌아가야 하는 상황에서 temp DB를 만들어서 temp DB를 불완전 복구해서
-- 해당 테이블만 export 해서 원래 DB에 import 함으로써 해결한다.
1. db 정상 종료후에 whole database backup
2. db 시작후에 테이블 생성
SYS@orcl2> @log
GROUP# SEQUENCE# STATUS ARC MEMBERS MB
---------- ---------- ---------------- --- ---------- ----------
1 1 INACTIVE YES 1 50
2 2 INACTIVE YES 1 50
3 3 CURRENT NO 1 50
SYS@orcl2> @switch
System altered.
SYS@orcl2> @switch
System altered.
SYS@orcl2> @switch
System altered.
SYS@orcl2> !ls arch1
arch_1_3_1005823121.arc arch_1_4_1005823121.arc arch_1_5_1005823121.arc
SYS@orcl2> @log
GROUP# SEQUENCE# STATUS ARC MEMBERS MB
---------- ---------- ---------------- --- ---------- ----------
1 4 INACTIVE YES 1 50
2 5 INACTIVE YES 1 50
3 6 CURRENT NO 1 50
SYS@orcl2> create table hr.emp_new tablespace users as select * from hr.employees;
Table created.
SYS@orcl2> select count(*) from hr.emp_new;
COUNT(*)
----------
107
3. drop table 장애발생
SYS@orcl2> select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
17-APR-19 01.58.46.549010 PM +09:00
SYS@orcl2> drop table hr.emp_new purge;
Table dropped.
4. log miner를 이용하여 drop 시간 정보 확인
SYS@orcl2> @logfile
GROUP# SEQUENCE# MEMBER MB ARC STATUS
---------- ---------- ----------------------------------- ---------- --- ----------------
1 4 /u01/app/oracle/orcl2/redo01.log 50 YES INACTIVE
2 5 /u01/app/oracle/orcl2/redo02.log 50 YES INACTIVE
3 6 /u01/app/oracle/orcl2/redo03.log 50 NO CURRENT
SYS@orcl2> begin
dbms_logmnr.add_logfile (logfilename => '/u01/app/oracle/orcl2/redo02.log', options => dbms_logmnr.new);
dbms_logmnr.add_logfile (logfilename => '/u01/app/oracle/orcl2/redo03.log', options => dbms_logmnr.addfile);
end;
/
PL/SQL procedure successfully completed.
SYS@orcl2> @logmnr
DB_NAME FILENAME
-------- -----------------------------------
ORCL2 /u01/app/oracle/orcl2/redo02.log
ORCL2 /u01/app/oracle/orcl2/redo03.log
SYS@orcl2> begin
dbms_logmnr.start_logmnr(options => dbms_logmnr.dict_from_online_catalog);
end;
/
PL/SQL procedure successfully completed.
SYS@orcl2> select to_char(timestamp, 'yyyy-mm-dd hh24:mi:ss'), operation, sql_redo
from v$logmnr_contents
where seg_name = 'EMP_NEW';
TO_CHAR(TIMESTAMP,' OPERATION
------------------- --------------------------------
SQL_REDO
--------------------------------------------------------------------------------------------------
2019-04-17 13:47:57 DDL
create table hr.emp_new tablespace users as select * from hr.employees;
2019-04-17 13:59:01 DDL
drop table hr.emp_new purge;
SYS@orcl2> exec dbms_logmnr.end_logmnr;
PL/SQL procedure successfully completed.
5. PFILE 생성 후 DB 정상 종료
SYS@orcl2> create pfile from spfile;
File created.
SYS@orcl2> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[orcl2:~]$ mkdir temp
[orcl2:~]$ cp -av /home/oracle/backup/arch/cold/*.dbf /home/oracle/temp
`/home/oracle/backup/arch/cold/data01.dbf' -> `/home/oracle/temp/data01.dbf'
`/home/oracle/backup/arch/cold/data02.dbf' -> `/home/oracle/temp/data02.dbf'
`/home/oracle/backup/arch/cold/example01.dbf' -> `/home/oracle/temp/example01.dbf'
`/home/oracle/backup/arch/cold/insa_tbs01.dbf' -> `/home/oracle/temp/insa_tbs01.dbf'
`/home/oracle/backup/arch/cold/sysaux01.dbf' -> `/home/oracle/temp/sysaux01.dbf'
`/home/oracle/backup/arch/cold/system01.dbf' -> `/home/oracle/temp/system01.dbf'
`/home/oracle/backup/arch/cold/undotbs01.dbf' -> `/home/oracle/temp/undotbs01.dbf'
`/home/oracle/backup/arch/cold/users01.dbf' -> `/home/oracle/temp/users01.dbf'
[orcl2:~]$ cp -av /u01/app/oracle/orcl2/*.ctl /home/oracle/temp
`/u01/app/oracle/orcl2/control01.ctl' -> `/home/oracle/temp/control01.ctl'
`/u01/app/oracle/orcl2/control03.ctl' -> `/home/oracle/temp/control03.ctl'
[orcl2:~]$ cp -av /u01/app/oracle/orcl2/*.log /home/oracle/temp
`/u01/app/oracle/orcl2/redo01.log' -> `/home/oracle/temp/redo01.log'
`/u01/app/oracle/orcl2/redo02.log' -> `/home/oracle/temp/redo02.log'
`/u01/app/oracle/orcl2/redo03.log' -> `/home/oracle/temp/redo03.log'
`/u01/app/oracle/orcl2/redo04.log' -> `/home/oracle/temp/redo04.log'
[orcl2:~]$ ls /home/oracle/temp
control01.ctl data01.dbf example01.dbf redo01.log redo03.log sysaux01.dbf undotbs01.dbf
control03.ctl data02.dbf insa_tbs01.dbf redo02.log redo04.log system01.dbf users01.dbf
7. pfile 에 있는 control file 경로 수정
[oracle@localhost ~]$ vi $ORACLE_HOME/dbs/initorcl2.ora
#*.control_files='/u01/app/oracle/orcl2/control01.ctl' --> comment 처리
*.control_files='/home/oracle/temp/control01.ctl' --> 새로운 temp DB 가르키도록 수정해준다.
8. pfile을 이용해서 db mount까지 시작
[orcl2:~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 17 14:08:33 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SYS@orcl2> startup pfile=$ORACLE_HOME/dbs/initorcl2.ora mount
ORACLE instance started.
Total System Global Area 431038464 bytes
Fixed Size 1337016 bytes
Variable Size 146803016 bytes
Database Buffers 276824064 bytes
Redo Buffers 6074368 bytes
Database mounted.
SYS@orcl2> select name from v$controlfile;
NAME
----------------------------------------------------------------------------------------
/home/oracle/temp/control01.ctl
9. (필수) data file의 위치를 temp 경로로 변경, 복구에 필요 없는 data file은 offline 한다.
SYS@orcl2> select name from v$datafile;
NAME
---------------------------------------
/u01/app/oracle/orcl2/system01.dbf
/u01/app/oracle/orcl2/sysaux01.dbf
/u01/app/oracle/orcl2/undotbs01.dbf
/u01/app/oracle/orcl2/users01.dbf
/u01/app/oracle/orcl2/example01.dbf
SYS@orcl2> alter database rename file '/u01/app/oracle/orcl2/system01.dbf' to '/home/oracle/temp/system01.dbf';
Database altered.
SYS@orcl2> alter database rename file '/u01/app/oracle/orcl2/sysaux01.dbf' to '/home/oracle/temp/sysaux01.dbf';
Database altered.
SYS@orcl2> alter database rename file '/u01/app/oracle/orcl2/undotbs01.dbf' to '/home/oracle/temp/undotbs01.dbf';
Database altered.
SYS@orcl2> alter database rename file '/u01/app/oracle/orcl2/users01.dbf' to '/home/oracle/temp/users01.dbf';
Database altered.
SYS@orcl2> alter database datafile '/u01/app/oracle/orcl2/example01.dbf' offline;
Database altered.
SYS@orcl2> alter database datafile '/u01/app/oracle/orcl2/example01.dbf' offline;
Database altered.
SYS@orcl2> select name, status from v$datafile;
NAME STATUS
----------------------------------- -------
/home/oracle/temp/system01.dbf SYSTEM
/home/oracle/temp/sysaux01.dbf ONLINE
/home/oracle/temp/undotbs01.dbf ONLINE
/home/oracle/temp/users01.dbf ONLINE
/u01/app/oracle/orcl2/example01.dbf OFFLINE
10. redo log file 위치 변경
SYS@orcl2> select member from v$logfile;
MEMBER
------------------------------------------
/u01/app/oracle/orcl2/redo03.log
/u01/app/oracle/orcl2/redo02.log
/u01/app/oracle/orcl2/redo01.log
SYS@orcl2> alter database rename file '/u01/app/oracle/orcl2/redo03.log' to '/home/oracle/temp/redo03.log';
Database altered.
SYS@orcl2> alter database rename file '/u01/app/oracle/orcl2/redo02.log' to '/home/oracle/temp/redo02.log';
Database altered.
SYS@orcl2> alter database rename file '/u01/app/oracle/orcl2/redo01.log' to '/home/oracle/temp/redo01.log';
Database altered.
SYS@orcl2> select member from v$logfile;
MEMBER
---------------------------------------------
/home/oracle/temp/redo03.log
/home/oracle/temp/redo02.log
/home/oracle/temp/redo01.log
11. drop table 하기 시점 전까지 복구 한후 db resetlogs로 open
SYS@orcl2> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
Session altered.
SYS@orcl2> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
Session altered.
SYS@orcl2> recover database until time '2019-04-17 13:59:00';
=> 위에서 확인한 시간보다 1초전으로 돌아가자.
ORA-00279: change 1109466 generated at 04/17/2019 13:45:08 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch2/arch_1_3_1005823121.arc
ORA-00280: change 1109466 for thread 1 is in sequence #3
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
Log applied.
Media recovery complete.
SYS@orcl2> alter database open resetlogs;
Database altered.
SYS@orcl2> select count(*) from hr.emp_new;
COUNT(*)
----------
107
12. export 생성
[orcl2:~]$ exp hr/hr tables=emp_new file=emp_new.dmp
Export: Release 11.2.0.1.0 - Production on Wed Apr 17 14:23:22 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)
About to export specified tables via Conventional Path ...
. . exporting table EMP_NEW 107 rows exported
Export terminated successfully without warnings.
13. db 정상적인 종료 후에 시작 한 후 import 수행
SYS@orcl2> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@orcl2> startup
ORACLE instance started.
Total System Global Area 431038464 bytes
Fixed Size 1337016 bytes
Variable Size 146803016 bytes
Database Buffers 276824064 bytes
Redo Buffers 6074368 bytes
Database mounted.
Database opened.
SYS@orcl2> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/spfileorcl2.ora
SYS@orcl2> select name from v$controlfile;
NAME
-----------------------------------------------
/u01/app/oracle/orcl2/control01.ctl
SYS@orcl2> select name, status from v$datafile;
NAME STATUS
----------------------------------- -------
/u01/app/oracle/orcl2/system01.dbf SYSTEM
/u01/app/oracle/orcl2/sysaux01.dbf ONLINE
/u01/app/oracle/orcl2/undotbs01.dbf ONLINE
/u01/app/oracle/orcl2/users01.dbf ONLINE
/u01/app/oracle/orcl2/example01.dbf ONLINE
SYS@orcl2> @logfile
GROUP# SEQUENCE# MEMBER MB ARC STATUS
---------- ---------- ----------------------------------- ---------- --- ----------------
1 4 /u01/app/oracle/orcl2/redo01.log 50 YES INACTIVE
2 5 /u01/app/oracle/orcl2/redo02.log 50 YES INACTIVE
3 6 /u01/app/oracle/orcl2/redo03.log 50 NO CURRENT
SYS@orcl2> select count(*) from hr.emp_new;
select count(*) from hr.emp_new
*
ERROR at line 1:
ORA-00942: table or view does not exist
SYS@orcl2> !
[orcl2:~]$ imp hr/hr tables=emp_new file=emp_new.dmp
Import: Release 11.2.0.1.0 - Production on Wed Apr 17 14:30:20 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export file created by EXPORT:V11.02.00 via conventional path
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses AL32UTF8 character set (possible charset conversion)
. importing HR's objects into HR
. importing HR's objects into HR
. . importing table "EMP_NEW" 107 rows imported
Import terminated successfully without warnings.
[orcl2:~]$ exit
exit
SYS@orcl2> select count(*) from hr.emp_new;
COUNT(*)
----------
107
=========================================================================
다음을 반드시 수행 : 전체 DB cold backup 수행
ARCHIVE LOG : 전체 DB 백업
SYS@orcl2> @db_list
SYS@orcl2> shutdown immediate
[orcl2:~]$ chmod 755 orcl2_backup.sh
[orcl2:~]$ . orcl2_backup.sh -- 전체 DB 백업
[orcl2:~]$ rm /home/oracle/arch1/* /home/oracle/arch2/* -- 불필요한 archive log 삭제
SYS@orcl2> startup
=========================================================================
'DATABASE(oracleDB 11g) > DBA' 카테고리의 다른 글
[Oracle DBA]ArchiveMode 에서의 Backup & Recovery-RMAN01 (0) | 2019.04.22 |
---|---|
[Oracle DBA]ArchiveMode 에서의 Backup & Recovery-control file (0) | 2019.04.22 |
[Oracle DBA]ArchiveMode 에서의 Backup & Recovery-redo log (0) | 2019.04.22 |
[Oracle DBA]ArchiveMode 에서의 Backup & Recovery-archive_log (0) | 2019.04.22 |
[Oracle DBA]ArchiveMode 에서의 Backup & Recovery-기초 (0) | 2019.04.22 |