RDB/Oracle

[오라클]admin

창문닦이 2019. 1. 23. 19:37

- admin 관련 내용은 cmd 이용. backup, recovery는 쿼리박스보다 cmd가 나음

 

[Oracle Universal Installer]

자바엔진을 기반으로 만들어서 swing으로 구현함. 그래서 속도가 느림.

To start oracle universal installer on NT(윈도우즈 환경)

 

D:\> setup

 

To start oracle universal installer in non-interactive mode (내가 없어도 설치가 알아서 되도록)

/runInstaller -reponsefile myrespfile -silent

 

[SQLPLUS]

-sqlplus /nolog : 사용자로그인 없이 sqlplus만 실행시키는 소스

-connect as sysdba

 

[PARAMETER FILE]

- spfile : binary파일. 명령어를 통해 수정해야함. spfile을 통해 pfile생성 가능.

- pfile : text파일. 메모장으로 수정가능

- 파라미터파일은 여러개 존재 가능. 그리고 반드시 하나 이상 존재해야 함

- 오라클에서는 기본 디폴트 : SPFILE. 하지만 실무에서는 PFILE을 더 많이 사용함. (텍스트로 수정이 가능하기 때문이다.)

- 만약 SPFILE, PFILE을 모두 삭제했을경우,

현재 오라클 데이터베이스가 실행되었으므로 진행중인 디비에서는 오류 안나지만 추후 시작불가.

C:\app\itwill\admin\TestDB\pfile 경로에 존재하는 INIT.ORA 파일을 복사하여 INITtestdb.ORA로 이름 변경하여

db저장경로에 옮겨서 저장

 

1. 관리자 계정으로 로그인하여 spfile 을 통해 pfile생성

CREATE PFILE FROM SPFILE; -- 이렇게 선언할 경우 기본설정경로로 저장됨

 

2. PFILE을 통해서 SPFILE을 생성하는 것도 마찬가지로 가능함

 

3. spfile (바이너리 파일).

- 오라클 서버에 의해 관리되고 있음

 

4. pfile (텍스트 형식) : initSID.ora

- 텍스트 수정 권한 없을 경우 (속성 > 보안 > 편집 > 사용권한 설정해서 변경하면 메모장에서 수정가능)

 

 

5. DB종료. 3단계로 이루어짐 (DB닫힘-마운트해제-인스턴스종료)

- SHUTDOWN IMMEDIATE

 

6. DB시작. 관리자만 가능 (인스턴스시작-마운트-DB열림)

 

6-1. STARTUP

 

 

6-2. STARTUP 오류 확인

편의상 ctl파일을 한꺼번에 보기 위해 CONTROL02.CTL 파일의 위치를 옮김

그 후, 다시 STARTUP 할 경우 PFILE에 변동된 내용이 반영되어 있지않아 오류 발생

(?? ??? ??? ? 라고 뜨는건 해당위치에 컨트롤 파일이 없다는 의미)

6-3. 해결방법

\

 

▶이때 SPFILE이 존재할경우 PFILE이 수정되더라도 SPFILE로 진행되므로 ※SPFILE이 삭제되어야 함.

처음에 데이터베이스가 시작할때 파라미터파일을 실행함. 파라미터파일은 오라클 인스턴스(sga + background process)를 생성시킴.

시작할 때만 읽는 1회성. 디비를 사용하다가 수정해도 반영이 되기전의 내용이 실행되고 있음

 

7. Parameter file 의 우선순위

- 1순위 spfileSID.ora, 2순위 initSID.ora

- Pfile 을 우선순위로 설정 : STARTUP PFILE = $ORACLE_HOME/DBS/INITDBA1.ORA

 


 

[BACKUP]

- 전제조건 : ① DB가 CLOSE되어있어야함. ② 모든파일을 한꺼번에 복사되어야 함

- DB가 STARTUP이 안될 경우 : SHUTDOWN 시킨 후  백업된 데이터를 복사-붙여넣기 (가장 기본적이고 쉬운 복구)

