프린트 하기

내맘대로긍정이 알려주는

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

다운로드 trending_flat

OS환경 : Oracle Linux 7.6 (64bit)


DB 환경 : Oracle Database 18.3.0.0, 19.3.0.0


방법 : Oracle Linux 7.6에 Oracle 18c 에서 Oracle 19c로 AutoUpgrade

AutoUpgrade 란?

Oracle Database AutoUpgrade 유틸리티는 데이터베이스를 자동으로 업그레이드 할 수있는 새로운 도구임

업그레이드 시작 전, 업그레이드 배포 중 및 업그레이드 후 확인 및 구성 마이그레이션 중에 업그레이드 프로세스를 자동화하도록 설계되었음

자동 업그레이드를 사용하는 경우 단일 데이터베이스 파일(config.txt 등)을 사용하여 각 데이터베이스 배포에 필요한대로 사용자 지정하여 여러 Oracle Database 배포를 동시에 업그레이드 할 수 있음

여기에는 자동 재시도 및 fallback, 향후 특정 시점에 대한 업그레이드 예약 기능 및 원하는대로 초기화 매개 변수를 설정, 변경 또는 제거하는 기능이 포함됨
하나의 명령으로 수백 개의 데이터베이스를 업그레이드하고 맞춤형 높은 유지 보수 업그레이드 솔루션을 대체하여 시간과 비용을 절약함



AutoUpgrade Tool은 지원 버전(mos 2485457.1)

1
2
3
Oracle Database 19c (19.3 이상)
Oracle Database 18c (18.5 이상)
Oracle Database 12c Release 2 (12.2 + DBJAN2019RU 이상)



자동 업그레이드 처리 모드 워크 플로우 처리

자동 업그레이드가 워크 플로 모드를 처리하는 방법을 이해하려면 배포 처리 모드가 처리되는 방법을 보여주는 다음 그림을 검토해야함

1. DBA는 config.txt 파일에 dbname과 oracle sid, start time(업그레이드 시작시간), source home(기존 db버전), target home(업그레이드 db버전), log directory(업그레이드 로그파일위치) 등을 설정해주여야함

이 파일 정보가 부트 스트랩 관리자로 전달됨


2. 업그레이드 부트 스트랩 관리자가 config.txt 파일을 처리하고 필수 구성 요소를 시작함


3. 업그레이드 작업 관리자는 각 job을 준비하고 제출함


4. 각 job은 자체 스레드에서 실행되며 나머지 작업과 별개로 실행되므로 별도의 업그레이드 작업을 실행하여 성능을 최대화하고 위험을 줄 일수 있음



자동 업그레이드 처리 모드 단계

업그레이드 작업을 위해 자동 업그레이드가 실행되는 단계는 선택한 처리 모드에 따라 다름

네 가지 자동 업그레이드 모드가 있음

각 모드에 대해 자동 업그레이드 단계가 순서대로 수행됨

각 모드마다 단계의 차이점에 유의해야함

Analyze 모드 : 설정, 사전 확인

Fixups 모드 : 설정, 사전 검사 및 사전 수정

Deploy 모드 : 설정, 사전 업그레이드, 사전 확인, 보장 된 복구 지점 (GRP), 사전 수정, 드레인, DB (데이터베이스) 업그레이드, 사후 확인 및 사후 업그레이드

업그레이드 전 (업그레이드 단계) 또는 업그레이드 후 (업그레이드 후 단계) 또는 업그레이드 전후에 고유 한 스크립트를 실행할 수 있음

Upgrade 모드 : 설정, DB (데이터베이스) 업그레이드, 사후 점검 및 사후 수정



Oracle 18c 에서 Oracle 19c로 AutoUpgrade 시나리오

기본 정보

서버(node) 이름 : ORACLESV

dbname, sid : orcl

db 버전 : 18.3.0.0



기존 db 버전 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SQL> select instance_name, version, status from v$instance;
 
INSTANCE_NAME     VERSION       STATUS
---------------- ----------------- ------------
orcl         18.0.0.0.0       OPEN
 
SQL> select * from v$version;
 
BANNER
--------------------------------------------------------------------------------
BANNER_FULL
----------------------------------------------------------------------------------------------------------------------------------------------------------------
BANNER_LEGACY                                         CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production              0

18.3 버전임



샘플 데이터 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SQL> create user imsi identified by imsi account unlock quota unlimited on users;
SQL> grant resource, connect to imsi;
SQL> conn imsi/imsi
SQL> create table imsi_tab (col number);
SQL> 
declare
type tbl_ins is table of imsi_tab%rowtype index by binary_integer;
w_ins tbl_ins;
begin
for i in 1..10000 loop 
   w_ins(i).col :=i;
end loop;
   forall i in 1..10000 insert into imsi_tab values w_ins(i);
   commit;
