ORACLE/ADMIN2010. 11. 23. 18:00
반응형
출 처 : http://blog.naver.com/clearsn?Redirect=Log&logNo=90100665253


++히스토그램 생성 방법++

exec dbms_stats.gather_table_stats(user_name, 'table_name', method_opt=>'option');

 

user_name : 유저명

table_name : table이름

option :

for all columns size 1 : 모든 column 에 대해서 histogram을 수집하지 않는다.

- Oracle이 Data 분포를 고려하여 Bucket Size를 계산한다.

for all columns size auto : column이 predicate로 사용된적이 있는 경우에만 histogram을 수집

for all columns size skewonly :predicate로 사용된적이 없어도 histogram을 수집

-

for all indexed columns size skewonly : index가 존재하는 컬럼에 대해서만 histogram을 수집

for columns c1 size 5 c2 size skewonly : 개별 column 별로 bucket size 를 할당

for all hidden columns size skewonly : function based index 에 의해 생성된 hidden column에 대한 histogram을 수집

[출처] Histogram 생성 방법.|작성자 dnflfl



반응형
Posted by [PineTree]
ORACLE/ADMIN2010. 11. 8. 17:50
반응형

문자셋과 인코딩의 정의

  • 문자셋 (charset, Character Set)
하나의 언어권에서 사용하는 언어를 표현하기 위한 모든 문자(활자)의 모임을 문자셋(charater set)이라고 한다. 다시 말하면 우리가 얘기하는 언어를 책으로 출판할 때 필요한 문자(활자)를 모두 모은 것이라고 생각하면 된다. 추가적으로 부호와 공백 등과 같은 특수 문자도 문자셋에 포함된다.
영어의 경우 알파벳 대소문자와 특수 문자 등으로 간단하게 문자셋을 구성할 수 있지만 한글의 경우 출판에서 가,나,다 등으로 출판함으로 훨씬 다양한 문자셋을 가지고, 또한 한자를 병행해서 사용함으로 문자셋의 범위는 더욱 넓어진다.
  • 추상적인 글자 셋은 여러 개의 인코딩을 가질 수 있다.
  • MIME 문자셋은 IANA에서 정의하며 인터넷 및 XML 파일에서 사용한다.
  • 인코딩 (encoding)
인코딩은 문자셋을 컴퓨터가 이해할 수 있는 바이트와 매핑하는 규칙이다. 예를 들면 ASCII Code에서 A,B,C 등은 문자셋이고 A는 코드 65, B는 코드 66 등 바이트 순서와 매핑한 것이 인코딩이다. 따라서 문자셋을 어떻게 매핑하느냐에 따라 하나의 문자셋이 다양한 인코딩을 가질 수 있다.
  • 추상적인 문자셋을 구체적인 bit-stream으로 표기하는 방법
  • 여러가지 문자셋을 동시에 표시할 수 있다.
  • 대부분의 인코딩에서는 대소문자를 구분하지 않는다.
  • 대한민국 문자셋(charater set)에서 가장 많이 사용하는 인코딩은 "UTF-8", "KSC5601", "ISO-8859-1" 이다.
  • 문자셋(인코딩)의 예
  • 한글 : 8bit KSC5601 (8bit EUC-KR, 7bit ISO-2022-KR, ISO-2022-Int)
  • 영문 : KSC5636, US-ASCII (둘 간의 차이는 화페 단위 뿐)
  • 한글+영문 : KSC5861 (EUC-KR), KSC5636 + KSC5601를 모두 포함한다.
  • 유니코드 : 4byte Unicode < ISO-10646 UCS (ISO-8859-1, UTF-8, UTF-16)

문자셋과 인코딩은 동일한 명칭을 가질 수 있어 서로 혼용하여 사용되는 경우가 많다.
EUC-KR은 원래 유닉스용 표준이었는데 인터넷으로 확장되어 사용된다.
KSC5601은 인터넷에서 원활한 한글(완성형) 사용을 위하여 정의된 표준이다.
EUC (Extended UNIX Code), UTF (UCS Transformation format)

기본 인코딩

  • Windows : 시스템 언어와 관련된 코드 페이지를 따름
    • 영문 Windows는 CP1252 인코딩을 사용
    • 한글 Windows는 MS949 인코딩을 사용
  • Unix : LANG 환경 변수로 지정된 로케일에 해당하는 인코딩
    • Solaris는 LANG 환경 변수가 ko, ko_KR일 경우 EUC-KR 인코딩을 사용
    • HP는 LANG 환경 변수가 ko_KR, ko_KR.eucKR일 경우 EUC-KR 인코딩을 사용
    • Unix에서 locale -a 명령을 사용하여 LANG 환경 변수에 지정 가능한 문자셋을 확인할 수 있다.
  • HTML : ISO-8859-1와 ISO-10646
  • XML : UTF-8
  • 웹 브라우져 : 내부적으로 모두 유니코드로 처리를 한다.
  • HTTP/1.0 : ISO-8859-1
  • HTTP (URL,URI) : US-ASCII, %hexadecimal_code, JavaScript escape() 함수 사용
  • Java : 유니코드 2.0
  • 직렬화된 Java Class : UTF-8
  • J2EE : ISO-8859-1
  • Oracle : UTF-8 (AL32UTF8), 한국에서는 KSC5601 (KO16KSC5601)




