프린트 하기

내맘대로긍정이 알려주는

Oracle 23ai 신기능
무료 세미나 발표자료

다운로드 trending_flat

OS환경 : Oracle Linux 8.1 (64bit)


DB 환경 : Oracle Database 19.9.0.0


방법 : 오라클 19c rman catalog 설명 및 catalog db 생성

catalog 설명 및 catalog db를 생성하는방법을 설명함



catalog(복구카탈로그, recovery catalog) 란?

복구 카탈로그는 하나 이상의 Oracle 데이터베이스에 대한 

메타 데이터를 저장하기 위해 RMAN에서 사용하는 데이터베이스 스키마임

일반적으로 카탈로그는 전용 데이터베이스에 저장함

카탈로그 db 사용시 백업에 관련된 정보가 카탈로그 db에 저장됨

카탈로그 db 가 없다면, 기본적으로 Target Database(원본 db)의 control file에 기록됨



catalog 의 이점
- 복구 카탈로그는 각 대상 데이터베이스의 controlfile에 저장된 RMAN repository를 중복 보관(이중화)함
- 복구 카탈로그는 보조 메타 데이터 저장소 역할을 함 
- 원본db의 controlfile과 모든 백업이 손실 된 경우 RMAN 메타 데이터는 복구 카탈로그에 여전히 존재함
- 복구 카탈로그는 모든 대상 데이터베이스에 대한 메타 데이터를 중앙 집중화함
- 메타 데이터를 한 곳에 저장하면 report 및 관리 작업을 더 쉽게 수행 할 수 있음
- 복구 카탈로그는 controlfile보다 훨씬 더 긴 메타 데이터 기록을 저장할 수 있음 
이 기능은 제어 파일의 히스토리보다 시간을 더 거슬러 올라가는 복구를 수행해야하는 경우에 유용함
- 복구 카탈로그 데이터베이스 관리의 추가 복잡성은 확장 된 백업 기록을 사용할 수있는 편리함으로 상쇄 될 수 있음


일부 RMAN 기능은 복구 카탈로그를 사용할 때만 작동함
- 예를 들어 복구 카탈로그에 RMAN 스크립트를 저장할 수 있음
- 저장된 스크립트 의 가장 큰 장점은 대상 데이터베이스 및 복구 카탈로그에 연결할 수있는 모든 RMAN 클라이언트에서 사용할 수 있는 것
- command 파일은 RMAN 클라이언트가 파일이 저장된 파일 시스템에 액세스 할 수있는 경우에만 사용할 수 있음


catalog db 생성

rman catalog db를 만드는 방법을 설명함

원본 db = instance_name : oracle19, IP : 192.168.137.50, hostname : oel8

카탈로그 db = instance_name : catdb, IP : 192.168.137.51, hostname : oel8catalog



각 서버의 /etc/hosts 파일 확인(원본 db, 카탈로그 db)

1
2
3
4
5
6
7
8
9
10
11
12
13
원본 db
$ cat /etc/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.50 oel8
192.168.137.51 oel8catalog
 
카탈로그 db
$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.51 oel8catalog
192.168.137.50 oel8



복구 카탈로그를 저장할 테이블 스페이스 및 카탈로그 관리유저 생성 (카탈로그 db)

1
2
3
4
5
6
7
8
9
10
11
SQL> create tablespace cattbs datafile '/ORA19/app/oracle/oradata/CATDB/cattbs01.dbf' size 100m;
 
Tablespace created.
 
SQL> create user catuser identified by catuser default tablespace cattbs quota unlimited on cattbs;
 
User created.
 
SQL> grant connect, resource, recovery_catalog_owner to catuser;
 
Grant succeeded.



tnsnames.ora 에 접속 정보 등록(원본 db, 카탈로그 db)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ vi $ORACLE_HOME/network/admin/tnsnames.ora
 
ORACLE19 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oel8)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oracle19)
    )
  )
 
CATDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oel8catalog)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = catdb)
    )
  )

12~19번 째 줄 catdb 접속정보 등록



리스너 기동(원본 db, 카탈로그 db)

1
2
3
4
5
원본 db
$ lsnrctl start
 
카탈로그 db
$ lsnrctl start



접속 테스트(원본 db, 카탈로그 db)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
원본 db -> 카탈로그 db로 접속시도
$ tnsping catdb
 
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 20-JAN-2021 17:17:43
 
Copyright (c) 19972020, Oracle.  All rights reserved.
 
Used parameter files:
 
 
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oel8catalog)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = catdb)))
OK (0 msec)
 
카탈로그 db -> 원본 db로 접속시도
$ tnsping oracle19
 
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 20-JAN-2021 17:17:51
 
Copyright (c) 19972020, Oracle.  All rights reserved.
 
Used parameter files:
 
 
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oel8)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle19)))
OK (0 msec)

모두 정상적으로 접속됨



원본 db에서 카탈로그 db로 rman 접속(원본 db)

1
2
3
4
5
6
7
8
9
10
11
12
13
$ rman target / catalog catuser/catuser@catdb
 
Recovery Manager: Release 19.0.0.0.0 - Production on Wed Jan 20 17:19:14 2021
Version 19.9.0.0.0
 
Copyright (c) 19822019, Oracle and/or its affiliates.  All rights reserved.
 
PL/SQL package SYS.DBMS_BACKUP_RESTORE version 19.03.00.00 in TARGET database is not current
PL/SQL package SYS.DBMS_RCVMAN version 19.03.00.00 in TARGET database is not current
connected to target database: ORACLE19 (DBID=3209222764)
connected to recovery catalog database
 
RMAN> 

정상 접속됨



복구 카탈로그 생성(원본 db)

1
2
3
RMAN> create catalog tablespace cattbs;
 