end;
/
SQL> select count (*from imsi_tab;
 
  COUNT(*)
----------
     10000



오라클 19c 파일 업로드, 압축해제 및 엔진 설치

1
2
3
4
5
6
7
8
# mkdir -/app/oracle/product/19.0.0/db_1
# cp /app/media/LINUX.X64_193000_db_home.zip /app/oracle/product/19.0.0/db_1/
# chown -R oracle:dba /app/oracle/product/19.0.0/db_1
# chown oracle:dba /app/oracle/product/19.0.0/db_1/LINUX.X64_193000_db_home.zip
# su - oracle
$ cd /app/oracle/product/19.0.0/db_1/
$ unzip LINUX.X64_193000_db_home.zip
$ ./runInstaller



Set Up Software Only 선택



Single instance database installation 선택



Enterprise Edition 선택



Oracle base 경로 설정(경로 본인설치 경로에 맞게 설치)



oraInventory 경로 선택(경로 본인설치 경로에 맞게 설치)



그룹 권한 선택



./runinstaller 실행후 자동으로 root 스크립트 실행을 위한 root 패스워드 입력(root.sh 등)



사전 요구사항 체크중



Install 선택



설치 중



root 스크립트를 돌리기 전 확인차 물어보는 메세지 Yes 선택



db 소프트웨어(엔진) 설치 완료 Close 선택

19c 엔진 설치 완료



최신버전의 autoupgrade.jar 파일 가져오기 - 자동 업그레이드 도구 (문서 ID 2485457.1)

Oracle Database 18c (18.3) 이상 Oracle 홈에는 autoupgrade.jar 파일이 기본적으로 존재함

그러나 AutoUpgrade를 사용하기 전에 MOS에서 최신 버전을 다운로드하고 

$ORACLE_HOME/rdbms/admin에 이미 존재하는 기존파일을 최신 파일로 교체 할 것을 권장함

(OPatch 적용 전 최신 OPatch 파일p6880880 을 가지고 와서 적용하는것처럼)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
파일 업로드 
/app/media/autoupgrade.jar 
 
권한부여
# chown oracle:dba autoupgrade.jar 
 
기존 autoupgrade.jar 파일 백업
$ mv $ORACLE_HOME/rdbms/admin/autoupgrade.jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar_old
 
최신 autoupgrade.jar 파일 복사
$ cp /app/media/autoupgrade.jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar
 
확인
$ ls -al /home/oracle/
total 3.3M
-rw-r--r--. 1 oracle dba  117 Nov 23 11:04 afiedt.buf
-rw-r--r--. 1 oracle dba 3.3M Mar 22 00:13 autoupgrade.jar



autoupgrade.jar 명령의 mode 인수

analyze: 데이터베이스를 분석함

fixups: 소스 데이터베이스의 오류 수정함

deploy: 분석에서 사후 업그레이드까지 데이터베이스에 대한 모든 작업을 수행함

upgrade: 대상 Oracle 홈에서 업그레이드를 수행함



config파일 생성 

1
2
3
4
$ cd ~
$ $ORACLE_HOME/jdk/bin/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -create_sample_file config
Created sample configuration file /home/oracle/sample_config.cfg
$ cp sample_config.cfg config.txt



config 파일 수정

원본

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
$ cat config.txt 
#
# sample config file
#
# build version 19.7.5
# build date    2020/02/11 15:28:49
#
#
# Global configurations
#
# This directory will include the following
#   (1) AutoUpgrade's global directory
#   (2) Any logs, not directly tied to a job
#   (3) Config files
#   (4) progress.json and status.json
global.autoupg_log_dir=/home/oracle/upg_logs
 
 
#
# Database number 1
#
upg1.dbname=employee
upg1.start_time=NOW
upg1.source_home=/u01/app/oracle/product/11.2.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/19.1.0/dbhome_1
upg1.sid=emp
upg1.log_dir=/home/oracle/upg_logs/employee
upg1.upgrade_node=oel7
upg1.target_version=19
#upg1.run_utlrp=yes
#upg1.timezone_upg=yes
 
#
# Database number 2
#
#upg2.dbname=database name
#upg2.start_time=23/03/2020 17:21:11
#upg2.source_home=Path to source version of Oracle database
#upg2.target_home=Path to target version of Oracle database
#upg2.sid=Value of Oracle SID
#upg2.log_dir=Path to log dir
#upg2.upgrade_node=oel7 # To find out your node name run the hostname utility
#upg2.target_version=12.2
#upg2.run_utlrp=[yes|no]
#upg2.timezone_upg=[yes|no]
 
#
# You can have as many databases as desired
#
#upgN.dbname=database name
#upgN.start_time=dd/mm/yyyy hh:mm:ss | now
#upgN.source_home=Path to source version of Oracle database
#upgN.target_home=Path to target version of Oracle database
#upgN.sid=Value of Oracle SID
#upgN.log_dir=Path to log dir
#upgN.upgrade_node=upgrade_node # To find out your node name run the hostname utility
#upgN.target_version= 18
#upgN.run_utlrp=[yes|no]
#upgN.timezone_upg=[yes|no]



config.txt 파일 수정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ cat config.txt
global.autoupg_log_dir=/home/oracle/upg_logs
#
# Database number 1
#
upg1.dbname=orcl
upg1.start_time=NOW
upg1.source_home=/app/oracle/product/18.1.0/db_1
upg1.target_home=/app/oracle/product/19.0.0/db_1
upg1.sid=orcl
upg1.log_dir=/home/oracle/upg_logs/orcl
upg1.upgrade_node=ORACLESV
upg1.target_version=19
#upg1.run_utlrp=yes
#upg1.timezone_upg=yes

global.autoupg_log_dir, Database number 1의 일부 내용만 수정함

대상 db가 여러개라면 Database number 2, 3 등도 수정하면됨



자동 업그레이드 전 분석

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
$ $ORACLE_HOME/jdk/bin/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.txt -mode analyze
Autoupgrade tool launched with default options
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 databases will be analyzed
Enter some command, type 'help' or 'exit' to quit
upg> status
---------------- Config -------------------
User configuration file    [/home/oracle/config.txt]
General logs location      [/home/oracle/upg_logs/cfgtoollogs/upgrade/auto]
Mode                       [ANALYZE]
DB upg fatal errors        ORA-00600,ORA-07445
DB Post upgrade abort time [60] minutes
DB upg abort time          [1440] minutes
DB restore abort time      [120] minutes
DB GRP abort time          [3] minutes
------------------------ Jobs ------------------------
Total databases in configuration file [1]
Total Non-CDB being processed         [1]
Total CDB being processed             [0]
Jobs finished successfully            [0]
Jobs finished/aborted                 [0]
Jobs in progress                      [1]
Jobs stage summary
    Job ID: 100
    DB name: orcl
        SETUP             <1 min 
        PRECHECKS         <1 min (IN PROGRESS)
------------ Resources ----------------
Threads in use                        [20]
JVM used memory                       [27] MB
CPU in use                            [13%]
Processes in use                      [14]



실행중인 job 확인(analyze 작업)

Loading DB info -> Remaining 에서 숫자가 점점 작아짐 0이되면 완료됨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
upg> lsj -p
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|        MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
| 100|   orcl|PRECHECKS|PREPARING|RUNNING|20/03/23 16:24|     N/A|16:24:43|Loading DB info|
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
Total jobs 1
upg> lsj -p
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|        MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
| 101|   orcl|PRECHECKS|PREPARING|RUNNING|20/03/23 18:06|     N/A|18:07:00|Remaining 72/72|
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
.
.
upg> lsj -p
+----+-------+---------+---------+-------+--------------+--------+--------+--------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|       MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+--------------+
| 101|   orcl|PRECHECKS|PREPARING|RUNNING|20/03/23 18:06|     N/A|18:07:06|Remaining 1/72|
+----+-------+---------+---------+-------+--------------+--------+--------+--------------+



조금 기다리면 완료됨

1
2
3
4
5
6
7
8
9
Job 100 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]
 