다양한 환경에서 인코딩 설정

웹 브라우져 설정

  1. "도구 -> 인터넷 옵션 -> 언어" 메뉴를 선택한다.
  2. 영어[en]와 한국어[ko]를 추가하고 원하는 언어를 가장 상단에 위치한다.

JVM 설정

  • 일반적으로 LANG 환경 변수를 설정해 주면 자동으로 설정이 된다.
locale -a                               Solaria unix 명령어로 지원 가능한 encoding을 확인한다.
env LANG ko csh에서 Encoding을 설정한다. (KSC5601, EUC-KR)
LANG=ko ksh에서 Encoding을 설정한다. (KSC5601, EUC-KR)
  • JVM 옵션 설정 (UTF-8, ISO-8859-1, KSC5601)
-Dfile.encoding=8859_1                  필수 항목
-Dfile.client.encoding=8859_1
-Dclient.encoding.override=8859_1 JVM 버전에 따라 (사용안함)
  • JSP를 사용하여 JVM 옵션 확인 (encoding.jsp)
file.encoding = <%= System.getProperty("file.encoding") %><br>
file.client.encoding = <%= System.getProperty("file.client.encoding") %><br>
client.encoding.override = <%= System.getProperty("client.encoding.override") %><br>

HTML 설정

HTML 파일을 UTF-8로 만들어 저장한다.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

XML 설정

XML 파일을 UTF-8로 만들어 저장한다.

<?xml version="1.0" encoding="UTF-8" ?>

JSP 설정

JSP 파일을 UTF-8로 만들어 저장한다.

<%@ page pageEncoding="UTF-8" %>
<%@ page contentType="text/html;charset=UTF-8" %>

Servlet 설정

HTTP 요청의 인코딩 지정

request.setCharacterEncoding("UTF-8");

HTTP 응답의 인코딩 지정

response.setContentType("text/html; charset=UTF-8");

web.xml 설정

<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>

Default Oracle Database 문자셋

  • Default Oracle Database 문자셋 : UTF-8 (AL32UTF8), 한국에서는 KSC5601 (KO16KSC5601)
  • AL32UTF8, KO16KSC5601 (KSC5601), WE8ISO8859P1 (8859_1)
  • Default Oracle Database 문자셋 확인 방법
sqlplus system/manager

select parameter || ' : ' || value parameter_value
from NLS_DATABASE_PARAMETERS
where parameter = 'NLS_CHARACTERSET'
or parameter = 'NLS_NCHAR_CHARACTERSET';

select name || ' : ' || substr(value$, 1, 40) parameter_value
from sys.props$
where name = 'NLS_CHARACTERSET';

select parameter || ' : ' || value parameter_value
from NLS_INSTANCE_PARAMETERS, V$NLS_PARAMETERS, NLS_SESSION_PARAMETERS;
  • Oracle Database 문자셋 변경 방법
환경 변수 또는 %ORACLE_HOME%/dbs/init[SID].ora 을 설정한다.
NLS_LANG='American_America.Ko16ksc5601'
ORA_NLS33='$ORACLE_HOME/ocommon/nls/admin/data'
NLS_DATE_FORMAT='YYYY-MM-DD'
  • DriverManager에서 문자셋 설정 방법
java.util.Properties props = new java.util.Properties();
props.put("charSet", "KSC5601" );
DriverManager.getConnection(dbUrl, props);
반응형
Posted by [PineTree]
ORACLE/ADMIN2010. 10. 22. 10:08
반응형

 

PCTFREE
럭내에 행을 수정하거나 업데이트 발생 있는 행의 크기 증가에 대비하여 예약된 공간. 초기 입력시에는 공간을 제외하고 입력된다. PCTFREE 부족하면 데이터 수정이나 업데이트 행이전(ROW MIGRATION) 발생하게 된다.

PCTUSED
새로운 행이 블록에 추가되기 전에 행데이터와 오버헤드에 대해 사용될수 있는 블록의 최소 퍼센트이다. , 기존의 데이터가 수정이나 삭제등으로 PCTUSED보다 값이 작아지면 블록에 한하여 입력이 가능하다. 

