-- 중복행의 제거
select distinct job -- distinct 중복행을 제거하고 오름차순으로 정렬하여 보여준다.
from emp
where deptno=30;

select distinct deptno, job
from emp;

'Program... > Oracle' 카테고리의 다른 글

Oracle 날짜 표시  (0) 2009.03.13
Oracle 비교연산자  (0) 2009.03.13
Oracle 연결 연산자  (0) 2009.03.13
Oracle 산술 표현식  (0) 2009.03.13
Oracle 계정관리 및 복구 & 백업  (0) 2009.03.13
Posted by Duritz

-- 연결연산자
select '나의 이름은 홍길동 현재나이' || 26 || '세 입니다.'
from dual; -- 문자열과 숫자열을 나열할때는 || 를 사용한다.

select '현재 시각은' || sysdate || '입니다.' from dual; -- sysdate는 컴퓨터의 시간을 표시

'Program... > Oracle' 카테고리의 다른 글

Oracle 비교연산자  (0) 2009.03.13
Oracle 중복행 제거  (0) 2009.03.13
Oracle 산술 표현식  (0) 2009.03.13
Oracle 계정관리 및 복구 & 백업  (0) 2009.03.13
ER-WIN 사용방법  (0) 2009.03.13
Posted by Duritz

-- 산술 표현식 정리
select 5+2, 5-2, 5*2, 5/2 from dual; -- 산술표현식을 출력한다.

select 5/2, floor(5/2), mod(5,2)
from dual; -- floor(계산을 했을때 몫을 표시), mod(나머지 표시)

select floor(2.5), ceil(2.5)
from dual; -- floor(해당숫자보다 작은 최대의정수), ceil(해당숫자보다 큰 최소의 정수)

select 0, 5+null, 5*null, 5-null, 5/null
from dual; -- null(존재하지 않는값으로 연산에 추가되면 무조건 null출력)

select ename, sal, comm
from emp;

select ename, sal, comm, sal+comm
from emp;

select null, nvl(null, 0), nvl(null, 'null이군요') -- nvl(x,y) : x의 결과물이 null이라면 y로 나타내라
from dual;

select ename, sal, comm, sal+nvl(comm, 0) -- comm이 null 일때 sal과 sal의 합을 구한다.
from emp;

select ename "사원명", sal, comm, sal*12+nvl(comm, 0) "연봉" -- comm이 null 일때 sal과 sal의 합을 구한다.
from emp; -- column명 as "별칭" (as는 생략가능) (" "도 생략가능하나 공백이 있으면 ""를 해야한다):alias(별칭)

select ename, sal*12+nvl(comm,0) "연봉",
       nvl2(comm, sal*12+comm, sal*12) "연봉2",
       -- nvl2(x,y,z) : x의 값이 null이 아니라면 y의 수식을 나타내고, null이라면 z의 수식을 나타내라
       coalesce(sal*12+comm, sal*12, 0) "연봉3"
       -- coalesce(x,y,z) : x의 값이 null이라면 y로 나타내고, y마저 null이라면 z로 나타태라
from emp;

'Program... > Oracle' 카테고리의 다른 글

Oracle 중복행 제거  (0) 2009.03.13
Oracle 연결 연산자  (0) 2009.03.13
Oracle 계정관리 및 복구 & 백업  (0) 2009.03.13
ER-WIN 사용방법  (0) 2009.03.13
DB 논리적 모델링 (용어해설)  (0) 2009.03.13
Posted by Duritz

  [ 백업/복구 및 계정생성 ]


1. 계정 관리 (SQL-PLUS)
  (1) 생성
  
     <1> 사용자 생성
       SQL>CONN SYSTEM/pwd       -- DBA Role이 있는 유저로 접속합니다.
       SQL>CREATE USER TEST IDENTIFIED BY TEST;    -- USER를 다시 생성합니다.

     <2> 접근
       SQL> CONN TEST/TEST - 연결 실패!!

       SQL> CONN SYSTEM/pwd   -- 권한 부여기능이 있는 유저로 접속
       SQL> GRANT connect, resource TO TEST; -- 권한 부여
       SQL> CONN TEST/TEST - 연결 성공!!
 
     <3> 확인
       SQL> CONN SYSTEM/pwd
       SQL> SELECT username, default_tablespace, temporary_tablespace FROM DBA_USERS;


   (2) 수정
     <1> 접속
       SQL>CONN SYSTEM/pwd       -- SYSTEM USER로 접속

     <2> 비밀번호 수정
       SQL>ALTER USER scott IDENTIFIED BY lion;    -- scott USER의 비밀번호 수정
 
     <3> 수정된 계정으로 연결 확인 
       SQL>conn scott/lion    

     <4> 원래 비번으로 다시 수정
       SQL>ALTER USER scott IDENTIFIED BY tiger;  -- scott USER의 비밀번호 원래값으로 수정


   (3) 삭제
     <1> 접속
        SQL>CONN SYSTEM/pwd

     <2> 삭제
        SQL> DROP USER test CASCADE;

     <3> 확인
        SQL>CONN SYSTEM/pwd
        SQL> SELECT username, default_tablespace, temporary_tablespace FROM DBA_USERS;


2. 백업 및 복구 (도스 컨솔) 
  (1) 백업

    <1> 전체 데이터베이스 [ Full Level Export ]
      C:\>exp  userid=system/pwd  file='C:\SOO\ORACLE\day11\dump1.dmp'   full=y

    <2> 특정 사용자 [ User Level Export ]
      C:\>exp scott/tiger file='C:\SOO\ORACLE\day11\dump2.dmp'
      또는,
      C:\>exp userid=system/pwd owner=scott  file='C:\SOO\ORACLE\day11\dump2_1.dmp'

    <3> 선택된 테이블 [Table Level Export]
      C:\>exp userid=system/pwd file='C:\SOO\ORACLE\day11\dump3.dmp' tables=(scott.EMP, scott.DEPT) //잘 안됨
      또는
      C:\>exp userid=scott/tiger file='C:\SOO\ORACLE\day11\dump3_1.dmp' tables=(EMP, DEPT) log=exp.log


 
  (2) 복구 
   
     <1> 전체 데이터베이스 [ Full Level Import ]
       C:\>imp userid=system/pwd file='C:\SOO\ORACLE\day11\dump1.dmp'  full=y


     <2> 특정 사용자 [ User Level Import ]
       C:\>imp userid=scott/tiger file='C:\SOO\ORACLE\day11\dump2.dmp'

     <3> 다른 사용자에게 IMPORT [ User Level Import ]
       ==> scott유저의 데이터를 EXPORT받아서 test 유저에게 IMPORT하는 예

       C:\>exp userid=system/pwd file='C:\SOO\ORACLE\day11\scott.dmp' owner=scott
       C:\>imp userid=system/pwd file='C:\SOO\ORACLE\day11\scott.dmp' fromuser=scott touser=test   

 

     

 

   cf) 추천사이트  : http://www.oracleclub.com/ -> 오라클 강좌

'Program... > Oracle' 카테고리의 다른 글

Oracle 연결 연산자  (0) 2009.03.13
Oracle 산술 표현식  (0) 2009.03.13
ER-WIN 사용방법  (0) 2009.03.13
DB 논리적 모델링 (용어해설)  (0) 2009.03.13
Tablespace 오류복구  (0) 2009.03.13
Posted by Duritz

'Program... > Oracle' 카테고리의 다른 글

Oracle 산술 표현식  (0) 2009.03.13
Oracle 계정관리 및 복구 & 백업  (0) 2009.03.13
DB 논리적 모델링 (용어해설)  (0) 2009.03.13
Tablespace 오류복구  (0) 2009.03.13
오라클 백업복구  (0) 2009.03.13
Posted by Duritz

'Program... > Oracle' 카테고리의 다른 글

Oracle 계정관리 및 복구 & 백업  (0) 2009.03.13
ER-WIN 사용방법  (0) 2009.03.13
Tablespace 오류복구  (0) 2009.03.13
오라클 백업복구  (0) 2009.03.13
물리적인 DB관리 (2)  (0) 2009.03.13
Posted by Duritz

SQL> shutdown immediate;

SQL> startup mount;

SQL> alter database datafile 'C:\oracle\oradata\EDMS\TS_DDIMS52_IDX.dbf' offline
 drop;

SQL> alter database open;

데이타베이스가 변경되었습니다.

SQL> shutdown immediate;
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.

SQL> drop tablespace TS_DDIMS52_IDX;

테이블 영역이 삭제되었습니다.

SQL>

'Program... > Oracle' 카테고리의 다른 글

ER-WIN 사용방법  (0) 2009.03.13
DB 논리적 모델링 (용어해설)  (0) 2009.03.13
오라클 백업복구  (0) 2009.03.13
물리적인 DB관리 (2)  (0) 2009.03.13
물리적인 DB관리 (1)  (0) 2009.03.13
Posted by Duritz

오라클(oracle) 백업(exp), 복구(imp) 하기 

Export와 Import는 가장 유용하게 그리고 자주 사용되는 백업관련 DBA ToolKit 입니다.


SQL*Loader는 외부 데이터를 오라클 서버로 업로드 하는 역할을 수행 하지만 Export/Import는 오라클 서버의 데이터를 다른 오라클 서버(이때 플랫폼과는 무관하다. 예를 들어 윈도우용 오라클에서 Export 받은 파일을 Unix/Linux 서버 기반의 오라클로 Import 하는것이 가능하다) 또는 같은 서버의 다른 사용자로 Import 하는 것이 가능 하다.
먼저 Export부터 그 사용법에 대해 알아 보기로 하자.

1. Export
- EXport는 데이터베이스의 논리적인 백업을 제공 한다. 즉 테이블, 데이블스페이스, 데이터를 포함한 사용자, 그리고 사용자가 만든 스키마 오브젝트(Index, View, Synonym, Trigger, DataBase Link, sequence, stored code 등등)등을 백업 받을 수 있는 것이다.

