use db_name;
sp_helpfile; <- log name명 알아오기 (필드 name)

backup log aaa with no_log;
dbcc shrinkfile ('aaa_Log' ,7); <- aaa_Log를 7MB로 축소
AND


ALTER TABLE table_name
ADD ( column_1 column-definition,
  column_2 column-definition,
  ... 
  column_n column_definition );

ex) alter table aaa add (bbb varchar2(128));
AND


셋업 실행.
1. PRO C 설치
사용가능한 제품에서 클라이언트 선택하고 다음.
설치유형에서는 관리자를 선택하고 다음.
커맨드 창을 열고..

C:\Documents and Settings\Administrator>proc

Pro*C/C++: Release 9.2.0.1.0 - Production on 화 Jan 22 19:08:20 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

시스템 기본 옵션 값이 가지고 온 곳: C:\oracle\ora92\precomp\admin\pcscfg.cfg

옵션 이름      현재 값        기술
-------------------------------------------------------------------------------
auto_connect   아니오         ops$ 계정으로 자동 연결할 수 있도록 합니다
char_map       charz          문자 배열과 문자열을 대응합니다
close_on_commit아니오         COMMIT에 모든 커서를 닫습니다
cmax           100            접속 풀에 대한 CMAX 값
cmin           2              접속 풀에 대한 CMIN 값
cincr          1              접속 풀에 대한 CINCR 값
ctimeout       0              접속 풀에 대한 CTIMEOUT 값
cnowait        0              접속 풀에 대한 CNOWAIT 값
code           ansi_c         생성될 코드 유형
comp_charset   multi_byte     C 컴파일러가 지원하는 문자 집합 유형
config         default        다른 파일로 시스템 구성 파일 무효화
cpool          아니오         접속 풀링 지원
cpp_suffix     *none*         기본 C++ 파일 이름 접미어 무효화
dbms           native         v6/v7/v8 호환성 모드
def_sqlcode    아니오         '#define SQLCODE sqlca.sqlcode' 매크로 생성
define         WIN32_LEAN_AND_선행 프로세서 기호 정의
duration       transaction    캐시에 있는 객체에 대한 핀 기간 설정
dynamic        oracle         Oracle 또는 ANSI 동적 SQL 의미 지정
errors         예             오류 메시지가 터미널에 전송될지 여부
errtype        *none*         intype 파일 오류에 대한 목록 파일 이름
fips           none           ANSI 비호환 사용의 FIPS 플래그 처리
header         *none*         이전에 컴파일된 헤더에 대한 파일 확장자 지정
hold_cursor    아니오         커서 캐시에서 커서 유지 제어
iname          *none*         입력 파일 이름
include        *none*         포함된 파일에 대한 디렉토리 경로
intype         *none*         유형 정보에 대한 입력 파일 이름
lines          아니오         생성된 코드에 #line 지시어 추가
lname          *none*         기본 목록 파일 이름 무효화
ltype          none           목록 파일에 생성된 데이터 양
maxliteral     1024           생성된 문자열 리터럴의 최대 길이
maxopencursors 10             캐시에 저장된 열린 커서의 최대 수
mode           oracle         Oracle 또는 ANSI 규칙에 대한 코드 일치
nls_char       *none*         국가별 언어 문자 변수 지정
nls_local      아니오         NLS 문자 의미가 수행되는 방법 제어
objects        예             객체 유형 지원
oname          *none*         출력 파일 이름
oraca          아니오         ORACA 사용 제어
pagelen        80             목록 파일의 페이지 길이
parse          none           비SQL 코드의 구문 분석 제어
prefetch       1              커서 OPEN 시 미리 인출된 행 수
release_cursor 아니오         커서 캐시에서 커서 해제 제어
select_error   예             선택 오류의 플래그 제어
sqlcheck       syntax         SQL 확인 시 컴파일 시간의 양
sys_include    *none*         시스템 헤더 파일이 있는 디렉토리
threads        아니오         다중 스레드 응용 프로그램을 나타냄
type_code      oracle         동적 SQL에 대한 Oracle 또는 ANSI 유형 사용
unsafe_null    아니오         지시자 변수 없이 널 인출 허용
userid         *none*         사용자 이름/암호 [@dbname] 접속 문자열
utf16_charset  nchar_charset  UTF16 변수에 의해 사용된 문자 집합 형식
varchar        아니오         암시적 varchar 구조 사용 허용
version        recent         반환될 객체의 버전
win32_threads  아니오         Windows 기본 로컬 스레드 지원
PCC-F-02135, CMD-LINE:  사용자가 도움을 요청했습니다