INITRANS
블록에 동시에 엑세스 가능한 트렉젝션의 초기수를 나타낸다. (기본값 : 1)
INITRANS
낮게 설정하는 경우는 테이블이 크고 테이블에 엑세스하는 사용자의 수가 적을 경우이고, 높게 설정하는 경우는 엑세스하는 사용자가 많을 경우이다. 

MAXTRANS
동시에 엑세스 가능한 트렉젝션의 최대값으로 INITRANS 상대적 개념이다. (기본값 : 255)
MAXTRNAS
너무 낮은 경우 트렉젝션을 초과한 사용자가 엑세스한 경우 앞의 사용자가 커밋이나 롤백하기 까지 기다려야하는 경우가 발생한다. 

FREELIST
테이블로 데이터를 INSERT 하기 위하여 미리 할당하는 프리 블록의 리스트 수를 지정. 

NOCACHE
NOCACHE
옵션은 'DB 캐시를 사용하지 않겠다' 파라미터로서 이것을 CACHE 지정하면 한번에 20개의 값을 캐시한다. 기본값은 NOCACHE이다.

ex)
USING INDEX 
TABLESPACE TSI_BIO01 PCTFREE 20
STORAGE ( INITIAL 16384 NEXT 471556096 PCTINCREASE 80 ))
TABLESPACE TSD_BIO01
PCTFREE 20
PCTUSED 80
INITRANS 1
MAXTRANS 255
STORAGE ( 
INITIAL 1064960
NEXT 1048576
PCTINCREASE 0
MINEXTENTS 1
MAXEXTENTS 2147483645
FREELISTS 1 FREELIST GROUPS 1 )
NOCACHE; 


PCTFREE, PCTUSED 필요한가?
ROW CHANNING
현상과 ROW MIGRATION 현상에 대하여 알아야 한다.
ROW CHANNING
DB_BLOCK_SIZE보다 너무 데이터가 들어왔을 경우 인접한 다른 블록까지 데이터가 넘어가는 것을 말한다.
이런 경우, 만약에 데이터의 특징을 가진다면 LOB TYPE으로 다른 TABLESPACE 저장하는 것이 옳다.
지만 ROW CHANNING 일반적인 현상이다. 물론 9I 경우엔 파라미터에 DB_?K_CACHE_SIZE 주고 ?K CREATE TABLESPACE ~~ BLOCKSIZE ?K; 정하면 DB_BLOCK_SIZE 보다 BLOCK_SIZE 가지는 TABLESPACE 만들고 안에 데이터를 넣는다면 ROW CHANNING 방지할 있다.
경우 ROW CHANNING 어쩔 없는 현상이다.
하지만, ROW MIGRATION 막아야 하는 사항이다.
이것을 예를 들어 보자.

a. A
라는 테이블에 10번째 값을 INSERT
b.
이어서 11번째 값을 INSERT
c.
그런데 10번째 값을 유저가 UPDATE시켰는데, UPDATE 데이터가 예전의 데이터보다 크기가 크다!
d.
이때 DB BLOCK 11번째 때문에 여유공간이 없어서 다른 BLOCK으로 해당 데이터를 이동을 하게 된다.

이런 경우가 자주 일어나는 것은 좋지 않다. 그래서 PCTFREE, PCTUSED이라는 개념이 생긴 것이다.

PCTFREE 10, PCTUSED 40
이라고 한다면?
초기 블록에 데이터가 들어가다가 PCTUSED 40% 넘겼다. 그래도 계속해서 INSERT 한다.
그러다가 PCTFREE 10% 데이터가 90%넘게 채워질 경우에는 이상 데이터가 들어가지 않고 블록에 여유공간을 남겨둔다.
FILE HEADER
에서 FREELIST라는 것을 관리하는데 이것은 SEGMENT 들어갈 빈공간이 있는지를 확인하는 것이다.
상의 경우에서 데이터 기록량이 90% 넘기면 (, PCTFREE공간이 10% 이하가 된다면) 블록을 FREELIST에서 제거를 하고 블록은 INSERT 중단하고 다른 FREELIST 등록된 블록에 데이터를 넣을 것이다.
나중에 데이터가 UPDATE 경우를 블록의 10%만큼 미리 준비하는 것이다.

만약, 블록의 데이터마저 줄어든다면?
90%
보다 줄어들 경우 계속해서 0까지 줄어든다면, 블록을 FREELIST에서 삭제된 상황이니 이상 INSERT 되지 않는다.
경우를 대비하여 어떤 기준을 마련해두어야 한다.
PCTUSED
이렇게 BLOCK 데이터가 없어질 경우의 최소값을 말한다.
, 최소한 PCTUSED 만큼은 데이터가 들어가서 DB BLOCK 낭비를 최소화 하자 것이다.
이것이 PCTUSED 필요한 이유이다.

