162
Oracle8i Administration 포포포포포 포포포포포 포 포 포

Oracle8i Administration

  • Upload
    kamuzu

  • View
    76

  • Download
    0

Embed Size (px)

DESCRIPTION

Oracle8i Administration. 포스데이타 광양운영팀 권 태 삼. Lesson 1 Oracle Architectural Components. ■ Overview. Instance. User Process. SGA. Shared Pool. Library Cache. Data buffer Cache. Redo Log Buffer. Server Process. Data Dict Cache. PGA. SMON. DBW0. PMON. CKPT. LGWR. Others. - PowerPoint PPT Presentation

Citation preview

Page 1: Oracle8i Administration

Oracle8i Administration

포스데이타 광양운영팀

권 태 삼

Page 2: Oracle8i Administration

Lesson 1Oracle Architectural

Components

Page 3: Oracle8i Administration

3

■ Overview

Instance

SGAUserProcess

Shared Pool

LibraryCache

Redo LogBuffer

Database

Parameterfile

Passwordfile

ServerProcess

PGA

Datafile

Controlfile

Redo logfile

ArchivedLog file

Data bufferCache

Data DictCache

SMON DBW0 PMON CKPT LGWR Others

Page 4: Oracle8i Administration

4

■ Overview

• Oracle Server– Oracle Instance and Oracle Database

• Oracle Instance– Memory structure: SGA(Shared Global Area)

• 데이터 베이스 프로세스에 의해 공유되는 데이터베이스 정보를 저장– Background Process

• Database file– 데이터베이스 정보를 저장하기 위해 제공되는 OS File System

• Server Process– User Process 로 부터 보내어진 SQL 문을 실행하는 프로세스

Page 5: Oracle8i Administration

5

■ Oracle Database Files

• Data File– 데이터베이스 내에 실제 데이터– 데이터는 사용자 정의 테이블에 저장– 데이터 파일은 데이터 사전 포함

• Redo Log File– 데이터를 복구하기 위해 데이터베이스 변경 기록을 보관– 데이터베이스는 최소 두개의 Redo log file 이 필요

• Control File– 데이터베이스의 무결성을 유지하기 위해 필요한 정보를 포함

• 데이터베이스 구조정보• 동기화정보

– 데이터베이스는 최소한 하나의 control file 을 포함

Database

Parameterfile

Passwordfile

Datafile

Controlfile

Redo logfile

ArchivedLog file

Page 6: Oracle8i Administration

6

■ Oracle Instance

• Oracle database 에 접근하기 위한 수단• 항상 하나의 데이터베이스만을 Open

• Oracle Instance– SGA Memory Structure– Background Process

Instance

SGAShared Pool

LibraryCache

Redo LogBuffer

Data bufferCache

Data DictCache

SMON DBW0 PMON CKPT LGWR Others

Memorystructures

BackgroundProcesses

Page 7: Oracle8i Administration

7

■ Oracle Instance

• SGA– 데이터베이스 프로세스에 의해 공유되는 데이터베이스 정보를 저장하기 위해

사용되는 메모리 영역– Shared Pool

• Library Cache: 최근에 실행된 SQL 문장을 보관• Data Dictionary Cache: 데이터 사전으로부터 가장 최근에 사용된 데이터 보관

– Data Buffer Cache: 가장 최근에 사용된 데이터를 보관– Redo log Buffer: 데이터베이스의 변경된 정보를 보관

• Background Process– 동시 접속 사용자의 서비스 요청에 필요한 기능을 수행– Database Writer(DBW0): database buffer cache 의 변경된 내용을

데이터 파일에 저장– Log Writer(LGWR): redo log buffer 에 등록된 변경사항을 redo log file 에

보관– System Monitor(SMON): 데이터베이스 일관성 체크– Process Monitor– Checkpoint Process(CKPT): control file 에 데이터베이스 상태 정보를 갱신 ,

buffer cache 내에 변경사항을 data file 에 갱신

Page 8: Oracle8i Administration

8

■ Processing a Query

• Parse– Search for identical statement– Check syntax, object names, and privileges– Lock objects used during parse– Create and store execution plan

• Execute– Identify rows selected

• Fetch– Return rows to user process

Page 9: Oracle8i Administration

9

■ The Shared Pool

• Library Cache(Shared SQL Area)– Text of the SQL statement– Parse tree– Execution plan– Reduce parse time and memory requirement

• Data Dictionary Cache(Dictionary Cache, Row cache)– 최근에 사용된 테이블에 대한 정보 보관– Tables, indexes, columns, users, privileges, other database objects

• SHARED_POOL_SIZE 파라미터로 size 를 정할 수 있음 .

Shared Pool

LibraryCache

Data DictCache

Page 10: Oracle8i Administration

10

■ Database Buffer Cache

• 최근에 사용된 block 을 보관

• DB_BLOCK_SIZE 파라미터를 이용해 block size 변경

• DB_BLOCK_BUFFES 파라미터를 이용해 buffer 수 변경

■ Program Global Area(PGA)

ServerProcess

PGA

• Server Process 에 의해서만 쓰여짐• Sort area, session information, cursor state,

stack space

Page 11: Oracle8i Administration

11

■ Processing a DML Statement

• DML execute phase1. 필요로 하는 block 이 buffer cache 에 있는지 없는지 check2. 수정하기 위해 row 를 locking3. Data 변경사항을 redo log buffer 에 기록4. Server process 가 rollback block 에 before image 를 기록 , data block

을 update

SGAUser

Process

Shared Pool

Redo LogBuffer

Database

ServerProcess

Datafile

Controlfile

Redo logfile

Data bufferCacheUPDATAE emp …UPDATAE emp …

1

14 2 3

Page 12: Oracle8i Administration

12

■ Redo Log Buffer

• Size defined by LOG_BUFFER

• Records changes made through the instance

• Used sequentially

• Is a circular buffer

■ Rollback Segment

• Server process saves the old data value into a rollback segment

• Undo the changes if the transaction is rolled back

• Provide read consistency

• Instance Recovery

Page 13: Oracle8i Administration

13

Instance

■ COMMIT Processing

• Step in Processing COMMIT– Server process 가 SCN 을 가진 commit record 를 redo log buffer 에

기록– LGWR 이 redo log buffer 의 내용을 redo log file 에 기록– User 에게 COMMIT 완료를 통보– Resource lock 을 release

SGA

UserProcess

Shared Pool

Redo LogBuffer

Database

ServerProcess

Datafile

Controlfile

Redo logfile

Data bufferCache

1

4

2

3

LGWR

Page 14: Oracle8i Administration

14

Instance

■ Log Writer(LGWR)

• LGWR writes when– When a transaction commits– When the redo log buffer is one-third full– When there is more than a megabyte of changes recorded in the

redo log buffer– Before DBW0 writes modified blocks to the data files

SGA Shared Pool

Redo LogBuffer

Database

Datafile

Controlfile

Redo logfile

Data bufferCache

LGWR

Page 15: Oracle8i Administration

15

Instance

■ Database Writer(DBW0)

• DBW0 writes when– There are many dirty buffers– There are few free buffers– Timeout occurs(every three seconds)– Checkpoint occurs

SGA Shared Pool

Redo LogBuffer

Database

Datafile

Controlfile

Redo logfile

Data bufferCache

DBW0

Page 16: Oracle8i Administration

16

■ SMON(System Monitor)

• Automatically recovers the instance– Roll forward changes in the redo logs– Opens the database for user process– Rolls back uncommitted transactions

• Coalesces free space

• Deallocates temporary segments

■ PMON(Process Monitor)

• Cleans up after failed processes by– Rolling back the transaction– Releasing locks– Releasing other resources

Page 17: Oracle8i Administration

Lesson 2Getting Started with the Oracle

Server

Page 18: Oracle8i Administration

18

■ Users SYS and SYSTEM

• SYS– Password: change_on_install– Owner of the database data dictionary

• SYSTEM– Password: manager– Owner of additional internal tables and views used by Oracle tools

■ Authentication

• OS 인증

• Password 인증– Remote 로 접속 시 password file 을 인증 받아야 접속 가능 – OS 의 DBA 그룹이 아니면서 sysdba, sysoper role 을 가지고 있는 user

• DB 인증

Page 19: Oracle8i Administration

19

■ Operating System Authentication

• Set up the user to be authenticated by the operating system

• Set REMOTE_LOGIN_PASSWORDFILE to NONE

• Use the following commands to connect to a database

CONNECT / AS SYSDBACONNECT / AS SYSOPERsqlplus internal

CONNECT / AS SYSDBACONNECT / AS SYSOPERsqlplus internal

Page 20: Oracle8i Administration

20

■ Using Password File Authentication

• Create the password file using the password utility

• Set REMOTE_LOGIN_PASSWORDFILE to EXCLUSIVE or SHARED

• Use the following command to connect to a database

$orapwd file=$ORACLE_HOME/dbs/orapwSIDpassword=admin entries=10$orapwd file=$ORACLE_HOME/dbs/orapwSIDpassword=admin entries=10

CONNECT INTERNAL/ORACLECONNECT INTERNAL/ORACLE

Page 21: Oracle8i Administration

Lesson 3Managing an Oracle Instance

Page 22: Oracle8i Administration

22

■ Overview of Start Up and Shut Down an Oracle Server

• Start up– Start an instance– Mount the database– Open the database

• Shut down– Close the database– Dismount the database– Shut down the instance

Page 23: Oracle8i Administration

23

■ The Initialization Parameter File

• Size the System Global Area(SGA)

• Set database and instance defaults

• Set user or process limits

• Set limits on database resources

• Define various physical attributes of the database(database block size)

• Specify control files, archived log files, the ALERT file, and trace file locations

Instance

SGA Shared Pool

Redo LogBuffer

Data bufferCache

LGWRCKPTPMONDBW0SMON ARCH

SQL> CONNECT / AS SYSDBASQL> STARTUP PFILE=/DISK1/initU15.oraSQL> CONNECT / AS SYSDBASQL> STARTUP PFILE=/DISK1/initU15.ora

initU15.ora

Page 24: Oracle8i Administration

24

■ Stages in Startup and Shutdown

• Starting Up in Stages– Starting the Instance

• parameter file 읽음• SGA 와 background process 를 띄움• ALERT file, trace file 을 open• Database 와 control file 을 생성

– Mounting the Database• Renaming data file• Redo log archived option 설정• full database recovery 수행

– Opening the Database• Open the data file• Open the redo log file• database 일관성 check• 필요하다면 SMON 이 instance recovery 수행

SHUTDOWN

Instance started

NOMOUNT

MOUNT

OPEN

Control file opened for this instance

All files opened as described by the control file for this instance

parameter file 읽음

control file 읽음

Data file, Redo log file 검증STRATUP

SHUTDOWN

Page 25: Oracle8i Administration

25

■ Stages in Startup and Shutdown

• Shutting Down in Stages– Closing the Database

• buffer cache 의 변경사항을 data file 에 보관• redo log file 내의 entries 를 redo log file 에 보관• data file, redo log file close

– Dismounting the Database• Database dismount• Control file close

– Shutting Down the Instance• Instance Shutting down• ALERT file, trace file close• SGA deallocate• background process terminate

– ALERT file• DB start, shutdown 시간 기록• startup, shutdown 시 error 기록

Page 26: Oracle8i Administration

26

■ Starting Up the Instance

• STARTUP Command

• ALTER DATABASE Command

• Opening a Database in Read-Only Mode

– Execute queries– Execute disk sorts using locally managed tablespaces– Take data files offline and online– Perform recovery of offline data files and tablespaces

STARTUP PFILE=$ORACLEHOME/DISK1/initU15.oraSTARTUP PFILE=$ORACLEHOME/DISK1/initU15.ora

ALTER DATABASE database MOUNT;ALTER DATABASE database MOUNT;

ALTER DATABASE database OPEN READ ONLY;ALTER DATABASE database OPEN READ ONLY;

Page 27: Oracle8i Administration

27

■ Shutting Down

• Shutdown Option

• Shutdown mode

A Abort I Immediate

T Transactional N Normal

Shutdown Mode A I T NAllow new connections NO NO NO NO

Wait until current sessions end NO NO NO YES

Wait until current transactions end

NO NO YES YES

Force a checkpoint and close files

NO YES YES YES

Page 28: Oracle8i Administration

28

■ Getting and Setting Parameter Values

