독까의 이야기

# 오라클 11g 제거 (윈도우 환경)


오라클 11g 삭제 방법 정리



프로그램 파일 - 오라클 - 오라클 설치 제품 - Universal Installer



파일을 실행하게 되면 아래와 같이 프로그램이 실행 됨 



제품 설치 해제 를 선택 



제거를 진행하려는 오라클 버전을 선택 



하였으나 에러 메시지 출력 됨



오류 메시지 확인하여 설명한대로 진행 

CMD 또는 탐색기에서 적용해도 무관함 (본인이 편한 방법으로 하면 됨)




제거 프로그램 실행이 되면 몇 번의 키 입력이 나오는데 그럴 때는 그냥 "엔터" 또는 요구하는 사항대로 입력하면 됨



작업이 완료되면 오라클 설치 폴더가 제거가 되는데, 이렇게해서 완전히 설치가 제거 된 것은 아님

레지스트리 편집기에서 아래의 사항에 대해 삭제 진행


HKEY_CLASSES_ROOT 

HKEY_LOCAL_MACHINE - SYSTEM - ControlSet001 - Services

HKEY_LOCAL_MACHINE - SYSTEM - ControlSet002 - Services

HKEY_LOCAL_MACHINE - SYSTEM - CurrentControlSet - Services

오라클과 관련 된 모든 값에 대한 삭제를 진행

ORA 또는 OR 로 시작되는 값 삭제

그리고 리부팅하면 정상적으로 제거가 완료 됨 

# 오라클 11G 설치 방법 (윈도우 환경)


1.  오라클 다운로드 페이지로 이동하여 설치 파일 다운로드

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html


자신의 환경에 맞는 버전을 선택


나는 Microsoft Windows (X64) 의 File1, File2 를 다운로드 받음


압축을 해제하면 생성되는 폴더를 확인

setup.exe 를 관리자 권한으로 실행하여 인스톨 진행



오라클에서 메일을 수신 할 필요가 없으므로 수신 체크 해제



모든 설치는 Default 설정으로 진행 




본인이 필요로 하는 설정으로 설치를 하면 됨

문자집합의 경우 유니코드로 선택하는 것이 편함 

패스워드는 숫자, 대문자, 소문자 조합 입력이 필요함 


필요 조건 검사를 수행하다가 아래와 같이 경고가 출력 될 경우가 있음

Checks

Environment variable: "PATH"

This test checks whether the length of the environment variable "PATH" does not exceed the recommended length.


해당 원인은 환경변수 - PATH 에 등록되어 있는 문자의 길이가 요구 조건보다 길기 때문임 

이럴때는 아래의 작업을 수행하여 해결


시스템 속성 - 환경 변수 - 시스템 변수 의 "PATH" 를 수정 

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32; 

만 남기고 나머지는 다른 문서에 저장 

관리자 권한으로 설치 파일 실행하여 진행하면 정상적으로 진행 됨 

설치가 완료 된 후에는 PATH 를 원복


필요 조건 검사가 완료되면 설치를 진행 



오라클 프로그램이 설치가 완료 되고 DB 인스턴스 (ORCL) 생성 작업이 진행 됨



오라클 설치가 정상적으로 완료 되면

SQLPLUS 또는 sqldeveloper 를 이용하여 인스턴스에 접속

접속 한 인스턴스가 맞는지 확인하는 쿼리를 날림

SQL> SELECT NAME, DB_UNIQUE_NAME FROM v$database;




 
# 오라클 운영 DB 를 복사하여 테스트 및 개발 DB 로 사용하고자 할 때 방법!!!!

리눅스 환경의 인스턴스 복사 관련은 자료가 좀 나오는데 윈도우는 찾을 수가 없어서 난감함.

그래서 다른 DB 서버에 덤프로 복구하고 SID 를 변경 하려고 해보았는데, 시간이 걸릴 것 같아서 포기.