Jobs finished successfully     [1]
Jobs failed                    [0]
Jobs pending                   [0]
------------- JOBS FINISHED SUCCESSFULLY -------------
Job 100 for orcl



help로 다른 명령 확인 가능

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
upg> help
exit                         // To close and exit
help                         // Display help
lsj [(-r|-f|-p|-e) | -<number>]  // list jobs by status up to n elements.
    -f Filter by finished jobs.
    -r Filter by running jobs.
    -e Filter by jobs with errors.
    -p Filter by jobs being prepared.
    -<number> Display up to n jobs.
lsr                           // Displays the restoration queue
lsa                           // Display the abort queue
tasks                         // Displays tasks running
clear                         // Clean terminal
resume -job <number>          // Restarts a previous job that was running.
status [-job <number> [-long]]// List all the jobs or a specific job
restore -job <number> [force] // Restores database to its state prior upgrade
.                             // force will do it even if the job is not in abort or error state
restore all_failed            // Restores all failed jobs to its previous state prior the upgrade 
logs                          // Displays all the log locations
abort -job <number>           // Aborts the specified job
h[ist]                        // Display the command line history
/[<number>]                   // Executes the command specified from the history, the default is the last command



관련 로그 확인

1
2
3
4
5
6
$ ls -al /home/oracle/upg_logs/orcl/orcl
total 8
drwx------. 4 oracle dba   29 Mar 23 16:24 .
drwx------. 3 oracle dba   18 Mar 23 16:24 ..
drwx------. 3 oracle dba 4096 Mar 23 16:25 100
drwx------. 2 oracle dba 4096 Mar 23 16:24 temp



analyze 작업의 job number 100 디렉토리로 이동

1
2
3
4
5
6
7
8
9
$ cd /home/oracle/upg_logs/orcl/orcl/100
$ ls -al
total 84
drwx------. 3 oracle dba  4096 Mar 23 16:25 .
drwx------. 4 oracle dba    29 Mar 23 16:24 ..
-rwx------. 1 oracle dba 68963 Mar 23 16:25 autoupgrade_20200323.log
-rwx------. 1 oracle dba   489 Mar 23 16:25 autoupgrade_20200323_user.log
-rwx------. 1 oracle dba   264 Mar 23 16:25 autoupgrade_err.log
drwx------. 2 oracle dba  4096 Mar 23 16:25 prechecks



로그 파일 확인

autoupgrade_20200323.log : db 업그레이드에 관련되서 db_platform이 맞는지 등을 모두 검사함(길어서 다보기힘듦)

autoupgrade_20200323_user.log : 경고 메세지가 기록됨

1
2
3
4
5
6
7
8
9
10
11
12
13
2020-03-23 16:24:41.780 INFO 
build.hash:04dd9f2
build.version:19.7.5
build.date:2020/02/11 15:28:49
build.max_target_version:19
build.type:production
build.label:HEAD
 
2020-03-23 16:25:07.289 INFO Analyzing orcl, 72 checks will run using 2 threads 
2020-03-23 16:25:34.992 WARNING The following checks have ERROR severity and no fixup is available or
the fixup failed to resolve the issue. Please fix them manually before continuing:
orcl FLASH_RECOVERY_AREA_SETUP
orcl ARCHIVE_MODE_ON

=> 수동으로 FRA영역을 설정하고 아카이브모드로 전환해주라고 나옴

prechecks 폴더 : checklist와 로그들이 남아있음