recovery catalog created




카탈로그 관리유저로 접속후 테이블 확인(카탈로그 db)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ sqlplus catuser/catuser
SQL> select * from tab;
 
TNAME                                                                 TABTYPE    CLUSTERID
-------------------------------------------------------------------------------------------------------------------------------- ------------- ----------
RCVER                                                                 TABLE
DB                                                                 TABLE
NODE                                                                 TABLE
CONF
.
.
 
SQL> select count(*from tab;
 
  COUNT(*)
----------
       159

create catalog 명령 이후 catuser에 여러가지 테이블이 생성됨



rc_database 테이블 확인(카탈로그 db)

1
2
3
4
$ sqlplus catuser/catuser
SQL> select * from rc_database;
 
no rows selected

아직 원본db가 등록되지 않음



카탈로그 db를 등록(원본 db)

1
2
3
4
5
6
$ rman target / catalog catuser/catuser@catdb
RMAN> register database;
 
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete



rc_database 테이블 재확인(카탈로그 db)

1
2
3
4
5
6
$ sqlplus catuser/catuser
SQL> select * from rc_database;
 
    DB_KEY  DBINC_KEY        DBID NAME      RESETLOGS_CHANGE# RESETLOGS FINAL_CHANGE#
---------- ---------- ---------- -------- ----------------- --------- -------------
     1        2 3209222764 ORACLE19          1 07-JAN-20

정상적으로 등록됨



또는 rman incarnation 확인

1
2
3
4
5
6
7
8
$ rman target / catalog catuser/catuser@catdb
RMAN> list incarnation;
 
 
List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       2       ORACLE19 3209222764       CURRENT 1          07-JAN-20



데이터파일 조회(원본 db, 카탈로그 db)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
원본 db
SQL> 
set lines 200 pages 1000
col tablespace_name for a10
col file_name for a50
select tablespace_name, file_id, file_name, bytes/1024/1024 mb from dba_data_files;
 
TABLESPACE    FILE_ID FILE_NAME                          MB
---------- ---------- -------------------------------------------------- ----------
SYSTEM            1 /ORA19/app/oracle/oradata/ORACLE19/system01.dbf        700
SYSAUX            2 /ORA19/app/oracle/oradata/ORACLE19/sysaux01.dbf        550
UNDOTBS1        3 /ORA19/app/oracle/oradata/ORACLE19/undotbs01.dbf        215
USERS            4 /ORA19/app/oracle/oradata/ORACLE19/users01.dbf          5
 
카탈로그 db
SQL> 
set lines 200 pages 1000
col tablespace_name for a10
col file_name for a50
col db_name for a10
select db_name, tablespace_name, file# file_id, name file_name, bytes/1024/1024 mb from rc_datafile;
 
DB_NAME    TABLESPACE     FILE_ID FILE_NAME                            MB
---------- ---------- ---------- -------------------------------------------------- ----------
ORACLE19   SYSTEM           1 /ORA19/app/oracle/oradata/ORACLE19/system01.dbf       700
ORACLE19   SYSAUX           2 /ORA19/app/oracle/oradata/ORACLE19/sysaux01.dbf       550
ORACLE19   UNDOTBS1           3 /ORA19/app/oracle/oradata/ORACLE19/undotbs01.dbf       215
ORACLE19   USERS           4 /ORA19/app/oracle/oradata/ORACLE19/users01.dbf          5

동일하게 확인됨

정상적으로 카탈로그 db 가 구성됨



카탈로그db 삭제(연결해제)(원본 db)

1
2
3
4
5
6
7
8
9
$ rman target / catalog catuser/catuser@catdb
RMAN> drop catalog;  <-- [drop catalog 입력]
 
recovery catalog owner is CATUSER
enter DROP CATALOG command again to confirm catalog removal
 
RMAN> drop catalog;  <-- [drop catalog 재입력]
 
recovery catalog dropped

처음 1번 입력 후 한번더 입력해야 정상적으로 drop 됨



catuser 테이블 확인 및 recyclebin 삭제(카탈로그 db)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SQL> conn catuser/catuser
Connected.
SQL> select * from tab;
 
TNAME                                                                 TABTYPE    CLUSTERID
------------------------------------------------------------------------------------------
BIN$uchSWhvUChDgUzOJqMAjBw==$0                                                     TABLE
BIN$uchmORDrCj7gUzOJqMBLsw==$0                                                     TABLE
 
SQL> purge recyclebin;
 
Recyclebin purged.
 
SQL> select * from tab;
 
no rows selected

recyclebin의 테이블까지 정상적으로 모두 삭제됨



rman 접속 후 확인(원본 db)

1
2
3
4
5
6
7
8
$ rman target / catalog catuser/catuser@catdb
RMAN> list backup;
 
RMAN-00571===========================================================
RMAN-00569=============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571===========================================================
RMAN-03002: failure of list command at 01/29/2021 13:07:43
RMAN-06428: recovery catalog is not installed

catalog 가 설치되어 있지 않다고 나옴



참조 : 

https://jeeomlove.tistory.com/110

https://otsteam.tistory.com/112

https://goodusdata.tistory.com/84

https://docs.oracle.com/en/database/oracle/oracle-database/19/rcmrf/IMPORT-CATALOG.html#GUID-70D3A403-822A-40E7-B1BC-C7649F441058

https://docs.oracle.com/en/database/oracle/oracle-database/19/rcmrf/CATALOG.html#GUID-6E337759-9860-463A-BF7C-8512B272B8E1

https://cafe.naver.com/prodba/49570

http://egloos.zum.com/ietranger/v/3301271

https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/managing-recovery-catalog.html#GUID-2491887B-D9AC-48BE-914D-CB0341A77057