프린트 하기

OS환경 : Windows 2012 r2 (64bit)


DB 환경 : Oracle Database 11.2.0.4, 12.2.0.1


방법 : Windows Server 2012 R2에 Oracle 11g R2에서 12c R2로 DB 업그레이드 가이드

windows 2012 r2 에 oracle 11g r2가 설치된 환경에서 12c r2로 DB를 업그레이드 하는 시나리오


winx64_12201_database.zip 설치 파일 준비



설치파일 압축 해제



database 폴더로 들어간 뒤 setup.exe 실행



보안 경고 무시 후 실행



My Oracle Support를 통해 보안 갱신 수신 체크 해제



예 선택



데이터베이스 소프트웨어만 설치 선택



단일 인스턴스 데이터베이스 설치 선택



Enterprise Edition 선택



가상 계정 사용 선택



Oracle Base와 Oracle Home 지정



요구사항 확인중



설치 선택



설치중



12cr2 DB 엔진 설치 완료



윈도우 키 + R 또는 실행창에서 cmd 입력



dbua 실행



업그레이드 할 데이터베이스 선택 후 sysdba 계정과 패스워드 입력



요구 사항 검사중



요구사항 충족 안되는 리스트가 나옴



충족 안되는 것들을 무시하고 넘어가려 하면 아래 메세지가 나옴



수정할 검사에서 하단 세부정보를 눌리면 해야할 작업이 나옴

첫 번째 OLAP 카탈로그 구성요소 AMD 제거



해당 스크립트 찾아서 실행



두 번째 부적합한 객체(Invalid object) 재컴파일



해당 스크립트 실행



이전버전 EM(Enterprise Manager) 저장소(Repository) 제거

12c 에서는 11g와 다르게 다른 EM 을 사용함



12c $ORACLE_HOME/rdbms/admin/에 있는 emremove.sql 파일을 복사



해당파일 11g $ORACLE_HOME/rdbms/admin/ 으로 붙여넣기



이전버전 em 정지

나의 경우 이전버전에서 em이 제대로 설치되지 않아 not found로 나옴



emremove.sql 실행



실행완료된 모습



12c는 10g와 다르게 패스워드 저장 알고리즘이 SHA512로 변경됨

이전버전의 패스워드를 사용하려면 배타모드를 해제하거나 기존 패스워드를

12c 버전으로 업데이트 시켜줘야함

(10g 는 3DES, 11g 는 SHA1 알고리즘을 사용했음)



유저 상태가 OPEN(사용가능한) 상태인 유저 확인 후

패스워드 변경(특별한 구문이 있는것이 아니라 기존 패스워드로 alter 문을 실행해주면 됨)

기존에 password_versions가 10G이던 것들이 10G 11G로 변경됨을 확인할 수 있음

1
2
3
4
5
6
7
8
SQL> 
select username, account_status, password_versions
from dba_users
where account_status = 'OPEN';
 
SQL> alter user system identified by oracle;
SQL> alter user sys identified by oracle;
SQL> alter yser naeman identified by naemam;



COMPATIBLE 파라미터 변경



기존 compatible 파라미터 확인 후 spfile 사용중이라면 alter 문으로 변경 후 db 재기동

1
2
3
4
5
6
7
8
9
SQL> show parameter compatible
 
SQL> show parameter spfile
 
SQL> alter system set compatible='11.2.0.4.0' scope=spfile;
 
SQL> shutdown immediate
 
SQL> startup



변경 후 compatible 확인(11.2.0.4.0 하려고 했는데 오타쳐서 3으로 한듯)



다시 확인 선택



수정할 검사가 아직 남아있음



account_status 가 OPEN 인 유저뿐만 아니라 lock나 expired된 유저들도 변경을 해줘야 하는것으로 판단됨

쿼리문을 다시 짜서 모두 복사 후 실행

1
2
3
4
5
SQL> set pages 1000
SQL> 
select 'alter user '||username||' identified by oracle;'
from dba_users
where account_status!='OPEN';



패스워드 모두 변경 후 모든 유저들의 password_versions 확인

모두 10G 11G로 변경됨

1
2
3
SQL>
select username, account_status, password_versions
from dba_users;



모든 유저의 휴지통(recyclebin) 비우기(sysdba로 접속 후 실행)