- Export 유틸리티의 Output은 export dump 파일 이다. 이 파일은 import Utility를 통해 읽혀져 다른 데이터베이스등으로 복구 되는 것이다.

- Export 파라미터
많은 파라미터중 UserID라는 파라미터는 꼭 가져야 한다는 것을 기억 하자. Exp 명령 입력하고 아무 파라미터도 주지 않는 경우 기본(Default) 값을 제공하면서 입력을 위한 프롬프트를 보여준다.(이때 사용자 ID와 ORD)는 반드시 입력해야 한다.

USERID : username/password를 값으로 입력 한다. 반드시 입력해야 한다. 만약 전체 데이터베이스를 백업 받기 위해 서는 기술된 User는 명시적으로 exportfull database 롤(Role)을 부여 받아야 한다.

 


FILE : 출력 파일의 이름(Export후 생기는 dump 파일 이름)

 


ROWS : Export Dump 파일에 테이블 행(데이터) 포함 여부 표시: (Y)es/(N)o 만약 여러분이 테이블 구조만 export하고 실제 row data는 백업을 원하지 않는 경우에는 rows=n 이라고 명시 해야 한다.(default값은 y)

 


Query : 테이블의 특정 부분만을 Export 하기 위해서 사용 한다.
(exp userid=scott/tiger tables=emp query=\"where sal \> 2000 \
-----------------------------------------
Export Mode와 관련된 파라미터

FULL : DataBase 레벨의 Export를 수행할지 여부를 표시, 전체 데이터베이스 익스포트 여부를 표시: (Y)es/(N)o
(exp userid=system/manager full=y)

 


OWNER : Schema Level의 EXport를 수행 할지의 여부를 표시 Export를 원하는 사용자이름을 기술 한다.
(exp userid=system/manager owner=(scott)
TABLES : export할 테이블 테이블 리스트 또는 (Y)es/(N)o
(exp userid=system/manager tables=(emp, dept, salgrade)
(exp userid=system/manager tables=(scott.emp%)
TABLESPACE : export를 원하는 테이블스페이스(TableSpace)를 기술
(exp yserid=system/manager tablespaces = (users) )
-----------------------------------------------------------------------------
INDEXES, CONSTRAINTS, GRANTS, TRIGGERS : Index, Constraints, grant,
triggers등을 export할지의 여부를 지정 (Y)es/(N)o, 기본적으로 앞 4개의 스
키마 오브젝트는 Export 됨
(exp userid=scott/tiger indexes=n constraints=n grants=n triggers=n)

DIRECT : Direct 모드 익스포트 유무 (Y)es/(N)o
INCTYPE : 익스포트 레벨 유형
PARFILE : 파라미터가 명시된 파일의 이름, Export인자들이 많을 경우 별도의 파일로
서 관리 가능
HELP : 대화식 모드에서 익스포트 파라미터 디스플레이 (Y)
LOG : 로깅 메시지를 위한 파일이름을 기술 한다.
CONSISTENT : 익스포트 동안 데이터 갱신시 데이터베이스의 읽기 일관성 뷰 제공
유무: (Y)es/(N)o
BUFFER : 바이트로된 데이터 버퍼 크기: (정수)
COMPRESS : 하나의 익스텐트(Extent)에 모든 데이터를 포함시킬지 명시, (Y)es/(N)o

* Direct Path 익스포트 개념
Direct Path 기능을 사용함으로써 데이터를 훨씬 더 빨리 export할 수 있다.

* Direct-Path 익스포트의 구조
export시 direct 모드의 사용은 파라미터 DIRECT=Y라고 기술함으로써 설정될 수 있다
Direct Path 익스포트는 인스턴스의 다른 자원들과 경쟁하지 않으며 세션에 의해 사용
되는 private area로 데이터베이스 블록을 읽어 들인다.
행들은 전송을 위해 Two-Task Command(TTC) 버퍼로 직접 이동되며 이 TTC 버퍼
내의 데 이터는 Export의 형식으로 되어 있다.

---------------------------------------------------------------
Export의 예 1 : exp 라는 명령만 입력 함으로서 대화식으로 export 처리
---------------------------------------------------------------
D:\backup>exp

Export: Release 9.2.0.1.0 - Production on 일 Jan 11 22:51:41 2004

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


사용자명: scott
암 호:

다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
배열 인출 버퍼 크기 입력: 4096 >

엑스포트 파일: EXPDAT.DMP >

(2)U(사용자), 또는 (3)T(테이블): (2)U >

권한부여 엑스포트 (yes/no): yes >

테이블 데이터 엑스포트 (yes/no): yes >

확장 영역 압축 (yes/no): yes >

KO16MSWIN949 문자 설정과 AL16UTF16 NCHAR 문자 설정에서 엑스포트가 종료되
었습니다

. 스키마 이전 단계의 객체와 작업을 엑스포트합니다\r

. SCOTT 사용자를 위해 외래 함수 라이브러리 이름을 엑스포트합니다
. PUBLIC 유형 동의어 엑스포트 중
. 전용 유형 동의어 엑스포트 중\
. SCOTT 사용자의 객체 유형 정의를 엑스포트 합니다 \r

SCOTT의 객체를 엑스포트하려고 합니다 ...
. 데이터베이스 링크 엑스포트 중
. 순차 번호 엑스포트 중
. 클러스터 정의 엑스포트 중
. SCOTT의 테이블을 엑스포트하려고 합니다 via 규정 경로...
. . 테이블 ADDRBOOK(를)을 엑스포트 중 3 행이 엑스포트됨
. . 테이블 EMP(를)을 엑스포트 중 15 행이 엑스포트됨
......
. 동의어 엑스포트 중
. 뷰 엑스포트 중
. 저장 프로시저 엑스포트 중
. 작업을 엑스포트합니다
. 참조 무결성 제약조건 엑스포트 중
. 트리거 엑스포트 중
. 인덱스유형을 엑스포팅합니다
. 비트맵, 함수, 기능과 확장 가능한 인덱스들을 엑스포트합니다
. 이후 테이블 처리를 엑스포트 중
. 구체화된 뷰 엑스포트 중
. 스냅샷 로그 엑스포트 중
. 작업 대기열을 엑스포트 중
. 리프레쉬 그룹과 자식 엑스포트 중
. 차원을 엑스포트합니다\
. 스키마 이후 단계의 객체와 작업을 엑스포트합니다\r

. 통계를 엑스포트합니다
엑스포트가 경고 없이 정상적으로 종료되었습니다.

D:\backup>dir
D 드라이브의 볼륨: data1
볼륨 일련 번호: 2434-2E50

D:\backup 디렉터리

2004-01-11 11:07p

.
2004-01-11 11:07p
..
2004-01-11 11:08p 51,200 EXPDAT.DMP <-- 이름을 안주면 이 이름으로 생성
1개 파일 51,200 바이트
2 디렉터리 2,185,789,440 바이트 남음

 


---------------------------------------------------------------
Export의 예 2 : SCOTT 계정의 모든 오브젝트를 Export
---------------------------------------------------------------
D:\backup>exp userid=scott/tiger file=scott.dmp
또는 D:\backup>exp userid=system/manager owner=scott file=scott.dmp

Export: Release 9.2.0.1.0 - Production on 일 Jan 11 23:24:38 2004

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


다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
KO16MSWIN949 문자 설정과 AL16UTF16 NCHAR 문자 설정에서 엑스포트가 종료되었습니다
\
. 스키마 이전 단계의 객체와 작업을 엑스포트합니다\r

. SCOTT 사용자를 위해 외래 함수 라이브러리 이름을 엑스포트합니다
. PUBLIC 유형 동의어 엑스포트 중
. 전용 유형 동의어 엑스포트 중\
. SCOTT 사용자의 객체 유형 정의를 엑스포트 합니다 \r

SCOTT의 객체를 엑스포트하려고 합니다 ...
. 데이터베이스 링크 엑스포트 중
. 순차 번호 엑스포트 중
. 클러스터 정의 엑스포트 중
. SCOTT의 테이블을 엑스포트하려고 합니다 via 규정 경로...
. . 테이블 ADDRBOOK(를)을 엑스포트 중 3 행이 엑스포트됨
. . 테이블 EMP(를)을 엑스포트 중 15 행이 엑스포트됨
.......................

엑스포트가 경고 없이 정상적으로 종료되었습니다.

D:\backup>dir
D 드라이브의 볼륨: data1
볼륨 일련 번호: 2434-2E50

D:\backup 디렉터리

2004-01-11 11:24p

.
2004-01-11 11:24p
..
2004-01-11 11:08p 51,200 EXPDAT.DMP
2004-01-11 11:24p 51,200 scott.dmp
2개 파일 102,400 바이트
2 디렉터리 2,185,736,192 바이트 남음

 


---------------------------------------------------------------
Export의 예 3 : scott 계정의 emp, dept 테이블의 구조만 Export
---------------------------------------------------------------
D:\backup>exp userid=scott/tiger tables=(emp, dept) rows=n file=structure.dmp

Export: Release 9.2.0.1.0 - Production on 일 Jan 11 23:29:15 2004

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


다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
KO16MSWIN949 문자 설정과 AL16UTF16 NCHAR 문자 설정에서 엑스포트가 종료되었습니다

경고: 테이블 데이터(행)가 엑스포트 되지 않습니다

지정된 테이블을 엑스포트하려고 합니다 via 규정 경로...
. . 테이블 EMP(를)을 엑스포트 중
. . 테이블 DEPT(를)을 엑스포트 중
엑스포트가 경고 없이 정상적으로 종료되었습니다.

D:\backup>dir
D 드라이브의 볼륨: data1
볼륨 일련 번호: 2434-2E50

D:\backup 디렉터리

2004-01-11 11:29p

.
2004-01-11 11:29p
..
2004-01-11 11:24p 51,200 scott.dmp
2004-01-11 11:29p 4,096 structure.dmp <--------
3개 파일 59,392 바이트
2 디렉터리 2,185,781,248 바이트 남음

---------------------------------------------------------------
Export의 예 4 : 전체 데이터베이스 백업
---------------------------------------------------------------
D:\backup>exp userid=system/manager full=y file=full.dmp

 

========================Import =========================================
2. Import
Import Utility는 Export를 통해 생성된 덤프파일을 읽어 데이터베이스 복구를 진행
한다.

파라미터

USERID : Import를 수행 할 객체의 사용자이름/패스워드
FILE : 입력 파일 이름. Export를 통해 생성된 파일
IGNORE : Import시 테이블이나 인덱스와 같은 스키마 오브젝트는 기본적으로 만들려
고 시도한다. 이때 비록 비어있지만 객체가 이미 존재 한다면 존재함으로 인
한 생성 에러가 나타나는데 이를 무시한다는 의미 이다.(default n)
ROWS : Import시 테이블의 Row를 임포트 할것인지의 여부를 지정
(default y)
TABLES : 임포트시킬 테이블(default y)
INDEXES : 임포트시킬 인덱스(default y)
CONSTRAINTS : Constraint들을 import할 전지의 여부를 표시(default y)
GRANTS : GRANT들을 임포트 할건지의 여부(default y)
INCTYPE : 증분적 임포트 유형 명시. SYSTEM 및 RESTORE 옵션이 있음.
PARFILE : 파라미터 명시 파일, 파라미터등이 많아 복잡한 경우에 사용
HELP : 대화식 모드로 익스포트 파라미터 디스플레이.
LOG : 로그 파일명
INDEXFILE : Index-creation 명령을 수용할 파일 명시.
---------------------------------- Import Mode와 관련된 파라미터
FULL : 전체 데이터베이스를 임포트함.
Schema Level에서는 fromuser, touser를 사용한다.
DBA이거나 import full database role을 부여 받지 않았다면 import를 수행하는 사용
자의 스키마에서만 import를 할 수 있다. 이를 해결하기 위해 fromuser, touser를 사
용 한다.
- FROMUSER : 임포트시킬 객체를 포함하는 스키마 리스트.
- TOUSERS : 사용자의 스키마가 임포트될 사용자 리스트 명시.
Table level에서는 tables 파라미터를 사용한다.
- Tables : 기술된 테이블들이 임포트 된다.

예) $imp userid=system/manager full=y
$imp userid=system/manager fromuser=scott touser=test
$imp userid=system/manager tables=(scott.emp, scott.dept)
-----------------------------------------------------------------

DESTROY : Import 시 Import Utility는 필요하다면 어떠한 테이블 스페이스에 대해 만
들 수도 있다. 만약 destroy=y이면 export dump 파일안에 같은 이름을 가
진 data file명이 있다면 import되는 오라클 서버에 대해서 그 파일을
overwrite 한다는 것이다. (default는 n이다.)
($imp userid=scott/tiger destroy=y)

 

=========================================================================
import 예제 1 : scott 계정을 삭제 후 export 받은 백업본을 이용해 복구하기
=========================================================================

---> 아래는 SQL*Plus에서...
SQL> connect / as sysdba
연결되었습니다.
SQL> drop user scott cascade;
사용자가 삭제되었습니다.


---> 아래는 명령프롬프트에서...
D:\backup>dir
D 드라이브의 볼륨: data1
볼륨 일련 번호: 2434-2E50

D:\backup 디렉터리

2004-01-11 11:33p

.
2004-01-11 11:33p
..
2004-01-11 11:28p 4,096 EXPDAT.DMP
2004-01-11 11:36p 548,864 full.dmp
2004-01-11 11:24p 51,200 scott.dmp
2004-01-11 11:29p 4,096 structure.dmp
4개 파일 608,256 바이트
2 디렉터리 2,185,232,384 바이트 남음

D:\backup>imp userid=system/manager fromuser=scott touser=scott file=scott.dmp

Import: Release 9.2.0.1.0 - Production on 월 Jan 12 00:20:59 2004

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


다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

엑스포트 파일은 규정 경로를 거쳐 EXPORT:V09.02.00 에 의해 생성되었습니다

경고: 객체는 다른 사용자 SCOTT(이)가 엑스포트한 것입니다.

KO16MSWIN949 문자집합과 AL16UTF16 NCHAR 문자 집합에 임포트가 완성되었습니다
. SCOTT 객체를 SCOTT(으)로 임포트하는 중입니다
IMP-00003: ORACLE 오류 1435 가 발생했습니다
ORA-01435: 사용자가 존재하지 않습니다
경고와 함께 임포트가 정상 종료되었습니다.


---> 다음은 SQL*Plus에서...
SQL> create user scott identified by tiger
2 default tablespace users
3 temporary tablespace temp
4 quota 100m on users;

사용자가 생성되었습니다.

SQL> grant connect, resource to scott;
권한이 부여되었습니다.

SQL> connect scott./tiger;
연결되었습니다.

SQL> select * from tab;
선택된 레코드가 없습니다.


---> 다음은 명령 프롬프트에서...

D:\backup>imp userid=system/manager fromuser=scott touser=scott file=scott.dmp

Import: Release 9.2.0.1.0 - Production on 월 Jan 12 00:33:32 2004

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


다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

엑스포트 파일은 규정 경로를 거쳐 EXPORT:V09.02.00 에 의해 생성되었습니다

경고: 객체는 다른 사용자 SCOTT(이)가 엑스포트한 것입니다.

KO16MSWIN949 문자집합과 AL16UTF16 NCHAR 문자 집합에 임포트가 완성되었습니다
. SCOTT 객체를 SCOTT(으)로 임포트하는 중입니다
. . 테이블 "ADDRBOOK"(를)을 임포트 중 3 행이 임포트되었습니다.
. 테이블 "EMP"(를)을 임포트 중 15행이 임포트되었습니다.
............
............
임포트가 경고 없이 정상적으로 종료되었습니다.


SQL> select * from tab;

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
ADDRBOOK TABLE
BONUS TABLE
CUSTOMER TABLE
CUSTOMER1 TABLE
CUSTOMER2 TABLE
DEPT TABLE
EMP TABLE
EMPLOYEE TABLE
EMP_HISTORY TABLE
KOR TABLE
LONGTEST TABLE

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
MYDEPT TABLE
MYEMP TABLE
MYTABLE TABLE
SALES TABLE
SALGRADE TABLE
SAWON TABLE
S_CUSTOMER TABLE
S_DEPT TABLE
S_EMP TABLE
S_IMAGE TABLE
S_INVENTORY TABLE

TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
S_ITEM TABLE
S_LONGTEXT TABLE
S_ORD TABLE
S_PRODUCT TABLE
S_REGION TABLE
S_TITLE TABLE
S_WAREHOUSE TABLE
TEST TABLE
TIME_TAB TABLE

31 개의 행이 선택되었습니다.


=========================================================================
import 예제 2 : emp Table을 삭제 후 백업본을 이용해 복구하기
=========================================================================

--> SQL*Plus에서 ...
SQL> connect scott/tiger
연결되었습니다.
SQL> drop table emp;
drop table emp
*
1행에 오류:
ORA-02449: 외래 키에 의해서 참조된 테이블에 유일/기본 키입니다

SQL> drop table emp cascade constraint;
테이블이 삭제되었습니다.

SQL> select count(*) from emp;
select count(*) from emp
*
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다

 

--> 명령프롬프트에서 실행

D:\backup>imp scott/tiger tables=(emp) file=scott.dmp <-- scott으로 export 받은 경우에...
D:\backup>imp userid=system/manager tables=(emp) file=scott.dmp fromuser=system
touser=scott <-- system으로 export 받은 경우에...

Import: Release 9.2.0.1.0 - Production on 월 Jan 12 00:43:45 2004

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


다음에 접속됨: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

엑스포트 파일은 규정 경로를 거쳐 EXPORT:V09.02.00 에 의해 생성되었습니다
KO16MSWIN949 문자집합과 AL16UTF16 NCHAR 문자 집합에 임포트가 완성되었습니다
. SCOTT 객체를 SCOTT(으)로 임포트하는 중입니다
. . 테이블 "EMP"(를)을 임포트 중 15 행이 임포트
되었습니다
사용 가능한 제약 조건에 관해서...
임포트가 경고 없이 정상적으로 종료되었습니다.

--> SQL*Plus에서 실행


SQL> select count(*) from emp;

COUNT(*)
----------
15

'Program... > Oracle' 카테고리의 다른 글

DB 논리적 모델링 (용어해설)  (0) 2009.03.13
Tablespace 오류복구  (0) 2009.03.13
물리적인 DB관리 (2)  (0) 2009.03.13
물리적인 DB관리 (1)  (0) 2009.03.13
DataBase 정규화  (0) 2009.03.13
Posted by Duritz

<<20060705>>

SQL> alter system set control_files=
  2  "D:\oracle\oradata\DBH1\CONTROL01.CTL",
  3  "D:\oracle\oradata\DBH1\CONTROL02.CTL",
  4  "D:\oracle\oradata\DBH1\CONTROL03.CTL" scope=spfile;

시스템이 변경되었습니다.

SQL> shutdown immediate
ORA-01507: ??????? ????? ?????
ORACLE 인스턴스가 종료되었습니다.
SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.

++++++++++++++++++++++++++++++++++++++++++++++++++++++
*** Redo log file 관리 (multiplexing)
--로그정보확인
SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- ----------------------------------
         3 STALE   ONLINE  D:\ORACLE\ORADATA\DBH1\REDO03.LOG
         2             ONLINE  D:\ORACLE\ORADATA\DBH1\REDO02.LOG
         1 STALE   ONLINE  D:\ORACLE\ORADATA\DBH1\REDO01.LOG


SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- ----------------
         1          1          2  104857600          1 INACTIVE
         2          1          3  104857600          1 CURRENT
         3          1          1  104857600          1 INACTIVE


SQL> alter database add logfile
  2  'D:\oracle\oradata\DBH1\REDO04.LOG' size 10m;

데이타베이스가 변경되었습니다.

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- -----------------------------------
         3 STALE   ONLINE  D:\ORACLE\ORADATA\DBH1\REDO03.LOG
         2         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO02.LOG
         1 STALE   ONLINE  D:\ORACLE\ORADATA\DBH1\REDO01.LOG
         4         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO04.LOG


SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------
         1          1          2  104857600          1 INACTIVE
         2          1          3  104857600          1 CURRENT
         3          1          1  104857600          1 INACTIVE
         4          1          0   10485760          1 UNUSED


alter system switch logfile;  -- 강제 로그 스위치 발생

SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------
         1          1          2  104857600          1 INACTIVE
         2          1          3  104857600          1 ACTIVE
         3          1          1  104857600          1 INACTIVE
         4          1          4   10485760          1 CURRENT

-- 로그 멤버 추가(기존 그룹에 파일추가)
--크기를 지정할 수 없다(기존 멤버 파일과 같은 크기로 생성)

SQL> alter database add logfile member
  2  'D:\oracle\oradata\DBH1\REDO01_r.LOG' to group 1,
  3  'D:\oracle\oradata\DBH1\REDO02_r.LOG' to group 2,
  4  'D:\oracle\oradata\DBH1\REDO03_r.LOG' to group 3,
  5  'D:\oracle\oradata\DBH1\REDO04_r.LOG' to group 4 ;

데이타베이스가 변경되었습니다.

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- ----------------------------------------
         3 STALE   ONLINE  D:\ORACLE\ORADATA\DBH1\REDO03.LOG
         2             ONLINE  D:\ORACLE\ORADATA\DBH1\REDO02.LOG
         1 STALE   ONLINE  D:\ORACLE\ORADATA\DBH1\REDO01.LOG
         4             ONLINE  D:\ORACLE\ORADATA\DBH1\REDO04.LOG
         1 INVALID ONLINE  D:\ORACLE\ORADATA\DBH1\REDO01_R.LOG
         2 INVALID ONLINE  D:\ORACLE\ORADATA\DBH1\REDO02_R.LOG
         3 INVALID ONLINE  D:\ORACLE\ORADATA\DBH1\REDO03_R.LOG
         4 INVALID ONLINE  D:\ORACLE\ORADATA\DBH1\REDO04_R.LOG

8 개의 행이 선택되었습니다.

SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------
         1             1                2        104857600          2         INACTIVE
         2             1                3        104857600          2         ACTIVE
         3             1                1        104857600          2         INACTIVE
         4             1                4         10485760           2         CURRENT


-- 로그 멤버 삭제

SQL> alter database drop logfile member
  2  'D:\ORACLE\ORADATA\DBH1\REDO01_R.LOG';

데이타베이스가 변경되었습니다.

SQL> alter database drop logfile member
  2  'D:\ORACLE\ORADATA\DBH1\REDO02_R.LOG';

데이타베이스가 변경되었습니다.

SQL> alter database drop logfile member
  2  'D:\ORACLE\ORADATA\DBH1\REDO03_R.LOG';

데이타베이스가 변경되었습니다.

SQL> alter system switch logfile;

시스템이 변경되었습니다.

SQL> alter database drop logfile member
  2  'D:\ORACLE\ORADATA\DBH1\REDO04_R.LOG';

데이타베이스가 변경되었습니다.

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- ----------------------------------------
         3         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO03.LOG
         2         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO02.LOG
         1         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO01.LOG
         4         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO04.LOG

SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------
         1          1          6  104857600          1 INACTIVE
         2          1          7  104857600          1 CURRENT
         3          1          5  104857600          1 INACTIVE
         4          1          4   10485760          1 INACTIVE


-- 로그 그룹 삭제(그룹번호로 삭제가능)

SQL> alter database drop logfile group 4;

데이타베이스가 변경되었습니다.

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- ----------------------------------------
         3         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO03.LOG
         2         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO02.LOG
         1         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO01.LOG

SQL> select GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,STATUS from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ---------- --------------
         1          1          6  104857600          1 INACTIVE
         2          1          7  104857600          1 CURRENT
         3          1          5  104857600          1 INACTIVE

-- 오라클에서 그룹이나 멤버를 삭제한 뒤, 물리적인 파일(control,redolog,data)들도 삭제하길 바란다.
    오라클에서는 기본적으로 논리적 파일과 물리적 파일을 동시게 삭제하지 않는다.

--오라클에서 파일(컨트롤/리두로그/데이터)이 삭제된다 해도(비사용)
--운영체제 상에서의 물리적인 파일은 함께 삭제되지 않는다!!!

*** tablespace 관리
--system 테이블 스페이스가 locally 방식이면 다른 테이블 스페이스도 locally방식을 사용해야 한다
--하나의 테이블 스페이스는 최소한 하나 이상의 데이터 파일로 구성

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

TABLESPACE_NAME STATUS    CONTENTS  EXTENT_MAN
--------------- --------- --------- ----------
SYSTEM          ONLINE    PERMANENT LOCAL --***
UNDOTBS1        ONLINE    UNDO      LOCAL           
TEMP            ONLINE    TEMPORARY LOCAL
CWMLITE         ONLINE    PERMANENT LOCAL
DRSYS           ONLINE    PERMANENT LOCAL
EXAMPLE         ONLINE    PERMANENT LOCAL
INDX            ONLINE    PERMANENT LOCAL
ODM             ONLINE    PERMANENT LOCAL
TOOLS           ONLINE    PERMANENT LOCAL
USERS           ONLINE    PERMANENT LOCAL
XDB             ONLINE    PERMANENT LOCAL

11 개의 행이 선택되었습니다.

SQL> select tablespace_name, bytes, file_name from dba_data_files
  2  union all
  3  select tablespace_name, bytes, file_name from dba_temp_files;

TABLESPACE_NAME      BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
XDB               39976960 C:\ORACLE\ORADATA\DBTEA\XDB01.DBF
USERS             26214400 C:\ORACLE\ORADATA\DBTEA\USERS01.DBF
UNDOTBS1         209715200 C:\ORACLE\ORADATA\DBTEA\UNDOTBS01.DBF
TOOLS             10485760 C:\ORACLE\ORADATA\DBTEA\TOOLS01.DBF
SYSTEM           419430400 C:\ORACLE\ORADATA\DBTEA\SYSTEM01.DBF
ODM               20971520 C:\ORACLE\ORADATA\DBTEA\ODM01.DBF
INDX              26214400 C:\ORACLE\ORADATA\DBTEA\INDX01.DBF
EXAMPLE          156631040 C:\ORACLE\ORADATA\DBTEA\EXAMPLE01.DBF
DRSYS             20971520 C:\ORACLE\ORADATA\DBTEA\DRSYS01.DBF
CWMLITE           20971520 C:\ORACLE\ORADATA\DBTEA\CWMLITE01.DBF
TEMP              41943040 C:\ORACLE\ORADATA\DBTEA\TEMP01.DBF

11 개의 행이 선택되었습니다.

--tablespace 생성
SQL> create tablespace ts_ex1
  2  datafile 'C:\ORACLE\ORADATA\DBTEA\ts_ex1.dbf' size 5m
  3  autoextend on next 2m maxsize 20m;
     -------------------절이 없다면 자동 증가 할 수 없다!

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

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

TABLESPACE_NAME      BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
TS_EX1             5242880 C:\ORACLE\ORADATA\DBTEA\TS_EX1.DBF

--tablespace의 용량 늘이기
1. 데이터 파일 추가
SQL> alter tablespace ts_ex1
  2  add datafile 'C:\ORACLE\ORADATA\DBTEA\TS_EX2.DBF' size 5m;

테이블 영역이 변경되었습니다.

SQL> @t1

TABLESPACE_NAME      BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
TS_EX1             5242880 C:\ORACLE\ORADATA\DBTEA\TS_EX1.DBF
TS_EX1             5242880 C:\ORACLE\ORADATA\DBTEA\TS_EX2.DBF --***

2. 기존 파일의 크기 늘이기
SQL> alter database datafile
  2  'C:\ORACLE\ORADATA\DBTEA\TS_EX1.DBF' resize 10m;

데이타베이스가 변경되었습니다.

SQL> @t1

TABLESPACE_NAME      BYTES FILE_NAME
--------------- ---------- ---------------------------------------------
TS_EX1            10485760 C:\ORACLE\ORADATA\DBTEA\TS_EX1.DBF --***
TS_EX1             5242880 C:\ORACLE\ORADATA\DBTEA\TS_EX2.DBF


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<오후>

--현재 사용 중인 테이블 스페이스 정보

SQL> desc dba_segments
 이름                                      널?      유형
 ----------------------------------------- -------- -------------
 OWNER                                              VARCHAR2(30)
 SEGMENT_NAME                                       VARCHAR2(81)
 PARTITION_NAME                                     VARCHAR2(30)
 SEGMENT_TYPE                                       VARCHAR2(18)
 TABLESPACE_NAME                                    VARCHAR2(30)
 HEADER_FILE                                        NUMBER
 HEADER_BLOCK                                       NUMBER
 BYTES                                              NUMBER
 BLOCKS                                             NUMBER
 EXTENTS                                            NUMBER
 INITIAL_EXTENT                                     NUMBER
 NEXT_EXTENT                                        NUMBER
 MIN_EXTENTS                                        NUMBER
 MAX_EXTENTS                                        NUMBER
 PCT_INCREASE                                       NUMBER
 FREELISTS                                          NUMBER
 FREELIST_GROUPS                                    NUMBER
 RELATIVE_FNO                                       NUMBER
 BUFFER_POOL                                        VARCHAR2(7)

SQL> select distinct tablespace_name from dba_segments;

TABLESPACE_NAME
------------------------------
CWMLITE
DRSYS
EXAMPLE
ODM
SYSTEM
TOOLS
UNDOTBS1
XDB


-- 현재 사용하고 있지 않는 테이블 스페이스 정보
(dba_tablespaces)-(dba_segments) = ?
전체 테이블 스페이스 - 사용중인 테이블 스페이스 = ?

select tablespace_name from dba_tablespaces
minus
select distinct tablespace_name from dba_segments;


-- 테이블 스페이스 삭제
테이블 스페이스 안에 객체가 포함되어있을 경우 삭제 안됨
drop tablespace table_name including contents and datafiles;
                                     ---------------------------
                       운영체제상의 테이블 스페이스 내의 물리적인 파일들도 삭제가능

SQL> alter user sky default tablespace users;

사용자가 변경되었습니다.

SQL> select username,default_tablespace from dba_users;


-- 해당 테이블스페이스
-- sky 가 소유한 sawon 테이블정보
select tablespace_name from dba_tables where owner='SKY' and table_name='SAWON';

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

select tablespace_name from dba_tables where owner='SCOTT' and table_name='EMP';

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

select * from sky.sawon;  --온라인으로 확인


SQL> alter tablespace users offline;

테이블 영역이 변경되었습니다.

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
CWMLITE                        ONLINE
DRSYS                          ONLINE
EXAMPLE                        ONLINE
INDX                           ONLINE
ODM                            ONLINE
TOOLS                          ONLINE
USERS                          OFFLINE
XDB                            ONLINE

11 개의 행이 선택되었습니다.

SQL> select * from sky.sawon;

 

SQL> alter tablespace users online;

SQL> select tablespace_name,status from dba_tablespaces;

SQL> select * from sky.sawon;


create table scott.dept2
tablespace users
as select * from scott.dept;

select tablespace_name from dba_tables where owner='SCOTT' and table_name='DEPT2';

TABLESPACE_NAME
------------------------------
USERS

select * from scott.dept2;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON


alter tablespace users read only;  -- 읽기 전용으로변경
테이블 영역이 변경되었습니다.

select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
CWMLITE                        ONLINE
DRSYS                          ONLINE
EXAMPLE                        ONLINE
INDX                           ONLINE
ODM                            ONLINE
TOOLS                          ONLINE
USERS                          READ ONLY
XDB                            ONLINE

select * from scott.dept2;

insert into scott.dept2 select * from scott.dept;
insert into scott.dept2 select * from scott.dept
                  *
1행에 오류:
ORA-00372: 파일 9는 지금 수정될 수 없습니다
ORA-01110: 9 데이터 파일: 'D:\ORACLE\ORADATA\DBH1\USERS01.DBF'

drop table scott.dept2;
(읽기전용 테이블스페이스도 삭제는 가능하다,변경 불가)

alter tablespace users read write;


-- Locally management & Dictionary management 관리
1. Locally management
--비트맵 정보를 이용한 빈 extents 기록 관리
--빈공간 조각모음(coalesing), undo(변경전 값) 데이터 관리가 필요없다
--저장 extent 크기가 일정해야 한다 (기본으로 extent 크기도 자동 관리)
   (9i 는 extent 사이즈가 자동으로 변환된다)

2. Dictionary management
(Oracle 9i 버전에서는 사용안함, 퍼포먼스에 영향을 미치기때문에 성능 저하)
--Dictionary table 을 이용하여 빈 extents 기록 관리 => 성능 떨어짐


create tablespace ts_ex1
datafile 'D:\ORACLE\ORADATA\DBH1\USER_data.DBF' size 5m
extent management local uniform size 256k;  --이 마지막줄은 생략가능
--Locally 로 관리되면 저장되는 extent(블럭이모인것) 사이즈가 같아야한다


--UNDO tablespace 생성 : 변경전 값을 가지는 데이타 테이블 스페이스
SQL> create undo tablespace undo_ex
  2  datafile 'D:\ORACLE\ORADATA\DBH1\UNDO_ex.DBF' size 10m;

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

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
CWMLITE                        ONLINE
DRSYS                          ONLINE
EXAMPLE                        ONLINE
INDX                           ONLINE
ODM                            ONLINE
TOOLS                          ONLINE
USERS                          ONLINE
XDB                            ONLINE

TABLESPACE_NAME                STATUS
------------------------------ ---------
TS_EX1                         ONLINE
UNDO_EX                        ONLINE

13 개의 행이 선택되었습니다.

--임시 테이블 스페이스 생성
SQL> create temporary tablespace temp_ex
  2  tempfile 'D:\ORACLE\ORADATA\DBH1\temp_ex.DBF' size 5m;

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

SQL> select tablespace_name,contents from dba_tablespaces;

TABLESPACE_NAME                CONTENTS
------------------------------ ---------
SYSTEM                         PERMANENT
UNDOTBS1                       UNDO
TEMP                           TEMPORARY
CWMLITE                        PERMANENT
DRSYS                          PERMANENT
EXAMPLE                        PERMANENT
INDX                           PERMANENT
ODM                            PERMANENT
TOOLS                          PERMANENT
USERS                          PERMANENT
XDB                            PERMANENT

TABLESPACE_NAME                CONTENTS
------------------------------ ---------
TS_EX1                         PERMANENT
UNDO_EX                        UNDO
TEMP_EX                        TEMPORARY

14 개의 행이 선택되었습니다.

SQL> select tablespace_name,file_name from dba_temp_files;

TABLESPACE_NAME                FILE_NAME
------------------------------ -------------------------------------
TEMP                           D:\ORACLE\ORADATA\DBH1\TEMP01.DBF
TEMP_EX                        D:\ORACLE\ORADATA\DBH1\TEMP_EX.DBF


*** OMF (Oracle managed files)
-- 데이터베이스 파일들의 경로 및 이름을 자동관리, 물리적인 파일도 자동관리

-- 사전에(미리) 파라미터 변경 작업 필요
db_create_file_dest : 데이타 파일의 자동 저장될 경로 지정 (파라미터 경로 지정)
db_create_online_log_dest_1~5 : 로그 파일 & 컨트롤 파일의 자동 저장 경로
                             ---- destination (목적지)

ora_%u.ctl        : 컨트롤 파일
ora_%g_%u.log : 리두 로그 파일
ora_%t_%u.dbf  : 데이터 파일
ora_%t_%u.tmp : 임시 데이터 파일

%u : 8문자 임의의 문자, %t : 테이블 스페이스명, %g : 로그 그룹 번호
-----------------------------------------------------------
(여러장소에는 줄수 없다)
alter system set db_create_online_log_dest_1='d:\oradata1';
alter system set db_create_online_log_dest_2='d:\oradata2';

alter database add logfile [size 10m];
alter database drop logfile group 4;  -- 물리적인 운영체제 상에서도 자동 삭제


**** extent & segment 관리
--extent : 세그먼트(테이블)의 최소 저장 단위

--할당 받을 수 있는 extent의 수가 10개 미만인 세그먼트 정보
SQL> col owner format a7
SQL> col segment_name format a12
SQL> col segment_type format a12
SQL> col tablespace_name format a10

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

선택된 레코드가 없습니다.

--특정 테이블에 할당된 segment 정보
SQL> select owner, segment_name, segment_type, tablespace_name, max_extents,
  2  extents, pct_increase from dba_segments
  3  where owner='SKY' and segment_name='SAWON';

OWNER   SEGMENT_NAME SEGMENT_TYPE TABLESPACE MAX_EXTENTS    EXTENTS PCT_INCREASE
------- ------------ ------------ ---------- ----------- ---------- ------------
SKY     SAWON        TABLE        USERS       2147483645                           1

--특정 테이블의 extent 정보
SQL> select segment_name, extent_id, block_id, bytes, blocks from dba_extents
  2  where owner='SKY' and segment_name='SAWON'
  3  order by 2,3;

SEGMENT_NAME  EXTENT_ID   BLOCK_ID      BYTES     BLOCKS
------------ ---------- ---------- ---------- ----------
SAWON                 0                 33          65536         8  --33번째 블럭부터 8개로 구성(저장)

SQL> show parameter db_block_size

NAME                                 TYPE        VALUE
------------------------------------ -----------
db_block_size                        integer     8192

---------------------------------------------
SQL> create table sky.sawon2
  2  tablespace users
  3  as select * from sky.sawon;

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

SQL> insert into sky.sawon2 select * from sky.sawon2;

21 개의 행이 만들어졌습니다.

SQL> /

42 개의 행이 만들어졌습니다.

SQL> /

84 개의 행이 만들어졌습니다.

SQL> /

10000 개의 행이 만들어졌습니다.

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

OWNER   SEGMENT_NAME SEGMENT_TYPE TABLESPACE MAX_EXTENTS    EXTENTS PCT_INCREASE
------- ------------ ------------ ---------- ----------- ---------- ------------
SKY     SAWON2       TABLE        USERS       2147483645         23 
                                                                                --23개의 extent에 sawon2 저장

SQL> select segment_name, extent_id, block_id, bytes, blocks from dba_extents
  2  where owner='SKY' and segment_name='SAWON2'
  3  order by 2,3;

SEGMENT_NAME  EXTENT_ID   BLOCK_ID      BYTES     BLOCKS
------------ ---------- ---------- ---------- ----------
SAWON2                0        345      65536          8
SAWON2                1        353      65536          8
SAWON2                2        361      65536          8
SAWON2                3        369      65536          8
SAWON2                4        377      65536          8
SAWON2                5        385      65536          8
SAWON2                6        393      65536          8
SAWON2                7        401      65536          8
SAWON2                8        409      65536          8
SAWON2                9        417      65536          8
SAWON2               10        425      65536          8

SEGMENT_NAME  EXTENT_ID   BLOCK_ID      BYTES     BLOCKS
------------ ---------- ---------- ---------- ----------
SAWON2               11        433      65536          8
SAWON2               12        441      65536          8
SAWON2               13        449      65536          8
SAWON2               14        457      65536          8
SAWON2               15        465      65536          8
SAWON2               16        521    1048576        128   --***자동 extent크기 조정(최적화)
SAWON2               17        649    1048576        128
SAWON2               18        777    1048576        128
SAWON2               19        905    1048576        128
SAWON2               20       1033    1048576        128
SAWON2               21       1161    1048576        128

SEGMENT_NAME  EXTENT_ID   BLOCK_ID      BYTES     BLOCKS
------------ ---------- ---------- ---------- ----------
SAWON2               22       1289    1048576        128

23 개의 행이 선택되었습니다.
-->locally management tablespace에서는 자동 extent 할당이 기본값이다!

*** free space(빈공간) 관리
SQL> select * from dba_free_space
  2  where tablespace_name='USERS';

TABLESPACE    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
USERS                  9        345         23396352       2856            9
                               -->345번째부터 2856개 블럭이 빈공간

SQL> select * from dba_free_space
  2  where tablespace_name='USERS';

TABLESPACE    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
USERS               9        353      65536          8            9          --중간에 빈 공간
USERS               9        369   23199744       2832            9        
                           --> 361번째부터 8개의 블럭 저장(dept4 table)

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

OWNER   SEGMENT_NAME SEGMENT_TYPE TABLESPACE MAX_EXTENTS    EXTENTS PCT_INCREASE
------- ------------ ------------ ---------- ----------- ---------- ------------
SKY     DEPT4        TABLE        USERS       2147483645          1

SQL> select segment_name, extent_id, block_id, bytes, blocks from dba_extents
  2  where owner='SKY' and segment_name='DEPT4';

SEGMENT_NAME  EXTENT_ID   BLOCK_ID      BYTES     BLOCKS
------------ ---------- ---------- ---------- ----------
DEPT4                    0              361      65536          8
                                    
SQL> drop table sky.dept4;

테이블이 삭제되었습니다.

SQL> drop table sky.dept2;

테이블이 삭제되었습니다.

SQL> select * from dba_free_space
  2  where tablespace_name='USERS';

TABLESPACE    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
---------- ---------- ---------- ---------- ---------- ------------
USERS               9          345          23396352       2856            9
-->locally management tablespace는 빈공간에 대하여 자동 병합된다!! --***
    (강제 병합 명령:alter tablespace users coalesce;)


SQL> select username,default_tablespace from dba_users;

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
SYS                            SYSTEM
SYSTEM                         SYSTEM
DBSNMP                         SYSTEM
SKY                            USERS
SCOTT                          SYSTEM
TEST                           SYSTEM
OUTLN                          SYSTEM
WMSYS                          SYSTEM
ORDSYS                         SYSTEM
ORDPLUGINS                     SYSTEM
MDSYS                          SYSTEM

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
CTXSYS                         DRSYS
QS_ES                          EXAMPLE
QS_WS                          EXAMPLE
QS                             EXAMPLE
QS_ADM                         EXAMPLE
SH                             EXAMPLE
PM                             EXAMPLE
OE                             EXAMPLE
HR                             EXAMPLE
RMAN                           TOOLS
QS_CS                          EXAMPLE

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
QS_CB                          EXAMPLE
QS_CBADM                       EXAMPLE
QS_OS                          EXAMPLE
XDB                            XDB
ANONYMOUS                      XDB
WKSYS                          DRSYS
WKPROXY                        DRSYS
ODM                            ODM
ODM_MTR                        ODM
OLAPSYS                        CWMLITE

32 개의 행이 선택되었습니다.

'Program... > Oracle' 카테고리의 다른 글

Tablespace 오류복구  (0) 2009.03.13
오라클 백업복구  (0) 2009.03.13
물리적인 DB관리 (1)  (0) 2009.03.13
DataBase 정규화  (0) 2009.03.13
오라클 Import & Export  (0) 2009.03.13
Posted by Duritz

oracle = Database (물리적인파일) + Instance (메모리)

**Database (물리적인파일) 설명
D:\oracle\oradata\DBH1 밑에 파일...

① Control file (CTL) : 오라클 서버의 현재(전체) 상태정보를 나타내는 파일, 물리적인 파일의 상태 동기화, 최소1개

② redolog file (LOG) : Database상의 (변경상황) 트랜잭션(insert,update,delete) 저장, 최소2개 파일(그룹) = MEMBER

③ Data file (DBF) : 실제로 생각하는 데이터가 저장되는 파일(실제 데이터 저장)
- data
- undo (rollback) segment : DB복구시 버퍼와 (변경전 값) 비교해서 일관성 검사

④ initial parameter file : 초기 파라미터 파일(오라클서버 시작시 초기 환경변수를 읽어들이는 파일)

⑤ password file : 오라클 관리가자(특정계정이) 사용자 정보를 넣어주는 파일, 인증관련파일

파라미터(변수처럼사용)=>오라클이 시작될 때 필요한 모든정보를 가진 파일=>초기 파라미터

 


SQL> select * from v$controlfile;

STATUS   NAME
-------   -------------------------------------

D:\ORACLE\ORADATA\DBH1\CONTROL01.CTL

D:\ORACLE\ORADATA\DBH1\CONTROL02.CTL

D:\ORACLE\ORADATA\DBH1\CONTROL03.CTL

 

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE     MEMBER
---------- ------- -------  --------------------------------------------------
         3      STALE   ONLINE     D:\ORACLE\ORADATA\DBH1\REDO03.LOG
         2                  ONLINE     D:\ORACLE\ORADATA\DBH1\REDO02.LOG


         1         ONLINE
D:\ORACLE\ORADATA\DBH1\REDO01.LOG

SQL> select * from v$log;

  GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS               FIRST_CHANGE#   FIRST_TI
---------- ---------- ---------- ---------- ---------- --- ---------------- -------------     --------
         1              1               2        104857600          1        NO  CURRENT                 257848             06/07/04
         2              1               0        104857600          1        YES UNUSED                       0
         3              1               1        104857600          1        NO  INACTIVE                  190578             06/07/03


SQL> select name from v$datafile;

NAME
-------------------------------------
-------------------------------------
D:\ORACLE\ORADATA\DBH1\SYSTEM01.DBF
D:\ORACLE\ORADATA\DBH1\UNDOTBS01.DBF
D:\ORACLE\ORADATA\DBH1\CWMLITE01.DBF
D:\ORACLE\ORADATA\DBH1\DRSYS01.DBF
D:\ORACLE\ORADATA\DBH1\EXAMPLE01.DBF
D:\ORACLE\ORADATA\DBH1\INDX01.DBF
D:\ORACLE\ORADATA\DBH1\ODM01.DBF
D:\ORACLE\ORADATA\DBH1\TOOLS01.DBF
D:\ORACLE\ORADATA\DBH1\USERS01.DBF
D:\ORACLE\ORADATA\DBH1\XDB01.DBF


SQL> show parameter db

NAME                                                    TYPE        VALUE
------------------------------------ ----------- ----------
db_16k_cache_size                                    big integer    0
db_2k_cache_size                                      big integer    0
db_32k_cache_size                                     big integer    0
db_4k_cache_size                                       big integer    0
db_8k_cache_size                                       big integer    0
db_block_buffers                                         integer         0
db_block_checking                                     boolean     FALSE
db_block_checksum                                    boolean     TRUE
db_block_size                                             integer     8192
db_cache_advice                                         string      ON
db_cache_size                                           big integer 25165824
.....

%% 위 5가지를 모두 백업해놓아야 오라클 시작가능, 파일이 다르게 백업되면 복구안됨 %%

D:\oracle\ora92\database\PWDDBH1.ora
D:\oracle\ora92\database\SPFILEDBH1.ORA => 9i부터 기본값으로 오라클 시작함

 

**  Instance (메모리) 설명

Instance = SGA + BGP
SGA => 크기가 클수록 성능이 좋아진다

DB buffer cache : 사용되었던 Data를 가지는 메모리, block 단위 저장
- dirty block : 데이터가 save된 block, 기본 8kbyte block
- free block : 데이터가 비어있는 block
- pin block : 데이터가 저장중인 block

LRU 알고리즘(LRU 원리) = FIFO (가장최근에 사용된 데이터가 입구에 저장)

DBWR : DB buffer cache에서 실제로 DB 파일로 dirty block 저장
(실제로 기억해서 저장)
redolog buffer : 트랜잭션 저장
SMON : 트랜잭션과 undo segment file 을 비교해서 일관성 체크
           1개 block의 size 4배, DB buffer size의 기본 4배
LGWR : redolog buffer 를 실제 redolog file(*.LOG)로 저장해주는 역할

Shared pool : 여러사용자들이 객체정보를 공유해서 사용하기 때문에 공유영역이라한다
- Library cache : 가장 최근에 사용한(분석된,파싱된) 문장(명령,객체명,뷰 등)
- Data dictionary cache : 데이터 사전으로부터 가장 최근의 객체정보를 가지고 있음
                                  대소문자 정확하게 구분한다

PMON : 프로세서가 오류를 발생시키면 감시(프로세서의 오류 체크,감시)

%% 메모리에 있는 정보를 많이 사용하는게 좋고, 메모리가 크면 튜닝 성능이 높아진다

CKPT : 버퍼 캐쉬에 있는 내용이 check point 가 발생시마다 DB 상태 정보 변경(갱신,보관)
check point (강제 발생 가능) : 버퍼에 있는 내용이 영구적으로 파일에 기록되는 시점

ARCH : redolog file 을 *.ARC 파일로 백업하는 역할, 며칠이 지나도 백업됨

DB mode
- ARCHIVE
- NOARCHIVE (default)

PGA
java_pool
large_pool


SQL> show sga

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes

SQL> select * from v$sga;

NAME                              VALUE
-------------------- ----------
Fixed Size                        453492
Variable Size                109051904
Database Buffers            25165824
Redo Buffers                    667648


SQL> show parameter db_cache

NAME                                 TYPE        VALUE
----------------------- ----------- ------------------------------
db_cache_advice                      string      ON
db_cache_size                        big integer 25165824

SQL> show parameter log_buffer  (redolog buffer size)

NAME                                 TYPE        VALUE
-------------------- ----------- ------------------------------
log_buffer                           integer     524288

SQL> show parameter share

NAME                                 TYPE        VALUE
----------------------- ----------- ------------------------------
hi_shared_memory_address             integer     0
max_shared_servers                   integer     20
shared_memory_address                integer     0
shared_pool_reserved_size            big integer 2516582
shared_pool_size                     big integer 50331648
shared_server_sessions               integer     165
shared_servers                       integer     1


SQL> select name from v$bgprocess;  (bgprocess 를 보는 동적뷰)

NAME
-----
PMON
DIAG
FMON
LMON
LMD0
LMS0
LMS1
LMS2
LMS3
LMS4
LMS5
......


SQL> select name,log_mode from v$database;

NAME      LOG_MODE
--------- ------------
DBH1      NOARCHIVELOG


SQL> show parameter pool

NAME                                 TYPE        VALUE
---------------------- -----------  ---------
buffer_pool_keep                     string
buffer_pool_recycle                  string
global_context_pool_size          string
java_pool_size                       big integer 33554432
large_pool_size                      big integer 8388608
olap_page_pool_size                integer     33554432
shared_pool_reserved_size       big integer 2516582
shared_pool_size                    big integer 50331648


SQL> select * from v$instance;

INSTANCE_NUMBER INSTANCE_NAME    HOST_NAME       VERSION           STARTUP_ STATUS
--------------- ---------------- ---------------- ----------------- --------------------
                1               dbh1             KH40219               9.2.0.1.0                06/07/04

       PAR    THREAD# ARCHIVE LOG_SWITCH_ LOGINS     SHU
 ------------ --- ---------- -------      ----------- ---------- ---
        OPEN     NO           1      STOPPED      ALLOWED    NO

DATABASE_STATUS   INSTANCE_ROLE      ACTIVE_ST
----------------- ------------------ ---------
ACTIVE            PRIMARY_INSTANCE   NORMAL


SQL> select tablespace_name,contents from dba_tablespaces;

TABLESPACE_NAME   CONTENTS
------------------  ---------
SYSTEM                   PERMANENT
UNDOTBS1               UNDO
TEMP                       TEMPORARY  -- temp 정렬작업,임시테이블스페이스
CWMLITE                  PERMANENT
DRSYS                     PERMANENT
EXAMPLE                  PERMANENT
INDX                         PERMANENT
ODM                        PERMANENT
TOOLS                     PERMANENT
USERS                     PERMANENT
XDB                          PERMANENT


SQL> desc dba_users
 이름                                                                                                      널?      유형
 ----------------------------------------------------------------------------------------------------------------- -------- ------
----------------------------------------------------------------------
 USERNAME                                                                                                  NOT NULL VARCHAR2(30)
 USER_ID                                                                                                   NOT NULL NUMBER
 PASSWORD                                                                                                           VARCHAR2(30)
 ACCOUNT_STATUS                                                                                            NOT NULL VARCHAR2(32)
 LOCK_DATE                                                                                                          DATE
 EXPIRY_DATE                                                                                                        DATE
 DEFAULT_TABLESPACE                                                                                        NOT NULL VARCHAR2(30)
 TEMPORARY_TABLESPACE                                                                                      NOT NULL VARCHAR2(30)
 CREATED                                                                                                   NOT NULL DATE
 PROFILE                                                                                                   NOT NULL VARCHAR2(30)
 INITIAL_RSRC_CONSUMER_GROUP                                                                                        VARCHAR2(30)
 EXTERNAL_NAME                                                                                                      VARCHAR2(4000)

 

SQL> select username,temporary_tablespace,default_tablespace from dba_users;

USERNAME          TEMPORARY_TABLESPACE   DEFAULT_TABLESPACE
--------------- ------------------------ -------------------------
SYS                            TEMP                           SYSTEM
SYSTEM                         TEMP                           SYSTEM
DBSNMP                         TEMP                           SYSTEM
SKY                            TEMP                           SYSTEM
SCOTT                          TEMP                           SYSTEM
TEST                           TEMP                           SYSTEM
OUTLN                          TEMP                           SYSTEM
WMSYS                          TEMP                           SYSTEM
ORDSYS                         TEMP                           SYSTEM
ORDPLUGINS                     TEMP                           SYSTEM
MDSYS                          TEMP                           SYSTEM

USERNAME          TEMPORARY_TABLESPACE   DEFAULT_TABLESPACE
--------------- ------------------------ -------------------------
CTXSYS                         TEMP                           DRSYS
QS_ES                          TEMP                           EXAMPLE
QS_WS                          TEMP                           EXAMPLE
QS                             TEMP                           EXAMPLE
QS_ADM                         TEMP                           EXAMPLE
SH                             TEMP                           EXAMPLE
PM                             TEMP                           EXAMPLE
OE                             TEMP                           EXAMPLE
HR                             TEMP                           EXAMPLE
RMAN                           TEMP                           TOOLS
QS_CS                          TEMP                           EXAMPLE

USERNAME          TEMPORARY_TABLESPACE   DEFAULT_TABLESPACE
--------------- ------------------------ -------------------------
QS_CB                          TEMP                           EXAMPLE
QS_CBADM                       TEMP                           EXAMPLE
QS_OS                          TEMP                           EXAMPLE
XDB                            TEMP                           XDB
ANONYMOUS                      TEMP                           XDB
WKSYS                          TEMP                           DRSYS
WKPROXY                        TEMP                           DRSYS
ODM                            TEMP                           ODM
ODM_MTR                        TEMP                           ODM
OLAPSYS                        TEMP                           CWMLITE


%%% 위에서 본 물리적인 파일 경로 => D:\oracle\oradata\DBH1

@@@ DEFAULT_TABLESPACE 를 SYSTEM->USERS 로 변경해주기
SQL> conn /as sysdba
연결되었습니다.

SQL> alter user scott default tablespace users;

사용자가 변경되었습니다.

$$$ alter user user_name default tablespace users;

 

↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 오전까지 수요일 쪽지시험 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

<<오후>>
오라클 서비스의 단계

관리자 로그인
SQL> conn /as sysdba

SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.

SQL> startup nomount
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes

SQL> alter database mount;

데이타베이스가 변경되었습니다.

SQL> alter database open;

데이타베이스가 변경되었습니다.


SQL> desc v$session
SQL> select username,sid,serial# from v$session;

USERNAME                     SID         SERIAL#
-------------------- ---------- ----------
                                        1          1
                                        2          1
                                        3          1
                                        4          1
                                        5          1
                                        6          1
                                        7          1
                                        8          1
SYS                                  9          1

-- 다른창을 열고 SKY 로 로그인후 select 하면~
SQL> select username,sid,serial# from v$session;

USERNAME                     SID         SERIAL#
-------------------- ---------- ----------
                                        1          1
                                        2          1
                                        3          1
                                        4          1
                                        5          1
                                        6          1
                                        7          1
                                        8          1
SYS                                  9          1
SKY                                  10         32


SQL> alter system kill session '10,32';

시스템이 변경되었습니다.

SQL> select username,sid,serial# from v$session;
sky 로 로그인한 창에 가서~

SQL> select * from dept;
select * from dept
*
1행에 오류:
ORA-00028: 세션이 종료되었습니다


SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.

SQL> startup open restrict;
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.

SQL> conn sky/pass
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege

경고: 이제는 ORACLE에 연결되어 있지 않습니다.

==>>> 일반계정은 로그온 못하게 할때,현재는 관리자만 로그인가능

SQL> conn /as sysdba
연결되었습니다.

SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> alter system disable restricted session;

SQL> startup open force
==>>강제종료 후 다시 시작(무조건 서비스를 다시 시작하는 옵션)


SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
dbh1

SQL> select name,open_mode from v$database;

NAME      OPEN_MODE
--------- ----------
DBH1      READ WRITE

SQL> help shutdown

 SHUTDOWN
 --------

 Shuts down a currently running Oracle instance, optionally closing
 and dismounting a database.

 SHUTDOWN [ABORT|IMMEDIATE|NORMAL|TRANSACTIONAL [LOCAL]]


SQL> conn /as sysoper
ERROR:
ORA-01031: insufficient privileges


경고: 이제는 ORACLE에 연결되어 있지 않습니다.

<< D:\oracle\ora92\network\admin\sqlnet.ora >>


SQL> col name format a40
SQL> select name,status from v$datafile;

NAME                                     STATUS
---------------------------------------- -------
D:\ORACLE\ORADATA\DBH1\SYSTEM01.DBF      SYSTEM
D:\ORACLE\ORADATA\DBH1\UNDOTBS01.DBF     ONLINE
D:\ORACLE\ORADATA\DBH1\CWMLITE01.DBF     ONLINE
D:\ORACLE\ORADATA\DBH1\DRSYS01.DBF       ONLINE
D:\ORACLE\ORADATA\DBH1\EXAMPLE01.DBF     ONLINE
D:\ORACLE\ORADATA\DBH1\INDX01.DBF        ONLINE
D:\ORACLE\ORADATA\DBH1\ODM01.DBF         ONLINE
D:\ORACLE\ORADATA\DBH1\TOOLS01.DBF       ONLINE
D:\ORACLE\ORADATA\DBH1\USERS01.DBF       ONLINE
D:\ORACLE\ORADATA\DBH1\XDB01.DBF         ONLINE


SQL> select name,status,enabled from v$datafile;

NAME                                     STATUS  ENABLED
---------------------------------------- ------- ----------
D:\ORACLE\ORADATA\DBH1\SYSTEM01.DBF      SYSTEM  READ WRITE
D:\ORACLE\ORADATA\DBH1\UNDOTBS01.DBF     ONLINE  READ WRITE
D:\ORACLE\ORADATA\DBH1\CWMLITE01.DBF     ONLINE  READ WRITE
D:\ORACLE\ORADATA\DBH1\DRSYS01.DBF       ONLINE  READ WRITE
D:\ORACLE\ORADATA\DBH1\EXAMPLE01.DBF     ONLINE  READ WRITE
D:\ORACLE\ORADATA\DBH1\INDX01.DBF        ONLINE  READ WRITE
D:\ORACLE\ORADATA\DBH1\ODM01.DBF         ONLINE  READ WRITE
D:\ORACLE\ORADATA\DBH1\TOOLS01.DBF       ONLINE  READ WRITE
D:\ORACLE\ORADATA\DBH1\USERS01.DBF       ONLINE  READ WRITE
D:\ORACLE\ORADATA\DBH1\XDB01.DBF         ONLINE  READ WRITE

10 개의 행이 선택되었습니다.

SQL> select name,status,enabled from v$tempfile;   (9i 부터 temp파일만 따로 볼수 있게되었다)

NAME                                     STATUS  ENABLED
---------------------------------------- ------- ----------
D:\ORACLE\ORADATA\DBH1\TEMP01.DBF        ONLINE  READ WRITE


-- 데이터파일과 관련된 뷰

SQL> select file_name,tablespace_name from dba_data_files;

FILE_NAME                                TABLESPACE_NAME
---------------------------------------- ------------------------------
D:\ORACLE\ORADATA\DBH1\SYSTEM01.DBF      SYSTEM
D:\ORACLE\ORADATA\DBH1\UNDOTBS01.DBF     UNDOTBS1
D:\ORACLE\ORADATA\DBH1\CWMLITE01.DBF     CWMLITE
D:\ORACLE\ORADATA\DBH1\DRSYS01.DBF       DRSYS
D:\ORACLE\ORADATA\DBH1\EXAMPLE01.DBF     EXAMPLE
D:\ORACLE\ORADATA\DBH1\INDX01.DBF        INDX
D:\ORACLE\ORADATA\DBH1\ODM01.DBF         ODM
D:\ORACLE\ORADATA\DBH1\TOOLS01.DBF       TOOLS
D:\ORACLE\ORADATA\DBH1\USERS01.DBF       USERS
D:\ORACLE\ORADATA\DBH1\XDB01.DBF         XDB

10 개의 행이 선택되었습니다.

SQL> select file_name,tablespace_name from dba_temp_files;

FILE_NAME                                TABLESPACE_NAME
---------------------------------------- ------------------------------
D:\ORACLE\ORADATA\DBH1\TEMP01.DBF        TEMP


-- 로그파일과 관련된 뷰

SQL> select group#,status,type,member from v$logfile;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- ----------------------------------------
         3 STALE   ONLINE  D:\ORACLE\ORADATA\DBH1\REDO03.LOG
         2         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO02.LOG
         1         ONLINE  D:\ORACLE\ORADATA\DBH1\REDO01.LOG

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

    GROUP#  SEQUENCE#    MEMBERS STATUS
---------- ---------- ---------- ----------------
         1          2          1 CURRENT
         2          0          1 UNUSED
         3          1          1 INACTIVE

SQL> select * from v$thread;

   THREAD# STATUS ENABLED      GROUPS INSTANCE         OPEN_TIM CURRENT_GROUP#
---------- ------ -------- ---------- ---------------- -------- --------------
 SEQUENCE# CHECKPOINT_CHANGE# CHECKPOI ENABLE_CHANGE# ENABLE_T DISABLE_CHANGE#
---------- ------------------ -------- -------------- -------- ---------------
DISABLE_
--------
         1 OPEN   PUBLIC            3 dbh1             06/07/04              1
         2             337870 06/07/04         190578 06/07/03               0

 

-- 컨트롤 파일과 관련된 뷰

SQL> select * from v$controlfile;

STATUS  NAME
------- ----------------------------------------
        D:\ORACLE\ORADATA\DBH1\CONTROL01.CTL
        D:\ORACLE\ORADATA\DBH1\CONTROL02.CTL
        D:\ORACLE\ORADATA\DBH1\CONTROL03.CTL

SQL> select * from v$sgastat;  -- SGA 정보
-- BGP 정보

SQL> select * from v$bgprocess where paddr>'00';

SQL> col name format a10
SQL> col description format a30

SQL> /

PADDR    NAME       DESCRIPTION                         ERROR
-------- ---------- ------------------------------ ----------
681E46BC PMON       process cleanup                ##########
681E4A7C DBW0       db writer process 0            ##########
681E4E3C LGWR       Redo etc.                      ##########
681E51FC CKPT       checkpoint                     ##########
681E55BC SMON       System Monitor Process         ##########
681E597C RECO       distributed recovery           ##########
681E5D3C CJQ0       Job Queue Coordinator          ##########
681E60FC QMN0       AQ Time Manager Process 0      ##########


SQL> select * from v$process;

D:\oracle\ora92\database\SPFILEDBH1.ORA -- 오라클시작파일-- 열리지않는 샘플
D:\oracle\admin\DBH1\pfile\init.ora.632006143048 --물리적으로 볼수 있는 파일샘플


SQL>alter system enable restricted session;   -- 일반사용자 로그온 못하게...
SQL>alter system disable restricted session;   -- 반대

select * from dictionary;
select * from dict;
col table_name format a30
col comments format a45
(table_name : 뷰 이름, comments : 설명서)

SQL> select * from dict where upper(comments) like upper('%user%');

SQL> select * from dict where table_name like '%INDEX%';


SQL> select * from dict_columns where table_name='DBA_SYS_PRIVS';

TABLE_NAME              COLUMN_NAME    COMMENTS
-------------------- -------------   ----------------------------------------
DBA_SYS_PRIVS          GRANTEE              Grantee Name, User or Role receiving the grant

DBA_SYS_PRIVS          PRIVILEGE             System privilege
DBA_SYS_PRIVS          ADMIN_OPTION      Grant was with the ADMIN option


-- 동적 성능 뷰를 보는 뷰

SQL> select * from v$fixed_table;


-- data dictionary 뷰 목록표 만드는방법

SQL> set pages 800
SQL> spool c:\oracle_views
SQL> select * from dict order by 1;
SQL> select * from dict where table_name like '%USER%';
SQL> select * from dict where table_name like '%TABLE%';
SQL> spool off

select * from dictionary / dict_columns / v$fixed_table;


*** 초기 파라미터 파일 관리
-- initSID.ora / spfileSID.ora
-- oracle 9i 버전은 기본적으로 spfileSID.ora 를 사용한다
     경로 : [oracle\ora92\database\]

① initSID.ora : 반드시 shutdown 된 후 수동으로 편집(변경)한다
    기본경로 : D:\oracle\admin\DBH1\pfile\
-- 파라미터 값 변경
     DB shutdown => init 파일 메모장에서수정 => DB startup

② spfileSID.ora : 온라인 상태에서 (서비스(온라인)가 구동중에) 편집(변경) 가능하다 (바로 적용)
                        정적(수동) 파라미터인 경우는 반드시 (offline) 변경후 restart 해야 한다
                        기본경로 : D:\oracle\ora92\database\ (9i 는 이경로에 있어야만 파라미터로 인정한다)
-- 파라미터 값 변경 : 무조건 명령으로 수정만 가능
     alter system set 파라미터명=값 scope=[both | spfile];
      (both : 파일도 수정되고 지금사용되고 있는 메모리도 수정해라)
     => (옵션) [=> shutdown => startup]

-- 파라미터 생성
create spfile='경로' from pfile='경로';  == pfile 을 가지고 spfile 을 생성
create spfile from pfile;  == 기본경로로 생성
create pfile from spile;


*** 컨트롤 파일 관리 (multiplexing control file)
--방법 (spfile)
1.파라미터 변경(alter system ~~)
2.shutdown
3.원본에서 control file 복사
4.startup

--pfile 을 사용하는 경우
1.shutdown
2.파라미터 변경
3.원본에서 control file 복사
4.startup


SQL> show parameter control

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      D:\oracle\oradata\DBH1\CONTROL
                                                 01.CTL, D:\oracle\oradata\DBH1
                                                 \CONTROL02.CTL, D:\oracle\orad
                                                 ata\DBH1\CONTROL03.CTL

SQL> ed 0704_1
alter system set control_files=
"D:\oracle\oradata\DBH1\CONTROL01.CTL",
"D:\oracle\oradata\DBH1\CONTROL02.CTL",
"D:\oracle\oradata\DBH1\CONTROL03.CTL",
"D:\oracle\oradata\DBH1\CONTROL04.CTL" scope=spfile;
SQL> @ 0704_1
시스템이 변경되었습니다.


SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.


windows탐색기에서 CONTROL01.CTL 원본을 복사해서 이름바꾸기 CONTROL04.CTL


SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.

SQL> select * from v$controlfile;

 NAME
--------------------------------------------
 D:\ORACLE\ORADATA\DBH1\CONTROL01.CTL
 D:\ORACLE\ORADATA\DBH1\CONTROL02.CTL
 D:\ORACLE\ORADATA\DBH1\CONTROL03.CTL
 D:\ORACLE\ORADATA\DBH1\CONTROL04.CTL

'Program... > Oracle' 카테고리의 다른 글

오라클 백업복구  (0) 2009.03.13
물리적인 DB관리 (2)  (0) 2009.03.13
DataBase 정규화  (0) 2009.03.13
오라클 Import & Export  (0) 2009.03.13
오라클 Sys 접속 및 계정생성  (0) 2009.03.13
Posted by Duritz

공지사항

Yesterday
Today
Total
12-03 05:36

달력

 « |  » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31