• Dynamic Performance View– Oracle Server 에 의해 관리되고 , 계속적으로 update– 디스크와 메모리 구조에 대한 데이터를 포함– performance tuning 을 위해 사용되는 데이터를 포함– Have public synonyms with the prefix V$

SGA

Controlfile

V$PARAMETERV$SGAV$OPTIONV$PROCESSV$VERSIONV$INSTANCE

V$THREADV$CONTROLFILEV$DATABASEV$DATAFILEV$DATAFILE_HEADERV$LOGFILE

Page 29: Oracle8i Administration

29

■ Getting and Setting Parameter Values

• Displaying Current Parameter Values– Command

– Dynamic performance view V$PARAMETER 를 이용한 query

• Dynamic Initialization Parameters– instance 실행동안에 initialization parameter 를 수정

SHOW PARAMETER controlSHOW PARAMETER control

SELECT name FROM V$PARAMETERSELECT name FROM V$PARAMETER

ALTER SYSTEM SET TIMED_STATISTICS=true;ALTER SYSTEM SET TIMED_STATISTICS=true;

ALTER SYSTEM SET SORT_AREA_SIZE=131072 DEFERRED;ALTER SYSTEM SET SORT_AREA_SIZE=131072 DEFERRED;

Page 30: Oracle8i Administration

30

■ Managing Sessions

• Enable and Disable Restricted Session– Command

– Mode 변경

• Terminating Sessions– Session 확인

– Session Terminate

STARTUP RESTRICTSTARTUP RESTRICT

ALTER SYSTEM DISABLE RESTRICTED SESSION;ALTER SYSTEM DISABLE RESTRICTED SESSION;

SELECT id,serial# FROM V$SESSION WHEREusername=‘SCOTT’;SELECT id,serial# FROM V$SESSION WHEREusername=‘SCOTT’;

ALTER SYSTEM KILL SESSION ‘7,15’;ALTER SYSTEM KILL SESSION ‘7,15’;

Page 31: Oracle8i Administration

31

■ Managing Sessions

• ALERT File and Trace File– Trace file 은 서버와 background process 에 의해 작성– Oracle Server 는 trace file 내에 error 정보를 보관– ALERT file 은 메시지와 에러로 구성– Server process tracing 을 변경

ALTER SESSION SET sql_trace=TRUE;ALTER SESSION SET sql_trace=TRUE;

Page 32: Oracle8i Administration

Lesson 4Creating a Database

Page 33: Oracle8i Administration

33

■ Overview

• Database System 을 관리하고 , 조직하는데 첫번째 단계• Database 생성은 많은 data file(OS file) 이 필요함• Database 생성 후 변경할 수 없는 database block size 와

database character set 과 같은 database 설정을 결정한 후 database 를 생성

• 다음과 같은 방법으로 인증이 되어야 database 를 생성할 수 있음– operating system– Using a password file

• Instance allocate 를 위한 Memory 가 충분해야• Database 공간을 위한 충분한 디스크 공간이 있어야

Page 34: Oracle8i Administration

34

■ Creating a Database Manually

• 유일한 instance, 데이터베이스 이름 , 데이터베이스 character set을 결정

• OS 변수 설정• parameter file 준비• password file 생성• Instance 실행• 데이터베이스 생성• Data Dictionary 생성을 위한 scripts 실행과 차후 단계 실행

Page 35: Oracle8i Administration

35

■ Creating a Database Manually

• OS 변수 설정

• Parameter file 준비– 새로운 initSID.ora 생성

– vi 에디터를 이용해 initSID.ora 파일 수정• DB_NAME, CONTROL_FILES, DB_BLOCK_SIZE 는 반드시 수정

Variable Description

ORACLE_HOME Oracle Software 가 인스톨될 디렉토리 설정

ORACLE_SID Oracle Instance 지정

ORACLE_BASE 특별하게 필요하지 않음

ORA_NLS33 Database 생성 시 character set 설정

PATH $ORACLE_HOME/bin 이 포함된 path 설정

$cp init.ora $ORACLE_HOME/dba/initU16.ora$cp init.ora $ORACLE_HOME/dba/initU16.ora

Page 36: Oracle8i Administration

36

■ Creating a Database Manually

• Instance 실행– SYSDBA 로 접속– NOMOUNT 단계에서 Instance 실행

• 데이터베이스 생성

SQL>STARTUP NOMOUNT PFILE=initU16.oraSQL>STARTUP NOMOUNT PFILE=initU16.ora

CREATE DATABASE U16 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXDATAFILES 100 MAXLOGHISTORY 100LOGFILE GROUP 1 (‘/DISK3/log1a.rdo’, /DISK4/log1b.rdo’) SIZE 1 M, GROUP 2 (‘/DISK3/log2a.rdo’, /DISK4/log2b.rdo’) SIZE 1 MDATAFILE ‘/DISK1/system01.dbf’ size 50M autoextend on CHARACTER SET WE8ISO8859P1;

CREATE DATABASE U16 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXDATAFILES 100 MAXLOGHISTORY 100LOGFILE GROUP 1 (‘/DISK3/log1a.rdo’, /DISK4/log1b.rdo’) SIZE 1 M, GROUP 2 (‘/DISK3/log2a.rdo’, /DISK4/log2b.rdo’) SIZE 1 MDATAFILE ‘/DISK1/system01.dbf’ size 50M autoextend on CHARACTER SET WE8ISO8859P1;

Page 37: Oracle8i Administration

Lesson 5Creating Data Dictionary Views

and Standard Packages

Page 38: Oracle8i Administration

38

■ Overview

• Data Dictionary– 데이터베이스 내에 객체들에 대한 설명을 포함– Base tables– Data Dictionary views

• Dynamic Performance table– 데이터베이스와 instance 를 모니터하고 tuning 하기 위해 DBA 에 의해

사용되는 정보를 포함

• Built-in PL/SQL packages

Page 39: Oracle8i Administration

39

■ Data Dictionary Overview

• Oracle Database 중에 가장 중요한 부분

• 데이터베이스와 데이터베이스의 object 들에 대한 정보 제공

• read-only table 과 view 를 포함

• SQL Command 에 의해 update– DDL(Data Definition Language)– Some DML(Data Manipulation Language)

• SYS user 가 소유

• SYSTEM tablespace 내에 저장

• SELECT 문만을 사용

Page 40: Oracle8i Administration

40

■ Data Dictionary Contents

• Logical and physical database structure

• Definition and space allocations of objects

• Integrity constraints

• Users 의 이름• 각 user 에게 할당된 Roles

• 각 user 에게 할당된 Privileges

• Auditing

• Other Information

Page 41: Oracle8i Administration

41

■ How the Data Dictionary is Used

• Oracle server uses it to find information about– Users– Schema Objects(tables, views, indexes, clusters, synonyms, procedures, and

so on)– Storage structures

• Oracle Server 는 DDL 문이 실행될 때 Data Dictionary 를 수정

• User 와 DBA 는 데이터베이스에 대한 정보를 얻고자 할 때 사용

• Data Dictionary Example– General Overview

• DICTIONARY• DICT_COLUMNS

– Schema objects• DBA_TABLES• DBA_TAB_COLUMNS• DBA_OBJECTS• DBA_CONSTRAINTS

– Space allocation• DBA_SEGMENTS• DBA_EXTENTS• DBA_FREE_SPACE

– Database Structure• DBA_DATA_FILES• DBA_ROLLBACK_SEGS• DBA_TABLESPACES

Page 42: Oracle8i Administration

42

■ Constructing the Data Dictionary

• Creating Data Dictionary Views

• Administrative Scripts

Script Purpose

catalog.sql 공통적으로 사용되는 data dictionary 와 synonyms 를 생성

catproc.sql 서버측 PL/SQL 을 위해 요구되는 scripts

Convention Description

cat*.sql Catalog 와 data dictionary 에 대한 정보

dbms*.sql Database Package specifications

prvt*.plb 암호화된 database package code

utl*.sql Database utilities 를 위한 Views 와 Tables

Page 43: Oracle8i Administration

Lesson 6Maintaining the Control File

Page 44: Oracle8i Administration

44

■ The Use of the Control File

• 데이터베이스를 성공적으로 동작시키기 위해 필요한 작은 binary file

• 각 control file 은 하나의 database 와 link

• 데이터베이스가 사용되는 동안 Oracle Server 에 의해 계속적으로 update

• control file 내의 정보는 Oracle Server 에 의해서만 수정

• Should be multiplexed

• Contents– Database name and identifier– Database creation date– Data file and redo log file locations– Tablespace names– Log history is recored during log switches– Location and status of archived logs– Backup information– Current log sequence number– Checkpoint information

Page 45: Oracle8i Administration

45

■ How to Add a Control File

• Shut down the database

• Copy the current control file using an operating system command

• Add the new control file names to the CONTROL_FILES parameter

• Start up the database

■ Guidelines for Control Files

• Multiplex the control file

• Include the full pathname in CONTROL_FILES

• Back up the control file after the database structure changes

Page 46: Oracle8i Administration

46

■ Obtaining Information About the Control File

• V$CONTROLFILE

• V$CONTROLFILE_RECORD_SECTION

• Control File 로 부터 많은 Performance View 에 대한 정보를 얻음– V$BACKUP– V$DATAFILE– V$TEMPFILE– V$TABLESPACE– V$ARCHIVE– V$LOG– V$LOGFILE– V$LOGHIST– V$ARCHIVED_LOG– V$DATABASE– Others

SELECT name FROM v$controlfile;SELECT name FROM v$controlfile;

Page 47: Oracle8i Administration

Lesson 7Maintaining Redo Log Files

Page 48: Oracle8i Administration

48

■ Overview

• Oracle Server 는 데이터베이스의 데이터 손실을 최소화하기 위해 online redo log file 을 관리

• database buffer cache 내에 모든 데이터 변경 사항을 기록• instance failure 와 같은 상황에서 data file 에는 쓰여지지 않고 ,

commit 된 데이터를 복구하기 위해 사용• recovery 를 위해서만 사용• Redo Log Groups and Members

– Redo Log Groups• online redo log file 들의 집합을 online redo log group• LGWR Process 는 그룹 내 모든 online redo log files 에 같은 정보를 동시에 작성• Oracle Server 에는 최소 두개의 online redo log file groups 가 있어야

– Redo Log Members• 그룹 내 각 online redo log file 을 member 라 함• 그룹 내 각 member 는 동일한 log sequence number 를 가지고 있고 , 같은 size• 현재 log sequence number 는 control file 과 모든 data files 의 헤더에 저장

Page 49: Oracle8i Administration

49

■ LGWR, Log Switches, and Checkpoints

Instance

SGA Shared Pool

Redo LogBuffer

Database

Datafile

Controlfile

Redo logfile

Data bufferCache

LGWRCKPTDBWR ARCH

Passwordfile

Parameterfile

Archivedlog file

Page 50: Oracle8i Administration

50

■ LGWR, Log Switches, and Checkpoints

• LGWR– transaction commit– redo log buffer 가 1/3 이상 full– redo log buffer 에 기록된 변경사항이 1M 이상일때– timeout(every three second)– DBWn 이 동작하기 전에

• Log Switches– LGWR 이 하나의 online redo log group 에 작성하는 것을 멈추고 , 다른 online

redo log group 에 작성하는 event– Log switch 가 발생하면 checkpoint 가 시작

• Checkpoint– CKPT 는 모든 데이터파일의 header 와 control file 의 header 를 update– Checkpoint 는 다음과 같은 상황에서 발생

• 모든 log switch• instance 가 normal, transactional, immediate 옵션을 가지고 shut down 되었을 때• LOG_CHECKPOINT_INTERVAL, LOG_CHECKPOINT_TIMEOUT, FAST_START_IO_TARGE

T 파라미터 설정에 따라• DBA 의 요청에 의해• checkpoint 에 대한 정보는 LOG_CHECKPOINTS_TO_ALERT 파리미터가 TRUE 로

설정 되어있으면 ALERT 파일에 기록된다 .

Page 51: Oracle8i Administration

51

■ Obtaining Log and Archive Information

• SQL Command

• V$DATABASE

• V$INSTANCE

SQL>ARCHIVE LOG LIST;SQL>ARCHIVE LOG LIST;

SQL>SELECT name, log_mode FROM v$database;SQL>SELECT name, log_mode FROM v$database;