수정 및 다시 검사 실행



수정할 검사가 모두 사라짐



사후 업그레이드 권장 사항 확인1



사후 업그레이드 권장 사항 확인 후 다음



위에부터 4개 선택 후 다음



RMAN 백업 사용 선택



리스너 확인



현재 리스너가 나오지 않아서 리스너가 살아있는지 확인

1
> lsnrctl status

리스너가 이미 있으니 그냥 넘어감



EM 구성 선택 해제



업그레이드 요약 확인



업그레이드 중



업그레이드 완료



db 접속 후 확인(정상)

1
SQL> select instance_name, version, status from v$instance;



naemam 유저의 데이터 확인(정상)



리스너 확인(정상)




추가내용

업그레이드 결과서 아래 쪽에서 복원할 수 있는 스크립트를 발견함



해당 스크립트를 찾아 '편집'으로 열어봄(D:\oracle\admin\ORCL\back~~\ORCL_restore.bat)



oradim으로 db를 삭제하고 만드는 작업을 함

한글로 주석이 다적혀있어서 무슨작업인지 알기편함



해당 스크립트 내용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
REM -- Oracle 데이터베이스 인스턴스 ORCL을(를) 복원하려면 이 스크립트를 실행합니다. 
echo -- 소스 Oracle 홈에서 데이터베이스를 시작합니다. 
set ORACLE_HOME=d:\oracle\product\11.2.0\dbhome_1
set ORACLE_SID=ORCL
d:\oracle\product\11.2.0\dbhome_1\bin\sqlplus /nolog @D:\oracle\admin\ORCL\backup_2019-10-19_12-26-38-PM\shutdown_ORCL.sql
echo -- 새 Oracle 홈에서 데이터베이스를 종료합니다. 
set ORACLE_HOME=D:\oracle\product\12.2.0\dbhome_1
set ORACLE_SID=ORCL
D:\oracle\product\12.2.0\dbhome_1\bin\sqlplus /nolog @D:\oracle\admin\ORCL\backup_2019-10-19_12-26-38-PM\shutdown_ORCL.sql
echo -- 새 Oracle 홈에서 데이터베이스 인스턴스를 제거하는 중...
D:\oracle\product\12.2.0\dbhome_1\bin\oradim.exe -delete -sid ORCL 
echo -- 소스 Oracle 홈에서 데이터베이스를 시작합니다. 
set ORACLE_HOME=d:\oracle\product\11.2.0\dbhome_1
set ORACLE_SID=ORCL
set PATH=
echo -- 소스 Oracle 홈에서 데이터베이스 인스턴스를 생성하는 중...
d:\oracle\product\11.2.0\dbhome_1\bin\oradim.exe -new -sid ORCL -startmode manual -pfile d:\oracle\product\11.2.0\dbhome_1\database\initORCL.ora 
d:\oracle\product\11.2.0\dbhome_1\bin\oradim.exe -edit -sid ORCL -startmode auto -log D:\oracle\cfgtoollogs\dbua\upgrade2019-10-19_12-26-38-PM\ORCL\oradim.log 
cd d:\oracle\product\11.2.0\dbhome_1
echo -- D:\oracle\cfgtoollogs\dbua\logs\Welcome_ORCL.txt 파일 제거 중
 del D:\oracle\cfgtoollogs\dbua\logs\Welcome_ORCL.txt
d:\oracle\product\11.2.0\dbhome_1\bin\sqlplus /nolog @D:\oracle\admin\ORCL\backup_2019-10-19_12-26-38-PM\createSPFile_ORCL.sql
d:\oracle\product\11.2.0\dbhome_1\bin\rman  @D:\oracle\admin\ORCL\backup_2019-10-19_12-26-38-PM\rmanRestoreCommands_ORCL
echo -- orcl 데이터베이스에 대한 복원 스크립트 실행이 완료되었습니다.




이어지는글(예정)

1. windows 2008 r2 에 oracle 10g r2 설치

2. windows 2008 r2 에 oracle 10g r2 에서 11g r2로 DB 업그레이드

3-1.windows 2008 r2 에 oracle 11g r2에서 windows 2012 r2로 OS 업그레이드

4-1.windows 2012 r2 에 oracle 11g r2에서 12c r2로 DB 업그레이드




참조 :