2. C 컴파일러 설치 -> 비쥬얼 스튜디오 C++ 설치.

3. 비쥬얼 c++ 실행 경로를 시스템 환경 변수의 PATH에 등록.

          경로 -->  C:\Program Files\Microsoft Visual Studio\VC98\Bin

4. 커맨드 창을 새로 열고 다음과 같이 확인한다.

C:\Documents and Settings\Administrator>vcvars32
Setting environment for using Microsoft Visual C++ tools.

위와 같은 메세지가 뜨면 성공적으로 된것이다.

5. D:\ProC 폴더를 생성

6. pcmake.bat 파일을 d:\ProC 폴더로 이동 ( pcmake.bat 프리컴파일, 링킹을 한번에 처리해 주는 파일)

7. d:\ProC폴더를 시스템 환경변수의 path에 등록.

8. 새로운 명령창을 띄우고 다음의 명령들을 실행

   >proc
   >vcvars32
   >pcmake

C:\Documents and Settings\Administrator>vcvars32
Setting environment for using Microsoft Visual C++ tools.
C:\Documents and Settings\Administrator>pcmake
.
usage pcmake filename.pc [ i.e. pcmake sample1 ]
.
C:\Documents and Settings\Administrator>

 이상의 명령이 오류없이 모두 실행되면 환경 설정 완료!

AND


[ Oracle Instant Client 설치 -예제는 solaris64]

1. 다운로드 후 설치 파일 임의 디렉토리에 FTP 이용하여 올리기
http://www.oracle.com/technology/global/kr/tech/oci/instantclient/instantclient.html
(해당 클라이언트를 선택하여, 다운 받으시고 ftp 이용해 서버로 옮기시길...)

Instant Client Package - Basic
Instant Client Package - JDBC Supplement
Instant Client Package - SQL*Plus
Instant Client Package - SDK


2. 압축 해제 및 실행폴더로 복사
# unzip instantclient-basic-solaris64-10.2.0.3-20070101.zip
# unzip instantclient-jdbc-solaris64-10.2.0.3-20070101.zip
# unzip instantclient-sdk-solaris64-10.2.0.3-20070101.zip
# unzip instantclient-sqlplus-solaris64-10.2.0.3-20070101.zip
# cd instantclient_10_2
# mkdir /usr/lib/oracle
# mv * /usr/lib/oracle/


3. profile 및 tnsnames 파일 수정

# vi /etc/profile
-----------------------------------------------------------------
# for Oracle Instant Client
if [ -d /usr/lib/oracle ]
then
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle;export LD_LIBRARY_PATH
  PATH=$PATH:/usr/lib/oracle;export PATH;
  NLS_LANG=Korean_Korea.KO16KSC5601;export NLS_LANG;
  TNS_ADMIN=/usr/lib/oracle; export TNS_ADMIN;
  SQLPATH=/usr/lib/oracle; export SQLPATH;
fi
-----------------------------------------------------------------

# vi /usr/lib/oracle/tnsnames.ora
-----------------------------------------------------------------
ORA=
  (DEscRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =211.XXX.XXX.XXX)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ora)
    )
  )
-----------------------------------------------------------------
혹시 재접속 에러가 발생하면 ^M 이 문자열에 있을 것입니다. 아마 복사해서 사용할 경우
발생할수도 있습니다. vi로 직접 입력하시던지 editplus를 이용해서...


4. 로그아웃 후 재접속. 테스트
# sqlplus user/passwd@ORA
SQL*Plus: Release 10.2.0.2.0 - Production on 화 10월 21 16:47:39 2007
Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.

다음에 접속됨:
Oracle10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 10.2.0.1.0 - Production
SQL>

AND



Logical Database Structure

  - database
  - tablespace
  - segment
  - extent
  - block

SYSTEM and NON-SYSTEM TABLESPACE

  - SYSTEM Tablespace : data dictionary 정보와 SYSTEM rollback segment을 가진다.
  - NON-SYSTEM Tablespace : Rollback segments, Temporary segments, data, index등을 가진다.

