'분류 전체보기'에 해당되는 글 2491건

  1. 2009.07.06 [펌] oracle 10g의 CONNECT BY절
  2. 2009.07.06 오라클 Select 해서 Update 하기 1
  3. 2009.07.04 http analyzer
  4. 2009.07.04 [oracle] 오라클 인덱스(index) 설명 및 밸런싱,결합인덱스 생성지침
  5. 2009.07.04 redhat 에 oracle 설치
  6. 2009.07.03 이클립스에서 Log4E 플러그인 사용하기
  7. 2009.07.03 java jar 를 exe 파일로 만들기
  8. 2009.07.03 Red Hat Enterprise Linux 설치 가이드
  9. 2009.07.03 adobe air 개발환경 세팅
  10. 2009.07.03 CDMA TOOL
  11. 2009.07.03 간단한 파일 handling
  12. 2009.07.03 문자셋과 인코딩의 정의
  13. 2009.07.03 Web 개발자를 위한 Firefox 부가 기능 9선
  14. 2009.07.02 Web Hacking 3탄 구멍난 자바스크립트
  15. 2009.07.02 쿠키취야점을 이용한 해킹...
  16. 2009.07.02 오라클 암호화 복호화 초간단 예제(dbms_obfuscation_toolkit 편)
  17. 2009.07.01 마우스 오버시 말풍선
  18. 2009.06.29 자바 파일 복사 코드
  19. 2009.06.29 [Java] FileChannel을 이용해 파일을 복사
  20. 2009.06.27 oracle em 수동시작/수동정지 만들기 1
  21. 2009.06.27 웹개발 문서 모음
  22. 2009.06.27 eclipes 에서 커넥션풀설정 사용 하기(DAO)
  23. 2009.06.27 오라클 어드민 팁
  24. 2009.06.27 오라클 시나리오 : 원인 :INACTIVE한 REDO LOG GROUP 유실
  25. 2009.06.27 오라클9i 데이타베이스 초기화 매개변수(전부) 설명
  26. 2009.06.27 FLASH BACK QUERY
  27. 2009.06.27 RMAN: 백업과 복구 TOOL
  28. 2009.06.27 PFile과 SPFile
  29. 2009.06.27 오라클 종료
  30. 2009.06.27 오라클 종료
02.Oracle/DataBase2009. 7. 6. 17:46
반응형
 

Oracle10g 부터  CONNECT BY 절에서 제공하는

CONNECT_BY_ROOT, SYS_CONNECT_BY_PATH, CONNECT_BY_ISLEAF  기능에 대해서 알아보겠습니다.


CONNECT_BY_ROOT

 - 상관관계 쿼리에서 LEVEL이 0인 최상위 로우의 정보를 얻어 올 수 있습니다.
 
SQL>SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno,
   CONNECT_BY_ROOT  empno "Root empno", level
   FROM emp
   START WITH job='PRESIDENT'
   CONNECT BY PRIOR empno=mgr;
 
ENAME                       EMPNO  Root empno    LEVEL
-------------------- ---------- ----------- ----------
KING                            7839           7839            1
    JONES                     7566           7839            2
        SCOTT                 7788           7839            3
            ADAMS            7876           7839            4
        FORD                   7902           7839            3
            SMITH              7369           7839            4
  
 

SYS_CONNECT_BY_PATH

 - 상관관계 쿼리에서 현재 로우 까지의 PATH 정보를 쉽게 얻어 올 수 있습니다.
 
SQL>COL path FORMAT A40
 
SQL>SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno,
   SYS_CONNECT_BY_PATH(ename, '/') "Path"
   FROM emp
   START WITH job='PRESIDENT'
   CONNECT BY PRIOR empno=mgr;
 
 
 
ENAME                     EMPNO Path
-------------------- ---------- -------------------------------
KING                          7839       /KING
    JONES                   7566       /KING/JONES
        SCOTT               7788       /KING/JONES/SCOTT
            ADAMS          7876       /KING/JONES/SCOTT/ADAMS
        FORD                 7902       /KING/JONES/FORD
            SMITH            7369       /KING/JONES/FORD/SMITH
 
 

CONNECT_BY_ISLEAF

 - 상관관계 쿼리에서 로우의 최하위 레벨 여부를 반환 합니다.
 
SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno,
   CONNECT_BY_ISLEAF "leaf", level
   FROM emp
   START WITH job='PRESIDENT'
   CONNECT BY NOCYCLE  PRIOR empno=mgr;
 
ENAME                     EMPNO     leaf      LEVEL
-------------------- ---------- ---------- ----------
KING                           7839          0          1
    JONES                    7566          0          2
        SCOTT                7788          0          3
            ADAMS           7876          1          4
        FORD                  7902          0          3
            SMITH             7369          1          4



출처 : http://cafe.naver.com/scorpionkim.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=610

Posted by 1010
02.Oracle/DataBase2009. 7. 6. 10:52
반응형
UPDATE book a1
SET ( name, date ) = ( SELECT name, date FROM a2 WHERE a1.bookid = a2.bookid )
WHERE a1.bookid IS NOT NULL
Posted by 1010
반응형
  http://www.ieinspector.com/httpanalyzer/downloadV4/HttpAnalyzerFullV4_Trial.exe

HTTP/HTTPS 트래픽 실시간 체킹이 가능하며 Html 문서 및 CSS, 플래쉬, 텍스트 등에 따른
지연 시간 측정을 표시하며 연결된 URL 및 객체에 대한
Html Header, Content, Cookie, Query String, Post 데이터 등의 정보를 손쉽게 확인할 수 있습니다.

또한 선택된 객체에 대한 Html 태그 정보를 확인 가능하며
MS Excel 스타일의 데이터 필터링 지원 및 자동 데이터 그룹화 등의 기능을 지원합니다.
설명출처 :
www.empas.com
프로그램 : http://www.ieinspector.com/httpanalyzer
사용자 삽입 이미지
Posted by 1010
02.Oracle/DataBase2009. 7. 4. 14:28
반응형

디비는 SQL문의 응답을 빠른 시간안에 내야하죠...

대부분의 SQL문은 select입니다.
검색이 가장 빨라야 하는 거죠.

인덱스라고 하는 것은 검색시의 빠른 응답을 위해서 마련해 놓은 자료구조입니다.
정확히는 B+트리라는 자료구조를 이용하는데요.

테이블의 데이터들은 데이터파일내에 위치하게 되고, 이를 검색하기 위해서는 많은 수의 레코드들을 비교해야 합니다.
그래서 특정 필드들을 이용해서 B+트리를 구성해 놓는 것을 인덱스하고 보시면 되겠습니다.
자료구조에서 트리의 경우는 검색이 빠르다는 장점을 가지고 있죠.

결국 테이블의 데이터를 가지고 인덱스를 만들어서 검색속도를 향상시키는 것입니다.

대부분의 DB에서 기본적으로 primary key는 인덱스를 자동으로 생성하는 경우가 많습니다.

물론 이 인덱스의 종류는 다양합니다. 데이터의 종류나 성향에 따라서 검색속도를 향상시키는 몇가지의 방법이 존재하는 것이죠.

이 인덱스는 검색 쿼리문의 조건절에 명시된 조건절을 따르게 됩니다.
조건이 많은 경우는 디비내의 옵티마이져가 선택한 인덱스를 이용해서 검색을 하게 됩니다.(이는 디비마다의 알고리즘이 다릅니다.)
그래서 오라클의 경우는 옵티마이져가 정한 인덱스가 아닌, 개발자/DBA가 정한 인덱스를 타도록 지정하는 힌트라는 옵션도 있습니다.

결론적으로 인덱스는
1. 검색속도 향상을 위한 것이다.
2. 내부적으로 B+ 트리를 이용한다.
3. 데이터의 성향에 따라서 다양한 인덱스가 존재한다.
4. INSERT/UPDATE/DELETE시는 인덱스가 성능을 약화시킨다.
5. 인덱스가 다수 존재하는 경우 조건절에 따라서 타는 인덱스가 달라진다.

이정도의 특성이 있겠습니다.

[출처] 오라클 index|작성자 디오

------------------------------------------------------------------------------------------------------------------


CREATE [ UNIQUE | BITMAP ] INDEX index_name ON table_name(column_name)

[TABLESPACE tablespace_name];


UNIQUE : UNIQUE Index를 생성한다.

BITMAP : BITMAP Index를 생성한다.

index_name : 생성하고자 하는 인덱스 이름

table_name : 인덱스를 생성하고자 하는 테이블 이름

column_name : 인덱스로 생성하고자 하는 컬럼 이름

tablespace_name : 인덱스가 위치할(생성될) 테이블 스페이스 이름


예) CREATE INDEX idx_emp ON tb_emp (empno);

tb_emp 테이블에 empno 컬럼을 이용하여 idx_emp를 생성한다.


범례)

대문자 : Reserved Word

소문자 : User Define

[ ] : Option, 지정하지 않아도 되거나 생략시 기본 설정값으로 대체됨.

[출처] [오라클]인덱스 생성 [CREATE INDEX]|작성자 이지

----------------------------------------------------------------------------------------------------------------------

-----INDEX

CREATE UNIQUE INDEX "I_ANSWER_ANS" ON "ANSWER"("ANS_CODE", "MEM_CODE", "QST_CODE", "CATE_CODE")
TABLESPACE SPACENAME
INITRANS 2
STORAGE (
  INITIAL 65536
  MINEXTENTS 1
  MAXEXTENTS UNLIMITED
);
-------------------------

SELECT /*+ INDEX_DESC(ANSWER I_ANSWER_ANS) */

--------------------------------------------------------------------------------------------------------------------------


결합인덱스의 생성지침


- 단 하나의 테이블에서 컬럼들을 참조해야 한다
- 최대 16개 컬럼을 생성할 수 있다
- 결합 인덱스의 전체 컬럼 길이는 db_block_size 파라미터의 값을 1/2을 초과하면 안된다.
- 결합 인덱스를 생성할 때는 선택도가 좋은 컬럼을 선행컬럼으로 결정해야한다(즉 앞에 둔다)
- 선행 컬럼을 결정하기 힘든 경우에는 자주 사용되는 컬럼을 선행 컬럼으로 결정한다.
- 결합인덱스의 수가 많으면 많을수록 데이터의 검색속도는 향상될 수 있으나 오히려
  DML문의 수행성능은 저하될 수 있다


index의 분석
-최초로 인덱스를 생성한 이후 테이블에 DML문이 자주 발생하게 되면 밸런스 구조는 깨지고
 좌,우의 구조도 달라지게 된다


 이러한 현상이 발생하면 좋은 성능을 보장해 줄 수 없기 때문에 데이터 베이스 관리자는
 주기적으로 또는 비 주기적으로 밸런싱이 깨진 인덱스를 분석하고 인덱스를 재구성하는 작업을
 해야만 성능을 기대할 수 있다. 인덱스의 각 블록에 저장되어 있는 인덱스 키의 개수가 블록
 마다 틀리게 되면 밸런싱이 깨지게 된다.


SQL> create table big_emp_cp
  2  as
  3  select * from big_emp;

테이블이 생성되었습니다.


SQL> create index i_big_emp_cp_empno
  2  on big_emp_cp(empno);

인덱스가 생성되었습니다.


*인덱스의 밸런싱 구조상태를 확인하는 방법-------------------

SQL> analyze index i_big_emp_cp_empno validate structure;

인덱스가 분석되었습니다.


SQL> select (del_lf_rows_len/ lf_rows_len) * 100 as "Balancing"
  2  from index_stats;

 Balancing
----------
         0   <--완벽한 밸런싱을 유지함


-------------------------------------------------------------
-밸런싱을 깨기위해 행 삭제

SQL> delete big_emp_cp
  2  where empno > 1 and empno < 3000;

2879 행이 삭제되었습니다.


SQL> analyze index i_big_emp_cp_empno validate structure;

인덱스가 분석되었습니다.


SQL> select (del_lf_rows_len/ lf_rows_len) * 100 as "Balancing"
  2  from index_stats;

 Balancing
----------
9.49721286 <--인덱스의 밸런스 정도가 9.49%정도 깨짐


*인덱스의 재구성


-일반적으로 인덱스 밸런싱이 20%정도를 초과하면 성능이 저하될 수 있다고 본다
 좋은 성능을 기대하기 위해서는 반드시 인덱스를 재구성해야 한다.


SQL> alter index i_big_emp_cp_empno rebuild nologging;

인덱스가 변경되었습니다.


SQL> analyze index i_big_emp_cp_empno validate structure;

인덱스가 분석되었습니다.


SQL>  select (del_lf_rows_len/ lf_rows_len) * 100 as "Balancing"
  2   from index_stats;


 Balancing
----------
         0

SQL>


* 불필요한 인덱스 제거


SQL> create index i_big_emp_cp_ename
  2  on big_emp_cp(ename);

인덱스가 생성되었습니다.


SQL> alter index i_big_emp_cp_ename monitoring usage;

인덱스가 변경되었습니다.


SQL> select index_name,used from v$object_usage;

INDEX_NAME                     USE
------------------------------ ---
I_BIG_EMP_CP_ENAME             NO

SQL> alter index i_big_emp_cp_ename nomonitoring usage;

인덱스가 변경되었습니다.

SQL> drop index i_big_emp_cp_ename;

인덱스가 삭제되었습니다.


* v$object_usage 자료사전의 컬럼에 대한 설명


index_name       : 인덱스명
table_name        : 관련 테이블명
monitoring          : 모니터링 기능 설정 여부(on/off)
used                 : 인덱스의 사용 여부
start_monitoring  : 모니터링 설정 시작 시간
end_monitoring   : 모니터링 해체 시간


SQL> desc v$object_usage;


 이름                                                           널?      유형
 -------------------------------------------------------------------------------------
 INDEX_NAME                                                     NOT NULL VARCHAR2(30)
 TABLE_NAME                                                     NOT NULL VARCHAR2(30)
 MONITORING                                                     VARCHAR2(3)
 USED                                                           VARCHAR2(3)
 START_MONITORING                                               VARCHAR2(19)
 END_MONITORING                                                 VARCHAR2(19)


* primary key에 의해 만들어지는 인덱스는 테이블이 위치하는 테이블스페이스와 분리한다.


SQL> create table empcp
  2  (empno number(3)
  3  ,ename varchar2(10)
  4  ,sal number
  5  ,constraint empcp_empno_pk primary key(empno) using index tablespace indx
  6  )tablespace users;

테이블이 생성되었습니다.


SQL> select index_name,index_type,tablespace_name
  2  from user_indexes
  3  where table_name = 'EMPCP';


INDEX_NAME                     INDEX_TYPE                  TABLESPACE_NAME
------------------------------ --------------------------- ------------------------------
EMPCP_EMPNO_PK                 NORMAL                      INDX

Posted by 1010
02.Oracle/DataBase2009. 7. 4. 11:18
반응형

1.       oracle 다운로드 및 압축해제

2.       oracle 유저생성 및 권한부여

3.       pre-install RPM

4.       jdk 설치

5.       공유메모리 및 세마포 설정

6.       오라클 사용자 초기화 파일 구성

7.       오라클 셋업

8.       Database 시작과 종료 TIP & TECH

 

1. oracle 다운로드 및 압축해제

오라클을 설치하시려면 오라클 파일 혹은 시디가 있어야 겠죠

시디면 상관없지만 파일을 받아서 설치 할 경우 아래를 따라하세요

 

zcat ship_lnx_920_disk1.cpio.gz | cpio idmv

zcat ship_lnx_920_disk2.cpio.gz | cpio -idmv

zcat ship_lnx_920_disk3.cpio.gz | cpio -idmv

disk1, disk2, disk3이 생기고 생긴 파일들은 폴더를 하나 생성해서 이동시킨다

여기서는 /home/oracle로 이동

 

시디의 경우에는 바탕화면에 아이콘이 생성됩니다.

 

2. oracle 유저생성 및 권한부여

아래의 명령어로 oracle 유저생성 및 권한부여를 하셔야 됩니다

groupadd dba

useradd oracle g dba

chown R oracle.dba /home/oracle

chmod 777 / home

chmod 777 /home/oracle

 

3. pre-install RPM

 

오라클 설치시에 반드시 필요한 패키지들로 보통 레드햇 9.0을 기준으로

풀패키지 설치시 대부분 설치가 되어있습니다.

 

그러나 빨간 글씨의 패키지는 오라클 메타링크에서 다운을 받으셔야 되는데

메타링크 계정을 만드는 방법이 어렵습니다.

문의주시면 파일을 보내드릴께요

 

* Required OS Components

            - compat-db-4.1.25-9

            - compat-gcc-32-3.2.3-47.3

            - compat-gcc-32-c++-3.2.3-47.3

            - compat-oracle-rhel4-1.0-3

            - compat-libcwait-2.0-1

            - compat-libgcc-296-2.96-132.7.2

            - compat-libstdc++-296-2.96-132.7.2

            - compat-libstdc++-33-3.2.3-47.3

            - gcc-3.4.3-9.EL4

            - gcc-c++-3.4.3-9.EL4

            - gnome-libs-1.4.1.2.90-44

            - gnome-libs-devel-1.4.1.2.90-44

            - libaio-devel-0.3.102-1

            - libaio-0.3.102-1

            - make-3.80-5

            - openmotif21-2.1.30-11

            - xorg-x11-deprecated-libs-devel-6.8.1-23.EL

            - xorg-x11-deprecated-libs-6.8.1-23.EL

 

The compat-oracle-rhel4-1.0-3 and compat-libcwait-2.0-1 packages are available

from Oracle Metalink

While installing the patch you might receive the warning. It is a normal behaviour.

 

. 의존성이 있는 RPM들은 같이 설치하여야 합니다.

보통 풀패키지로 설치 했을 때 대부분의 패키지들이 깔리지만 오라클의 메타링크에서 제공하는 패키지는 다운을 받아서 설치해야 합니다.

 

레드햇 9에서는

xorg-x11-deprecated-libs-devel-6.8.1-23.EL

compat-libgcc-296-2.96-132.7.2

openmotif21-2.1.30-11
위 패키지를 설치 안해도 잘 깔린다고 합니다.

 

4. jdk설치

 

오라클 설치시 반드시는 아니지만 여러 오류를 피해가시고 싶으면 jdk를 설치하시면 됩니다

다운로드 :

RPM in self-extracting file(j2sdk-1_4_2_08-linux-i586-rpm.bin, 33.64M)

chmod +x를 주고 설치

rpm Uvh로 설치

/usr/java/j2sdk-1_4_2_08에서 /usr/local/j2sdk-1_4_2_08로 이동후

$/usr/local/에서 ln s j2sdk-1_4_2_08 java

/etc/profile에서 다음 내용을 설정

# For java

export JAVA_HOME=/usr/local/java

export PATH=$JAVA_HOME/bin:.:$PATH

 

5. 공유메모리 및 세마포 설정

오라클사가 제공한 커널 파라미터 값에 대한 권고값

파라미터

권장값

설명

SEMMNI

100

시스템 내 세마포어 셋의 최대 개수, 동시에 사용될 수 있는 세마포어의 최대 개수를 결정한다.

SEMMNS

256

시스템 내 세마포어 전체 개수

SEMMSL

100

한 개의 세마포어 셋에 존재할 수 있는 세마포어의 최대개수.

오라클 프로세스의 최대개수에 10개정도를 더한 값으로 설정한다. (오라클 initSID.ora 파일 내의 processes 파라미터)

SEMOPM

100

시스템 내 semop를 호출할 때마다 operation의 최대 개수

SEMVMX

32767

세마포어의 최대값을 결정한다.

SHMMAX

2147483648

한 개의 공유 메모리 세그먼트의 최대 크기 (단위: 바이트)

SHMMIN

1

한 개의 공유 메모리 세그먼트의 최소 크기 (단위: 바이트)

SHMMNI

100

공유 메모리 세그먼트의 최대 개수

SHMSEG

4096

한 개의 프로세스에 연결될 수 있는 공유 메모리 세그먼트의 최대값

** 공유 메모리와 세마포어의 개수 알아보기**

원래 공유메모리와 세마포어를 변경한 값을 적용하여 커널을 재컴파일 해야하지만

여건이 되지 않는 경우 소프트웨어적으로 공유메모리와 세마포어를 변경할 수 있다.

[root@ora9 kernel]# vi /etc/sysctl.conf

가장 마지막에 다음을 추가합니다.

kernel.shmmax = 2147483648

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range=1024 65000

시스템 리소스를 제한하는 설정파일에 다음을 추가한다.

[root@ora9 kernel]# vi /etc/security/limits.conf

가장 마지막에 다음을 추가합니다.

oracle soft nofile 65536

oracle hard nofile 65536

oracle soft nproc 16384

oracle hard nproc 16384

이 후 재부팅을 권장합니다.

 

6. 오라클 사용자 초기화 파일구성

oracle$ vi .bash_profile

 

# for ORACLE

 

export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
export ORACLE_OWNER=oracle

export ORACLE_SID=ORA92
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export LD_ASSUME_KERNEL=2.4.1

export THREADS_FLAG=native

export TEMPDIR=/tmp

export EDITOR=vi
export PATH=$PATH:$ORACLE_HOME/bin
umask 022

 

# for DBA/User

 

alias oh='cd $ORACLE_HOME'

alias ob='cd $ORACLE_BASE'

alias cls='clear'

alias ls=’ls -F’

alias rm=’rm –i’

umask 022

 

# for java

 

export JAVA_HOME="/usr/jdk"

CLASSPATH=".:$JAVA_HOME/lib/tools.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/jdbc/lib/classes12.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME jdbc/lib/nls_charset12.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/rdbms/jlib/xsu12.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/lib/xmlparserv2.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/lib/classgen.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/lib/oraclexsql.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/lib/xmlplsql.jar"

CLASSPATH="$CLASSPATH:$ORACLE_HOME/lib/xschema.jar"

export CLASSPATH

 

오라클 환경 설정 항목과 그에 대한 설명

설정 이름

설정 설명

ORACLE_BASE

오라클 설치 프로그램인 OUI를 저장하고 오라클 트레이스 파일 및 데이터 파일을 저장하는 디렉토리의 이름을 기록하는 오라클 환경변수 명이다.

ORACLE_HOME

현재 설치하고자 하는 오라클 데이터베이스 서버를 저장할 디렉토리명을 기록한다.

ORACLE_OWNER

오라클 제품을 컨트롤할 OS 시스템 레벨의 유저가 누구인가를 설정하는 오라클 환경변수로, 앞 단락에서 생성한 oracle 사용자를 지정한다.

LD_LIBRARY_PATH

오라클 제품을 사용할 때 사용되는 오라클 공유 라이브러리들의 경로를 나타낸다. 반드시 $ORACLE_HOME/lib를 포함하여 설정한다./

ORACLE_SID

오라클 서버 인스턴스의 이름인 Oracle System Identifier(SID)를 설정한다. 하나의 하드웨어에 여러 개의 데이터베이스 인스턴스가 존재할 수 있지만, SID는 개별 인스턴스에 대해 유일한 이름으로 명명되어야 한다.

PATH

$ORACLE_HOME/bin을 포함하여 설정한다.

NLS_LANG

오라클 데이터베이스의 문자 셋을 설정한다. 여러분이 생성하게 될 데이터베이스의 문자셋과 일치해야 한다.

TNS_ADMIN

Oracle Network를 구성할 때 필요한 설정파일의 위치를 지정하는 것으로, insterner.ora, tnsnames.ora, sqlnet.ora 파일들이 위치하고 있다.

ORA_NLS33

NLS_LANG 항목에 설정된 문자 셋대로 오라클 데이터베이스에서 각국의 언어 및 도량형을 제공하는 데 필요한 정보를 갖고 있는 파일들의 위치를 지정한다.

TEMPDIR

오라클 데이터베이스가 운영 중에 임시 파일들을 위치시킬 장소를 지정한다.

EDITOR

SQL *Plus 상에서 edit명령어를 사용했을 때 실행할 수 있는 OS 레벨의 에디터를 지칭하는 것으로, 여러분에게 익숙할 만한 pico, vi를 설정한다.

LANG

데이터베이스의 문자 셋을 결정하는 NLS_LANG과 달리, 현재 사용자의 세션에서의 문자 셋을 결정하는 시스템 환경변수이다. 필자와 같이 ko_KR.eucKR를 설정하면 한글화된 시스템 메시지를 볼 수 있으며, 오라클에서 제공하는 모든 자바 툴에서 한글화 메시지를 바로 볼 수 있다.

DISPLAY

Oracle Universal Installer 등 오라클에서 제공하는 자바로 만들어진 여러 가지 툴이 구동하기 위한 X윈도우 환경을 설정하기 위한 것으로, 사용자의 서버 명이나 IP를 설정한다.

LD_ASSUME_KERNEL

KERNEL 버전을 다른것으로 보이게 하기 위한 환경 변수다.

THREADS_FLAG

JAVA Thread 실행과 관련이 있는 값이다.

 

7. 오라클 셋업

x-windows oracle계정으로 로그인

oracle에서 ./runinstaller

언어가 깨지거나 실행이 안될 경우에는 다음명령을 실행

unset LANG

Unix Group Name-> oinstall 또는 dba

sid-> 일반적으로 ora9 혹은 ora92

Global Database Name -> ora9.도메인

문자셋은 [6] 사용자 초기화파일에서 설정한 것과 같아야 한다.

export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601

설치 중간에 orainstRoot.sh 팝업이 나올시

새창에서

su root

cd /tmp

./orainstRoot.sh실행

완료 후 진행

설치 진행 100% 후에

*/oracle/ora92/root.sh 실행 대화상자 팝업

$su root

#cd / oracle/ora92

#./root.sh

시스템 기본 디렉토리를 물으면

/usr/bin으로 설정

 

 

8. Database 시작과 종료

                    glibc 관련 rpm 패키지 원상복구하기

[root@ora9 /]# cd /usr/local/src/

[root@ora9 src]# rpm -Uvh --nodeps glibc-common-2.3.2-11.9.i386.rpm

[root@ora9 src]# rpm -Uvh --nodeps glibc-devel-2.3.2-11.9.i386.rpm

[root@ora9 src]# rpm -Uvh --nodeps glibc-2.3.2-11.9.i386.rpm

 

                    오라클 데이터베이스 시작하기

Database 의 시작과 종료는 반드시!! Oracle 계정으로 수행해야 합니다.

[root@ora9 src]# su oracle

[oracle@ora9 src]$ sqlplus /nolog

SQL> connect / as sysdba

SQL> startup

오라클 데이터베이스를 시작하고 종료하기 위해서는 OS에서의 인증과 암호 파일을 생성하는

툴인 orapwd를 통해야 한다. 그리고 sys 스키마의 권한인 sysdba 권한과 public 스키마

권한인 sysoper 권한의 특별한 시스템 권한을 소유한 사용자이어야 한다.

· sysdba : 데이터베이스 시작/종료, 아카이브 및 복구 작업, ALTER DATABASE OPEN,

MOUNT, BACKUP, CHANGE, CHARACHER SET 절의 명령어 실행

· sysoper : 데이터베이스 시작/종료, 아카이브 및 복구 작업, ALTER DATABASE OPEN,

MOUNT, BACKUP 절의 명령어 실행

SQL> SELECT * FROM v$version;

현재의 오라클 데이터베이스 인스턴스의 버전 확인하기

 

                    오라클 데이터베이스 종료하기

[oracle@ora9 src]$ sqlplus /nolog

SQL> connect / as sysdba

SQL> shutdown immediate

SQL> exit

 

                    oratab 파일 편집하기

오라클 데이터베이스를 /etc/rc.d/ini.d에 스크립트로 설정하여 자동으로 실행하게 하여봅시다.

[root@ora9 src]# vi /etc/oratab

다음 부분을 수정 ([SID], [ORACLE_HOME], [자동실행/종료 플래그]로 구성되어 있습니다.)

ora9:/opt/oracle/product/9.2.0.1.0:N è ora9:/opt/oracle/product/9.2.0.1.0:Y

 

                    Parameter 파일 링크

xxxxxxxxxxxx은 일정치 않은 숫자 입니다.

[root @ora9 /]# cp /opt/oracle/admin/ora9/pfile/initora9.ora.xxxxxxxxxxxx \

/opt/oracle/product/9.2.0.1.0/dbs/initora9.ora

 

                    s/etc/rc.d/init.d 에 등록하기

oracle9i 스크립트를 /etc/rc.d/init.d 에 복사합니다.

[root@ora9 src]# cp /usr/local/src/oracle-9.2.0.1.0 /etc/rc.d/init.d/oracle9i

oracle9i에 실행권한을 부여합니다.

[root@ora9 src]# chmod 755 /etc/rc.d/init.d/oracle9i

시스템에 oarcle9i 데몬을 등록한다.

[root@ora9 src]# chkconfig --add oracle9i

[root@ora9 src]# chkconfig --level 2345 oracle9i on

Oracle Database를 재시작 시켜본 후, LISTENER 데몬이 띄워져 잇는지 확인합니다.

[root@ora9 src]# /etc/rc.d/init.d/oracle9i start

[root@ora9 src]# ps ax | grep LISTENER

 

 

설치 로그보기

tail f $ORA_HOME/app/oracle/product/orainventory/logs/installactions.log

 

Oracle 삭제

$ORACLE_HOME 디렉토리에 있는 설치파일들 전부삭제

/etc 밑에 orainst.loc, oratab 삭제

/usr/local/bin/oraenv 파일 삭제

/tmp 디렉토리에서 관련파일 삭제

# rm /etc/oratab /etc/emtab

이후 다시 재설치 하시면 됩니다.

 

출처가 어디인지는 잊어버렸습니다...

원작자분께 죄송하단 말씀을..^^;;

 

기존 내용에 제가 이해하기 쉽도록 내용을 추가하였습니다.

 

그리고 초보가 한번에 따라하기는 어렵습니다.

나름대로의 시행착오를 겪어보셔야 될 것입니다.

^^ 잘되시길 바랍니다.

Posted by 1010
반응형
이클립스에서 Log4E 플러그인 사용하기
Posted by 1010
01.JAVA/Java2009. 7. 3. 14:30
반응형

자바도 간단히 exe파일로 실행할 수 있다? 없다?

답은 있다!!

간단한 프로젝트 수행과정에서 실행파일을 exe로 해주세요 라는 요구에 이런저런 자료를 찾다가 드뎌 찾았다.
도움을 주신 승용이형 감솨~!

필요한 파일 : jsmooth (압축파일은 제일 하단에 첨부해 놨으니 모두읽어보신 후에 다운바드세요);;

먼저 C:\Test 폴더에 패키지 및 Class 파일이 있다는 가정하에 진행하겠다.

1. jar 파일을 생성한다.

2. jar 파일에 main 클래스를 지정한다.

3. jsmooth 파일을 이용해서 jar 파일을 exe 파일로 변환한다.


1. jar 파일을 생성한다.

jar

jar 프로그램의 기본적인 명령 순서는 다음과 같다.
jar <option> <target_file> <src_files>

[명령 프롬프트]

C:\Test>jar cvf ImageViewer.jar .

(마지막 점(dot)에 주의.)


2. jar 파일에 main 클래스를 지정한다


여기서 생선된 jar 파일이 실행되지 않는 이유는 main 메소드를 찾지 못하기 때문이다.


jar 파일의 압축을 풀어보자.

META-INF 폴더 안에 MANIFEST.MF 파일이 있는데 이것을 수정해줘야한다.


Manifest-Version: 1.0
Created-By: 1.5.0_11 (Sun Microsystems Inc.)


Manifest-Version: 1.0
Created-By: 1.5.0_11 (Sun Microsystems Inc.)
Main-Class: ImageViewer //추가

(자신의 메인 클래스 이름을 적어야 한다)

주의) 공백도 일치해야 한다...


[명령 프롬프트]

C:\Test>jar umf manifest.mf ImageViewer.jar

여기까지 성공했다면, ImageViewer.jar 만 클릭해도 바로 실행될것이다..!!

MANIFEST.MF 파일을 *.jar 파일과 같은 경로에 위치 시킨다.


3. jsmooth 파일을 이용해서 jar 파일을 exe 파일로 변환한다.

블로그 목록의 jsmooth를 다운로드 받은 후에 압축을 푼 후에, jsmoothgen.exe 를 실행한다.


사용자 삽입 이미지
 
 
[오른쪽의 화살표 버튼을 눌러서 Window Wrapper 를 선택한다]
 
윈도우 어플리케이션 : 콘솔에 뜨는 메시지 안보임
콘솔 : 콘솔에 뜨는 메시가 보임
 
사용자 삽입 이미지
 
 
[바이너리는 만들어질 실행 파일의 이름을 적어준다]
 
필요하면 아이콘도 추가 -
 
 
사용자 삽입 이미지
 
 
 
[메인 클래스에는 main 클래스 이름을 입력한다]
[꾸겨넣는 jar 에는 아까 압축한 jar 항목을 입력한다]
[클래스패스에는 Source 클래스 파일 경로를 적어준다.] - 없어도 되기는 함.
 
사용자 삽입 이미지
 
 

[Version 을 기록한다]

사용자 삽입 이미지
 
[Java 프로퍼티들을 추가한다. - 없어도 상관없다.]
 
[메뉴의 프로젝트-컴파일] 로 컴파일 한다.
문제 없으면 EXE가 생성된다.
 
 
더 자세한 사항은 아래 사이트를 방문하길 바란다.
나도 여기 보고 정리한거..
 
Posted by 1010
61.Linux2009. 7. 3. 13:46
반응형

Red Hat Enterprise Linux 설치 가이드

초록

설치 가이드는 Red Hat Enterprise Linux 5.0.0 설치에 관한 정보를 제공합니다.


차례

머리글
1. 아키텍쳐 관련 정보
2. 문서 약정
3. 앞으로 추가될 사항
3.1. 여러분의 의견을 기다리고 있습니다
4. 다른 메뉴얼 찾기
I. x86, AMD64, Intel 64 및 Itanium- 설치 및 부팅하기
1. Itanium 시스템에 대한 정보
1.1. Itanium 시스템 설치 개요
1.2. Itanium 시스템 — EFI 쉘
1.2.1. Itanium 시스템 — EFI 장치 이름들
1.2.2. Itanium 시스템 — EFI 시스템 파티션
2. 시작 단계
2.1. 업그레이드 또는 설치 여부 결정하기
2.2. 하드웨어 호환성
2.3. 충분한 디스크 공간은?
2.4. CD-ROM 또는 DVD를 사용하여 설치하시겠습니까?
2.4.1. 그 외 부팅 방법
2.4.2. 설치 부팅 CD-ROM 만들기
2.5. 네트워크 설치 준비 과정
2.5.1. FTP 및 HTTP 설치 준비 과정
2.5.2. NFS 설치 준비 과정
2.6. 하드 드라이브 설치 준비 과정
3. 시스템 사양표
4. Intel 및 AMD 시스템에 설치하기
4.1. 그래픽 설치 프로그램 사용자 인터페이스
4.1.1. 가상 콘솔에 대한 주의 사항
4.2. 텍스트 모드 설치 프로그램 사용자 인터페이스
4.2.1. 키보드를 사용하여 설치 진행하기
4.3. 설치 프로그램 시작하기
4.3.1. x86, AMD64, and Intel 64 시스템에서 설치 프로그램을 부팅하기
4.3.2. Itanium 시스템에서 설치 프로그램 부팅하기
4.3.3. 추가 부트 옵션
4.4. 설치 방법 선택하기
4.5. DVD/CD-ROM으로부터 설치
4.5.1. IDE CD-ROM이 발견되지 않을 때는?
4.6. 하드 드라이브로 부터 설치하기
4.7. 네트워크 설치 수행
4.8. NFS로 설치하기
4.9. FTP로 설치하기
4.10. HTTP로 설치하기
4.11. Red Hat Enterprise Linux를 선택해 주셔서 감사합니다!
4.12. 언어 선택
4.13. 키보드 설정
4.14. 설치 번호 입력
4.15. 디스크 파티션 설정
4.16. 고급 저장 옵션
4.17. 디폴트 레이아웃 생성
4.18. 시스템 파티션
4.18.1. 그래픽으로 하드 드라이브 보기
4.18.2. Disk Druid 버튼
4.18.3. 파티션 영역
4.18.4. 추천된 파티션 나누기 계획
4.18.5. 파티션 추가하기
4.18.6. 파티션 편집
4.18.7. 파티션 제거
4.19. x86, AMD64, Intel 64 부트로더 설정
4.19.1. 고급 부트로더 설정
4.19.2. 복구 모드
4.19.3. 부트로더 대안
4.19.4. SMP 마더보드와 GRUB
4.20. 네트워크 설정
4.21. 시간대 설정
4.22. 루트 암호 설정
4.23. 패키지 그룹 선택
4.24. 설치 준비하기
4.24.1. 설치 준비하기
4.25. 패키지 설치
4.26. 설치 완료
4.27. Itanium 시스템 — 컴퓨터 부팅과 설치 후 설정
4.27.1. 설치 후 부트로더 옵션들
4.27.2. Red Hat Enterprise Linux를 자동으로 부팅하기
5. Red Hat Enterprise Linux 제거하기
6. Intel 또는 AMD 시스템에 설치시 문제 해결
6.1. Red Hat Enterprise Linux로 부팅할 수 없음
6.1.1. RAID 카드로 부팅할 수 없습니까?
6.1.2. 시스템이 Signal 11 오류를 보입니까?
6.2. 설치를 시작할 때 나타나는 문제 해결
6.2.1. 그래픽 설치로 부팅할 때 문제들
6.3. 설치 중의 문제 해결
6.3.1. Red Hat Enterprise Linux를 설치할 장치를 찾지 못함 오류 메시지
6.3.2. 디스켓 드라이브 없이 트래이스백(traceback) 메시지 저장하기
6.3.3. 파티션 테이블에서 발생하는 문제
6.3.4. 남은 공간 사용하기
6.3.5. 그 외 파티션 문제들
6.3.6. Itanium 시스템의 다른 파티션 문제들
6.3.7. Python 오류가 보입니까?
6.4. 설치 후의 문제 해결
6.4.1. x86-기반 시스템에서 그래픽 GRUB 화면에 문제가 있습니까?
6.4.2. 그래픽 환경으로 부트하기
6.4.3. X 윈도우 시스템 (GUI)의 문제점들
6.4.4. 일반 사용자가 로그인시 X 서버가 크래시되는 문제
6.4.5. 로그인 시의 문제
6.4.6. RAM이 인식되지 않습니까?
6.4.7. 프린터가 작동하지 않을때
6.4.8. 사운드 설정 시 문제들
6.4.9. 시작할 때 Apache-기반 httpd 서비스와 Sendmail이 멈춤
7. Intel 및 AMD 시스템에 대한 드라이버 매체
7.1. 드라이버 매체가 필요한 이유?
7.2. 드라이버 매체란 무엇입니까?
7.3. 드라이버 매체를 어디서 얻을 수 있습니까?
7.3.1. 이미지 파일에서 드라이버 디스켓 만들기
7.4. 설치 중 드라이버 이미지 사용하기
8. Intel 및 AMD 시스템에 대한 추가 부트 옵션
9. GRUB 부트로더
9.1. 부트로더 및 시스템 아키텍쳐
9.2. GRUB
9.2.1. GRUB 및 x86 부트 프로세스
9.2.2. GRUB의 기능
9.3. GRUB 설치하기
9.4. GRUB 용어
9.4.1. 장치 이름
9.4.2. 파일명 및 블록리스트
9.4.3. Root 파일 시스템 및 GRUB
9.5. GRUB 인터페이스
9.5.1. 인터페이스를 읽어오는 순서
9.6. GRUB 명령어
9.7. GRUB 메뉴 설정 파일
9.7.1. 설정 파일 구조
9.7.2. 설정 파일 지시문
9.8. 부팅시 런레벨 변경하기
9.9. 추가 자료
9.9.1. 설치된 문서 자료
9.9.2. 유용한 웹사이트
9.9.3. 관련 서적
10. Itanium과 리눅스에 대한 추가 자료
II. IBM POWER 아키텍쳐 - 설치 및 부팅하기
11. 시작 단계
11.1. 업그레이드 또는 설치 여부 결정하기
11.2. IBM eServer System p 및 System i 준비 과정
11.3. 충분한 디스크 공간은?
11.4. CD-ROM 또는 DVD를 사용한 설치 방법
11.5. 네트워크 설치 준비 과정
11.5.1. FTP 및 HTTP 설치 준비 과정
11.5.2. NFS 설치 준비 과정
11.6. 하드 드라이브 설치 준비 과정
12. IBM System i 및 IBM System p 시스템에 설치하기
12.1. 그래픽 설치 프로그램 사용자 인터페이스
12.2. IBM System i 또는 IBM System p 설치 프로그램 부팅하기
12.3. 리눅스 가상 콘솔에 관한 정보
12.4. HMC vterm 사용법
12.5. 텍스트 모드 설치 프로그램 사용자 인터페이스
12.5.1. 키보드를 사용하여 설치 진행하기
12.6. 설치 시작하기
12.6.1. DVD/CD-ROM으로부터 설치
12.7. 하드 드라이브로 부터 설치하기
12.8. 네트워크 설치 수행
12.9. NFS로 설치하기
12.10. FTP로 설치하기
12.11. HTTP로 설치하기
12.12. Red Hat Enterprise Linux를 선택해 주셔서 감사합니다!
12.13. 언어 선택
12.14. 키보드 설정
12.15. 설치 번호 입력
12.16. 디스크 파티션 설정
12.17. 고급 저장 옵션
12.18. 디폴트 레이아웃 생성
12.19. 시스템 파티션
12.19.1. 그래픽으로 하드 드라이브 보기
12.19.2. Disk Druid 버튼
12.19.3. 파티션 영역
12.19.4. 추천된 파티션 나누기 계획
12.19.5. 파티션 추가하기
12.19.6. 파티션 편집
12.20. 네트워크 설정
12.21. 시간대 설정
12.22. 루트 암호 설정
12.23. 패키지 그룹 선택
12.24. 설치 준비하기
12.24.1. 설치 준비하기
12.25. 패키지 설치
12.26. 설치 완료
13. IBM POWER 시스템용 드라이버 매체
13.1. 드라이버 매체가 필요한 이유?
13.1.1. 드라이버 매체란 무엇입니까?
13.1.2. 드라이버 매체를 어디서 얻을 수 있습니까?
13.1.3. 설치 중 드라이버 이미지 사용하기
14. IBM POWER 시스템에 설치시 문제 해결
14.1. Red Hat Enterprise Linux로 부팅할 수 없음
14.1.1. 시스템이 Signal 11 오류를 보입니까?
14.2. 설치를 시작할 때 나타나는 문제 해결
14.2.1. 그래픽 설치로 부팅할 때 문제들
14.3. 설치 중의 문제 해결
14.3.1. Red Hat Enterprise Linux를 설치할 장치를 찾지 못함 오류 메시지
14.3.2. 디스켓 드라이브 없이 트래이스백(traceback) 메시지 저장하기
14.3.3. 파티션 테이블에서 발생하는 문제
14.3.4. IBM POWER 시스템에서 발생 가능한 파티션 관련 문제점
14.3.5. Python 오류가 보입니까?
14.4. 설치 후의 문제 해결
14.4.1. *NWSSTG에서 IPL (초기 프로그램 로드)하는데 실패
14.4.2. 그래픽 환경으로 부트하기
14.4.3. X 윈도우 시스템 (GUI)의 문제점들
14.4.4. 일반 사용자가 로그인시 X 서버가 크래시되는 문제
14.4.5. 로그인 시의 문제
14.4.6. 프린터가 작동하지 않을때
14.4.7. 시작할 때 Apache-기반 httpd 서비스와 Sendmail이 멈춤
15. IBM Power 시스템에 대한 추가 부트 옵션
III. IBM System z 아키텍쳐 - 설치 및 부팅하기
16. 시작 단계
16.1. 설치-이전
16.2. 설치 노트를 위한 추가 System z 하드웨어 준비
16.3. 부팅 방법 개요
16.4. 네트워크 설치 준비 과정
16.4.1. FTP 및 HTTP 설치 준비 과정
16.4.2. NFS 설치 준비 과정
16.5. 하드 드라이브 설치 준비 과정
16.6. z/VM에서 설치하기
16.7. Red Hat Enterprise Linux LPAR CD를 사용하여 LPAR 설치하기
16.8. System z CD-ROM에 해당하는 Red Hat Enterprise Linux없이 LPAR에서 설치하기
16.9. LPAR에서 설치하기 (기본 절차)
16.10. 충분한 디스크 공간은?
17. IBM System z 시스템 상에 설치하기
17.1. 그래픽 설치 프로그램 사용자 인터페이스
17.2. 텍스트 모드 설치 프로그램 사용자 인터페이스
17.2.1. 키보드를 사용하여 설치 진행하기
17.3. 설치 프로그램 실행하기
17.3.1. X11 전송 기능을 사용하여 설치하기
17.3.2. VNC를 사용하여 설치하기
17.4. 하드 드라이브 (DASD)로 부터 설치하기
17.5. NFS로 설치하기
17.6. FTP로 설치하기
17.7. HTTP로 설치하기
17.8. Red Hat Enterprise Linux를 선택해 주셔서 감사합니다!
17.9. 언어 선택
17.10. 설치 번호 입력
17.11. 디스크 파티션 설정
17.12. 고급 저장 옵션
17.12.1. FCP 장치
17.13. 디폴트 레이아웃 생성
17.14. 시스템 파티션
17.14.1. 그래픽으로 DASD 장치 보기
17.14.2. Disk Druid 버튼
17.14.3. 파티션 영역
17.14.4. 추천된 파티션 나누기 계획
17.14.5. 파티션 편집
17.15. 네트워크 설정
17.16. 시간대 설정
17.17. 루트 암호 설정
17.18. 패키지 그룹 선택
17.19. 설치 준비하기
17.19.1. 설치 준비하기
17.20. 패키지 설치
17.21. 설치 완료
18. Red Hat Enterprise Linux 제거하기
19. 예시 매개 변수 파일들
20. 추가 부트 옵션
21. IBM System z 시스템에 설치시 문제 해결
21.1. Red Hat Enterprise Linux로 부팅할 수 없음
21.1.1. 시스템이 Signal 11 오류를 보입니까?
21.2. 설치 중의 문제 해결
21.2.1. Red Hat Enterprise Linux를 설치할 장치를 찾지 못함 오류 메시지
21.2.2. 파티션 테이블에서 발생하는 문제
21.2.3. 그 외 파티션 문제들
21.2.4. Python 오류가 보입니까?
21.3. 설치 후의 문제 해결
21.3.1. 원격 그래픽 데스크탑과 XDMCP
21.3.2. 로그인 시의 문제
21.3.3. 프린터가 작동하지 않을때
21.3.4. 시작할 때 Apache-기반 httpd 서비스와 Sendmail이 멈춤
22. IBM System z 사용자를 위한 추가 정보
22.1. sysfs 파일 시스템
22.2. zFCP 드라이버 사용법
22.3. mdadm 명령을 사용하여 RAID 기반, 멀티패스 스토리지를 설정하는 방법
22.3.1. mdadm를 사용하여 RAID 장치 생성하기
22.3.2. mdadm를 사용하여 멀티패스 장치 생성하기
22.4. SCSI 장치에서 IPL(초기 프로그램 적재) 설정하기
22.4.1. SCSI 디스크 IPL(초기 프로그램 적재)하기
22.5. DASD 추가하기
22.6. 네트워크 장치 추가하기
22.6.1. qeth 장치 추가하기
22.6.2. 네트워크 장치를 추가하는 방법에 대한 간략한 소개
22.7. 커널 관련 정보
IV. 일반적인 사항
23. 현재 시스템 업그레이드
23.1. 업그레이드 또는 재설치하기 선택
23.2. 시스템 업그레이드
24. 레드햇 네트워크에 구입하신 제품을 등록하십시오
24.1. RHN 등록
24.1.1. Red Hat 로그인 아이디 입력하기
24.1.2. 설치 번호를 입력하십시오
24.1.3. 시스템을 연결하십시오
25. 디스크 파티션 소개
25.1. 하드 디스크 기본 개념
25.1.1. 중요한 것은 기록 내용 보다는 그것을 기록하는 방식입니다
25.1.2. 파티션: 드라이브 한 개를 여러 개로 나누기
25.1.3. 파티션 내의 파티션 — 확장된 파티션 개요
25.1.4. Red Hat Enterprise Linux를 위한 공간 만들기
25.1.5. 파티션 이름 지정 스키마
25.1.6. 디스크 파티션과 다른 운영 체제들
25.1.7. 디스크 파티션과 마운트 지점
25.1.8. 파티션 수
V. 기초 시스템 복구
26. 기초 시스템 복구
26.1. 자주 발생하는 문제들
26.1.1. Red Hat Enterprise Linux로 부팅할 수 없는 경우
26.1.2. 하드웨어/소프트웨어 문제
26.1.3. 루트 암호
26.2. 복구 모드로 부팅하기
26.2.1. 부트로더 재설치하기
26.3. 단독 사용자 모드로 부팅하기
26.4. 비상 모드로 부팅하기
27. POWER 시스템 복구 모드
27.1. 복구 모드에서 SCSI 유틸리티를 사용시 특별히 고려해야할 사항들
VI. 고급 설치 옵션 및 배포
28. 킥스타트 설치
28.1. 킥스타트 설치란?
28.2. 킥스타트 설치 방법은?
28.3. 킥스타트 파일 만들기
28.4. 킥스타트 옵션
28.4.1. 고급 파티션의 예
28.5. 패키지 선택
28.6. 설치전 스크립트
28.6.1. 예시
28.7. 설치후 스크립트
28.7.1. 예시
28.8. 킥스타트 파일을 저장할 위치
28.8.1. 킥스타트 부팅 디스켓 만들기
28.8.2. 네트워크 기반 킥스타트 설치
28.9. 설치 트리 위치
28.10. 킥스타트 설치 시작하기
29. 킥스타트 설정 프로그램
29.1. 기본 설정
29.2. 설치 방법
29.3. 부트로더 옵션
29.4. 파티션 정보
29.4.1. 파티션 생성하기
29.5. 네트워크 설정
29.6. 인증
29.7. 방화벽 설정
29.7.1. SELinux 설정
29.8. 화면 설정
29.8.1. 일반
29.8.2. 비디오 카드
29.8.3. 모니터
29.9. 패키지 선택
29.10. 설치-이전 스크립트
29.11. 설치-이후 스크립트
29.11.1. Chroot 환경
29.11.2. 해석기 사용
29.12. 파일 저장하기
30. 부트 프로세스, Init, 및 종료
30.1. 부트 프로세스
30.2. 부트 프로세스에 대한 자세한 정보
30.2.1. BIOS
30.2.2. 부트로더
30.2.3. 커널
30.2.4. /sbin/init 프로그램
30.3. 부팅시 추가 프로그램 실행하기
30.4. SysV Init 런레벨
30.4.1. 런레벨
30.4.2. 런레벨 유틸리티
30.5. 종료하기
31. PXE 네트워크 설치
31.1. 네트워크 서버 설정
31.2. PXE 부트 설정
31.2.1. 명령행 설정
31.3. PXE 호스트 추가
31.3.1. 명령행 설정
31.4. TFTPD
31.4.1. tftp 서버 시작
31.5. DHCP 서버 설정
31.6. 사용자 정의 부트 메시지 추가하기
31.7. PXE 설치 수행
Posted by 1010
98..Etc/Adobe Air2009. 7. 3. 13:20
반응형

Adobe에서 RIA Application을 개발할 수 있는 AIR를 시작해보고자 하며
우선 첫번째로 AIR를 개발하는 개발 환경을 만들어보는것 부터 해보겠습니다.

AIR는 FLEX, FLASH, HTML, Ajax, 등 다양한 언어로 개발이 가능하지만 저는 플래시 개발자라
플래시로 AIR를 개발하고 있답니다.

아참 그리고 여러분들은 플래시를 어디에서 개발하시나요?^^

1. Adobe Flash 의 액션 입력창에 하드코딩한다.

2. Adobe FLEX Builder 를 이용해서 FLASH를 개발한다.

3. Flash Devloper Tool (FDT) 툴을 이용한다.


대부분의 사람들이 이 세가지 중 한가지 방식으로 플래시 개발을 하고 있을거라 생각됩니다.
저는 Flex Builder를 이용하여 개발을 하고 있어서 Flex에서 AIR 개발환경을 구축하는 법을 저 알아보고자 해요

접기


제일 먼저 해야할 일은 FLEX를 최신버전으로 업데이트 해주는 것입니다.
FLASH ActionScript는 지금도 끊임없이 버전업 되고 있고 AIR역시 계속해서 바뀌고 있습니다.
때문에 최신버전으로 먼저 업데이트 시켜 놓아야 새로 생겨난 클래스와 함수를 사용할 수 있습니다.

최신버전으로 업데이트 받기
※ 현재 기준(2009.03.10) 최신 버전은 3.0.2 버전까지 나와 있습니다.

업데이트를 다 했으면 SDK가 최신버젼으로 적용되었는지 확인해 보겠습니다.





프로젝트 명에서 우클릭 한 후 Properties를 선택하면 프로젝트의 속성을 보실 수 있습니다.

여기서 Flex Compiler를 선택하여 업데이트 받은 SDK의 버전을 확인하면 됩니다.




자 그럼 프로젝트를 만들어 보겠습니다.



먼저 Flex Navigator 공간에서 우클릭후 New - Flex Project 를 선택합니다.

ActionScript Project 가 아니라 Flex Project 를 선택하는 이유는 ActionScript Project에서는 AIR로 선택을 못하기 때문이랍니다. ^^




프로젝트 명을 입력하고 Desktop Application( runs in Adobe AIR ) 를 선택합니다.

그리고  Next 버튼 클릭!!

여기서 Finish 버튼을 눌러버리면 FLEX 언어로 AIR를 개발하는 환경이 만들어지니 조심하세요~



바꿀 내용이 없으므로 Next 클릭



여기서 Main source folder 에 있는 "src"를 지워주고

AIRTest.mxml -> AIRTest.as로 바꾸어 줍니다.
( mxmlas 로 바꾸어 준다는 소리지요 )




그럼 FLASH로 AIR를 개발할 수 있는 프로젝트가 이쁘게 생성된걸 볼 수 있습니다. ^^




이제 FLA 파일을 생성해서 Document Class만 연결해 주면 개발환경이 갖추어 지겠네요~

현재 Flash CS4 버전에서는 기본적으로 AIR를 생성할 수 있게 되어 있지만

Flash CS3 버전을 사용하고 계시는 분들은 CS3를 업데이트 하셔야 AIR를 개발 할 수 있습니다.

■ FLASH CS3 업데이트

CS4 버전의 첫화면의 Create New - Flash File( Adobe AIR ) 를 선택해서 AIR Flash 파일을 만듭니다.



생성한 후 프로젝트 폴더속에 FLA를 저장합니다.


그리고 PROPERTIES Panel에 가서
Document Class를 설정해 줍니다.

저같은 경우는 처음 프로젝트로 생성된
AIRTest.as 를 기본 클래스로 설정했습니다.

※ Tip
Document Class를 설정하고 좌측의 연필
아이콘을 눌렀을때 소스코드가 보이지 않는다면
패키지 명이나 경로가 잘못된 것이니 다시 확인해 주셔야 합니다.














자 그럼 제대로 연결이 되었는지 간단하게 빨간색 사각형을 그리는 코드를 작성해 보겠습니다.

작성이 다 되었으면 Flash로 가서 Ctrl + Enter를 눌러 테스트 해 봅니다.



이쁘게 그려진걸 볼수 있습니다.

그럼 이제 AIR로 신나게 개발하면 되겠네요~~ 다들 개발 ㄱㄱㄱ

접기

Posted by 1010
반응형
 DFS Service Software
 DFS  CDMA programming software  download  2,57 Mb
 EQI  Equipment identificator (DFS EQ-File request required) download  280 Kb
 Microsoft.NET Framework 2.0  Framework library (DFS required) download  23,6 Mb
 DFS User Manual A2008-12C  DFS user manual download  174 Kb
Copyright DFS © All rights reserved
Posted by 1010
01.JAVA/Java2009. 7. 3. 12:43
반응형
Java로 프로그래밍을 하다 보면 파일 핸들링이 꼭 필요한 경우가 있다. 자주 사용했던 걸 요약하면 다음과 같다.

1. UTF-8로 되어있는 파일 읽고 쓰기

BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream(args[0]), "UTF-8"));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(args[1]), "UTF-8"));
 
,

args[0]과 args[1]은 각각 입력, 출력 파일 이름이다.
인코딩은 보통 utf-8, ksc5601, euc-kr, ms949, iso-8859-1, 8859-1 중에 하나로 합니다.
파일을 쓸 때 새로운 파일로 생성하게 되는데 이게 아니라 뒤에 파일을 추가해서 쓰게 하는 모드로 바꾸려면
new FileOutputStream( args[1] );
new FileOutputStream( args[1] , true); 로 바꾸어 주면 됩니다.

br.readLine( str )bw.write( str )을 쓰면
C언어에서 fprintf(in,"%s",str) ;  fprintf(out,"%s",str)
C++언어에서 fin>>str; fout<<str 을 하는 효과가 된다.

2. 파일 이동/변경, 삭제

- 파일 이동/변경
File file = new File( from );
File destFile = new File( to );
if (!file1.renameTo(file2)) {
      System.err.println("Failed to move this file.");
}


- 파일 삭제
File f = new File( fileName );
if (!f.delete())
{
      System.err.println("Failed to remove this file.");
}


3. 폴더 만들기, 폴더 삭제
- 폴더 만들기
File f = new File( fileName );

if (!f.mkdirs())
{
      System.err.println("Failed to make this directory.");
}


- 폴더 이동/변경(파일 이동/변경하는 것과 같다)
- 폴더 삭제(파일 삭제하는 것과 같다)

--
try-catch는 물론 해 줘야 합니다.
Posted by 1010
90.개발관련문서2009. 7. 3. 12:41
반응형

문자셋과 인코딩의 정의

  • 문자셋 (charset, Character Set)
하나의 언어권에서 사용하는 언어를 표현하기 위한 모든 문자(활자)의 모임을 문자셋(charater set)이라고 한다. 다시 말하면 우리가 얘기하는 언어를 책으로 출판할 때 필요한 문자(활자)를 모두 모은 것이라고 생각하면 된다. 추가적으로 부호와 공백 등과 같은 특수 문자도 문자셋에 포함된다.
영어의 경우 알파벳 대소문자와 특수 문자 등으로 간단하게 문자셋을 구성할 수 있지만 한글의 경우 출판에서 가,나,다 등으로 출판함으로 훨씬 다양한 문자셋을 가지고, 또한 한자를 병행해서 사용함으로 문자셋의 범위는 더욱 넓어진다.
  • 추상적인 글자 셋은 여러 개의 인코딩을 가질 수 있다.
  • MIME 문자셋은 IANA에서 정의하며 인터넷 및 XML 파일에서 사용한다.
  • 인코딩 (encoding)
인코딩은 문자셋을 컴퓨터가 이해할 수 있는 바이트와 매핑하는 규칙이다. 예를 들면 ASCII Code에서 A,B,C 등은 문자셋이고 A는 코드 65, B는 코드 66 등 바이트 순서와 매핑한 것이 인코딩이다. 따라서 문자셋을 어떻게 매핑하느냐에 따라 하나의 문자셋이 다양한 인코딩을 가질 수 있다.
  • 추상적인 문자셋을 구체적인 bit-stream으로 표기하는 방법
  • 여러가지 문자셋을 동시에 표시할 수 있다.
  • 대부분의 인코딩에서는 대소문자를 구분하지 않는다.
  • 대한민국 문자셋(charater set)에서 가장 많이 사용하는 인코딩은 "UTF-8", "KSC5601", "ISO-8859-1" 이다.
  • 문자셋(인코딩)의 예
  • 한글 : 8bit KSC5601 (8bit EUC-KR, 7bit ISO-2022-KR, ISO-2022-Int)
  • 영문 : KSC5636, US-ASCII (둘 간의 차이는 화페 단위 뿐)
  • 한글+영문 : KSC5861 (EUC-KR), KSC5636 + KSC5601를 모두 포함한다.
  • 유니코드 : 4byte Unicode < ISO-10646 UCS (ISO-8859-1, UTF-8, UTF-16)

문자셋과 인코딩은 동일한 명칭을 가질 수 있어 서로 혼용하여 사용되는 경우가 많다.
EUC-KR은 원래 유닉스용 표준이었는데 인터넷으로 확장되어 사용된다.
KSC5601은 인터넷에서 원활한 한글(완성형) 사용을 위하여 정의된 표준이다.
EUC (Extended UNIX Code), UTF (UCS Transformation format)

기본 인코딩

  • Windows : 시스템 언어와 관련된 코드 페이지를 따름
    • 영문 Windows는 CP1252 인코딩을 사용
    • 한글 Windows는 MS949 인코딩을 사용
  • Unix : LANG 환경 변수로 지정된 로케일에 해당하는 인코딩
    • Solaris는 LANG 환경 변수가 ko, ko_KR일 경우 EUC-KR 인코딩을 사용
    • HP는 LANG 환경 변수가 ko_KR, ko_KR.eucKR일 경우 EUC-KR 인코딩을 사용
    • Unix에서 locale -a 명령을 사용하여 LANG 환경 변수에 지정 가능한 문자셋을 확인할 수 있다.
  • HTML : ISO-8859-1와 ISO-10646
  • XML : UTF-8
  • 웹 브라우져 : 내부적으로 모두 유니코드로 처리를 한다.
  • HTTP/1.0 : ISO-8859-1
  • HTTP (URL,URI) : US-ASCII, %hexadecimal_code, JavaScript escape() 함수 사용
  • Java : 유니코드 2.0
  • 직렬화된 Java Class : UTF-8
  • J2EE : ISO-8859-1
  • Oracle : UTF-8 (AL32UTF8), 한국에서는 KSC5601 (KO16KSC5601)




다양한 환경에서 인코딩 설정

웹 브라우져 설정

  1. "도구 -> 인터넷 옵션 -> 언어" 메뉴를 선택한다.
  2. 영어[en]와 한국어[ko]를 추가하고 원하는 언어를 가장 상단에 위치한다.

JVM 설정

  • 일반적으로 LANG 환경 변수를 설정해 주면 자동으로 설정이 된다.
locale -a                               Solaria unix 명령어로 지원 가능한 encoding을 확인한다.
env LANG ko csh에서 Encoding을 설정한다. (KSC5601, EUC-KR)
LANG=ko ksh에서 Encoding을 설정한다. (KSC5601, EUC-KR)
  • JVM 옵션 설정 (UTF-8, ISO-8859-1, KSC5601)
-Dfile.encoding=8859_1                  필수 항목
-Dfile.client.encoding=8859_1
-Dclient.encoding.override=8859_1 JVM 버전에 따라 (사용안함)
  • JSP를 사용하여 JVM 옵션 확인 (encoding.jsp)
file.encoding = <%= System.getProperty("file.encoding") %><br>
file.client.encoding = <%= System.getProperty("file.client.encoding") %><br>
client.encoding.override = <%= System.getProperty("client.encoding.override") %><br>

HTML 설정

HTML 파일을 UTF-8로 만들어 저장한다.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

XML 설정

XML 파일을 UTF-8로 만들어 저장한다.

<?xml version="1.0" encoding="UTF-8" ?>

JSP 설정

JSP 파일을 UTF-8로 만들어 저장한다.

<%@ page pageEncoding="UTF-8" %>
<%@ page contentType="text/html;charset=UTF-8" %>

Servlet 설정

HTTP 요청의 인코딩 지정

request.setCharacterEncoding("UTF-8");

HTTP 응답의 인코딩 지정

response.setContentType("text/html; charset=UTF-8");

web.xml 설정

<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>

Default Oracle Database 문자셋

  • Default Oracle Database 문자셋 : UTF-8 (AL32UTF8), 한국에서는 KSC5601 (KO16KSC5601)
  • AL32UTF8, KO16KSC5601 (KSC5601), WE8ISO8859P1 (8859_1)
  • Default Oracle Database 문자셋 확인 방법
sqlplus system/manager

select parameter || ' : ' || value parameter_value
from NLS_DATABASE_PARAMETERS
where parameter = 'NLS_CHARACTERSET'
or parameter = 'NLS_NCHAR_CHARACTERSET';

select name || ' : ' || substr(value$, 1, 40) parameter_value
from sys.props$
where name = 'NLS_CHARACTERSET';

select parameter || ' : ' || value parameter_value
from NLS_INSTANCE_PARAMETERS, V$NLS_PARAMETERS, NLS_SESSION_PARAMETERS;
  • Oracle Database 문자셋 변경 방법
환경 변수 또는 %ORACLE_HOME%/dbs/init[SID].ora 을 설정한다.
NLS_LANG='American_America.Ko16ksc5601'
ORA_NLS33='$ORACLE_HOME/ocommon/nls/admin/data'
NLS_DATE_FORMAT='YYYY-MM-DD'
  • DriverManager에서 문자셋 설정 방법
java.util.Properties props = new java.util.Properties();
props.put("charSet", "KSC5601" );
DriverManager.getConnection(dbUrl, props);
Posted by 1010
반응형

Mozilla Web개발자에게 필요한 기능을 제공하는 불여우(Firefox) 부가기능 중 9개를 선정하여 소개합니다.많은 숙련된 기술을 가진 디자이너들은 아래 소개하는 부분이 없어도 어느정도 코딩과 디자인이 가능하겠지만 , 그래도 아래에 소개되는 기능을 이용하면 좀 더 편리하고 시간을 단축할 수 있으리라 생각됩니다.

1. 파이어버그(Firebug)

첫번째는 Joe Hewitt에 의해 만들어선 FIrebug입니다. Firebug를 이용하면 코딩시간을 많이 단축할수 있습니다. 자세한 내용은 http://getfirebug.com/ 를 방문하시면 얻을 수 있습니다. 잘만 이용하면 실제적인 로딩타임과 자바스트립트 에러등 여러가지를 할 수 있는 종합적인 디버깅툴이라 할 수 있습니다.


윈도우


2. MeasureIt

부가기능을 받으시고 인스톨을 하면 툴바에 measureit이라는 아이콘이 설치됩니다. 이때 아이콘을 누르시면 화면이 전체적으로 회색으로 비활성화되는 데 이때 측정하고 싶은 곳에 가서 길이를 재면 화면과 같이 width와 Height정보를 구할 수 있습니다.


measureit 

http://www.kevinfreitas.net/extensions/measureit/


3. ColorZilla

colorzilla

설명에 의하면 진보된 웹컬러 추출기이며, 팔렛트등을 지정할 수 있습니다. 위의 그림에서아 같이 인스톨을 하고 나면 좌측하단에 점안기가 표시되는데 이를 클릭 후 원하는 위치에 마우스를 갖다되면 컬러코드가 표시됩니다.  뿐만 아니라, 필요한 부분의 확대하고 싶은 영역을 지정하여 돋보기의 기능을 제공합니다.


다운받기 : http://www.colorzilla.com/firefox/


4. Screen Grab


Screengrab

스크린캐쳐를 온라인상에서 바로 할 수 있도록 도와주는 툴입니다.

http://www.screengrab.org/


5. Web Developer

Web

웹개발툴의 종합선물세트와 같습니다. 많은 개발자들이 사용하고 있는 툴이며 기능상으로 Firebug와 많이 비슷하지만 좀더 많은 기능을 제공합니다. CSS등을 임의로 모두 수정하면서 바로 바로 편집하면서 웹개발을 할 수 있도록 도와줍니다.

http://chrispederick.com/work/web-developer/


6. IE Tab

사실 이 부가기능은 웹개발자 뿐만 아니라 불여우사용자들은 국내에서 거의 다 이용될 것으로 생각되는 툴이지만, 개발자측면에서 보면, 호환성테스트시에 필요한 요소입니다.

mozdev

 http://ietab.mozdev.org/


7. HTML Validator


Html









완벽한 디자인의 한 측면으로 강조되는 Validator입니다. w3c 표준으로 지켜지는지 유효성 검사를 하는 부가기능입니다.

https://addons.mozilla.org/en-US/firefox/addon/249


8. CSS Viewer


CSSViewer











이것은 간단히 CSS를 볼때 사용되는 툴로 toolbar에 등록 후 간단히

마우스를 갖다되면 해당 Code의 CSS가 보여지는 기능입니다.

https://addons.mozilla.org/en-US/firefox/addon/2104


9. FireFtp


FireFTP

이 부가기능은 Firefox를 순식간에 FTP Client로 변신해 줍니다.

일반 FTP Client도 기능이 동일하니 사용하는데 어려움이 없을 것이라 판단됩니다.


사용자

https://addons.mozilla.org/en-US/firefox/addon/684


이상 소개한 9가지의 부가기능을 이용하여 웹개발을 하면 좀더 편하게 개발을 할 수 있으리라 생각됩니다.


출처 : http://blogine.net/archives/82

Posted by 1010
반응형

Web Hacking 1탄 SQL Injection

Web Hacking 2탄 파일조작

Web Hacking 3탄 구멍난 자바스크립트



1. 시작하기

여러분들은 사용자가 입력한 값에대해 어느정도 검증을 하는지요?

사용자 값을 이것저것 따지고 여러가지 유효성을 체크할려면 아주 귀찮은 일이 아닐수 없습니다

그중에 하나가 웹브라우져에서 실행되는 자바스크립트로 체크하는 방법이 있는데 비지니스 로직이 조금 복잡할때는 자바스크립트로 도배를 하는 경우도 종종 있지요

유효성 검증하는일 저도 정~~말 싫어합니다 하지만 해야 합니다 ㅠ.ㅠ

그럼 어디까지 그 유효성을 체크해야 할까요? 자바스크립트로만 체크하면 될까요?


처음 웹프로그래밍을 할때는 저도 자바스크립트로만 입력값을 검증하면 되는줄 알았습니다

한마디로 몰랐죠

하지만 이제는 알기때문에 자바스크립트뿐만 아니라 서버쪽에서도 동일하게 체크해 주어야 합니다

사용자가 입력한 값이 얼마나 무서운지는 앞의 1탄, 2탄의 강좌를 통해 어느정도는 감을 잡으셨으리라 생각하고 이번 강좌에서는 왜 서버쪽에서도 체크해야 하는지!에 대해 간략히 알아보겠습니다



2. 자바스크립트 체크


입력값의 자리수가 13자리인지 체크하여 맞으면 submit을 만약 그렇지 않다면 정상적인 입력값을 요구하는 입력갑검사 로직이 있다고 가정하겠습니다 그리고 서버쪽에서는 꼭 13자리가 넘어와야 정상적인 처리를 할수 있다고 하겠습니다

그럼 아래와 같은 간단한 코드가 나올겁니다


http://www.jakartaproject.com/html/input.html

<script>

/* 입력한값이 13자리인지 체크 후 전송 */

function validateValue() {
    var obj = document.f.register_no;
    if (obj.value.length != 13) {
        alert('주민번호 정상적으로 입력하세요');
        return false;
    }
}

</script>


<form name=f method=post action=process.jsp onsubmit="return validateValue()">
주민번호 <input type=text name=register_no> <input type=submit name=btn value=submit>
</form>


 실제 웹 브라우져에서 보면 아래와 같습니다

"33" 이라는 두자리 수만 입력하니 역시나 재입력을 요구하는 alert창이 떳습니다 (가끔 깜짝깜짝 놀라죠 -,-)




그럼 정상적으로 "1111111111111" 의 입력값 13자리를 입력해 보겠습니다




 

그리고 이 값은 process.jsp 라는곳에서 파라미터로 받아 아래와 같이 처리합니다

코드는 간단하게 그 입력값과 레퍼러 값을 보여주겠습니다


http://www.jakartaproject.com/html/process.jsp

<%@ page contentType="text/html; charset=euc-kr" %>


<%
String register_no = request.getParameter("register_no");
%>


헤더정보 <%=request.getHeader("referer")%><br><br>
주민번호 <%=register_no%>


request.getHeader("referer")는 헤더정보에서 referer값을 가져오는 함수로, 이전 페이지 주소값을 가져옵니다

그럼 화면은 아래와 같이 나옵니다


자 정상적으로 처리되었습니다



3. 자바 스크립트 우회

그럼 이제부터 자바스크립트로 입력값의 자리수 체크로직을 피해가는 방법을 알아봅시다

어떤 방법이 있을까요?


URL로 접근

입력값이 몇가지 되지 않는다면 아래 방법이 가장 편하겠군요

즉 브라우져 주소창에다 직접 입력 합니다


http://www.jakartaproject.com/html/process.jsp?register_no=2222

아래와 같은 화면이 나올겁니다

메쏘드정보 (request.getMethod())를 찍어보니 GET 이 나오는군요!

그렇다면 이같은 직접 URL값을 막기위해 간단히 POST만 허용하는 로직을 추가해 버립시다


http://www.jakartaproject.com/html/process.jsp

<%@ page contentType="text/html; charset=euc-kr" %>


<%
if (!"POST".equals(request.getMethod())
   return;

String register_no = request.getParameter("register_no");
%>


헤더정보 <%=request.getHeader("referer")%><br><br>
주민번호 <%=register_no%>

이러면 괜찮겠지 흐흐.. 라고만끝나면 안됩니다


로컬파일로 접근

①번의 방법은 GET방식때문에 막혔습니다 그러면 자바스크립트를 우회하면서 POST방식으로 보내는 방법은 없을까요? 물론 있습니다

웹브라우져는 "소스보기" 라는 좋은 메뉴가 있습니다 있는건 적극 활용합시다 ㅎㅎ

소스보기한 후 바탕화면에 저장하여 약간 손을 보았습니다

즉 입력값을 체크하는 자바스크립트를 무력화 시키면서, action을 수정해 주었습니다


C:\Documents and Settings\Administrator\바탕 화면\client.html

<script>

/* 입력한값이 13자리인지 체크 후 전송 */

function validateValue() {

    return true;
}

</script>


<form name=f method=post action="http://www.jakartaproject.com/html/process.jsp" onsubmit="return validateValue()">
주민번호 <input type=text name=register_no> <input type=submit name=btn value=submit>
</form>



웹화면은 다음과 같겠죠


"submit"버튼을 클릭합니다 ^^


역시나 자바스크립트를 거치지 않고 process.jsp에 13자리수가 아닌 "22"값을 무난히 보냈습니다



그럼 서버쪽에서는 "어이쿠 이런 헤더정보도 체크해야 겠군" 하고 다음 코드를 추가해 버릴겁니다

즉 레퍼러값이 null인 경우는 허용할수 없다는 것이죠


http://www.jakartaproject.com/html/process.jsp

<%@ page contentType="text/html; charset=euc-kr" %>


<%

if (!"POST".equals(request.getMethod())
   return;


if (request.getHeader("referer") == null)
   return;

String register_no = request.getParameter("register_no");
%>


헤더정보 <%=request.getHeader("referer")%><br><br>
주민번호 <%=register_no%>

그럼 위와같은 소스가 될것입니다

그럼 과연 위 소스가 안전할까요?


HEADER값 조작

그렇다면 HEADER값을 조작해 봅시다 어떻게 조작할 수 있을까요?

여러가지 프로그램들이 있지만 그중에 Achilles 라는 proxy server를 이용하여 조작해 보겠습니다

Achilles라는 proxy server는 웹브라우져와 서버간의 HTTP 세션을 중간에서 가로채어 원하는대로 수정한 후 보낼수 있도록 해주는 작으면서도 강력한 프로그램입니다


※ 참고

Achilles 문서를 보면 맨 첫줄에 나오는 문장입니다

"Achilles is a tool designed for testing the security of web applications"

이 프로그램은 웹어플리케이션의 보안 테스팅을 하는데 작성되었으므로 테스팅용으로만 사용합시다


다운로드

http://www.mavensecurity.com/achilles


우선 위에서 작성한 바탕화면에 저장된 C:\Documents and Settings\Administrator\바탕 화면\client.html 를 실행한 결과를 Achilles가 Intercept한 결과입니다

여러 가지 헤더정보들이 보이며 쿠키값까지 조작할수 있습니다

하지만 위의 헤더정보에는 referer값이 없습니다 그래서 referer체크에서 null이 나와 로직에 걸립니다

그렇다면 referer정보를 추가해 줍시다


파랑색으로 줄쳐진 부분을 에디팅하여 추가해주었습니다

Referer: http://www.jakartaproject.com/html/input.html

그런다음 "Send"버튼으로 전송합니다


짠~

그러면 조작된 헤더정보를 알아채지 못하고 헤더의 referer값을 가져오는군요!



4. 서버쪽 로직 추가!

위에서 자바스크립트를 우회하는 몇가지 방법들을 알아보았습니다

결론은 하나입니다 즉! 서버쪽에서도 동일하게 체크해 주어야 합니다


<%@ page contentType="text/html; charset=euc-kr" %>


<%

String register_no = request.getParameter("register_no");


if (!"POST".equals(request.getMethod())
   return;


if (request.getHeader("referer") == null)
   return;


if (register_no.length() != 13)

   return;
%>


헤더정보 <%=request.getHeader("referer")%><br><br>
주민번호 <%=register_no%>


그렇다면 서버쪽에서만 체크하고 클라이언트에서는 체크할 필요가 없다고 생각할지도 모르지만,

그만큼 서버쪽으로 오는 request를 줄이면 더더욱 좋겠죠

자잘한것 하나때문에 서버쪽 부하를 줄수 없는 노릇아니겠습니까?


자 이러이러 하고 저러저러한 이유로 우리는 이제부터라도 클라이언트에서는 자바스크립트로,

서버쪽에서는 또 서버쪽 스크립트로 사용자가 입력한 값에대해 유효성을 검증해야 하는것을 알았습니다

로직이 복잡한 경우 가뜩이나 자바스크립트도 복잡한데 그 로직을 서버쪽에서 다시한번 만든다는게 힘들다는거 다들 압니다 하지만 안전한 웹페이지를 만들기 위해 다같이 노력해야 되지 않겠습니까?


Web Hacking 1탄 부터 이번 3탄에 이르기까지 웹 프로그래밍 하면서 반드시 필요하고 인식해야 하는 부분에 대해 논하였습니다

마지막으로 다시한번 언급하자면 우리가 잠깐 잊고 지나가거나 혹은 귀찮아서 지나치는 사소한 부분들 때문에 엄청난 결과를 가져올 수 있다는 것입니다 미리미리 예방하고 예측해서 방지하는수 밖에 없습니다 그럼 다들 건승~!~!


이상 GoodBug였습니다~


=============================================

본문서는 자유롭게 배포/복사 할수 있지만

이문서의 저자에 대한 언급을 삭제하시면 안됩니다

저자 : GoodBug (unicorn@jakartaproject.com)

최초 : http://www.jakartaproject.com 

=============================================

Posted by 1010
반응형

말도많고 탈도많은 쿠키!! 어떻게 사용하면 잘사용 하는걸까요?

앞으로 나오는 document.cookie등은 자동으로 "no_"앞에 가 붙습니다

Unicorn3에서 보안상 필터링하게 되어있기 때문입니다 앞에 "no_"가 없는것으로 간주하시면 됩니다


쿠키취약점

쿠키로 인증하는 사이트에 접속하여 로그인한 후 쿠키값 확인을 해봅니다

javascript:alert(document.cookie)


로그인 하지 않은 상태라면 다음과 같이 세션 아이디만 나오게 되며



로그인 한 상태라면 다음과 같이 쿠키이름과 쿠키값을 쌍으로 정보가 출력됩니다




관리자 아이디가 goodbug 라고 가정하고 이 아이디로 조작하기 위해서는 다음과 같이 입력합니다

javascript:a=prompt(document.cookie,"");alert(document.cookie=a)

그럼 프롬프트창이 하나 나타나며 이 부분에 다음과 같이 입력합니다



어떤 쿠키이름이 아이디를 나타내는 것일까요?

몇가지 없으니 가장 유력한 이름부터 하나씩 해보면 됩니다

UID=goodbug


다시 javascript:alert(document.cookie) 를 통해 쿠키값을 확인합니다


UID가 goodbug로 변경이 되었습니다

즉 내계정을 통해 goodbug로 로그인한것과 동일한 효과를 가져왔습니다!!

만약 쿠키로만 인증하는 방식이라면 타계정의 접속이나 관리자 화면으로 쉽게 들어갈 수 있습니다



 쿠키를 이용한 SQL Injection

쿠키를 이용하여 일반 로그인 화면이나 관리자 화면을 통화할 수 있습니다

SQL Injection이 어느정도 알려졌기 때문에 로그인 폼으로 부터 넘어온 아이디나 비밀번호 정보들을

일정 값들로 치환하는 경우를 볼 수 있습니다

즉 '나 ", -, \ #등의 SQL Injection에 활용되는 문자들을 무력화 시키곤 합니다

하지만 이역시 쿠키 SQL Injection을 통해 간단히 통과할 수 있습니다


마찬가지 방법으로 자신의 계정으로 로그인 하여 쿠키를 생성 한 후 다음과 같이 값을 변경합니다

UID=goodbug' or 1=1 --

관리자 화면은 화면마다 아이디를 이용해 인증을 할것입니다

하지만 이 관리자 아이디를 쿠키로 읽어온다면 아마 많은 허점이 생길겁니다

보통 쿠키로 부터 읽어온 값은 '나 --등은 체크하지 않죠

그래서 인증 관련된 부분은 항상 "특정문자를 치환+Statement" 보다는 "PreparedStatement"를 사용해야 합니다



 쿠키취약점 보안 및 결론

 -. 쿠키에 값을 구울때는 그 값을 "암호화" 하여 저장하고, 다시 읽어올때는 "역암호화"하여 사용합니다

 -. 로그인시에 IP도 쿠키에 같이 구워버리고, 데이터베이스에도 저장하며, 항상 실제 아이피와 비교하여 사용합니다

 -. 쿠키는 웹서버가 클라이언트에 남겨놓은 정보입니다

     그래서 쿠키는 클라이언트가 마음대로 조작하는것이 가능하기때문에 서버는 어떤일이 일어나는지 검사해야 한다는 것입니다


ps. 대형사이트에서는 IDS에 걸릴수 있으니 주의하세요


=============================================

본문서는 자유롭게 배포/복사 할수 있지만

이문서의 저자에 대한 언급을 삭제하시면 안됩니다

저자 : GoodBug (unicorn@jakartaproject.com)

최초 : http://www.jakartaproject.com 

=============================================

Posted by 1010
02.Oracle/DataBase2009. 7. 2. 10:44
반응형
암호화 복호화는 테스트 하고 설명하자면 끝도 없지만.
간단한 샘플 package 를 만들어서 직접 테스트 해 보면 그렇게 어렵지는 않다.

아래 관련자료 첨부하였으니
일단 한 번 수행 시켜서 수행해보고 이해해 보면 되겠다.

[by sinu] dbms_obfuscation_toolkit.txt 는 설명없이 스크립트만 들어 있으니 그냥 복사해서 붙이면 되고
(user 생성 및 clean 까지 되어 있다.)

[spool] dbms_obfuscation_toolkit.log 는 위 스크립트의 spool 결과이다.
수행여건이 안되거나 귀찮으신 분들을 위해;;


세세한 사항은 스크립트를 보면 되고
중요한 부분만 간략하게 설명하도록 하겠다.
8i, 9i 와 같은 경우 dbms_obfuscation_toolkit 만 사용이 가능한데
아래처럼 실행 권한만 부여해 주면 된다.
 
grant execute on dbms_obfuscation_toolkit to sinu;

패키지 생성 소스를 살펴 보자

CREATE OR REPLACE PACKAGE pkg_obfus
IS
    FUNCTION encrypt (
        input_string        IN  VARCHAR2 ,
        key_data IN VARCHAR2 := '1122334455667788'
    ) RETURN RAW;
    
    FUNCTION decrypt (
        input_string        IN  VARCHAR2 ,
        key_data IN VARCHAR2 := '1122334455667788'
    ) RETURN VARCHAR2;

END pkg_obfus;
/

이 부분 부터가 패키지 바디 소스이다.
CREATE OR REPLACE PACKAGE BODY pkg_obfus
IS
-- 에러 발생시에 error code 와 message 를 받기 위한 변수 지정.
    SQLERRMSG   VARCHAR2(255);
    SQLERRCDE   NUMBER;

-- 암호화 함수 선언 key_data 는 입력하지 않을 시에 default 로 1122334455667788 로 지정됨.
    FUNCTION encrypt (input_string IN VARCHAR2 , key_data IN VARCHAR2 := '1122334455667788')
     RETURN RAW
    IS
        key_data_raw RAW(128);
        input_string_raw RAW(128);
        encrypted_raw RAW(2048);

    BEGIN
-- 들어온 data 와 암호키를 각각 RAW 로 변환한다.
        input_string_raw := UTL_RAW.CAST_TO_RAW(input_string);
        key_data_raw  := UTL_RAW.CAST_TO_RAW(key_data);

-- DES 방식으로 암호화 한다.
        dbms_obfuscation_toolkit.DESEncrypt(
input => input_string_raw,
key => key_data_raw,
encrypted_data => encrypted_raw );
-- dbms_obfuscation_toolkit 를 수행하면 encrypted_raw 에 암호화된 data 가 raw 형태로 저장된다.

-- 암호화된 data 를 return (생각보다 간단하지 않은가?)
RETURN encrypted_raw;
    END encrypt;
    
    FUNCTION decrypt (input_string IN VARCHAR2 , key_data IN VARCHAR2 := '1122334455667788')
     RETURN VARCHAR2
    IS
        converted_string VARCHAR2(48);
        key_data_raw RAW(128);
        decrypted_raw VARCHAR2(2048);

    BEGIN
        key_data_raw  := UTL_RAW.CAST_TO_RAW(key_data);
        
-- 복호화 역시 간단하다. input_string 자체가 RAW 이므로 convert 하지 않아도 된다.
        dbms_obfuscation_toolkit.DESDecrypt(
input => input_string,
key => key_data_raw,
decrypted_data => decrypted_raw);

-- return 형태는 RAW 이므로 이를 다시 varchar2 로 변환하여 리턴한다.
        converted_string := UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw);
        RETURN converted_string;
    END decrypt ;

END pkg_obfus;
/

-- 암호화된 컬럼에 index 생성이 가능하다!!
create table card_info ( id number, card_number varchar(32) primary key) ;

insert into card_info values ( 1 , pkg_obfus.encrypt('1234567812345678'));

-- 2nd argument 에 원하는 key 값을 넣을 수도 있다.
insert into card_info values ( 2 , pkg_obfus.encrypt('1234567812345678', '0000111122223333'));
commit;

-- 같은 데이터 1234567812345678 을 넣었으나 key 값이 다르기 때문에 값이 전혀 다르다.
select * from card_info;
        ID CARD_NUMBER
---------- --------------------------------
         1 365C80EABBC8859E91C4BDE4B3C52A4B
         1 858B176DA8B125034356364E8179CD61

-- 2 번째 data 의 경우 key 값이 틀리기 때문에 복호화 되지 않고 에러를 뿌려준다.
select id, pkg_obfus.decrypt(card_number) card_number from card_info;

        ID CARD_NUMBER
---------- --------------------------------------------------
         1 1234567812345678
SP2-0784: Invalid or incomplete character beginning 0xF1 returned

-- 2 번째 row 의 key 값을 제대로 넣어주자 정상적으로 보인다.
select id, pkg_obfus.decrypt(card_number, '0000111122223333') card_number from card_info;

SP2-0784: Invalid or incomplete character beginning 0xEB returned
        ID CARD_NUMBER                    
---------- --------------------------------------------------
         2 1234567812345678                

-- [퀴즈] 특정 data 를 select 하려면 where 절에 어떤 형식으로 값을 주어야 할까?

1. select * from card_info where card_number = '1234567812345678';
2. select * from card_info where card_number = utl_raw.cast_to_raw('1234567812345678');

3. select * from card_info where card_number = '365C80EABBC8859E91C4BDE4B3C52A4B';
4. select * from card_info where card_number = pkg_obfus.encrypt('1234567812345678');

정답은 : 3 , 4 번 (드래그 하세요~)

소스는 길고 복잡해도

포인트는
dbms_obfuscation_toolkit.DESEncrypt
dbms_obfuscation_toolkit.DESDecrypt
요 2가지 이고 나머지는 그냥 varchar2 와 raw 의 converting 작업이다.

나머지 세세한 사항은 메뉴얼을 참고하자!

Posted by 1010
반응형

 
 
How To Use The Script

1. Download the library
Download wz_tooltip.js and unzipp it.
DHTML: Tooltips via JavaScript  
Top of page
 
Features
 
Cross Browser
 
Documentation
 
Extensions
 
Download
 
 
 
2. Link wz_tooltip.js into the html file

Copy the following line to inside the BODY section, preferably immediately after the opening <body> tag:
<script type="text/javascript" src="wz_tooltip.js"></script>
If necessary, adapt the path 'src="wz_tooltip.js"' to the JavaScript file. Note: Use the downloaded file only, do not hardlink wz_tooltip.js from my site.  
 
3. Specify tooltip text inside onmouseover eventhandlers

Each of the html tags to display a tooltip requires an onmouseover and an onmouseout attribute like so:

<a href="index.htm" onmouseover="Tip('Some text')" onmouseout="UnTip()">Homepage </a>

That's all. No title attributes, no container DIV. As you can see, the text to be displayed must be enclosed with single quotes, and be passed to a function Tip(). Attention: Single quotes (apostrophes) inside the tooltip text each must be masked with a backslash. Example:
Tip('This text won\'t trigger a JavaScript error.');
 
The call of UnTip() in the onmouseout eventhandler is to hide the tooltip again.
 
Of course you may also use different eventhandlers for Tip() and/or UnTip().


 
 
4. Doesn't Work?
a) Check the (dynamically generated?) HTML and the CSS of the page, preferably with the W3C Online Validator at http://validator.w3.org/. DOM errors will probably break the script.
b) Verify that you've exactly followed steps 1 to 3 on how to include the script, and everything mentioned under "Extended Configuration" further down this page.
c) Watch the JS Error Console of your browser. If there are errors, you can be sure that either the script hasn't been included correctly, or that there are syntax or logical errors in your own JS lines, or in some other script included into the page.
d) Please don't claim you've found a bug - unless you've checked everything very carefully, and you're absolutely sure. Please understand that I like developing code much more than debugging other peoples' web pages. Feedback is welcome, of course!

 
 
 
 
Extended Configuration

5. Alternative: Convert HTML element to tooltip
Instead of defining the tooltip text directly, you can specify an arbitrary HTML element to be converted to a tooltip. This is advantageous in some aspects:
  • You can have really important stuff in tooltips, since HTML content (unlike JavaScript content) of a page is relevant to web search engines.
  • If placed conveniently in the page, the content is also available for users who have disabled JavaScript.
  • Optionally, the HTML element can even stay visible; for example, if you want to display its content in a tooltip at a different location.
  • It may be easier to define complex inner tooltip HTML directly in the HTML element to be converted, rather than in a JavaScript string.

To define a tooltip to be created from an HTML element, just pass the ID of the desired HTML tag to the function TagToTip(). Example:

<a href="index.htm" onmouseover="TagToTip('Span2')" onmouseout="UnTip()">Home page </a>
...
<span id="Span2">This is some comment<br>about my home page</span>
...

In this example, the tooltip over the link will display the content grabbed from the <span> element. Note that only the inner content including the linebreak tag will be copied, whilst the SPAN tag itself and any formatting applied to it will not be inherited.
 
While the page is loading, the Tooltip Library hides automatically HTML elements to be converted to tooltips (e.g. the <span> element in the example above). To disable this auto-hide feature, set the variable TagsToTip in the global tooltip configuration in wz_tooltip.js to the value false (preset default: true). If desired, you must hide those HTML elements yourself, by setting their CSS 'display' property to 'none'.
 
As a side note: Especially in IE, page loading performance might benefit from disabling the auto-hide feature.
DHTML: Tooltips per JavaScript  
Top of page
 
Features
 
Cross Browser
 
Documentation
 
Extensions
 
Download
 
 
 
6. HTML inside tooltips

For images inside the tooltip, the width and height attributes in the <img> tags must be specified. This enables the script to determine the tooltip size correctly.
 
Doublequotes within the tooltip text must be written as HTML character entity (&quot;), since doublequotes serve already as delimiters for the onmouseover eventhandler, and cannot be nested. Apostrophes (singlequotes) must be masked with a preceding backslash, since apostophes serve already as delimiters for the tooltip text. As delimiters for HTML tag attributes inside the tooltip text, you can use either &quot; or \' . Example:
Correct:
<a href="index.htm" onmouseover="Tip('Text with <img src=\'pics/image.jpg\' width=\'60\'>image.')" onmouseout="UnTip()"> Homepage </a>
or
<a href="index.htm" onmouseover="Tip('Text with <img src=&quot;pics/image.jpg&quot; width=&quot;60&quot;>image.')" onmouseout="UnTip()"> Homepage </a>
 
Wrong:
<a href="index.htm" onmouseover="Tip('Text with <img src="pics/image.jpg" width="60">image.')" onmouseout="UnTip()"> Homepage </a>

 
 
7. Formatting tooltips with CSS classes

Simply wrap the tooltip text in a DIV or SPAN element of the desired CSS class. You can do the same with the title text (for how to define a tooltip title, see the description of the TITLE command in the commands reference below). Example:
... onmouseover="Tip('<div class=&quot;TipCls1&quot;>Text of tooltip number one</div>')" ...
... onmouseover="Tip('<span class=\'TipCls2\'>Text of tooltip number two</span>')" ...
... onmouseover="Tip('Tooltip number 3', TITLE, '<div class=\'TitleCls\'>Some Title</div>')" ...

 
 
8. Tooltip content via variable or function call

Instead of a string enclosed with single quotes, Tip() accepts as well a variable or a call to a function defined elsewhere, for instance in a <script> block or in a separate JS file. The same is true for commands passed to Tip() or TagToTip() (listing and description of commands see below). Thus, each time a tooltip is about to be displayed, its content and formatting could be established dynamically.
Example:
<html>
<head>
...
<script type="text/javascript">
var txt1 = "This is the text of the first tooltip";

function TooltipTxt(n)
{
    return "This is the text of the " + n + " tooltip";
}

</script>
</head>
<body>
<script type="text/javascript" src="wz_tooltip.js"></script>
...
<a href="a.htm" onmouseover="Tip(txt1)" onmouseout="UnTip()">Link 1</a>
...
<a href="b.htm" onmouseover="Tip(TooltipTxt('second'))" onmouseout="UnTip()">Link 2</a>
...
<a href="c.htm" onmouseover="Tip(TooltipTxt('third'))" onmouseout="UnTip()">Link 3</a>
...
</body>
</html>
DHTML: Tooltips per JavaScript  
Top of page
 
Features
 
Cross Browser
 
Documentation
 
Extensions
 
Download
 
 
 
9. Commands to customize tooltips individually

The global default configuration, taking effect on all tooltips, can be changed in the JavaScript file itself, in the section "GLOBAL TOOLTIP CONFIGURATION". To configure tooltips individually, you can use the commands listed below. These individual commands override the global configuration in wz_tooltip.js. They can be passed to the Tip() or TagToTip() function calls in the onmouseover eventhandlers. Each command must be accompanied by the desired value, separated by a comma:
onmouseover="Tip('Some text', ABOVE, true)"
or
onmouseover="TagToTip('SomeID', TITLEFONTCOLOR, '#CCFFCC')"

Multiple commands form a comma-separated list of command-value pairs. Order of commands is arbitrary. Example:
onmouseover="Tip('Some tooltip text', SHADOW, true, TITLE, 'Some Title', PADDING, 9)"


Command Description
ABOVE Positions the tooltip above the mousepointer. Value: true or false.
 
Combine with OFFSETY to adjust the vertical distance from the mousepointer, or with CENTERMOUSE to center the tooltip horizontally above the mousepointer.
BGCOLOR Background color of the tooltip. Value: HTML color, in single quotes, e.g. '#D3E3F6' or 'DarkCyan', or empty string '' for no background.
Example:
onmouseover="Tip('Some text', BGCOLOR, '#D3E3F6')"
or
onmouseover="Tip('Some text', BGCOLOR, '')"
BGIMG Background image. Value: Path to image, in single quotes.
Example:
onmouseover="Tip('Some text', BGIMG, '../images/tipbackground.gif')"
BORDERCOLOR Border color. Value: HTML color, in single quotes, e.g. '#dd00aa'.
BORDERSTYLE Border style. Value: CSS border style, in single quotes. Recommend are 'solid' (default), 'dashed' or 'dotted', others may not work in all browsers.
BORDERWIDTH Width of tooltip border. Value: Integer ≥ 0. Default is 1. Use 0 for no border.
Example:
onmouseover="Tip('Some text', BORDERWIDTH, 2)"
CENTERMOUSE Centers the tooltip horizontally beneath (or above) the mousepointer. Value: true or false. Consider that the tooltip is offset from the center by the value globally set in wz_tooltip.js (config. OffsetX), or as specified by the OFFSETX command.
Example:
onmouseover="Tip('Some text', CENTERMOUSE, true, OFFSETX, 0)"
CLICKCLOSE Closes the tooltip once the user clicks somewhere inside the tooltip or into the document. Value: true, false.
CLICKSTICKY Enables the user to fixate the tooltip, by just clicking onto the HTML element (e.g. link) that triggered the tooltip. This might help the user to read the tooltip more conveniently. Value: true, false.
 
onmouseover="Tip('Text', CLICKSTICKY, true, CLICKCLOSE, true, CLOSEBTN, true)"
In this example, additionally specifying CLICKCLOSE enables the user to close the tooltip with just another click somewhere into the document. Redundantly provided is a closebutton.
CLOSEBTN Displays a closebutton in the titlebar. Value: true, false.
CLOSEBTNCOLORS Colors used for the closebutton.
 
Value must be a comma-separated array of 4 color values. Each color in single quotes. The entire array must be enclosed with a pair of square brackets, see example below, since it's actually a single parameter. The 4 colors have the following meanings:
1. Background color
2. Text color
3. Highlighted background, while the button is being hovered
4. Hilighted text color, while the button is being hovered
For each of these colors, you can also specify an empty string '', in which case the title background, or title text color, respectively, is used for that button state.
 
Example:
Tip('Text', CLOSEBTN, true, CLOSEBTNCOLORS, ['', '#66ff66', 'white', '#00cc00'], STICKY, true)
In this example, the first color value (background color) is an empty string. Therefore the closebutton inherits the titlebar background.
CLOSEBTNTEXT Text in the closebutton. Value must be enclosed with single quotes. Example:
Tip('Tooltip text', CLOSEBTN, true, CLOSEBTNTEXT, 'Click Me', STICKY, true)
Globally preset in wz_tooltip.js is '&nbsp;X&nbsp;' - the whitespace entities '&nbsp;' add some horizontal padding to the button.
COPYCONTENT COPYCONTENT has only effect on tooltips created with TagToTip(), that is, for HTML elements converted to tooltips.
Value: true, false.
If true (this is the default behaviour preset in wz_tooltip.js), just a copy of the text (or inner HTML) of the HTML element is inserted into the tooltip. If false, the entire HTML element (its DOM node) by itself is temporarily converted to a tooltip, which may be useful in the following aspects:
1.) If the HTML element converted to a tooltip contains a form with inputs, their current user input will be maintained even while the tooltip is not displayed.
2.) The tooltip inherits the style properties of the HTML element.
Example how to convert an HTML element entirely to a tooltip, by applying COPYCONTENT with the value false:
TagToTip('SomeID', COPYCONTENT, false, BORDERWIDTH, 0, PADDING, 0)
Moreover, this example turns off the native tooltip border (BORDERWIDTH, 0), and sets the native tooltip padding to zero, so only the padding and border defined for the HTML element itself are displayed.
DELAY Tooltip shows up after the specified timeout, in milliseconds. A behavior similar to OS based tooltips.
Value: Integer ≥ 0. Use 0 for no delay. In wz_tooltip.js preset and recommended is 400.
Example:
onmouseover="Tip('Some text', DELAY, 1000)"
DURATION Time span, in milliseconds, until the tooltip is hidden, even if the STICKY command has been applied, or even if the mouse is still on the HTML element that has triggered the tooltip.
Value: Integer. Use 0 for no limitation (this is the default).
 
A negative value has a different meaning: It specifies a duration, in milliseconds, starting with the onmouseout until the tooltip is hidden. In other words, a negative value makes tooltip hide with some delay, rather than immediately. Especially useful for tooltips that don't follow the movements of the mouse (FOLLOWMOUSE, false).
EXCLUSIVE No other tooltip can be displayed until this one has been closed actively by the user. Value: true, false. Makes only sense for sticky tooltips (STICKY command). Of course, you must also provide the CLOSEBTN or/and CLICKCLOSE command to give the user a means to close the tooltip.
FADEIN Fade-in animation. The value (integer ≥ 0) specifies the duration of the animation, in milliseconds. 0 for no animation.
 
Not supported in Opera prior to v.9.0, old versions of Safari, some versions of Konqueror. These fall back to normal, non-animated behaviour.
FADEOUT Fade-out animation. The value (integer ≥ 0) specifies the duration of the animation, in milliseconds. 0 for no animation. Recommended: combine with FADEIN. Note that a small animation duration of 100 ms (recommended) is globally preset in wz_tooltip.js.
 
Not supported in Opera prior to v.9.0, old versions of Safari, some versions of Konqueror. These fall back to normal, non-animated behaviour.
FIX
Mode 1: Fixed x and y coordinates.
Shows the tooltip at the fixed coordinates [x, y]. Value: Two comma-separated integers in square brackets.
Example:
onmouseover="Tip('Some text', FIX, [230, 874])"
You can also call function(s) defined elsewhere that calculate the coordinates dynamically:
onmouseover="Tip('Text', FIX, [CalcFixX(), CalcFixY()], BORDERWIDTH, 2)"
or
onmouseover="Tip('Text', FIX, CalcFixXY(), ABOVE, true)"
In the latter example, the function CalcFixXY() must return an array containing the two numbers.
FIX
Mode 2: Fixed position at a certain HTML element.
Displays the tooltip at any desired HTML element - optionally even a different one than Tip() is called from. Value: Three comma-separated values in square brackets. The first value specifies the HTML element to display the tooltip at, either by its ID (string, in single quotes), or by a direct reference (no quotes). The second and third value (integers) define the horizontal and vertical offset of the tooltip from the left-bottom corner of the HTML element.
 
Example 1, ID of HTML element:
... onmouseover="Tip('Some text', FIX, ['PurpleSpan', 0, 5])"
...
<span id="PurpleSpan">HTML element to show the tooltip on</span>
This code snippet lets the tooltip appear 5 pixels below the bottom edge of the SPAN element.
 
Example 2, direct reference to HTML element:
<a href="..." onmouseover="Tip('Some text', FIX, [this, 0, 5], ABOVE, true)" onmouseout="UnTip()">Link</a>
This code snippet displays the tooltip directly at the HTML element (link) hovered with the mouse. As reference, we use the JavaScript keyword this - which automatically points to the HTML element the JavaScript eventhandler (e.g. onmouseover) stands in. Additionally, the ABOVE command is used in order to place the tooltip at the top edge of the HTML element.
FOLLOWMOUSE The tooltip follows the movements of the mouse. Value: true, false. Default: true.
 
When turning this off by applying the value false, the tooltip behaves like OS-based tooltips, which usually don't follow the mouse.
FONTCOLOR Font color. Value: HTML color, in single quotes, e.g. '#990099'
FONTFACE Font face (font family).
Value: As you'd specify it in HTML or CSS, enclosed with single quotes, e.g. Tip('Some text', FONTFACE, 'Arial, Helvetica, sans-serif', FONTSIZE, '12pt')
FONTSIZE Font size. Value: Size with unit, in single quotes. Unit ('px', 'pt', 'em' etc.) is mandatory.
FONTWEIGHT Font weight. Value: 'normal' or 'bold', in single quotes.
HEIGHT Height of the tooltip body, without title, shadows etc.. Value: Any integer.
If 0 (the preset default), the height is automatically adapted to the content of the tooltip. A negative number (e.g. -100) specifies a maximum limit for the automatic adaption (in this example the height won't ever go beyond 100 pixels).
 
Note that the tooltips follow the W3C box model, which means that the specified height applies to the actual content of the tooltip only, excluding padding (see PADDING command), border and shadow. If the height of the tooltip content exceeds the specified height, the tooltip is featured with a vertical scrollbar. Therefore, make sure that such tooltips of limited height are sticky (see STICKY command), so your visitors are given the chance to scroll the tooltip content.
JUMPHORZ Value: true, false. Test again.
If true: When touching the window boundary, the tooltip jumps horizontally to the other side of the mouse.
If false (preset default in wz_tooltip.js): The tooltip just stops by the right (or left) window boundary. In either case, the tooltip is prevented from extending past the window boundary.
JUMPVERT When it touches the bottom (or top) window boundary, the tooltip jumps vertically to the other side of the mouse.
Value: true, false. This behaviour is on (true) by default (preset in wz_tooltip.js).
 
Important: At least either JUMPVERT or JUMPHORZ behaviour, or both, should be true, so the mouse cannot enter the tooltip and thus trigger an onmouseout event when the tooltip is simultaneously stopped by a vertical and horizontal window boundary. Recommended and preset in wz_tooltip.js: JUMPVERT true, JUMPHORZ false.
LEFT Tooltip positioned on the left side of the mousepointer. Value: true, false.
LEFT and ABOVE commands combined.
Example:
onmouseover="Tip('Some text', LEFT, true, ABOVE, true)"
OFFSETX Horizontal offset from mouse-pointer. Value: Any integer. May also be negative.
OFFSETY Vertical offset from the mouse-pointer. Value: Any integer. May also be negative.
OPACITY Transparency of tooltip. Value: Integer between 0 (fully transparent) and 100 (opaque, no transparency).
 
Opacity is the opposite of transparency, i.e.
opacity = 100 - transparency (in percent).
Another example with image (taken on my 9000-km / 5500-miles recumbent bicycle trip Hamburg-Northcape-Munich), shadow via SHADOW command, content centered using TEXTALIGN, background image via BGIMG and animation via FADEIN and FADEOUT commands.
 
Not supported in Opera prior to v.9.0, old versions of Safari and some versions of Konqueror.
PADDING Inner spacing of tooltip, between border and content. Value: Integer ≥ 0.
SHADOW Tooltip drops a shadow. Value: true, false
SHADOWCOLOR Shadow color. Value: HTML color, in single quotes.
Example:
onmouseover="Tip('Some text', SHADOW, true, SHADOWCOLOR, '#dd99aa')"
SHADOWWIDTH Shadow width (offset). Value: Integer ≥ 0.
Example:
onmouseover="Tip('Some text', SHADOW, true, SHADOWWIDTH, 7)"
STICKY The tooltip stays fixed at its initial position until another tooltip pops up. Value: true, false.
 
With DURATION you can enforce the tooltip to disappear after a certain time span.
TEXTALIGN Aligns the text in the body of the tooltip. Value: 'right', 'center', 'justify' or 'left'.
Example:
onmouseover="Tip('Some text', TEXTALIGN, 'right')"
TITLE Displays a titlebar. Value: Text to display, in single quotes. May even contain HTML, which gives you additional freedom in fashioning the titlebar.
TITLEALIGN Aligns the text in the titlebar. Value: 'right', 'center', 'justify' or 'left'
TITLEBGCOLOR Backgroundcolor of the titlebar. Value: HTML color, in single quotes. If it's an empty string '', the border color (see also BORDERCOLOR command) is used (this is the default).
TITLEFONTCOLOR Color of title text. Value: HTML color, in single quotes. If it's an empty string '', the backgroundcolor of the tooltip body (see also BGCOLOR command) is used (this is the default).
TITLEFONTFACE Font face for title text. Value: Like in HTML or CSS. Enclosed with single quotes. If the value is an empty string '', the tooltip body font, in boldified form, is used (this is the default).
Example:
onmouseover="Tip('Some text', TITLE, 'Some Title', TITLEFONTFACE, 'Verdana,sans-serif')"
TITLEFONTSIZE Font size of title text. Value: Size with unit, in single quotes. Unit ('px', 'pt', 'em' etc.) is mandatory. If the value is an empty string '', the fontsize of the tooltip body is applied.
TITLEPADDING Padding around the title. Value: Integer ≥ 0.
WIDTH Width of tooltip. Value: Any integer.
If 0 (the preset default), the width is automatically adapted to the content of the tooltip. A negative number (e.g. -240) specifies a maximum limit for the automatic adaption (in this example the width won't ever go wider than 240 pixels).
 
A value of -1 for WIDTH has a special meaning: In this case the width of the tooltip is determined by the extent of the title. That is, the tooltip will be as wide as the title plus, if specified, the closebutton.
 
Note that the tooltips follow the W3C box model, which means that the specified width applies to the actual content of the tooltip, excluding padding (see PADDING command), border and shadow.


 
 
 
Extensions

Visit the Extensions page for additional configuration options.
 
 
 
 
Download
wz_tooltip.js 5.31, published under the LGPL:
wz_tooltip.zip (16 KB)
 
history.htm (Changelog of wz_tooltip.js)
 
Important notes for users of previous versions
 
Starting with version 5.0, an onmouseout attribute is required for each HTML tag that has a tooltip. Example:
<a href="index.htm" onmouseover="Tip('Some text')" onmouseout="UnTip()"> Home </a>
Simply call UnTip() from inside those onmouseout attributes. See also documentation above. The additional onmouseout attribute may be a bit less elegant, but gives you more freedom in specifying the event upon which to hide a tooltip.

 
 
 
Old Version For those who are still using a version prior to v.4.0 and want to stay with the old rules of defining tooltips and including the script:
Documentation and download of wz_tooltip.js v.3.45
 
 
 
Donation
Financial support for the very numerous hours of development and for the costs of hosting this website is welcome.
Posted by 1010
01.JAVA/Java2009. 6. 29. 17:15
반응형

자바에서 파일을 복사하는 코드이다. JDK 1.4 이상에부터는 java.nio.* 패키지를 사용하며 더 빠른 IO 작업을 할 수 있다.

1. JDK 1.4 이전에서 IO 패키지 이용

import java.io.*;

public static void copyFile(String source, String target) throws IOException {
    FileInputStream fis = new FileInputStream(source);
    FileOutputStream fos = new FileOutputStream(target);
    try {
        byte[] buf = new byte[1024];
        int i = 0;
        while ((i = fis.read(buf)) != -1) {
            fos.write(buf, 0, i);
        }
    } catch (IOException e) {
        throw e;
    } finally {
        if (fis != null)
            fis.close();
        if (fos != null)
            fos.close();
    }
}

2. JDK 1.4 이상에서 NIO 패키지 이용 (더 빠름)
import java.io.*;
import java.nio.channels.*;

public static void copyFile(String source, String target) throws IOException {
    FileChannel inChannel = new FileInputStream(source).getChannel();
    FileChannel outChannel = new FileOutputStream(target).getChannel();
    try {
        // magic number for Windows, 64Mb - 32Kb
        int maxCount = (64 * 1024 * 1024) - (32 * 1024);
        long size = inChannel.size();
        long position = 0;
        while (position < size) {
            position += inChannel.transferTo(position, maxCount, outChannel);
        }
    } catch (IOException e) {
        throw e;
    } finally {
        if (inChannel != null)
            inChannel.close();
        if (outChannel != null)
            outChannel.close();
    }
}

Posted by 1010
01.JAVA/Java2009. 6. 29. 17:12
반응형

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;


public class FChannel {

 public FChannel() {
  // TODO Auto-generated constructor stub
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  long size = 0;
 
  try {
   // 원본 파일
   FileInputStream fis = new FileInputStream("D:\\filedown2\\pn2060.exe");
   
   // 카피할 파일
   FileOutputStream fos = new FileOutputStream("D:\\filedown2\\pn2060_copy.exe");
   
   
   // FileStream 으로부터 File Channel 을 가져온다.
   FileChannel fcin = fis.getChannel();
   FileChannel fcout = fos.getChannel();
   
   size = fcin.size();
   
   System.out.println("In File Size :" + size);
   
   // 파일의 처음 부터 끝까지, fcout 으로 전송 copy
   fcin.transferTo(0, size, fcout);
   
   fcout.close();
   fcin.close();
   
   fos.close();
   fis.close();
   
   System.out.println("File Copy OK");
   
   
  } catch (Exception e) {
   // TODO: handle exception
   e.printStackTrace();
  }
 }

}

[출처] FileChannel을 이용한 파일 복사 팁|작성자 리트머스


=================

import java.io.*;
import java.nio.channels.*;

public static void copyFile(String source, String target) throws IOException {
    FileChannel inChannel = new FileInputStream(source).getChannel();
    FileChannel outChannel = new FileOutputStream(target).getChannel();
    try {
        // magic number for Windows, 64Mb - 32Kb
        int maxCount = (64 * 1024 * 1024) - (32 * 1024);
        long size = inChannel.size();
        long position = 0;
        while (position < size) {
            position += inChannel.transferTo(position, maxCount, outChannel);
        }
    } catch (IOException e) {
        throw e;
    } finally {
        if (inChannel != null)
            inChannel.close();
        if (outChannel != null)
            outChannel.close();
    }
}
Posted by 1010
02.Oracle/DataBase2009. 6. 27. 16:09
반응형
바탕화면에서 텍스트 문서로 만들어서
내용을 삽입

오라클 서비스 시작 배치파일 orastart.bat

net start OracleDBConsoleorcl
net start OracleOraDb10g_home1iSQL*Plus
net start OracleOraDb10g_home1TNSListener
net start OracleServiceORCL

오라클 서비스 종료 배치파일 orastop.bat

net stop OracleDBConsoleorcl
net stop OracleOraDb10g_home1iSQL*Plus
net stop OracleOraDb10g_home1TNSListener
net stop OracleServiceORCL



-- xe 기준

@echo on
net start OracleXETNSListener
net start OracleServiceXE
pause

@echo on
net stop OracleXETNSListener
net stop OracleServiceXE
pause

Posted by 1010
90.개발관련문서2009. 6. 27. 15:48
반응형
Posted by 1010
56. Eclipse Etc.../Eclipse2009. 6. 27. 12:25
반응형
이클립스에 Project Explorer 창에서

Servers에 Tomcat 폴더에 있는 server.xml 파일을 연다

사용자 삽입 이미지

1. server.xml에 아래와 같이 추가해준다.
<Context ~~~~~>이부분 밑부분에 아래코드 기입
            <Resource
              name="jdbc/ORCL"
              auth="Container"
              type="javax.sql.DataSource"
             driverClassName="oracle.jdbc.driver.OracleDriver"
             url="jdbc:oracle:thin:@ip:port:sid"
             username="scott"
             password="tiger"
             maxActive="25"
             maxIdle="5"
             maxWait="10000"/>
</Context>

사용자 삽입 이미지


주의: <context ~~~~ /> 부분에 /를 꼭 지워주자 (빨간색 O 표시 된곳)




위에 붙여놓은 코드에서 자신의 ip와 port번호 sid 명을 변경해준다
계정명도 알아서 변경해준다
사용자 삽입 이미지



사용자 삽입 이미지
<Resource name="jdbc/ORCL" auth="Container"
     type="javax.sql.DataSource"
     driverClassName="oracle.jdbc.driver.OracleDriver"
     url="jdbc:oracle:thin:@localhost:1521:ORCL" username="scott"
     password="tiger" maxActive="25" maxIdle="5" maxWait="10000" />
    </Context>



사용자 삽입 이미지
maxIdle="5"  부분을 2로 바꿔주자 .2만되도 왠만한 연결은 다 커버된단다;

이제 저장하고나온다

이제 자신의 현제 프로젝트에 web.xml을 열어본다
자신의 프로젝트>web(WebContent)>WEB-INF>web.xml
사용자 삽입 이미지


2. web.xml에 아래와 같이 추가해준다.
<web-app ....>
 <resource-ref>
     <res-ref-name>jdbc/ORCL</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
 </resource-ref>
</web-app>

사용자 삽입 이미지



위에 3파일을 자신의 프로젝트에 WEB-INF>lib 부분에 붙여넣어준다
사용자 삽입 이미지


이제 위의 DAO를 가지고 자신의 패키지명에 맞게 설정해서 잘 쓰면된다;

단 server를 지우게되면 Servers에 server.xml을 다시 설정해줘야한다;;;
Posted by 1010
02.Oracle/DataBase2009. 6. 27. 12:19
반응형
[Oracle]오라클 어드민 팁  

Oracle Administration을 정리하다가 간단히 찾아고 조금이나마 도움이 되시라고 정리해서 올립니다.
너무 단시간에 두서없이 써서 보기도 좋지 않지만 필요하신 분들 심심할때 하나씩  
해보세요.(다들 아시는거지만~~)
아래 tips 는 하나의 database에서 작성한 것이 아니므로 각종 정보들(file들의 위치등)이  
tip마다 다를 수 있습니다. 각 tip은 개개의 것으로 생각하시고 응용하시기 바랍니다.
혹시 틀린 내용 발견되면 mail주세요. 바로 수정하겠습니다.
편집 이쁘게 못해서 죄송합니다.
나름대로 사연있는 글입니다.
정리하다가 날려먹어서 한 몇일 더 고생해서 작성한겁니다.^^;

님들도 좋은 정보 있으시면 공유하시죠.


================================================================================================  
1. DBMS = database(data file & control file & redo log file) +  
                                                   instance(memory & background processes)
================================================================================================  


2. Oracle Architecture Component

================================================================================================  

* Oracle Instance 확인 : v$instance

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
IBM

================================================================================================  

* datafile들의 경로 및 정보 : v$datafile
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/oracle/ora_data/system/system01.dbf
/oracle/ora_data/data/tools01.dbf
/oracle/ora_data/data/rbs01.dbf
/oracle/ora_data/data/temp01.dbf
/oracle/ora_data/data/users01.dbf

================================================================================================  

* control file의 경로 및 정보 : v$controlfile;

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/oracle/ora_data/contr1/ora_control1
/oracle/ora_data/contr2/ora_control2

================================================================================================  

* logfile의 경로 및 정보 : v$logfile

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/oracle/ora_data/redolog_a/redo1a.log
/oracle/ora_data/redolog_b/redo1b.log
/oracle/ora_data/redolog_a/redo2a.log
/oracle/ora_data/redolog_b/redo2b.log
/oracle/ora_data/redolog_a/redo3a.log
/oracle/ora_data/redolog_b/redo3b.log

================================================================================================  

* System Global Area 내용을 조회

SQL> select * from v$sga;

NAME                      VALUE
-------------------- ----------
Fixed Size               108588
Variable Size          27631616
Database Buffers        2252800
Redo Buffers              77824

SQL> show sga

Total System Global Area   30070828 bytes
Fixed Size                   108588 bytes
Variable Size              27631616 bytes
Database Buffers            2252800 bytes
Redo Buffers                  77824 bytes

================================================================================================  

* 현재 수행중인 background process들을 확인

SQL> select paddr,name,description from v$bgprocess where paddr>'00';

PADDR            NAME  DESCRIPTION
---------------- ----- ----------------------------------------------------------------
070000000139ABC0 PMON  process cleanup
070000000139AFD0 DBW0  db writer process 0
070000000139B3E0 LGWR  Redo etc.
070000000139B7F0 CKPT  checkpoint
070000000139BC00 SMON  System Monitor Process
070000000139C010 RECO  distributed recovery

SQL> !ps -ef|grep ora|grep

 oracle 25148     1   0  19:25:34      -  0:00 ora_reco_IBM
 oracle 60576     1   0  19:25:34      -  0:00 ora_smon_IBM
 oracle 60782     1   0  19:25:34      -  0:00 ora_pmon_IBM
 oracle 70166     1   0  19:25:34      -  0:00 ora_lgwr_IBM
 oracle 72248     1   0  19:25:34      -  0:00 ora_ckpt_IBM
 oracle 84918     1   0  19:25:34      -  0:00 ora_dbw0_IBM
 
================================================================================================  

* 초기화 파라미터 파일 : init.ora

================================================================================================  

* database log 모드 확인

SQL> connect internal
Connected.

SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /oracle/app/oracle/product/8.1.6/dbs/arch
Oldest online log sequence     20
Current log sequence           22

SQL> select log_mode from v$database;

LOG_MODE
------------
NOARCHIVELOG

================================================================================================  


3. Managing an Oracle Instance

================================================================================================  

단계별 :
shutdown : oracle이 내려가 있는 상태
nomount : instance started(SGA, B.G process를 시작 init.ora에서 읽어서)
alert, trace file open
- 이 단계에서 할 수 있는 것은  
 a. db creation
- 이 상태에서도 볼수있는 view
 v$parameter
 v$dga
 v$option
 v$process
 v$session
 v$version
 v$instance

mount : control file opened for this instance
- 이 단계에서 할 수 있는 것은 control file의 내용을 변경하는것
 a. archivelog mode로 변환
 b. data file/redo log file rename시
 c. recovery시

- SQL>alter database open read only;
 로 하게되면 data file에 writing을 허용 안함.

open : control file에 기술된 모든 files open

================================================================================================  

* parameter 변경 종류

a. init.ora 에서 변경
b. alter session set ~
c. alter system set ~    => shutdown 될때까지 변경된것 유효
  alter system deffered set ~ => 현재 session에서만 변경된것 유효

================================================================================================  

* 특정 session 죽이기

SQL> select sid, serial#,username,status from v$session; => (특정 user는 where username='SCOTT'로)
      SID    SERIAL# USERNAME                       STATUS
---------- ---------- ------------------------------ --------
        1          1                                ACTIVE
        2          1                                ACTIVE
        3          1                                ACTIVE
        4          1                                ACTIVE
        5          1                                ACTIVE
        6          1                                ACTIVE
        7          1 SYS                            ACTIVE

SQL> alter system kill session '7,3'    -- 7은 sid, 3은 serial#

================================================================================================  

* alert file 과 trace file
- alert file은 꼭 1개, 중요한사건,시간순으로 (startup,shutdown,recovery)
- trace file은 여러개 가능, background process는 background_dump_dest에 생기고 server process는
 user_dump_dest에 생성된다.

================================================================================================  


4. Creating a Database

================================================================================================  

* Create a Database Manually

a. OS Environment setting

.profile에 ORACLE_HOME,ORACLE_SID,ORA_NLS33,PATH,(ORACLE_BASE) 등을 편집한다.

ex)
DISPLAY=swsvrctr:0.0
ORACLE_HOME=/oracle/app/oracle/product/8.1.7
PATH=$ORACLE_PATH/bin:/usr/ccs/bin:$PATH
NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
ORACLE_SID=IBM

b. init.ora file을 copy하고 편집한다.
file
db_name=KYS
control_files = (/home/oracle/data02/control/control01.ctl,/home/oracle/data02/control/control02.ctl)
db_block_size = 8192

기본적으로 위 두개 parameter외에
rollback_segments=(rbs1,rbs2,..)  =>나중에 rollback segment생성후 DB start시 Online되는 rbs지정
background_dump_dest=/home/oracle/data02/bdump
user_dump_dest=/home/oracle/data02/udump
core_dump_dest=/home/oracle/data02/cdump

c. Starting the Instance

SQL> startup nomount
SQL> startup nomount pfile=initKYS.ora

SQL> create database KYS
 2     maxlogfiles 5
 3     maxlogmembers 5
 4     maxdatafiles 100
 5     maxloghistory 100
 6  logfile
 7     group 1 ('/home/oracle/data02/redolog/log1a.rdo','/home/oracle/data02/redolog2/log1b.rdo') size 1m,
 8     group 2 ('/home/oracle/data02/redolog/log2a.rdo','/home/oracle/data02/redolog2/log2b.rdo') size 1m
 9  datafile
10     '/home/oracle/data02/data/system01.dbf' size 50m autoextend on
11  character set "KO16KSC5601";

일단 여기까지 database는 생성이 되었다.
이후부터는 추가적인 작업이다.

d. 추가 system rollback segment 생성

SQL> create rollback segment r0 tablespace system
 2  storage (initial 16k next 16k minextents 2 maxextents 10);

 
e. rollback sement online

SQL> alter rollback segment r0 online;


f. rollback segment tablespace 생성 & datafile 저장위치, 크기 및 초기값 지정

SQL> create tablespace rbs
 2  datafile '/home/oracle/data02/data/rbs01.dbf' size 300m
 3  default storage(
 4  initial            4M
 5  next               4M
 6  pctincrease        0
 7  minextents         10
 8  maxextents         unlimited);

g. rollback segment 생성

SQL> create rollback segment r01 tablespace rbs
 2  storage (minextents 10 optimal 40M);
SQL> create rollback segment r02 tablespace rbs
 2  storage (minextents 10 optimal 40M);
SQL> create rollback segment r03 tablespace rbs
 2  storage (minextents 10 optimal 40M);
SQL> create rollback segment r04 tablespace rbs
 2  storage (minextents 10 optimal 40M);


h. rollback segment online

SQL> alter rollback segment r01 online;
SQL> alter rollback segment r02 online;
SQL> alter rollback segment r03 online;
SQL> alter rollback segment r04 online;


i. 추가 system rollback segment off-line 및 삭제  

SQL> alter rollback segment r0 offline;
SQL> drop rollback segment r0;

j. sorting 작업시 필요한 temporary tablespace 생성 & datafile 저장 위치, 크기 및 초기값 지정

SQL> create tablespace temp
 2  datafile '/home/oracle/data02/data/temp01.dbf' size 300 temporary
 3  default storage(
 4  initial            4M
 5  next               4M
 6  maxextents         unlimited
 7  pctincrease        0);
 
 
k. 추가 tablespace 생성 & data file 저장 위치 및 크기 지정

SQL> create tablespace tools
 2  datafile '/home/oracle/data02/data/tools.dbf' size 50m
 3  default storage(
 4  maxextents 505
 5  pctincrease 0);
 
SQL> create tablespace users
 2  datafile '/home/oracle/data02/data/user01.dbf' size 30M
 3  default storage(
 4  maxextents 505
 5  pctincrease 0);
 
l. 작업 환경에서 추가적으로 필요한 tablespace는 위의 방법으로 생성한다.


================================================================================================  


5. Data Dictionary and Standard Package

================================================================================================  

* database 생성후 돌려줘야 할 script

$ORACLE_HOME/rdbms/admin/catalog.sql ==> dictionary views, export utility views 생성
$ORACLE_HOME/rdbms/admin/catproc.sql ==> procedures, functions 생성
$ORACLE_HOME/rdbms/admin/catdbsyn.sql ==> synonyms 생성

================================================================================================  

* Dictionary list 확인

SQL> col table_name format a30
SQL> col comments format a45
SQL> set pages 800
SQL> spool dictionary.lst
SQL> select * from dictionary order by 1 ==> 전체 dictionary의 list를 볼 수 있다.
SQL> spool off
SQL> ed sictionary.lst
SQL> select * from dictionary where table_name like '%TABLE%'; ==> table 관련 dictionary  
SQL> select * from dictionary where table_name like '%INDEX%';  ==> index 관련 dictionary

================================================================================================  

* 유용한 dictionary  

TABLE_NAME                     COMMENTS
------------------------------ ---------------------------------------------
DBA_USERS                      Information about all users of the database
DBA_TABLESPACES                Description of all tablespaces
DBA_DATA_FILES                 Information about database data files
DBA_FREE_SPACE                 Free extents in all tablespaces
DBA_OBJECTS                    All objects in the database
DBA_SEGMENTS                   Storage allocated for all database segments
DBA_ROLLBACK_SEGS              Description of rollback segments
DBA_EXTENTS                    Extents comprising all segments in the database
DBA_TABLES                     Description of all relational tables in the d
                              atabase
DBA_INDEXES                    Description for all indexes in the database
DBA_VIEWS                      Description of all views in the database
DBA_TRIGGERS                   All triggers in the database
DBA_SOURCE                     Source of all stored objects in the database

================================================================================================  

* sample Query

SQL> select username,default_tablespace,temporary_tablespace from dba_users;
SQL> select tablespace_name,bytes,file_name from dba_data_files;
SQL> select tablespace_name,count(*),sum(bytes) from dba_free_space
 2  group by tablespace_name;
 
================================================================================================  


6. Maintiaining the Contorol File

================================================================================================  

* Control File 리스트 조회

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/home/oracle/data01/oradata/IBM/control01.ctl
/home/oracle/data01/oradata/IBM/control02.ctl
/home/oracle/data01/oradata/IBM/control03.ctl

================================================================================================  

* Control File 을 하나 추가해보자

a. database shutdown
SQL> shutdown immediate

b. control file 복사(os상 물리적인 복사)
/home/oracle/data01/oradata/IBM> cp control03.ctl control04.ctl ==> 실제는 다른 disk로 복사해야함
   문제발생을 대비해 분리하는것임.

c. Parameter File 편집
control_files = ("/home/oracle/data01/oradata/IBM/control01.ctl",  
"/home/oracle/data01/oradata/IBM/control02.ctl",  
"/home/oracle/data01/oradata/IBM/control03.ctl",  
"/home/oracle/data01/oradata/IBM/control04,ctl")

d. database startup & 확인
SQL> startup
SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/home/oracle/data01/oradata/IBM/control01.ctl
/home/oracle/data01/oradata/IBM/control02.ctl
/home/oracle/data01/oradata/IBM/control03.ctl
/home/oracle/data01/oradata/IBM/control04.ctl ==> 하나 더 추가되었지요...(실제는 다른disk로)

================================================================================================  


7. Multiplexing Redo Log Files

================================================================================================  

* Redo Log File 리스트 조회

SQL> select group#,sequence#,bytes,members,status from v$log;

   GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- --------------------------------
        1        862     512000          1 CURRENT
        2        860     512000          1 INACTIVE
        3        861     512000          1 INACTIVE

SQL> select * from v$logfile;

   GROUP# STATUS         MEMBER
---------- -------------- --------------------------------------------------
        1                /home/oracle/data01/oradata/IBM/redo03.log
        2                /home/oracle/data01/oradata/IBM/redo02.log
        3                /home/oracle/data01/oradata/IBM/redo01.log          

================================================================================================  

* Log Group 추가(기존 로그 파일과 동일한 사이즈로)

SQL> alter database add logfile
 2  '/home/oracle/data01/oradata/IBM/redo04.log' size 200k;

SQL> select group#,sequence#,bytes,members,status from v$log;

   GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- --------------------------------
        1        862     512000          1 CURRENT
        2        860     512000          1 INACTIVE
        3        861     512000          1 INACTIVE
        4          0     204800          1 UNUSED

SQL> select * from v$logfile;

   GROUP# STATUS         MEMBER
---------- -------------- --------------------------------------------------
        1                /home/oracle/data01/oradata/IBM/redo03.log
        2                /home/oracle/data01/oradata/IBM/redo02.log
        3                /home/oracle/data01/oradata/IBM/redo01.log
        4                /home/oracle/data01/oradata/IBM/redo04.log

================================================================================================  

* Log Group 별 멤버 파일 추가    ==> backup 시 risk줄이기 위해 실제는 다른 disk에 해야함.

SQL> alter database add logfile member
 2  '/home/oracle/data01/oradata/IBM/redo01b.log' to group 1,
 3  '/home/oracle/data01/oradata/IBM/redo02b.log' to group 2,
 4  '/home/oracle/data01/oradata/IBM/redo03b.log' to group 3,
 5  '/home/oracle/data01/oradata/IBM/redo04b.log' to group 4;

================================================================================================  

* 확인

SQL> !ls /home/oracle/data01/oradata/IBM/*.log
/home/oracle/data01/oradata/IBM/redo01.log   /home/oracle/data01/oradata/IBM/redo03.log
/home/oracle/data01/oradata/IBM/redo01b.log  /home/oracle/data01/oradata/IBM/redo03b.log
/home/oracle/data01/oradata/IBM/redo02.log   /home/oracle/data01/oradata/IBM/redo04.log
/home/oracle/data01/oradata/IBM/redo02b.log  /home/oracle/data01/oradata/IBM/redo04b.log

SQL> select group#,sequence#,bytes,members,status from v$log;

   GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- --------------------------------
        1        862     512000          2 CURRENT
        2        860     512000          2 INACTIVE
        3        861     512000          2 INACTIVE
        4          0     204800          2 UNUSED ==> 아직 한번도 사용되지 않음

SQL> select * from v$logfile;

   GROUP# STATUS         MEMBER
---------- -------------- --------------------------------------------------
        1                /home/oracle/data01/oradata/IBM/redo03.log
        2                /home/oracle/data01/oradata/IBM/redo02.log
        3                /home/oracle/data01/oradata/IBM/redo01.log
        4                /home/oracle/data01/oradata/IBM/redo04.log
        1 INVALID        /home/oracle/data01/oradata/IBM/redo01b.log
        2 INVALID        /home/oracle/data01/oradata/IBM/redo02b.log
        3 INVALID        /home/oracle/data01/oradata/IBM/redo03b.log
        4 INVALID        /home/oracle/data01/oradata/IBM/redo04b.log


==> 현재 사용되고 있는 log group 은 group 1이고 나중에 추가한 member들은 invalid 한 상태이다.
강제로 log switch를 일으켜서 valid하게 바꾸자.

SQL> alter system switch logfile;

SQL> select group#,sequence#,bytes,members,status from v$log;

   GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- --------------------------------
        1        862     512000          2 ACTIVE
        2        860     512000          2 INACTIVE
        3        861     512000          2 INACTIVE
        4        863     204800          2 CURRENT ==> unused에서 바뀜.

SQL> select * from v$logfile;

   GROUP# STATUS         MEMBER
---------- -------------- --------------------------------------------------
        1                /home/oracle/data01/oradata/IBM/redo03.log
        2                /home/oracle/data01/oradata/IBM/redo02.log
        3                /home/oracle/data01/oradata/IBM/redo01.log
        4                /home/oracle/data01/oradata/IBM/redo04.log
        1 INVALID        /home/oracle/data01/oradata/IBM/redo01b.log
        2 INVALID        /home/oracle/data01/oradata/IBM/redo02b.log
        3 INVALID        /home/oracle/data01/oradata/IBM/redo03b.log
        4                /home/oracle/data01/oradata/IBM/redo04b.log ==> valid하게 바뀜
         
================================================================================================  


Log Miner

================================================================================================  

* Parameter File 의 utl_file_dir 편집

a. 확인

SQL> select name,value from v$parameter
 2  where name='utl_file_dir';
 
NAME                 VALUE
-------------------- ------------------------------
utl_file_dir

SQL> !mkdir $ORACLE_HOME/LOG

b. LogMiner사용을 위해 init.ora file 편집
utl_file_dir=/oracle/app/oracle/product/8.1.7/LOG

c. restart

SQL> shutdown immediate
SQL> startup

확인
SQL> select name,value from v$parameter
 2  where name='utl_file_dir';
 
NAME                 VALUE
-------------------- ------------------------------
utl_file_dir         /oracle/app/oracle/product/8.1.7/LOG ==> LogMiner 준비를 위한 parameter set

d. LogMiner setting - 반드시 트랜잭션의 첫번째 명령이어야 함

SQL> commit;
SQL> exec dbms_logmnr_d.build('v817dict.ora','/oracle/app/oracle/product/8.1.7/LOG');
BEGIN dbms_logmnr_d.build('v817dict.ora','/oracle/app/oracle/product/8.1.7/LOG'); END;

*
ERROR at line 1:
ORA-06532: Subscript outside of limit
ORA-06512: at "SYS.DBMS_LOGMNR_D", line 793
ORA-06512: at line 1

SQL> !ls $ORACLE_HOME/LOG

SQL> exec dbms_logmnr.add_logfile('/home/oracle/data01/oradata/IBM/redo01.log',DBMS_LOGMNR.NEW);
SQL> exec dbms_logmnr.add_logfile('/home/oracle/data01/oradata/IBM/redo02.log',DBMS_LOGMNR.ADDFILE);
SQL> exec dbms_logmnr.add_logfile('/home/oracle/data01/oradata/IBM/redo03.log',DBMS_LOGMNR.ADDFILE);
SQL> exec dbms_logmnr.add_logfile('/home/oracle/data01/oradata/IBM/redo04.log',DBMS_LOGMNR.ADDFILE);
SQL> exec dbms_logmnr.start_logmnr('/oracle/app/oracle/product/8.1.7/LOG/v817dict.ora');


e. 트랜잭션 수행

SQL> descc scott.dept
SQL> select * from scott.dept;
SQL> insert into scott.dept values(99,'test','test');
SQL> update scott.dept set loc='TEST' where deptno=99;
SQL> commit;

f. log miner 정보 분석
SQL> select timestamp,username,sql_redo from v$logmnr_contents
 2  where seg_name='DEPT';

g. 로그마이닝 종료

SQL> exec dbms_logmnr.end_logmnr;

================================================================================================  


8. Managing TableSpace and Data Files

================================================================================================  

* tablespace와 datafile 조회

SQL> col tablespace_name format a15
SQL> col file_name format a45
SQL> select tablespace_name,status,contents from dba_tablespaces;

TABLESPACE_NAME STATUS             CONTENTS
--------------- ------------------ ------------------
SYSTEM          ONLINE             PERMANENT
TOOLS           ONLINE             PERMANENT
RBS             ONLINE             PERMANENT
TEMP            ONLINE             TEMPORARY
USERS           ONLINE             PERMANENT
INDX            ONLINE             PERMANENT
DRSYS           ONLINE             PERMANENT

SQL> select tablespace_name,bytes,file_name from dba_data_files;

TABLESPACE_NAME      BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
TOOLS             10485760 /home/oracle/data01/oradata/IBM/tools01.dbf
DRSYS             20971520 /home/oracle/data01/oradata/IBM/drsys01.dbf
USERS             20971520 /home/oracle/data01/oradata/IBM/users01.dbf
INDX              20971520 /home/oracle/data01/oradata/IBM/indx01.dbf
RBS               52428800 /home/oracle/data01/oradata/IBM/rbs01.dbf
TEMP              20971520 /home/oracle/data01/oradata/IBM/temp01.dbf
SYSTEM           283115520 /home/oracle/data01/oradata/IBM/system01.dbf

================================================================================================  

* tablespace 생성 및 사이즈 변경

SQL> create tablespace data05
 2  datafile '/home/oracle/data01/oradata/IBM/data05_01.dbf' size 1m;

Tablespace created.

1m 짜리 datafile 하나를 가진 tablespace data05를 추가하였다. 확인.

SQL> select tablespace_name,bytes,file_name from dba_data_files
 2  where tablespace_name='DATA05';

TABLESPACE_NAME      BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
DATA05             1048576 /home/oracle/data01/oradata/IBM/data05_01.dbf

tablespace가 부족할때 늘리는 방법은 두가지가 있다.  
하나는 datafile을 추가하는 방법이고 다른하나는 datafile의 size를 늘리는 방법이다.

a. datafile을 하나 추가해보자.

SQL> alter tablespace data05
 2  add datafile '/home/oracle/data01/oradata/IBM/data05_02.dbf' size 1m;
 
SQL> select tablespace_name,bytes,file_name from dba_data_files
 2  where tablespace_name='DATA05';

TABLESPACE_NAME      BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
DATA05             1048576 /home/oracle/data01/oradata/IBM/data05_01.dbf
DATA05             1048576 /home/oracle/data01/oradata/IBM/data05_02.dbf

제대로 추가되었다.


b. 그렇다면 하나의 사이즈를 변경해보자.

SQL> alter database datafile
 2  '/home/oracle/data01/oradata/IBM/data05_02.dbf' resize 2m;
 
SQL> select tablespace_name,bytes,file_name from dba_data_files
 2  where tablespace_name='DATA05';

TABLESPACE_NAME      BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
DATA05             1048576 /home/oracle/data01/oradata/IBM/data05_01.dbf
DATA05             2097152 /home/oracle/data01/oradata/IBM/data05_02.dbf

2m로 제대로 변경이 되었다.

다시 원상복구
SQL> alter database datafile
 2  '/home/oracle/data01/oradata/IBM/data05_02.dbf' resize 1m;

전체를 다시 확인해보자

SQL> select tablespace_name,bytes,file_name from dba_data_files;

TABLESPACE_NAME      BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
TOOLS             10485760 /home/oracle/data01/oradata/IBM/tools01.dbf
DRSYS             20971520 /home/oracle/data01/oradata/IBM/drsys01.dbf
USERS             20971520 /home/oracle/data01/oradata/IBM/users01.dbf
INDX              20971520 /home/oracle/data01/oradata/IBM/indx01.dbf
RBS               52428800 /home/oracle/data01/oradata/IBM/rbs01.dbf
TEMP              20971520 /home/oracle/data01/oradata/IBM/temp01.dbf
SYSTEM           283115520 /home/oracle/data01/oradata/IBM/system01.dbf
DATA05             1048576 /home/oracle/data01/oradata/IBM/data05_01.dbf
DATA05             1048576 /home/oracle/data01/oradata/IBM/data05_02.dbf

================================================================================================  

* tablespace 삭제 : Dictionary에서만 삭제되는것으로 실제 물리적으로 파일은 os command로 삭제해야한다.


SQL> select tablespace_name from dba_tablespaces
 2  where tablespace_name like 'DATA%'
 3  minus
 4  select distinct tablespace_name from dba_segments;

TABLESPACE_NAME
---------------
DATA05

SQL> drop tablespace data05;
SQL> select tablespace_name,bytes,file_name from dba_data_files;

TABLESPACE_NAME      BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
TOOLS             10485760 /home/oracle/data01/oradata/IBM/tools01.dbf
DRSYS             20971520 /home/oracle/data01/oradata/IBM/drsys01.dbf
USERS             20971520 /home/oracle/data01/oradata/IBM/users01.dbf
INDX              20971520 /home/oracle/data01/oradata/IBM/indx01.dbf
RBS               52428800 /home/oracle/data01/oradata/IBM/rbs01.dbf
TEMP              20971520 /home/oracle/data01/oradata/IBM/temp01.dbf
SYSTEM           283115520 /home/oracle/data01/oradata/IBM/system01.dbf

SQL> !ls //home/oracle/data01/oradata/IBM/*.dbf
//home/oracle/data01/oradata/IBM/data05_01.dbf  //home/oracle/data01/oradata/IBM/system01.dbf
//home/oracle/data01/oradata/IBM/data05_02.dbf  //home/oracle/data01/oradata/IBM/temp01.dbf
//home/oracle/data01/oradata/IBM/drsys01.dbf    //home/oracle/data01/oradata/IBM/tools01.dbf
//home/oracle/data01/oradata/IBM/indx01.dbf     //home/oracle/data01/oradata/IBM/users01.dbf
//home/oracle/data01/oradata/IBM/rbs01.dbf

dictionary에서는 삭제되었으나 여전히 물리적인 file은 존재한다. 삭제하면 된다.
(tablespace생성시에는 file이 그냥 생성되나 삭제시는 dictionary삭제후 강제로 삭제해줘야 한다.)

SQL> !rm /home/oracle/data01/oradata/IBM/data05*

================================================================================================  

* tablespace 의 online/offline, read only/read write

SQL> select tablespace_name, status from dba_tablespaces;

TABLESPACE_NAME                                              STATUS
------------------------------------------------------------ ------------------
SYSTEM                                                       ONLINE
TOOLS                                                        ONLINE
RBS                                                          ONLINE
TEMP                                                         ONLINE
USERS                                                        ONLINE
INDX                                                         ONLINE
DRSYS                                                        ONLINE

7 rows selected.

SQL> select tablespace_name from dba_tables
 2  where table_name ='DEPT' and owner='SCOTT';

TABLESPACE_NAME
------------------------------------------------------------
SYSTEM

default로 생성시 scott user의 data가 system tablespace에 생성되었으나 이렇게 쓰면 안된다.
하나 생성해볼까?

SQL> create tablespace data01
 2  datafile '/home/oracle/data01/oradata/IBM/data01.dbf' size 1m;

Tablespace created.

SQL> connect scott/tiger
Connected.

SQL> create table dept_tmp tablespace data01
 2  as select * from dept;
 
SQL> connect internal
Connected.
SQL> select tablespace_name from dba_tables
 2  where table_name ='DEPT_TMP' and owner='SCOTT';

TABLESPACE_NAME
------------------------------------------------------------
DATA01

SQL> select * from scott.dept_tmp;

   DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
       10 ACCOUNTING                   NEW YORK
       20 RESEARCH                     DALLAS
       30 SALES                        CHICAGO
       40 OPERATIONS                   BOSTON
       
제대로 된다. 그렇다면 tablespace를 offline으로...

SQL> alter tablespace data01 offline;
SQL> select tablespace_name, status from dba_tablespaces
 2  where tablespace_name='DATA01';

TABLESPACE_NAME                                              STATUS
------------------------------------------------------------ ------------------
DATA01                                                       OFFLINE

SQL> select * from scott.dept_tmp;
select * from scott.dept_tmp
                   *
ERROR at line 1:
ORA-00376: file 8 cannot be read at this time
ORA-01110: data file 8: '/home/oracle/data01/oradata/IBM/data01.dbf'

위와 같이 error가 발생한다.
다시 online으로 해두자.
SQL> alter tablespace data01 online;

이번엔 read only로 변경
SQL> alter tablespace data01 read only;

SQL> select tablespace_name, status from dba_tablespaces
 2  where tablespace_name='DATA01';

TABLESPACE_NAME                                              STATUS
------------------------------------------------------------ ------------------
DATA01                                                       READ ONLY

변경되었다.

SQL> insert into scott.dept_tmp values(80,'new_dept','new_loc');
insert into scott.dept_tmp values(80,'new_dept','new_loc')
                 *
ERROR at line 1:
ORA-00372: file 8 cannot be modified at this time
ORA-01110: data file 8: '/home/oracle/data01/oradata/IBM/data01.dbf'

insert같은 DML(write성) 수행시 위와 같은 error 발생

원상복구
SQL> alter tablespace data01 read write;
SQL> insert into scott.dept_tmp values(80,'test','test');

제대로 된다.
================================================================================================  


9. Storage Structure and Relationships

================================================================================================  

* Extent 정보 조회 : 다음과 같이 각종 extent,segment 등의 정보를 조회해 볼 수 있다.

SQL> col owner format a10
SQL> col segment_type format a12
SQL> col segment_name format a12
SQL> col tablespace_name format a10

SQL> select owner,segment_name,segment_type, tablespace_name,max_extents,extents,pct_increase
 2  from dba_segments
 3  where max_extents - extents <= 10 and owner !='SYS';

no rows selected

SQL> select owner,segment_name,segment_type, tablespace_name,max_extents,extents,pct_increase
 2  from dba_segments
 3  where owner='SCOTT';

OWNER      SEGMENT_NAME SEGMENT_TYPE TABLESPACE MAX_EXTENTS    EXTENTS PCT_INCREASE
---------- ------------ ------------ ---------- ----------- ---------- ------------
SCOTT      DEPT_TMP     TABLE        DATA01             505          1           50
SCOTT      DEPT         TABLE        SYSTEM      2147483645          1           50
SCOTT      EMP          TABLE        SYSTEM      2147483645          1           50
SCOTT      BONUS        TABLE        SYSTEM      2147483645          1           50
SCOTT      SALGRADE     TABLE        SYSTEM      2147483645          1           50
SCOTT      PK_DEPT      INDEX        SYSTEM      2147483645          1           50
SCOTT      PK_EMP       INDEX        SYSTEM      2147483645          1           50


SQL> select segment_name,extents, initial_extent, next_extent,pct_increase
 2  from dba_segments
 3  where owner='SCOTT' and segment_name='EMP';

SEGMENT_NAME    EXTENTS INITIAL_EXTENT NEXT_EXTENT PCT_INCREASE
------------ ---------- -------------- ----------- ------------
EMP                   1          65536       65536           50


SQL> select segment_name,extent_id,block_id,bytes,blocks
 2  from dba_extents
 3  where owner='SCOTT' and segment_name='EMP';
 4  order by 2,3;
 
SEGMENT_NAME  EXTENT_ID   BLOCK_ID      BYTES     BLOCKS
------------ ---------- ---------- ---------- ----------
EMP                   0      33945      65536          8

================================================================================================  

* Free space 관리

tablespace내에 free space를 먼저 확인해본다.
SQL> select * from dba_free_space
 2  where tablespace_name ='DATA01' order by 1,2,3;

TABLESPACE    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
DATA01              8          7     999424        122            8

테이블을 여러개 생성해보자.
SQL> create table scott.dept2 tablespace data01 as select * from scott.dept;
SQL> create table scott.dept3 tablespace data01 as select * from scott.dept;
SQL> create table scott.dept4 tablespace data01 as select * from scott.dept;
SQL> create table scott.dept5 tablespace data01 as select * from scott.dept;
SQL> create table scott.dept6 tablespace data01 as select * from scott.dept;

SQL> select * from dba_free_space
 2  where tablespace_name ='DATA01' order by 1,2,3;

TABLESPACE    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
DATA01              8         32     794624         97            8

사용함에 따라 tablespace내 free space 가 줄어듦을 알 수 있다.

SQL> drop table scott.dept2;
drop table dept2
          *
ERROR at line 1:
ORA-04098: trigger 'SYS.JIS$ROLE_TRIGGER$' is invalid and failed re-validation
이건 또 뭐야 ? trigger가 걸려있네요...  
table drop 을 위해
SQL> alter trigger SYS.JIS$ROLE_TRIGGER$ disable;
drop table scott.dept3; ==> dept4 만 빼고 전부 drop
drop table scott.dept5;
drop table scott.dept6;

SQL> select * from dba_free_space
 2  where tablespace_name ='DATA01' order by 1,2,3;

TABLESPACE    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
DATA01              8          7      40960          5            8
DATA01              8         32     794624         97            8

tablespace의 free space가 늘긴 했는데 쪼개졌네요..
빈공간을 병합하자
SQL> alter tablespace data01 coalesce;

SQL> select * from dba_free_space
 2  where tablespace_name ='DATA01' order by 1,2,3;

TABLESPACE    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
DATA01              8          7      40960          5            8
DATA01              8         32     794624         97            8

그래도 두개로 쪼개져 있는 이유는? 중간에 dept4 가 사용하는 space가 coalesce 되지 않았기 때문

SQL> drop table scott.dept4;
SQL> alter tablespace data01 coalesce;

완전히 병합되었다.

================================================================================================  



10. Managing Rollback Segments

================================================================================================  

* rollback segment의 정보 조회

SQL> col owner format a10
SQL> col segment_name format a12
SQL> col segment_type format a12
SQL> col tablespace_name format a10
SQL> col status format a7

SQL> select segment_name,tablespace_name,status,initial_extent,next_extent,min_extents
 2  from dba_rollback_segs;

SEGMENT_NAME TABLESPACE STATUS  INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS
------------ ---------- ------- -------------- ----------- -----------
SYSTEM       SYSTEM     ONLINE           57344       57344           2
RBS0         RBS        ONLINE          524288      524288           8
RBS1         RBS        ONLINE          524288      524288           8
RBS2         RBS        ONLINE          524288      524288           8
RBS3         RBS        ONLINE          524288      524288           8
RBS4         RBS        ONLINE          524288      524288           8
RBS5         RBS        ONLINE          524288      524288           8
RBS6         RBS        ONLINE          524288      524288           8

================================================================================================  

* rollback segment 생성

SQL> create rollback segment rbs99
 2  tablespace rbs
 3  storage(initial 20k next 20k minextents 2 optimal 80k);

Rollback segment created.

SQL> select segment_name,tablespace_name,status,initial_extent,next_extent,min_extents
 2  from dba_rollback_segs;

SEGMENT_NAME TABLESPACE STATUS  INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS
------------ ---------- ------- -------------- ----------- -----------
SYSTEM       SYSTEM     ONLINE           57344       57344           2
RBS0         RBS        ONLINE          524288      524288           8
RBS1         RBS        ONLINE          524288      524288           8
RBS2         RBS        ONLINE          524288      524288           8
RBS3         RBS        ONLINE          524288      524288           8
RBS4         RBS        ONLINE          524288      524288           8
RBS5         RBS        ONLINE          524288      524288           8
RBS6         RBS        ONLINE          524288      524288           8
RBS99        RBS        OFFLINE          24576       32768           2

추가되었다. online으로 전환하자.

SQL> alter rollback segment rbs99 online;


SQL> create table emp2 as select * from emp;


SQL> select name,extents,xacts,shrinks,optsize
 2  from v$rollname n, v$rollstat s
 3  where n.usn = s.usn;

NAME                      EXTENTS      XACTS    SHRINKS    OPTSIZE
---------------------  ----------- ---------- ---------- ----------
SYSTEM                          9          0          0
RBS0                            8          0          0    4194304
RBS1                            8          0          0    4194304
RBS2                            8          0          0    4194304
RBS3                            8          0          0    4194304
RBS4                            8          0          0    4194304
RBS5                            8          0          0    4194304
RBS6                            8          0          0    4194304
RBS99                           2          0          0      81920   ==> extents,xacts의 변화 관찰


SQL> set transaction use rollback segment rbs99;
SQL> update emp2 set hiredate=sysdate;


SQL> select name,extents,xacts,shrinks,optsize
 2  from v$rollname n, v$rollstat s
 3  where n.usn = s.usn;

NAME               EXTENTS      XACTS    SHRINKS    OPTSIZE
--------------- ---------- ---------- ---------- ----------
SYSTEM                   9          0          0
RBS0                     8          0          0    4194304
RBS1                     8          0          0    4194304
RBS2                     8          0          0    4194304
RBS3                     8          0          0    4194304
RBS4                     8          0          0    4194304
RBS5                     8          0          0    4194304
RBS6                     8          0          0    4194304
RBS99                    2          1          0      81920 ==> transaction이 시작됨


SQL> update emp2 set hiredate=sysdate-1;  
sql> insert into emp2 select * from emp2; ==> 엄청 많이 수행 하자.


SQL> select name,extents,xacts,shrinks,optsize
 2  from v$rollname n, v$rollstat s
 3  where n.usn = s.usn;

NAME               EXTENTS      XACTS    SHRINKS    OPTSIZE
--------------- ---------- ---------- ---------- ----------
SYSTEM                   9          0          0
RBS0                     8          0          0    4194304
RBS1                     8          0          0    4194304
RBS2                     8          0          0    4194304
RBS3                     8          0          0    4194304
RBS4                     8          0          0    4194304
RBS5                     8          0          0    4194304
RBS6                     8          0          0    4194304
RBS99                    3          1          0      81920 ==> extents 증가


SQL> rollback;
SQL> set transaction use rollback segment rbs99;
SQL> update emp2 set sal=1000;


SQL> select name,extents,xacts,shrinks,optsize
 2  from v$rollname n, v$rollstat s
 3  where n.usn = s.usn;

NAME               EXTENTS      XACTS    SHRINKS    OPTSIZE
--------------- ---------- ---------- ---------- ----------
SYSTEM                   9          0          0
RBS0                     8          0          0    4194304
RBS1                     8          0          0    4194304
RBS2                     8          0          0    4194304
RBS3                     8          0          0    4194304
RBS4                     8          0          0    4194304
RBS5                     8          0          0    4194304
RBS6                     8          0          0    4194304
RBS99                    3          1          0      81920   ==> automatic 하게 shrink되었는지 확인

이전 tranx은 종료되었고 새로운 tranx가 시작됨

================================================================================================  

* rollback segment 삭제



SQL> rollback;


SQL> select name,extents,xacts,shrinks,optsize
 2  from v$rollname n, v$rollstat s
 3  where n.usn = s.usn; ==> xacts 가 '0' 인지 먼저 확인
 
SQL> alter rollback segment rbs99 offline;
SQL> drop rollback segment rbs99;
SQL> select segment_name,tablespace_name,status,initial_extent,next_extent,min_extents
 2  from dba_rollback_segs;

SEGMENT_NAME TABLESPACE STATUS  INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS
------------ ---------- ------- -------------- ----------- -----------
SYSTEM       SYSTEM     ONLINE           57344       57344           2
RBS0         RBS        ONLINE          524288      524288           8
RBS1         RBS        ONLINE          524288      524288           8
RBS2         RBS        ONLINE          524288      524288           8
RBS3         RBS        ONLINE          524288      524288           8
RBS4         RBS        ONLINE          524288      524288           8
RBS5         RBS        ONLINE          524288      524288           8
RBS6         RBS        ONLINE          524288      524288           8
 
확인해보니 삭제되었다.

================================================================================================  


11.Managing Tables

================================================================================================  

* Temporary Table

a. on commit perserve rows : session내에서 생성한 temp table에 대해서 지속적.
  새로운 session 연결 되면 data 지워짐

Example : Creating a Session-Specific Temporary Table
CREATE GLOBAL TEMPORARY TABLE ...
    [ON COMMIT PRESERVE ROWS ]

b. on commit delete rows : tansaction이 끝나면 temp table 내의 data가 지워짐(commit,rollback등)

Example : Creating a Transaction-Specific Temporary Table
CREATE GLOBAL TEMPORARY TABLE ...
    [ON COMMIT DELETE ROWS ]

================================================================================================  

* Using Temporary Tables to Improve Performance

You can use temporary tables to improve performance when you run complex queries.  
Running multiple such queries is relatively slow because the tables are accessed multiple times  
for each returned row. It is faster to cache the values from a complex query in a temporary table,  
then run the queries against the temporary table.  

For example, even with a view like this defined to simplify further queries,  
the queries against the view may be slow because the contents of the view are recalculated each time:  

CREATE OR REPLACE VIEW Profile_values_view AS
SELECT d.Profile_option_name, d.Profile_option_id, Profile_option_value,
      u.User_name, Level_id, Level_code
 FROM Profile_definitions d, Profile_values v, Profile_users u
WHERE d.Profile_option_id = v.Profile_option_id
  AND ((Level_code = 'USER' AND Level_id = U.User_id) OR
       (Level_code = 'DEPARTMENT' AND Level_id = U.Department_id) OR
       (Level_code = 'SITE'))
  AND NOT EXISTS (SELECT 1 FROM PROFILE_VALUES P
                   WHERE P.PROFILE_OPTION_ID = V.PROFILE_OPTION_ID
                     AND ((Level_code = 'USER' AND
                           level_id = u.User_id) OR
                          (Level_code = 'DEPARTMENT' AND
                           level_id = u.Department_id) OR
                          (Level_code = 'SITE'))
                     AND INSTR('USERDEPARTMENTSITE', v.Level_code) >
                         INSTR('USERDEPARTMENTSITE', p.Level_code));


A temporary table allows us to run the computation once,  
and cache the result in later SQL queries and joins:  

CREATE GLOBAL TEMPORARY TABLE Profile_values_temp
        (
            Profile_option_name   VARCHAR(60)   NOT NULL,
            Profile_option_id     NUMBER(4)     NOT NULL,
            Profile_option_value  VARCHAR2(20)  NOT NULL,
            Level_code            VARCHAR2(10)          ,
            Level_id              NUMBER(4)             ,
            CONSTRAINT Profile_values_temp_pk
               PRIMARY KEY (Profile_option_id)
        ) ON COMMIT PRESERVE ROWS ORGANIZATION INDEX;

INSERT INTO Profile_values_temp
      (Profile_option_name, Profile_option_id, Profile_option_value,
       Level_code, Level_id)
SELECT Profile_option_name, Profile_option_id, Profile_option_value,
       Level_code, Level_id
 FROM Profile_values_view;
COMMIT;


Now the temporary table can be used to speed up queries,  
and the results cached in the temporary table are freed automatically by the database  
when the session ends.  

================================================================================================  

* Row Migration Test

scott/tiger로 접속해서

SQL> create table chain_test(col1 varchar2(100));

Table created.

SQL> insert into chain_test values('a');

1 row created.

SQL> insert into chain_test select * from chain_test;   <====== 1 row created.
SQL> / <====== 2 rows created.
SQL> / <====== 4 rows created.
SQL> / <====== 8 rows created.
SQL> / <====== 16 rows created.
SQL> / <====== 32 rows created.
SQL> / <====== 64 rows created.
SQL> / <====== 128 rows created.
SQL> / <====== 256 rows created.
SQL> / <====== 512 rows created.
SQL> commit;

SQL> @$ORACLE_HOME/rdbms/admin/utlchain                 <====== chanined_rows table생성

Table created.

SQL> desc chained_rows
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
OWNER_NAME                                         VARCHAR2(30)
TABLE_NAME                                         VARCHAR2(30)
CLUSTER_NAME                                       VARCHAR2(30)
PARTITION_NAME                                     VARCHAR2(30)
SUBPARTITION_NAME                                  VARCHAR2(30)
HEAD_ROWID                                         ROWID
ANALYZE_TIMESTAMP                                  DATE

SQL> analyze table chain_test list chained rows;

Table analyzed.

SQL> select count(*) from chained_rows;

 COUNT(*)
----------
        0                             ======> 아직까지는 chaining이 하나도 없지...
         
SQL> update chain_test
 2  set col1 = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';

1024 rows updated.

SQL> analyze table chain_test list chained rows;

Table analyzed.

SQL> select count(*) from chained_rows;

 COUNT(*)
----------
      995                       ==============> row migration이 다량 발생


row migration이 일어나면 여러 block에서 읽어야 하므로 그만큼 performance가 떨어진다.
이를 해결하기 위해 주기적으로 analyze하여 확인해보고 insert를 다시 해주면 된다.
chaining이 일어난 row들의 rowid로 찾아서 임시table을 생성하고 원래 table에서 chaining이 일어난
data를 삭제하고 다시 insert하면 된다.


SQL> create table chain_tmp as select * from chain_test
 2  where rowid in (select head_rowid from chained_rows where table_name='CHAIN_TEST');

SQL> delete from chain_test
 2  where rowid in(select head_rowid from chained_rows where table_name='CHAIN_TEST');

SQL> insert into chain_test select *  from chain_tmp;

SQL> commit;

다시 cahined_rows table 을 삭제하고 analyze해보자.
SQL> truncate table chained_rows;

Table truncated.

SQL> analyze table chain_test list chained rows;

Table analyzed.

SQL> select * from chained_rows; <====== no rows selected

chaining이 없어졌다.

================================================================================================  


12. Managing Indexes

================================================================================================  

1. B*Tree Index 생성, 확인

SQL> col table_name format a10
SQL> col index_name format a20
SQL> col index_type format a10
SQL> col column_name format a12
SQL> create index scott.dept_dname_ind on scott.dept(dname);

Index created.

SQL> create unique index scott.dept_deptno_uind on scott.dept(deptno);
create unique index scott.dept_deptno_uind on scott.dept(deptno)
                                                        *
ERROR at line 1:
ORA-01408: such column list already indexed

error가 난 이유는 column이 pk로 지정될때는 unique index가 자동으로 생성되기 때문.

user_constraints, user_cons_columns 등에서 확인해보면 알수있다.

SQL> select table_name,index_name,index_type,uniqueness
 2  from dba_indexes
 3  where owner='SCOTT';

TABLE_NAME INDEX_NAME           INDEX_TYPE UNIQUENESS
---------- -------------------- ---------- ------------------
DEPT       DEPT_DNAME_IND       NORMAL     NONUNIQUE ====> 생성한 index
AUDIT_ACTI I_AUDIT_ACTIONS      NORMAL     UNIQUE
ONS

DEPT       PK_DEPT              NORMAL     UNIQUE
EMP        PK_EMP               NORMAL     UNIQUE
DBMS_LOCK_ SYS_C001456          NORMAL     UNIQUE
ALLOCATED

DBMS_ALERT SYS_C001457          NORMAL     UNIQUE
_INFO


SQL> select table_name,index_name,column_position,column_name
 2  from dba_ind_columns
 3  where index_owner='SCOTT';

TABLE_NAME INDEX_NAME           COLUMN_POSITION COLUMN_NAME
---------- -------------------- --------------- ------------
DEPT       DEPT_DNAME_IND                     1 DNAME               ====> index가 걸린 column
AUDIT_ACTI I_AUDIT_ACTIONS                    1 ACTION
ONS

AUDIT_ACTI I_AUDIT_ACTIONS                    2 NAME
ONS

DEPT       PK_DEPT                            1 DEPTNO
EMP        PK_EMP                             1 EMPNO
DBMS_LOCK_ SYS_C001456                        1 NAME
ALLOCATED

DBMS_ALERT SYS_C001457                        1 NAME
_INFO

DBMS_ALERT SYS_C001457                        2 SID
_INFO

================================================================================================  

* Bitmap Index 생성, 확인

SQL> select count(*) from scott.emp;
SQL> select distinct job from scott.emp;

JOB
------------------
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN

SQL> create bitmap index scott.emp_job_bind on scott.emp(job);

SQL> select table_name,index_name,index_type,uniqueness
 2  from dba_indexes
 3  where owner='SCOTT';

TABLE_NAME INDEX_NAME           INDEX_TYPE UNIQUENESS
---------- -------------------- ---------- ------------------
DEPT       DEPT_DNAME_IND       NORMAL     NONUNIQUE
EMP        EMP_JOB_BIND         BITMAP     NONUNIQUE =====>
AUDIT_ACTI I_AUDIT_ACTIONS      NORMAL     UNIQUE
...

SQL> select table_name,index_name,column_position,column_name
 2  from dba_ind_columns
 3  where index_owner='SCOTT';

TABLE_NAME INDEX_NAME           COLUMN_POSITION COLUMN_NAME
---------- -------------------- --------------- ------------
DEPT       DEPT_DNAME_IND                     1 DNAME
EMP        EMP_JOB_BIND                       1 JOB =====>
AUDIT_ACTI I_AUDIT_ACTIONS                    1 ACTION
ONS

================================================================================================  

* Reverse Key Index 생성, 확인

SQL> create index scott.emp_hiredate_rind on scott.emp(hiredate) reverse;

SQL> select table_name,index_name,index_type,uniqueness
 2  from dba_indexes
 3  where owner='SCOTT';

TABLE_NAME INDEX_NAME           INDEX_TYPE UNIQUENESS
---------- -------------------- ---------- ------------------
DEPT       DEPT_DNAME_IND       NORMAL     NONUNIQUE
EMP        EMP_HIREDATE_RIND    NORMAL/REV NONUNIQUE ==>
EMP        EMP_JOB_BIND         BITMAP     NONUNIQUE
....

SQL> select table_name,index_name,column_position,column_name
 2  from dba_ind_columns
 3  where index_owner='SCOTT';

TABLE_NAME INDEX_NAME           COLUMN_POSITION COLUMN_NAME
---------- -------------------- --------------- ------------
DEPT       DEPT_DNAME_IND                     1 DNAME
EMP        EMP_HIREDATE_RIND                  1 HIREDATE ==>
EMP        EMP_JOB_BIND                       1 JOB
....

================================================================================================  

* Funtion-Based Index 생성, 확인 <===== Query Rewrite권한 필요

SQL> create index scott.emp_sal_find on scott.emp(sal * 1.1);


SQL> select table_name,index_name,index_type,uniqueness
 2  from dba_indexes
 3  where owner='SCOTT';

TABLE_NAME INDEX_NAME           INDEX_TYPE UNIQUENESS
---------- -------------------- ---------- ------------------
DEPT       DEPT_DNAME_IND       NORMAL     NONUNIQUE
EMP        EMP_HIREDATE_RIND    NORMAL/REV NONUNIQUE
EMP        EMP_JOB_BIND         BITMAP     NONUNIQUE
EMP        EMP_SAL_FIND         FUNCTION-B NONUNIQUE ==>
                               ASED NORMA
                               L
....

SQL> select table_name,index_name,column_position,column_name
 2  from dba_ind_columns
 3  where index_owner='SCOTT';

TABLE_NAME INDEX_NAME           COLUMN_POSITION COLUMN_NAME
---------- -------------------- --------------- ------------
DEPT       DEPT_DNAME_IND                     1 DNAME
EMP        EMP_HIREDATE_RIND                  1 HIREDATE
EMP        EMP_JOB_BIND                       1 JOB
EMP        EMP_SAL_FIND                       1 SYS_NC00009$   ====> column name이 내부적으로 바뀐다.

....

================================================================================================  

* Index drop

SQL> drop index scott.dept_dname_ind;
SQL> drop index scott.emp_hiredate_rind;
SQL> drop index scott.emp_job_bind;
SQL> drop index scott.emp_sal_find;

================================================================================================  


13.Maintaining Data Integrity

================================================================================================  

* PK/UK 와 Unique Index

SQL> desc scott.dept
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
DEPTNO                                    NOT NULL NUMBER(2)
DNAME                                              VARCHAR2(14)
LOC                                                VARCHAR2(13)

PK생성은 다음과 같이 할 수 있다.

SQL> alter table scott.dept
 2  add constraint dept_deptno_pk primary key(deptno);
add constraint dept_deptno_pk primary key(deptno)
                             *
ERROR at line 2:
ORA-02260: table can have only one primary key

이미 pk가 설정이 되어있어서 한테이블에 두개의 pk를 설정할 수 없다는 error.

SQL> alter table scott.dept
 2  add constraint dept_dname_uk unique (dname);

Table altered.

SQL> select table_name,constraint_name,constraint_type, status
 2  from dba_constraints
 3  where owner='SCOTT';

TABLE_NAME           CONSTRAINT_NAME CO STATUS
-------------------- --------------- -- ----------------
DEPT                 DEPT_DNAME_UK   U  ENABLED <=== 새로 생성한 UK
EMP                  FK_DEPTNO       R  ENABLED
DEPT                 PK_DEPT         P  ENABLED
EMP                  PK_EMP          P  ENABLED
AUDIT_ACTIONS        SYS_C001454     C  ENABLED
AUDIT_ACTIONS        SYS_C001455     C  ENABLED
DBMS_LOCK_ALLOCATED  SYS_C001456     P  ENABLED
DBMS_ALERT_INFO      SYS_C001457     P  ENABLED


SQL> select table_name,index_name,index_type,uniqueness
 2  from dba_indexes
 3  where owner='SCOTT';

TABLE_NAME INDEX_NAME           INDEX_TYPE UNIQUENESS
---------- -------------------- ---------- ------------------
DEPT       DEPT_DNAME_UK        NORMAL     UNIQUE <==
AUDIT_ACTI I_AUDIT_ACTIONS      NORMAL     UNIQUE
ONS

SQL> select table_name,index_name,column_position,column_name
 2  from dba_ind_columns
 3  where index_owner='SCOTT';

TABLE_NAME INDEX_NAME           COLUMN_POSITION COLUMN_NAME
---------- -------------------- --------------- ------------
DEPT       DEPT_DNAME_UK                      1 DNAME  <==  
AUDIT_ACTI I_AUDIT_ACTIONS                    1 ACTION
ONS

================================================================================================  

* Constraint Check

SQL> insert into scott.dept values(50,'HR','SEOUL');

1 row created.

SQL> commit;

Commit complete.

SQL> insert into scott.dept values(50,'HR Dept','SEOUL');
insert into scott.dept values(50,'HR Dept','SEOUL')
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.PK_DEPT) violated

UK 값에 같은 값 insert하려다가 error가 난다.

================================================================================================  

* Constriaint 비활성화/활성화


SQL> alter table scott.dept
 2  disable constraint dept_dname_uk;

SQL> alter table scott.dept
 2  enable constraint dept_dname_uk;

================================================================================================  

* Deferred Constraint(?) ==> 자료좀 찾아보자..

================================================================================================  

* Constraint 삭제

alter table <테이블명> drop constraint

================================================================================================  


14. Loading Data

================================================================================================  

* 사용법

Usage: SQLLOAD keyword=value [,keyword=value,...]

Valid Keywords:

   userid -- ORACLE username/password
  control -- Control file name
      log -- Log file name
      bad -- Bad file name
     data -- Data file name
  discard -- Discard file name
discardmax -- Number of discards to allow          (Default all)
     skip -- Number of logical records to skip    (Default 0)
     load -- Number of logical records to load    (Default all)
   errors -- Number of errors to allow            (Default 50)
     rows -- Number of rows in conventional path bind array or between direct path data saves
              (Default: Conventional path 64, Direct path all)
 bindsize -- Size of conventional path bind array in bytes  (Default 65536)
   silent -- Suppress messages during run (header,feedback,errors,discards,partitions)
   direct -- use direct path                      (Default FALSE)
  parfile -- parameter file: name of file that contains parameter specifications
 parallel -- do parallel load                     (Default FALSE)
     file -- File to allocate extents from
skip_unusable_indexes -- disallow/allow unusable indexes or index partitions  (Default FALSE)
skip_index_maintenance -- do not maintain indexes, mark affected indexes as unusable  (Default FALSE)
commit_discontinued -- commit loaded rows when load is discontinued  (Default FALSE)
 readsize -- Size of Read buffer                  (Default 1048576)

PLEASE NOTE: Command-line parameters may be specified either by
position or by keywords.  An example of the former case is 'sqlload
scott/tiger foo'; an example of the latter is 'sqlload control=foo
userid=scott/tiger'.  One may specify parameters by position before
but not after parameters specified by keywords.  For example,
'sqlload scott/tiger control=foo logfile=log' is allowed, but
'sqlload scott/tiger control=foo log' is not, even though the
position of the parameter 'log' is correct.

================================================================================================  
* case 별로 sqlldr을 사용하는법은  
http://technet.oracle.com/doc/server.815/a67792/ch04.htm#1364
에 자세히 나와있다. 그중 두가지 정도의 case만 기본적으로 다루어보자.

================================================================================================  

* case1 : data를 control file에 직접 입력하여 load하기

a. data 입력될 table 있어야함 (dept_tmp 라는 table을 생성하여 입력해보자)

SQL> create table dept_tmp as select * from dept;

Table created.

SQL> truncate table dept_tmp;

Table truncated.

b. control file을 구성한다.


load data
infile * ==> data 가 ctl file 끝에 있다는 의미
replace                   ==> 이게 없으면 빈테이블일때만 load된다.
into table dept_tmp
fileds terminated by ',' optionally enclosed by '"' ==> field 구분자와 "가 들어가면 빼고 입력된다.
(deptno,dname,loc)
begindata
12,research,"saratoga"
10,"accounting",cleveland
11,"art","salem"
13,finance,boston

c. 다음과 같이 sqlldr을 실행
oracle@swsvrctr:/home/oracle> sqlldr scott/tiger control=test.ctl log=test.log bad=test.bad
error가 생기면 log가 남고 loading 되지 않은 data만 bad file에 남는다.

================================================================================================  

* case 2 : Fixed-format records의 Loading

a. data 입력될 table 있어야함 (dept_tmp 라는 table을 생성하여 입력해보자)
SQL> create table emp_tmp as select * from emp;

Table created.

b. data file의 내용을 보고 그에 맞게 control file을 구성한다.

data file은 다음과 같다고 하자.

1111    joo     Manager         1111    19191.00        10
2222    hwang   salesman        2222    294974.50       20
3333    test    test            3333    4984.00         40
4444    kwon    engineer        4444    49.90           50

control file을 만들어보자.

load data
infile '/home/oracle/test.dat'
replace
into table emp_tmp

(empno position(01:04) integer external, ==> position을 일일이 맞추어 준다.
ename position(09:14) char,
job position(17:24) char,
mgr position(33:36) integer external,
sal position(41:49) decimal external,
comm position(51:54) decimal external,
deptno position(57:58) integer external)

주의 : data file의 data가 공백이 아닌 tab 으로 되어있으면 position에서 한칸으로 인식되니까 주의

c. 다음과 같이 sqlldr을 실행
home/oracle> sqlldr scott/tiger control=test.ctl data=test.dat log=test.log bad=test.bad

================================================================================================  


15. Reorganizing Data

================================================================================================  

* 오래 사용한 table 주로 DML성 문장이 자주 일어나 performance에 영향을 미치므로 주기적으로
 Reorganize 를 해주는것이 좋다.
 
 Export => table drop => import 순으로 한다.
 
 export 는 user 별로 table별로 받을 수 있다.
 
 a. Export

oracle@swsvrctr:/home/oracle> exp scott/tiger tables='dept,emp' file=test.dmp

Export: Release 8.1.6.0.0 - Production on Wed Jul 4 14:32:21 2001

(c) Copyright 1999 Oracle Corporation.  All rights reserved.


Connected to: Oracle8i Enterprise Edition Release 8.1.6.0.0, 64 bit - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
Export done in KO16KSC5601 character set and WE8ISO8859P1 NCHAR character set
server uses WE8ISO8859P1 character set (possible charset conversion)

About to export specified tables via Conventional Path ...
. . exporting table                           DEPT          7 rows exported
. . exporting table                            EMP         14 rows exported
Export terminated successfully without warnings.

 b. drop table
 
oracle@swsvrctr:/home/oracle> sqlplus scott/tiger

SQL> drop table emp;
SQL> drop table dept;

 c. Import
 
oracle@swsvrctr:/home/oracle> imp scott/tiger tables='dept,emp' file=test.dmp

Import: Release 8.1.6.0.0 - Production on Wed Jul 4 14:34:25 2001

(c) Copyright 1999 Oracle Corporation.  All rights reserved.


Connected to: Oracle8i Enterprise Edition Release 8.1.6.0.0, 64 bit - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production

Export file created by EXPORT:V08.01.06 via conventional path
import done in KO16KSC5601 character set and WE8ISO8859P1 NCHAR character set
import server uses WE8ISO8859P1 character set (possible charset conversion)
. importing SCOTT's objects into SCOTT
. . importing table                         "DEPT"          7 rows imported
. . importing table                          "EMP"         14 rows imported
About to enable constraints...
Import terminated successfully without warnings.


 d. 제대로 되었나 조회

SQL> select * from dept;
SQL> select * from emp;

================================================================================================  


16. Managing Password Security and Resources

================================================================================================  


* verify_function 생성을 위해 돌려줘야 할 script : $ORACLE_HOME/rdbms/admin/utlpwdmg.sql

  NAME
    utlpwdmg.sql - script for Default Password Resource Limits

  DESCRIPTION
    This is a script for enabling the password management features
    by setting the default password resource limits.

  NOTES
    This file contains a function for minimum checking of password
    complexity. This is more of a sample function that the customer
    can use to develop the function for actual complexity checks that the
    customer wants to make on the new password.

  MODIFIED   (MM/DD/YY)
  asurpur     04/17/97 - Fix for bug479763
  asurpur     12/12/96 - Changing the name of password_verify_function
  asurpur     05/30/96 - New script for default password management
  asurpur     05/30/96 - Created

================================================================================================  

* verify_function 생성 및 패스워드 관리기능 활성화

SQL> @$ORACLE_HOME/rdbms/admin/utlpwdmg

Function created.


Profile altered.

================================================================================================  

* 사용자 생성

utlpwdmg.sql script를 돌려 verify_function을 생성후 user를 생성할때는 몇가지를 check하여 좀더  
password 관리를 할 수 있도록 해준다.  
다음과 같이 user/passwd를 같게 하면 error가 나서 생성되지 않는다.

SQL> create user myuser identified by myuser
 2  default tablespace TS_USER1
 3  temporary tablespace TEMP;
create user myuser identified by myuser
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20001: Password same as user

다시 시도
SQL> create user myuser identified by mypasswd9$
 2  default tablespace ts_user1
 3  temporary tablespace temp;

User created.

SQL> grant connect,resource to myuser;

확인
SQL> connect myuser/mypasswd9$

================================================================================================  

* 패스워드 관리/ expire 시키기

SQL> alter user myuser password expire;

User altered.

admin이 강제로 expire시켰기 때문에 다음과 같이 password변경을 뭍는다.
SQL> connect myuser/mypassword9$
Changing password for test
New password:
Retype new password:
Password changed
Connected.

password를 또 규칙에 맞지 않게 넣으면 다음과 같은 error가 발생한다.

ERROR:
ORA-00988: missing or invalid password(s)

================================================================================================  

* dictionary 조회

SQL> select resource_name,limit from dba_profiles  
 2  where profile='DEFAULT' and resource_type='PASSWORD';

RESOURCE_NAME        LIMIT
-------------------- ---------------
FAILED_LOGIN_ATTEMPT 3
S

PASSWORD_LIFE_TIME   60
PASSWORD_REUSE_TIME  1800
PASSWORD_REUSE_MAX   UNLIMITED
PASSWORD_VERIFY_FUNC VERIFY_FUNCTION
TION

PASSWORD_LOCK_TIME   .0006
PASSWORD_GRACE_TIME  10

RESOURCE_NAME        LIMIT
-------------------- ---------------
FAILED_LOGIN_ATTEMPT 3
S

PASSWORD_LIFE_TIME   60
PASSWORD_REUSE_TIME  1800
PASSWORD_REUSE_MAX   UNLIMITED
PASSWORD_VERIFY_FUNC VERIFY_FUNCTION
TION

PASSWORD_LOCK_TIME   .0006
PASSWORD_GRACE_TIME  10

================================================================================================  


17. Managing Users

================================================================================================  

* OS 인증 : os에 login 한 id/passwd로 oracle의 id/passwd로 함께 사용하기 위한방법

a. user를 생성하는데 identified externally로 생성한다.

oracle@swsvrctr:/home/oracle> sqlplus internal
SQL> create user oracle identified externally
 2  default tablespace ts_user1
 3  temporary tablespace temp;

User created.

SQL> grant connect,resource to oracle;
SQL> revoke unlimited tablespace from oracle;
SQL> shutdown immediate

b. init.ora 에서 다음을 편집한다.(추가)
os_authent_prefix=""

c. startup하고 확인해본다.

SQL> startup
SQL> exit
oracle@swsvrctr:/home/oracle> sqlplus / ==> id/passwd를 넣을 필요없이 접속

SQL> select user from dual;

USER
------------------------------------------------------------
ORACLE

제대로 접속이 된다.

================================================================================================  

* tablespace 사용량 통제

SQL> connect internal
Connected.
SQL> col tablespacename format a10
SQL> col username format a10
SQL> alter user oracle quota 20k on ts_user1;  ==> oracle user는 ts_user1에 20k 만 사용 가능하다.

User altered.

SQL> select * from dba_ts_quotas;

TABLESPACE_NAME                                              USERNAME
------------------------------------------------------------ ----------
    BYTES  MAX_BYTES     BLOCKS MAX_BLOCKS
---------- ---------- ---------- ----------
TS_USER1                                                     ORACLE
        0      20480          0          5

SQL> connect /
Connected.
SQL> select user from dual;

USER
------------------------------------------------------------
ORACLE

SQL> create table test
 2  (id number(10))
 3  (tablespace ts_user1
 4  storage(initial 20k)
 
까지는 생성이 되나 다음과 같이 늘리려고 하면 error가 난다.

SQL> alter table test allocate extent(size 4k); ==> error

================================================================================================  


18. Managing Privileges

================================================================================================  

* with grant option과 with admin option  

(둘다 실행 권한을 받은 user가 다시 실행 권한을 다른 user에게 줄 수 있게 해주는 option이다.)
-- 차이는 with admin option으로 권한을 받은 user1이 다른 user2에게 권한을 부여한 후 user1으로부터
  권한을 revoke하면 user1의 권한만 revoke되나
  with grant option으로 부여하면 user1에게 revoke 될 시 user2의 권한도 cascade로 revoke된다.


oracle@swsvrctr:/home/oracle> sqlplus internal

SQL> col grantor format a10
SQL> col grantee format a10
SQL> col table_name format a10
SQL> col table_schema format a10
SQL> col privilege format a25
SQL> grant create user to scott with admin option; ==> with admin option으로 권한 부여후
SQL> connect scott/tiger
SQL> grant create user to oracle; ==> 다시 oracle 에게 같은 권한 부여후
SQL> connect internal
SQL> select * from dba_sys_privs
 2  where grantee in ('SCOTT','ORACLE');

GRANTEE    PRIVILEGE                 ADMIN_
---------- ------------------------- ------
ORACLE     CREATE USER               NO
SCOTT      CREATE USER               YES
SCOTT      UNLIMITED TABLESPACE      NO

SQL> revoke create user from scott; ==> scott의 권한을 revoke
SQL> select * from dba_sys_privs
 2  where grantee in ('SCOTT','ORACLE');

GRANTEE    PRIVILEGE                 ADMIN_
---------- ------------------------- ------
ORACLE     CREATE USER               NO ==> scott의 create user 권한만 revoke되었다.  
SCOTT      UNLIMITED TABLESPACE      NO     oracle권한은 그대로

SQL> grant select on dept to oracle with grant option; ==> with grant option 으로 권한 부여후
SQL> connect /
SQL> create user myuser identified by myuser1$
 2  default tablespace ts_user1
 3  temporary tablespace temp;

SQL> grant select on scott.dept to myuser; ==> 다시 같은 권한을 다른 myuser에게 부여

Grant succeeded.

SQL> select * from all_tab_privs
 2  where table_name='DEPT';

GRANTOR    GRANTEE    TABLE_SCHE TABLE_NAME PRIVILEGE                 GRANTA
---------- ---------- ---------- ---------- ------------------------- ------
SCOTT      ORACLE     SCOTT      DEPT       SELECT                    YES
ORACLE     MYUSER     SCOTT      DEPT       SELECT                    NO

SQL> revoke select on dept from oracle; ==> oracle의 권한을 revoke

Revoke succeeded.

SQL> select * from all_tab_privs           ==> with grant option으로 생성된 이하 myuser의 권한도
 2  where table_name='DEPT';      revoke 되었다.

no rows selected


================================================================================================  

* Database Auditing : user 사용 시간정보 확인, 동시사용자측정 등 여러가지에 필요

SQL> connect internal
SQL> shutdown immediate

init.ora file에서 편집
audit_trail = true            # if you want auditing ==> 주석기호(#) 삭제

SQL> startup

SQL> show parameter audit_trail
NAME                                 TYPE     VALUE                          
------------------------------------ -------------- ------------------------------
audit_trail                          string         TRUE

SQL> audit connect;
SQL> select * from dba_stmt_audit_opts;
USER_NAME            PROXY_NAME           AUDIT_OPTION    SUCCESS    FAILURE
-------------------- -------------------- --------------- ---------- ----------
                                         CREATE SESSION  BY ACCESS  BY ACCESS
                                         
SQL> connect scott/tiger
SQL> connect scott/fail
SQL> connect internal
SQL> select username,timestamp,action_name,logoff_time,returncode
 2  from dba_audit_session;

USERNAME   TIMESTAMP ACTION_NAME     LOGOFF_TI RETURNCODE
---------- --------- --------------- --------- ----------
SCOTT      05-JUL-01 LOGOFF          05-JUL-01          0 ==> login 성공하면 0 return
SCOTT      05-JUL-01 LOGON                           1017 ==> login 실패한 returncode

SQL> shutdown

파라미터 이전대로 돌려두자(#audit_trail=true : 주석처리)

SQL> startup 하고
SQL> show parameter audit_trail
NAME                                 TYPE     VALUE                          
------------------------------------ -------------- ------------------------------
audit_trail                          string         NONE

================================================================================================  


19. Managing Roles

================================================================================================  

* Role

resource role에 포함된 권한을 살펴보자
SQL> select  * from dba_sys_privs
 2  where grantee='RESOURCE';
 

GRANTEE    PRIVILEGE            ADMIN_
---------- -------------------- ------
RESOURCE   CREATE CLUSTER       NO
RESOURCE   CREATE INDEXTYPE     NO
RESOURCE   CREATE OPERATOR      NO
RESOURCE   CREATE PROCEDURE     NO
RESOURCE   CREATE SEQUENCE      NO
RESOURCE   CREATE TABLE         NO
RESOURCE   CREATE TRIGGER       NO
RESOURCE   CREATE TYPE          NO

8 rows selected.

다음은 dev라는 role을 만들어서
SQL> create role dev;
SQL> grant create table,create view to dev;
SQL> grant select on emp to dev;
SQL> connect internal

oracle이라는 user에게 dev,resource role, create session권한 부여
SQL> connect internal
SQL> grant dev to oracle;
SQL> grant resource to oracle;
SQL> grant create session to oracle;
SQL> alter user oracle default role resource;            ==> session의 연결 끊김에 상관없이 지속적으로
SQL> grant select_catalog_role to oracle;                logon 후 resource role이 enable되게 함
                                                            (set 할 필요 없이)
SQL> select segment_name,status from  dba_rollback_segs; ==> 현재 session에서 select_catalog_role이  
select segment_name,status from  dba_rollback_segs           disabled됨
                                *
ERROR at line 1:
ORA-00942: table or view does not exist

SQL> set role select_catalog_role; ==> set은 현재session에서 role을 사용가능하게 해줌.
   이를 위해 이 role은 이미 user에게 grant 되어있어야함.
SQL> select segment_name,status from  dba_rollback_segs;

--------------- --------------------------------
SEGMENT_NAME    STATUS
SYSTEM          ONLINE
RBS1            ONLINE
RBS2            ONLINE

================================================================================================  


20. Using National Language Support

================================================================================================  

* sysdate format 변경

SQL> connect internal
SQL> select sysdate from dual;

SYSDATE
---------
05-JUL-01

SQL> alter session set nls_date_format='YY/MM/DD:HH24:MI:SS';
SQL> select sysdate from dual;

SYSDATE
-----------------
01/07/05:12:25:37

================================================================================================  

* Character set 변경하고 한글명 table 만들기
-- 가급적 한글명 table은 만들지 않는것이 좋으나 만들수 없는것은 아니다.

SQL> create table scott.부서 as select scott.dept;
create table scott.부서 as select scott.dept
                  *
ERROR at line 1:
ORA-00911: invalid character ==> 테이블명이 한글이어서 error난다.


* Database Characterset을 변경해 보자. ==> 매우 조심스러운 작업
    (DATA 보존 못할 위험성 있다.backup 필요)

SQL> select * from nls_database_parameters ==> nls_database_parameters 에서 현재 DB의  
 2  where parameter like '%CHARACTERSET%';     characterset관련을 parameter를 확인
 
PARAMETER                 VALUE
------------------------- --------------------
NLS_CHARACTERSET          WE8ISO8859P1
NLS_NCHAR_CHARACTERSET    WE8ISO8859P1

SQL> select value from v$nls_valid_values ==> 234건의 data가 있다.
 2  where parameter like '%CHARACTERSET';

-- warning : character set을 변경 할수는 있지만 기존에 들어가있는 데이타에 대해서는 책임 못짐.

a.  
SQL> shutdown immediate
SQL> connect internal
SQL> startup mount exclusive;
SQL> alter system enable restricted session;
SQL> alter database open;

b.  
SQL> alter database character set ko16ksc5601;
SQL> alter database national chartacter charcter set ko16ksc5601;
-- 확인
SQL> select * from nls_database_parameters ==> nls_database_parameters 에서 현재 DB의  
 2  where parameter like '%CHARACTERSET%';     characterset관련을 parameter를 확인

shutdown immediate;

c. .profile edit
NLS_LANG=Amerian_America.us7ascii; export NLS_LANG을
NLS_LANG=korean_korea.ko16ksc5601; export NLS_LANG로 변경

d. Database startup

Posted by 1010
02.Oracle/DataBase2009. 6. 27. 12:14
반응형

시나리오 13
ARCHIVE LOG MODE, OFFLINE BACKUP
원인 :INACTIVE한 REDO LOG GROUP 유실

--1.정상 운영중

SQL> SELECT * FROM SCOTT.DEPT1;

    DEPTNO DNAME                LOC
---------- -------------------- --------------------
         1 S1                   S1
         3 S3                   S3
         4 S4                   S4
         5 S5                   S5
         6 S6                   S6
         7 S7                   S7
         9 B9                   B9
        10 S10                  S10
        11 S11                  S11
        12 S12                  S12

10 개의 행이 선택되었습니다.

SQL> INSERT INTO SCOTT.DEPT1 VALUES (13,'S13','S13');

1 개의 행이 만들어졌습니다.

SQL> COMMIT;

커밋이 완료되었습니다.

SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS
  2  FROM V$LOG;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1         32 YES INACTIVE
         2         33 NO  CURRENT
         3         31 YES INACTIVE

--CURRENT는 언제나 NO ARC
SQL> ALTER SYSTEM SWITCH LOGFILE;

시스템이 변경되었습니다.

SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS
  2  FROM V$LOG;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1         32 YES INACTIVE
         2         33 YES ACTIVE
        3         34 NO  CURRENT

3 개의 행이 선택되었습니다.

--CURRENT 3 ,  2번이 액티브되었다
--INSERT 명령은 LSN 33에 저장
SQL> SELECT GROUP#,MEMBER FROM V$LOGFILE;

    GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
         3
C:\ORACLE\ORADATA\ORCL\REDO03.LOG

         2
C:\ORACLE\ORADATA\ORCL\REDO02.LOG

         1
C:\ORACLE\ORADATA\ORCL\REDO01.LOG


--INACTIVE 1

SQL> HOST DEL C:\ORACLE\ORADATA\ORCL\REDO01.LOG

SQL> @LOGSWITCH
ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03113: 통신 채널에 EOF 가 있습니다


ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다


ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다


ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다


ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다


ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다


ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다


ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다


ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다


ALTER SYSTEM SWITCH LOGFILE
*
1행에 오류:
ORA-03114: ORACLE에 연결되어 있지 않습니다


SQL> --INACTIVE 는 신경쓰지않는파일
SQL> EXIT
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production에서 분리되었습니다.

C:\Documents and Settings\easy>STARTUP
'STARTUP'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.

C:\Documents and Settings\easy>SYS

C:\Documents and Settings\easy>SQLPLUS "SYS/ORACLE AS SYSDBA"

SQL*Plus: Release 9.2.0.1.0 - Production on 월 Jun 16 14:50:29 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

휴지 인스턴스에 접속되었습니다.

SQL> STARTUP
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
데이터베이스가 마운트되었습니다.
ORA-00313: 로그 그룹 1 (스레드 1의)의 멤버를 여는데 실패했습니다
ORA-00312: 온라인 로그 1 스레드 1: 'C:\ORACLE\ORADATA\ORCL\REDO01.LOG'


SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS FROM V$LOG;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1          0 YES UNUSED  //한번도 쓴적이 없다는뜻
         2         33 YES INACTIVE
         3         34 NO  INVALIDATED

--장애의 원인 1그룹
ALERT,TRACE파일 읽어보면 오류나온다

--3.복구
ARCHIVE LOG FILE은 존재함으로 사용자의 명령어는 잘보관
--삭제후 재생성

--GROUP삭제
SQL> ALTER DATABASE
  2  DROP LOGFILE GROUP 1;

데이타베이스가 변경되었습니다.

--재생성
SQL> ALTER DATABASE
  2  ADD LOGFILE GROUP 1 'C:\ORACLE\ORADATA\ORCL\REDO01.LOG'
  3  SIZE 100M;

데이타베이스가 변경되었습니다.

SQL> ALTER DATABASE OPEN;

데이타베이스가 변경되었습니다.

--4.확인
SQL> SELECT * FROM SCOTT.DEPT1;

    DEPTNO DNAME                LOC
---------- -------------------- --------------------
         1 S1                   S1
         3 S3                   S3
         4 S4                   S4
         5 S5                   S5
         6 S6                   S6
         7 S7                   S7
         9 B9                   B9
        10 S10                  S10
        11 S11                  S11
        12 S12                  S12
        13 S13                  S13

11 개의 행이 선택되었습니다.

--백업
SQL> @OFFBACKUP

HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL01.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL02.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL03.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CWMLITE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\DRSYS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\INDX01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\ODM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\TOOLS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\USERS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\XDB01.DBF C:\OFFBACKUP

HOST COPY C:\ORACLE\ORADATA\ORCL\TEMP01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO03.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO02.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO01.LOG C:\OFFBACKUP
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.

시나리오 14
ARCHIVE LOG MODE, OFFLINE BACKUP
원인 : CURRENT REDO LOG GROUP 유실

--1.정상 운영중
SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS FROM V$LOG;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1         35 NO  CURRENT
         2         33 YES INACTIVE
         3         34 YES INACTIVE

3 개의 행이 선택되었습니다.

SQL> SAVE REDO
file REDO.sql(이)가 생성되었습니다
--CURRENT:1
SQL> INSERT INTO SCOTT.DEPT1 VALUES(14,'S14','S14');

1 개의 행이 만들어졌습니다.

SQL> COMMIT;

커밋이 완료되었습니다.

SQL> ALTER SYSTEM SWITCH LOGFILE;

시스템이 변경되었습니다.

SQL> @REDO

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1         35 YES ACTIVE
         2         36 NO  CURRENT
         3         34 YES INACTIVE

3 개의 행이 선택되었습니다.

SQL> ALTER SYSTEM SWITCH LOGFILE;

시스템이 변경되었습니다.

SQL> @REDO

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1         35 YES ACTIVE
         2         36 YES ACTIVE
         3         37 NO  CURRENT

3 개의 행이 선택되었습니다.

--CURRENT 3
SQL> INSERT INTO SCOTT.DEPT1 VALUES(14,'A14','A14');

1 개의 행이 만들어졌습니다.

SQL> COMMIT;

커밋이 완료되었습니다.

--2. 장애 유도
SQL> SELECT GROUP#,SEQUENCE#,ARCHIVED,STATUS FROM V$LOG;

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1         35 YES INACTIVE
         2         36 YES INACTIVE
         3         37 NO  CURRENT

3 개의 행이 선택되었습니다.

SQL> SELECT GROUP#,MEMBER FROM V$LOGFILE;

    GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
        3
C:\ORACLE\ORADATA\ORCL\REDO03.LOG

         2
C:\ORACLE\ORADATA\ORCL\REDO02.LOG

         1
C:\ORACLE\ORADATA\ORCL\REDO01.LOG


3 개의 행이 선택되었습니다.

--CURRENT 3:
SQL> SHUTDOWN ABORT

ORACLE 인스턴스가 종료되었습니다.
SQL> EXIT
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production에서 분리되었습니다.

C:\Documents and Settings\easy>DEL C:\ORACLE\ORADATA\ORCL\REDO03.LOG

C:\Documents and Settings\easy>SQLPLUS "SYS/ORACLE AS SYSDBA"

SQL*Plus: Release 9.2.0.1.0 - Production on 월 Jun 16 15:17:36 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

휴지 인스턴스에 접속되었습니다.


SQL> STARTUP
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
데이터베이스가 마운트되었습니다.
ORA-00313: 로그 그룹 3 (스레드 1의)의 멤버를 여는데 실패했습니다
ORA-00312: 온라인 로그 3 스레드 1: 'C:\ORACLE\ORADATA\ORCL\REDO03.LOG'
ORA-27041: 파일을 열 수 없습니다
OSD-04002: 파일을 열 수 없음
O/S-Error: (OS 2) 지정된 파일을 찾을 수 없습니다.
//로그 그룹3 CURRENT가 이상하다


SQL> @REDO

    GROUP#  SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
         1         35 YES INACTIVE
         2         36 YES INACTIVE
         3         37 NO  CURRENT

//불완전복구를해야한다

--3.복구
불완전 복구

SQL> HOST COPY C:\OFFBACKUP\*.DBF C:\oracle\oradata\ORCL
C:\OFFBACKUP\CWMLITE01.DBF
C:\OFFBACKUP\DRSYS01.DBF
C:\OFFBACKUP\EXAMPLE01.DBF
C:\OFFBACKUP\INDX01.DBF
C:\OFFBACKUP\ODM01.DBF
C:\OFFBACKUP\SYSTEM01.DBF
C:\OFFBACKUP\TEMP01.DBF
C:\OFFBACKUP\TOOLS01.DBF
C:\OFFBACKUP\UNDOTBS01.DBF
C:\OFFBACKUP\USERS01.DBF
C:\OFFBACKUP\XDB01.DBF
       11개 파일이 복사되었습니다.

--아카이브있는곳까지 복구

사용자 삽입 이미지
//아카이브로그파일은 36번까지있다

SQL> RECOVER DATABASE UNTIL CANCEL
ORA-00279: 변환 291681가 (06/16/2008 14:55:40에서 생성된) 스레드 1에 필요합니다
ORA-00289: 제안 : C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00035.ARC
ORA-00280: 변환 291681(스레드 1를 위한)가 시퀀스번호 35에 있습니다


로그 지정: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00279: 변환 293975가 (06/16/2008 15:12:39에서 생성된) 스레드 1에 필요합니다
ORA-00289: 제안 : C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00036.ARC
ORA-00280: 변환 293975(스레드 1를 위한)가 시퀀스번호 36에 있습니다
ORA-00278: 이 복구를 위해 로그 'C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00035.ARC'
파일은 더이상 필요하지 않습니다


로그 지정: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00279: 변환 294145가 (06/16/2008 15:13:47에서 생성된) 스레드 1에 필요합니다
ORA-00289: 제안 : C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00037.ARC
ORA-00280: 변환 294145(스레드 1를 위한)가 시퀀스번호 37에 있습니다
ORA-00278: 이 복구를 위해 로그 'C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00036.ARC'
파일은 더이상 필요하지 않습니다. //더이상 복구하면 파일이없어 에러날것이다.


로그 지정: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00308: 아카이브된 로그 'C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00037.ARC'를 열
수 없습니다
ORA-27041: 파일을 열 수 없습니다
OSD-04002: 파일을 열 수 없음
O/S-Error: (OS 2) 지정된 파일을 찾을 수 없습니다.

//다시 실행해서 CANCEL 해준다.
SQL> RECOVER DATABASE UNTIL CANCEL
ORA-00279: 변환 294145가 (06/16/2008 15:13:47에서 생성된) 스레드 1에 필요합니다
ORA-00289: 제안 : C:\ORACLE\ORADATA\ORCL\ARCHIVE\ARCH00037.ARC
ORA-00280: 변환 294145(스레드 1를 위한)가 시퀀스번호 37에 있습니다


로그 지정: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL
매체 복구가 취소되었습니다.

SQL> ALTER DATABASE OPEN RESETLOGS;

데이타베이스가 변경되었습니다.

--4.확인

사용자 삽입 이미지

//REDO03.LOG가 복구되어있다.

SQL> SELECT * FROM SCOTT.DEPT1;

    DEPTNO DNAME                LOC
---------- -------------------- --------------------
         1 S1                   S1
         3 S3                   S3
         4 S4                   S4
         5 S5                   S5
         6 S6                   S6
         7 S7                   S7
         9 B9                   B9
        10 S10                  S10
        11 S11                  S11
        12 S12                  S12
        13 S13                  S13

    DEPTNO DNAME                LOC
---------- -------------------- --------------------
        14 S14                  S14  //불완전 복구 'A14'는 복구되지않았다.

12 개의 행이 선택되었습니다.

--5.백업 !!(불완전복구이므로 반드시)
SQL> @LOGSWITCH

시스템이 변경되었습니다.


시스템이 변경되었습니다.


시스템이 변경되었습니다.


시스템이 변경되었습니다.


시스템이 변경되었습니다.


시스템이 변경되었습니다.


시스템이 변경되었습니다.


시스템이 변경되었습니다.


시스템이 변경되었습니다.


시스템이 변경되었습니다.

SQL> @OFFBACKUP

HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL01.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL02.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CONTROL03.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\CWMLITE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\DRSYS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\INDX01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\ODM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\TOOLS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\USERS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\XDB01.DBF C:\OFFBACKUP

HOST COPY C:\ORACLE\ORADATA\ORCL\TEMP01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO03.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO02.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL\REDO01.LOG C:\OFFBACKUP
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

        1개 파일이 복사되었습니다.

ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.

Posted by 1010
02.Oracle/DataBase2009. 6. 27. 12:12
반응형
  
오라클9i 데이타베이스 초기화 매개변수(전부) 설명 |
2006.01.24 14:01

========================================
오라클9i 데이타베이스 초기화 매개변수(전부) 설명
========================================
이거는 Oracle DataBase Release 2 (9.2.0.1) 버전꺼 임돠...


07_DICTIONARY_ACCESSIBILITY
설명    : Oracle7에서 Oracle8i로 이전할 때 주로 사용됩니다. TRUE로 설정된 경우 S
ELECT ANY TABLE과 같은 SYSTEM 권한은 SYS 스키마의 객체에 대한 액세스를 제한하지
않습니다. (Oracle7 기능) FALSE인 경우 사용자는 SELECT_CATALOG_ROLE, EXECUTE_CATA
LOG_ROLE 또는 DELETE_CATALOG_ROLE을 부여 받았을 때만 SYS 스키마 객체에 액세스할
수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE

A
active_instance_count
설명    : 2개의 인스턴스로 이루어진 클러스터에서 사용자가 하나의 인스턴스를 기본 인스턴스로 지정하고 나머지 인스턴스를 보조 인스턴스로 지정할 수 있도록 합니다.
이 매개변수는 2개 이상의 인스턴스가 포함된 클러스터에서는 기능을 수행하지 않습니다.
사용 가능한 값: 1 또는 >= 클러스터의 인스턴스 수입니다.
기본값  : 없음

aq_tm_processes
설명    : 0보다 클 경우 대기열 메시지에 대한 시간 모니터링이 활성화됩니다. 시간은 응용 프로그램 개발에 사용되는 지연 및 만료 등록정보를 지정하는 메시지에 사용할 수 있습니다.
사용 가능한 값: 0 - 10
기본값  : 0

archive_lag_target
설명: 이 매개변수는 시간 기반의 스레드 고급 기능과 관련됩니다.
사용 가능한 값: 0 또는 [60, 7200]의 모든 정수입니다.
기본값: 기본값은 0으로 시간 기반의 스레드 고급 기능을 비활성화합니다. 그렇지 않
은 경우 값은 초 단위의 숫자로 표시됩니다.

audit_file_dest
설명    : 데이터베이스에 대한 모든 SYSDBA 또는 INTERNAL 접속이 이 디렉토리에 감
사 파일을 생성합니다. (UNIX의 경우에만)
사용 가능한 값: 유효한 임의 디렉토리 이름
기본값  : ORACLE_HOME/rdbms/audit

audit_trail
설명    : 데이터베이스 감사 기능을 활성화하거나 비활성화합니다. 감사 레코드는 매
개변수 값이 TRUE 또는 DB일 경우에는 SYS.AUD$ 테이블에 기록되고 매개변수 값이 OS
인 경우에는 운영 체제 파일에 기록됩니다.
사용 가능한 값: NONE | FALSE | DB | TRUE | OS
기본값  : NONE


B
background_core_dump
설명    : 생성된 코어 파일에 SGA 정보를 덤프할지 여부를 지정합니다. (UNIX의 경우
)
사용 가능한 값: FULL | PARTIAL
기본값  : FULL

background_dump_dest
설명    : Oracle 작업 중 백그라운드 프로세스(LGWR, DBW n 등)에 대한 추적 파일을
기록할 경로명(디렉토리 또는 디스크)을 지정합니다. 또한 중요한 이벤트 및 메시지를
 기록하는 데이터베이스 경보 파일의 위치를 정의합니다.
사용 가능한 값: 유효한 임의 디렉토리 이름입니다.
기본값  : ORACLE_HOME/rdbms/log (운영 체제에 따라 다름)

backup_tape_io_slaves
설명    : Recovery Manager 매개변수로 서버 프로세스 또는 추가 입출력 슬래이브를
사용하여 테이프를 읽거나 테이프에 기록할지 결정합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

bitmap_merge_area_size
설명    : 인덱스의 범위 스캔을 통해 읽어들인 비트맵을 병합하는 데 사용되는 메모
리 크기를 지정합니다.
사용 가능한 값: 시스템에 따라 다릅니다.
기본값  : 1MB

blank_trimming
설명    : TRUE 값을 지정하면 원본 길이가 대상 길이보다 길더라도 데이터를 할당할
수 있습니다. (SQL92 호환)
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

buffer_pool_keep
설명    : 객체를 메모리에 보존하여 입출력을 감소시키는데 목적이 있는 DB_BLOCK_BU
FFERS에서 할당된 유지 풀 크기입니다.
사용 가능한 값: 특정 문자열 값입니다. (예:. buffers:400, lru_latches:3)
기본값  : 없음

buffer_pool_recycle
설명    : 객체를 사용한 후 제거하여 메모리를 재사용하기 위해 DB_BLOCK_BUFFERS에
서 할당한 재생 풀 크기입니다.
사용 가능한 값: 특정 문자열 값입니다. (예: buffers:50, lru_latches:1)
기본값  : 없음


C
circuits
설명    : 수신 및 송신 네트워크 세션에 대해 사용 가능한 가상 회로의 총 수를 지정
합니다. 이 값은 인스턴스의 전체 SGA 요구 사항을 구성하는 몇몇 매개변수 중의 하나
입니다.
기본값  : 파생: 공유 서버 구조를 사용하는 경우 SESSIONS 매개변수 값. 그렇지 않은
 경우 0

cluster_database
설명: CLUSTER_DATABASE를 TRUE로 설정하여 Real Application 클러스터 옵션을 활성화
합니다.
사용 가능한 값: TRUE | FALSE
기본값: FALSE

cluster_database_instances
설명: 클러스터 데이터베이스의 일부로 현재 구성되어 있는 인스턴스의 수입니다. 이
값은 구성된 인스턴스 수에 따라 달라지는 SGA 구조의 크기를 결정할 때 사용됩니다.
이 매개변수를 제대로 설정하면 SGA의 메모리 사용이 개선됩니다. 여러 매개변수는 이
 값을 사용하여 계산됩니다.
사용 가능한 값: 0이 아닌 값입니다.
기본값: 1

cluster_interconnects
설명: Real Application 클러스터 환경에서 사용할 수 있는 추가 상호 접속입니다. 단
일 상호 접속이 클러스터 데이터베이스의 대역폭 요구 사항을 충분히 만족시키지 않을
 때 이 매개변수를 설정해야 합니다. 이 매개변수를 설정하지 않으면 Oracle은 Oracle
9i Real Application 클러스터 상호 노드 통신에 대한 해당 상호 접속을 확인하는 현
재 의미를 보존합니다. 
사용 가능한 값: 콜론으로 구분된 하나 이상의 IP 주소입니다.
기본값: NONE

compatible
설명    : 이전 릴리스와의 역호환성을 보증하는 동시에 새 릴리스를 사용할 수 있습
니다.
사용 가능한 값: 현재 릴리스를 기본값으로 합니다.
기본값  : 릴리스에 따라 다름

commit_point_strength
설명    : 이 값은 분산 트랜잭션에서 커밋 위치 사이트를 결정합니다.
사용 가능한 값: 0-255 
기본값  : 운영 체제에 따라 다름

control_files
설명    : 하나 이상의 제어 파일 이름을 지정합니다. Oracle은 서로 다른 장치 또는
OS 파일 이중화에 대해 여러 개의 파일을 사용하도록 권장합니다.
사용 가능한 값: 1 - 8 파일 이름입니다. (경로명 포함)
기본값  : 운영 체제에 따라 다름

constrol_file_record_keep_time
설명    : 제어 파일의 재사용 가능 섹션에 있는 레코드를 유지해야 하는 최소 기간(
일 수)입니다.
사용 가능한 값: 0 - 365
기본값  : 7

core_dump_dest
설명    : 코어 덤프 위치를 지정하는 디렉토리 이름입니다. (UNIX의 경우)
사용 가능한 값: 유효한 임의 디렉토리 이름입니다.
기본값  : ORACLE_HOME/dbs

cpu_count
설명    : Oracle이 다른 매개변수 값을 계산하는 데 사용할 수 있는 CPU 수입니다.
이 값은 변경하지 마십시오.
사용 가능한 값: 0 - 무제한입니다.
기본값  : Oracle이 자동으로 설정함

create_bitmap_area_size
설명    : CREATE_BITMAP_AREA_SIZE가 비트맵 인덱스 작성에 할당된 메모리 크기를 지
정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 8 MB

cusor_space_for_time
설명    : 공유 SQL 영역을 커서가 참조하는 동안 공유 풀에 유지할지 또는 일정 시간
이 지난 후 삭제할지 결정합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE(일정 시간 후 삭제됨)

cursor_sharing
설명    : 최종적으로 동일한 공유 커서를 공유할 수 있는 SQL 문의 종류를 제어합니
다.
사용 가능한 값:
 FORCE: 일부 리터럴이 다르지만 명령문의 의미에는 영향을 주지 않고 나머지는 동
일한 경우 명령문이 커서를 공유하도록 합니다.
 EXACT: 동일한 SQL 문만 커서를 공유하도록 합니다.
기본값  : EXACT


D
db_2k_cache_size
설명: 2K 버퍼에 대한 캐시 크기를 지정합니다. db_block_size가 2K가 아닌 다른 값을
 가지는 경우에만 매개변수를 설정할 수 있습니다.
사용 가능한 값: 0M 또는 적어도 16M입니다. 플랫폼별 블록 크기 제한 사항이 적용됩
니다.
기본값: 0M

db_4k_cache_size
설명: 4K 버퍼에 대한 캐시 크기를 지정합니다. db_block_size가 4K가 아닌 다른 값을
 가지는 경우에만 매개변수를 설정할 수 있습니다.
사용 가능한 값: 0M 또는 적어도 16M입니다. 플랫폼별 블록 크기 제한 사항이 적용됩
니다.
기본값: 0M

db_8k_cache_size
설명: 8K 버퍼에 대한 캐시 크기를 지정합니다. db_block_size가 8K가 아닌 다른 값을
 가지는 경우에만 매개변수를 설정할 수 있습니다.
사용 가능한 값: 0M 또는 적어도 16M입니다. 플랫폼별 블록 크기 제한 사항이 적용됩
니다.
기본값: 0M

db_16k_cache_size
설명: 16K 버퍼에 대한 캐시 크기를 지정합니다. db_block_size가 16K가 아닌 다른 값
을 가지는 경우에만 매개변수를 설정할 수 있습니다.
사용 가능한 값: 0M 또는 적어도 16M입니다. 플랫폼별 블록 크기 제한 사항이 적용됩
니다.
기본값: 0M

db_32k_cache_size
설명: 32K 버퍼에 대한 캐시 크기를 지정합니다. db_block_size가 32K가 아닌 다른 값
을 가지는 경우에만 매개변수를 설정할 수 있습니다.
사용 가능한 값: 0M 또는 적어도 16M입니다. 플랫폼별 블록 크기 제한 사항이 적용됩
니다.
기본값: 0M

db_block_buffers
설명    : 버퍼 캐시의 Oracle 블록 수입니다. 이 매개변수 값은 인스턴스에 대한 전
체 SGA 크기에 중요한 영향을 줍니다.
사용 가능한 값: 4 - 운영 체제에 따라 다릅니다.
기본값  : 32768

db_block_checking
설명    : 트랜잭션 관리 블록의 손상 여부를 확인할지 제어할 때 사용됩니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

db_block_checksum
설명    : 읽거나 기록한 모든 데이터 블록에 대해 DBWn, ARCH, SQL*Loader가 블록 체
크섬을 계산 또는 확인할지 지정합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

db_block_size
설명    : 오라클 데이터베이스 블록의 크기(바이트)입니다. 이 값은 데이터베이스 생
성 시 설정되며 이후에는 변경할 수 없습니다.
사용 가능한 값: 1024 - 65536입니다. (운영 체제에 따라 다름)
기본값  : 2048(운영 체제에 따라 다름)

db_cache_advice
설명: 다른 캐시 크기를 사용한 예상 작업에 대한 통계 수집을 활성화 및 비활성화합
니다. 정보는 V$DB_CACHE_ADVICE 뷰에 수집됩니다.
사용 가능한 값: OFF--권고가 해제되고 권고에 대한 메모리는 할당되지 않습니다. ON-
-권고가 설정됩니다. (예: CPU 및 메모리 오버헤드가 모두 초래됩니다.) READY--권고
가 해제되지만 권고에 대한 메모리는 할당된 상태로 유지됩니다.
기본값: OFF

db_cache_online_log_dest_1

db_cache_online_log_dest_2

db_cache_online_log_dest_3

db_cache_online_log_dest_4

db_cache_online_log_dest_5
설명: 온라인 로그 및 제어 파일 생성에 대한 기본 위치를 설정합니다. 기본값은 온라
인 로그 또는 제어 파일 생성 중에 파일 이름이 지정되지 않을 때마다 사용됩니다.
사용 가능한 값: 파일 시스템 디렉토리 이름입니다. 디렉토리가 존재해야 합니다. 디
렉토리는 Oracle이 해당 디렉토리에 파일을 생성할 수 있도록 하는 권한을 가져야 합
니다.

db_cache_size
설명: 표준 블록 크기 버퍼에 대한 캐시 크기를 지정합니다.
사용 가능한 값: 적어도 16M입니다.
기본값: 48M

db_create_file_dest
설명: 데이터 파일, 제어 파일 및 온라인 로그 생성에 대한 기본 위치를 설정합니다.
사용 가능한 값: 파일 시스템 디렉토리 이름입니다. 디렉토리가 존재해야 합니다. 디
렉토리는 Oracle이 해당 디렉토리에 파일을 생성할 수 있도록 하는 권한을 가져야 합
니다.

db_domain
설명    : 도메인에 고유한 데이터베이스 이름을 작성하기 위해 권장하는 데이터베이
스 이름의 확장자를 지정합니다. (예: US.ORACLE.COM)
사용 가능한 값: 마침표로 구분된 임의의 문자열로 최대 길이가 128자입니다.
기본값  : WORLD

db_files
설명    : 데이터베이스에 대해 열 수 있는 데이터베이스 파일의 최대 개수입니다.
사용 가능한 값: MAXDATAFILES - 운영 체제에 따라 다릅니다.
기본값  : 운영 체제에 따라 다름 (예: Solaris의 경우 200)

db_file_multiblock_read_count
설명    : 전체 순차 스캔 관련 입출력 작업을 하는 동안 읽어온 최대 블록 수입니다.
 
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 8

db_file_name_convert
설명    : 기본 데이터베이스 상의 새 데이터 파일 이름을 대기 데이터베이스 상의 파
일 이름으로 변환합니다.
사용 가능한 값: 유효한 기본/대기 디렉토리 및 파일 이름 쌍입니다.
기본값  : 없음

db_keep_cache_size
설명: KEEP 버퍼 풀의 버퍼 수를 지정합니다. KEEP 버퍼 풀의 버퍼 크기는 기본 블록
크기(블록 크기는 db_block_size에 의해 정의됨)입니다.
사용 가능한 값: 0 또는 적어도 하나의 미립자 크기(더 작은 값은 미립자 크기로 자동
으로 반올림됨)입니다.
기본값: 0M

db_name
설명    : CREATE DATABASE 문에 지정된 이름과 동일한 데이터베이스 식별자입니다.
사용 가능한 값: 최대 8자의 유효한 임의의 이름입니다.
기본값  : 없음(지정해야 함)

db_recycle_cache_size
설명: RECYCLE 버퍼 풀의 크기를 지정합니다. RECYCLE 풀의 버퍼 크기는 기본 블록 크
기입니다.
사용 가능한 값: 0 또는 적어도 하나의 미립자 크기(더 작은 값은 미립자 크기로 자동
으로 반올림됨)입니다.
기본값: 0M

db_writer_processes
설명    : 인스턴스에 대한 데이터베이스 기록자 프로세스의 초기 개수입니다. DBWR_I
O_SLAVES를 사용하는 경우 하나의 데이터베이스 기록자만 사용됩니다.
사용 가능한 값: 1 - 10
기본값  : 1

dblink_encrypt_login
설명    : 다른 Oracle 서버에 접속 중일 때 데이터베이스 링크에 암호화된 암호를 사
용할지 지정합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

dbwr_io_slaves
설명    : DBW0 프로세스가 사용하는 입출력 슬래이브의 수입니다. DBW0 프로세스와
해당 슬래이브는 항상 디스크에 기록합니다.
사용 가능한 값: 0 - 운영 체제에 따라 다릅니다.
기본값  : 0

dispatchers
설명    : 공유 서버를 사용하여 공유 환경을 설정하기 위한 작업 할당자의 수와 유형
을 설정합니다. 이 매개변수에는 여러 가지 옵션을 지정할 수 있습니다. 따라서 자세
한 내용은 Oracle8i 관리자 설명서와 Oracle Net Administrator's Guide를 참조하십시
오. 예제 문자열 값은 ''(PROTOCOL=TCP)(DISPATCHERS=3)''입니다.
사용 가능한 값: 유효한 매개변수 사양입니다.
기본값  : NULL

distributed_transactions
설명    : 데이터베이스가 한 번에 참여할 수 있는 분산 트랜잭션의 최대 개수입니다.
 네트워크 실패가 비정상적으로 많이 발생하여 많은 수의 미확정 트랜잭션이 생기는
경우 이 값을 줄입니다.
사용 가능한 값: 0 - TRANSACTIONS 매개변수 값입니다.
기본값  : 운영 체제에 따라 다름

disk_asynch_io
설명    : 데이터 파일, 제어 파일, 로그 파일에 대한 입출력이 비동기적인지, 즉 테
이블 스캔 시 프로세스가 입출력 및 CPU 요청과 겹치는지 제어합니다. 사용 중인 플랫
폼이 디스크에 대한 비동기 입출력을 지원할 경우에만 이 매개변수를 변경하십시오.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE

dml_locks
설명    : 모든 사용자에 의해 획득된 테이블 잠금의 최대 개수입니다. DML(데이터 조
작어) 작업을 수행 중인 각 테이블에는 DML(데이터 조작어) 잠금이 필요합니다. 예를
들어, 3명의 사용자가 2개의 테이블을 수정하는 경우 6의 값이 필요합니다.
사용 가능한 값: 0 또는 20부터 무제한입니다.
기본값  : 4 * TRANSACTIONS (파생)

drs_start
Oracle이 DRMON 프로세스를 시작해야 하는지 여부를 결정하도록 합니다. DRMON은 치명
적이지 않은 Oracle 백그라운드 프로세스며 인스턴스가 존재하는 한 존재합니다.
사용 가능한 값: TRUE | FALSE입니다.
기본값: FALSE


E
enqueue_resources
설명    : 대기열에 넣으면 공유 리소스에 대해 동시 프로세스를 활성화할 수 있습니
다. 예를 들어, Oracle은 특정 프로세스가 공유 모드로 테이블을 잠그고 다른 프로세
스가 공유 갱신 모드로 해당 테이블을 잠그는 작업을 허용합니다.
사용 가능한 값: 10 - 65535(7.3) 또는 10 - 무제한(8.1)입니다.
기본값  : 파생됨(값이 DML_LOCKS + 20 이상일 경우 적당함)

event
설명    : 오라클 고객 지원 센터에서 시스템을 디버그하는 데 사용합니다. 일반적으
로 변경해서는 안됩니다. \n사용 가능한 값: 사용할 수 없습니다. \n기본값  : 없음


F
fal_client
설명: FAL 서비스(FAL_SERVER 매개변수를 통해 구성)에 의해 사용되는 FAL 클라이언트
 이름이 FAL 클라이언트를 나타내도록 지정합니다. 매개변수 값은 Oracle Net 서비스
이름입니다. 이 Oracle Net 서비스 이름은 FAL 서버 시스템에서 FAL 클라이언트(예:
이 대기 데이터베이스)를 가리키도록 제대로 구성된 것으로 간주됩니다.
사용 가능한 값: Oracle Net 서비스 이름의 문자열 값입니다.

fal_server
설명: 이 대기 데이터베이스에 대한 FAL 서버를 지정합니다. 값은 Oracle Net 서비스
이름입니다. Oracle Net 서비스 이름은 대기 데이터베이스 시스템에서 원하는 FAL 서
버를 가리키도록 제대로 구성된 것으로 간주됩니다.
사용 가능한 값: Oracle Net 서비스 이름의 문자열 값입니다.

fast_start_io_target
설명    : 충돌 또는 인스턴스 복구 중 필요한 입출력의 수를 지정합니다. DB_BLOCK_M
AX_DIRTY_TARGET 값을 사용할 때보다 복구 진행 시간에 대한 더욱 정밀한 제어를 가능
하게 합니다.
사용 가능한 값: 0은 입출력 복구 제한을 사용하지 않고 1000은 캐시의 모든 버퍼를
사용합니다.
기본값  : 캐시의 모든 버퍼

fast_start_mttr_target
설명: 데이터베이스 단일 인스턴스의 고장 복구를 위해 필요한 초 단위의 예측 시간을
 지정합니다. FAST_START_MTTR_TARGET은 해당 복구 시간이 전체 MTTR(평균 복구 시간)
 부분 내에 있도록 데이터베이스 작업을 수정하는 매개변수 집합으로 내부적으로 변환
됩니다. 매개변수는 "fast start fault recovery" 기능을 가지는 이러한 Edition으로
제한됩니다.
사용 가능한 값: [0, 3600]입니다. 이는 데이터 버터 캐시 항목 수 이상의 제한 및 최
대 크기의 로그에 있는 블록 수보다 큰 제한을 계산합니다.
기본값: 0

fast_start_parallel_rollback
설명    : 병렬 롤백 수행 시 최대 프로세스 수를 결정합니다. 대부분의 트랜잭션이
오랫동안 실행 중인 시스템에서 유용합니다.
사용 가능한 값: FALSE | LOW | HIGH
기본값  : LOW (2 * CPU_COUNT)

fixed_date
설명    : SYSDATE가 반환하는 날짜입니다. 시스템 날짜가 아닌 고정된 날짜를 항상
반환해야 할 경우 테스트하는 데 유용합니다. 큰 따옴표를 사용하거나 사용하지 않습
니다. 작은 따옴표는 사용하지 마십시오.
사용 가능한 값: YYYY-MM-DD-HH24:MI:SS 또는 기본 Oracle 날짜 형식입니다.
기본값  : NULL


G
gc_files_to_locks
설명    : 클러스터 데이터베이스 매개변수로 데이터 파일에 대한 PCM(병렬 캐시 관리
) 잠금 매핑을 제어합니다.
구문         : GC_FILES_TO_LOCKS = '{file_list=lock_count[!blocks][R][EACH][:...
]'
기본값  : NULL

global_context_pool_size
설명: 글로벌 응용 프로그램 컨텍스트 저장 및 관리를 위해 할당할 SGA의 메모리 양입
니다.
사용 가능한 값: 모든 정수 값입니다.
기본값: 1M

global_names
설명    : 데이터베이스 링크 이름이 접속하는 데이터베이스 이름과 동일해야 하는지
지정합니다. FALSE로 지정하면 확인을 수행하지 않습니다. 분산 처리의 일관성있는 이
름 지정 규칙을 위해 이 매개변수를 TRUE로 설정하십시오.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE



H
hash_ared_size
설명    : 병렬 실행 작업 및 DML(데이터 조작어) 또는 DDL(데이터 정의어) 문에 관련
된 값으로 해시 조인에 사용될 메모리의 최대 크기를 바이트 단위로 지정합니다. 자세
한 내용은 Oracle8i 개념 설명서를 참조하십시오.
사용 가능한 값: 0 - 운영 체제에 따라 다른 값을 가집니다.
기본값  : 파생: 2 * SORT_AREA_SIZE 매개변수 값

hash_join_enabled
설명    : TRUE로 설정된 경우 최적기는 가장 효율적인 조인 방식을 계산할 때 해시
조인을 고려합니다. Oracle은 데이터 웨어하우징 응용 프로그램에 대해 TRUE 값을 사
용하도록 권장합니다.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE

hi_shared_memory_address
설명    : 시스템 글로벌 영역(SGA)의 런타임 시 시작 주소를 지정합니다. SGA의 시작
 주소를 링크 시 지정하는 플랫폼에서는 무시됩니다. 64비트 플랫폼에서는 이 매개변
수를 사용하여 상위 및 하위 32비트를 지정합니다. 설정하지 않은 경우 기본적으로 플
랫폼에 따라 다른 위치로 지정됩니다.
사용 가능한 값: 임의 정수값입니다.
기본값  : 0

hs_autoregister
설명    : 이기종 서비스(HS) 에이전트의 자동 자체 등록을 활성화하거나 비활성화합
니다. 활성화된 경우 동일한 에이전트를 통해 이후에 접속할 때 적은 수의 오버헤드를
 유발하도록 정보를 데이터 딕셔너리로 업로드합니다.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE


I
ifile
설명    : 현재 매개변수 파일에 다른 매개변수 파일을 내장시키기 위해 사용합니다.
이 매개변수는 최대 중첩 수준이 3단계를 초과하지 않는 범위 내에서 하나의 매개변수
 파일의 서로 다른 행에 여러 번 포함시킬 수 있습니다.
사용 가능한 값: 유효한 임의 매개변수 파일 이름입니다. (구문: IFILE = parameter_f
ile_name)
기본값  : NULL

instance_groups
설명    : 클러스터 데이터베이스 매개변수로 현재 인스턴스를 콤마로 구분된 목록을
사용하여 지정한 그룹에 할당합니다. 인스턴스 그룹은 병렬 작업에 대해 질의 슬래이
브를 할당할 때 사용됩니다. \n사용 가능한 값: 콤마로 구분된 그룹 이름의 문자열입
니다. \n기본값  : NULL

instance_name
설명    : 여러 인스턴스가 공통 서비스 이름을 공유할 때 각 데이터베이스 인스턴스
를 고유하게 식별합니다. INSTANCE_NAME과 실제로 호스트 상의 인스턴스 공유 메모리
를 고유하게 식별하는 SID를 혼동하시 마십시오.
사용 가능한 값: 임의 영숫자입니다.
기본값  : 데이터베이스 SID

instance_number
설명    : 클러스터 데이터베이스 매개변수로 저장 영역 매개변수 FREELIST GROUPS를
사용하여 생성된 데이터베이스 객체 소유의 사용 가능한 목록 그룹에 대한 인스턴스
매핑에 고유 번호를 지정합니다. ALTER TABLE ... ALLOCATE EXTENT 문의 INSTANCE 절
에 이 값을 사용하여 이 인스턴스에 확장 영역을 동적으로 할당합니다 \nn사용 가능한
 값: 1 - MAX_INSTANCES입니다. (데이터베이스 생성 시 지정됨) \n기본값  : 사용 가
능한 최하위 번호(인스턴스 시작 순서와 다른 인스턴스에 지정된 INSTANCE_NUMBER 값
에 따라 다름)


J
java_max_sessionspace_size
설명    : 서버에서 Java 프로그램 실행에 사용할 수 있는 메모리의 최대 크기를 바이
트 단위로 지정합니다. 특정 데이터베이스 호출에서 다른 데이터베이스 호출로 Java
상태를 저장합니다. 사용자의 세션 지속 시간 Java 상태가 이 값을 초과하면 이 세션
은 메모리 부족 오류로 종료됩니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 0

java_pool_size
설명    : Java 메소드와 클래스 정의 및 호출 끝에 Java 세션 공간으로 이전된 Java
객체의 공유 인메모리 표현을 저장하는 Java 풀 메모리의 크기를 바이트 단위로 지정
합니다. 자세한 내용은 Oracle8i Java Developer's Guide를 참조하십시오.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 운영 체제에 따라 다름

java_soft_sessionspace_limit
설명    : Java 세션에서 사용되는 Java 메모리에 '부분 제한'을 바이트 단위로 지정
합니다. 사용자의 세션 지속 시간 Java 상태가 너무 많은 메모리를 사용하는 경우 Ora
cle은 경고를 생성하고 추적 파일에 메시지를 기록합니다.
사용 가능한 값: 0 - 4GB
기본값  : 0

job_queue_processes
설명    : 복제된 환경에만 관련된 값으로 인스턴스 당 SNP 작업 대기열 프로세스의
수(SNP0, ... SNP9, SNPA, ... SNPZ)를 지정합니다. 테이블 스냅샷을 자동으로 갱신하
거나 DBMS_JOB에 의해 생성된 요청을 수행하려면 이 매개변수 값을 1 이상으로 설정하
십시오.
사용 가능한 값: 0 - 36
기본값  : 0


K

L
large_pool_size
설명    : 공유 서버가 세션 메모리, 메시지 버퍼의 병렬 실행 및 RMAN 백업, 디스크
입출력 버퍼 복구에 사용하는 대형 풀 할당 힙의 크기를 지정합니다.
사용 가능한 값: 600K(최소값)에서 >= 20000M(최대값은 운영 체제에 따라 다름)입니다
.
기본값  : 0(병렬 실행 또는 DBWR_IO_SLAVES를 구성하지 않은 경우)

license_max_users
설명    : 데이터베이스에 생성할 수 있는 최대 사용자 수를 지정합니다. 동시 세션
사용 라이센스와 사용자 라이센스를 모두 활성화하지 마십시오. LICENSE_MAX_SESSIONS
나 LICENSE_MAX_USERS 또는 둘 다 0이어야 합니다.
사용 가능한 값: 0에서 사용자 라이센스 수까지입니다.
기본값  : 0

license_max_sessions
설명    : 동시에 허용하는 동시 사용자 세션의 최대 수를 지정합니다. 이 제한 값에
도달하면 RESTRICTED SESSION 권한을 가진 사용자만 서버에 접속할 수 있습니다. 다른
 모든 사용자는 시스템이 최대 용량에 도달했다는 경고 메시지를 받게 됩니다.
사용 가능한 값: 0에서 세션 라이센스 수까지입니다.
기본값  : 0

license_sessions_warning
설명    : 동시 사용자 세션 수의 경고 제한을 지정합니다. 이 제한 값에 도달해도 추
가 사용자가 접속할 수 있지만 ALERT 파일에 메시지가 기록됩니다. RESTRICTED SESSIO
N 권한을 가진 사용자가 접속할 때 시스템이 최대 용량에 근접하고 있다는 경고 메시
지가 표시됩니다.
사용 가능한 값: 0 - LICENSE_MAX_SESSIONS
기본값  : 0

local_listener
설명    : 동일한 시스템의 데이터베이스 인스턴스를 Oracle Net 리스너로 식별하는 O
racle Net 주소 목록입니다. 각 인스턴스와 작업 할당자는 클라이언트 접속을 활성화
하기 위해 리스너에 등록합니다. 이 매개변수는 현재 버전 8.1에서는 사용되지 않는 M
TS_LISTENER_ADDRESS와 MTS_MULTIPLE_LISTENERS 매개변수보다 우선 적용됩니다.
사용 가능한 값: 유효한 Oracle Net 주소 목록입니다.
기본값  : (ADDRESS_LIST=(Address=(Protocol=TCP)(Host=localhost)(Port=1521)) (Add
ress=(Protocol=IPC)(Key=DBname)))

lock_date
설명    : 전체 SGA를 물리적 메모리로 잠글 때 사용됩니다. 이 기능을 지원하지 않는
 플랫폼에서는 무시됩니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

lock_name_space
설명    : 분산 잠금 관리자(DLM)가 잠금 이름을 생성하기 위해 사용하는 네임스페이
스를 지정합니다. 동일한 클러스터에 동일한 데이터베이스 이름을 가진 대기 또는 복
제 데이터베이스가 있을 경우 이 값을 설정해야 합니다.
사용 가능한 값: 최대 8자로 특수 문자를 수락하지 않습니다.
기본값  : NULL

log_archive_dest
설명    : 데이터베이스가 ARCHIVELOG 모드로 실행 중이거나 아카이브된 리두 로그에
서 데이터베이스를 복구하는 중에만 적용 가능합니다. 8.1 Enterprise Edition에서는
LOG_ARCHIVE_DEST_n을 대신 사용해야 합니다.
사용 가능한 값: NULL 문자열 또는 원시 분할 영역을 제외한 유효한 임의 경로 및 장
치 이름입니다.
기본값  : NULL

log_archive_dest_1
설명    : 아카이브된 리두 로그 파일을 복제할 수 있는 5개의 로컬(LOCATION으로 지
정) 또는 원격(SERVICE로 지정) 대상 중 첫번째 대상입니다. 이 매개변수는 Enterpris
e Edition Oracle8i 데이터베이스 이상에 대해서만 유효합니다.
사용 가능한 값: 구문: (null_string | SERVICE=tnsnames-service |LOCATION=director
y-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
기본값  : NULL

log_archive_dest_2
설명    : 아카이브된 리두 로그 파일을 복제할 수 있는 5개의 로컬(LOCATION으로 지
정) 또는 원격(SERVICE로 지정) 대상 중 두번째 대상입니다. 이 매개변수는 Enterpris
e Edition Oracle8i 데이터베이스 이상에 대해서만 유효합니다.
사용 가능한 값: 구문: (null_string | SERVICE=tnsnames-service |LOCATION=director
y-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
기본값  : NULL

log_archive_dest_3
설명    : 아카이브된 리두 로그 파일을 복제할 수 있는 5개의 로컬(LOCATION으로 지
정) 또는 원격(SERVICE로 지정) 대상 중 세번째 대상입니다. 이 매개변수는 Enterpris
e Edition Oracle8i 데이터베이스 이상에 대해서만 유효합니다.
사용 가능한 값: 구문: (null_string | SERVICE=tnsnames-service |LOCATION=director
y-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
기본값  : NULL

log_archive_dest_4
설명    : 아카이브된 리두 로그 파일을 복제할 수 있는 5개의 로컬(LOCATION으로 지
정) 또는 원격(SERVICE로 지정) 대상 중 네번째 대상입니다. 이 매개변수는 Enterpris
e Edition Oracle8i 데이터베이스 이상에 대해서만 유효합니다.
사용 가능한 값: 구문: (null_string | SERVICE=tnsnames-service |LOCATION=director
y-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
기본값  : NULL

log_archive_dest_5
설명    : 아카이브된 리두 로그 파일을 복제할 수 있는 5개의 로컬(LOCATION으로 지
정) 또는 원격(SERVICE로 지정) 대상 중 다섯번째 대상입니다. 이 매개변수는 Enterpr
ise Edition Oracle8i 데이터베이스 이상에 대해서만 유효합니다.
사용 가능한 값: 구문: (null_string | SERVICE=tnsnames-service |LOCATION=director
y-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
기본값  : NULL

log_archive_dest_6

log_archive_dest_7

log_archive_dest_8

log_archive_dest_9

log_archive_dest_10

log_archive_dest_state_1
설명    : 해당 아카이브된 로그 대상 매개변수의 가용성 상태를 지정합니다. (LOG_AR
CHIVE_DEST_1에만 적용됨) 활성화된 경우 로그 대상을 아카이브하고 지연된 경우에는
다시 활성화할 때까지 해당 대상을 아카이브 작업에서 제외합니다.
사용 가능한 값: ENABLE | DEFER
기본값  : ENABLE

log_archive_dest_state_2
설명    : 해당 아카이브된 로그 대상 매개변수의 가용성 상태를 지정합니다. (LOG_AR
CHIVE_DEST_2에만 적용됨) 활성화된 경우 로그 대상을 아카이브하고 지연된 경우에는
다시 활성화할 때까지 해당 대상을 아카이브 작업에서 제외합니다.
사용 가능한 값: ENABLE | DEFER
기본값  : ENABLE

log_archive_dest_state_3
설명    : 해당 아카이브된 로그 대상 매개변수의 가용성 상태를 지정합니다. (LOG_AR
CHIVE_DEST_3에만 적용됨) 활성화된 경우 로그 대상을 아카이브하고 지연된 경우에는
다시 활성화할 때까지 해당 대상을 아카이브 작업에서 제외합니다.
사용 가능한 값: ENABLE | DEFER
기본값  : ENABLE

log_archive_dest_state_4
설명    : 해당 아카이브된 로그 대상 매개변수의 가용성 상태를 지정합니다. (LOG_AR
CHIVE_DEST_4에만 적용됨) 활성화된 경우 로그 대상을 아카이브하고 지연된 경우에는
다시 활성화할 때까지 해당 대상을 아카이브 작업에서 제외합니다.
사용 가능한 값: ENABLE | DEFER
기본값  : ENABLE

log_archive_dest_state_5
설명    : 해당 아카이브된 로그 대상 매개변수의 가용성 상태를 지정합니다. (LOG_AR
CHIVE_DEST_5에만 적용됨) 활성화된 경우 로그 대상을 아카이브하고 지연된 경우에는
다시 활성화할 때까지 해당 대상을 아카이브 작업에서 제외합니다.
사용 가능한 값: ENABLE | DEFER
기본값  : ENABLE

log_archive_dest_state_6
설명: 특정 로그 아카이브 대상의 마지막 사용자 정의 상태를 식별합니다.
사용 가능한 값: ENABLE--대상 속성이 유효한 경우 archivelog 대상을 활성화합니다.
DEFER--대상 속성이 유효한 경우에도 archivelog 대상의 프로세스를 지연시킵니다. AL
TERNATE--대체 대상 속성이 유효한 경우 다른 대상 실패가 이 대상을 자동으로 활성화
하는 시간까지 archivelog 대상의 프로세스를 지연시킵니다.

log_archive_dest_state_7
설명: 특정 로그 아카이브 대상의 마지막 사용자 정의 상태를 식별합니다.
사용 가능한 값: ENABLE--대상 속성이 유효한 경우 archivelog 대상을 활성화합니다.
DEFER--대상 속성이 유효한 경우에도 archivelog 대상의 프로세스를 지연시킵니다. AL
TERNATE--대체 대상 속성이 유효한 경우 다른 대상 실패가 이 대상을 자동으로 활성화
하는 시간까지 archivelog 대상의 프로세스를 지연시킵니다.

log_archive_dest_state_8
설명: 특정 로그 아카이브 대상의 마지막 사용자 정의 상태를 식별합니다.
사용 가능한 값: ENABLE--대상 속성이 유효한 경우 archivelog 대상을 활성화합니다.
DEFER--대상 속성이 유효한 경우에도 archivelog 대상의 프로세스를 지연시킵니다. AL
TERNATE--대체 대상 속성이 유효한 경우 다른 대상 실패가 이 대상을 자동으로 활성화
하는 시간까지 archivelog 대상의 프로세스를 지연시킵니다.

log_archive_dest_state_9
설명: 특정 로그 아카이브 대상의 마지막 사용자 정의 상태를 식별합니다.
사용 가능한 값: ENABLE--대상 속성이 유효한 경우 archivelog 대상을 활성화합니다.
DEFER--대상 속성이 유효한 경우에도 archivelog 대상의 프로세스를 지연시킵니다. AL
TERNATE--대체 대상 속성이 유효한 경우 다른 대상 실패가 이 대상을 자동으로 활성화
하는 시간까지 archivelog 대상의 프로세스를 지연시킵니다.

log_archive_dest_state_10
설명: 아카이브 로그 대상을 지정합니다.
사용 가능한 값: 로컬 파일 시스템 위치(디스크 위치) 또는 Oracle Net 서비스 이름(t
ns 서비스)을 통한 원격 아카이브입니다.

log_archive_duplex_dest
설명    : LOG_ARCHIVE_DEST가 아닌 두번째 아카이브 대상을 지정합니다. 이 매개변수
는 Oracle8i Enterprise Edition에서 LOG_ARCHIVE_DEST_n으로 바뀌었습니다.
사용 가능한 값: NULL 문자열 또는 원시 분할 영역을 제외한 유효한 경로 및 장치 이
름입니다.
기본값  : NULL

log_archive_format
설명    : LOG_ARCHIVE_FORMAT은 데이터베이스가 ARCHIVELOG 모드일 때만 사용할 수 있습니다. 변수 %s(로그 시퀀스 번호) 및 %t(스레드 번호)이(가) 포함된 텍스트 문자
열을 사용하여 아카이브된 리두 로그 파일의 고유한 파일 이름을 지정합니다. 이 문자
열은 LOG_ARCHIVE_DEST 매개변수에 추가됩니다.
사용 가능한 값: 유효한 임의 파일 이름입니다.
기본값  : 운영 체제에 따라 다름

log_archive_max_processes
설명    : 필요한 ARCH 프로세스의 수를 지정합니다. 이 값이 LOG_ARCHIVE_START = TRUE로 설정된 경우 인스턴스 시작 시 평가되거나 SQL*Plus 또는 SQL 구문을 통해 ARCH 프로세스를 호출할 때 평가됩니다.
사용 가능한 값: 1과 10 사이의 임의 정수입니다.
기본값  : 1

log_archive_min_succeed_dest
설명    : 로그 파일을 겹쳐쓰기 전에 복사해야 하는 최소 대상 수를 정의합니다. 이
값은 LOG_ARCHIVE_DEST_n의 MANDATORY 대상 수보다 크거나 같아야 합니다.
사용 가능한 값: 1 - 5입니다. (LOG_ARCHIVE_DEST 및 LOG_ARCHIVE_DUPLEX_DEST와 함께 사용될 경우에는 1 - 2로 제한됨)
기본값  : 1

log_archive_start
설명    : 데이터베이스가 ARCHIVELOG 모드일 때만 적용 가능한 값으로 리두 로그를
자동 또는 수동으로 복사할지 여부를 지정합니다. 권장값은 자동 아카이브를 수행하는
 TRUE입니다. 이 값을 사용하지 않으면 인스턴스 대기를 방지하기 위해 ALTER SYSTEM
ARCHIVE LOG ... 명령을 사용한 수동 개입이 필요합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

log_archive_trace
설명    : 아카이브 로그 프로세스에 의해 생성되는 출력을 제어합니다. 이 프로세스
는 ARCn 백그라운드 프로세스(출력 로그에 ARCn으로 지정됨)에 의해 시작될 수 있습니
다.
 명시적인 세션 호출 포그라운드 프로세스(출력 로그에 ARCH로 지정됨) 또는
 관리 대기의 원격 파일 서버(RFS) 프로세스. 
사용 가능한 값: 
 0: 아카이브 로그 추적 사용 중지(기본값)
 1: 리두 로그 파일 아카이브 추적
 2: 각 아카이브 로그 대상의 아카이브 상태 추적
 4: 아카이브 작업 단계 추적
 8: 아카이브 로그 대상 작업 추적
 16: 세부 아카이브 로그 대상 작업 추적
 32: 아카이브 로그 대상 매개변수 수정 추적
 64: ARCn 프로세스 상태 작업 추적
기본값  : 0

log_buffer
설명    : 리두 항목을 LGWR에 의해 리두 로그 파일에 기록하기 전에 버퍼로 저장하기
 위해 사용되는 메모리 크기를 지정합니다. 리두 항목은 데이터베이스 블록의 변경 사
항 기록을 보존합니다. 특히 실행 시간이 길거나 많은 수의 트랜잭션이 실행 중인 시
스템에서 이 값을 65536 이상으로 설정하면 리두 로그 파일 입출력을 줄일 수 있습니
다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 최대 500K 또는 128K * CPU_COUNT, 이 중 크기가 더 큰 값

log_checkpoint_interval
설명    : 체크포인트가 발생하기 전에 리두 로그 파일에 써야 할 OS 블록(데이터베이
스 블록이 아님)의 수를 지정합니다. 체크포인트는 이 값에 상관없이 항상 로그 전환
시에 발생합니다. 이 값의 크기를 줄이면 인스턴스 복구에 필요한 시간이 감소하지만
과도한 디스크 작업이 유발될 수 있습니다.
사용 가능한 값: 무제한입니다. (0을 지정하면 이 매개변수 기능을 해제함)
기본값  : 운영 체제에 따라 다름

log_checkpoint_timeout
설명    : 다른 체크포인트가 발생할 때까지의 최대 시간을 초 단위로 지정합니다. 이
 시간 초과 값을 0으로 설정하면 시간에 준한 체크포인트 기능을 해제합니다. 이 값의
 크기를 줄이면 인스턴스 복구 시간이 감소하지만 과도한 디스크 작업이 유발될 수 있
습니다.
사용 가능한 값: 0 - 무제한입니다.
기본값  : Oracle8i: 900초, Enterprise Edition: 1800초

log_checkpoints_to_alert
설명    : 체크포인트 정보를 경보 파일에 기록합니다. 이 매개변수를 사용하면 체크
포인트가 원하는 빈도로 발생하는지 결정할 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

log_file_name_convert
설명    : 기본 데이터베이스 상의 로그 파일 이름을 대기 데이터베이스 상의 해당 경
로 및 파일 이름으로 변환합니다. 로그 파일을 기본 데이터베이스에 추가할 때 해당
파일을 대기 데이터베이스에도 추가해야 합니다. 이 매개변수는 Oracle7의 LOG_FILE_N
AME_CONVERT 매개변수를 대신합니다.
사용 가능한 값: 유효한 경로/파일 이름, 형식: ''기본 로그 파일의 경로/파일 이름''
,''대기 로그 파일의 경로/파일 이름''
기본값  : NULL

logmnr_max_persistent_sessions


M
max_commit_propagation_delay
설명    : 클러스터 데이터베이스 매개변수로 LGWR이 인스턴스의 SGA에 저장된 SCN(시
스템 변경 번호)을 새로 고칠 때까지 허용된 최대 시간의 길이를 100분의 1초 단위로
지정합니다. SCN은 정기적으로 갱신되지는 않으므로 이 성능 매개변수는 거의 변경할
필요가 없습니다. \n사용 가능한 값: 0 - 90000 \n기본값  : 700

max_dispatchers
설명    : 공유 서버 환경에서 동시에 실행될 수 있는 작업 할당자 프로세스의 최대
수를 지정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 작업 할당자가 구성된 경우 5와 구성된 작업 할당자 수 가운데 큰 값이 기
본값이 됩니다.

max_dump_file_size
설명    : 각 추적 파일의 최대 크기를 지정합니다. 추적 파일이 너무 많은 공간을 차
지하는 경우 이 제한을 변경할 수 있습니다. 덤프 파일 크기를 운영 체제가 허용하는
크기로만 제한하려면 UNLIMITED로 설정합니다.
사용 가능한 값: 0 - UNLIMITED('K' 또는 'M' 단위 사용 가능)
기본값  : 10000블록

max_enabled_roles
설명    : 하위 롤을 포함하여 사용자가 사용할 수 있는 데이터베이스 롤의 최대 수를
 지정합니다. 각 사용자는 PUBLIC과 사용자 고유 롤에 해당하는 2개의 추가 롤을 가지
고 있으므로 실제로 사용자가 활성화할 수 있는 롤의 수는 MAX_ENABLED_ROLES 값에 2
를 더한 값에 해당합니다.
사용 가능한 값: 0 - 148
기본값  : 20

max_rollback_segments
설명    : SGA에서 롤백 세그먼트 캐시의 최대 크기를 지정합니다. 지정된 숫자는 하
나의 인스턴스가 동시에 온라인 상태(즉, INUSE 상태)를 유지할 수 있는 롤백 세그먼
트의 최대 수를 나타냅니다.
사용 가능한 값: 2 - 65535
기본값  : max(30, TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT)

max_shared_servers
설명    : 공유 서버 환경에서 동시에 실행될 수 있는 공유 서버 프로세스의 최대 수
를 지정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 20

max_transaction_branches
설명    : 분산 트랜잭션의 분기 수를 제어합니다. MAX_TRANSACTION_BRANCHES 값을 작
은 값으로 설정하면 (MAX_TRANSACTION_BRANCHES * DISTRIBUTED_TRANSACTIONS * 72바이
트) 값에 따라 공유 풀 메모리를 약간 줄일 수 있습니다. 이 매개변수는 현재 버전 8.
1.3에서는 사용되지 않습니다.
사용 가능한 값: 1 - 32
기본값  : 8

mts_circuits
설명    : 수신 및 송신 네트워크 세션에 대해 사용 가능한 가상 회로의 총 수를 지정
합니다. 이 값은 인스턴스의 전체 SGA 요구 사항을 구성하는 몇몇 매개변수 중의 하나
입니다.
기본값  : 파생: 공유 서버 구조를 사용하는 경우 SESSIONS 매개변수 값. 그렇지 않은
 경우 0

mts_dispatchers
설명    : 공유 서버를 사용하여 공유 환경을 설정하기 위한 작업 할당자의 수와 유형
을 설정합니다. 이 매개변수에는 여러 가지 옵션을 지정할 수 있습니다. 따라서 자세
한 내용은 Oracle8i 관리자 설명서와 Oracle Net Administrator's Guide를 참조하십시
오. 예제 문자열 값은 ''(PROTOCOL=TCP)(DISPATCHERS=3)''입니다.
사용 가능한 값: 유효한 매개변수 사양입니다.
기본값  : NULL

mts_listener_address
설명    : 공유 서버에 대한 리스너 구성을 지정합니다. 리스너 프로세스는 시스템에
서 사용되는 각 네트워크 프로토콜에 대한 접속 요청의 수신 주소가 필요합니다. MTS_
MULTIPLE_LISTENERS=TRUE로 설정된 경우가 아니면 각 항목은 별도의 인접 값을 가져야
 합니다. 이 매개변수는 현재 버전 8.1.3에서는 사용되지 않습니다.
구문         : (ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=7002))
기본값  : NULL

mts_max_dispatchers
설명    : 공유 서버 환경에서 동시에 실행될 수 있는 작업 할당자 프로세스의 최대
수를 지정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 작업 할당자가 구성된 경우 5와 구성된 작업 할당자 수 가운데 큰 값이 기
본값이 됩니다.

mts_max_servers
설명    : 공유 서버 환경에서 동시에 실행될 수 있는 공유 서버 프로세스의 최대 수
를 지정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 20

mts_multiple_listners
설명    : 다중 리스너 주소를 개별 항목 또는 하나의 ADDRESS_LIST 문자열로 지정할
지 결정합니다. TRUE로 설정된 경우 MTS_LISTENER_ADDRESS 매개변수는 다음과 같이 지
정할 수 있습니다.
   (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(PORT=5000)(HOST=zeus))
                 (ADDRESS=(PROTOCOL=decnet)(OBJECT=outa)(NODE=zeus))
이 매개변수는 현재 버전 8.1.3에서는 사용되지 않습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

mts_service
설명    : 공유 서버 매개변수로 데이터베이스 접속을 구현하기 위해 작업 할당자에
등록된 고유한 서비스 이름을 지정합니다. 작업 할당자를 사용할 수 없을 경우에도 데
이터베이스에 접속하려면 이 값을 인스턴스 이름과 동일하게 설정합니다. 이 매개변수
는 현재 버전 8.1.3에서는 사용되지 않습니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 0

mts_servers
설명    : 공유 서버 환경에서 인스턴스가 시작될 때 생성할 서버 프로세스의 수를 지
정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 1

mts_sessions
설명    : 허용할 공유 서버 구조 사용자 세션의 총 수를 지정합니다. 이 매개변수를
설정하면 전용 서버의 사용자 세션을 예약할 수 있습니다.
사용 가능한 값: 0부터 (SESSIONS - 5)까지 
기본값  : 파생: MTS_CIRCUITS 값과 (SESSIONS - 5) 값 중 작은 값



N
nls_calendar
설명    : Oracle이 날짜 형식에 사용할 달력 시스템을 지정합니다. 예를 들어, NLS_C
ALENDAR를 'Japanese Imperial'로 설정하면 날짜 형식은 'E YY-MM-DD'이며 날짜가 1997년 5월 15일인 경우 SYSDATE는 'H 09-05-15'와 같이 표시됩니다.
사용 가능한 값: Arabic Hijrah, English Hijrah, Gregorian, Japanese Imperial, Per
sian, ROC Official (Republic of China), Thai Buddha입니다.
기본값  : Gregorian

nls_comp
설명    : SQL 문에 NLS_SORT를 사용하는 번거로운 프로세스를 피합니다. 일반적으로
WHERE 절의 비교는 이진 값을 대상으로 하지만 문자 비교의 경우에는 NLSSORT 함수가
필요합니다. NLS_COMP를 사용하면 비교가 NLS_SORT 세션 매개변수에 따른 문자 비교임을 나타낼 수 있습니다.
사용 가능한 값: Oracle8i National Language Support Guide에 지정된 10바이트 길이
의 문자열입니다.
기본값  : BINARY 

nls_currency
설명    : L 숫자 형식 요소에 대해 지역 통화 기호로 사용할 문자열을 지정합니다.
이 매개변수의 기본값은 NLS_TERRITORY에 의해 결정됩니다.
사용 가능한 값: Oracle8i National Language Support Guide에 지정된 10바이트 길이
의 문자열입니다.
기본값  : NLS_TERRITORY에서 파생된 값

nls_date_format
설명    : TO_CHAR 및 TO_DATE 함수에 사용할 기본 날짜 형식을 지정합니다. 이 매개
변수의 기본값은 NLS_TERRITORY에 의해 결정됩니다. 이 매개변수는 큰 따옴표로 표시
한 임의의 유효한 날짜 형식 마스크를 값으로 가질 수 있습니다. 예: ''MMM/DD/YYYY''
사용 가능한 값: 일정한 길이를 넘지 않는 임의의 유효한 날짜 형식 마스크입니다.
기본값  : 파생

nls_date_language
설명    : 요일과 달 이름 및 날짜 약자(AM, PM, AD, BC)를 표기할 언어를 지정합니다
. 이 매개변수의 기본값은 NLS_LANGUAGE에 의해 지정된 언어입니다.
사용 가능한 값: 임의의 유효한 NLS_LANGUAGE 값입니다.
기본값  : NLS_LANGUAGE 값

nls_dual_currency
설명    : NLS_TERRITORY에 정의된 기본 이중 통화 기호를 무시할 때 사용됩니다. 기
본 이중 통화 기호는 이 매개변수가 설정되지 않았을 때 사용됩니다. 그렇지 않으면
이 값을 이중 통화 기호로 하는 새 세션이 시작됩니다.
사용 가능한 값: 임의의 유효한 형식 이름입니다.
기본값  : 이중 통화 기호

nls_iso_currency
설명    : C 숫자 형식 요소에 대해 국제 통화 기호로 사용할 문자열을 지정합니다.
이 매개변수의 기본값은 NLS_TERRITORY에 의해 결정됩니다.
사용 가능한 값: 임의의 유효한 NLS_TERRITORY 값입니다.
기본값  : NLS_TERRITORY에서 파생된 값

nls_languge
설명    : 메시지, 요일 및 달 이름, AD, BC, AM, PM과 같은 기호, 기본 정렬 방법에
사용되는 데이터베이스 기본 언어를 지정합니다. 지원되는 언어에는 영어, 프랑스어,
일본어 등이 있습니다.
사용 가능한 값: 임의의 유효한 언어 이름입니다.
기본값  : 운영 체제에 따라 다름

nls_length_semantics
설명: 바이트 또는 코드포인트 의미를 사용하여 새로운 char, varchar2, clob, nchar,
 nvarchar2, nclob 열 생성을 지정합니다. 모든 문자 집합은 자신의 고유한 문자 정의
를 가집니다. 동일한 문자 집합이 클라이언트 및 서버에서 사용될 경우 문자열은 해당
 문자 집합에 의해 정의된 대로 문자 단위로 측정되어야 합니다. 기존의 열은 영향을
받지 않습니다.
사용 가능한 값: BYTE 또는 CHAR입니다.
기본값: nls_length_semantics에 대한 데이터베이스 문자 집합의 문자를 측정하는 항
목에 대해서는 BYTE입니다.

nls_nchar_conv_excp
설명: (TRUE인 경우) 데이터 손실이 암시적 변환에서 발생할 때 오류를 반환하는 매개
변수입니다.
사용 가능한 값: FALSE | TRUE
기본값: TRUE

nls_numeric_characters
설명    : 그룹 구분 기호와 소수점으로 사용할 문자를 지정합니다. 그룹 구분 기호는
 정수 그룹(예: 천, 백만 등)을 구분하는 문자이고 소수점은 숫자의 정수 부분과 소수
 부분을 구분하는 문자입니다. 형식: <decimal_character><group_separator>.
사용 가능한 값: '+', '-', '<', '>'을 제외한 임의의 단일 바이트 문자 
기본값  : NLS_TERRITORY에서 파생된 값

nls_sort
설명    : ORDER BY 질의에 대한 조합 순서를 지정합니다. 이진 정렬의 경우 ORDER BY
 질의에 대한 조합 순서는 숫자 값을 기준으로 합니다. 문자 정렬의 경우 정의된 문자
 정렬 순서로 데이터를 배열하려면 전체 테이블을 스캔해야 합니다.
사용 가능한 값: BINARY 또는 유효한 문자 정의 이름입니다.
기본값  : NLS_LANGUAGE에서 파생된 값

nls_territory
설명    : 날짜와 주 번호 매김, 기본 날짜 형식, 기본 소수점 문자, 그룹 구분 기호,
 기본 ISO 및 지역 통화 기호에 대한 이름 지정 규칙을 지정합니다. 지원되는 지역에
는 미국, 프랑스, 일본 등이 있습니다. 모든 지역에 대한 내용은 Oracle8i National L
anguage Support Guide를 참조하십시오.
사용 가능한 값: 임의의 유효한 지역 이름입니다.
기본값  : 운영 체제에 따라 다름

nls_time_format
설명    : 날짜 시간 필드인 HOUR, MINUTE, SECOND가 포함된 TIME 데이터 유형의 기본
값을 설정하는 문자열 값을 지정합니다.
구문         : TIME '09:26:50'. (값을 7바이트로 저장함)
기본값  : NLS_TERRITORY에서 파생된 값

nls_time_tz_format
설명    : 날짜 시간 필드인 HOUR, MINUTE, SECOND, TIMEZONE_HOUR, TIMEZONE_MINUTE
가 포함된 TIME WITH TIME ZONE 데이터 유형의 기본값을 설정하는 UTC와 TZD 값 쌍을
지정합니다. UTC는 국제 표준 시간이고 TZD는 지역 시간대입니다.
구문         : TIME '09:26:50.20+ 02:00'. (값을 9바이트로 저장함)
기본값  : NLS_TERRITORY에서 파생된 값

nls_timestamp_format
설명    : NLS_TIME_FORMAT와 유사하지만 시간의 HOUR, MINUTE, SECOND 값을 비롯한
날짜의 YEAR, MONTH, DAY 값을 저장하는 TIMESTAMP 데이터 유형의 기본값을 설정합니
다.
구문         : TIMESTAMP '1997-01-31 09:26:50.10'. (값을 11바이트로 저장함)
기본값  : NLS_TERRITORY에서 파생된 값

nls_timestamp_tz_format
설명    : NLS_TIME_TZ_FORMAT과 유사하며 한 쌍의 값으로 날짜의 YEAR, MONTH, DAY
값과 시간의 HOUR, MINUTE, SECOND 값을 비롯한 TIMEZONE_HOUR와 TIMEZONE_MINUTE 값
을 저장하는 TIMESTAMP 데이터의 기본값을 지정합니다.
구문         : TIMESTAMP '1997- 01- 31 09:26:50+ 02: 00'. (값을 13바이트로 저장
함)
기본값  : NLS_TERRITORY에서 파생된 값


O
object_cache_max_size_percent
설명    : 세션 객체 캐시가 최적 크기를 초과할 수 있는 최적 캐시 크기 백분율을 지
정합니다. 최대 크기는 최적 크기와 최적 크기에 이 백분율을 곱한 값의 합과 같습니
다. 캐시 크기가 이 최대 크기를 초과하면 시스템은 캐시를 최적 크기로 축소합니다.
사용 가능한 값: 0%에서 운영 체제에 따른 최대값까지입니다.
기본값  : 10%

object_cache_optimal_size
설명    : 캐시 크기가 최대 크기를 초과할 때 세션 객체 캐시를 어느 크기로 축소할
지 지정합니다.
사용 가능한 값: 10K에서 운영 체제 특정 최대값까지입니다.
기본값  : 100K

open_cursors
설명    : 세션이 한 번에 가질 수 있는 열린 커서(컨텍스트 영역)의 최대 수와 사용
자에 의해 재실행되는 명령문을 다시 구문 분석하지 않기 위해 PL/SQL이 사용하는 PL/
SQL 커서 캐시 크기를 지정합니다. 이 값을 충분히 크게 설정하면 응용 프로그램에 의
해 열린 커서가 부족해지는 현상을 방지할 수 있습니다.
사용 가능한 값: 1 에서 운영 체제 제한값까지입니다.
기본값  : 64

open_links
설명    : 하나의 세션에서 원격 데이터베이스에 대해 동시에 열 수 있는 접속의 최대
 수를 지정합니다. 이 값은 모든 데이터베이스를 열어 해당 명령문을 실행할 수 있도
록 여러 데이터베이스를 참조하는 단일 SQL 문에서 언급된 데이터베이스 수보다 크거
나 같아야 합니다.
사용 가능한 값: 0에서 255까지입니다. (0인 경우 분산 트랜잭션 사용 금지)
기본값  : 4

open_links_per_instance
설명    : XA 응용 프로그램의 이전 가능한 열린 접속의 최대 수를 지정합니다. XA 트
랜잭션은 이전 가능한 열린 접속을 사용하여 트랜잭션이 커밋된 후 접속을 캐시로 저
장합니다. 트랜잭션은 접속을 생성한 사용자와 트랜잭션을 소유한 사용자가 동일한 경
우 접속을 공유할 수 있습니다.
사용 가능한 값: 0 - UB4MAXVAL
기본값  : 4

optimizer_features_enable
설명    : 최적기 기능을 제어하는 ini.ora 매개변수의 변경을 허용합니다. 영향을 받
는 매개변수는 PUSH_JOIN_PREDICATE, FAST_FULL_SCAN_ENABLED, COMPLEX_VIEW_MERGING
및 B_TREE_BITMAP_PLANS입니다.
사용 가능한 값: 8.0.0, 8.0.3, 8.0.4, 8.1.3입니다.
기본값  : 8.0.0

optimizer_index_caching
설명    : 중첩 루프 조인의 버퍼 캐시에 저장할 인덱스 블록의 비율에 대한 비용 기
반 가정을 조정합니다. 이 값을 조정하면 인덱스가 사용되는 중첩 루프 조인의 실행
비용에 영향을 줍니다. 이 매개변수 값을 크게 설정하면 최적기가 중첩 루프 조인의
실행에 부담을 덜 느끼게 됩니다.
사용 가능한 값: 0에서 100%까지입니다.
기본값  : 0

optimizer_index_cost_adj
설명    : 고려할 인덱스 액세스 경로의 수가 너무 많거나 너무 적을 때 최적기 성능
을 조정하기 위해 사용됩니다. 작은 값을 설정하면 최적기가 더 자주 인덱스를 선택하
게 됩니다. 즉, 값을 50%로 설정하면 인덱스 액세스 경로의 부담이 정상의 반이 됩니
다.
사용 가능한 값: 1 - 10000
기본값  : 100(인덱스 액세스 경로의 일반적인 비용)

optimizer_max_permutations
설명    : 대규모 조인을 가진 질의를 구문 분석할 때 최적기가 고려하는 테이블 순열
의 수를 제한합니다. 이렇게 하면 질의 구문 분석 시간을 허용 한도 내로 단축시킬 수
 있지만 찾은 계획이 최적이 아닐 수 있습니다. 일반적으로 1000 이하의 값을 사용하
면 구문 분석 시간을 수 초 이내로 유지할 수 있습니다.
사용 가능한 값: 4에서 2^32(~43억)까지입니다.
기본값  : 80,000

optimizer_mode
설명    : 최적기 기능을 지정합니다. RULE로 설정하면 질의에 힌트가 포함되어 있지
않은 경우 규칙 기반 최적기가 사용됩니다. CHOOSE로 설정하면 명령문의 테이블에 통
계가 없는 경우 비용 기반 최적기가 사용됩니다. ALL_ROWS 또는 FIRST_ROWS로 설정하
면 항상 비용 기반 최적기를 사용합니다.
사용 가능한 값: RULE | CHOOSE | FIRST_ROWS | ALL_ROWS
기본값  : CHOOSE

oracle_trace_collection_name
설명    : Oracle Trace 모음 이름을 지정하여 출력 파일 이름(모음 정의 파일 .cdf와
 데이터 모음 파일 .dat)에 사용됩니다. 이 매개변수가 NULL이 아니면 이 값이 다시 N
ULL로 설정될 때까지 ORACLE_TRACE_ENABLE = TRUE로 되어 기본 Oracle Trace 모음이
시작됩니다.
사용 가능한 값: 최대 16자 길이의 유효한 모음 이름입니다. (8자 길이의 파일 이름을
 사용하는 플랫폼 제외)
기본값  : NULL

oracle_trace_collection_path
설명    : Oracle Trace 모음 정의(.cdf)와 데이터 모음(.dat) 파일이 있는 디렉토리
의 경로명을 지정합니다.
사용 가능한 값: 전체 디렉토리 경로명입니다.
기본값  : 운영 체제 지정값(일반적으로 ORACLE_HOME/otrace/admin/cdf)

oracle_trace_collection_size
설명    : Oracle Trace 모음 파일의 최대 크기를 바이트 단위로 지정합니다. 모음 파
일 크기가 이 최대값에 도달하면 모음 기능이 사용 중지됩니다. 범위 값이 0인 경우에
는 크기 제한이 없습니다.
사용 가능한 값: 0 - 4294967295
기본값  : 5242880

oracle_trace_enable
설명    : 서버의 Oracle Trace 모음 기능을 활성화하려면 이 값을 TRUE로 설정하십시
오. TRUE로 설정된 경우 Oracle Trace를 해당 서버에 대해 사용할 수 있습니다. 모음
을 시작하려면 ORACLE_TRACE_COLLECTION_NAME에 NULL이 아닌 값을 지정하거나 Oracle
Trace Manager를 사용하여 모음을 시작합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

oracle_trace_facillty_name
설명    : Oracle Trace 제품 정의 파일 이름(.fdf 파일)을 지정합니다. 이 파일에는
Oracle Trace 데이터 모음 API를 사용하는 제품에 대해 모여진 모든 이벤트 및 데이터
 항목의 정의 정보가 포함되어 있습니다. Oracle은 기본 파일인 ORCLED.FDF의 사용을
권장합니다.
사용 가능한 값: 최대 16자 길이의 유효한 기능 이름입니다.
기본값  : oracled

oracle_trace_facillity_path
설명    : Oracle TRACE 기능 정의(.fdf) 파일이 위치한 디렉토리 경로명을 지정합니
다.
사용 가능한 값: 전체 디렉토리 경로명입니다.
기본값  : ORACLE_HOME/otrace/admin/fdf/(운영 체제에 따라 다름)

os_authent_prefix
설명    : 사용자의 운영 체제 계정 이름과 암호를 사용하여 서버에 접속한 사용자를
인증합니다. 이 매개변수 값은 모든 사용자의 운영 체제 계정의 시작에 연결됩니다. N
ULL값을 지정하면 OS 계정 접두어를 제거할 수 있습니다.
사용 가능한 값: 임의의 식별자입니다.
기본값  : 운영 체제 지정값(일반적으로 'OPS$')

os_roles
설명    : 운영 체제 또는 데이터베이스가 각 사용자의 롤을 식별할지 지정합니다. TR
UE로 설정하면 운영 체제가 모든 데이터베이스 사용자에 대한 롤 부여를 전적으로 관
리합니다. 그렇지 않으면 데이터베이스가 롤을 식별하고 관리합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE


P
parallel_adaptive_multi_user
설명    : 다중 사용자 환경에서 병렬 실행을 사용하여 성능을 향상시키기 위해 고안
된 적응 알고리즘을 활성화하거나 비활성화합니다. 시스템 부하를 바탕으로 요청된 병
렬 실행 수를 자동으로 축소하여 질의 시작 단계에서 이 작업을 수행합니다. PARALLEL
_AUTOMATIC_TUNING = TRUE로 설정된 경우 가장 잘 사용됩니다.
사용 가능한 값: TRUE | FALSE
기본값  : PARALLEL_AUTOMATIC_TUNING = TRUE로 설정된 경우 TRUE, 아니면 FALSE

parallel_automatic_tuning
설명    : TRUE로 설정된 경우 병렬 실행을 제어하는 매개변수의 기본값을 Oracle이
결정합니다. 이 매개변수의 설정과 더불어 시스템의 테이블에 대한 병렬 계산을 설정
해야 합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

parallel_broadcast_enabled
설명    : 해시 또는 병합 조인을 사용하여 소규모 결과 집합(크기는 행이 아닌 바이
트 단위로 측정됨)에 조인된 대량의 결과 집합에 대한 성능 향상을 제공할 수 있습니
다. TRUE로 설정된 경우 최적기는 소규모 결과 집합의 각 행을 보다 큰 집합의 각 클
러스터 데이터베이스 프로세싱 행에 대해 브로드캐스트할 수 있습니다. \n사용 가능한
 값: TRUE | FALSE \n기본값  : FALSE

parallel_execution_message_size
설명    : 병렬 실행(병렬 질의, PDML(병렬 데이터 조작어), 병렬 복구, 복제)의 메시
지 크기를 지정합니다. 2048 또는 4096보다 큰 값을 지정하면 보다 큰 공유 풀이 필요
합니다. PARALLEL_AUTOMATIC_TUNING = TRUE로 설정된 경우 메시지 버퍼는 대형 풀의
외부에 할당됩니다.
사용 가능한 값: 2148에서 무한대입니다.
기본값  : PARALLEL_AUTOMATIC_TUNING이 FALSE로 설정된 경우 일반적으로 2148 또는 P
ARALLEL_AUTOMATIC_TUNING이 TRUE로 설정된 경우 4096(운영 체제에 따라 다름)

parallel_instance_group
설명    : 클러스터 데이터베이스 매개변수로 병렬 실행 슬래이브 생성에 사용되는 병
렬 인스턴스 그룹의 식별에 사용됩니다. 병렬 작업은 해당 INSTANCE_GROUPS 매개변수
에 일치 그룹을 지정한 인스턴스에 대해서만 병렬 실행 슬래이브를 생성합니다. \n사
용 가능한 값: 그룹 이름을 나타내는 문자열입니다. \n기본값  : 현재 활성화된 모든
인스턴스로 구성된 그룹

parallel_max_servers
설명    : 인스턴스에 대한 병렬 실행 서버 또는 병렬 복구 프로세스의 최대 수를 지
정합니다. 인스턴스 시작 시 할당된 질의 서버의 수는 수요에 따라 이 값까지 증가하
게 됩니다.
사용 가능한 값: 0 - 256
기본값  : CPU_COUNT, PARALLEL_AUTOMATIC_TUNING, PARALLEL_ADAPTIVE_MULTI_USER 값
에 따라 다름

parallel_min_percent
설명    : 병렬 실행에 필요한 스레드의 최소 비율을 퍼센트 단위로 지정합니다. 적절
한 수의 질의 슬래이브를 병렬 실행에 사용할 수 없을 경우 오류 메시지를 표시하고
질의가 순차적으로 실행되지 않도록 하려면 이 매개변수를 설정하십시오.
사용 가능한 값: 0 - 100
기본값  : 0(이 매개변수를 사용하지 않음을 나타냄)

parallel_min_servers
설명    : 병렬 실행을 위해 인스턴스를 시작했을 때 Oracle이 생성하는 질의 서버 프
로세스의 최소 개수를 지정합니다.
사용 가능한 값: 0에서 PARALLEL_MAX_SERVERS까지입니다.
기본값  : 0

parallel_server
설명    : 클러스터 데이터베이스 옵션을 활성화하려면 PARALLEL_SERVER를 TRUE로 설
정하십시오. \n사용 가능한 값: TRUE | FALSE \n기본값  : FALSE

parallel_server_instances
설명    : 현재 구성된 인스턴스의 수입니다. 이 값은 구성된 인스턴스의 수에 따라 S
GA 구조의 크기를 결정할 때 사용됩니다. 이 매개변수 값을 적당히 설정하면 SGA의 메
모리 사용을 개선할 수 있습니다. 여러 매개변수가 이 값을 사용하여 계산됩니다.
사용 가능한 값: 0이 아닌 임의의 값입니다.
기본값  : 1

parallel_threads_per_cpu
설명    : 병렬 실행 중 또는 병렬 적응 알고리즘 및 로드 밸런싱 알고리즘을 조정하
기 위해 CPU가 처리할 수 있는 스레드 또는 프로세스의 수를 나타냅니다. 대표 질의를
 실행할 때 시스템이 과부하되면 이 값을 줄여야 합니다.
사용 가능한 값: 0이 아닌 임의의 값입니다.
기본값  : 운영 체제에 따라 다름(일반적으로 2)

partition_view_enabled
설명    : PARTITION_VIEW_ENABLED가 TRUE로 설정된 경우 최적기는 분할 영역 보기에
서 불필요한 테이블 액세스를 제거하거나 생략합니다. 이 매개변수는 최적기가 기본
테이블에 대한 통계에서 분할 영역 보기에 대한 통계를 계산하는 비용 기반 방법을 변
경할 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

pga_aggregate_target
설명: 인스턴스에 첨부된 모든 서버 프로세스의 총 대상 PGA 메모리를 지정합니다. 작
업 영역의 자동 설정을 활성화하기 전에 이 매개변수를 양수 값으로 설정하십시오. 이
 메모리는 SGA에 상주하지 않습니다. 데이터베이스는 사용하는 PGA 메모리의 대상 크
기로 이 매개변수를 사용합니다. 이 매개변수를 설정할 때 Oracle 인스턴스에 대해 사
용 가능한 시스템의 총 메모리에서 SGA를 빼십시오. 남은 메모리는 pga_aggregate_tar
get에 할당할 수 있습니다.
사용 가능한 값: 이 제한을 KB, MB, GB 단위로 지정하기 위해 문자 K, M 또는 G를 붙
인 정수입니다. 최소값은 10M이고 최대값은 4000G입니다. 
기본값: 작업 영역의 자동 조정이 완전히 비활성화되어 있음을 의미하는 "지정되지 않
음"입니다.

pl_sql_compiler_flags
설명: PL/SQL 컴파일러에 의해 사용됩니다. 컴파일러 플래그 목록을 콤마로 구분된 문
자열 목록으로 지정합니다.
사용 가능한 값: native(PL/SQL 모듈이 원시 코드로 컴파일됨), interpreted(PL/SQL
모듈이 PL/SQL 바이트 코드 형식으로 컴파일됨), debug(PL/SQL 모듈이 조사 디버그 기
호를 사용하여 컴파일됨), non_debug입니다.
기본값: " interpreted, non_debug "

plsql_native_c_compiler
설명: 생성된 C 파일을 객체 파일로 컴파일하는 데 사용되는 C 컴파일러의 전체 경로
명을 지정합니다. 이 매개변수는 선택 사항입니다. 각 플랫폼에 제공되는 플랫폼별 ma
ke 파일은 이 매개변수에 대한 기본값을 포함합니다. 값이 이 매개변수에 대해 지정되
는 경우 해당 값은 make 파일의 기본값보다 우선 적용됩니다.
사용 가능한 값: C 컴파일러의 전체 경로입니다.
기본값: 없음

plsql_native_library_subdir_count

plsql_native_library_dir
설명: PL/SQL 컴파일러에 의해 사용됩니다. 원시 컴파일러에 의해 만들어진 공유 객체
가 있는 디렉토리명을 지정합니다.
사용 가능한 값: 디렉토리명입니다.
기본값: 없음

plsql_native_linker
설명: 이 매개변수는 객체 파일을 공유 객체나 DLL에 링크시키는 데 사용하는 UNIX의
ID 또는 GNU lD와 같은 링커의 전체 경로명을 지정합니다. 이 매개변수는 선택 사항입
니다. 각 플랫폼에 제공되는 플랫폼별 make 파일은 이 매개변수에 대한 기본값을 포함
합니다. 값이 이 매개변수에 대해 지정되는 경우 해당 값은 make 파일의 기본값보다
우선 적용됩니다.
사용 가능한 값: 링커의 전체 경로명입니다.
기본값: 없음

plsql_native_make_file_name
설명: make 파일의 전체 경로명을 지정합니다. make 유틸리티(PLSQL_NATIVE_MAKE_UTIL
ITY에 의해 지정됨)는 이 make 파일을 사용하여 공유 객체나 DLL을 생성합니다. 해당
플랫폼에 DLL을 생성하는 make 유틸리티에 대한 규칙을 포함하는 포트별 make 파일이
각 플랫폼에 제공됩니다.
사용 가능한 값: make 파일의 전체 경로명입니다.
기본값: 없음

plsql_native_make_utility
설명: UNIX의 make 또는 gmake(GNU make)와 같은 make 유틸리티의 전체 경로명을 지정
합니다. make 유틸리티는 생성된 C 소스에서 공유 객체나 DLL을 생성하는 데 필요합니
다.
사용 가능한 값: make 유틸리티의 전체 경로명입니다.
기본값: 없음

plsql_v2_compatibility
설명    : PL/SQL의 호환성 수준을 설정합니다. FALSE로 설정된 경우 PL/SQL V3 기능
을 사용하고 V2 기능은 금지됩니다. 그렇지 않은 경우 PL/SQL V3를 실행할 때 특정 PL
/SQL V2 기능이 허용됩니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

pre_page_sga
설명    : 플랫폼에 따라 결정되는 매개변수로 TRUE로 설정된 경우 모든 SGA 페이지를
 메모리로 로드하여 인스턴스가 신속하게 최대 성능에 도달할 수 있도록 합니다. 따라
서 이렇게 하면 인스턴스 시작 및 사용자 로그인 시간이 길어지지만 충분한 메모리를
확보하여 시스템 상의 페이지 오류를 줄일 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

processes
설명    : Oracle 서버에 동시에 접속할 수 있는 운영 체제 사용자 프로세스의 최대
수를 지정합니다. 이 값은 작업 대기열(SNP)과 병렬 실행(Pnnn) 프로세스와 같은 모든
 백그라운드 프로세스의 수를 고려해야 합니다.
사용 가능한 값: 6에서 운영 체제 특정 값까지입니다.
기본값  : PARALLEL_MAX_SERVERS 값에 따라 다름


Q
query_rewrite_enabled
설명    : 구체화된 뷰에 대한 질의 재작성을 활성화하거나 비활성화합니다. 세션 매
개변수 및 별개의 구체화된 뷰가 모두 활성화되고 비용 기반 최적화가 활성화된 경우
에만 특정 구체화된 뷰를 활성화합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

query_rewrite_integrity
설명    : Oracle 서버에 의해 강제로 실행되는 질의 재작성의 정도를 나타냅니다. EN
FORCED로 설정된 경우 Oracle이 일관성과 무결성을 보증하게 됩니다. TRUSTED로 설정
된 경우 선언된 관계를 사용한 재작성이 가능합니다. STALE_TOLERATED로 설정된 경우
구체화된 뷰는 비록 기본 데이터와 일치하지 않는 경우라도 재작성할 수 있습니다.
사용 가능한 값: ENFORCED, TRUSTED, STALE_TOLERATED
기본값  : ENFORCED


R
rdbms_server_dn
설명    : RDBMS 서버의 식별 이름입니다. 이 이름은 전사적인 디렉토리 서비스에서
전사적인 롤을 읽어 들이는 데 사용됩니다. 자세한 내용은 Oracle Advanced Security
Administrator's Guide를 참조하십시오.
사용 가능한 값: 모든 X.500 식별 이름 형식의 값입니다.
기본값  : 없음

read_only_open_delayed
설명    : 대부분의 데이터가 읽기 전용 테이블스페이스에 저장된 대규모 데이터베이
스의 시작과 같은 특정 작업의 처리 속도를 향상시키는 데 사용됩니다. TRUE로 설정된
 경우 테이블스페이스에서 데이터를 읽을 때 읽기 전용 테이블스페이스의 데이터에 먼
저 액세스합니다. 가능한 부작용에 대한 내용은 서버 참조 설명서를 참조하십시오.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

recovery_parallelism
설명    : 인스턴스 또는 매체 복구에 참여하는 프로세스의 수를 지정합니다. 0 또는
1의 값을 지정하면 단일 프로세스가 복구를 순차적으로 수행합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다. (PARALLEL_MAX_SERVERS 값을 초과할 수
없음)
기본값  : 운영 체제에 따라 다름

remote_archive_enable
설명: 원격 대상에 대한 리두 로그 파일의 아카이브가 허용되는지 여부를 제어합니다.
 오라클 데이터베이스 인스턴스가 REDO 로그 파일을 원격으로 아카이브하거나 아카이
브 REDO 로그 파일을 원격으로 받으려면 매개변수를 값 "TRUE"로 설정해야 합니다.
사용 가능한 값: FALSE | TRUE
기본값: TRUE

remote_dependencies_mode
설명    : 원격 PL/SQL 내장 프로시저에 대한 종속성을 데이터베이스가 처리하는 방법
을 지정하는 데 사용됩니다. TIMESTAMP로 설정하면 서버와 로컬 시간 기록이 일치할
경우에만 프로시저가 실행됩니다. SIGNATURE로 설정하면 서명이 유효한 경우 프로시저
가 실행됩니다.
사용 가능한 값: TIMESTAMP | SIGNATURE
기본값  : TIMESTAMP

remote_listener

remote_login_passwordfile
설명    : 권한 사용자의 암호를 운영 체제에서 확인할지 파일로 확인할지 지정합니다
. NONE으로 설정하면 Oracle은 암호 파일을 무시합니다. EXCLUSIVE로 설정하면 각 권
한 사용자를 데이터베이스의 암호 파일을 사용하여 인증합니다. SHARED로 설정하면 많
은 수의 데이터베이스가 SYS 및 INTERNAL 암호 파일 사용자를 공유합니다.
사용 가능한 값: NONE | SHARED | EXCLUSIVE
기본값  : NONE

remote_os_authent
설명    : REMOTE_OS_AUTHENT를 TRUE로 설정하면 OS_AUTHENT_PREFIX 값을 사용한 원격
 클라이언트의 인증을 허용합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

remote_os_roles
설명    : REMOTE_OS_ROLES를 TRUE로 설정하면 운영 체제가 원격 클라이언트에 대한
롤을 지정할 수 있습니다. FALSE로 설정하면 원격 클라이언트에 대한 롤은 데이터베이
스가 식별하고 관리합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

replication_dependency_tracking
설명    : 복제 서버가 변경 사항을 병렬로 전달하려면 종속성 추적이 중요합니다. FA
LSE로 설정하면 데이터베이스에 대한 읽기/쓰기 작업의 실행 속도는 빨라지지만 복제
서버에 대한 병렬 전달 종속 정보는 생성되지 않습니다.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE(읽기/쓰기 종속성 추적 활성화)

resource_limit
설명    : 데이터베이스 프로파일에 리소스 제한의 강제 수행 여부를 결정합니다. FAL
SE로 설정하면 리소스 제한의 강제 적용을 비활성화하고, TRUE 값으로 설정하면 리소
스 제한의 강제 적용을 활성화합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

resource_manager_plan
설명    : 지정된 경우 리소스 관리자가 인스턴스의 계획과 모든 종속 항목(하위 계획
, 지침 및 소비자 그룹)을 활성화합니다. 지정되지 않은 경우 리소스 관리자는 비활성
화되지만 ALTER SYSTEM 명령을 사용하면 활성화할 수 있습니다.
사용 가능한 값: 임의의 유효한 문자열입니다.
기본값  : NULL

rollback_segments
설명    : 값이 TRANSACTIONS / TRANSACTIONS_PER_ROLLBACK_SEGMENT 값을 초과하더라
도 인스턴스 시작 중 획득할 하나 이상의 롤백 세그먼트를 지정합니다. 형식: ROLLBAC
K_SEGMENTS = (rbseg_name [, rbseg_name] ... )
사용 가능한 값: DBA_ROLLBACK_SEGS에 나열된 임의의 롤백 세그먼트 이름입니다. (SYS
TEM 제외)
기본값  : NULL(공용 롤백 세그먼트가 기본값으로 사용됨)

row_locking
설명    : 테이블 갱신 시 행 잠금의 획득 여부를 지정합니다. ALWAYS로 설정하면 테
이블이 갱신될 때만 행 잠금을 획득합니다. INTENT로 설정하면 SELECT FOR UPDATE에
대해 행 잠금만 사용되지만 갱신 시에는 테이블 잠금을 획득합니다.
사용 가능한 값: ALWAYS | DEFAULT | INTENT
기본값  : ALWAYS


S
serial_reuse
설명    : 직렬의 재사용 가능 메모리 기능을 사용할 SQL 커서의 유형을 지정합니다.
CURSOR_SPACE_FOR_TIME = TRUE로 설정된 경우 SERIAL_REUSE 값은 무시되어 DISABLE 또
는 NULL로 설정된 것으로 처리됩니다.
사용 가능한 값: DISABLE | SELECT | DML | PLSQL | ALL | NULL
기본값  : NULL

serializable
설명    : 질의가 테이블 수준의 읽기 잠금을 획득하여 해당 질의가 포함된 트랜잭션
이 커밋될 때까지 모든 객체 읽기 갱신을 금지할지 결정합니다. 이 작업 모드는 반복
가능한 읽기를 제공하여 동일한 트랜잭션 내의 동일한 데이터에 대한 두 개의 질의가
동일한 값을 반환하는지 확인할 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

session_cached_cursors
설명    : 캐시로 저장할 세션 커서의 수를 지정합니다. 동일한 SQL 문을 여러 번 구
문 분석하면 해당 세션 커서가 세션 커서 캐시로 이동합니다. 이렇게 하면 커서가 캐
시로 저장되어 다시 열 필요가 없으므로 구문 분석 시간이 줄어듭니다.
사용 가능한 값: 0에서 운영 체제 특정 값까지입니다.
기본값  : 0

session_max_open_files
설명    : 특정 세션에서 열 수 있는 BFILE의 최대 수를 지정합니다. 이 값에 도달하
면 추가로 파일을 열기 위한 이후의 시도는 실패하게 됩니다. 이 매개변수는 운영 체
제 매개변수인 MAX_OPEN_FILES에도 종속됩니다.
사용 가능한 값: 1에서 (50, OS 수준의 MAX_OPEN_FILES)의 최소값입니다.
기본값  : 10

sessions
설명    : 사용자와 시스템 세션의 총 수를 지정합니다. 기본값은 순환 세션의 수를
고려하여 PROCESSES 값보다 큽니다.
사용 가능한 값: 임의의 정수값입니다.
기본값  : 파생(1.1 * PROCESSES + 5)

service_names
설명    : Oracle Net 리스너가 복제된 환경의 특정 데이터베이스와 같은 단일 서비스
를 식별하기 위해 사용할 수 있는 인스턴스의 서비스 이름을 지정합니다. 서비스에 도
메인이 없으면 DB_DOMAIN 매개변수가 추가됩니다.
구문         : SERVICE_NAMES = name1.domain, name2.domain
기본값  : DB_NAME.DB_DOMAIN(정의된 경우)

shadow_core_dump
설명    : UNIX에서만 사용되는 매개변수로 생성된 코어 파일에 SGA 정보를 덤프할지
지정합니다. FULL로 설정하면 SGA가 코어 덤프에 포함됩니다. PARTIAL로 설정하면 SGA
는 덤프되지 않습니다.
사용 가능한 값: FULL | PARTIAL
기본값  : FULL

shared_memory_address
설명    : SHARED_MEMORY_ADDRESS와 HI_SHARED_MEMORY_ADDRESS는 런타임 시 SGA의 시
작 주소를 지정합니다. 많은 플랫폼에서는 SGA의 시작 주소를 링크 시 지정하므로 이
러한 매개변수는 해당 플랫폼에서 무시됩니다. 두 매개변수가 모두 0 또는 NULL일 경
우 주소는 플랫폼 고유값을 사용하게 됩니다.
사용 가능한 값: 임의의 정수값입니다.
기본값  : 0

shared_pool_reserved_size
설명    : 단편화로 인한 성능 저하를 피하기 위해 공유 풀 메모리의 연속된 대규모
요청에 대해 예약된 공간을 지정합니다. 이러한 풀은 공유 풀에서 객체를 비우지 않도
록 공통적으로 필요한 모든 대규모 프로시저 및 패키지를 저장할 수 있는 크기여야 합
니다.
사용 가능한 값: SHARED_POOL_RESERVED_MIN_ALLOC에서 0.5 *
 SHARED_POOL_SIZE까지입니다. (바이트 단위)
기본값  : SHARED_POOL_SIZE 값의 5%

shared_pool_size
설명    : 공유 풀의 크기를 바이트 단위로 지정합니다. 공유 풀에는 공유 커서, 내장
 프로시저, 제어 구조 및 병렬 실행 메시지 버퍼와 같은 객체가 포함되어 있습니다.
이 값을 크게 설정하면 다중 사용자 환경에서 성능을 향상시킬 수 있습니다.
사용 가능한 값: 300 KB에서 운영 체제 특정 값입니다.
기본값  : 64비트인 경우 64MB, 아니면 16MB

shared_server_sessions
설명    : 허용할 공유 서버 구조 사용자 세션의 총 수를 지정합니다. 이 매개변수를
설정하면 전용 서버의 사용자 세션을 예약할 수 있습니다.
사용 가능한 값: 0부터 (SESSIONS - 5)까지 
기본값  : 파생: MTS_CIRCUITS 값과 (SESSIONS - 5) 값 중 작은 값

shared_servers
설명    : 공유 서버 환경에서 인스턴스가 시작될 때 생성할 서버 프로세스의 수를 지
정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 1

sga_max_size
설명: 인스턴스 사용 기간에 대한 시스템 글로벌 영역의 최대 크기를 지정합니다.
사용 가능한 값: 운영 체제에 따라 0입니다. 시작 시 최소값을 조정하면 부적절하다는
 것에 유념하십시오.
기본값: 지정된 값이 없는 경우 sga_max_size의 기본값은 시작 시 SGA의 초기 크기, X
와 동일합니다. 이 크기는 SGA에서의 다른 풀(예: 버퍼 캐시, 공유 풀, 대형 풀 등)
크기에 따라 다릅니다. 값이 X보다 작은 것으로 지정되는 경우 사용 중인 sga_max_siz
e의 크기는 X가 됩니다. 즉, 최대값(X는 사용자가 지정한 sga_max_size 값)입니다.

sort_area_retained_size
설명    : 정렬 실행이 완료된 후 보유한 사용자 전역 영역(UGA) 메모리의 최대 크기
를 지정합니다. 이 메모리는 정렬 공간에서 마지막 행이 인출된 후 운영 체제가 아닌
UGA로 환원됩니다.
사용 가능한 값: 두 개의 데이터베이스 블록에 해당하는 값부터 SORT_AREA_SIZE 값까
지입니다.
기본값  : SORT_AREA_SIZE 값

sort_area_size
설명    : SORT_AREA_SIZE는 정렬에 사용하는 메모리의 최대 크기를 바이트 단위로 지
정합니다. 정렬이 완료된 후 행은 반환되고 메모리는 해제됩니다. 대규모 정렬의 효율
성을 향상시키려면 이 크기를 증가시키십시오. 메모리가 초과되면 임시 디스크 세그먼
트를 사용합니다.
사용 가능한 값: 6개의 데이터베이스 블록에 해당하는 값(최소값)에서 운영 체제 특정
 값(최대값)까지입니다.
기본값  : 운영 체제에 따라 다름

spfile
설명: 사용 중인 현재 서버 매개변수 파일의 이름을 지정합니다.
사용 가능한 값: 정적 매개변수
기본값: SPFILE 매개변수는 사용할 서버 매개변수 파일의 이름을 나타내기 위해 클라
이언트측 PFILE에 정의될 수 있습니다. 서버에서 기본 서버 매개변수 파일을 사용하는
 경우 SPFILE 값은 서버에 의해 내부적으로 설정됩니다.

sql_trace
설명    : SQL 추적 기능을 활성화하거나 비활성화합니다. TRUE로 설정된 경우 성능
개선에 유용한 조정 정보를 수집합니다. SQL 추적 기능은 시스템 오버헤드를 유발하므
로 TRUE 설정은 조정 정보가 필요한 경우에만 사용해야 합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

sql_version
설명    :  사용되지 않음

sql92_security
설명: 해당 참조 테이블 열 값의 갱신 또는 삭제를 실행하는 데 테이블 수준 SELECT
권한이 필요한지 여부를 지정합니다.
사용 가능한 값: TRUE | FALSE
기본값: FALSE

standby_archive_dest
설명    : 기본 인스턴스의 아카이브 로그 위치를 지정합니다. STANDBY_ARCHIVE_DEST
및 LOG_ARCHIVE_FORMAT 값을 사용하여 대기 사이트의 전체 아카이브 로그 파일 이름을
 구성합니다. 대기 데이터베이스의 RFS 서버는 ARCHIVE_LOG_DEST 값이 아닌 이 값을
사용합니다.
사용 가능한 값: NULL 문자열 또는 원시 장치 이름을 제외한 유효한 경로/장치 이름입
니다.
기본값  : NULL

standby_file_management

standby_preservs_names
설명: 대기 데이터베이스의 파일 이름이 기본 데이터베이스의 파일 이름과 동일한지
여부를 나타냅니다.
사용 가능한 값: TRUE 또는 FALSE입니다. 참고: 값을 True로 설정하고 대기 데이터베
이스가 기본 데이터베이스와 동일한 시스템에 있는 경우 기본 데이터베이스 파일은 겹
쳐쓰여질 수 있습니다.
기본값: FALSE입니다.

start_transformation_enabled
설명    : 스타 질의에 대해 비용 기반 질의 변환의 적용 여부를 결정합니다. TRUE로
설정된 경우 최적기는 스타 질의에 대한 비용 기반 변환을 고려합니다. FALSE로 설정
된 경우 변환을 사용하지 않습니다. TEMP_DISABLE로 설정하면 질의 변환을 고려하지만
 임시 테이블은 사용되지 않습니다.
사용 가능한 값: TRUE | FALSE | TEMP_DISABLE
기본값  : FALSE



T
tape_asynch_io
설명    : 순차 장치에 대한 비동기 입출력(예: Oracle 입출력 테이프 데이터의 BACKU
P 또는 RESTORE) 제어에 사용됩니다. TRUE 값은 사용 중인 플랫폼이 기록 장치에 대한
 비동기 입출력을 지원하는 경우에만 유효합니다. 비동기 입출력 구현이 안정적이지
않을 때는 FALSE 값을 사용하십시오.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

thread
설명    : 클러스터 데이터베이스 매개변수로 각 인스턴스에 대한 고유한 리두 스레드
 번호를 지정합니다. 인스턴스의 리두 스레드를 비활성화하면 해당 인스턴스를 시작할
 수 없습니다. 0으로 설정하면 활성화된 사용 가능한 공용 스레드를 선택하게 됩니다.
 \n사용 가능한 값: 0에서 활성화된 최대 스레드 수까지입니다. \n기본값  : 0

timed_statistics
설명    : 데이터베이스와 SQL 문을 조정하는 데 사용할 수 있는 운영 체제 시간 정보
를 수집합니다. 운영 체제에서 시간을 요청하는 오버헤드를 방지하려면 이 값을 0으로
 설정합니다. TRUE로 설정하면 오래 지속되는 작업의 진행 상황을 보는 데 유용하게
사용할 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

timed_os_statistics
설명    : 시스템 관리자가 운영 체제 통계를 수집하기 위해 사용합니다. 리소스를 효
율적으로 사용하기 위해 필요한 경우에만 이 값을 설정합니다. 전용 서버의 경우 운영
 체제 통계는 사용자가 접속 및 접속 해제하거나 지정된 시간 제한이 만료되어 호출이
 인출될 때 수집됩니다. 공유 서버의 경우 통계는 인출 또는 인입된 호출에 대해 수집
됩니다.
사용 가능한 값: 초 단위의 시간입니다.
기본값  : 0(운영 체제 통계 새로 고침 없음)

trace_enabled

tracefile_identifier

transaction_auditing
설명    : 트랜잭션 계층이 사용자 로그온 이름, 사용자 이름, 세션 ID, 일부 운영 체
제 정보 및 클라이언트 정보를 포함한 특수한 리두 레코드를 생성할지 결정합니다. 이
러한 레코드는 리두 로그 분석 도구를 사용할 때 유용할 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE

transactions
설명    : 동시 트랜잭션의 최대 수를 지정합니다. 이 값을 크게 설정하면 SGA 크기가
 증가하여 인스턴스 시작 시 할당된 롤백 세그먼트 수를 증가시킬 수 있습니다. 기본
값은 순환 트랜잭션 수를 고려하여 SESSIONS 값 크기보다 큽니다.
사용 가능한 값: 숫자입니다.
기본값  : 파생(1.1 * SESSIONS)

transactions_per_rollback_segment
설명    : 롤백 세그먼트당 허용된 동시 트랜잭션의 수를 지정합니다. 시작 시 획득하
는 롤백 세그먼트의 최소 수는 TRANSACTIONS 값을 이 매개변수 값으로 나눈 값에 해당
합니다. 롤백 세그먼트 이름을 ROLLBACK_SEGMENTS 매개변수에 지정하면 더 많은 수의
롤백 세그먼트를 획득할 수 있습니다.
사용 가능한 값: 1에서 운영 체제 특정 값까지입니다.
기본값  : 5


U
undo_retention
설명: UNDO_RETENTION 매개변수는 데이터베이스에 보유할 커밋된 실행 취소 정보의 양
을 지정하는 데 사용됩니다. 매개변수 값은 인스턴스 시작 시간에 설정할 수 있습니다
. 실행 취소 보존 공간 요구 사항을 만족시키는 데 필요한 실행 취소 공간의 양은 다
음과 같이 계산될 수 있습니다. UndoSpace = RD * UPS. 여기서 UndoSpace는 실행 취소
 블록 수로 나타나고 RD는 초 단위의 UNDO_RETENTION으로 나타나며 UPS는 초당 실행
취소 블록 수로 나타납니다.
사용 가능한 값: 허용 최대값은 (2 ** 32)초입니다.
기본값: 30초입니다.

undo_management
설명: 시스템이 사용해야 하는 실행 취소 공간 관리 모드를 지정합니다. AUTO로 설정
할 경우 인스턴스는 SMU 모드로 시작됩니다. 그렇지 않은 경우 RBU 모드로 시작됩니다
. RBU 모드에서 실행 취소 공간은 롤백 세그먼트로 외부적으로 할당됩니다. SMU 모드
에서 실행 취소 공간은 실행 취소 테이블스페이스로 외부적으로 할당됩니다.
사용 가능한 값: Auto 또는 Manual
기본값: 첫번째 인스턴스가 시작될 때 UNDO_MANAGEMENT 매개변수가 생략되는 경우 MAN
UAL의 기본값이 사용되며 인스턴스는 RBU 모드로 시작됩니다. 첫번째 인스턴스가 아닌
 경우 인스턴스는 모든 다른 기존의 인스턴스와 동일한 실행 취소 모드로 시작됩니다.

undo_suppress_errors
설명: 사용자가 SMU 모드로 RBU 작업(예: ALTER ROLLBACK SEGMENT ONLINE) 실행을 시
도하는 동안 오류를 방지할 수 있도록 합니다. 사용자는 모든 응용 프로그램 및 스크
립트가 SMU 모드로 변환되기 전에 SMU 기능을 사용할 수 있습니다.
사용 가능한 값: True 또는 False
기본값: False입니다.

undo_tablespace
설명: 실행 취소 테이블스페이스는 실행 취소 정보를 저장하는 데 단독으로 사용됩니
다. UNDO_TABLESPACE는 SMU(시스템 관리 실행 취소) 모드로만 사용할 수 있습니다. 지
정된 실행 취소 테이블스페이스, <undoname>은 인스턴스에 의해 사용됩니다. 테이블스
페이스가 존재하지 않는 경우, 실행 취소 테이블스페이스가 아닌 경우 또는 다른 인스
턴스에 의해 사용 중인 경우 인스턴스 STARTUP은 실패합니다.
기본값: 각 데이터베이스는 0 또는 더 많은 실행 취소 테이블스페이스를 포함합니다.
SMU 모드에서 각 ORACLE 인스턴스는 하나의 실행 취소 테이블스페이스에 할당됩니다.

use_indirect_data_buffers
설명    : 4GB 이상의 물리적 메모리를 지원할 수 있는 32비트 플랫폼에 대해 확장된
버퍼 캐시 방식의 사용을 제어합니다. 다른 플랫폼에서는 무시됩니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

user_dump_dest
설명    : 사용자 프로세스를 대신하여 디버깅 추적 파일을 기록할 위치의 디렉토리
경로명을 지정합니다. 예: NT의 경우 C:/ORACLE/UTRC; UNIX의 경우 /oracle/utrc; VMS
의 경우 DISK$UR3:[ORACLE.UTRC]
사용 가능한 값: 유효한 로컬 경로명, 디렉토리, 디스크입니다.
기본값  : 운영 체제에 따라 다름

utl_file_dir
설명    : 데이터베이스 관리자가 PL/SQL 파일 입출력이 허용된 디렉토리를 지정할 수
 있도록 합니다. 하나 이상의 디렉토리를 지정하려면 여러 개의 UTL_FILE_DIR 매개변
수를 사용하십시오. UTL_FILE_DIR 매개변수에 지정된 파일에 대해서는 모든 사용자가
읽기 또는 쓰기 작업을 수행할 수 있습니다.
사용 가능한 값: 임의의 유효한 디렉토리 경로입니다.
기본값  : 없음


V


W
workarea_size_policy
설명: 작업 영역 크기 조정 정책을 지정합니다. 이 매개변수는 작업 영역이 조정되는
모드를 제어합니다.
사용 가능한 값: AUTO, MANUAL입니다.
기본값: PGA_AGGREGATE_TARGET이 설정되어 있는 경우에는 AUTO, 그렇지 않은 경우에는
 MANUAL입니다.


X


Y


Z



 
 
 
 
 
 
 
 
 
Posted by 1010
02.Oracle/DataBase2009. 6. 27. 11:56
반응형
--FLASH BACK QUERY

SQL> SHOW PARAMETER UNDO

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     10800
undo_suppress_errors                 boolean     FALSE
undo_tablespace                      string      UNDOTBS1

--undo_management: UNDO SEGMENT의 관리
AUTO는 자동관리
//플래쉬백 쿼리를 쓰려면 undo_management가 반드시 AUTO해야된다

--undo_retention : COMMIT후 DATA 지속시간
//현재 10800
SQL> SELECT 10800/60/60 FROM DUAL;

10800/60/60
-----------
          3

1 개의 행이 선택되었습니다.

--10800: 3시간까지 이다.
//시간 변경 하면 15 분  후부터 적용

SQL> DESC DBMS_FLASHBACK
PROCEDURE DISABLE
PROCEDURE ENABLE_AT_SYSTEM_CHANGE_NUMBER
 인수명                         유형                    기본 내부/외부?
 ------------------------------ ----------------------- --------- --------
 QUERY_SCN                      NUMBER                  IN
PROCEDURE ENABLE_AT_TIME
 인수명                         유형                    기본 내부/외부?
 ------------------------------ ----------------------- --------- --------
 QUERY_TIME                     TIMESTAMP               IN
FUNCTION GET_SYSTEM_CHANGE_NUMBER RETURNS NUMBER

-- FLASHBACK
실행할수 있는 권한이 있어야한다.

//SCOTT 실수로 EMP테이블을 삭제한다.
--SCOTT
C:\Documents and Settings\easy>SQLPLUS SCOTT/TIGER

SQL*Plus: Release 9.2.0.1.0 - Production on 월 Jun 16 15:47:56 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


다음에 접속됨:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

SQL> DELETE EMP;

14 행이 삭제되었습니다.

SQL> COMMIT;

커밋이 완료되었습니다.

SQL> @TIME

TO_CHAR(SYSDATE,'YY
-------------------
2008-06-16:15:48:37

SQL> SELECT * FROM EMP;

선택된 레코드가 없습니다.

//SYS는 SCOTT이 삭제한지 모르고 SCOTT의 EMP테이블을 조회해본다

--SYS

SQL> SHOW USER
USER은 "SYS"입니다.

SQL> SELECT * FROM SCOTT.EMP
  2  ;

선택된 레코드가 없습니다. //나올리가없다;

-- FLASHBACK
실행할수 있는 권한이 있어야한다.

SQL> GRANT EXECUTE ON DBMS_FLASHBACK TO SCOTT;

권한이 부여되었습니다.

//SCOTT접속
SQL> CONN SCOTT/TIGER
연결되었습니다.

SQL> DESC DBMS_FLASHBACK
PROCEDURE DISABLE
PROCEDURE ENABLE_AT_SYSTEM_CHANGE_NUMBER
 인수명                         유형                    기본 내부/외부?
 ------------------------------ ----------------------- --------- --------
 QUERY_SCN                      NUMBER                  IN
PROCEDURE ENABLE_AT_TIME
 인수명                         유형                    기본 내부/외부?
 ------------------------------ ----------------------- --------- --------
 QUERY_TIME                     TIMESTAMP               IN
FUNCTION GET_SYSTEM_CHANGE_NUMBER RETURNS NUMBER

SQL> SELECT * FROM SCOTT.EMP;

선택된 레코드가 없습니다.

//타임머신을 타고 EMP테이블이 삭제하기 전시간으로 돌아간다고 생각하면된다.

SQL> EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME(TO_TIMESTAMP(-
> '2008/06/16:15:43:37','YYYY/MM/DD:HH24:MI:SS'));

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL> SELECT * FROM SCOTT.EMP; //현재시간은 삭제하기 전 시간이다.

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 80/12/17        800
        20

      7499 ALLEN      SALESMAN        7698 81/02/20       1600        300
        30

      7521 WARD       SALESMAN        7698 81/02/22       1250        500
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7566 JONES      MANAGER         7839 81/04/02       2975
        20

      7654 MARTIN     SALESMAN        7698 81/09/28       1250       1400
        30

      7698 BLAKE      MANAGER         7839 81/05/01       2850
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER         7839 81/06/09       2450
        10

      7788 SCOTT      ANALYST         7566 87/04/19       3000
        20

      7839 KING       PRESIDENT            81/11/17       5000
        10


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7844 TURNER     SALESMAN        7698 81/09/08       1500          0
        30

      7876 ADAMS      CLERK           7788 87/05/23       1100
        20

      7900 JAMES      CLERK           7698 81/12/03        950
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7902 FORD       ANALYST         7566 81/12/03       3000
        20

      7934 MILLER     CLERK           7782 82/01/23       1300
        10


14 개의 행이 선택되었습니다.

//DELETE하기 전시간이라 테이블이 보인다.복구된 것은 아니다.

--다시돌아오기:EXECUTE DBMS_FLASHBACK.DISABLE();

SQL> EXECUTE DBMS_FLASHBACK.DISABLE();

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL> SELECT * FROM SCOTT.EMP;// 원래시간으로 돌아왔기때문에 테이블이 보이지않는다.

선택된 레코드가 없습니다.

//다시 삭제전 시간으로
SQL> EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME(TO_TIMESTAMP('2008/06/16:15:43:37','YYYY/MM/DD:HH24:MI:SS
'));

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL> SELECT * FROM SCOTT.EMP;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 80/12/17        800
        20

      7499 ALLEN      SALESMAN        7698 81/02/20       1600        300
        30

      7521 WARD       SALESMAN        7698 81/02/22       1250        500
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7566 JONES      MANAGER         7839 81/04/02       2975
        20

      7654 MARTIN     SALESMAN        7698 81/09/28       1250       1400
        30

      7698 BLAKE      MANAGER         7839 81/05/01       2850
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER         7839 81/06/09       2450
        10

      7788 SCOTT      ANALYST         7566 87/04/19       3000
        20

      7839 KING       PRESIDENT            81/11/17       5000
        10


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7844 TURNER     SALESMAN        7698 81/09/08       1500          0
        30

      7876 ADAMS      CLERK           7788 87/05/23       1100
        20

      7900 JAMES      CLERK           7698 81/12/03        950
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7902 FORD       ANALYST         7566 81/12/03       3000
        20

      7934 MILLER     CLERK           7782 82/01/23       1300
        10


14 개의 행이 선택되었습니다.

SQL> @TIME

TO_CHAR(SYSDATE,'YY
-------------------
2008-06-16:16:02:29

1 개의 행이 선택되었습니다.

//원래시간으로
SQL> EXECUTE DBMS_FLASHBACK.DISABLE();

PL/SQL 처리가 정상적으로 완료되었습니다.

//그렇다면 EMP테이블을 복구할려면 FLASH BACK을 사용해 삭제전 과거의 테이블을
불러와서 현재의 EMP테이블에 넣어주면된다

--복구
SQL> INSERT INTO EMP
  2  SELECT * FROM EMP AS OF TIMESTAMP(TO_TIMESTAMP(
  3  '2008/06/16:15:43:37','YYYY/MM/DD:HH24:MI:SS'));

14 개의 행이 만들어졌습니다.

SQL> SELECT * FROM EMP;  //정상조회된다.

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 80/12/17        800
        20

      7499 ALLEN      SALESMAN        7698 81/02/20       1600        300
        30

      7521 WARD       SALESMAN        7698 81/02/22       1250        500
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7566 JONES      MANAGER         7839 81/04/02       2975
        20

      7654 MARTIN     SALESMAN        7698 81/09/28       1250       1400
        30

      7698 BLAKE      MANAGER         7839 81/05/01       2850
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER         7839 81/06/09       2450
        10

      7788 SCOTT      ANALYST         7566 87/04/19       3000
        20

      7839 KING       PRESIDENT            81/11/17       5000
        10


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7844 TURNER     SALESMAN        7698 81/09/08       1500          0
        30

      7876 ADAMS      CLERK           7788 87/05/23       1100
        20

      7900 JAMES      CLERK           7698 81/12/03        950
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7902 FORD       ANALYST         7566 81/12/03       3000
        20

      7934 MILLER     CLERK           7782 82/01/23       1300
        10


14 개의 행이 선택되었습니다.

SQL> COMMIT;

커밋이 완료되었습니다.

SQL> SELECT * FROM EMP;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 80/12/17        800
        20

      7499 ALLEN      SALESMAN        7698 81/02/20       1600        300
        30

      7521 WARD       SALESMAN        7698 81/02/22       1250        500
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7566 JONES      MANAGER         7839 81/04/02       2975
        20

      7654 MARTIN     SALESMAN        7698 81/09/28       1250       1400
        30

      7698 BLAKE      MANAGER         7839 81/05/01       2850
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER         7839 81/06/09       2450
        10

      7788 SCOTT      ANALYST         7566 87/04/19       3000
        20

      7839 KING       PRESIDENT            81/11/17       5000
        10


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7844 TURNER     SALESMAN        7698 81/09/08       1500          0
        30

      7876 ADAMS      CLERK           7788 87/05/23       1100
        20

      7900 JAMES      CLERK           7698 81/12/03        950
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7902 FORD       ANALYST         7566 81/12/03       3000
        20

      7934 MILLER     CLERK           7782 82/01/23       1300
        10


14 개의 행이 선택되었습니다.

SQL> SELECT * FROM EMP;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 80/12/17        800
        20

      7499 ALLEN      SALESMAN        7698 81/02/20       1600        300
        30

      7521 WARD       SALESMAN        7698 81/02/22       1250        500
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7566 JONES      MANAGER         7839 81/04/02       2975
        20

      7654 MARTIN     SALESMAN        7698 81/09/28       1250       1400
        30

      7698 BLAKE      MANAGER         7839 81/05/01       2850
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7782 CLARK      MANAGER         7839 81/06/09       2450
        10

      7788 SCOTT      ANALYST         7566 87/04/19       3000
        20

      7839 KING       PRESIDENT            81/11/17       5000
        10


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7844 TURNER     SALESMAN        7698 81/09/08       1500          0
        30

      7876 ADAMS      CLERK           7788 87/05/23       1100
        20

      7900 JAMES      CLERK           7698 81/12/03        950
        30


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM
---------- ---------- --------- ---------- -------- ---------- ----------
    DEPTNO
----------
      7902 FORD       ANALYST         7566 81/12/03       3000
        20

      7934 MILLER     CLERK           7782 82/01/23       1300
        10


14 개의 행이 선택되었습니다.

SQL>

Posted by 1010
카테고리 없음2009. 6. 27. 11:50
반응형

RMAN: 백업과 복구 TOOL

TARGER DB         →        RMAN             ←           RECOVERY CATALOG DB
                           ←       Contro file       →

RMAN의 장점
*Block level incremental Backup
*속도 제어
*다수의 분산 환경



--RECOVERY CATALOG DB 에 접속해본다.

RCDB:

사용자 삽입 이미지

//SYSTEM계정으로 RCDB에 접속

--RCDB: SYSTEM
C:\Documents and Settings\easy>SQLPLUS SYSTEM/ORACLE@RCDB

SQL*Plus: Release 9.2.0.1.0 - Production on 월 Jun 16 16:54:23 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


다음에 접속됨:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

--RMAN을 사용하기 위해서는
    1.전용사용자
    2.전용테이블스페이스
    3.테이블

DOC>/*
DOC>    CREATE TABLESPACE RCTBS
DOC>    DATAFILE 'C:\oracle\oradata\ORCL\RCTBS01.DBF' SIZE 100M;
DOC>
DOC>    CREATE USER RMAN
DOC>    IDENTIFIED BY RMAN
DOC>    ACCOUNT UNLOCK
DOC>    DEFAULT TABLESPACE RCTBS
DOC>    TEMPORARY TABLESPACE TEMP;
DOC>    GRANT CONNECT, RESOURCE TO RMAN;
DOC>    GRANT RECOVER_CATALOG_OWNER TO RMAN;
DOC>*/
SQL> --9i 윈도우엔 미리설정되어있다. 안해줘도된다.

--DBID 확인
--OS
C:\Documents and Settings\easy>SQLPLUS "SYS/ORACLE AS SYSDBA"

SQL*Plus: Release 9.2.0.1.0 - Production on 월 Jun 16 16:40:50 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


다음에 접속됨:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

SQL> SELECT NAME,DBID FROM V$DATABASE;

NAME            DBID
--------- ----------
ORCL      1185320995

--DBID:절대 중복될수없다

//OS에서 RMAN으로 접속해본다.

--OS
C:\Documents and Settings\easy>RMAN TARGET='SYS/ORACLE AS SYSDBA'

복구 관리자: 릴리스 9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

대상 데이터베이스에 접속합니다: ORCL (DBID=1185320995) //같은것을 확인할수있다.

RMAN> EXIT


복구 매니저가 완성되었습니다.

--이제 RECOVERY CATALOG DB 에 접속해본다.

//RCDB접속
C:\Documents and Settings\easy>RMAN RCVCAT=RMAN/RMAN@RCDB

복구 관리자: 릴리스 9.2.0.1.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04004: error from recovery catalog database: ORA-28000: the account is locked
//RMAN계정이 잠겨있어서 에러를 발생한다.(DEFAULT)

--RCDB: SYSTEM
//RMAN의 계정을 풀어준다.
SQL> SHOW USER
USER은 "SYSTEM"입니다

SQL> ALTER USER RMAN
  2  IDENTIFIED BY RMAN
  3  ACCOUNT UNLOCK;
사용자가 변경되었습니다.

//RMAN으로 접속해본다.
SQL> CONN RMAN/RMAN@RCDB
연결되었습니다.
SQL> SELECT * FROM TAB;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
AL                             TABLE
BCB                            TABLE
BCF                            TABLE
BDF                            TABLE
BP                             TABLE
BRL                            TABLE
BS                             TABLE
BSF                            TABLE
CCB                            TABLE
CCF                 %2

Posted by 1010
02.Oracle/DataBase2009. 6. 27. 11:38
반응형
생성위치: $ORACLE_HOME/dbs/
파일이름: spfileSID.ora
관련파일: initSID.ora(pfile)

텍스트파일인 pfile과 달리 바이너리파일인 spfile은 텍스트 에디터로 수정할 수 없다.
pfile로 생성된 이후에는 alter system 명령으로 수정해야한다.

spfile을 생성하는 방법은 다음과 같다.
SQL> create SPFILE from PFILE;

인스턴스가 재시작된 이후에는 데이터베이스 초기화를 위해서는 spfile만 사용

관련된에러:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup
Posted by 1010
02.Oracle/DataBase2009. 6. 27. 11:36
반응형

# OracleInstanceShutdown

+ Shutdown normal
- 새로운 사용자 연결 불허
- 모든 사용자가 데이터베이스 접속을 끊을 때까지 대기
- 이미 연결된 사용자는 계속 작업 가능
- 모든 사용자의 접속이 끊기면 데이터베이스를 닫고 인스턴스를 디스마운트한 후에 인스턴스 종료

+ Shutdown immediate
- 새로운 사용자 연결 불허
- 모든 사용자의 데이터베이스 접속 종료
- 커밋되지 않은 트랜잭션들은 롤백
- 데이터베이스를 닫고, 인스턴스 디스마운트, 인스턴스 중료 순

+ Shutdown transactional
- 새로운 사용자 연결 불허
- 새로운 트랜잭션 불허. 사용자가 새로운 트랜잭션을 시도할 경우 세션 종료
- 사용자의 롤백하거나 커밋하지 않은 트랜잭션이 커밋될 때까지 대기
- 모든 트랜잭션이 완료되면, 데이터베이스를 닫고, 인스턴스 디스마운트, 인스턴스 종료 순

$ sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit

Posted by 1010
02.Oracle/DataBase2009. 6. 27. 11:36
반응형

# OracleInstanceShutdown

+ Shutdown normal
- 새로운 사용자 연결 불허
- 모든 사용자가 데이터베이스 접속을 끊을 때까지 대기
- 이미 연결된 사용자는 계속 작업 가능
- 모든 사용자의 접속이 끊기면 데이터베이스를 닫고 인스턴스를 디스마운트한 후에 인스턴스 종료

+ Shutdown immediate
- 새로운 사용자 연결 불허
- 모든 사용자의 데이터베이스 접속 종료
- 커밋되지 않은 트랜잭션들은 롤백
- 데이터베이스를 닫고, 인스턴스 디스마운트, 인스턴스 중료 순

+ Shutdown transactional
- 새로운 사용자 연결 불허
- 새로운 트랜잭션 불허. 사용자가 새로운 트랜잭션을 시도할 경우 세션 종료
- 사용자의 롤백하거나 커밋하지 않은 트랜잭션이 커밋될 때까지 대기
- 모든 트랜잭션이 완료되면, 데이터베이스를 닫고, 인스턴스 디스마운트, 인스턴스 종료 순

$ sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit

Posted by 1010