1
2
3
4
5
6
7
8
9
10
11
$ cd prechecks/
$ ls -al
total 192
drwx------. 2 oracle dba   4096 Mar 23 16:25 .
drwx------. 3 oracle dba   4096 Mar 23 16:29 ..
-rwx------. 1 oracle dba   2380 Mar 23 16:25 orcl_checklist.cfg
-rwx------. 1 oracle dba   8505 Mar 23 16:25 orcl_checklist.json
-rwx------. 1 oracle dba   8048 Mar 23 16:25 orcl_checklist.xml
-rwx------. 1 oracle dba  23814 Mar 23 16:25 orcl_preupgrade.html
-rwx------. 1 oracle dba   8315 Mar 23 16:25 orcl_preupgrade.log
-rwx------. 1 oracle dba 126786 Mar 23 16:25 prechecks_orcl.log




로그에 나온 내용 조치

아카이브 로그모드로 변경

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
아카이브 경로 생성
$ mkdir -/home/oracle/arch
 
기존 아카이브 모드 확인
SQL> archive log list
Database log mode           No Archive Mode
Automatic archival           Disabled
Archive destination           /app/oracle/product/18.1.0/db_1/dbs/arch
Oldest online log sequence     2
Current log sequence           4
 
아카이브 포멧 변경
SQL> alter system set log_archive_format = '%t%s%r.arc' scope=spfile; 
 
System altered.
 
아카이브 사용안하는 경로 수정
SQL> alter system set log_archive_dest = '' scope = spfile; 
 
System altered.
 
아카이브 사용 경로 수정
SQL> alter system set log_archive_dest_1 = 'location=/home/oracle/arch' scope = spfile;
 
System altered.
 
db 종료
SQL> shutdown immediate; 
Database closed.
Database dismounted.
ORACLE instance shut down.
 
mount로 startup
SQL> startup mount; 
ORACLE instance started.
 
Total System Global Area 1660943808 bytes
Fixed Size            8658368 bytes
Variable Size         1056964608 bytes
Database Buffers      587202560 bytes
Redo Buffers            8118272 bytes
Database mounted.
 
아카이브 모드로 변경
SQL> alter database archivelog; 
 
Database altered.
 
db open
SQL> alter database open;
 
Database altered.
 
아카이브 모드 확인
SQL>  archive log list
Database log mode           Archive Mode
Automatic archival           Enabled
Archive destination           /home/oracle/arch
Oldest online log sequence     2
Next log sequence to archive   4
Current log sequence           4



FRA 영역 설정

1
2
3
4
5
6
7
8
9
10
11
12
fra 경로 생성
$ mkdir -/home/oracle/fra
 
fra 경로 사이즈 설정
SQL> alter system set db_recovery_file_dest_size = 10G;
 
System altered.
 
fra 경로 설정
SQL> alter system set db_recovery_file_dest = '/home/oracle/fra';
 
System altered.



자동 업그레이드 전 재분석

1
2
3
4
5
6
7
8
9
10
11
12
$ $ORACLE_HOME/jdk/bin/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.txt -mode analyze
.
.
Job 101 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]
 
Jobs finished successfully     [1]
Jobs failed                    [0]
Jobs pending                   [0]
------------- JOBS FINISHED SUCCESSFULLY -------------
Job 101 for orcl

분석완료



로그 확인

1
2
3
4
5
6
7
8
9
$ cd /home/oracle/upg_logs/orcl/orcl/101/
$ ls -al
total 92
drwx------. 3 oracle dba  4096 Mar 23 18:07 .
drwx------. 5 oracle dba    40 Mar 23 18:06 ..
-rwx------. 1 oracle dba 78863 Mar 23 18:07 autoupgrade_20200323.log
-rwx------. 1 oracle dba   251 Mar 23 18:06 autoupgrade_20200323_user.log
-rwx------. 1 oracle dba     0 Mar 23 18:06 autoupgrade_err.log
drwx------. 2 oracle dba  4096 Mar 23 18:07 prechecks



경고 메세지 로그 확인

1
2
3
4
5
6
7
8
9
10
$ cat autoupgrade_20200323_user.log 
2020-03-23 18:06:27.937 INFO 
build.hash:04dd9f2
build.version:19.7.5
build.date:2020/02/11 15:28:49
build.max_target_version:19
build.type:production
build.label:HEAD
 
2020-03-23 18:06:44.270 INFO Analyzing orcl, 72 checks will run using 2 threads 

아카이브로그 모드와 fra 설정 후 더이상 경고 메세지가 나오지 않음



업그레이드 전 db 수정 작업

1
$ $ORACLE_HOME/jdk/bin/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.txt -mode fixups



실행중인 job 확인(fixups 작업)

lsh -p 명령을 확인해보면 STAGE,OPERATION,MESSAGE의 값들이

PRECHECKS,PREPARING Remaining 이 끝나면 PREFIXUPS,EXECUTING Remaining으로 변경됨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
upg> lsj -p
+----+-------+---------+---------+-------+--------------+--------+--------+--------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|       MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+--------------+
| 102|   orcl|PRECHECKS|PREPARING|RUNNING|20/03/23 18:23|     N/A|18:24:33|Remaining 2/72|
+----+-------+---------+---------+-------+--------------+--------+--------+--------------+
 
