메뉴 건너뛰기

Korea Oracle User Group

Backup & Recovery

DB 컨트롤 파일 추가하기

명품관 2023.03.27 17:31 조회 수 : 472

DB 컨트롤 파일 추가하기

 

2가지 방식이 있다.

첫째, 트레이스 파일을 생성해 create controlfile 명령어로 생성하는 방식

둘째, 기존 컨트롤 파일을 복사하는 방식

 

위 두가지 방식으로 진행할 때 피할 수 없는 부분이 디비를 한번 내렸다 올려야 하는 것이다.

 

1. 트레이스 파일을 생성하는 방식

현재 컨트롤 파일에서 트레이스 파일 생성

 

 

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
29
30
31
kwan21c.localdomain@oracle:orcl:/home/oracle> sqlplus as sysdba
 
SQL*Plus: Release 21.0.0.0.0 - Production on 목 3월 9 16:51:19 2023
Version 21.3.0.0.0
 
Copyright (c) 19822021, Oracle.  All rights reserved.
 
 
다음에 접속됨:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
 
SQL> set linesize 200
SQL> show parameter control
 
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
control_file_record_keep_time        integer                           7
control_files                        string                            /u01/app/oracle/oradata/ORCL/c
                                                                       ontrol01.ctl, /u01/app/oracle/
                                                                       fast_recovery_area/ORCL/contro
                                                                       l02.ctl
control_management_pack_access       string                            DIAGNOSTIC+TUNING
diagnostics_control                  string                            IGNORE
SQL> alter database backup controlfile to '/home/oracle/backup_controlfile.trc';
 
데이타베이스가 변경되었습니다.
 
SQL> alter database backup controlfile to trace as '/home/oracle/backup_controlfile.trc';
 
데이타베이스가 변경되었습니다.

 

파라미터를 변경하고 트레이스 파일의 create controlfile 명령어에

3번 컨트롤 파일 문구를 추가해 컨트롤 파일을 생성한다.(데이터베이스 restart가 포함된다.)

 

 

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
SQL> show parameter spfile
 
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
spfile                               string                            /u01/app/oracle/dbs/spfileorcl
                                                                       .ora
SQL> alter system set control_files='/u01/app/oracle/oradata/ORCL/control01.ctl','/u01/app/oracle/oradata/ORCL/control02.ctl','/u01/app/oracle/oradata/ORCL/control03.ctl' scope=spfile;
 
시스템이 변경되었습니다.
 
컨트롤 파일 생성 수행
SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> startup nomount
ORACLE 인스턴스가 시작되었습니다.
 
Total System Global Area 4294963456 bytes
Fixed Size                  9695488 bytes
Variable Size            1811939328 bytes
Database Buffers         2466250752 bytes
Redo Buffers                7077888 bytes
SQL> @/home/oracle/create_controlfile.sql
17:12:35 SQL> 
17:12:35 SQL> spool create_controlfile.log
17:12:35 SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG
17:12:35   2      MAXLOGFILES 16
17:12:35   3      MAXLOGMEMBERS 3
17:12:35   4      MAXDATAFILES 1024
17:12:35   5      MAXINSTANCES 8
17:12:35   6      MAXLOGHISTORY 292
17:12:35   7  LOGFILE
17:12:35   8    GROUP 1 '/u01/app/oracle/oradata/ORCL/redo01.log'  SIZE 200M BLOCKSIZE 512,
17:12:35   9    GROUP 2 '/u01/app/oracle/oradata/ORCL/redo02.log'  SIZE 200M BLOCKSIZE 512,
17:12:35  10    GROUP 3 '/u01/app/oracle/oradata/ORCL/redo03.log'  SIZE 200M BLOCKSIZE 512
17:12:35  11  DATAFILE
17:12:35  12    '/u01/app/oracle/oradata/ORCL/system01.dbf',
17:12:35  13    '/u01/app/oracle/oradata/ORCL/sysaux01.dbf',
17:12:35  14    '/u01/app/oracle/oradata/ORCL/undotbs01.dbf',
17:12:35  15    '/u01/app/oracle/oradata/ORCL/pdbseed/system01.dbf',
17:12:35  16    '/u01/app/oracle/oradata/ORCL/pdbseed/sysaux01.dbf',
17:12:35  17    '/u01/app/oracle/oradata/ORCL/users01.dbf',
17:12:35  18    '/u01/app/oracle/oradata/ORCL/pdbseed/undotbs01.dbf',
17:12:35  19    '/u01/app/oracle/oradata/ORCL/mpkwan/system01.dbf',
17:12:35  20    '/u01/app/oracle/oradata/ORCL/mpkwan/sysaux01.dbf',
17:12:35  21    '/u01/app/oracle/oradata/ORCL/mpkwan/undotbs01.dbf',
17:12:35  22    '/u01/app/oracle/oradata/ORCL/mpkwan/users01.dbf'
17:12:35  23  CHARACTER SET AL32UTF8
17:12:35  24  ;
 
제어 파일이 생성되었습니다.
 
경   과: 00:00:02.80
17:12:37 SQL> spool off

 

 

데이터베이스를 오픈하고 cdb 템프 파일을 추가하고

플러그블 데이터베이스도 오픈하고 템프 파일을 추가한다.

그리고 추가된 컨트롤 파일을 확인한다.

 

 

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
17:13:34 SQL> select status from v$instance;
 
STATUS
------------------------------------
MOUNTED
 
경   과: 00:00:00.01
17:14:32 SQL> ALTER DATABASE OPEN;
 