다른 블로그 글 보니 SID 명을 변경하기 위해서 인스턴스를 삭제하고 변경할 SID 로 재설치 해서 SID 를 변경했다는 글을 써놔서 당황함;;;;

윈도우에서 리눅스 서버로 close backup 복구 했었던 방식 및 오라클 기술 문서를 바탕으로 테스트 진행함.

 



1.  기존 DB 에 접속하여 컨트롤 파일 생성하는 쿼리를 실행

SQL> alter database backup controlfile to trace as 'E:\CTL.sql';

정상 실행되면 CTL.sql 파일이 해당 경로에 생성 됨

 

 

2.  해당 파일을 편집기로 열어서 내용 수정

[ 편집 필요 부분 ]

STARTUP NOMOUNT    <-- 여기는 필요 없음

<--- 아래 부터 시작 --->
CREATE CONTROLFILE REUSE DATABASE "기존DB명" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 1168
LOGFILE
  GROUP 1 'E:\ORACLE\ORADATA\기존DB명\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 'E:\ORACLE\ORADATA\기존DB명\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 'E:\ORACLE\ORADATA\기존DB명\REDO03.LOG'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE

DATAFILE
  'E:\ORACLE\ORADATA\기존DB명\SYSTEM01.DBF',
  'E:\ORACLE\ORADATA\기존DB명\SYSAUX01.DBF',
  'E:\ORACLE\ORADATA\기존DB명\UNDOTBS01.DBF',
  'E:\ORACLE\ORADATA\기존DB명\USERS01.DBF',
CHARACTER SET AL32UTF8
;
<--- 여기까지 내용을 수정 --->

 


[ 변경 완료 ]

 

CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS  NOARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 1168
LOGFILE
  GROUP 1 'E:\ORACLE\ORADATA\TEST\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 'E:\ORACLE\ORADATA\TEST\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 'E:\ORACLE\ORADATA\TEST\REDO03.LOG'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE

DATAFILE
  'E:\ORACLE\ORADATA\TESt\SYSTEM01.DBF',
  'E:\ORACLE\ORADATA\TEST\SYSAUX01.DBF',
  'E:\ORACLE\ORADATA\TEST\UNDOTBS01.DBF',
  'E:\ORACLE\ORADATA\TEST\USERS01.DBF',
CHARACTER SET AL32UTF8
;

 

 

3.  변경 된 내용만을 CTL.ora 문서로 저장 

E:\CTL.ora

 

 

4.  기존 DB 의  init.ora 파일을 확인하여 신규 DB 명으로 복사

spfile 이 있는 경로에 INIT기존DB.ora 파일이 있음 (내 서버의 경우)
그러면 spfile 이 어디에 있는지 확인을 해야 함

SQL> show parameter spfile;

출력되는 경로 확인되면 해당 경로로 이동하여 파일 복사


INIT기존DB.ora 를 복사하여 INITTEST.ora 로 생성

생성 된 INITTEST.ora 를 편집기로 수정 

 

 

 

[ 변경 된 내용 ] 

TEST.__db_cache_size=671088640
TEST.__java_pool_size=33554432
TEST.__large_pool_size=16777216
TEST.__oracle_base='d:\oracle'#ORACLE_BASE set from environment
TEST.__pga_aggregate_target=1073741824
TEST.__sga_target=2147483648
TEST.__shared_io_pool_size=0
TEST.__shared_pool_size=1375731712
TEST.__streams_pool_size=33554432
*._optimizer_push_pred_cost_based=TRUE
*.audit_file_dest='d:\oracle\admin\TEST\adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='E:\ORACLE\ORADATA\TEST\control01.ctl','d:\oracle\flash_recovery_area\TEST\control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='TEST'
*.db_recovery_file_dest='d:\oracle\flash_recovery_area'
*.db_recovery_file_dest_size=4102029312
*.diagnostic_dest='d:\oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=TESTXDB)'
*.nls_language='KOREAN'
*.nls_territory='KOREA'
*.open_cursors=500
*.pga_aggregate_target=1073741824
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.sec_case_sensitive_logon=FALSE
*.sessions=555
*.sga_target=2147483648
*.undo_tablespace='UNDOTBS1'
 

 