upg> lsj -p
+----+-------+---------+---------+-------+--------------+--------+--------+-------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|      MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+-------------+
| 102|   orcl|PREFIXUPS|EXECUTING|RUNNING|20/03/23 18:23|     N/A|18:24:40|Remaining 4/4|
+----+-------+---------+---------+-------+--------------+--------+--------+-------------+
 
upg> lsj -p
+----+-------+---------+---------+-------+--------------+--------+--------+-------------+
|JOB#|DB NAME|    STAGE|OPERATION| STATUS|    START TIME|END TIME| UPDATED|      MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+-------------+
| 102| ORCL18|PREFIXUPS|EXECUTING|RUNNING|20/03/22 00:21|     N/A|00:22:03|Remaining 3/3|
+----+-------+---------+---------+-------+--------------+--------+--------+-------------+
Total jobs 1



조금 기다리면 완료됨

1
2
3
4
5
6
7
8
9
Job 102 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]
 
Jobs finished successfully     [1]
Jobs failed                    [0]
Jobs pending                   [0]
------------- JOBS FINISHED SUCCESSFULLY -------------
Job 102 for orcl



로그 파일 확인

1
2
3
4
5
6
7
8
9
10
$ cd /home/oracle/upg_logs/orcl/orcl/102/
$ ls -al
total 160
drwx------. 4 oracle dba   4096 Mar 23 18:34 .
drwx------. 6 oracle dba     51 Mar 23 18:23 ..
-rwx------. 1 oracle dba 149046 Mar 23 18:34 autoupgrade_20200323.log
-rwx------. 1 oracle dba   1015 Mar 23 18:34 autoupgrade_20200323_user.log
-rwx------. 1 oracle dba      0 Mar 23 18:23 autoupgrade_err.log
drwx------. 2 oracle dba   4096 Mar 23 18:24 prechecks
drwx------. 2 oracle dba     58 Mar 23 18:34 prefixups

여기는 prefixups 라는 폴더가 있음



해당 폴더 확인

1
2
3
4
5
6
7
$ cd prefixups
$ ls -al
total 148
drwx------. 2 oracle dba     58 Mar 23 18:34 .
drwx------. 4 oracle dba   4096 Mar 23 18:34 ..
-rwx------. 1 oracle dba 135462 Mar 23 18:34 prechecks_orcl.log
-rwx------. 1 oracle dba   5479 Mar 23 18:33 prefixups_orcl.log

2가지 파일이 있는데 prefixups.log 를 확인