90%
이상으로 데이터를 채운 블록에서 데이터가 삭제되어 90% 미만로 떨어지게 되었다.
PCTFREE값이 10% 보다 여유공간이 생기는 것이다. 하지만 오라클은 PCTFREE 10%보다 여유공간이 생겨도 FREELIST 블록을 추가하지 않는다. , 데이터가 점점 줄다가 60%정도의 데이터가 되더라도 FREELIST 등록하지 않는다.

PCTUSED
보다 적어지는 상황이 생길 경우는?
PCTUSED 40%
보다 적어지는 상황이 생길 경우가 되어서야 비로소 데이터를 넣을 있도록 FREELIST 등록한다. 
하지만 9I에서는 PCTFREE, PCTUSED 방법은 권하지 않는다.
SEGMENT SPACE MANAGEMENT AUTO
절을 넣어서 AUTO 관리하도록 한다.

AUTO방식
AUTO
방식의 경우는 PCTFREE 관리한다.
블록을 25% 4개로 나눠 관리하는 방식이다. AUTO 쓰면 데이터 블록의 낭비를 막고 ROW MIGRATION 해결해준다. 수동은 권하지 않음!!!

STORAGE ( INITIAL 16384 NEXT 471556096 PCTINCREASE 80 ))
이상에서 STORAGE 절은 EXTENT할당 방식을 말한다.
두가지 방식이 있는데, 8I에서는 DEFAULT EXTENT 할당할 때에 DICTIONARY EXTENT MANAGED TABLESPACE 사용했다.
물론 이때도 LOCALLY EXTENT MANAGED TABLESPACE 만들 수는 있다.
9I
에서는 LOCALLY EXTENT MANAGED TABLESPACE DEFAULT값이다.

이상의 차이는 EXTENT 할당하는 방식에 따른다.
DICTIONARY EXTENT TABLESPACE
생성할 경우엔 테이블스페이스의 EXTENT 할당시에 정보를 SYSTEM TABLESPAE BASE TABLE에서 가져온다.
지만, EXTENT할당을 여기저기서 하다보니 SYSTEM TABLESPACE 조회해서 EXTENT 어디를 할당하면 것인지 확인하고 EXTENT 할당 할당정보를 SYSTEM TABLESPACE 저장한다. (병목현상 심함!)

그러나, LOCALLY EXTENT MANAGE TABLESPACE 경우엔 그렇지 않다.
SYSTEM TABLESPACE
BASE TABLE에서 EXTENT 여유공간 정보를 가져오는 것이 아니라 해당 데이터파일 헤더에 직접 BITMAP BLOCK으로 저장된다.
그래서 EXTENT할당시에 SYSTEM TABLESPACE에서 찾아서 할당하는 것이 아니라 자신이 속한 테이터파일의 헤더의 BITMAP BLOCK에서 찾겠죠. (경합현상이 거의 발생하지 않는다!)
오라클사에서는 DICTIONARY 방식을 사용하지 말고 LOCALLY TABLESPACE 사용하도록 권한다.

9I
에서 SYSTEM TABLESPACE LOCALLY TABLESPACE 경우, 일반 TABLESPACE생성시 DEFAULT STORAGE(DICTIONARY 방식) 사용되지 않는다. (에러발생!)
하지만 SYSTEM TABLESPACE DICTIONARY TABLESPACE 경우엔 DEFAULT STORAGE(DICTIONARY 방식) 통해서 CREATE TABLESPACE 사용할 있다.

만약, CREATE TABLE 절에 STORAGE 준다면 어떻게 될까?
이런 경우 EXTENET MANAGEMENT LOCAL 방식의 경우엔 질문사항인 STORAGE 절을 주게 되면 모두 무시된다. , TABLESPACE에서 정한 UNIFORM SIZE대로(DEFAULT라면 1M 만큼) EXTENT 할당한다. 

SYSTEM TABLESPACE
DICTIONARY TABLESAPCE라면?
경우에는 일반 TABLESPACE 만들 경우에 DEFAULT STORAGE절을 지정할 있다. 하지만, CREATE TABLE 명령에서 질문과 같이 STORAGE절을 주게 되면 TABLESPACE 설정은 모두 무시되고 CREATE TABLE 설정을 따른다.

STORAGE ( INITIAL 16384 NEXT 471556096 PCTINCREASE 80 ))
무엇을 뜻하는가?
SYSTEM TABLESPACE
LOCALLY EXTENT MANAGED TABLESPACE에서는 이상의 절을 이용하는 것이 불가능하므로, DICTIONARY EXTENT MANAGED TABLESAPCE라고 있다. 또한 TABLESPACE DICTIONARY EXTENT MANAGED TABLESAPCE이다. 