데이타베이스가 변경되었습니다.
 
경   과: 00:01:55.12
17:17:23 SQL> ALTER PLUGGABLE DATABASE ALL OPEN;
 
플러그인할 수 있는 데이터베이스가 변경되었습니다.
 
경   과: 00:00:54.26
17:18:25 SQL> select * from dba_temp_files;
 
선택된 레코드가 없습니다.
 
경   과: 00:00:00.07
17:18:36 SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/ORCL/temp01.dbf'
17:18:51   2       SIZE 248512512  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
 
테이블스페이스가 변경되었습니다.
 
경   과: 00:00:00.88
17:18:53 SQL> ALTER SESSION SET CONTAINER = "PDB$SEED";
 
세션이 변경되었습니다.
 
경   과: 00:00:01.55
17:19:06 SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/ORCL/pdbseed/temp012023-02-24_17-17-24-282-PM.dbf'
17:19:12   2       SIZE 36700160  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
 
테이블스페이스가 변경되었습니다.
 
경   과: 00:00:07.30
17:19:21 SQL> ALTER SESSION SET CONTAINER = "MPKWAN";
 
세션이 변경되었습니다.
 
경   과: 00:00:00.06
17:19:26 SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/ORCL/mpkwan/temp01.dbf'
17:19:33   2       SIZE 222298112  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
 
테이블스페이스가 변경되었습니다.
 
경   과: 00:00:00.94
17:19:36 SQL> ALTER SESSION SET CONTAINER = "CDB$ROOT";
 
세션이 변경되었습니다.
 
경   과: 00:00:00.00
17:19:44 SQL> show parameter control_files
 
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
control_files                        string                            /u01/app/oracle/oradata/ORCL/c
                                                                       ontrol01.ctl, /u01/app/oracle/
                                                                       oradata/ORCL/control02.ctl, /u
                                                                       01/app/oracle/oradata/ORCL/con
                                                                       trol03.ctl

 

 

2. 컨트롤 파일을 복사해서 추가하기

파라미터 파일에 4번 컨트롤 파일을 추가한다

 

 

1
2
3
4
SQL> alter system set control_files='/u01/app/oracle/oradata/ORCL/control01.ctl','/u01/app/oracle/oradata/ORCL/control02.ctl'
,'/u01/app/oracle/oradata/ORCL/control03.ctl','/u01/app/oracle/oradata/ORCL/control04.ctl' scope=spfile;
 
시스템이 변경되었습니다.

 

컨트롤 파일 복사를 수행하고 나머지 작업을 수행한다.

 

 

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> exit
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0에서 분리되었습니다.
 
kwan21c.localdomain@oracle:orcl:/u01/app/oracle/oradata/ORCL> cp control03.ctl control04.ctl
kwan21c.localdomain@oracle:orcl:/u01/app/oracle/oradata/ORCL> sqlplus / as sysdba
 
SQL*Plus: Release 21.0.0.0.0 - Production on 월 3월 27 16:40:48 2023
Version 21.3.0.0.0
 
Copyright (c) 19822021, Oracle.  All rights reserved.
 
휴지 인스턴스에 접속되었습니다.
 
SQL> startup
ORACLE 인스턴스가 시작되었습니다.
 
Total System Global Area 4294963456 bytes
Fixed Size                  9695488 bytes
Variable Size            2399141888 bytes
Database Buffers         1879048192 bytes
Redo Buffers                7077888 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL> set linesize 120 
SQL> show parameter control_file
 
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
control_file_record_keep_time        integer                           7
control_files                        string                            /u01/app/oracle/oradata/ORCL/c
                                                                       ontrol01.ctl, /u01/app/oracle/
                                                                       oradata/ORCL/control02.ctl, /u
                                                                       01/app/oracle/oradata/ORCL/con
                                                                       trol03.ctl, /u01/app/oracle/or
                                                                       adata/ORCL/control04.ctl
SQL> desc v$controlfile
 이름                                                            널?     유형
 ----------------------------------------------------------------- -------- --------------------------------------------
 STATUS                                                                     VARCHAR2(7)
 NAME                                                                       VARCHAR2(513)
 IS_RECOVERY_DEST_FILE                                                      VARCHAR2(3)
 BLOCK_SIZE                                                                 NUMBER
 FILE_SIZE_BLKS                                                             NUMBER
 CON_ID                                                                     NUMBER
 
SQL> col name for a50
SQL> select status, name, con_id from v$controlfile;
 
STATUS                NAME                                                   CON_ID
--------------------- -------------------------------------------------- ----------
                      /u01/app/oracle/oradata/ORCL/control01.ctl                  0
                      /u01/app/oracle/oradata/ORCL/control02.ctl                  0
                      /u01/app/oracle/oradata/ORCL/control03.ctl                  0
                      /u01/app/oracle/oradata/ORCL/control04.ctl                  0
 
SQL> ALTER PLUGGABLE DATABASE ALL OPEN;
 
플러그인할 수 있는 데이터베이스가 변경되었습니다.
 
SQL> select file_name, tablespace_name, status, bytes, con_id from cdb_temp_files;
 
FILE_NAME                                          TABLESPACE_NAME STATUS                     BYTES     CON_ID
-------------------------------------------------- --------------- --------------------- ---------- ----------
/u01/app/oracle/oradata/ORCL/mpkwan/temp01.dbf     TEMP            ONLINE                 223346688          3
/u01/app/oracle/oradata/ORCL/temp01.dbf            TEMP            ONLINE                 249561088          1

 

 

위로