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 |