CREATE TABLE TEST ( ID NUMBER ) STORAGE STORAGE ( INITIAL 16384 NEXT 471556096 PCTINCREASE 80 ));
기에 테이블에 EXTENT 16384 바이트만큼을 미리 할당한다. EXTENT안에 DB BLOCK들에 데이터가 들어갔는데 데이터가 많이 들어가서 모두 데이터가 찼을 경우 새로운 EXTENT 할당 한다. 이때에 NEXT 만큼을 할당하는 것이다.
PCTINCREASE 80
다음의 경우, 80% 만큼 크게 늘어난다는 것이다. 

EXTENT1
에서는 16384
EXTENT2
에서는 16384 + 471556096
EXTENT3
에서는 (16384 + 471556096 + 471556096 ) * ( 1 + 0.8 )

이렇게 PCTINCREASE 쓰게 되면 쓸데없이 한꺼번에 EXTENT 할당받으므로 다른 TABLE에서 만큼 공간을 쓰지 못하게 된다. 따라서, PCTINCREASE 쓰면 안된다!
그리고, DICTIONARY방식은 쓰지 말고 LOCALLY 방식으로 UNIFORM SIZE 지정하라!
UNIFORM SIZE
대부분의 경우 10M 정도로 UNIQUE하게 주면 적당하다. (너무 크면 안됨!)

여러 테이블의 데이터가 들어가는데 너무 많은 EXTENT 생겨서 다른 테이블의 데이터와 섞이지 않나?
SMON
이라는 오라클 프로세스가 알아서 하므로, 고려할 없다.


최종 정리

PCTFREE 20
: UPDATE
위해서 DB BLOCK 최소한 20% 정도의 공간을 남겨두겠다.

PCTUSED 80
: PCTFREE
인한 공간낭비를 막기 위해서 최소한 80% 만큼의 데이터는 넣겠다.

INITRANS 1
: SEGMENT
트랜젝션이 최소 한개 이상 걸릴 있도록 한다.

MAXTRANS 255
: SEGMENT
트랜잭션이 최대 255개까지 걸릴 있도록 한다.

INITIAL 1064960
:
초기의 EXTENT 크기

NEXT 1048576
:
초기 EXTENT할당후 EXTENT 부족할 경우 다음 EXTENT 할당 크기

PCTINCREASE 0
: 0%
늘이겠다. (무시됨!)

MINEXTENTS 1
:
최소한의 EXTENT 할당하겠다.(INITIAL 10K 인데 MINEXTENTS 2 라면? TABLE 생성하면서 20K 미리 할당. 20부터 시작.)

MAXEXTENTS 2147483645
:
최대한의 EXTENT. (현재값은 데이터가 커지면 문제있다)

FREELISTS 1 FREELIST GROUPS 1
:
데이터블록의 SEGMENT관리에서 한개 FREELIST에서 FREE BLOCK 찾고 데이터를 넣는 것에 많은 트랜잭션이 처리를 경우 성능이 나빠지게 된다. 그래서 FREELIST 경우에 여러개가 있으면 분산이 가능하다. FREELIST GROUP FREELIST 몇개를 FREELIST GROUP으로 사용한다는 의미이다.

EXTENT : 보조 기억 장치에서, 파일이 연속적으로 기록되어 있는 일련의 블록
 

반응형
Posted by [PineTree]
ORACLE/ADMIN2010. 10. 7. 17:37
반응형
제품 : SQL*NET

작성날짜 : 2002-11-29

(9I) 다른 장비에 있는 REMOTE LISTENER 설정하여 로컬 데이타베이스 사용하기
==================================================

PURPOSE


아래의 test는 9i 데이터베이스에서 remote machine에 있는 listener을 사용하는 방법에
대해 다룬다.


Explanation & Example



데이터베이스가 운영중인 machine 은 'krint-5' 이며
listener을 띄울 machine은 'krind2'이다.


< remote machine(krind2)에서의 작업 >

1. remote machine(krind2)에 listener.ora을 만든다.
아래와 같이 SID_LIST_LISTENER 절은 필요치 않으며 LISTENER절만 있으면 된다.
만약 remote machine에도 데이타베이스가 존재한다면 그 데이타베이스를 나타내는
SID_LIST_LISTENER 절을 포함해도 상관이 없다.

ex)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = krind2)(PORT = 1901))
)
)
)

2. 위와 같이 setup한후 listener를 시작한다.

lsnrctl start

< local machine(krint-5)에서의 작업 >

1. local machine에서 init<SID>.ora에 remote listener을 등록한다.
(만약 spfile을 사용한다면 그에 맞게 수정한다)

*.dispatchers="(protocol=tcp)(disp=4)"
*.remote_listener="(address=(protocol=tcp)(host=krind2)(port=1901))"