SQL>SELECT archive FROM v$instance;SQL>SELECT archive FROM v$instance;

Page 52: Oracle8i Administration

52

■ Obtaining Information About Groups and Members

• V$THREAD

• V$LOG

• V$INSTANCE

SQL>SELECT groups, current_group#, sequence# FROM v$thread;SQL>SELECT groups, current_group#, sequence# FROM v$thread;

SQL>SELECT group#, sequence#, bytes, members, status FROM v$log;SQL>SELECT group#, sequence#, bytes, members, status FROM v$log;

SQL>SELECT * FROM v$logfile;SQL>SELECT * FROM v$logfile;

Page 53: Oracle8i Administration

53

■ Multiplexing and Maintaining Members and Groups

• Adding Online Redo Log Groups

• Adding Online Redo Log Members

• How to Relocate or Rename Online Redo Log Files– 새로운 위치로 online redo log file 복사– ALTER DATABASE RENAME FILE 명령어 실행– 물리적으로 이름이나 OS 파일을 생성하는 것이 아니라 control file 의 pointer

를 변경하는 것

ALTER DATABASE ADD LOGFILE(‘/DISK3/log3a.rdo’, ‘/DISK4/log3b.rdo’) size 1M;ALTER DATABASE ADD LOGFILE(‘/DISK3/log3a.rdo’, ‘/DISK4/log3b.rdo’) size 1M;

ALTER DATABASE ADD LOGFILE MEMBER‘/DISK4/log1b.rdo’ TO GROUP 1‘/DISK4/log2b.rdo’ TO GROUP 2

ALTER DATABASE ADD LOGFILE MEMBER‘/DISK4/log1b.rdo’ TO GROUP 1‘/DISK4/log2b.rdo’ TO GROUP 2

Page 54: Oracle8i Administration

54

■ Dropping Online Redo Log Groups and Members

• Dropping Online Redo Log Groups

– 최소 2 개의 online redo log group 이 있어야– active and current group 은 drop 불가– 데이터베이스가 ARCHIVELOG 모드이고 , log file group 이 archived 가

아니면 그룹 drop 불가– drop 후 OS 파일 삭제

• Dropping Online Redo Log Members

– group 내에 member 가 하나이면 그 member 는 drop 불가– group 이 current 이면 그 group 에 속한 member 는 drop 불가 -> log

switch– member drop 후 OS 파일 삭제

• Clearing Online

ALTER DATABASE DROP LOGFILE GROUP 3;ALTER DATABASE DROP LOGFILE GROUP 3;

ALTER DATABASE ADD LOGFILE MEMBER ‘/DISK4/log2b.dbf’;ALTER DATABASE ADD LOGFILE MEMBER ‘/DISK4/log2b.dbf’;

ALTER DATABASE CLEAR LOGFILE ‘/DISK3/log2a.rdo’;ALTER DATABASE CLEAR LOGFILE ‘/DISK3/log2a.rdo’;

Page 55: Oracle8i Administration

55

■ Using LogMiner

• Redo log file 을 처리하기 위한 procedure 를 제공

• Redo log file 의 내용을 SQL 문으로 변환

• LogMiner 사용법– Directory file 생성

– Log File List 생성

– LogMiner 실행

EXECUTE DBMS_LOGMNR_D.BUILD(‘v815dict.ora’, ‘/ora815/admin/v815/log’);EXECUTE DBMS_LOGMNR_D.BUILD(‘v815dict.ora’, ‘/ora815/admin/v815/log’);

EXECUTE DBMS_LOGMNR.ADD_LOGFILE (‘/ora815/admin/v815/redo01a.log’, DBMS_LOGMNR.NEW);EXECUTE DBMS_LOGMNR.ADD_LOGFILE (‘/ora815/admin/v815/redo01a.log’, DBMS_LOGMNR.NEW);

EXECUTE DBMS_LOGMNR.ADD_LOGFILE (‘/ora815/admin/v815/redo02a.log’, DBMS_LOGMNR.ADDFILE);EXECUTE DBMS_LOGMNR.ADD_LOGFILE (‘/ora815/admin/v815/redo02a.log’, DBMS_LOGMNR.ADDFILE);

EXECUTE DBMS_LOGMNR.START_LOGMNR ( DICTFILENAME=>‘/ora815/admin/v815/log/ v815dict.ora’);EXECUTE DBMS_LOGMNR.START_LOGMNR ( DICTFILENAME=>‘/ora815/admin/v815/log/ v815dict.ora’);

Page 56: Oracle8i Administration

56

■ Using LogMiner

• LogMiner 사용법– 조회

– LogMiner 종료

• Obtaining Information About Logs Being Analyzed– V$LOGMNR_DICTIONARY– V$LOGMNR_PARAMETERS– V$LOGMNR_CONTENTS

SELECT timestamp, username, sql_redo FROM v$logmnr_contentsWHERE seg_name =‘EMP’;

TIMESTAMP USER SQL_REDO---------- ----- ----------------------------------14-APR-99 SYS update SCOTT.EMP set sal = ..14-APR-99 SYS update SCOTT.EMP set sal = ..

SELECT timestamp, username, sql_redo FROM v$logmnr_contentsWHERE seg_name =‘EMP’;

TIMESTAMP USER SQL_REDO---------- ----- ----------------------------------14-APR-99 SYS update SCOTT.EMP set sal = ..14-APR-99 SYS update SCOTT.EMP set sal = ..

EXECUTE DBMS_LOGMNR.END_LOGMNR;EXECUTE DBMS_LOGMNR.END_LOGMNR;

Page 57: Oracle8i Administration

Lesson 8Maintaining Tablespaces and

Data Files

Page 58: Oracle8i Administration

58

■ Database Storage Hierarchy

Database

Tablespace

Segment

Extent

OracleBlock

Data File

OS Block

PhysicalLogical

Page 59: Oracle8i Administration

59

■ Database Storage Hierarchy

• Database Architecture– physical structure: control files, online redo log files, data files– logical structure: tablespaces, segments, extents, data blocks

• Tablespace– 하나의 database 에만 존재해야– 각 tablespace 는 하나 이상의 datafile 로 구성– 하나의 tablespace 는 하나 이상의 segments 로 구성– Tablespace 는 read-write, read-only status 변경 가능

• Data File– 하나의 data file 은 오직 하나의 tablespace 내에 존재– DBA 가 data file 의 크기를 변경– Oracle Server 는 디스크 공간을 할당함으로써 tablespace 를 위한 data file 을

생성

• Segments=Object– table 에 할당된 모든 저장 공간– segment 는 다른 tablespace 에 존재할 수 없음– 하나의 tablespace 내에 존재하는 다른 data file 내에 존재 가능– 각 segments 는 하나 이상의 extent 들로 구성

Page 60: Oracle8i Administration

60

■ Database Storage Hierarchy

• Extents– 하나 이상의 extent 들은 하나의 segment 를 구성– segment 를 생성할 때 최소 하나의 extent 를 포함– DBA 가 segment 에 extent 들을 추가할 수 있음– extent 는 연속된 Oracle Block 의 집합– 하나의 extent 는 하나의 data file 에만 존재해야

• Data Blocks– Oracle Server 는 Oracle Block 단위로 data file 내에 저장공간을 관리– Oracle Server 가 할당 , 읽기 , 쓰기할 수 있는 가장 작은 단위의 저장공간– 하나의 Data block 은 하나 이상의 OS block 으로 구성– Data block 의 크기는 DB_BLOCK_SIZE 파라미터에 따라 결정– 최대 block 크기는 OS 에 따라 다름

Tablespace

data file data file Segment

Extent

Page 61: Oracle8i Administration

61

■ SYSTEM and Non-SYSTEM Tablespace

• SYSTEM Tablespace– Database 생성 시 만들어짐– Data dictionary 를 포함– SYSTEM rollback segment 를 포함

• Non-SYSTEM Tablespace– Space 관리가 쉽다– rollback, temporary, application data, application index segment 를 분리– user 객체에 할당된 space 를 제어

Page 62: Oracle8i Administration

62

■ Creating Tablespace

CREATE TABLESPACE app_data DATAFILE ‘/DISK4/app_data_01.dbf’ SIZE 100M, ‘/DISK5/app_data_02.dbf’ SIZE 100M MINIMUM EXTENT 500K DEFAULT STORAGE ( INITIAL 500K NEXT 500K MAXEXTENTS 500 MINEXTENTS 3 PCTINCREASE 0 );

CREATE TABLESPACE app_data DATAFILE ‘/DISK4/app_data_01.dbf’ SIZE 100M, ‘/DISK5/app_data_02.dbf’ SIZE 100M MINIMUM EXTENT 500K DEFAULT STORAGE ( INITIAL 500K NEXT 500K MAXEXTENTS 500 MINEXTENTS 3 PCTINCREASE 0 );

■ Space Management in Tablespace• Dictionary-managed tablespaces

– Default technique– Free extents recored in data directory tables

• Locally managed tablespaces– Free extents recorded in bitmap– Each bit corresponds to a block or group of blocks– Bit value indicates free or used

Page 63: Oracle8i Administration

63

■ Locally Managed Tablespaces

• recursive space management 를 줄일 수 있음

• data dictionary table 의 내용을 줄일 수 있음

• data dictionary 내에 table 을 update 하지 않기 때문에 rollback 정보를 생성하지 않는다 .

• locally managed tablespace 내에 모든 extent 들의 크기는 같다

• No coalescing required

CREATE TABLESPACE user_data DATAFILE ‘/DISK2/user_data_01.dbf’ SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M;

CREATE TABLESPACE user_data DATAFILE ‘/DISK2/user_data_01.dbf’ SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M;

Page 64: Oracle8i Administration

64

■ Temporary Tablespace

• sort 연산을 위해 사용

• permanent object 들을 포함할 수 없다

• Locally managed extent

• UNIFORM SIZE = SORT_AREA_SIZE * n

• 항상 NOLOGGINF 모드로 설정

• tempfile 을 read-only 로 할 수 없다

• tempfile 을 rename 할 수 없다

• ALTER DATABASE 명령어로 tempfile 을 생성할 수 없다 .

CREATE TEMPORARY TABLESPACE temp TEMPFILE ‘/DISK2/temp_01.dbf’ SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M;

CREATE TEMPORARY TABLESPACE temp TEMPFILE ‘/DISK2/temp_01.dbf’ SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M;

Page 65: Oracle8i Administration

65

■ Taking Tablespace Offline or Online

• Offline tablespace 인 data 에 접근 불가능

• 항상 online 이어야 하는 tablespace– SYSTEM– active rollback segment 인 tablespace

• offline tablespace backup 을 수행

• tablespace 나 data file 을 복구

• data file 의 이동

• tablespace offline 명령어

• tablespace online 전환

ALTER TABLESPACE app_data OFFLINE;ALTER TABLESPACE app_data OFFLINE;

ALTER TABLESPACE app_data ONLINE;ALTER TABLESPACE app_data ONLINE;

Page 66: Oracle8i Administration

66

■ Read-Only Tablespaces

• Tablespace 에 대한 read operation 만 수행 가능

• Objects 를 tablespace 로부터 drop 가능 -> Data dictionary 에서만 삭제

• Tablespace 가 online 상태에서만 read-only 상태로 변경 가능

• active rollback segment 를 포함하고 있으면 불가능

• Tablespace 가 online backup 상태이면 read-only 상태로 변경 불가능

ALTER TABLESPACE app_data READ ONLY;ALTER TABLESPACE app_data READ ONLY;

■ Dropping Tablespaces

• Tablespace 가 data dictionary 로 부터 삭제

• contents 가 data dictionary 로 부터 삭제

DROP TABLESPACE app_data INCLUDING CONTENTS;DROP TABLESPACE app_data INCLUDING CONTENTS;

Page 67: Oracle8i Administration

67

■ Resizing a Tablespace

• Data file 의 크기를 변경– Automatically

– Manually

• Tablespace 에 data file 을 추가

ALTER TABLESPACE app_data ADD DATAFILE ‘/DISK6/app_data_04.dbf’ SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE 500M;

ALTER TABLESPACE app_data ADD DATAFILE ‘/DISK6/app_data_04.dbf’ SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE 500M;

ALTER DATABASE DATAFILE ‘/DISK5/app_data_02.dbf’ RESIZE 200M;

ALTER DATABASE DATAFILE ‘/DISK5/app_data_02.dbf’ RESIZE 200M;