CREATE TABLESPACE

      CREATE TABLESPACE tablespace
            DATAFILE filespec [autoextend_clause],filespec [autoextend_clause]]...
            [MINIMUM EXTENT integer [K|M]]
            [DEFAULT storage_clause]
            [PERMANENT|TEMPOARY] --> default PERMANENT
            [ONLINE|OFFLINE] --> default ONLINE


      예) CREATE TABLESPACE data
                DATAFILE '/DISK4/app01.dbf' SIZE 100M,
                                              '/DISK5/app02.dbf' SIZE 100M
                MINIMUM EXTENT 500K
                DEFAULT STORAGE (INITIAL 500K NEXT 500K
                                              MAXEXTENTS 500 PCTINCREASE 0) ;


    - STORAGE PARAMETERS

          * INITIAL : 첫째 extent의 크기를 정한다. 최소 크기는 2 blocks ( 2 * DB_BLOCK_SIZE )
                      default는 5 bolcks ( 5 * DB_BLOCK_SIZE )
          * NEXT : 다음 extent의 크기를 정한다. 최소 크기는 1 block
                      default는 5 bolcks ( 5 * DB_BLOCK_SIZE )
          * MINEXTENTS : segment가 생성되었을 때 할당되는 extent의 갯수.
                      default는 1개
          * PCTINCREASE n : 다음에 extent가 생성될 때 이전 extent보다 n% 증가된 크기 ( PCT: percent )
                      default는 50
          * MAXEXTENTS : segment가 갖을 수 있는 extent의 최대 수

Temporary Tablespace

      CREATE TABLESPACE DATA
                        DATAFILE '/DISK2/DATA01.dbf' SIZE 50M
                        MINIMUM EXTENT 1M
                        DEFAULT STORAGE (INITIAL 2M NEXT 2M
                                                    MAXEXTENTS 500 PCTINCREASE 0)
                        TEMPORARY ;

TABLESPACE의 크기 설정 (data file을 추가)

      ALTER TABLESPACE DATA
            ADD DATAFILE '/DISK5/DATA02.dbf' SIZE 200M ;

DATA FILE이 FULL되면 자동으로 DATAFILE을 증가한다.

      ALTER TABLESPACE DATA
            ADD DATAFILE '/DISK6/app04.dbf' SIZE 200M
                          AUTOEXTEND ON NEXT 10M
                          MAXSIZE 500M ;


      * 3가지 방법이 있다.
          1. CREATE DATABASE을 한다.
          2. CREATE TABLESPACE DATAFILE을 한다.
          3. ALTER TABLESPACE ADD DATAFILE을 한다.

현재 DATAFILE의 크기를 다시바꾸는(resize) 방법


    ALTER DATABASE DATAFILE '/DISK5/app02.dbf' RESIZE 200M ;


Changing the Storage Settings

      ALTER TABLESPACE DATA
                          MINIMUM EXTENT 2M ;


      ALTER TABLESPACE DATA
                DEFAULT STORAGE (INITIAL 2M NEXT 2M
                                                                            MAXEXTENTS 999) ;


Tablespace OFFLINE/ONLINE

      - tablespace가 만들어지면 초기값(default)이 ONLINE이다.
      - OFFLINE이 되면 다른 사용자의 access가 불가능하다.
      - SYSTEM tablespace는 OFFLINE이 불가능하다.
      - transaction이 끝나지 않은 tablespace는 OFFLINE 불가능하다.

    ALTER TABLESPACE tablespace
          { ONLINE | OFFLINE [NORMAL|TEMPORARY|IMMEDIATE] }
      - Normal : checkpoint를 적용시키고 offline한다.
      - Temporary : datafile 중에서 online datafile에만 checkpoint를 적용시키고 offline한다.
      - Immediate : checkpoint 없이 offline한다.


    예) ALTER TABLESPACE DATA OFFLINE NORMAL; 특별한 경우가 아닌이상 이렇게 써라.NORMAL은 default이므로 생략가능

Moving Data File : ALTER TABLESPACE


      - 반드시 offline 한 상태에서 한다.
      - target data file이 반드시 존재해야 한다.


      ALTER TABLESPACE DATA
                          RENAME DATAFILE '/DISK4/DATA01.dbf'
                          TO '/DISK5/DATA01.dbf' ;


Moving Data File : ALTER DATABASE

      - 반드시 database가 mount 상태이어야 한다.
      - target data file이 반드시 존재해야 한다.
      - shutdown하고 host상태에서 datafile을 제거해야 한다.


      ALTER DATABASE
                    RENAME FILE '/DISK1/system01.dbf'
                    TO '/DISK2/system01.dbf' ;