- 백업폴더 따로 생성해서 저장. 오라클이 깨질 경우 해당 자료들 그대로 복사붙여넣기 해서 진행

 

 

[START]

- 파라미터 파일을 찾아갈 때 SPFILE.ORA - INITSID.ORA - PFILE 순으로 찾아가게 됨

- PFILE을 수정해서 개별로 관리할 수 있음. 데이터베이스의 속성에 따라 버퍼캐시, SGA영역이 메모리영역이 커야되는 부분에 따라서 설정을 다르게 해서 관리 가능.

- 데이터베이스 시작시 3단계가 이루어짐. 이 단계를 각각 한단계씩 실행 가능

 

(1단계) 데이터베이스 인스턴스생성 STARTUP NOMOUNT

파라미터파일을 정상적으로 다 읽어야만 인스턴스 시작 가능

SGA영역이 생성되고 BACKGROUND PROCESS 실행 = 인스턴스 시작

 

1단계 오류. 파라미터파일 자체를 찾지 못함.

(2단계) 데이터베이스 마운트 ALTER DATABASE MOUNT;

해당 단계에서 파라미터파일을 읽는 것까지는 진행, 인스턴스에서의 컨트롤파일이 실행  

 

2단계 오류. 파라미터파일 데이터 오류

파라미터파일을 정상적으로 다 읽어야만 인스턴스 생성이 가능하다. 오류가 발생할 경우 파라미터파일을 찾아서 읽는 것까지는 진행되었음, 파라미터파일을 확인해서 CTL파일의 위치정보와 같은 데이터가 맞게 되었는지 확인

 

(1~2단계) 한꺼번에 진행 가능.

 

 

 

(3단계) 데이터베이스 오픈 ALTER DATABASE OPEN;

모든 파일이 열림.

 

3단계 오류. 데이터베이스오픈 안됨

 

[데이터베이스의 구성파일 중 하나를 삭제하는 문제가 발생할 경우 (USERS01.DBF를 예시로 삭제 진행) ]

- 삭제된 하나의 파일만 다시 복사해서 붙여넣어도 CTL,DBF,LOG파일들과 시리얼 키값이 다르다고 인식하므로 오류가 발생함.

- 그러므로 데이터를 SHUTDOWN 시킨 후, BACKUP용으로 별도로 저장해둔 CTL,DBF,LOG 파일을 다같이 붙여넣어야 함.

- 이게 바로 CLOSE BACKUP. 백업된 시점과 현재시점 사이의 데이터가 손실되기 때문에 실무에서 주기적으로 백업 진행함.

 

** CLOSE BACKUP 닫힌백업 (= COLD BACKUP) <-> OPEN BACKUP 열린백업 (HOT BACKUP)

 


 

[SHUTDOWN]

1. SHUTDOWN 종류

MODE ABORT IMMEDIATE TRANSACTIONAL NORMAL
새로운 세션 연결 N N N N
현재 세션 종료까지 대기 N N N Y
현재 트랜잭션 종료까지 대기 N N Y Y
체크포인트 적용, 파일 종료 N Y Y Y

1-1. SHUTDOWN IMMEDIATE: 다른 사용자가 사용중이더라도 종료하길 원할 경우. 대부분 이걸로 사용

1-2. SHUTDOWN :  모든 사용자 계정이 종료되어야 종료 가능하므로 권한이 제일 작은 개념.

 

2. SHUTDOWN으로 종료 후, 재시작

① STARTUP > 기존에 제대로 종료되지 않아 오류 발생

② SHUTDOWN ABORT > ABORT가 들어갈 경우 가장 강력한 권한. 전부 종료시켜버림

③ STARTUP > 정상적으로 재시작 되는걸 볼수 있음

 

‘SCOPE=BOTH’ 사이에는 띄어쓰기가 있으면 안된다

‘SCOPE=MEMORY’ -> SGA에 해당하는 메모리에서만 변경.

‘SCOPE=SPFILE‘-> 파라미터파일만 변경.

