C:\>SQLPLUS /NOLOG
SQL*Plus: Release 9.2.0.1.0 - Production on 금 Apr 18 14:19:24 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> CONN SYS/ORACLE AS SYSDBA
연결되었습니다.
SQL> SELECT GROUP#, SEQUENCE#,ARCHIVED, MEMBERS, STATUS
2 FROM V$LOG;
GROUP# SEQUENCE# ARC MEMBERS STATUS
---------- ---------- --- ---------- ----------------
1 92 NO 2 CURRENT
2 90 YES 1 INACTIVE
3 91 YES 1 INACTIVE
SQL> SAVE GROUP
file GROUP.sql(이)가 생성되었습니다
SQL> @MEMBER
GROUP# MEMBER STATUS
---------- ---------------------------------------- -------
3 C:\ORACLE\ORADATA\ORCL1\REDO03.LOG STALE
2 C:\ORACLE\ORADATA\ORCL1\REDO02.LOG
1 C:\ORACLE\ORADATA\ORCL1\REDO01.LOG
1 C:\ORACLE\ORADATA\ORCL1\REDO01A.LOG
SQL> @GROUP
GROUP# SEQUENCE# ARC MEMBERS STATUS
---------- ---------- --- ---------- ----------------
1 92 NO 2 CURRENT
2 90 YES 1 INACTIVE
3 91 YES 1 INACTIVE
그룹추가.
SQL> ALTER DATABASE ADD LOGFILE GROUP 4 'C:\ORACLE\ORADATA\ORCL1\REDO03A.LOG' SIZE 10M;
데이타베이스가 변경되었습니다.
SQL> @GROUP
GROUP# SEQUENCE# ARC MEMBERS STATUS
---------- ---------- --- ---------- ----------------
1 92 NO 2 CURRENT
2 90 YES 1 INACTIVE
3 91 YES 1 INACTIVE
4 0 YES 1 UNUSED
SQL> ALTER SYSTEM SWITCH LOGFILE;
시스템이 변경되었습니다.
SQL> ALTER DATABASE ADD LOGFILE GROUP 5
('C:\ORACLE\ORADATA\ORCL\REDO05A.LOG','C:\ORACLE\ORADATA\OR
CL1\REDO05B.LOG') SIZE 10M;
데이타베이스가 변경되었습니다.
SQL> @GROUP
GROUP# SEQUENCE# ARC MEMBERS STATUS
---------- ---------- --- ---------- ----------------
1 92 YES 2 ACTIVE
2 90 YES 1 INACTIVE
3 91 YES 1 INACTIVE
4 93 NO 1 CURRENT
5 0 YES 2 UNUSED
SQL> @MEMBER
GROUP# MEMBER STATUS
---------- ---------------------------------------- -------
3 C:\ORACLE\ORADATA\ORCL1\REDO03.LOG
2 C:\ORACLE\ORADATA\ORCL1\REDO02.LOG
1 C:\ORACLE\ORADATA\ORCL1\REDO01.LOG
1 C:\ORACLE\ORADATA\ORCL1\REDO01A.LOG
4 C:\ORACLE\ORADATA\ORCL1\REDO03A.LOG
5 C:\ORACLE\ORADATA\ORCL1\REDO05A.LOG
5 C:\ORACLE\ORADATA\ORCL1\REDO05B.LOG
SQL> ALTER SYSTEM SWITCH LOGFILE\REDO05B.LOG
메모장 열어서 파일 손상후
C:\oracle\oradata\ORCL1
SQL> STARTUP FORCE
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL> @GROUP
GROUP# SEQUENCE# ARC MEMBERS STATUS
---------- ---------- --- ---------- ----------------
1 97 YES 2 INACTIVE
2 95 YES 1 INACTIVE
3 96 YES 1 INACTIVE
4 98 NO 1 CURRENT
5 94 YES 2 INACTIVE
SQL> @MEMBER
GROUP# MEMBER STATUS
---------- ---------------------------------------- -------
3 C:\ORACLE\ORADATA\ORCL1\REDO03.LOG
2 C:\ORACLE\ORADATA\ORCL1\REDO02.LOG
1 C:\ORACLE\ORADATA\ORCL1\REDO01.LOG STALE(불안정)
1 C:\ORACLE\ORADATA\ORCL1\REDO01A.LOG STALE
4 C:\ORACLE\ORADATA\ORCL1\REDO03A.LOG
5 C:\ORACLE\ORADATA\ORCL1\REDO05A.LOG
5 C:\ORACLE\ORADATA\ORCL1\REDO05B.LOG INVALID
7 개의 행이 선택되었습니다.
스테일 파일은 몇번 스위치해주면 다시 안정을 찾는다.
파일이 없거나 이상징후가 있으면 보고 해주는 파일
C:\oracle\admin\ORCL1\bdump\........
맴버 삭제 명령, 그룹 삭제시 주의 사항
1.맴버든 그룹이든 CURRENT REDO LOG FILE은 삭제 불가능
2.하나의 그룹에 MEMBER가 1개 남았을 경우 MEMBER 삭제명으로 지울수 없다.
SQL> ALTER DATABASE DROP LOGFILE MEMBER 'C:\ORACLE\ORADATA\ORCL1\REDO05B.LOG';
데이타베이스가 변경되었습니다.
SQL> ALTER DATABASE DROP LOGFILE GROUP 5;
데이타베이스가 변경되었습니다.
DROP명령으로 삭제를 하더라도 컴퓨터에는 남아 있다 . OS에 들어가서 직접 삭제해야한다.
Datafile
데이터 파일은 미러 하지 않는다.(용량이 커서?)
Database
|
*
tablespace ------* Datafile
|
*
segment ------* O.S block
| | (운영체제의 블락사이즈) 1byte짜리 파일 만들기
* |
extent |
| |
* |
block-----------
하나의 데이타베이스는 여러개의 테이블 스페이스를 가지고..........이런식
tablespace 물리적 파일(Datafile)을 여러개로 묶어서 사용
시스템에서 가장 중요한 일을 처리하는 SYS관리자만 사용가능
용량 : Mega -> Giga -> Tera -> Peta
segment - 저장공간을 가지는것(index segment,,,,등등 물리적단위)비유 : 아파트
테이블스페이스 안에는 다양한 segment가 올수있다.
extent : 공간 할당의 최소단위 extent(연속적으로 할당되는 공간을 말한다.)비유 : 아파트 1동,2동
block - 물리적인 단위로 저장되는 (사람)
TableSpace 실제 공간이 저장될 수있는 공간
- SYSTEM TABLESPACE -> 1. DATA DICTIONARY저장이 되어있다.
2. SYSTEM UDMO SEGMENT
3 . DB 저장안되어있으나 성능상 안된다.
예제 )SELECT NAME FROM V$TABLE SPACE;
SQL> SELECT NAME FROM V$TABLESPACE;
NAME
------------------------------
CWMLITE
DRSYS
EXAMPLE
INDX
ODM
SYSTEM
TOOLS
UNDOTBS1
USERS
XDB
TEMP
11 개의 행이 선택되었습니다.
SQL> DESC DBA_DATA_FILES
이름 널? 유형
----------------------------------------- -------- ---------------------
FILE_NAME VARCHAR2(513)
FILE_ID NUMBER
TABLESPACE_NAME VARCHAR2(30)
BYTES NUMBER
BLOCKS NUMBER
SQL> SELECT TABLESPACE_NAME, FILE_NAME FROM DBA_DATA_FILES;
TABLESPACE_NAME
------------------------------
FILE_NAME
------------------------------------------------------------
SYSTEM
C:\ORACLE\ORADATA\ORCL1\SYSTEM01.DBF
UNDOTBS1
C:\ORACLE\ORADATA\ORCL1\UNDOTBS01.DBF
CWMLITE
C:\ORACLE\ORADATA\ORCL1\CWMLITE01.DBF
TABLESPACE_NAME
------------------------------
FILE_NAME
------------------------------------------------------------
DRSYS
C:\ORACLE\ORADATA\ORCL1\DRSYS01.DBF
EXAMPLE
C:\ORACLE\ORADATA\ORCL1\EXAMPLE01.DBF
INDX
C:\ORACLE\ORADATA\ORCL1\INDX01.DBF
- NONSYSTEM TABLESPACE
TABLESPACE 생성
SQL> CREATE TABLE TEST
2 (ID NUMBER(4),
3 NAME VARCHAR2(20))
4 ;
테이블이 생성되었습니다.
SQL> DESC USER_TABLES
SQL> SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TABLES;
SQL> CREATE TABLE TEST
2 (ID NUMBER(4),
3 NAME VARCHAR2(20))
4 TABLESPACE APP_DATA; (테이블 스페이스)
테이블이 생성되었습니다.
SQL> SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TABLES;
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
BONUS SYSTEM
DEPARATMENT SYSTEM
DEPT SYSTEM
DUMMY SYSTEM
EMP SYSTEM
EMPLOYEES SYSTEM
GUGU1 SYSTEM
GUGU2 SYSTEM
LOG_TABLE SYSTEM
SALGRADE SYSTEM
TEST APP_DATA
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
TOP_DOGS SYSTEM
VEMP SYSTEM
13 개의 행이 선택되었습니다.
테이블을 생성하면 적어도 한개의 0번 EXTENT가 할당된다.(물리적)
SQL> DESC DBA_EXTENTS ----------- (SYS)
이름 널? 유형
----------------------------------------- -------- ----------------------------
OWNER VARCHAR2(30)
SEGMENT_NAME VARCHAR2(81)
PARTITION_NAME VARCHAR2(30)
SEGMENT_TYPE VARCHAR2(18)
TABLESPACE_NAME VARCHAR2(30)
EXTENT_ID NUMBER
FILE_ID NUMBER
BLOCK_ID NUMBER
BYTES NUMBER
BLOCKS NUMBER
RELATIVE_FNO NUMBER
SQL> COL SEGMENT_NAME FORMAT A15
SQL> SELECT SEGMENT_NAME, EXTENT_ID, BLOCKS,OWNER FROM DBA_EXTENTS WHERE SEGMENT_NAME = 'TEST';
SEGMENT_NAME EXTENT_ID BLOCKS OWNER
--------------- ---------- ---------- ------------------------------
TEST 0 8 SCOTT
SQL> SAVE EXT
file EXT.sql(이)가 생성되었습니다
0번 EXTENT가 꽉차게되면 1번 EXTENT를 할당한다.
데이터를 넣어 채워 보자. 스캇으로! 명령은 SYS로
SQL> CONN SCOTT/TIGER
연결되었습니다.
SQL> INSERT INTO TEST VALUES(1,'ABC');
1 개의 행이 만들어졌습니다.
SQL> INSERT INTO TEST SELECT * FROM TEST;
1 개의 행이 만들어졌습니다.
SQL> /
2 개의 행이 만들어졌습니다.
SQL> /
4 개의 행이 만들어졌습니다.
SQL> /
8 개의 행이 만들어졌습니다.
SQL> @EXT
SEGMENT_NAME
--------------------------------------------------------------------------------
EXTENT_ID BLOCKS OWNER
---------- ---------- ------------------------------
TEST
0 8 SCOTT
SQL> @EXT
SEGMENT_NAME
--------------------------------------------------------------------------------
EXTENT_ID BLOCKS OWNER
---------- ---------- ------------------------------
TEST
0 8 SCOTT
TEST
1 8 SCOTT
1 . FILE 크기 증가
SQL> ALTER DATABASE DATAFILE 'C:\oracle\oradata\ORCL1\APP_DATA01.DBF' RESIZE 20M;
데이타베이스가 변경되었습니다.
2. 또다른 DATA 파일 추가
SQL>ALTER TABLESPACE APP_DATA ADD DATAFILE 'C:\oracle\oradata\ORCL1\APP_DATA02.DBF' SIZE 20M;
테이블 영역이 변경되었습니다.
3.조회
SQL> SELECT TABLESPACE_NAME,FILE_NAME FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='APP_DATA';
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
APP_DATA
C:\ORACLE\ORADATA\ORCL1\APP_DATA01.DBF
APP_DATA
C:\ORACLE\ORADATA\ORCL1\APP_DATA02.DBF
SQL> ROLLBACK (SCOTT)
2 ;
롤백이 완료되었습니다.
SQL> SELECT * FROM TEST;
선택된 레코드가 없습니다.
SQL>
추가된 파일 삭제
SQL> SELECT FILE_ID , EXTENT_ID FROM DBA_EXTENTS WHERE SEGMENT_NAME = 'TEST';
FILE_ID EXTENT_ID
---------- ----------
11 0 FILE_ID = 파일번호
11 1 EXTENT_ID = 익스텐트번호
TRUNCATE 과다하게 활당된 쓰지않는 EXTENT를 삭제한다.
SQL> TRUNCATE TABLE TEST;
테이블이 잘렸습니다. ---- (SCOTT);
SQL> SELECT FILE_ID , EXTENT_ID FROM DBA_EXTENTS WHERE SEGMENT_NAME = 'TEST';
FILE_ID EXTENT_ID
---------- ----------
11 0 (SYS)
해당 데이타스페이스에 특정 파일 삭제 (ORACLE 10G부터가능)
해당 DATAFILE에 할당된 EXTENT가 없을경우 삭제 가능
SQL> ALTER TABLESPACE APP_DATA DROP DATAFILE 'C:\oracle\oradata\ORCL1\APP_DATA02.DBF';
TABLE
SCOTT으로
SQL> CREATE TABLE T1
2 (ID NUMBER(4))
3 TABLESPACE APP_DATA
4 STORAGE ---익스텐즈의 크기를 얼마로 줄것인가...
5 (INITIAL 64K ---익스텐즈 처음 크기를 얼마나
6 NEXT 64K ---그다음 값
7 MINEXTENTS 1 ---최소 익스텐츠 (못해도 딱한개는 만들어야된다)
8 MAXEXTENTS 100 ---최대 익스텐츠 최대 100개까지 쓸래! 100대신 UnLimited(무한대)
9 PCTINCREASE 50); ---3번째 부터는이전에 것에 50% 증가한값
테이블이 생성되었습니다.
'Programing > Oracle' 카테고리의 다른 글
Oracle - (0) | 2008.07.29 |
---|---|
Oracle - USER TABLE (0) | 2008.07.29 |
Oracle - LGWR (0) | 2008.07.29 |
Oracle - Control file (0) | 2008.07.29 |
Oracle - 관리자계정 "SYS" (0) | 2008.07.29 |