READ-ONLY Tablespace 상태


      - 오직 select만 할 수 있다.
      - CREATE는 안되고... DROP은 할 수 있다.
      - 사용자들이 data변경을 못함, backup과 recovery가 쉽다.

      ALTER TABLESPACE DATA READ ONLY;


      ALTER TABLESPACE DATA READ WRITE; -- read only 상태를 다시 read write상태로 바꿔준다.


    * 주의해야 하는점
          - tablespace가 반드시 online상태여야 한다.
          - active transaction이 허용되지 않아야 한다.
          - tablespace가 active rollback segment를 갖고 있으면 안된다.
          - online backup중엔 못한다.


DROP TABLESPACE

      - file 삭제는 host에 나가서 삭제를 해야 한다.


      DROP TABLESPACE DATA
      INCLUDING CONTENTS ;

      * including contents를 안썼을 때, tablespace가 비워져 있어야만 drop이 된다.
            including contents는 데이터가 들어 있어도 tablespace를 삭제하겠다는 뜻이다.


DBA_TABLESPACES : tablespace 정보를 갖고 있음

      - TABLESPACE_NAME,
            NEXT_EXTENT,
            MAX_EXTENTS,
            PCT_INCREASE,
            MIN_EXTLEN,
            STATUS,
            CONTENTS


      SVRMGR> SELECT tablespace_name, initial_extent, next_extent,
                              2 max_extents, pct_increase, min_extlen
                              3 FROM dba_tablespaces ;

DBA_DATA_FILES : FILE에 관한 정보를 갖고 있다.


      - FILE_NAME, TABLESPACE_NAME, BYTES, AUTOEXTENSIBLE, MAXBYTES, INCREMENT_BY


      SVRMGR> SELECT file_name, tablespace_name, bytes, autextensible, maxbytes, increment_by
                              2 FROM dba_data_files ;

Contol File 정보


      - V$DATAFILE : ts#, name, file#, rfile#, status, enabled, bytes, create_bytes
      - V$TABLESPACE : ts#, name


      SVRMGR> SELECT d.file#, d.name, d.status, d.enabled, d.bytes, d.create_bytes, t.name
                              2 FROM v$datafile d, v$tablespace t
                              3 WHERE t.ts# = d.ts# ;


연습

1. 현재의 Tablespace와 Data file들을 확인

$ sqlplus system/manager
SQL> select * from dba_tablespaces ;
SQL> select file_name, tablespace_name, bytes
          2 from dba_data_files ;


2. DATA01 tablespace의 size를 늘이기 위해, datafile을 하나 추가

SQL> alter tablespace data01
          2 add datafile '$ORACLE_HOME/DATA/DISK6/data01b.dbf' size 500k ;
SQL> select file_name, tablespace_nmae, bytes
          2 from dba_data_files ;


3. 문제2 에서 추가한 datafil의 size를 1M 로 resize

SQL> alter database datafile
          2 '$ORACLE_HOME/DATA/DISK6/data01b.dbf'
          3 resize 1M ;
SQL> select file_name, tablespace_name, bytes
          2 from dba_data_files ;


4. 문제2 에서 추가한 datafile의 size가 자동적으로 extend 될 수 있도록 하자

SQL> alter database datafile
          2 '$ORACLE_HOME/DATA/DISK6/data01b.dbf'
          3 autoextend on next 100k maxsize 2m ;
SQL> select file_name, tablespace_name, bytes, autoextensible
          2 from dba_data_files ;

5. INDX01 tablespace의 datafile을 DISK6으로 옮기기

SQL> alter tablespace indx01 offline ;
SQL> select name, status from v$datafile ;
SQL> host
$ mv $ORACLE_HOME/DATA/DISK3/indx01.dbf $ORACLE_HOME/DATA/DISK6/indx01.dbf
$ exit
SQL> alter tablespace indx01 rename datafile
          2 '$ORACLE_HOME/DATA/DISK3/indc01.dbf'
          3 to '$ORACLE_HOME/DATA/DISK6/indx01.dbf' ;
SQL> alter tablespace indx01 online ;
SQL> select name, status from v$datafile ;


6. RONLY Tablespace를 read only로 바꾸고, 추가적인 테이블을 생성하고 무슨 일이 발생하며 이유는 무엇인가?

SQL> create table t1(t1 number) tablespace ronly ;
SQL> alter tablespace ronly read only ;
SQL> select name, enabled, status from v$datafile ;
SQL> create table t2(t2 number) tablespace ronly ; ==> error 발생 확인!


7. RONLY Tablespace를 삭제

SQL> drop tablespace ronly including contents ;
SQL> select * from v$tablespace ;
SQL> host
$ rm $ORACLE_HOME/DATA/DISK1/ronly.dbf

AND