파라미터파일(CTL의 위치정보 존재) > CTL (DB의 위치정보 존재) > DB (dbf)


[ Opening a database in Read-Only Mode : 읽기 전용 데이터베이스 ]

 

1. 데이터베이스를 읽기 전용으로 startup 해주기 위해서는 startup mount 단계에서 진행하면 됨.

 

 

 

2. 다른 클라이언트로 로그인하여 DML문을 작성하면 처리 안됨.

 

 

 

 

 

3-1. shutdown후 다시 start하면 read write가능한 상태로 db가 켜짐

 

 

 

 

3-2. 다른 사용자에 로그인해서 데이터 입력이 가능한 것을 볼수있음

 

 


 

[세션 접근 권한 제한]

1. 제한 후 인스턴스 로그인 조회

 

2. 접근 제한된 세션에 권한이 있는 사용자 검색 (여기서 DBA는 ROLE에 해당), 세션 접근 권한 부여

 

3. 세션 접근 권한 삭제

 

4. 사용자 세션 강제종료

- SELECT SID, SERIAL#, USERNAME, STATUS FROM V$SESSION;

- 서버에 있는 세션들의 사용자명, SID, SERIAL# 를 조회해서 사용자 세션 강제종료

- ALTER SYSTEM KILL SESSION 'sid,serial#'; 사용자의 세션을 죽임

 


 

[Alert Log file]

C:\app\itwill\diag\rdbms\testdb\testdb\trace

- 명렁어, 메인이벤트, 시스템관련 에러나 정보를 기록함

- DBA에 의해 관리됨.  

- 경로를 바꿀경우 BACKGROUND_DUMP_DEST = ‘C:\...’

 

[TRACE FILE : trc는 추적파일]

- Background Trace file : 백그라운드 프로세스 진행시 발생하는 에러를 감지

- User Trace File : 사용자 프로세스 진행시 작성됨. 서버 프로세스에 의해 정의가능.

(USER_DUMP_DEST, MAX_DUMP_FILE_SIZE 등등 이렇게 나오는 내용들은 모두 파라미터파일에서 설정하는 내용 )

 

[데이터베이스 생성 및 관리]

- 데이터베이스의 목적, 타입, 구조적디자인, 이름을 계획해야 함.

- 수십만개의 데이터를 가져오는것은 쉽지만 정확하게 들어갔는지 확인하는 것은 쉬운 작업이 아님(migration)

디비는 여러개 만들어놓는 것은 가능. 그런데 연결해서 사용하는 것은 1개만 가능. oradata안에 데이터베이스파일 여러개 가능. 이중에 하나를 디폴트값으로 설정해서 연결해서 조회하는 것

 

데이터베이스 생성시 오라클 시스템 환경

- 환경변수 세팅

① ORACLE_BASE : 오라클 설치 프로그램을 저장하고, trc파일 및 데이터 파일을 저장하는 디렉토리의 이름을 기록.

② ORACLE_HOME : 오라클 엔진이 설치되어 있는 위치. 현재 설치하고자 하는 오라클 데이터베이스 서버를 저장할 디렉토리의 이름 기록

③ ORACLE_SID(System IDentifier) : 오라클 데이터베이스 인스턴스명.

- 하나의 하드웨어에 여러 개의 데이터베이스 인스턴스가 존재할 수 잇지만, SID는 개별 인스턴스에 대해 유일한 이름으로 명명되어야 함.

④ ORA_NLS33 : 데이터베이스가 기본 설정이 아닌 다른언어와 character set으로 시작될 경우 제대로 인식 안됨

⑤ PATH : 검색경로

⑥ LD_LIBRARY_PATH

 

 


 

 

[Multiplexing the control file when using spfile.]

 

1. 파라미터파일 spfile로 진행

2. control파일의 위치를 조회하는 쿼리를 sql파일로 저장

 

3. spfile의 위치 변경

 

4. 하드디스크가 별도로 있다라는 가정으로 disk폴더 만들어서 실행함

 

5. @ctl.sql 파일 실행시 변경된 control파일의 위치를 조회됨