Load To Technical Architect
[Oracle] Upgrade Oracle DB 12C To 18C 본문
- 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;
'DB > oracle' 카테고리의 다른 글
[Oracle] Oracle Critical Patch Update ( CPU ) (0) | 2021.05.28 |
---|---|
[Linux] Oracle DB 18C 설치 (0) | 2020.07.24 |
[Linux] Oracle DB 18C rpm 설치 (0) | 2020.07.24 |
[Linux] Oracle DB 12C 인스턴스 추가 (with -silent) (0) | 2020.06.16 |
[Linux] Oracle Service 등록 (0) | 2020.06.15 |