ALTER TABLESPACE app_data ADD DATAFILE ‘/DISK5/app_data_03.dbf’ SIZE 200M;

ALTER TABLESPACE app_data ADD DATAFILE ‘/DISK5/app_data_03.dbf’ SIZE 200M;

Page 68: Oracle8i Administration

68

■ Moving Data Files

• ALTER TABLESPACE– Tablespace 는 offline 상태이어야 함– target data file 이 존재해야 함

• ALTER DATABASE– Database 가 mount 되어 있어야 함– target data file 이 있어야 함

– Tablespace 가 offline 될 수 없는 tablespace 의 data file rename 방법• Shut down the database• data file move• Mount the database• ALTER DATABASE RENAME FILE 명령어 실행• Open the database

ALTER DATABASE RENAME FILE ‘/DISK1/system_01.dbf’ TO ‘/DISK2/system_01.dbf’;

ALTER DATABASE RENAME FILE ‘/DISK1/system_01.dbf’ TO ‘/DISK2/system_01.dbf’;

ALTER TABLESPACE app_data RENAME DATAFILE ‘/DISK4/app_data_01.dbf’ TO ‘/DISK5/app_data_01.dbf’;

ALTER TABLESPACE app_data RENAME DATAFILE ‘/DISK4/app_data_01.dbf’ TO ‘/DISK5/app_data_01.dbf’;

Page 69: Oracle8i Administration

Lesson 9Storage Structure and

Relationships

Page 70: Oracle8i Administration

70

■ Types of Segments

• Segments– Database 내에 object 들이 차지하고 있는 공간

• Table– Database 내에 data 를 보관하기 위한 가장 일반적인 방법

• Table Partition– High concurrent usage 시 Scalability 와 availability 를 향상– Table 내에 data 는 여러 partition 에 저장될 수 있고 , partition 들은 다른 tables

pace 에 존재 가능 – hashing algorithm 이용

• Cluster– data segment– cluster 내에 row 는 key column value 를 기반으로 저장– 하나의 cluster 는 하나 이상의 table 을 포함– index 와 hashing algorithm 을 이용하여 cluster 내 row 를 접근

• Index– 특정 key 를 이용하여 row 의 위치를 쉽게 검색할 수 있도록

• Index-organized table, Index partition, Rollback segment, Temporary segment, LOB segment, LOB index, Nested table, Bootstrap segment

Page 71: Oracle8i Administration

71

■ Using Block Space Utilization Parameters

• Database Block– I/O 의 최소 단위– 하나 이상의 OS Block 으로 구성– DB_BLOCK_SIZE 파라미터로 크기 설정– Database 생성 시 설정

• Database Block Contents– Header: data block address, table directory, row directory, transaction slot– Free space– Data

Header

Free Space

Data

Page 72: Oracle8i Administration

72

■ Using Block Space Utilization Parameters

• Block Space Utilization Parameters

– Data 와 index segment 의 공간 활용을 제어하기 위해 사용– INITRANS, MAXTRANS

• Data block 이나 index block 에 생성되는 transaction slot 의 초기와 최대 수 설정• transaction slot 은 block 을 변경하는 transaction 에 대한 정보를 저장

– PCTFREE: Block 의 update 에 대비해 reserved space percentage– PCTUSED: minimum percentage of used space

INITRANS

MAXTRANS

PCTUSED

PCTFREE

Page 73: Oracle8i Administration

73

• Data Dictionary View

• Querying DBA_SEGMENTS– General Information

• OWNER, SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAME– Storage settings

• INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENTS, MAX_EXTENTS, PCT_INCREASE– Size

• EXTENTS, BLOCKS, BYTES– Other information

• Location, Tuning

■ Obtaining Information About Storage Structures

SegmentsDBA_SEGMENTS

TablespacesDBA_TABLESPACES

Data FilesDBA_DATA_FILES

Used ExtentsDBA_EXTENTS

Free ExtentsDBA_FREE_SPACE

Page 74: Oracle8i Administration

74

• Querying DBA_EXTENTS– Identification

• OWNER• SEGMENT_NAME• EXTENT_ID

– Location• TABLESPACE_NAME• RELATIVE_FNO• FILE_ID• BLOCK_ID

– Size• BLOCKS• BYTES

• Querying DBA_FREE_SPACE– Location

• TABLESPACE_NAME• RELATIVE_FNO• FILE_ID• BLOCK_ID

– Size• BYTES• BLOCKS

■ Obtaining Information About Storage Structures

Page 75: Oracle8i Administration

Lesson 10Managing Rollback Segments

Page 76: Oracle8i Administration

76

• Rollback Segment 는 데이터 변경 시 변경 전 data 와 data 의 위치 저장• Rollback segment header 에는 rollback segment 를 사용하는

현재 transaction 에 대한 정보가 저장된 transaction table 을 포함• 하나의 transaction 은 하나의 rollback segment 만을 사용

■ Overview

Update Transaction

Table

New Image

Old Image

Rollback Segment

Page 77: Oracle8i Administration

77

• Transaction Rollback– transaction 이 table 내에 row 를 변경할 때 , 변경 전에 데이터를 rollback

segment 에 보관

• Transaction Recovery– instance failure 시 uncommitted 변경 사항을 roll back

• Read Consistency– 다른 user 에게 변경되기 전에 데이터 값을 보여줌

■ Purpose

Read ConsistencyTransactionrecovery

Rollback Segment

Transaction Rollback

Page 78: Oracle8i Administration

78

• SYSTEM– Database 생성 시 SYSTEM tablespace 내에 생성– SYSTEM tablespace 내에 objects 를 위해 사용

• Non-SYSTEM– multiple tablespace 를 가지고 있는 database 는 최소 하나의 non-SYSTEM rollb

ack segment 가 필요– 다른 tablespace 내에 objects 를 위해 사용– private– public

• Deferred– Tablespace 가 immediate option 으로 offline 되었을 때 사용– Tablespace 가 다시 online 되었을 때 transactions 을 roll back

■ Types of Rollback Segments

Page 79: Oracle8i Administration

79

• Allocation of a Rollback Segment– Transaction 이 시작되면 하나의 rollback segment 가 할당

• Using extent– Transactions 은 sequential, circular 하게 rollback segment 의 extent 를

사용– 하나 이상의 transaction 들이 같은 rollback segment 의 extent 를 사용 가능– 각 rollback segment block 은 하나의 transaction 의 정보를 포함

• Growth of Rollback Segments– pointer 는 다음 extent 가 no active transaction 일 때만 이동 가능– next extent 가 사용되고 있으면 , transaction 은 하나의 extent 를 추가

■ Using Rollback Segments with Transactions

Active extent

1 2

34

1 2

3

4

5

Inactive extent

New extent

Page 80: Oracle8i Administration

80

• Guidelines– 모든 extents 의 크기가 같도록 INITIAL=NEXT 를 사용– Rollback segment extents 의 allocation 과 deallocation 을 최소화하기 위해 OPT

IMAL 값을 설정– 불필요한 rollback segment 의 확장을 피하기 위해 MAXEXTENTS 값을 설정

• Bringing Rollback

– Database startup 시 rollback segment 를 online 상태로 설정

■ Creating Rollback Segments

CREATE ROLLBACK SEGMENT rbs01 TABLESPACE rbs STORAGE ( INITIAL 100K NEXT 100K MINEXTENTS 20 MAXEXTENTS 100 OPTIMAL 2000K );

CREATE ROLLBACK SEGMENT rbs01 TABLESPACE rbs STORAGE ( INITIAL 100K NEXT 100K MINEXTENTS 20 MAXEXTENTS 100 OPTIMAL 2000K );

ALTER ROLLBACK SEGMENT rbs01 ONLINE;ALTER ROLLBACK SEGMENT rbs01 ONLINE;

ROLLBACK_SEGMENTS=(rbs01, rbs02)ROLLBACK_SEGMENTS=(rbs01, rbs02)

Page 81: Oracle8i Administration

81

• Changing Rollback Segment Storage Settings– OPTIMAL 이나 MAXEXTENTS 를 변경

• Deallocating Space from Rollback Segments

• Taking a Rollback Segment Offline

• Dropping Rollback Segments

■ Maintaining Rollback Segments

ALTER ROLLBACK SEGMENT rbs01 STORAGE( MAXEXTENTS 200 );ALTER ROLLBACK SEGMENT rbs01 STORAGE( MAXEXTENTS 200 );

DROP ROLLBACK_SEGMENT rbs01;DROP ROLLBACK_SEGMENT rbs01;

ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 4M;ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 4M;

ALTER ROLLBACK SEGMENT rbs01 OFFLINE;ALTER ROLLBACK SEGMENT rbs01 OFFLINE;

Page 82: Oracle8i Administration

82

• DBA_ROLLBACK_SEGS– Identification

• SEGMENT_ID• SEGMENT_NAME

– Location• TABLESPACE_NAME

– Type• OWNER(PUBLIC or SYS)

– Status• STATUS(ONLINE or OFFLINE)

• Rollback Segment Statistics

■ Obtaining Rollback Segment Information

V$ROLLNAME USN NAME

V$ROLLNAME USN NAME

V$ROLLSTAT USN EXTENTS RSSIZE XACTS . .

V$ROLLSTAT USN EXTENTS RSSIZE XACTS . .

Page 83: Oracle8i Administration

83

• Rollback Segment Statistics

• Rollback Segment: Current Activity

■ Obtaining Rollback Segment Information

V$ROLLNAME USN NAME

V$ROLLNAME USN NAME

V$ROLLSTAT USN EXTENTS RSSIZE XACTS OPTSIZE HWMSIZE AVEACTIVE STATUS CUREXT CURBLK

V$ROLLSTAT USN EXTENTS RSSIZE XACTS OPTSIZE HWMSIZE AVEACTIVE STATUS CUREXT CURBLK

V$SESSION SADDR USERNAME SID SERIAL#

V$SESSION SADDR USERNAME SID SERIAL#

V$TRANSACTION SES_ADDR XIDUSN UBAFIL STATUS . .

V$TRANSACTION SES_ADDR XIDUSN UBAFIL STATUS . .

Page 84: Oracle8i Administration

84

• Transactions 을 위한 공간 부족– Tablespace 에 data file 추가– MAXEXTENTS 크기를 늘려줌– 초기 extent 값을 크게 설정해서 segment 를 재생성

• Read-consistency error– MINEXTENTS 값을 크게– extent 의 크기를 크게– OPTIMAL 값을 크게

• Blocking Session– Blocking Session 을 찾아서 kill

• Error in taking tablespace offline

■ Troubleshooting Rollback Segment Problem

Page 85: Oracle8i Administration

Lesson 11Managing Tables

Page 86: Oracle8i Administration

86

• Regular table

• Partitioned table

• Index-organized table

• Cluster

• Structure of a Row

■ Overview

Row header

Column length

Column value

Page 87: Oracle8i Administration

87

• Changing Rollback Segment Storage Settings– OPTIMAL 이나 MAXEXTENTS 를 변경

• Deallocating Space from Rollback Segments

• Taking a Rollback Segment Offline

• Dropping Rollback Segments

■ Maintaining Rollback Segments

ALTER ROLLBACK SEGMENT rbs01 STORAGE( MAXEXTENTS 200 );ALTER ROLLBACK SEGMENT rbs01 STORAGE( MAXEXTENTS 200 );

DROP ROLLBACK_SEGMENT rbs01;DROP ROLLBACK_SEGMENT rbs01;

ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 4M;ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 4M;

ALTER ROLLBACK SEGMENT rbs01 OFFLINE;ALTER ROLLBACK SEGMENT rbs01 OFFLINE;

Page 88: Oracle8i Administration

88

• Guidelines– tablespace fragmentation 을 줄이기 위해 표준 extent size 를 사용– fragmentation 을 줄이기 위해 locally managed tablespaces 를 사용– 작고 , 자주 사용되는 table 에 대해서는 CACHE 모드로 설정

■ Creating Table

CREATE TABLE employee ( id NUMBER(7), last_name VARCHAR2(25), dept_id NUMBER(7))PCTFREE 20 PCTUSED 50STORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50 )TABLESPACE data;

CREATE TABLE employee ( id NUMBER(7), last_name VARCHAR2(25), dept_id NUMBER(7))PCTFREE 20 PCTUSED 50STORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50 )TABLESPACE data;