( 참고 : listener port응 어떤것을 사용해도 무방하다)

2. 위와 같이 setup이 끝나면 데이타베이스를 새로 시작한다.

< remote machine(krind2)에서의 확인 >

1. remote machine에서 listener.log을 확인한다.

29-NOV-2002 19:31:08 * service_register * ORA920 * 0
29-NOV-2002 19:31:17 * service_update * ORA920 * 0
29-NOV-2002 19:31:20 * service_update * ORA920 * 0

ORA920 이 instance_name 이다.

2. "lsnrctl service" 확인한다.

/home/ora901/product/901/network/admin> lsnrctl ser

LSNRCTL for Linux: Version 9.0.1.4.0 - Production on 29-NOV-2002 19:32:18

Copyright (c) 1991, 2001, Oracle Corporation. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=krind2)(PORT=1901)))
Services Summary...
Service "ORA920" has 1 instance(s).
Instance "ORA920", status READY, has 5 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0 state:ready
REMOTE SERVER
(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=1521))
"D006" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER <machine: krint-5, pid: 5506>
(ADDRESS=(PROTOCOL=tcp)(HOST=krint-5.kr.oracle.com)(PORT=41748))
"D005" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER <machine: krint-5, pid: 5504>
(ADDRESS=(PROTOCOL=tcp)(HOST=krint-5.kr.oracle.com)(PORT=41747))
"D004" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER <machine: krint-5, pid: 5502>
(ADDRESS=(PROTOCOL=tcp)(HOST=krint-5.kr.oracle.com)(PORT=41746))
"D003" established:0 refused:0 current:0 max:1002 state:ready
DISPATCHER <machine: krint-5, pid: 5500>
(ADDRESS=(PROTOCOL=tcp)(HOST=krint-5.kr.oracle.com)(PORT=41745))
The command completed successfully

< Client에서 접속해 보기 >

1. 연결을 위해 tnsnames.ora 을 수정한다.

r_list.world =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = krind2)(PORT = 1901))
)
(CONNECT_DATA =
(SERVICE_NAME = ORA920)
)
)

2. sqlplus등으로 점속을 해 본다.
remote machine에 있는 listener.log을 보면 remote listener을 이용하여
local machine에 있는 데이타베이스에 접속이 잘 되었음을 알수 있다.

29-NOV-2002 19:36:48 * (CONNECT_DATA=(SID=ORA920)(CID=(PROGRAM=PLUS33W.EXE)(HOST
=jooyeon-kr)(USER=jooyeon))) * (ADDRESS=(PROTOCOL=tcp)(HOST=152.69.41.120)(PORT=
2865)) * establish * ORA920 * 0

( 참고 : 반드시 MTS을 사용해야 하며 그렇지 않다면 작동하지 않는다.)

RELATED DOCUMENTS


<Note:206550.1>
반응형
Posted by [PineTree]
ORACLE/ADMIN2010. 4. 19. 10:45
반응형
EM Port 확인
  - $ORACLE_HOME\install\portlist.ini 파일을 열어보면 사용하는 port 정보를 볼수 있다.

=================vi portlist.ini==================
iSQL*Plus HTTP port number =5560
Enterprise Manager Console HTTP Port (orcl) = 1158
Enterprise Manager Agent Port (orcl) = 3938
Enterprise Manager Console HTTP Port (prod) = 5500
Enterprise Manager Agent Port (prod) = 1830
==================================================

원하는 Port로 변경을 원할시 
   - emca 란 명령어를 이용해서 port를 변경을 할 수 있다
   - emca -reconfig ports [파라미터] 값
   - emca -reconfig ports -DBCONTROL_HTTP_PORT 1740


=========================================================================================================
  1. 현재 사용중인 SID 값을 넣어준다
  2. em을 재시작을 한다
=========================================================================================================
 

  - emctl을 다시 시작해보면 변경된 포트를 확인할 수 있다




* emca 옵션 *

emca의 옵션은 emca -help로 확인 가능합니다.
예를 들면, 10.2.0.1 에서는 이하의 옵션이 준비되어 있습니다.


emca -help
/opt/ora10201/product/10201/bin/emca [조작] [모드] [데이타베이스타입] [플래그] [파라미터]

 

-h | --h | -help | --help: 이 헬프 메세지의 인쇄
-version: 버젼의 인쇄

 

-config dbcontrol db [-repos (create | recreate)] [-cluster] [-silent] [-backup] [파라미터]
: 데이타베이스에 사용하는 Database Control의 구성

 

-config centralAgent (db | asm) [-cluster] [-silent] [파라미터]
: 집중 에이전트 관리의 구성

 