prefixups_orcl.log 파일 확인

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
$ cat prefixups_orcl.log
2020-03-23 18:24:39.776 INFO Starting log for orcl - Utilities.createLogger 
2020-03-23 18:24:40.040 INFO Running FIXUP [DICTIONARY_STATS][orcl][PLSQL][DECLARE
BEGIN
   SYS.DBMS_STATS.GATHER_INDEX_STATS('SYS''I_OBJ#');
   SYS.DBMS_STATS.GATHER_SCHEMA_STATS('SYS');
   SYS.DBMS_STATS.GATHER_SCHEMA_STATS('SYSTEM');
END;
/
- FixUpTrigger.executeFixUp 
.
.
2020-03-23 18:33:25.423 INFO Adding parameter job_queue_processes='0' to /home/oracle/upg_logs/orcl/orcl/temp/during_upgrade_pfile_orcl.ora - PFileManager.addParameterToPFile 
2020-03-23 18:33:25.423 INFO Finished FIXUP [MANDATORY_UPGRADE_CHANGES][orcl][SUCCESSFUL] - FixUpTrigger.executeFixUp 
2020-03-23 18:33:25.453 INFO Running FIXUP [PURGE_RECYCLEBIN][orcl][PLSQL][PURGE DBA_RECYCLEBIN
/
- FixUpTrigger.executeFixUp 
2020-03-23 18:33:25.476 INFO Begin [/app/oracle/product/18.1.0/db_1/bin/sqlplus, -silent, /, as, sysdba] - ExecuteProcess.startSqlPlusProcess 
2020-03-23 18:33:25.476 INFO Begin Setting Oracle Environment - ExecuteProcess.startSqlPlusProcess 
2020-03-23 18:33:25.476 INFO [(SQLPATH=/home/oracle/upg_logs/orcl/orcl), (ORACLE_SID=orcl), (ORACLE_UNQNAME=orcl), (ORACLE_PATH=/home/oracle/upg_logs/orcl/orcl), (ORACLE_BASE=/app/oracle), (TWO_TASK=N/A), (ORACLE_HOME=/app/oracle/product/18.1.0/db_1), (TNS_ADMIN=N/A), (PERL5LIB=N/A)] - ExecutionEnv.addEnvToProcess 
2020-03-23 18:33:25.476 INFO Starting - ExecuteProcess.setLibsForSqlplus 
2020-03-23 18:33:25.477 INFO Finished - ExecuteProcess.setLibsForSqlplus 
2020-03-23 18:33:25.479 INFO End Setting Oracle Environment - ExecuteProcess.startSqlPlusProcess 
2020-03-23 18:33:25.479 INFO Begin Creating Process - ExecuteProcess.startSqlPlusProcess 
2020-03-23 18:33:25.501 INFO End Creating Process - ExecuteProcess.startSqlPlusProcess 
2020-03-23 18:33:25.502 INFO Executing SQL [PURGE DBA_RECYCLEBIN
/
] in [orcl, container:null- ExecuteSql$SQLClient.run 
2020-03-23 18:33:25.880 INFO # PURGE_RECYCLEBIN - Check.runFix 
2020-03-23 18:33:25.880 INFO Finished FIXUP [PURGE_RECYCLEBIN][orcl][SUCCESSFUL] - FixUpTrigger.executeFixUp

sys의 특정 오브젝트와 특정 인덱스 통계정보를 수집하고 recyclebin을 purge하는 등 업그레이드 전 정리작업을 함



spfile로 pfile 생성 후 업그레이드 전 파라미터 파일 확인

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
SQL> create pfile from spfile;
$ cat $ORACLE_HOME/dbs/initorcl.ora 
orcl.__data_transfer_cache_size=0
orcl.__db_cache_size=452984832
orcl.__inmemory_ext_roarea=0
orcl.__inmemory_ext_rwarea=0
orcl.__java_pool_size=50331648
orcl.__large_pool_size=33554432
orcl.__oracle_base='/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=721420288
orcl.__sga_target=939524096
orcl.__shared_io_pool_size=50331648
orcl.__shared_pool_size=335544320
orcl.__streams_pool_size=0
*.audit_file_dest='/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='18.0.0'
*.control_files='/app/oracle/oradata/ORCL/control01.ctl','/app/oracle/oradata/ORCL/control02.ctl'
*.db_block_size=8192
*.db_name='orcl'
*.db_recovery_file_dest_size=2147483648
*.db_recovery_file_dest='/home/oracle/fra'
*.diagnostic_dest='/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.local_listener='LISTENER_ORCL'
*.log_archive_dest=''
*.log_archive_dest_1='location=/home/oracle/arch'
*.log_archive_format='%t%s%r.arc'
*.memory_target=1569m
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'



다시 업그레이드 배치 작업시작

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ $ORACLE_HOME/jdk/bin/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.txt -mode deploy
AutoUpgrade tool launched with default options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 databases will be processed
Type 'help' to list console commands
upg> lsj -p
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|        MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
| 103|   orcl|PRECHECKS|PREPARING|RUNNING|20/03/24 00:32|     N/A|00:32:34|Loading DB info|
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
Total jobs 1
upg> lsj -p
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|        MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
| 103|   orcl|PREFIXUPS|EXECUTING|RUNNING|20/03/24 00:32|     N/A|00:33:27|Loading DB info|
+----+-------+---------+---------+-------+--------------+--------+--------+---------------+
Total jobs 1



작업중 에러발생 시 에러 조치 후 resume -job 명령으로 다시 시작 시키면됨

에러 발생 예시(https://positivemh.tistory.com/537)



작업확인

중간에 db가 자동종료됨

1
2
3
4
5
6
7
upg> lsj -p
+----+-------+-----+---------+-------+--------------+--------+--------+----------------+
|Job#|DB_NAME|STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|         MESSAGE|
+----+-------+-----+---------+-------+--------------+--------+--------+----------------+
| 103|   orcl|DRAIN|EXECUTING|RUNNING|20/03/24 00:32|     N/A|00:45:17|Shutting Down DB|
+----+-------+-----+---------+-------+--------------+--------+--------+----------------+
Total jobs 1



작업확인

1
2
3
4
5
6
7
upg> lsj -p
+----+-------+---------+---------+-------+--------------+--------+--------+-----------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|    MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+-----------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:02:27|0%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+-----------+
Total jobs 1

MESSAGE에 0%Upgraded로 퍼센트가 표시됨



작업확인

업그레이드 중에는 startup migrate 모드로 OPEN 됨(alert 확인)

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
71
72
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+-----------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|    MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+-----------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:05:31|8%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+-----------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:08:34|14%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:11:36|21%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:17:41|23%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:20:44|39%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:23:46|44%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:26:49|49%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:32:54|64%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:35:56|73%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:38:58|75%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:42:01|81%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:45:03|91%Upgraded |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+



업그레이드 완료

업그레이드 완료 후 nomal OPEN 후 INVALID OBJECT 확인 및 컴파일을 위해 UTLRP를 실행함 (alert 확인)



UTLRP 시작

1
2
3
alert log
2020-03-24T01:51:18.995080+09:00
SERVER COMPONENT id=UTLRP_BGN: timestamp=2020-03-24 01:51:18



작업확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+-----------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|    MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+-----------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:51:10|0%Compiled |
+----+-------+---------+---------+-------+--------------+--------+--------+-----------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:54:14|58%Compiled |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
upg> /
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|     MESSAGE|
+----+-------+---------+---------+-------+--------------+--------+--------+------------+
| 103|   orcl|DBUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|01:57:17|99%Compiled |
+----+-------+---------+---------+-------+--------------+--------+--------+------------+



UTLRP 종료

1
2
3
alert log
2020-03-24T02:00:35.375973+09:00
SERVER COMPONENT id=UTLRP_END: timestamp=2020-03-24 02:00:35



작업확인

UTLRP 종료 후 재기동됨

1
2
3
4
5
6
upg> /
+----+-------+---------+---------+--------+--------------+--------+--------+-------------------+
|Job#|DB_NAME|    STAGE|OPERATION|  STATUS|    START_TIME|END_TIME| UPDATED|            MESSAGE|
+----+-------+---------+---------+--------+--------------+--------+--------+-------------------+
| 103|   orcl|DBUPGRADE|EXECUTING|FINISHED|20/03/24 00:32|     N/A|02:00:57|Restarting Database|
+----+-------+---------+---------+--------+--------------+--------+--------+-------------------+



작업확인

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
재기동 이후 POSTCHECKS, PREPARING, Loading DB info
upg> /
+----+-------+----------+---------+-------+--------------+--------+--------+---------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|        MESSAGE|
+----+-------+----------+---------+-------+--------------+--------+--------+---------------+
| 103|   orcl|POSTCHECKS|PREPARING|RUNNING|20/03/24 00:32|     N/A|02:02:02|Loading DB info|
+----+-------+----------+---------+-------+--------------+--------+--------+---------------+
이후 POSTCHECKS, PREPARING, Remaining
upg> /
+----+-------+----------+---------+-------+--------------+--------+--------+--------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|       MESSAGE|
+----+-------+----------+---------+-------+--------------+--------+--------+--------------+
| 103|   orcl|POSTCHECKS|PREPARING|RUNNING|20/03/24 00:32|     N/A|02:03:07|Remaining 5/10|
+----+-------+----------+---------+-------+--------------+--------+--------+--------------+
이후 POSTFIXUPS, EXECUTING, Remaining
upg> /
+----+-------+----------+---------+-------+--------------+--------+--------+-------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|      MESSAGE|
+----+-------+----------+---------+-------+--------------+--------+--------+-------------+
| 103|   orcl|POSTFIXUPS|EXECUTING|RUNNING|20/03/24 00:32|     N/A|02:03:15|Remaining 3/3|
+----+-------+----------+---------+-------+--------------+--------+--------+-------------+
이후 재기동 이후 POSTFIXUPS, EXECUTING, Loading DB info
upg> 
+----+-------+----------+---------+-------+--------------+--------+--------+---------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|        MESSAGE|
+----+-------+----------+---------+-------+--------------+--------+--------+---------------+
| 103|   orcl|POSTFIXUPS|EXECUTING|RUNNING|20/03/24 00:32|     N/A|02:09:00|Loading DB info|
+----+-------+----------+---------+-------+--------------+--------+--------+---------------+
이후 POSTUPGRADE, EXECUTING, Creating final SPFILE
upg> /
+----+-------+-----------+---------+-------+--------------+--------+--------+--------------------+
|Job#|DB_NAME|      STAGE|OPERATION| STATUS|    START_TIME|END_TIME| UPDATED|             MESSAGE|
+----+-------+-----------+---------+-------+--------------+--------+--------+--------------------+
| 103|   orcl|POSTUPGRADE|EXECUTING|RUNNING|20/03/24 00:32|     N/A|02:10:10|Creating final SPFIL|
+----+-------+-----------+---------+-------+--------------+--------+--------+--------------------+



업그레이드 완료

1
2
3
4
5
6
7
8
9
upg> Job 103 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]
 
Jobs finished successfully     [1]
Jobs failed                    [0]
Jobs pending                   [0]
------------- JOBS FINISHED SUCCESSFULLY -------------
Job 103 for orcl



.bash_profile 의 ORACLE_HOME 변경

1
2
3
4
5
6
$ vi .bash_profile
기존
export ORACLE_HOME=$ORACLE_BASE/product/18.1.0/db_1;
변경
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1;
변경 후 저장



적용

1
$ . ./.bash_profile 



업그레이드 후 db 버전 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SQL> select instance_name, version, status from v$instance;
 
INSTANCE_NAME     VERSION       STATUS
---------------- ----------------- ------------
orcl         19.0.0.0.0       OPEN
 
SQL> select * from v$version;
 
BANNER
--------------------------------------------------------------------------------
BANNER_FULL
----------------------------------------------------------------------------------------------------------------------------------------------------------------
BANNER_LEGACY                                         CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production              0

정상적으로 업그레이드 됨



샘플 데이터 확인

1
2
3
4
5
6
7
SQL> conn imsi/imsi
Connected.
SQL> select count (*from imsi_tab;
 
  COUNT(*)
----------
     10000

데이터 정상적으로 확인됨



spfile로 pfile 생성 후 업그레이드 후 파라미터 파일 확인

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
SQL> create pfile from spfile;
$ cat $ORACLE_HOME/dbs/initorcl.ora
orcl.__data_transfer_cache_size=0
orcl.__db_cache_size=637534208
orcl.__inmemory_ext_roarea=0
orcl.__inmemory_ext_rwarea=0
orcl.__java_pool_size=16777216
orcl.__large_pool_size=16777216
orcl.__oracle_base='/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=671088640
orcl.__sga_target=989855744
orcl.__shared_io_pool_size=50331648
orcl.__shared_pool_size=251658240
orcl.__streams_pool_size=0
orcl.__unified_pga_pool_size=0
*.audit_file_dest='/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='18.0.0'
*.control_files='/app/oracle/oradata/ORCL/control01.ctl','/app/oracle/oradata/ORCL/control02.ctl'
*.db_block_size=8192
*.db_name='orcl'
*.db_recovery_file_dest='/home/oracle/fra'
*.db_recovery_file_dest_size=2147483648
*.diagnostic_dest='/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.local_listener='LISTENER_ORCL'
*.log_archive_dest_1='location=/home/oracle/arch'
*.log_archive_format='%t%s%r.arc'
*.memory_target=1645215744
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'



파라미터 파일 변경 사항 확인

sga영역의 값 빼고는 변한부분이 없음

업그레이드시 따로 파라미터를 추가하고 싶은 경우

https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/autoupgrade-utility-configuration-files.html#GUID-6AF95954-DAD4-47E2-9318-5EB35631F83D

가이드를 보고 add_after_upgrade_pfile 등 명령으로 변경하면됨



autoupgrade deploy 명령 이후 소요시간

약 2시간 10분(트러블슈팅 시간 포함)



요약 

12.2부터 config.txt 파일 설정과 이 3줄의 명령만으로 db를 업그레이드 할 수 있음

1
2
3
$ $ORACLE_HOME/jdk/bin/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.txt -mode analyze
$ $ORACLE_HOME/jdk/bin/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.txt -mode fixups
$ $ORACLE_HOME/jdk/bin/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.txt -mode deploy



+ OPatch 확인

1
2
3
4
5
6
7
$ $ORACLE_HOME/OPatch/opatch lspatches
27908644;UPDATE 18.3 DATABASE CLIENT JDK IN ORACLE HOME TO JDK8U171
27923415;OJVM RELEASE UPDATE18.3.0.0.180717 (27923415)
28090553;OCW RELEASE UPDATE 18.3.0.0.0 (28090553)
28090523;Database Release Update : 18.3.0.0.180717 (28090523)
 
OPatch succeeded

db 버전 업그레이드만 되고 OPatch는 안됨(기존 업그레이드와 동일)

필요시 OPatch로 RUR 적용하면됨



참조

문제 발생 시 복구 명령

1
$ $ORACLE_HOME/jdk/bin/java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config config.txt -mode analyze -clear_recovery_data



로그파일 구조

자동 업그레이드 로그 파일 기본 경로

자동 업그레이드 로그 파일 경로는 config.txt 파일의 전역 매개 변수를 사용하여 설정됨(global.autoupgr_log_dir)


/cfgtoollogs/upgrade/auto

자동 구성 도구 로그 디렉토리 ( /cfgtoollogs/upgrade/auto)에는 AutoUpgrade 작업 관리자가 처리하는 각 작업에 대한 특정 정보를 제공하는 세 개의 추적 로그 파일이 있음

autoupgrade.log: 작업 실행 중 발생하는 모든 문제를 식별하는 작업에 대한 자세한 로그를 제공함

autoupgrade_usr.log: 가독성을 높이기 위해 형식화 된 작업 정보를 포함

autoupgrade_err.log: 작업 실행시 발생하는 예기치 않은 예외에 대한 보고서임


/config_files

config_files디렉토리는 자동 업그레이드 내부 런타임 구성 및 전역 임시 파일이 포함되어 있음


/status

/status디렉토리는 JSON 작업 상태 파일이 포함되어 있음, 여기에는 두 개의 디렉토리가 있음

status.json:이 디렉토리에는 JSON 파일 형식으로 완료된 모든 작업의 ​​최종 작업 상태가 포함됨

progress.json:이 디렉토리에는 현재 JSON 파일 형식으로 실행중인 모든 작업의 ​​진행률이 포함됨

디렉토리의 각 모듈에는 수행 한 작업에 대한 상태 파일이 존재함


모듈은 다음과 같은 형식으로 표시됨

여기서 접 두부 dbname는 데이터베이스 이름이고 operation은 수행 된 업그레이드 작업이며 끝부분 status는 해당 작업의 완료 상태임

1
dbname_operation-name.status


해당 작업의 성공 또는 실패는 접미사로 표시됨

접미사 .success는 해당 작업의 성공적인 성능을 나타내고 .failure는 해당 작업 의 실패를 나타냄

예를 들어 다음 모듈 이름은 데이터베이스에서 사전 검사 작업이 성공적으로 실행되었음을 나타냄

1
sales_prechecks.success

작업 모듈 이름은 다음 중 하나 일 수 있음

preupgrade: 사용자 정의 스크립트를 실행할 수있는 업그레이드 전 단계

prechecks: 업그레이드를 시작하기 전에 업그레이드 확인이 완료된 단계

grp: 복원 지점 보장 (Oracle Flashback 기술 사용)

prefixups: 업그레이드를 시작하기 전에 사전 업그레이드 수정 사항이 실행됨

drain: 업그레이드를 시작하기 전에 기존 작업이 완료되거나 마이그레이션되는 단계

dbupgrade: 업그레이드가 수행되는 단계

postchecks: 업그레이드가 완료된 후 업그레이드 후 검사가 실행되는 단계

postfixups: 업그레이드 후 수정이 실행되는 단계

postupgrade: 사용자 정의 사후 업그레이드 스크립트를 실행할 수있는 단계




참조 : 

https://mikedietrichde.com/2019/06/13/create-and-adjust-the-config-file-for-autoupgrade-19c/

https://docs.oracle.com/en/database/oracle/oracle-database/20/upgrd/examples-of-autoupgrade-workflows.html#GUID-1A9651AE-854F-47F4-8BAE-166F0A35FB16

https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/autoupgrade-command-line-parameters.html#GUID-6EFE3E77-CFC4-4C50-AD0A-8062B877203C

https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/autoupgrade-command-line-parameters.html#GUID-0036136B-8FBE-4670-88B3-31A37C17A89F

https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/autoupgrade-log-file-structure.html#GUID-31F89463-C990-4BDC-85A2-8057B3479C89

https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/understanding-autoupgrade-workflows-stages.html#GUID-8C1FC4E1-2C9C-4CBC-AF5B-95F311D73BE4

Doc ID 2573304.1

https://blog.pythian.com/how-reliable-is-autoupgrade-jar-analyze-mode/

http://www.luxoug.org/new-feature-19c-autoupgrade/