Page 89: Oracle8i Administration

89

• High-Water Mark– Table 에서 사용되고 있는 마지막 block 를 가리키고 있다– insert 시 마지막 block 으로 이동– row delete 시에는 reset 되지 않음– Table 의 segment header 에 보관– Full table scan 시 high-water mark 까지 모든 block 을 scan

• Finding the High-Water Mark– High-Water Mark 의 위치와 unused block 의 수를 찾기 위한 package 제공– DBMS_SPACE

• Deallocation of Unused Space– release 된 공간은 table 내에 다른 segment 에 의해 사용

■ Controlling Space Used by Tables

ALTER TABLE summit.employeeDEALLOCATE UNUSED;ALTER TABLE summit.employeeDEALLOCATE UNUSED;

Page 90: Oracle8i Administration

90

• Truncating a Table– Table 내에 모든 row 를 삭제– 대응하는 모든 index 를 truncate– foreign key 에 의해 참조되고 있는 table 은 truncate 될 수 없음– 삭제된 trigger 는 fire

• Dropping a Table

■ Controlling Space Used by Tables

TRUNCATE TABLE summit.employee;TRUNCATE TABLE summit.employee;

DROP TABLE summit.departmentCASCADE CONSTRAINTS;DROP TABLE summit.departmentCASCADE CONSTRAINTS;

Page 91: Oracle8i Administration

91

• Dropping a Column– Table 내에 하나의 column 을 삭제

– column length, 각 row 의 데이터를 삭제

• Using the UNUSED Option– Mark a column as unused

– Drop unused columns

■ Controlling Space Used by Tables

ALTER TABLE ordersSET UNUSED COLUMN commnetsCASCADE CONSTRAINTS

ALTER TABLE ordersSET UNUSED COLUMN commnetsCASCADE CONSTRAINTS

ALTER TABLE employeeDROP COLUMN commentsCASCADE CONSTRAINTS CHECKPOINT 1000;

ALTER TABLE employeeDROP COLUMN commentsCASCADE CONSTRAINTS CHECKPOINT 1000;

ALTER TABLE ordersDROP UNUSED COLUMNS CHECKPOINTS 1000;ALTER TABLE ordersDROP UNUSED COLUMNS CHECKPOINTS 1000;

Page 92: Oracle8i Administration

92

• Table 정보 얻기

• Extent 정보 얻기– DBA_EXTENTS

• OWNER, SEGMENT_NAME, EXTENT_ID, FILE_ID, BLOCK_ID, BLOCKS

■ Retrieving Table Information

DBA_OBJECTS OWNER OBJECT_NAME OBJECT_ID DATA_OBJECT_ID CREATED

DBA_OBJECTS OWNER OBJECT_NAME OBJECT_ID DATA_OBJECT_ID CREATED

DBA_SEGMENTS OWNER SEGMENT_NAME TABLESPACE_NAME HEADER_FILE HEADER_BLOCK

DBA_SEGMENTS OWNER SEGMENT_NAME TABLESPACE_NAME HEADER_FILE HEADER_BLOCK

DBA_TABLES OWNER TABLE_NAME PCT_FREE PCT_USED INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE CACHE BLOCKS EMPTY_BLOCKS CHAIN_CNT TEMPORARY DURATION

DBA_TABLES OWNER TABLE_NAME PCT_FREE PCT_USED INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE CACHE BLOCKS EMPTY_BLOCKS CHAIN_CNT TEMPORARY DURATION

Page 93: Oracle8i Administration

Lesson 12Managing Indexes

Page 94: Oracle8i Administration

94

• Classification of Indexes– Logical

• logical classification groups indexes from an application perspective• Single column or concatenated• Unique or nonunique• Function-based

– Physical• index 를 어떻게 보관하느냐 따라 분류• Partitioned or nonpartitioned• B-tree• Normal or reverse key• Bitmap

■ Overview

Page 95: Oracle8i Administration

95

• B-Tree Index

– Index entry• Index entry header: column 의 수와 locking 정보를 포함• Key column length-value pairs: key value 에 따른 key 내에 column 의 크기 정의• ROWID: key value 를 포함하는 row 의 id

• Reverse Key Index

■ Overview

Root

Branch

Leaf

KEY ROWID

ID (BLOCK# ROW# FILE#)----- --------------------1257 0000000F.0002.00012877 0000000F.0006.00014567 0000000F.0004.00016657 0000000F.0003.0001

KEY ROWID

ID (BLOCK# ROW# FILE#)----- --------------------1257 0000000F.0002.00012877 0000000F.0006.00014567 0000000F.0004.00016657 0000000F.0003.0001

ID FIRST_NAME JOB----- ---------- -----------7499 ALLEN SALESMAN7566 JONES MANAGER7782 CLARK MANAGER7369 SMITH CLERK

ID FIRST_NAME JOB----- ---------- -----------7499 ALLEN SALESMAN7566 JONES MANAGER7782 CLARK MANAGER7369 SMITH CLERK

Index on EMPLOYEE(ID)

EMPLOYEE table

Page 96: Oracle8i Administration

96

• Creating Function-Based Indexed– Query performance 개선

– Queries using expressions can use the index

• Bitmap Index– B-tree 와 비슷하게 구성– leaf node 는 ROWIDs 대신에 각 key value 에 대한 bitmap 을 저장– 구성요소

• bitmap entry header: columns 의 수와 lock information• Key values: 각 key column 에 대한 length 와 value 의 쌍

■ Overview

CREATE INDEX summit.item_quantity_to_deliver_idxON summit.item (quantity – quantity_shipped);CREATE INDEX summit.item_quantity_to_deliver_idxON summit.item (quantity – quantity_shipped);

SELECT ord_id, item_idFROM ITEMWHERE ( quantity – quantity_shipped) > 0;

SELECT ord_id, item_idFROM ITEMWHERE ( quantity – quantity_shipped) > 0;

Page 97: Oracle8i Administration

97

• Comparing B-Tree and Bitmap Indexes

■ Overview

B-tree Bitmap

High cardinality columns 에 적당 Low cardinality columns 에 적당

key 에 대한 update 가 inexpensive key 에 대한 update 가 expensive

OR 절을 사용하는 query 는 비효율적 OR 절을 사용하는 query 에 효율적

OLTP 에 사용 Data warehousing 에 사용

Page 98: Oracle8i Administration

98

• Creating Normal B-Tree Indexes

• Guidelines– Query 와 DML 의 balance– Data 나 rollback segment 와 다른 tablespace 에 존재하도록– Uniform extents size 를 사용– large index 에 대해서는 NOLOGING 모드를 사용– Table 과 다르게 PCTFREE 를 높게 설정

■ Creating Indexes

CREATE INDEX summit.employee_last_name_idxON summit.employee(last_name)PCTFREE 30STORAGE (INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50)TABLESPACE indx;

CREATE INDEX summit.employee_last_name_idxON summit.employee(last_name)PCTFREE 30STORAGE (INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50)TABLESPACE indx;

Page 99: Oracle8i Administration

99

• Creating Reverse Key Indexes

• Creating Bitmap Indexes

■ Creating Indexes

CREATE UNIQUE INDEX summit.orders_id_idxON summit.orders(id) REVERSEPCTFREE 30STORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50)TABLESPACE INDX;

CREATE UNIQUE INDEX summit.orders_id_idxON summit.orders(id) REVERSEPCTFREE 30STORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50)TABLESPACE INDX;

CREATE BITMAP INDEX orders_region_id_idxON summit.orders(region_id)PCTFREE 30STORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50)TABLESPACE indx;

CREATE BITMAP INDEX orders_region_id_idxON summit.orders(region_id)PCTFREE 30STORAGE(INITIAL 200K NEXT 200KPCTINCREASE 0 MAXEXTENTS 50)TABLESPACE indx;

Page 100: Oracle8i Administration

100

• Changing Storage Parameters for Indexes

• Allocating and Deallocating Index Space

■ Reorganizing Indexes

ALTER INDEX summit.employee.last_name_idxSTORAGE(NEXT 400KMAXEXTENTS 100);

ALTER INDEX summit.employee.last_name_idxSTORAGE(NEXT 400KMAXEXTENTS 100);