-config all db [-repos (create | recreate)] [-cluster] [-silent] [-backup] [파라미터]
: Database Control 및 집중 에이전트 관리의 구성

 

-deconfig dbcontrol db [-repos drop] [-cluster] [-silent] [파라미터]
: Database Control의 구성 해제

 

-deconfig centralAgent (db | asm) [-cluster] [ -silent] [파라미터]
: 집중 에이전트 관리의 구성 해제

 

-deconfig all db [-repos drop] [-cluster] [-silent] [파라미터]
: Database Control와 집중 에이전트 관리의 구성 해제

 

-addInst (db | asm) [-silent] [파라미터]
: 신규 RAC 인스턴스에 사용하는 EM의 구성

 

-deleteInst (db | asm) [-silent] [파라미터]
: 지정한 RAC 인스턴스에 사용하는 EM의 구성 해제

 

-reconfig ports [-cluster] [파라미터]
: Database Control 포토의 명시적 재할당

 

-reconfig dbcontrol -cluster [-silent] [파라미터]
: RAC Database Control 디프로이먼트의 재구성

 

-displayConfig dbcontrol -cluster [-silent] [파라미터]
: RAC Database Control의 구성에 관한 정보를 표시

 

-upgrade (db | asm | db_asm) [-cluster] [-silent] [파라미터]
: 구버젼의 EM구성을 현행 버젼에 업그레이드

 

-restore (db | asm | db_asm) [-cluster] [-silent] [파라미터]
: 현행 버젼의 EM구성을 구버젼에 restore

 

파라미터 및 옵션 :
[파라미터]: [ -respFile fileName ] [ -paramName paramValue ]*
db: 데이타베이스(ASM를 사용하는 데이타베이스를 포함)에 대한 구성 조작의 실행
asm: ASM만의 인스턴스에 대한 구성 조작의 실행
db_asm: 데이타베이스와 ASM 인스턴스의 업그레이드/restore 조작을 실행
-repos create: 신규 Database Control 리포지터리(repository)의 작성
-repos drop: 현행의 Database Control 리포지터리(repository)의 삭제
-repos recreate: 현행의 Database Control 리포지터리(repository)의 삭제 및 신규 리포지
새의 재작성
-cluster: RAC 데이타베이스에 대한 구성 조작의 실행
-silent: 파라미터의 입력을 요구하지 않는 구성 조작의 실행
-backup: 데이타베이스의 자동 백업의 구성

 

싱글·인스턴스·데이타베이스의 파라미터
    HOST: 데이타베이스·호스트명 
    SID: 데이타베이스의 SID
    PORT: 리스너의 포토 번호 
    ORACLE_HOME: 데이타베이스의 ORACLE_HOME
    HOST_USER: 자동 백업의 호스트의 유저명 
    HOST_USER_PWD: 자동 백업의 호스트의 유저·패스워드 
    BACKUP_SCHEDULE: 자동 백업·스케줄(HH:MM) 
    EMAIL_ADDRESS: 통지용 메일주소 
    MAIL_SERVER_NAME: 통지용 송신 메일(SMTP) 서버 
    ASM_OH: ASM ORACLE_HOME
    ASM_SID: ASM SID
    ASM_PORT: ASM 포토 
    ASM_USER_ROLE: ASM 유저·롤 
    ASM_USER_NAME: ASM 유저명 
    ASM_USER_PWD: ASM 유저·패스워드 
    SRC_OH: 업그레이드 하는 데이타베이스의 ORACLE_HOME
    DBSNMP_PWD: DBSNMP 유저의 패스워드 
    SYSMAN_PWD: SYSMAN 유저의 패스워드 
    SYS_PWD: SYS 유저의 패스워드 
    DBCONTROL_HTTP_PORT: Database Control의 HTTP 포토 
    AGENT_PORT: EM에이전트·포토 
    RMI_PORT: Database Control의 RMI 포토 
    JMS_PORT: Database Control의 JMS 포토

 

클러스터·데이타베이스의 추가 파라미터 
    CLUSTER_NAME: 클러스터명 
    DB_UNIQUE_NAME: 유일 데이타베이스명 
    SERVICE_NAME: 서비스명 
    EM_NODE: Database Control의 노드명 
    EM_SID_LIST: 에이전트 SID 리스트[콤마 단락]

반응형
Posted by [PineTree]
ORACLE/ADMIN2010. 3. 5. 15:48
반응형

링크 참조
http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/limits001.htm#i287903
반응형
Posted by [PineTree]
ORACLE/ADMIN2010. 2. 26. 15:59
반응형
expdp 사용자/암호 @SID  directory=디렉토리명 dumpfile=파일명  EXCLUDE=TABLE:\"IN \(\'테이블명1\', \'테이블명2\'\)\"

