'Oracle 10g/10g - Admin I'에 해당되는 글 10건

  1. 2010.03.15 Export / Import
  2. 2010.03.08 Restore & Recovery
  3. 2010.03.08 Backup
  4. 2010.03.05 sysdba 권한 로그인시 패스워드 지정
  5. 2010.03.05 프로파일 & 유저 관리 & 권한 관리
  6. 2010.03.05 Constraints (제약 조건)
  7. 2010.03.05 Index (인덱스)
  8. 2010.03.03 Table (테이블)
  9. 2010.02.27 Tablespace 관련 명령어
  10. 2010.02.24 Redo log group & member 관련 명령어
posted by I유령I 2010. 3. 15. 12:27
Export

$ exp userid = 유저명과 패스워드를 쓴다.   예제) userid = scott/tiger
file         = Export 받는 Dump File을 지정한다.   예제) file = /data/backup/0315.dmp
log          = Export 받을 때 Log File을 지정할 수 있다. log = /data/backup/0315.exp
*rows        = 데이타를 받을 것인지 아닌지를 지정한다. Default 값은 y 이다.   예제) rows = y
*constraints = Table에 셋팅된 제약 조건을 받을 것인지 지정한다. Default 값은 y 이다.   예제) constraints = y
*indexes     = Index를 받을 것인지를 지정한다. Default 값은 y 이다.   예제) indexes = y
tables       = 유저의 특정 Table을 받고자 할 때 사용된다.   예제) tables = 사원,부서 
               Default는 userid가 작성한 모든 Table을 받는다.          
compress     = Table을 위해 extebt된 값이 Storage 값의 INITIAL 값에 셋팅된다.
               Default 값은 compress = y 이지만, compress = n 이 안전하다.
*full        = userid가 system/manager나 dba 권한이 있는 유저일 경우 Database 전체를 exp 받을 수 있다.
          
exp 예제)
$ exp userid=system/manager file=/data/backup/0315.dmp log=/data/backup/0315.exp  full=y


< 연습 예제 >
1. scott 사용자의 모든 데이터를 전부 백업 받는 경우
$ exp userid=scott/tiger file=/data/backup/0315.dmp log=/data/backup/0315.exp

2. scott 유저의 constraint 와index 를 빼고 Synonym,View,Table 의 데이타만 받는 경우
$ exp userid=scott/tiger file=/data/backup/0315.dmp log=/data/backup/0315.exp rows=y constraints=n indexes=n

3. Data만 빼고 Index와 제약 조건만 받고자 한다면
$ exp userid=scott/tiger file=/data/backup/0315.dmp log=/data/backup/0315.exp rows=n constraints=y indexes=y

Export하면, Dunp File은 Export하는 User에 필요한 모든 사항들이 SQL 문장으로 작성된다.
즉,  CREATE TABLESPACE, CREATE TABEL ....,   CREATE  VIEW .., CREATE  INDEX .. INSERT INTO .... 문장으로 구성된다.
주의할 사항은 CREATE TABLE (..  ..) tablespace tbs_name;  과 같이 Table이나 Index의 Tablespace나 Storage값이 정의되므로 Table이 저장될 Tablespace의 위치를 바꾸고자 할 때는 단순  EXPort/IMPort 방법만으로는 안된다. 
그렇다고 이 화일을 직접 편집하면 Dump File이 손상되므로 직접 편집하면 안된다.



Import

$ imp userid=Import할 유저명. Export한 유저명과 동일해야 한다. 
file      = Export한 Dumf file명
log       = Import Log file
indexfile = Data를 Import하지 않고 CREATE INDEX 문장의 SQL로 File이 만들어진다.
rows      = Data를 Import할지의 여부를 선택한다. (y : n )
indexes   = Index를 Import할지의 여부를 선택한다. ( y : n )
fromuser  = 다른 User에게 Export File을 Import하고자 할 때 Export한 User를 지정한다.
touser    = Import할 User를 지정한다.
※ fromuser , touser 옵션은 system/manager User에서만 사용할 수 있다.
igore     = Import 도중 에러가 발생해도 무시하고 계속 진행한다.


< 연습 예제 >
1. 전체 Data 입력
$ imp userid=SYSTEM/password file=dba.dmp full=y

2. scott schema의 emp,dept만 입력
$ imp userid=SYSTEM/password file=dba.dmp fromuser=scott tables=(dept,emp) 

3. jinsu schema의 Table을 scott schema로 변경해서 입력
$ imp userid=SYSTEM/password fromuser=jinsu touser=scott FILE=jinsu.dmp tables=(emp,dept)

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