ALTER INDEX summit.orders_region_id_idxALLOCATE EXTENT (SIZE 200KDATAFILE ‘/DISK6/indx01.dbf’;

ALTER INDEX summit.orders_region_id_idxALLOCATE EXTENT (SIZE 200KDATAFILE ‘/DISK6/indx01.dbf’;

ALTER INDEX summit.orders_id_idxDEALLOCATE UNUSED;ALTER INDEX summit.orders_id_idxDEALLOCATE UNUSED;

Page 101: Oracle8i Administration

101

• Rebuilding Indexes– index 를 다른 tablespace 로 이동– 삭제된 entries 를 제거함으로써 공간 활용도를 개선– reverse key index 를 normal B-Tree index 로 변경 또는 그 반대로 변경

• Coalescing Indexes

■ Reorganizing Indexes

ALTER INDEX summit.orders_region_id_idx REBUILDTABLESPACE indx02;ALTER INDEX summit.orders_region_id_idx REBUILDTABLESPACE indx02;

ALTER INDEX summit.orders_id_idx COALESCE;ALTER INDEX summit.orders_id_idx COALESCE;

■ Dropping Indexes• 커다란 data 를 load 하기전에 index 를 drop 하고 load 후 index 재생성

• 자주 사용되지 않은 indexs 를 제거하고 , 필요할 때 생성

• instance failure 시 INVALID 표시된 index 를 제거 후 재생성

DROP INDEX summit.department_name_idx;DROP INDEX summit.department_name_idx;

Page 102: Oracle8i Administration

102

■ Obtaining Index Information

DBA_INDEXES OWNER INDEX_NAME INDEX_TYPE TABLE_OWNER TABLE_NAME UNIQUENESS TABLESPACE_NAME LOGGING STATUS

DBA_INDEXES OWNER INDEX_NAME INDEX_TYPE TABLE_OWNER TABLE_NAME UNIQUENESS TABLESPACE_NAME LOGGING STATUS

DBA_ID_COLUMNS INDEX_OWNER INDEX_NAME TABLE_OWNER TABLE_NAME COLUMN_NAME COLUMN_POSITION COMUMN_LENGTH

DBA_ID_COLUMNS INDEX_OWNER INDEX_NAME TABLE_OWNER TABLE_NAME COLUMN_NAME COLUMN_POSITION COMUMN_LENGTH

SELECT index_name, tablespace_name, index_type, uniqueness, statusFROM dba_indexesWHERE owner = ‘SUMMIT’;

SELECT index_name, tablespace_name, index_type, uniqueness, statusFROM dba_indexesWHERE owner = ‘SUMMIT’;

Page 103: Oracle8i Administration

Lesson 13Managing Data Integrity

Page 104: Oracle8i Administration

104

• Types of Constraints

• Constraint States– Disabled novalidate– Disabled validate– Enabled novalidate– Enabled validate

■ Integrity Constraints

Constraint Description

NOT NULL column 이 null values 를 가질 수 없음

UNIQUE unique 로 column 이나 column 의 조합을 설정

PRIMARY KEYcolumn 이나 column 의 조합을 table 의 primary key 로 설정

FOREIGN KEY column 이나 column 의 조합을 table 의 foreign key 로 설정

CHECK table 의 row 가 만족해야 하는 condition 을 설정

Page 105: Oracle8i Administration

105

• Deferred Constraints– 하나의 transaction 이 commit 되었을 때만 constraints 를 check– commit 시 constraints violation 이 있다면 모든 transaction 이 rollback

• Defining Constraints Immediate or Deferred

• Foreign Key Considerations

■ Integrity Constraints

ALTER SESSIONSET CONSTRAINT[S] = {IMMEDIATE|DEFERRED|DEFAULT);

ALTER SESSIONSET CONSTRAINT[S] = {IMMEDIATE|DEFERRED|DEFAULT);

Action 적절한 해결방법

Drop Parent Table Cascade constraints

Truncate parent table Disable or drop foreign key

Drop Tablespace containing parent table CASCADE CONSTRAINTS 를 사용

Avoid locks on child table while performing DML o parent table

foreign key 에 대한 index 를 생성

Perform DML o child tableEnsure tablespace containing parent key index online

Page 106: Oracle8i Administration

106

• Defining Constraints While Creating Table

• Guidelines– Primary and unique constraints

• table 과 다른 tablespace 에 위치• bulk load 가 자주 발생하면 nonunique indexes 를 사용

– Self-referencing foreign key• initial load 후 foreign key 를 정의하거나 enable• constraint 를 deferrable constraint 로 정의

■ Implementing Constraints

CREATE TABLE summit.employee(id NUMBER(7)

CONSTRAINTS employee_id_pk PRIMARY KEYDEFERRABLEUSING INDEX STORAGE(INITIAL 100K NEXT 100K) TABLESPACE indx,

last_name VARCHAR2(25)CONSTRAINTS employee_last_name_nn NOT NULL,

dept_id NUMBER(7))TABLESPACE data;

CREATE TABLE summit.employee(id NUMBER(7)

CONSTRAINTS employee_id_pk PRIMARY KEYDEFERRABLEUSING INDEX STORAGE(INITIAL 100K NEXT 100K) TABLESPACE indx,

last_name VARCHAR2(25)CONSTRAINTS employee_last_name_nn NOT NULL,

dept_id NUMBER(7))TABLESPACE data;

Page 107: Oracle8i Administration

107

• Using the EXCEPTIONS Table– EXCEPTION Table 생성 (utlexcpt.sql)

– EXCEPTIONS 절을 포함하여 ALTER TABLE 실행

– invalid data 를 가진 row 확인

– data 내에 error 를 수정– constraints 를 enable 하기 위해 ALTER TABLE 실행

■ Maintaining Constraints

SQL>@?/rdbms/admin/ttlexcptSQL>@?/rdbms/admin/ttlexcpt

ALTER TABLE summit.employeeENABLE VALIDATE CONSTRAINT employee_dept_id_fkEXCEPTIONS INTO system.exceptions

ALTER TABLE summit.employeeENABLE VALIDATE CONSTRAINT employee_dept_id_fkEXCEPTIONS INTO system.exceptions

SELECT rowid, id, last_name, dept_idFROM summit.employeeWHERE ROWID in( SELECT row_id FROM exceptions)FOR UPDATE;

SELECT rowid, id, last_name, dept_idFROM summit.employeeWHERE ROWID in( SELECT row_id FROM exceptions)FOR UPDATE;

ALTER TABLE summit.employeeENABLE VALIDATE CONSTRAINT employee_dept_id_fkEXCEPTIONS INTO system.exceptions

ALTER TABLE summit.employeeENABLE VALIDATE CONSTRAINT employee_dept_id_fkEXCEPTIONS INTO system.exceptions

Page 108: Oracle8i Administration

108

■ Obtaining Constraint Information

DBA_CONSTRAINTS OWNER CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME DELETE_RULE STATUS DEFERABLE DEFERRED VALIDATED GENERATED BAD RELY LAST_CHANGE

DBA_CONSTRAINTS OWNER CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME DELETE_RULE STATUS DEFERABLE DEFERRED VALIDATED GENERATED BAD RELY LAST_CHANGE

DBA_CONS_COLUMNS OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION

DBA_CONS_COLUMNS OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION

SELECT constraint_name, constraint_type, deferrable,deferred, validatedFROM dba_constraintsWHERE owner= ‘ SUMMIT’ AND table_name = ‘EMPLOYEE’;

SELECT constraint_name, constraint_type, deferrable,deferred, validatedFROM dba_constraintsWHERE owner= ‘ SUMMIT’ AND table_name = ‘EMPLOYEE’;

Page 109: Oracle8i Administration

Lesson 14Loading Data

Page 110: Oracle8i Administration

110

• Loading data– Direct-Load Insert– SQL*Loader– Export and Import Utilities

■ OverviewOther

Applications

OracleDatabase

OracleDatabase

SQL*Loader

Import

Direct-load insert

Export

Page 111: Oracle8i Administration

111

• Using Direct-Load Inserts

■ Loading Data Using Direct-Load Insert

INSERT /*_APPEND */ INTO scott.empNOLOGGINGSELECT * FROM SCOTT.OLD_emp;

INSERT /*_APPEND */ INTO scott.empNOLOGGINGSELECT * FROM SCOTT.OLD_emp;

EMP table

ServerProcessServerProcess

Used block

Free space after delete

High-water mark

Blocks used by inserted rows

Page 112: Oracle8i Administration

112

• Parallel Direct-Load Insert

– 각 slave process 에 의해 insert 된 data 를 보관하기 위해 temporary segments 가 할당

– commit 을 실행해야만 temporary segment 의 extents 가 table 에 포함

■ Loading Data Using Direct-Load Insert

ALTER SESSION ENABLE PARALLEL DML;INSERT /*+PARALLEL(scott.emp, 2) */ INTO scott.emp NOLOGGINGSELECT * FROM scott.old_emp;

ALTER SESSION ENABLE PARALLEL DML;INSERT /*+PARALLEL(scott.emp, 2) */ INTO scott.emp NOLOGGINGSELECT * FROM scott.old_emp;

EMP table

SlaveProcessSlave

Process

Used block

Free space after delete

High-water mark

Temporary segments

SlaveProcessSlave

Process

Page 113: Oracle8i Administration

113

• Parallel Direct-Load Insert

– 각 slave process 에 의해 insert 된 data 를 보관하기 위해 temporary segments 가 할당

– commit 을 실행해야만 temporary segment 의 extents 가 table 에 포함

■ Loading Data Using Direct-Load Insert

ALTER SESSION ENABLE PARALLEL DML;INSERT /*+PARALLEL(scott.emp, 2) */ INTO scott.emp NOLOGGINGSELECT * FROM scott.old_emp;

ALTER SESSION ENABLE PARALLEL DML;INSERT /*+PARALLEL(scott.emp, 2) */ INTO scott.emp NOLOGGINGSELECT * FROM scott.old_emp;

EMP table

SlaveProcessSlave

Process

Used block

Free space after delete

High-water mark

Temporary segments

SlaveProcessSlave

Process

Page 114: Oracle8i Administration

114

• SQL*Loader– 외부 파일들로부터 table 로 데이터를 load

■ Loading Data Using SQL*Loader

Rejected

Parameter file(optional)

Oracle Server

SQL*Loader

Record selection

Field processing

Control fileData file

Bad file

Discard file(optional)

Accepted

Selected

Inserted

Discarded

Rejected

Log file

Database file

Page 115: Oracle8i Administration

115

• Files Used by SQL*Loader– Control file: input format, output tables, optional condition– Data file: control file 에 정의된 형태의 data 를 포함– Parameter file: command line parameter 를 정의– Log file: SQL*Loader 에 의해 생성되며 , load 의 기록을 보관– Bad file: load 동안 reject 된 기록을 작성– Discard file: 조건에 맞이 않는 모든 data 를 보관

• SQL*Loader 특징– 하나 이상의 input file 을 사용– 여러 input record 들이 하나의 논리적인 record 로 조합– 데이터는 disk, tape, named pipe 와 같은 media 로 부터 load– 데이터는 한번의 수행으로 여러 table 에 load– table 내에 존재하는 데이터에 추가 , 대체하는 option 을 제공– SQL function 을 input 데이터에 적용– 데이터를 data buffer cache 를 거치지 않고 , 직접 table 에 load

■ Loading Data Using SQL*Loader

Page 116: Oracle8i Administration

116

• Conventional Path Load– 데이터 load 위해 SQL 문을 사용– field specification 에 만족하지 않은 record 는 reject– select 목록에 만족하지 않은 record 는 discard– Redo log 생성은 logging attribute 에 따라 결정

• Direct Path Load– 메모리 내에 data 의 blocks 을 만들고 , 이 blocks 을 직접 table 의 extent 에

저장– database 가 archivelog mode 이면 redo log 생성 안함– database buffer cache 를 거치지 않고 , 직접 데이터를 load– extent 관리 high-water mark 조정을 위해 SGA 를 사용

■ Loading Data Using SQL*Loader

Conventional Path Direct Path

데이터 변경 후 COMMIT 실행 data save

Redo log entries 발생 특정 조건에 따라 발생

모든 constraints enforce primary key, unique, NOT NULL

INSERT trigger fire INSERT triggers do not fire

clustered table 에 load 될 수 있음 clustered table 에 load 될 수 없음

다른 사용자가 table 변경 가능 변경 불가능

Page 117: Oracle8i Administration

117

• Using SQL*Loader

• Guidelines– 사용된 command line option 을 지정하기 위해 parameter file 을 사용– data file 이 작은 경우 control file 에 위치– loading performance 를 향상

• 충분한 공간 할당• sorting the data on the largest index• parallel load 시 temporary segments 의 위치를 다르게 지정

■ Loading Data Using SQL*Loader

$sqlldr scott/tiger \> control=u1case6.ctl \> log=u1case6.log direct=true

$sqlldr scott/tiger \> control=u1case6.ctl \> log=u1case6.log direct=true

Page 118: Oracle8i Administration

Lesson 15Reorganizing Data

Page 119: Oracle8i Administration

119

• Moving Data Using Export and Import

– Administrator 가 실행– database 들 사이에 data 이동– 다른 tablespaces 로 data 이동– 효율적인 storage 와 performance 를 위해 data 를 reorganize– 어떤 user 소유의 data 를 다른 user 로 이동– 다른 OS 플랫폼이나 Oracle 버전에 다른 database 를 migrate– logical backup 을 수행

■ Overview

Data files

OS file

Import

Export

Page 120: Oracle8i Administration

120

• Export Modes– Table

• table, indexes, triggers, constraints, grants 모두 export 가능– User

• user 가 소유하고 있는 모든 objects 를 export 가능• 다른 users 가 소유하고 있는 indexes 와 triggers 은 제외

– Database• database 내에 모든 objects 를 export 가능• SYS 소유의 objects 는 제외

• Conventional and Direct Path Export

■ Overview

Dump files

Database

ExportExport

EvaluatingbufferEvaluatingbufferPrivate bufferor buffer cachePrivate bufferor buffer cache

SQL commandprocessingSQL commandprocessingBuffer cachemanagementBuffer cachemanagementRead databaseblockRead databaseblock

DirectConventional

Page 121: Oracle8i Administration

121

• Using Export

• Using Import

■ Overview

$exp scott/tiger tables=(dept, emp) \> file=emp.dmp log=exp.log \> compress=n direct=y

$exp scott/tiger tables=(dept, emp) \> file=emp.dmp log=exp.log \> compress=n direct=y

$imp scott/tiger tables=(dept, emp) \> file=emp.dmp log=imp.log ignore=y$imp scott/tiger tables=(dept, emp) \> file=emp.dmp log=imp.log ignore=y

Page 122: Oracle8i Administration

122

• Steps for Transporting a Tablespace1. Tablespace 를 read-only 로 만듬2. Export metadata from source3. data files 을 대상 system 으로 복사4. 대상 system 으로 export file 을 전송5. metadata 를 대상 system 내에 import6. 필요하다면 tablespace 를 read-write 로 변경

• Transportable Tablespace Uses– 모든 tablespace data 를 이동– media recovery 를 지원– source and target database

• 같은 OS 이어야 함• Oracle 8i, release 8.1 또는 그 이상이어야 함• 같은 block size 이어야 함• 같은 character set 이어야 함

■ Transporting a Tablespace

Page 123: Oracle8i Administration

123

• Example

– SYSTEM 1 의 tablespace 를 read-only 로

– metadata tablespace export

■ Transporting a Tablespace

s980501.dmps980501.dmp

SYSTEM 1

/u/d1/u/d2

/disk1/disk2

SALES_TSSALES_TS

SYSTEM 2

/u/d1/sales1.dbf/u/d1/sales1.dbf

/u/d2/sales2.dbf/u/d2/sales2.dbf

SALES_TSSALES_TS

/disk1/sales1.dbf/disk1/sales1.dbf

/disk2/sales2.dbf/disk2/sales2.dbf

read only

SQL>ALTER TABLESPACE sales_ts READ ONLY;SQL>ALTER TABLESPACE sales_ts READ ONLY;

exp FILE=x980501.dmp TRANSPORT TABLESPACE=Y \TABLESPACE=sales_ts TRIGGER=N CONSTRAINTS=Nexp FILE=x980501.dmp TRANSPORT TABLESPACE=Y \TABLESPACE=sales_ts TRIGGER=N CONSTRAINTS=N

Page 124: Oracle8i Administration

124

• Example

– tablespace data file 을 system 2 로 복사– s980501.dmp export file 을 system 2 로 복사– tablespace metadata import

– tablespace read-write 로 변환

■ Transporting a Tablespace

s980501.dmps980501.dmp

SYSTEM 1

/u/d1/u/d2

/disk1/disk2

SALES_TSSALES_TS

SYSTEM 2

/u/d1/sales1.dbf/u/d1/sales1.dbf

/u/d2/sales2.dbf/u/d2/sales2.dbf

SALES_TSSALES_TS

/disk1/sales1.dbf/disk1/sales1.dbf

/disk2/sales2.dbf/disk2/sales2.dbf

read only

imp FILE=x980501.dmp TRANSPORT TABLESPACE=Y \DATAFILES=(/disk1/sales01.dbf, /disk2/sales02.dbf)imp FILE=x980501.dmp TRANSPORT TABLESPACE=Y \DATAFILES=(/disk1/sales01.dbf, /disk2/sales02.dbf)

SQL>ALTER TABLESPACE sales_ts READ WRITE;SQL>ALTER TABLESPACE sales_ts READ WRITE;

Page 125: Oracle8i Administration

Lesson 16Managing Password Security

andResources

Page 126: Oracle8i Administration

126

• Profiles– Password aging and expiration– Password history– Password complexity verification– Account locking– CPU time– I/O operations– Idle time– Connect time– Memory space– Concurrent sessions

■ Overview

Page 127: Oracle8i Administration

127

• password management– Account locking– Password aging and expiration– Password history– Password complexity verification

• Enabling Password Management– profiles 을 사용함으로써 password management 를 설정– users 에게 profile 을 할당– CREATE USER 또는 ALTER USER 를 사용하여 account 를 lock, unlock,

expire– password limit 은 항상 강요

• Controlling Account Lock and Password– 사용자가 password 를 분실했을 때 , password 를 reset– 사용자의 account 를 unlock– account 를 lock– 수동으로 password 를 expire

■ Administering Passwords

ALTER USER hanneIDENTIFIED BY rueACCOUNT UNLOCK;

ALTER USER hanneIDENTIFIED BY rueACCOUNT UNLOCK;

Page 128: Oracle8i Administration

128

• Creating a Profile: Password settings

• Altering a Profile

• Dropping a Profile

■ Administering Passwords

CREATE PROFILE grace_5 LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME UNLIMITED PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 30 PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_GRACE_TIME 5;

CREATE PROFILE grace_5 LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME UNLIMITED PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 30 PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_GRACE_TIME 5;

ALTER PROFILE defaultFAILED_LOGIN_ATTEMPTS 3PASSWORD_LIFE_TIME 60PASSWORD_GRACE_TIME 10;

ALTER PROFILE defaultFAILED_LOGIN_ATTEMPTS 3PASSWORD_LIFE_TIME 60PASSWORD_GRACE_TIME 10;

DROP PROFILE developer_prof;DROP PROFILE developer_prof;

DROP PROFILE developer_prof CASCADE;DROP PROFILE developer_prof CASCADE;

Page 129: Oracle8i Administration

129

• Managing Resources with Profiles– CREATE PROFILE 명령어를 이용하여 profile 을 생성– CREATE 또는 ALTER USER 명령어를 이용하여 user 에게 profile 할당– resource limit 을 enable

• RESOURCE_LIMIT 초기화 파라미터• ALTER SYSTEM 명령어

• Setting Resource Limits at Session Level

■ Controlling Usage of Resources

Resource Description

CPU_PER_SESSION 총 CPU 시간 (100 초 단위 )

SESSIONS_PER_USER 각 user 당 concurrent session 수

CONNECT_TIME 연결 시간 ( 분 )

IDLE_TIME inactive time( 분 )

LOGICAL_READS_PER

_SESSIONdata block 수

PRIVATE_SGA SGA 내에 private space(byte)

Page 130: Oracle8i Administration

130

• Setting Resource Limits at Call Level

• Creating a Profile: Resource Limit

• Enabling Resource Limits– RESOURCE_LIMIT 초기화 파라미터를 TRUE 를 설정– ALTER SYSTEM 명령어를 이용하여 resource limit enable

■ Controlling Usage of Resources

CREATE PROFILE developer_prof LIMIT SESSIONS_PER_USER 2 CPU_PER_SESSION 10000 IDLE_TIME 60 CONNECT_TIME 480;

CREATE PROFILE developer_prof LIMIT SESSIONS_PER_USER 2 CPU_PER_SESSION 10000 IDLE_TIME 60 CONNECT_TIME 480;

Resource Description

CPU_PER_CALL call 당 CPU 시간 (100 초 )

LOGICAL_READS_PER_CALL call 당 읽을 수 있는 data blocks 의 수

ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

Page 131: Oracle8i Administration

131

• DBA_USERS– profile– username– account_status– lock_date– expire_date

• DBA_PROFILES– profile– resource_name– resource_type(PASSWORD, KERNEL)– limit

■ Viewing Password and Resource Limits Information

SELECT username, password, account_status, lock_date, expire_dateFROM dba_users;SELECT username, password, account_status, lock_date, expire_dateFROM dba_users;

SELECT * FROM dba_profiles WHERE resource_type=‘PASSWORD’;SELECT * FROM dba_profiles WHERE resource_type=‘PASSWORD’;

SELECT p.profile, p.resource_name, p.limitFROM dba_users u, dba_profiles pWHERE p.profile=u.profile AND username=‘SCOTT’ ANDp.resource_type=‘KERNERL’;

SELECT p.profile, p.resource_name, p.limitFROM dba_users u, dba_profiles pWHERE p.profile=u.profile AND username=‘SCOTT’ ANDp.resource_type=‘KERNERL’;

Page 132: Oracle8i Administration

Lesson 17Managing Users

Page 133: Oracle8i Administration

133

• Users and Security

• Database Schema– 특정 user 와 관련된 table, view, cluster, procedure, package 와 같은

object 들의 집합

■ Overview

Accountlocking

Defaulttablepsace

Temporarytablespace

Tablespacequotas

Resourcelimits

Directprivileges

Roleprivileges

Authentication

mechanismSecurityDomain

Page 134: Oracle8i Administration

134

• Checklist for Creating Users– username 과 authentication mechanism 을 선택– user 가 object 들을 저장하기 위해 필요한 tablespace 를 확인– 각 tablespace 를 위한 quotas 를 결정– default tablespace 와 temporary tablespace 를 할당– user 생성– user 에게 privileges 와 roles 를 grant

• Creating a New User: Database Authentication

■ Creating New Database Users

CREATE USER peterIDENTIFIED BY mylstsonDEFAULT TABLESPACE dataTEMPORARY TABLESPACE tempQUOTA 15m ON dataPASSWORD EXPIRE;

CREATE USER peterIDENTIFIED BY mylstsonDEFAULT TABLESPACE dataTEMPORARY TABLESPACE tempQUOTA 15m ON dataPASSWORD EXPIRE;

Page 135: Oracle8i Administration

135

• Creating a New User: Operating System Authentication– OS_AUTHENT_PREFIX 파라미터를 사용– Example: os User = user15

• Guidelines– Choose a standard password initially– EXPIRE 키워드를 사용– 항상 temporary tablespace 를 사용– QUOTA UNLIMITED 를 조심하여 사용– user 에게 Oracle Server 연결 방법과 password 변경 방법을 교육

■ Creating New Database Users

OS_AUTHENT_PREFIX

Database UserRemote_Login

Possible

OS_ OS_USER15 No

empty string “” USER15 No

OPS$(default) OPS$USER15 Yes

Page 136: Oracle8i Administration

136

• Changing User Quota on Tablespace

• Dropping Users

■ Altering and Dropping Database Users

ALTER USER peterQUOTA 0 ON data;ALTER USER peterQUOTA 0 ON data;

DROP USER peter;DROP USER peter;

DROP USER peter CASCADE;DROP USER peter CASCADE;

Page 137: Oracle8i Administration

Lesson 18Managing Privileges

Page 138: Oracle8i Administration

138

• Managing Privileges– System: user 가 database 내에서 특정 action 을 수행할 수 있도록– Object: user 가 특정 object 에 접근과 조작할 수 있도록

■ Overview

• 126 가지의 system privileges

• ANY 키워드는 user 가 모든 schema 내에 privileges 를 가진다는 의미• GRANT 명령어는 user 또는 user 의 그룹에 privileges 를 추가• REVOKE 명령어는 privileges 를 제거

■ System Privileges

Category Examples

INDEX CRAETE ANY INDEX, ALTER ANY INDEX, DROP ANY INDEX

TABLECREATE TABLE, CREATE ANY TABLE, ALTER ANY TABLE, DROP ANY TABLE, SELECT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE

SESSION CREATE SESSION, ALTER SESSION, RESTRICTED SESSION

TABLESPACECREATE TABLESPACE, ALTER TABLESPACE, DROP TABLESPACE,

UNLIMITED TABLESPACE

Page 139: Oracle8i Administration

139

• Granting System Privileges

• Guidelines– PUBLIC 은 모든 user 에게 system privileges 를 부여– WITH ADMIN OPTION 으로 user 가 system privileges 를 부여 받게 됨

■ Granting System Privileges

GRANT CREATE SESSION, CREATE TABLE TO manager;GRANT CREATE SESSION, CREATE TABLE TO manager;

GRANT CREATE SESSION TO scott WITH ADMIN OPTION;GRANT CREATE SESSION TO scott WITH ADMIN OPTION;

Page 140: Oracle8i Administration

140

• SYSDBA and SYSOPER Privileges

■ Password File Authentication

Category Examples

SYSOPER

STARTUP

SHUTDOWN

ALTER DATABASE OPEN | MOUNT

ALTER DATABASE BACKUP CONTROLFILE

ALTER TABLESPACE BEGIN/END BACKUP

RECOVER DATABASE

ALTER DATABASE ARCHIVELOG

RESTRICTED SESSION

SYSDBA

SYSOPER privileges WITH ADMIN OPTION

CREATE DATABASE

RECOVER DATABASE UNTIL

Page 141: Oracle8i Administration

141

• Password File Authentication– 생성된 password file 을 check – password file 이 없다면 , ORAPWD 를 이용하여 password file 생성– 파라미터 file 내에 REMOTE_LOGIN_PASSWORD_FILE 이 EXCLUSIVE 로

설정되어 있는지 check– user 에게 SYSOPER, SYSDBA 권한을 부여– password file member 를 확인하기 위해 V$PWFILE_USERS view 를 확인

• Displaying System Privileges

• Revoking System Privileges

■ Password File Authentication

SELECT * FROM DBA_SYS_PRIVS;SELECT * FROM DBA_SYS_PRIVS;

REVOKE CREATE TABLE FROM karen;REVOKE CREATE TABLE FROM karen;

Page 142: Oracle8i Administration

142

• Object Privileges

• Granting Object Privileges

■ Object Privileges

Object Privilege

Table View Sequence Procedure

ALTER

DELETE

EXECUTE

INDEX

INSERT

REFERENCES

SELECT

UPDATE

GRANT EXECUTE ON dbms_pipe TO public;GRANT EXECUTE ON dbms_pipe TO public;

GRANT UPDATE(first_name, salary) ON employeeTO karen WITH GRANT OPTION;GRANT UPDATE(first_name, salary) ON employeeTO karen WITH GRANT OPTION;

Page 143: Oracle8i Administration

143

• Displaying Object Privileges

• Revoking Object Privileges

■ Object Privileges

SELECT * FROM DBA_TAB_PRIVS;SELECT * FROM DBA_TAB_PRIVS;

SELECT * FROM DBA_COL_PRIVS;SELECT * FROM DBA_COL_PRIVS;

REVOKE execute ON dbms_pipe FROM scott;REVOKE execute ON dbms_pipe FROM scott;

Page 144: Oracle8i Administration

144

• Define your purpose of auditing– 의심스러운 database activity– historical information 수집

• audit 하고자 하는 것을 정의– users, statements, objects– By session– Successful or unsuccessful

• audit trail 관리– audit trail 의 growth 를 모니터– 권한이 없는 접근으로부터 audit trail 보호

• Auditing Categories– Auditing privileged operations

• Instance startup, shutdown, SYSDBA connections– Database auditing

• 특정 database activities 에 대한 data 를 모니터하거나 수집하기 위해 사용• column values 를 기록할 수 없다 .• enabled by DBA

– Value-based or application auditing• code 를 통해 구현• column values 를 기록• table 에 대한 변경 사항을 track 하기 위해 사용

■ Auditing Guidelines

Page 145: Oracle8i Administration

145

• Database Auditing

■ Using Database Auditing

parameterfile

ServerProcessServerProcess

DBADBA UserUser

OS audittrail

Audit option

Audit trailDatabase

Execute command

Generateaudit trail

Enable databaseauditing

Specifyaudit options

Reviewaudit

Information

Page 146: Oracle8i Administration

146

• Enabling Auditing Options– Statement auditing

– Privilege auditing

– Schema object auditing

• Viewing Auditing Options

■ Using Database Auditing

AUDIT user;AUDIT user;

AUDIT select any table BY summit BY ACCESS;AUDIT select any table BY summit BY ACCESS;

AUDIT LOCK ON summit.employeeBY ACCESS WHENEVER SUCCESSFUL;AUDIT LOCK ON summit.employeeBY ACCESS WHENEVER SUCCESSFUL;

Data Dictionary view Description

ALL_DEF_AUDIT_OPTS Default audit options

DBA_STMT_AUDIT_OPTS Statement auditing options

DBA_PRIV_AUDIT_OPTS Privileges auditing options

DBA_OBJ_AUDIT_OPTS Schema object auditing options

Page 147: Oracle8i Administration

147

• Viewing Auditing Results

■ Viewing Auditing Results

Audit Trail View Description

DBA_AUDIT_TRAIL 모든 audit trail entries

DBA_AUDIT_EXISTS AUDIT EXISTS/NOT EXISTS 를 기록

DBA_AUDIT_OBJECT 연결된 schema objects 를 기록

DBA_AUDIT_SESSION 모든 connect and disconnect entries

DBA_AUDIT_STATEMENT Statement auditing records

Page 148: Oracle8i Administration

Lesson 19Managing Roles

Page 149: Oracle8i Administration

149

• What is a Role?– users or other roles 에 할당된 related privileges 의 집합

• Role Characteristics– system privileges grant or revoke 명령어를 이용하여 role 을 grant or

revoke– system and object privileges 로 구성될 수 있음– enable and disable– 각 role 의 이름은 unique– role 에 대한 설명이 data dictionary 에 저장

• Role 의 이점– privileges 관리를 간소화– role 이 수정되면 role 이 할당된 모든 users 의 privileges 가 수정 (Dynamic

privilege management)– Selective availability of privileges– OS command or utilities 를 이용하여 users 에게 role 을 할당– No cascading revoke– Improve performance

■ Overview

Page 150: Oracle8i Administration

150

• Creating Roles

• Using Predefined Roles

■ Creating and Modifying Roles

CREATE ROLE sales_clerk;CREATE ROLE sales_clerk;

CREATE ROLE hr_clerk IDENTIFIED BY bonus;CREATE ROLE hr_clerk IDENTIFIED BY bonus;

Role Name Description

CONNECT, RESOURCE backward compatibility 를 위해 제공

DBA WITH ADMIN OPTION 모든 system privileges

EXP_FULL_DATABASE database export 을 위한 privileges

IMP_FULL_DATABASE database import 를 위한 privileges

DELETE_CATALOG_ROLE data dictionary tables 에 대한 delete privileges

EXECUTE_CATALOG_ROLE data dictionary tables 에 대한 execute privileges

SELECT_CATALOG_ROLE data dictionary tables 에 대한 select privileges

Page 151: Oracle8i Administration

151

• Modifying Roles

■ Creating and Modifying Roles

ALTER ROLE sales_clerkIDENTIFIED BY commission;ALTER ROLE sales_clerkIDENTIFIED BY commission;

ALTER ROLE hr_clerkIDENTIFIED EXTERNALLY;ALTER ROLE hr_clerkIDENTIFIED EXTERNALLY;

ALTER ROLE hr_managerNOT IDENTIFIED;ALTER ROLE hr_managerNOT IDENTIFIED;

■ Assigning Roles

GRANT sales_clerk TO scott;GRANT sales_clerk TO scott;

GRANT hr_manager TO scottWITH ADMIN OPTION;GRANT hr_manager TO scottWITH ADMIN OPTION;

Page 152: Oracle8i Administration

152

• Establishing Default Roles– user 는 많은 assigned roles 을 가질 수 있다 .– user 가 log on 시 자동적으로 enabled 된 roles 를 default role 이라 함– user 에게 할당된 모든 roles 은 user 가 log on 시 enable

• Enabling and Disabling Roles– user 로 부터 role 을 임시적으로 revoke 하기 위해 role 을 disable– role 을 임시적으로 grant 하기 위해 enable– SET ROLE command 를 이용하여 enable and disable– Default role 은 user 가 log on 시 enable– password 는 role 을 enable 하기 위해 요구될 수 있다 .

■ Controlling Availability of Roles

ALTER USER scottDEFAULT ROLE hr_clerk, sales_clerk;ALTER USER scottDEFAULT ROLE hr_clerk, sales_clerk;

ALTER USER scott DEFAULT ROLE ALL;ALTER USER scott DEFAULT ROLE ALL;

ALTER USER scott DEFAULT ROLE NONE;ALTER USER scott DEFAULT ROLE NONE;

Page 153: Oracle8i Administration

153

• Enabling and Disabling Roles: Examples

• Removing Roles from Users

• Removing Roles

■ Controlling Availability of Roles

SET ROLE hr_clerk;SET ROLE hr_clerk;

SET ROLE sales_clerk IDENTIFIED BY commission;SET ROLE sales_clerk IDENTIFIED BY commission;

SET ROLE NONE;SET ROLE NONE;

REMOVE sales_clerk FROM scott;REMOVE sales_clerk FROM scott;

REMOVE hr_manager FROM PUBLIC;REMOVE hr_manager FROM PUBLIC;

DROP ROLE hr_manager;DROP ROLE hr_manager;

Page 154: Oracle8i Administration

154

• Displaying Role Information

■ Displaying Role Information

Role View Description

DBA_ROLES database 에 존재하는 모든 roles

DBA_ROLE_PRIVS users and roles 에 부여된 roles

ROLE_ROLE_PRIVS roles 에 부여된 roles

DBA_SYS_PRIVS users and roles 에 부여된 system privileges

ROLE_SYS_PRIVS roles 에 부여된 system privileges

ROLE_TAB_PRIVS roles 에 부여된 table privileges

SESSION_ROLES concurrently enabled roles

SELECT role, password_required FROM dba_roles;SELECT role, password_required FROM dba_roles;

Page 155: Oracle8i Administration

Lesson 20Using National Language

Support

Page 156: Oracle8i Administration

156

• NLS(National Language Support) Features– database utilities, error messages, sort order, date, time, monetary, numeric, an

d calendar convention 을 자동적으로 native language 로 변환할 수 있도록 함– language-dependent operations 은 client and server 측 환경 변수와 파라미터에

의해 제어– client 와 server 가 다른 character set 을 사용할 때 , Oracle server 가

자동적으로 변환

■ Overview

Page 157: Oracle8i Administration

157

• different classes of character encoding schemes– single-byte character sets

• 7-bit• 8-bit

– Varying-width multibyte character set– Fixed-width multibyte character set– Unicode(UTF8, AL24UTFFSS)

• Character Sets and National Character Sets of a Database

• Guidelines– 가장 연관된 database character set 과 national character set 을 선택– String operations 은 fixed-width character set 을 선택하면 빨라짐– 공간 효율을 위해 variable-width character set 을 사용

■ Choosing a Database and a National Character Set

Database Character Sets National Character Sets

creation 시 정의 creation 시 정의

변경 안됨 변경 안됨CHAR, VARCHAR2, CLOB, LONG data type store

NCHAR, NVARCHAR2, NCLOB data type store

varying-width character setsfixed-width and varying-width multibyte character sets

Page 158: Oracle8i Administration

158

• NLS parameter 를 지정하기 위한 방법– 서버 측 initialization parameter– client 에 대한 environment variables– ALTER SESSION command

• Specifying Language-Dependent Behavior for the Server– NLS_LANGUAGE

• messages 에 대한 language• Day and month names• A.D, B.C, A.M, P.M 에 대한 symbol• default sorting mechanism

– NLS_TERRITORY• default date format• decimal character and group separator• local currency symbol• ISO currency symbol• ISO week number calculation• week start day

■ Specifying Language-Dependent Behavior

Page 159: Oracle8i Administration

159

• Specifying Language-Dependent Behavior for the Session– Environment variable

– 다른 환경 변수• NLS_DATE_FORMAT• NLS_DATE_LANGUAGE• NLS_SORT• NLS_NUMERIC_CHARACTERS• NLS_CURRENCY• NLS_ISO_CURRENCY• NLS_CALENDAR

■ Specifying Language-Dependent Behavior

NLS_LANG=<language>_<territory>.<character>NLS_LANG=<language>_<territory>.<character>

ALTER SESSION SETNLS_DATE_FORMAT=‘DD.MM.YYYY’;ALTER SESSION SETNLS_DATE_FORMAT=‘DD.MM.YYYY’;

DBMS_SESSION.SET_NLS(‘NLS_DATE_FORMAT’, ’ ’ ’DD.MM.YYYY’ ’ ’);DBMS_SESSION.SET_NLS(‘NLS_DATE_FORMAT’, ’ ’ ’DD.MM.YYYY’ ’ ’);

Page 160: Oracle8i Administration

160

• Sorting– linguistic sort 제공– NLS_SORT 파리미터는 sort 의 유형을 지정– NLSSORT function 은 linguistic comparison 을 나타냄

• Using NLS Parameters in SQL Functions

■ NLS Parameters and SQL Functions

ALTER SESSION SET NLS_SORT=GERMAN;SELECT letter FROM letters ORDER BY letter;ALTER SESSION SET NLS_SORT=GERMAN;SELECT letter FROM letters ORDER BY letter;

SELECT TO_CHAR(hiredate, ‘DD.MON.YYYY’,‘NLS_DATE_LANGUAGE=GERMAN’) FROM emp;SELECT TO_CHAR(hiredate, ‘DD.MON.YYYY’,‘NLS_DATE_LANGUAGE=GERMAN’) FROM emp;

SELECT ename, TO_CHAR(sal, ‘9G999D99’,‘NLS_NUMERIC_CHARACTERS=‘ ‘,.’ ’’)FROM emp;

SELECT ename, TO_CHAR(sal, ‘9G999D99’,‘NLS_NUMERIC_CHARACTERS=‘ ‘,.’ ’’)FROM emp;

Page 161: Oracle8i Administration

161

• Linguistic indexing

• High performance with local sorting

• NLS_COMP parameter for linguistic comparisons

■ Linguistic Index Support

CREATE INDEX nls_ename ON emp (NLSSORT(ename, ‘NLS_SORT = GERMAN’));CREATE INDEX nls_ename ON emp (NLSSORT(ename, ‘NLS_SORT = GERMAN’));

• Data 는 import 동안 NLS_LANG 에서 database character set 을 변환

• Loader

– Conventional: Data 는 NLS_LANG 에 지정된 session character set 으로 변환

– DIRECT: Data 는 직접 database character set 으로 변환

■ Importing and Loading Data Using NLS

Page 162: Oracle8i Administration

162

• Obtaining Information About Character Sets– NLS_DATABASE_PARAMETERS

• PARAMETER(NLS_CHARACTERSET, NLS_NCHAR_CHARACTERSET)• VALUE

• Obtaining Information About NLS Settings– NLS_INSTANCE_PARAMETERS

• PARAEMETER• VALUE

– NLS_SESSION_PARAMETERS• PARAMETER• VALUE

■ Obtaining Information About NLS Settings

SELECT parameter, value FROM nls_database_parametersWHERE parameter LIKE ‘%CHARACTERSET%’;SELECT parameter, value FROM nls_database_parametersWHERE parameter LIKE ‘%CHARACTERSET%’;

SELECT * FROM nls_instance_parameters;SELECT * FROM nls_instance_parameters;

SELECT * FROM v$nls_valid_valuesWHERE parameter=‘LANGUAGE’;SELECT * FROM v$nls_valid_valuesWHERE parameter=‘LANGUAGE’;

SELECT * FROM v$nls_parameters;SELECT * FROM v$nls_parameters;