5.  D:\oracle\admin\기존DB 를 복사하여 D:\oracle\admin\TEST 를 생성한다. (하위 폴더 포함)

4번에서 INITTEST.ora 를 생성하긴 하였지만, 아래에서 진행되는 ORADIM을 이용한  인스턴스 생성시 pfile 을 지정한 경로에 맞춰야 할 수도 있으므로 기존 DB 와 동일하게 설정을 진행함

D:\oracle\admin\TEST\pfile 에 등록되어 있는 init.ora.~~~ 를 수정

기존DB명 으로 되어 있는 부분 수정 및 파일 경로 수정하고 init.ora 로 저장 

dispatchers="(PROTOCOL=TCP) (SERVICE=TESTXDB)"

db_name=TEST

audit_file_dest=d:\oracle\admin\TEST\adump

control_files=("E:\ORACLE\ORADATA\TEST\control01.ctl", "d:\oracle\flash_recovery_area\TEST\control02.ctl")
 

 

6.  기존DB 에 접속하여 인스턴스를 중지하고 해당 인스턴스의 데이터를 신규 DB 가 저장 될 경로에 복사한다. 

SQL> shutdown immediate

E:\ORACLE\ORADATA\기존DB명 폴더에 등록되어 있는 모든 파일들을 

E:\ORACLE\ORADATA\TEST 폴더에 복사 


D:\oracle\flash_recovery_area\TEST\ 폴더 생성 

[  여기서 Control File 은 복사를 하지 않는다. 왜냐하면 아래에서 진행되는 작업을 통해 컨트롤 파일들을 새로 생성 할 것이기 때문임.  ]

컨트롤 파일이 위치하는 경로 확인하고 해당 파일들은 복사 하지 않음

SQL> select name from v$controlfile;

신규DB 의 컨트롤 파일 경로에 해당 파일들이 존재할 경우 컨트롤 파일 재생성시에 오류 발생 

복사가 완료 되었으면 기존 DB 의 인스턴스 시작 

 

7.  ORADIM 을 이용하여 신규 인스턴스를 생성

C:\> ORADIM -NEW -SID 신규DB -INTPWD 패스워드 -STARTMODE AUTO -PFILE D:\oracle\admin\신규DB\pfile\init.ora

C:\> ORADIM -NEW -SID TEST -INTPWD manager -STARTMODE AUTO -PFILE D:\oracle\admin\TEST\pfile\init.ora

명령어가 잘 실행되면 서비스에 신규 DB 인스턴스 생성 된 것이 확인 됨 

 

8.  생성 된 신규 DB 에 접속하여 인스턴스 종료 후 마운트해제하여 시작 진행 

C:\> set oracle_sid=TEST
C:\> sqlplus /nolog

SQL> conn sys /as sysdba
SQL> shutdown immediate
SQL> startup nomount

 

 

 9.  컨트롤파일 재생성을 위해 3번에서 만들어 두었던 CTL.ora 를 실행 


SQL> @E:\CTL.ora

컨트롤 파일이 정상 생성 되었음은 해당 경로에 가서 확인 가능


E:\ORACLE\ORADATA\TEST\CONTROL01.CTL
D:\oracle\flash_recovery_area\TEST\CONTROL02.CTL

 


10.  인스턴스를 정상 오픈 시킨 후 쿼리문 이용하여 기존DB 와 동일한 데이터를 갖고 있는지 확인

SQL> alter database open resetlogs;

SQL> SELECT * FROM DBA_USERS;

기존 DB 와 동일한 데이터를 가지는 것이 확인 되었으므로 테스트 종료함