expdp testi/test@SIDTEST directory=dmp dumpfile=expdp_test.dmp EXCLUDE=TABLE:\"IN \(\'EMP1\', \'EMP2\'\)\"

여기서의 관건은 EXCLUDE 다음에 나오는 작은따옴표 앞에 역슬래시가 있어야한다는 사실이다!!!

이거 않넣고 하면 주구 장창

Value for EXCLUDE is badly formed. 이란 메시지를 징글징글하게 볼수 있을것이다.


출처 : http://cubenuri.egloos.com/2326779
반응형

'ORACLE > ADMIN' 카테고리의 다른 글

ORACLE EM 포트 변경 및 관리 명령어  (0) 2010.04.19
ORACLE Datatype Limits  (0) 2010.03.05
sqlplus 환경 설정  (0) 2009.12.09
oracle 권한확인  (0) 2009.12.04
emca 재구성  (0) 2009.11.20
Posted by [PineTree]
ORACLE/ADMIN2009. 12. 9. 14:32
반응형

vi $ORACLE_HOME/sqlplus/admin/glogin.sql

-- User Environment
set timing on
set time on
set pagesize 100
set linesize 160
반응형

'ORACLE > ADMIN' 카테고리의 다른 글

ORACLE Datatype Limits  (0) 2010.03.05
데이타펌프 (data pump) 특정 테이블을 익스포트 받지 않을 때  (0) 2010.02.26
oracle 권한확인  (0) 2009.12.04
emca 재구성  (0) 2009.11.20
DBLINK시 LOB CLOB 컬럼오류 해결  (0) 2009.11.20
Posted by [PineTree]
ORACLE/ADMIN2009. 12. 4. 09:58
반응형
부여된 권한 확인
 부여받거나 부여한 권한을 확인하기 위해 Dictionary뷰를 액세스한다.

Dictionary뷰 설명
ROLE_SYS_PRIVS role에 부여된 시스템 권한
ROLE_TAB_PRIVS role에 부여된 테이블 권한
USER_ROLE_PRIVS 사용자가 액세스할 수 있는 role
USER_TAB_PRIVS_MADE 사용자가 부여한 객체 권한
USER_TAB_PRIVS_RECD 사용자에게 부여된 객체 권한
USER_COL_PRIVS_RECD 특정 Column에 대하여 사용자에게
부여된 객체 권한
부여된 권한 확인
예를 들어,DELETE 권한이 없는 테이블의 행을 삭제하는 것과 같이, 허가되지 않은 작업을 수
행 하려 한다면 Oracle7 Server는 작업을 허용하지 않을 것이다. Oracle7 Server의 오류 메
시지인 "테이블이나 뷰가 없습니다"를 받게 되면 다음 중 한 가지를 했다는 뜻이다:
존재하지 않는 테이블이나 뷰의 이름 사용
적절한 권한이 없는 테이블이나 뷰에 대한 작업 시도
부여받은 권한은 무엇인가?

Dictionary뷰를 액세스하면 부여받은 권한을 볼 수 있다.
데이타 사전 테이블 설명
ROLE_SYS_PRIVS role에 부여된 시스템 권한
ROLE_TAB_PRIVS role에 부여된 테이블 권한
USER_ROLE_PRIVS 사용자가 액세스할 수 있는 role
USER_TAB_PRIVS_MADE 사용자가 부여한 객권한
USER_TAB_PRIVS_RECD 사용자에게 부여된 객체 권한
USER_COL_PRIVS_RECD 특정 Column에 대하여 사용자에게
부여된 객체 권한
반응형

'ORACLE > ADMIN' 카테고리의 다른 글

데이타펌프 (data pump) 특정 테이블을 익스포트 받지 않을 때  (0) 2010.02.26
sqlplus 환경 설정  (0) 2009.12.09
emca 재구성  (0) 2009.11.20
DBLINK시 LOB CLOB 컬럼오류 해결  (0) 2009.11.20
logminer + 불완전 복구  (0) 2009.11.19
Posted by [PineTree]
ORACLE/ADMIN2009. 11. 20. 17:22
반응형


리스너 포트 1525 em포트 1082

 emca -config dbcontrol db -repos recreate -SID ora11gr2 -PORT 1525 -ORACLE_HOME /u0/app/ora11gr2/product/11gr2/db_1 -DBCONTROL_HTTP_PORT 1082

반응형

'ORACLE > ADMIN' 카테고리의 다른 글

sqlplus 환경 설정  (0) 2009.12.09
oracle 권한확인  (0) 2009.12.04
DBLINK시 LOB CLOB 컬럼오류 해결  (0) 2009.11.20
logminer + 불완전 복구  (0) 2009.11.19
Index Coalesce VS. Shrink  (0) 2009.11.06
Posted by [PineTree]