Restore & Recovery  (0) 2010.03.08
Backup  (0) 2010.03.08
sysdba 권한 로그인시 패스워드 지정  (0) 2010.03.05
프로파일 & 유저 관리 & 권한 관리  (0) 2010.03.05
Constraints (제약 조건)  (0) 2010.03.05
posted by I유령I 2010. 3. 8. 11:30
Restore : Backup 받았던 파일을 복원 시키는 것
Recovery : 복원된 파일을 Redo log file을 적용시켜서 복구하는 것

복구 원리
Recover 명령 -> Control file 정보 확인 -> Data file 정보 확인 -> Control file  과 Data file 정보가 다를 경우 Redo log file 또는 Archived log file의 정보를 적용시켜 복구를 완료한다.

복구 명령어
SQL> recover database; ※ mount 단계에서만 사용이 가능한 명령어
SQL> recover tablespace tablespace_name;
SQL> recover datafile '/home/oracle/oradata/testdb/system01.dbf';

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

Export / Import  (0) 2010.03.15
Backup  (0) 2010.03.08
sysdba 권한 로그인시 패스워드 지정  (0) 2010.03.05
프로파일 & 유저 관리 & 권한 관리  (0) 2010.03.05
Constraints (제약 조건)  (0) 2010.03.05
posted by I유령I 2010. 3. 8. 10:45
1. 실습 환경 설정
1) 사용 O/S : Red Hat Enterprise Linux 4
2) Oracle Database : Oracle Database 10g R2 (10.2.0.1)
3) 각 원본 파일 위치
- Data file : /home/oracle/oradata/testdb/*.dbf
- Redo log file : /home/oracle/oradata/testdb/*.log
- Control file : /home/oracle/oradata/testdb/*.ctl
4) Archived log file 위치 : /data/arc1, /data/arc2
5) 백업 경로
- /data/backup/close : Cold Backup 경로
- /data/backup/open : Hot Backup 경로

2. 백업 대상 파일
1) Data file
2) Redo log file
3) Control file
4) Parameter file
5) Password file
※ 1), 2), 3) 은 필수적인 백업 파일이며4), 5) 는 추후 복구할 때 없으면 불편하기 때문에 백업을 받는 파일이다.

3. 오라클 백업 관련 운영 모드
Archive log mode
- Online Redo log 파일을 다른 장소로 하니 더 Archive 해서 혹시 발생할 지 모르는 Online redo log 파일의 장애를 대비하는 방법이다.
- 관리자가 별도로 설정해야 하며 Archived log가 저장될 별도의 저장 공간이 필요하다.

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

Export / Import  (0) 2010.03.15
Restore & Recovery  (0) 2010.03.08
sysdba 권한 로그인시 패스워드 지정  (0) 2010.03.05
프로파일 & 유저 관리 & 권한 관리  (0) 2010.03.05
Constraints (제약 조건)  (0) 2010.03.05
posted by I유령I 2010. 3. 5. 11:36
[oracle@ghost sql]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 5 11:35:00 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> exit
Disconnected
[oracle@ghost ~]$ vi $ORACLE_HOME/network/admin/sqlnet.ora

# sqlnet.ora Network Configuration File: /home/oracle/product/10g/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

SQLNET.AUTHENTICATION_SERVICES=(NONE)
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"product/10g/network/admin/sqlnet.ora" 6L, 218C 저장 했습니다 
[oracle@ghost ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 5 11:37:51 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

ERROR:
ORA-01031: insufficient privileges


Enter user-name: 
ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name: 
ERROR:
ORA-01017: invalid username/password; logon denied


SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
[oracle@ghost ~]$ 
[oracle@ghost ~]$ sqlplus sys/oracle as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 5 11:38:04 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> exit
Disconnected
[oracle@ghost ~]$ 

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

Restore & Recovery  (0) 2010.03.08
Backup  (0) 2010.03.08
프로파일 & 유저 관리 & 권한 관리  (0) 2010.03.05
Constraints (제약 조건)  (0) 2010.03.05
Index (인덱스)  (0) 2010.03.05
posted by I유령I 2010. 3. 5. 03:31

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

Backup  (0) 2010.03.08
sysdba 권한 로그인시 패스워드 지정  (0) 2010.03.05
Constraints (제약 조건)  (0) 2010.03.05
Index (인덱스)  (0) 2010.03.05
Table (테이블)  (0) 2010.03.03
posted by I유령I 2010. 3. 5. 03:05
■ Types of Constraints (제약 조건 유형)
NOT NULL : 열에 NULL 값을 포함할 수 없도록 지정
UNIQUE : 열 또는 열 조합을 고유하게 지정
PRIMARY KEY : 열 또는 열 조합을 테이블의 기본 키로 지정
FOREIGN KEY : 열 또는 열 조합을 참조 무결성 제약 조건의 외래키로 지정
CHECK : 테이블의 각 행이 만족해야 하는 조건 지정

NOT NULL 제약 조건은 테이블의 열에 값이 포함되어야 합니다.
UNIQUE 키 제약 조건에서는 하나의 열 또는 여러 열에 있는 값(키)이 고유해야 합니다. 테이블에 있는 어떤 행도 지정된 열 또는 열 집합에서 중복된 값을 가질 수 없습니다.

데이터베이스의 각 테이블은 PRIMARY KEY 제약 조건을 하나까지만 가질 수 있습니다.
PRIMARY KEY 제약 조건은 다음 두 조건을 모두 만족시킵니다.
• 테이블에 있는 어떤 행도 지정된 열에서 중복된 값을 가질 수 없습니다.
• 기본 키 열은 NULL 값을 포함할 수 없습니다.
• 열 또는 열 집합의 CHECK 무결성 제약 조건은 지정된 조건이 참이거나 테이블의 모든 행에 대해 알 수 없음이어야 합니다.


■ Constraint States (제약 조건 상태)
무결성 제약 조건은 활성화(ENABLE)되거나 비활성화(DISABLE)될 수 있습니다.
제약 조건이 활성화되면 데이터베이스에서 데이터가 입력 또는 갱신될 때 검사됩니다.
제약 조건 규칙을 따르지 않는 데이터는 입력할 수 없습니다.
제약 조건이 비활성화되면 규칙을 따르지 않는 데이터를 데이터베이스에 입력할 수 있습니다.
무결성 제약 조건은 다음 상태 중 하나일 수 있습니다.

• DISABLE NOVALIDATE
• DISABLE VALIDATE
• ENABLE NOVALIDATE
• ENABLE VALIDATE

DISABLE NOVALIDATE: 이 제약 조건은 검사하지 않으며 입력 또는 갱신한 새로운 데이터 뿐만 아니라 테이블의 데이터도 해당 제약 조건에서 정의한 규칙을 따르지 않을 수 있습니다.

DISABLE VALIDATE: 제약 조건이 이 상태일 경우에는 제약 조건이 있는 열을 수정할 수 없으며 제약 조건에 대한 인덱스는 삭제되고 제약 조건은 비활성화됩니다.
※ 제약 조건이 Deferrable인 경우에는 인덱스가 삭제되지 않습니다.

ENABLE NOVALIDATE: 제약 조건이 이 상태면 제약 조건을 위반하는 새 데이터를 입력할 수 없지만 테이블에 적합하지 않은 데이터 즉, 제약 조건을 위반하는 데이터를 포함할 수는 있습니다. NOVALIDATE 상태의 제약 조건 활성화는 적합한 OLTP 데이터를 업로드하는 데이터 웨어하우스 구성에 가장 유용합니다.

ENABLE VALIDATE: 제약 조건이 이 상태면 제약 조건을 위반하는 행을 테이블에 삽입할 수 없지만 제약 조건이 비활성화된 동안에는 삽입할 수 있습니다. 이러한 행을 제약 조건의 예외라고 합니다. 제약 조건이 ENABLE NOVALIDATE 상태가 되면 제약 조건이 비활성화된 동안 입력된 데이터가 위반 상태가 됩니다. 제약 조건이 검증된 상태가 되려면 제약 조건을 위반하는 행이 갱신 또는 삭제되어야 합니다.

제약 조건을 Disabled 상태에서 ENABLE VALIDATE로 변경하면 테이블이 잠기고 테이블에 있는 모든 데이터에 대해 일치성이 검사되기 때문에 데이터 로드 같은 DML 작업이 대기할 수 있으므로 먼저 Disabled 상태에서 ENABLE NOVALIDATE로 변경했다가 다시 ENABLE VALIDATE로 변경하는 것이 좋습니다.

이러한 상태 간의 변환은 다음 규칙을 따릅니다.
• NOVALIDATE가 지정되지 않은 경우 ENABLE은 VALIDATE를 의미합니다.
• VALIDATE가 지정되지 않은 경우 DISABLE은 NOVALIDATE를 의미합니다.
• VALIDATE 및 NOVALIDATE는 기본적으로 ENABLE 및 DISABLE 상태를 의미하지 않습니다.
• 고유 키 및 기본 키가 DISABLE 상태에서 ENABLE 상태로 변경되고 기존 인덱스가 없는 경우 고유 인덱스가 자동으로 생성됩니다. 인덱스가 Deferrable 상태인 경우에 는 예외가 있습니다. 마찬가지로 고유 키 및 기본 키가 ENABLE 상태에서 DISABLE 상태로 변경되고 고유 인덱스로 활성화된 경우에는 해당 고유 인덱스가 삭제됩니다.
• 제약 조건이 NOVALIDATE 상태에서 VALIDATE 상태로 변경될 때는 모든 데이터가 검사되어야 하지만 VALIDATE에서 NOVALIDATE로 변경될 경우 데이터가 이미 검사 되었다는 사실이 인식되지 않습니다.
• 단일 제약 조건을 ENABLE NOVALIDATE 상태에서 ENABLE VALIDATE 상태로 변경한 경우에도 읽기, 쓰기 또는 기타 DDL 문을 차단하지 않습니다.


■ Defining Constraints Immediate or Deferred
구문
ALTER SESSION SET CONSTRAINT[S] = { IMMEDIATE | DEFERRED | DEFAULT}
SET CONSTRAINT | CONSTRAINTS { constraint | ALL } { IMMEDIATE | DEFERRED }


■ Defining Constraints While Creating a Table (테이블 생성 중 제약 조건 정의)
예제)
CREATE TABLE hr.employee(
  id NUMBER(7)
    CONSTRAINT employee_id_pk PRIMARY KEY
    DEFERRABLE
    USING INDEX
      STORAGE(INITIAL 100K NEXT 100K)
      TABLESPACE indx,
  last_name VARCHAR2(25)
    CONSTRAINT employee_last_name_nn NOT NULL,
  dept_id NUMBER(7))
TABLESPACE users;


■ Enabling Constraints (제약 조건 활성화)
구문
ALTER TABLE [ schema. ] table
ENABLE NOVALIDATE {CONSTRAINT constraint
| PRIMARY KEY
| UNIQUE ( column [, column ] ... ) }
[ USING INDEX index_clause ]

예제)
ALTER TABLE hr.departments
ENABLE NOVALIDATE CONSTRAINT dept_pk;

구문
ALTER TABLE [ schema. ] table
ENABLE VALIDATE {CONSTRAINT constraint
| PRIMARY KEY
| UNIQUE ( column [, column ] ... ) }
[ USING INDEX index_clause ]
[ EXCEPTIONS INTO [ schema. ] table ]

예제)
ALTER TABLE hr.employees
ENABLE VALIDATE CONSTRAINT emp_dept_fk;


■ Using the EXCEPTIONS Table (EXCEPTIONS 테이블 사용)
• utlexcpt1.sql 스크립트를 실행하여 EXCEPTIONS 테이블 생성
• EXCEPTIONS 옵션을 사용하여 ALTER TABLE 문 실행
• EXCEPTIONS의 하위 질의를 사용하여 부적합한 데이터가 있는 행 찾기
• 오류 수정
• ALTER TABLE을 재실행하여 제약 조건 활성화

예제)
SQL> @?/rdbms/admin/utlexcpt   

Table created.

SQL> desc exceptions;
 Name                                                                                                 Null?    Type
 ----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------
 ROW_ID                                                                                                ROWID
 OWNER                                                                                                 VARCHAR2(30)
 TABLE_NAME                                                                                            VARCHAR2(30)
 CONSTRAINT                                                                                            VARCHAR2(30)

SQL> 

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

sysdba 권한 로그인시 패스워드 지정  (0) 2010.03.05
프로파일 & 유저 관리 & 권한 관리  (0) 2010.03.05
Index (인덱스)  (0) 2010.03.05
Table (테이블)  (0) 2010.03.03
Tablespace 관련 명령어  (0) 2010.02.27
posted by I유령I 2010. 3. 5. 01:37

■ Creating Normal B-Tree Indexes (일반 B-Tree 인덱스 생성)
예제)
CREATE INDEX hr.employees_last_name_idx
ON hr.employees(last_name)
PCTFREE 30
STORAGE(INITIAL 200K NEXT 200K
PCTINCREASE 0 MAXEXTENTS 50)
TABLESPACE indx;

※ 일반 B-Tree 인덱스 구문옵션
UNIQUE: 고유 인덱스 지정에 사용. (기본값은 Nonunique)
Schema: 인덱스/테이블 소유자입
Index: 인덱스 이름입
Table: 테이블 이름
Column: 열 이름입니다.
ASC/DESC: 인덱스가 오름차순으로 생성되는지 내림차순으로 생성되는지 여부를 나타냅니다.
TABLESPACE: 인덱스를 생성할 테이블스페이스를 식별합니다.
PCTFREE: 새로운 인덱스 항목을 수용하기 위해 생성 시 각 블록에 예약되는 공간의 양(전체 공간에서 블록 헤더를 뺀 백분율)입니다.
INITRANS: 각 블록에서 미리 할당하는 트랜잭션 항목의 수를 나타냅니다. (기본값과 최소값은 2입니다.)
MAXTRANS: 각 블록에 할당될 수 있는 트랜잭션 항목의 수를 제한합니다. (기본값은 255입니다.)
STORAGE 절: 인덱스에 확장 영역 할당하는 방법을 결정하는 저장 영역 절을 식별합니다.
LOGGING: 인덱스의 생성 및 인덱스에 대한 이후 작업을 리두 로그 파일에 기록함을 나타냅니다. (기본값입니다.)
NOLOGGING: 생성 및 특정 유형의 데이터 로드를 리두 로그 파일에 기록하지 않음을 나타냅니다.
NOSORT: 데이터베이스에 행이 오름차순으로 저장되므로 인덱스 생성 시 Oracle 서버가 행을 정렬하지 않아도 됨을 나타냅니다.


■ Creating Bitmap Indexes (비트맵 인덱스 생성)
구문
CREATE BITMAP INDEX [schema.]index
ON [schema.]table (column [ ASC | DESC ])
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ NOSORT ]

예제)
CREATE BITMAP INDEX orders_region_id_idx
ON orders(region_id)
PCTFREE 30
STORAGE(INITIAL 200K NEXT 200K
PCTINCREASE 0 MAXEXTENTS 50)
TABLESPACE indx;

CREATE_BITMAP_AREA_SIZE매개변수
초기화 매개변수인 CREATE_BITMAP_AREA_SIZE는 비트맵 세그먼트를 메모리에 저장하
는 데 사용하는 공간의 양을 결정하며 기본값은 8MB입니다. 값이 클수록 인덱스를 빨리 생
성할 수 있고 기수가 아주 작은 경우에는 이 값을 작은 값으로 설정할 수 있습니다. 예를 들
어, 기수가 겨우 2이면 값을 MB가 아닌 KB 순서로 나열하며 일반적으로 기수가 높은 경우
에는 메모리가 충분해야 최적의 성능을 낼 수 있습니다.


■ Changing Storage Parameters for Indexes (인덱스 저장 영역 매개변수 변경)
구문
ALTER INDEX [schema.]index
[ storage-clause ]
[ INITRANS integer ]
[ MAXTRANS integer ]

예제)
ALTER INDEX employees_last_name_idx
STORAGE(NEXT 400K
MAXEXTENTS 100);


■ Allocating and Deallocating Index Space (인덱스 공간 할당 및 할당 해제)
구문
ALTER INDEX [schema.]index
ALLOCATE EXTENT ([SIZE integer [K|M]]
[ DATAFILE 'filename' ])

ALTER INDEX [schema.]index
DEALLOCATE UNUSED [KEEP integer [ K|M ]]

예제)
ALTER INDEX orders_region_id_idx
ALLOCATE EXTENT (SIZE 200K
DATAFILE ‘/DISK6/indx01.dbf’);

ALTER INDEX orders_id_idx
DEALLOCATE UNUSED;


■ Rebuilding Indexes (인덱스 재구축)
구문
ALTER INDEX [schema.]index REBUILD
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ REVERSE | NOREVERSE ]

예제)
ALTER INDEX orders_region_id_idx REBUILD
TABLESPACE indx02;

※ 인덱스 재구축 특성
• 기존 인덱스를 데이터 소스로 사용하여 새 인덱스를 구축합니다.
• 기존 인덱스를 사용하여 인덱스를 구축할 경우에는 정렬이 필요하지 않으므로 성능이 향상됩니다.
• 새 인덱스를 구축하고 나면 이전 인덱스는 삭제되며 재구축 중에는 이전 인덱스 및 새 인덱스를 각 테이블스페이스에 모두 수용할 수 있는 충분한 공간이 필요합니다.
• 결과 인덱스는 삭제한 항목을 포함하지 않으므로 이 인덱스는 공간을 더 효율적으로 사용합니다.
• 새 인덱스를 구축하는 동안에는 질의에서 기존 인덱스를 계속 사용할 수 있습니다.

※ 재구축이 필요한 상황
• 기존 인덱스를 다른 테이블스페이스로 이동해야 할 경우로 인덱스가 테이블과 동일한 테이블스페이스에 있거나 객체를 디스크에 재분배해야 할 경우에는 이 작업이 필요할 수 있습니다.
• 인덱스에 삭제한 항목이 많이 포함되어 있는 경우로 이러한 현상은 완료된 주문은 삭제하고 새로운 주문을 높은 번호로 테이블에 추가하는 주문 테이블의 주문 번호 인덱스와 같이 변하는 인덱스에서 나타나는 일반적인 문제입니다.
  오래된 소수의 주문을 아직 처리하지 않은 경우 항목 일부만 삭제한 인덱스 최하위 블록이 몇 개 있을 수도 있습니다.
• 기존의 일반 인덱스를 역방향 키 인덱스로 변환해야 할 경우로 이전 릴리스의 Oracle 서버에서 응용 프로그램을 이전할 경우 재구축할 수 있습니다.
• 인덱스의 테이블을 ALTER TABLE ... MOVE TABLESPACE 명령을 사용하여 다른 테이블스페이스로 이동한 경우


■ Rebuilding Indexes Online (온라인 인덱스 재구축)
구문
ALTER INDEX [schema.]index REBUILD ONLINE;

예제)
ALTER INDEX orders_id_idx REBUILD ONLINE;

※ 제한사항
• 임시 테이블의 인덱스는 재구축할 수 없습니다.
• 분할된 인덱스 전체는 재구축할 수 없으므로 분할 영역 또는 서브 분할 영역을 각각 재구축해야 합니다.
• 사용되지 않은 공간은 할당을 해제할 수 없습니다.
• 해당 인덱스에 대한 PCTFREE 매개변수의 값을 전체적으로 변경할 수 없습니다.


■ Coalescing Indeses (인덱스 병합)
구문
ALTER INDEX [schema.]index COALESCE;

예제)
ALTER INDEX hr.employees_idx COALESCE;


■ Checking Indexes and Their Validity
구문
ANALYZE INDEX [schema.]index VALIDATE STRUCTURE

예제)
ANALYZE INDEX orders_region_id_idx
VALIDATE STRUCTURE;

※ 인덱스 및 유효성 검사
• 모든 인덱스 블록에 대해 손상된 블록이 있는지 확인합니다.
  이 명령을 수행해도 인덱스 항목이 테이블의 데이터에 대응되는지 여부는 확인되지 않습니다.
• INDEX_STATS 뷰를 인덱스 정보로 채웁니다.


■ Dropping Indexes (인덱스 삭제)
구문
DROP INDEX [schema.]index;

예제)
DROP INDEX hr.deptartments_name_idx;

다음 시나리오에서는 인덱스를 삭제해야 할 필요가 있습니다.
• 응용 프로그램에서 더 이상 사용하지 않는 인덱스는 삭제할 수 있습니다.
• 대량 로드를 수행하기 전에 인덱스를 삭제할 수 있으며 데이터를 대량으로 로드하기 전에 인덱스를 삭제하고 로드한 다음 다시 생성하면 다음 결과를 얻을 수 있습니다.
– 로드 성능이 향상됩니다.
– 인덱스 공간을 더 효율적으로 사용할 수 있습니다.
• 주기적으로만 사용하는 인덱스가 특히 휘발성 테이블에 기반을 두고 있을 경우에는 불필요하게 유지 관리하지 않아도 되며 대개 연말 또는 분기 말의 검토 회의에 사용할 정보를 모으기 위해 임시 질의를 생성하는 OLTP 시스템의 경우에는 불필요하게 유지 관리하지 않아도 됩니다.
• 로드 작업 같은 특정 유형의 작업 중에 인스턴스 실패가 발생하는 경우에는 인덱스를 INVALID로 표시하는데 이러한 경우에는 인덱스를 삭제하고 다시 생성해야 합니다.
• 인덱스가 훼손된 경우


■ Identifying Unused Indexes (사용되지 않은 인덱스 식별)
예제)
- 인덱스 사용에 대한 모니터링 시작
ALTER INDEX hr.dept_id_idx
MONITORING USAGE

- 인덱스 사용에 대한 모니터링 중지
ALTER INDEX hr.dept_id_idx
NOMONITORING USAGE

※ V$OBJECT_USAGE 열
INDEX_NAME: 인덱스 이름입니다.
TABLE_NAME: 해당 테이블입니다.
MONITORING: 모니터를 ON으로 설정할지 OFF로 설정할지 여부를 나타냅니다.
USED: 모니터하는 동안 인덱스가 사용되었는지 여부를 YES 또는 NO로 나타냅니다.
START_MONITORING: 인덱스에 대한 모니터의 시작 시간을 나타냅니다.
END_MONITORING: 인덱스에 대한 모니터의 중지 시간을 나타냅니다.

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

프로파일 & 유저 관리 & 권한 관리  (0) 2010.03.05
Constraints (제약 조건)  (0) 2010.03.05
Table (테이블)  (0) 2010.03.03
Tablespace 관련 명령어  (0) 2010.02.27
Redo log group & member 관련 명령어  (0) 2010.02.24
posted by I유령I 2010. 3. 3. 12:42
■ Creating a Table (테이블 생성)
예제)
CREATE TABLE he.employees (
 employee_id NUMBER(6),
 first_name VARCHAR2(20),
 last_name VARCHAR2(25),
 email  VARCHAR2(25),
 phone_number VARCHAR2(20),
 hire_date DATE DEFAULT SYSDATE,
 job_id  VARCHAR2(10),
 salary  NUMBER(8,2),
 commission_pct NUMBER(2,2),
 manager_id NUMBER(6),
 department_id NUMBER(4)
);

※ 테이블생성지침
• 테이블을 별도의 테이블스페이스에 둡니다.
• 단편화를 방지하려면 지역적으로 관리되는 테이블스페이스를 사용합니다.

■ Creating Temporary Tables (임시 테이블 생성)
예제)
CREATE GLOBAL TEMPORARY TABLE
hr.employees_temp
AS SELECT * FROM hr.employees;


■ Changing Storage and Block Utilization Parameters (저장 영역 및 블록 활용 매개변수 변경)
예제)
ALTER TABLE hr.employees
PCTFREE 30
PCTUSED 50
STORAGE (
NEXT 500K
MINEXTENTS 2
MAXEXTENTS 100
);


■ Manually Allocating Extents (확장 영역 수동 할당)
구문
ALTER TABLE [schema.]table
ALLOCATE EXTENT [ ([SIZE integer [K|M]]
[DATAFILE ‘filename’]) ]

예제)
ALTER TABLE hr.employees
ALLOCATE EXTENT (SIZE 500K
DATAFILE '/disk3/data01.dbf');

※ 수정 가능한 매개변수와 수정의 함의는 다음과 같습니다.
• NEXT: Oracle 서버에서 테이블에 대해 다른 확장 영역을 할당할 때 새 값이 사용됩니다. 이후의 확장 영역 크기는 PCTINCREASE만큼 증가합니다.
• PCTINCREASE: PCTINCREASE의 변경 사항은 데이터 딕셔너리에 등록되며 Oracle 서버에서 다음 확장 영역을 할당할 때 NEXT를 재계산하는 데 사용됩니다.
  두 개의 확장 영역을 가진 테이블에서 NEXT=10K 및 PCTINCREASE=0인 경우를 가정해 볼 때 PCTINCREASE를 100으로 변경하면 할당되는 세번째 확장 영역은 10KB이고 네번째 확장 영역은 20KB이며 다섯번째 확장 영역은 40KB입니다.
• MINEXTENTS: MINEXTENTS의 값은 테이블의 현재 확장 영역 수 이하인 값으로 바꿀 수 있으며 테이블에 즉시 영향을 주지는 않지만 테이블이 잘릴 경우 사용됩니다.
• MAXEXTENTS: MAXEXTENTS의 값은 테이블의 현재 확장 영역 수 이상인 값으로 설정할 수 있으며 UNLIMITED로도 설정할 수 있습니다.
※ 제한사항
• 테이블에 대해 INITIAL의 값은 수정될 수 없습니다.
• 지정한 NEXT의 값은 지정한 값 이상인 블록 크기의 배수 값으로 반올림됩니다.


■ Nonpartitioned Table Reorganization (분할되지 않은 테이블 재구성)
예제)
ALTER TABLE hr.employees
MOVE TABLESPACE data1;

 
■ Truncating a Table (테이블 자르기)
구문
TRUNCATE TABLE [schema.]table
[{DROP | REUSE} STORAGE]

예제)
TRUNCATE TABLE hr.employees;

※ 이 명령을 사용한 결과는 다음과 같습니다.
• 테이블의 모든 행이 삭제됩니다.
• TRUNCATE TABLE은 DDL 명령이므로 실행 취소 데이터가 생성되지 않고 명령이 암시적으로 커밋됩니다.
• 해당 인덱스도 잘립니다.
• 외래 키가 참조 중인 테이블은 자를 수 없습니다.
• 이 명령을 사용할 때는 삭제 트리거가 실행되지 않습니다.


■ Dropping a Table (테이블 삭제)
구문
DROP TABLE [schema.]table
[CASCADE CONSTRAINTS]

예제)
DROP TABLE hr.department
CASCADE CONSTRAINTS;


■ Dropping a Column (열 삭제)
예제)
Removing a column from a table:
ALTER TABLE hr.employees
DROP COLUMN comments
CASCADE CONSTRAINTS [CHECKPOINT 1000];


■ Using the UNUSED Option (UNUSED 옵션 사용)
예제)
- Mark a column as unused:
ALTER TABLE hr.employees
SET UNUSED COLUMN comments
CASCADE CONSTRAINTS;

- Drop Unused columns:
ALTER TABLE hr.employees
DROP UNUSED COLUMNS [CHECKPOINT 1000];

- Continue to drop column operation:
ALTER TABLE hr.employees
DROP COLUMNS CONTINUE [CHECKPOINT 1000];

※ 열삭제시제한사항
• 객체 유형 테이블에서 열 삭제
• 중첩 테이블에서 열 삭제
• 테이블의 모든 열 삭제
• 분할 키 열 삭제
• SYS가 소유한 테이블에서 열 삭제
• 열이 기본 키일 경우 인덱스 구성 테이블에서 열 삭제
• 사용되지는 않지만 삭제되지 않은 LONG 또는 LONG RAW 열이 있으면 테이블에 LONG 또는 LONG RAW 열을 추가할 수 없습니다. 이는 테이블 describe 명령에 LONG 또는 LONG RAW 열이 없다고 나타나는 경우에도 적용됩니다.

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

프로파일 & 유저 관리 & 권한 관리  (0) 2010.03.05
Constraints (제약 조건)  (0) 2010.03.05
Index (인덱스)  (0) 2010.03.05
Tablespace 관련 명령어  (0) 2010.02.27
Redo log group & member 관련 명령어  (0) 2010.02.24
posted by I유령I 2010. 2. 27. 20:26

■ Data file 및 Tablespace 조회
SQL> select tablespace_name, bytes, file_name from dba_data_files;

SQL> select tablespace_name, status, contents, extent_management, segment_space_management
  2  from dba_tablespaces;


■ Tablespace 생성
- 일반 Tablespace
SQL> create tablespace tablespace_name
  2  datafile 'path/data_file_name' size 크기
  3  segment space management auto;

SQL> create tablespace tablespace_name
  2  datafile 'path/data_file_name' size 크기
  3  extent space management local;

- UNDO Tablespace
SQL> create undo tablespace tablespace_name
  2  datafile 'path/data_file_name' size 크기;

- TEMP Tablespace
SQL> create temporary tablespace tablespace_name
  2  tempfile 'path/data_file_name' size 크기;

- Tablespace Block 지정
SQL> create tablespace tablespace_name
  2  datafile 'path/data_file_name' size 크기
  3  blocksize [2K | 4K | 8K | 16K | 32K]
  4  segment space management auto;


■ Tablespace 확장
SQL> alter tablespace tablespace_name
  2  datafile 'path/data_file_name' size 크기;

SQL> alter database datafile 'path/data_file_name' resize 크기;


■ Tablespace 관리
SQL> alter tablespace tablespace_name offline;
SQL> alter tablespace tablespace_name online;

SQL> alter tablespace tablespace_name rename
  2  datafile 'path/data_file_name(원본 Datafile)'
  3  to 'path/data_file_name';

SQL> alter database rename
  2  file 'path/data_file_name(원본 Datafile)'
  3  to 'path/data_file_name';


■ Tablespace 삭제
SQL> drop tablespace tablespace_name
  2  including contents and datafiles cascade constraints;

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

프로파일 & 유저 관리 & 권한 관리  (0) 2010.03.05
Constraints (제약 조건)  (0) 2010.03.05
Index (인덱스)  (0) 2010.03.05
Table (테이블)  (0) 2010.03.03
Redo log group & member 관련 명령어  (0) 2010.02.24
posted by I유령I 2010. 2. 24. 12:39

Redo log group은 최소 2개, member 는 그룹당 최소 1개이다.


■ 수동 로그 스위치
SQL> alter system switch logfile;

■ 수동 checkpoint
SQL> alter system checkpoint;

■ 리두 로그 그룹 추가
SQL> alter database add logfile group 그룹번호
  2  '경로/파일명.log' size 크기;

■ 리두 로그 그룹별 멤버 추가
SQL> alter database add logfile member
  2  '경로/파일명.log' to group 그룹번호;

■ 리두 로그 그룹 삭제
SQL> alter database drop logfile group 그룹번호;

■ 리두 로그 그룹의 멤버 삭제
SQL> alter database drop logfile member
  2  '경로/파일명_b.log';

■ log file 상태 조회 (그룹번호, 멤버, 용량, 상태)
SQL> select a.group#, a.member, b.bytes/1024/1024 MB, b.archived, b.status
  2  from v$logfile a, v$log b
  3  where a.group# = b.group#
  4  order by 1, 2;

    GROUP# MEMBER                                                     MB ARC STATUS
---------- -------------------------------------------------- ---------- --- ----------------
         1 /home/oracle/oradata/testdb/redo01.log                     50 NO  CURRENT
         2 /home/oracle/oradata/testdb/redo02.log                     50 NO  INACTIVE
         3 /home/oracle/oradata/testdb/redo03.log                     50 NO  INACTIVE

SQL>

'Oracle 10g > 10g - Admin I' 카테고리의 다른 글

프로파일 & 유저 관리 & 권한 관리  (0) 2010.03.05
Constraints (제약 조건)  (0) 2010.03.05
Index (인덱스)  (0) 2010.03.05
Table (테이블)  (0) 2010.03.03
Tablespace 관련 명령어  (0) 2010.02.27