Load To Technical Architect

[Oracle] Upgrade Oracle DB 12C To 18C 본문

DB/oracle

[Oracle] Upgrade Oracle DB 12C To 18C

고지식한청춘 2022. 7. 15. 15:55
728x90

- Server Spec -

  • CPU - 2 Core
  • MEMORY - 4GB
  • OS - CentOS 7 minimal

 

- 업그레이드 전 설정

  • 서버에 SSH 접속시 Putty 사용, X11 Forwarding 옵션 활성화, Oracle 계정으로 접속

 

  • 서버에 접속하는 PC에서 XLaunch 실행

 

 

 

 

 

 

 

업그레이드 전

0. Oracle 12C DB와 12C 리스너 모두 실행중인 상태에서 시작

 

 

1. DB Audit, 트리거 해제

SQL> select distinct 'noaudit policy '||policy_name||';' from audit_unified_policies;

- 위의 쿼리의 결과로 나온 쿼리 실행

 

SQL> select 'alter trigger '||trigger_name||' disable;' as dis from user_triggers WHERE status='ENABLED';

- 위의 쿼리의 결과로 나온 쿼리 실행

 

 

3. Oracle 18C를 설치할 ORACLE_HOME 생성 후 해당 경로에 Oracle 18C 설치파일 압축 해제

$ mkdir -p /u01/app/oracle/product/18.0.0/dbhome_1
$ cd /u01/app/oracle/product/18.0.0/dbhome_1
$ unzip LINUX.X64_180000_db_home.zip

 

4. Oracle 18C Database 소프트웨어만 설치

$ ./runInstaller

- Set Up Software Only

- Single instance database installation

- Standard Edition 2

- Oracle base 지정

- 모두 dba로 설정

- VM 사양이 낮아 발생한 확인 사항이므로 필자는 Ignore All 후 넘어감, 다른 이슈는 있으면 안됨

- root 계정으로 /u01/app/oracle/product/18.0.0/dbhome_1/root.sh 스크립트를 실행

- Oracle 18C 소프트웨어만 설치 완료

※ RU Patch를 진행한 적이 있다면 18C 설치 후 Opatch 버전 업데이트 필수

※ Opatch 업데이트 안하면 업그레이드 도중 에러 발생

 

 

 

5. 업그레이드 전 사전 체크

// 12C의 sqlnet.ora 수정
$ vi /usr/oracle/app/product/12.2.0/dbhome_1/network/admin/sqlnet.ora
#SQLNET.AUTHENTICATION_SERVICES = (NONE)

- sys 계정 비밀번호 없이 로그인 가능하도록 수정

 

$ java -jar $ORALCE_18C_HOME/rdbms/admin/preupgrade.jar TERMINAL TEXT

- 출력되는 가이드를 읽어보며 필요한 작업이 있으면 진행

 

- 우선 필자는 REQUIRED ACTIONS가 None이어서 ORACLE GENERATED FIXUP SCRIPT만 실행

 

 

6. Oracle 18C DB Upgrade 진행

$ export ORACLE_HOME=/u01/app/oracle/product/18.0.0/dbhome_1
$ export PATH=$PATH:/u01/app/oracle/product/18.0.0/dbhome_1/bin
$ cd $ORACLE_HOME/bin
$ ./dbua

- 업그레이드 할 DB Instance 선택 및 sys 정보 입력

- 권장사항이므로 필자는 넘어감, 이슈가 있으면 안되며 이슈가 있다면 수정해야 함

- I have my own backup and restore strategy 선택

 

- 기존 리스너를 사용 할 경우(필자는 기존 리스너를 그대로 사용)

- 새 리스너 생성 할 경우

 

- EM 구성으로 진행

- 필자의 경우 약 50분의 시간이 소요되며 업그레이드가 완료 되었음

- DB에 접속해보면 Oracle 12C Instance는 shutdown 되어있으며 18C Instance가 실행되고 있음을 확인 가능

 

 

7. Oracle 계정 환경변수 수정

$ vi ~/.bash_profile
# 12C
# export ORACLE_BASE=/usr/oracle/app
# export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1

# 18C
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/18.0.0/dbhome_1

$ source ~/.bash_profile

 

 

8. 업그레이드 완료 후 작업

SQL> ALTER SYSTEM SET COMPATIBLE = '18.0.0' SCOPE=SPFILE;
SQL> shut immediate
SQL> startup
SQL> @/usr/oracle/app/cfgtoollogs/orcl/preupgrade/postupgrade_fixups.sql
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

 

 

9. Oracle DB Audit, 트리거 활성화

SQL> select distinct 'audit policy '||policy_name||';' from audit_unified_policies;

- 위의 쿼리의 결과로 나온 쿼리 실행

 

 

SQL> select 'alter trigger '||trigger_name||' enable;' as dis from user_triggers WHERE status='DISABLED';

 

- 위의 쿼리의 결과로 나온 쿼리 실행

 

 

10. 업그레이드 확인

SQL> SELECT * FROM v$version;

 

 

 

728x90
Comments