<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>You&#039;ve got to find what you love.</title>
		<link>http://develop.sunshiny.co.kr/</link>
		<description>Stay Hungry. Stay Foolish.</description>
		<language>ko</language>
		<pubDate>Mon, 21 May 2012 10:26:11 +0900</pubDate>
		<generator>Textcube 1.7.6 : Staccato</generator>
		<item>
			<title>Oracle - 바인드 변수에 대하여(테스트)</title>
			<link>http://develop.sunshiny.co.kr/738</link>
			<description>&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;# 바인드 변수를 사용하라&lt;/span&gt;&lt;br&gt;&lt;br&gt;바인드 변수는 쿼리에 있어서 플레이스 홀더(역자 주_placeholder, 빠져 있는 것을 대신하는 기호)다.&lt;br&gt;예를 들어 직원 123을 조회하기 위해 다음과 같은 쿼리를 할 수 있다.&lt;br&gt;&lt;pre name=&quot;CodeHighLighterCode&quot; class=&quot;brush:sql;&quot; cols=&quot;60&quot; rows=&quot;10&quot; readonly=&quot;readonly&quot;&gt;
select * from emp where empno = 123 ;
&lt;/pre&gt;&lt;br&gt;다른 방식으로는 이렇게도 쿼리할 수 있다.&lt;br&gt;&lt;pre name=&quot;CodeHighLighterCode&quot; class=&quot;brush:sql;&quot; cols=&quot;60&quot; rows=&quot;10&quot; readonly=&quot;readonly&quot;&gt;
select * from emp where empno = :empno ;
&lt;/pre&gt;&lt;br&gt;일반적인 시스템에는 사원번호 123을 한 번 조회하고 끝나고, 다음으로 사원번호 456을 조회하고, 그 다음엔 789를 조회하는 식이다.(역자 주_ 세 개의 사원번호를 조회하기 위해 세 개의 서로 다른 Literal SQL을 실행한다)&lt;br&gt;아니면 위에 말한 SELECT 문장들처럼 인서트 문을 사용하는데, 바인드 변수를 사용하지 않으면 기본키 값(empno)이 문장 안에 하드 코딩될 것이다.&lt;br&gt;그리고 인서트 문장은 다시는 재사용될 수 없을 것이다.(역자 주_ 물론 누군가 세 개의 사원번호와 동일한 사원번호를 입력하여 조회한다면 재사용될 것이지만)&lt;br&gt;쿼리 안에 상수를 대입하여 사용하면, 데이터베이스는 모든 쿼리를 새로운 쿼리로 인식하여 파싱하고, 문법을 검사하고, 보안을 체크하고, 옵티마이징하는 등의 일을 할 것이다.&lt;br&gt;즉 모든 쿼리가 실행될 때마다 다시 컴파일되어야 한다는 말이다.&lt;br&gt;&lt;br&gt;두 번째 쿼리는 :empno라는 바인드 변수를 사용했다.&lt;br&gt;:empno 값은 쿼리가 실행될 때마다 주어진다.&lt;br&gt;이 쿼리는 한 번 컴파일 된 후 shared pool(라이브러리 캐시)에 저장되며, 동일한 쿼리가 실행될 때 shared pool에서 가져와 재사용될 수 있다.&lt;br&gt;성능과 확장성의 관점에서 두 가지 방식의 차이는 극적일 정도로 엄청나다.&lt;br&gt;&lt;br&gt;성능 관점에서 바인드 변수의 사용 여부가 결과에 얼마나 큰 차이를 가져올 수 있는지를 간단한 테스트를 통해 알아보자.&lt;br&gt;&lt;pre name=&quot;CodeHighLighterCode&quot; class=&quot;brush:sql;&quot; cols=&quot;60&quot; rows=&quot;10&quot; readonly=&quot;readonly&quot;&gt;
SCOTT@ora10g&amp;gt;create table t( x int );

Table created.

SCOTT@ora10g&amp;gt;create or replace procedure proc1
&amp;nbsp; 2&amp;nbsp; as
&amp;nbsp; 3&amp;nbsp; begin
&amp;nbsp; 4 &amp;nbsp; &amp;nbsp;&amp;nbsp; for i in 1 .. 10000
&amp;nbsp; 5 &amp;nbsp; &amp;nbsp;&amp;nbsp; loop
&amp;nbsp; 6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; execute immediate
&amp;nbsp; 7 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &#039;insert into t values ( :x )&#039; using i;
&amp;nbsp; 8 &amp;nbsp; &amp;nbsp;&amp;nbsp; end loop;
&amp;nbsp; 9&amp;nbsp; end;
&amp;nbsp;10&amp;nbsp; /

Procedure created.

-- 두번째 프로시저는 입력되는 각 로우마다 각각 다른 SQL(하드파스)문이 실행되도록 하였다.

SCOTT@ora10g&amp;gt;create or replace procedure proc2
as
&amp;nbsp; 2 &amp;nbsp;&amp;nbsp; 3&amp;nbsp; begin
&amp;nbsp; 4 &amp;nbsp; &amp;nbsp;&amp;nbsp; for i in 1 .. 10000
&amp;nbsp; 5 &amp;nbsp; &amp;nbsp;&amp;nbsp; loop
&amp;nbsp; 6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; execute immediate
&amp;nbsp; 7 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &#039;insert into t values ( &#039;||i||&#039;)&#039;;
&amp;nbsp; 8 &amp;nbsp; &amp;nbsp;&amp;nbsp; end loop;
&amp;nbsp; 9&amp;nbsp; end;
&amp;nbsp;10&amp;nbsp; /

Procedure created.

/*
&amp;nbsp; &amp;nbsp; 위 두 프로시저의 차이점은 바인드 변수를 사용한 것과 그렇지 않은 것과의 차이다.
&amp;nbsp; &amp;nbsp; 둘 다 동적 SQL을 사용했으며 로직은 동일하다.
&amp;nbsp; &amp;nbsp; 즉, 바인드 변수의 사용 여부에만 차이가 있다.

&amp;nbsp; &amp;nbsp; 두개의 결과물을 비교하기 위해 필자(토마스 카이트)가 개발한 runstats라는 툴을 사용할 것이다.
*/

SCOTT@ora10g&amp;gt;set serveroutput on
SCOTT@ora10g&amp;gt;
SCOTT@ora10g&amp;gt;exec runstats_pkg.rs_start

PL/SQL procedure successfully completed.

SCOTT@ora10g&amp;gt;exec proc1


PL/SQL procedure successfully completed.


SCOTT@ora10g&amp;gt;exec runstats_pkg.rs_middle

PL/SQL procedure successfully completed.

SCOTT@ora10g&amp;gt;exec proc2


PL/SQL procedure successfully completed.

SCOTT@ora10g&amp;gt;exec runstats_pkg.rs_stop(10000)
Run1 ran in 91 cpu hsecs
Run2 ran in 629 cpu hsecs
run 1 ran in 14.47% of the time

/*
&amp;nbsp; &amp;nbsp; 아래에서 제시할 결과는 CPU Time에 근거해서, 바인드 변수를 사용하지 않은 것이 바인드 변수를 
&amp;nbsp; &amp;nbsp; 사용한 것에 비해 10,000개의 로우를 입력하는 데 훨씬 긴 시간이 필요하고,
&amp;nbsp; &amp;nbsp; 훨씬 더 많은 자원을 차지한다는 것을 명백하게 보여 준다.
&amp;nbsp; &amp;nbsp; 바인드 변수 없이 로우들을 입력하면 CPU Time이 약 20배나 더 소모되었다.
*/

Name &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Run1 &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Run2 &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Diff
STAT...parse count (hard) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 5 &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,012 &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,007
STAT...parse count (total) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 38 &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,053 &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,015
STAT...calls to get snapshot s &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 67 &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,094 &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,027
STAT...recursive calls &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,422 &amp;nbsp; &amp;nbsp;&amp;nbsp; 20,966 &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,544
LATCH.simulator hash latch &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 194 &amp;nbsp; &amp;nbsp;&amp;nbsp; 11,336 &amp;nbsp; &amp;nbsp;&amp;nbsp; 11,142
LATCH.simulator lru latch &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 173 &amp;nbsp; &amp;nbsp;&amp;nbsp; 11,324 &amp;nbsp; &amp;nbsp;&amp;nbsp; 11,151
STAT...db block gets from cach &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,406 &amp;nbsp; &amp;nbsp;&amp;nbsp; 30,368 &amp;nbsp; &amp;nbsp;&amp;nbsp; 19,962
STAT...db block gets &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,406 &amp;nbsp; &amp;nbsp;&amp;nbsp; 30,368 &amp;nbsp; &amp;nbsp;&amp;nbsp; 19,962
LATCH.enqueues &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 715 &amp;nbsp; &amp;nbsp;&amp;nbsp; 21,355 &amp;nbsp; &amp;nbsp;&amp;nbsp; 20,640
LATCH.enqueue hash chains &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 781 &amp;nbsp; &amp;nbsp;&amp;nbsp; 21,492 &amp;nbsp; &amp;nbsp;&amp;nbsp; 20,711
LATCH.session allocation &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 287 &amp;nbsp; &amp;nbsp;&amp;nbsp; 28,804 &amp;nbsp; &amp;nbsp;&amp;nbsp; 28,517
STAT...session logical reads &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 10,711 &amp;nbsp; &amp;nbsp;&amp;nbsp; 40,591 &amp;nbsp; &amp;nbsp;&amp;nbsp; 29,880
LATCH.library cache pin &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 40,589 &amp;nbsp; &amp;nbsp;&amp;nbsp; 75,113 &amp;nbsp; &amp;nbsp;&amp;nbsp; 34,524
LATCH.kks stats &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 8 &amp;nbsp; &amp;nbsp;&amp;nbsp; 40,344 &amp;nbsp; &amp;nbsp;&amp;nbsp; 40,336
LATCH.library cache lock &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 559 &amp;nbsp; &amp;nbsp;&amp;nbsp; 62,594 &amp;nbsp; &amp;nbsp;&amp;nbsp; 62,035
LATCH.cache buffers chains &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 56,165 &amp;nbsp; &amp;nbsp; 129,165 &amp;nbsp; &amp;nbsp;&amp;nbsp; 73,000
STAT...physical read bytes &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp;&amp;nbsp; 81,920 &amp;nbsp; &amp;nbsp;&amp;nbsp; 81,920
STAT...physical read total byt &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp;&amp;nbsp; 81,920 &amp;nbsp; &amp;nbsp;&amp;nbsp; 81,920
LATCH.row cache objects &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 494 &amp;nbsp; &amp;nbsp; 128,030 &amp;nbsp; &amp;nbsp; 127,536
STAT...session uga memory &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 65,464 &amp;nbsp; &amp;nbsp; -65,464 &amp;nbsp;&amp;nbsp; -130,928
STAT...session pga memory &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 65,536 &amp;nbsp; &amp;nbsp; -65,536 &amp;nbsp;&amp;nbsp; -131,072
STAT...session pga memory max &amp;nbsp; &amp;nbsp;&amp;nbsp; 262,144 &amp;nbsp; &amp;nbsp;&amp;nbsp; 65,536 &amp;nbsp;&amp;nbsp; -196,608
LATCH.library cache &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 41,215 &amp;nbsp; &amp;nbsp; 239,696 &amp;nbsp; &amp;nbsp; 198,481
STAT...session uga memory max &amp;nbsp; &amp;nbsp;&amp;nbsp; 261,964 &amp;nbsp; &amp;nbsp;&amp;nbsp; 57,880 &amp;nbsp;&amp;nbsp; -204,084
LATCH.shared pool &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 20,470 &amp;nbsp; &amp;nbsp; 229,382 &amp;nbsp; &amp;nbsp; 208,912

Run1 latches total versus runs -- difference and pct
Run1 &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Run2 &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Diff &amp;nbsp; &amp;nbsp; &amp;nbsp; Pct
164,982 &amp;nbsp; 1,009,419 &amp;nbsp; &amp;nbsp; 844,437 &amp;nbsp; &amp;nbsp; 16.34%

PL/SQL procedure successfully completed.




&lt;/pre&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; 바인드 변수를 사용한 첫 번째 방법은 4번 하드 파스를 했고, 바인드 변수를 사용하지 않은 것은 &lt;br&gt;&amp;nbsp; &amp;nbsp; 입력하는 문장마다 한 번씩 10,000번 하드 파스를 했다는 것을 알 수 있다.&lt;br&gt;&amp;nbsp; &amp;nbsp; 그러나 하드 파싱 항목의 차이는 단지 빙산의 일각일 뿐이다.&lt;br&gt;&amp;nbsp; &amp;nbsp; 여기서 바인드 변수를 사용하지 않는 방법은 바인드 변수를 사용하는 것보다 &lt;br&gt;&amp;nbsp; &amp;nbsp; 거의 20배 정도의 래치를 사용했다는 것을 알 수 있다.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;출처 : 전문가를 위한 오라클 데이터베이스 아키텍처 - 토마스 카이트&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
			<category>Oracle</category>
			<category>oracle</category>
			<category>바인드변수</category>
			<author>(sunshiny)</author>
			<guid>http://develop.sunshiny.co.kr/738</guid>
			<comments>http://develop.sunshiny.co.kr/738#entry738comment</comments>
			<pubDate>Sun, 06 May 2012 10:42:11 +0900</pubDate>
		</item>
		<item>
			<title>Oracle - 디폴트 롤, DBA, CONNECT, RESOURCE</title>
			<link>http://develop.sunshiny.co.kr/736</link>
			<description>&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;# 디폴트 롤&lt;/span&gt;&lt;br&gt;데이터베이스 설치 시, 디폴트 스키마들이 생성되는 것처럼 디폴트 롤 또한 생성되게 된다.&lt;br&gt;이 디폴트 롤의 대부분은 많은 문제점을 내포하고 있으며, 조만간 변경되거나 삭제될 것이다.&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;* CONNECT 롤&lt;/span&gt;&lt;br&gt;버전에 따른 데이터베이스에 대한 접근 외의 권한도 존재&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;* RESOURCE 롤&lt;/span&gt;&lt;br&gt;다양한 권한을 이미 내장하고 있으며, UNLIMITED_TABLESPACE 라는 권한이 숨겨진 상태로 할당되어 있어 이 권한을 가지는 사람은 데이터베이스 내에서 존재하는 모든 테이블스페이스들을 대상으로 무제한 저장공간을 사용하는 것이 가능하다.&lt;br&gt;이 롤의 사용 여부를 반드시 재검토해보아야만 한다.&lt;br&gt;&lt;br&gt;&lt;pre name=&quot;CodeHighLighterCode&quot; class=&quot;brush:sql;&quot; cols=&quot;60&quot; rows=&quot;10&quot; readonly=&quot;readonly&quot;&gt;
- Release 9.2.0.8.0 - Production

SQL&amp;gt; SELECT * --PRIVILEGE
&amp;nbsp; 2 &amp;nbsp; &amp;nbsp;&amp;nbsp; FROM DBA_SYS_PRIVS
&amp;nbsp; 3 &amp;nbsp; &amp;nbsp;&amp;nbsp; WHERE GRANTEE IN(&#039;CONNECT&#039;, &#039;RESOURCE&#039;)
&amp;nbsp; 4&amp;nbsp; ;

GRANTEE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; PRIVILEGE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ADM
------------------------------ ---------------------------------------- ---
CONNECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; CREATE VIEW &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO
CONNECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; CREATE TABLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
CONNECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ALTER SESSION &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO
CONNECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; CREATE CLUSTER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
CONNECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; CREATE SESSION &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
CONNECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; CREATE SYNONYM &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
CONNECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; CREATE SEQUENCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO
CONNECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; CREATE DATABASE LINK &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE TYPE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE TABLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE CLUSTER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE TRIGGER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE OPERATOR &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE SEQUENCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE INDEXTYPE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE PROCEDURE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO

16 rows selected.

- Release 10.2.0.1 , Release 11.2.0.1

SQL&amp;gt; SELECT * --PRIVILEGE
&amp;nbsp; 2 &amp;nbsp; &amp;nbsp;&amp;nbsp; FROM DBA_SYS_PRIVS
&amp;nbsp; 3 &amp;nbsp; &amp;nbsp;&amp;nbsp; WHERE GRANTEE IN(&#039;CONNECT&#039;, &#039;RESOURCE&#039;)
&amp;nbsp; 4&amp;nbsp; ;

GRANTEE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; PRIVILEGE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ADM
------------------------------ ---------------------------------------- ---
CONNECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; CREATE SESSION &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE TRIGGER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE SEQUENCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE TYPE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE PROCEDURE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE CLUSTER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE OPERATOR &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE INDEXTYPE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CREATE TABLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO

9 rows selected.


/*
&amp;nbsp; &amp;nbsp; 테스트 계정 생성
&amp;nbsp; &amp;nbsp; Release 11.2.0.1
*/

SQL&amp;gt; CREATE USER user_test IDENTIFIED BY test ;

User created.

SQL&amp;gt; SELECT GRANTEE, PRIVILEGE
&amp;nbsp; 2 &amp;nbsp; &amp;nbsp;&amp;nbsp; FROM DBA_SYS_PRIVS
&amp;nbsp; 3 &amp;nbsp; &amp;nbsp;&amp;nbsp; WHERE PRIVILEGE LIKE &#039;UNLIMITED%&#039;
&amp;nbsp; 4 &amp;nbsp; &amp;nbsp;&amp;nbsp; AND GRANTEE = &#039;USER_TEST&#039;
&amp;nbsp; 5&amp;nbsp; ; &amp;nbsp;&amp;nbsp; 

no rows selected

-- RESOURCE 롤 권한 부여
SQL&amp;gt; GRANT RESOURCE TO user_test ;

Grant succeeded.

SQL&amp;gt; SELECT GRANTEE, PRIVILEGE
&amp;nbsp; 2 &amp;nbsp; &amp;nbsp;&amp;nbsp; FROM DBA_SYS_PRIVS
&amp;nbsp; 3 &amp;nbsp; &amp;nbsp;&amp;nbsp; WHERE PRIVILEGE LIKE &#039;UNLIMITED%&#039;
&amp;nbsp; 4 &amp;nbsp; &amp;nbsp;&amp;nbsp; AND GRANTEE = &#039;USER_TEST&#039;
&amp;nbsp; 5&amp;nbsp; ;&amp;nbsp; 

GRANTEE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; PRIVILEGE
------------------------------ ----------------------------------------
USER_TEST &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; UNLIMITED TABLESPACE

&lt;/pre&gt;&lt;br&gt;이 외에도 잘못 쓰이는 롤로서 DBA도 존재한다.&lt;br&gt;이와 같이 디폴트 롤들이 잘못 사용되어지는 일이 없도록 관리하려면 다음의 세 가지 방식들을 고려하면 된다.&lt;br&gt;&lt;br&gt;1. 디폴트 롤들에게 할당된 권한을 박탈한다.&lt;br&gt;2. 디폴트 롤들을 삭제한다. 하지만 이 같은 경우 몇몇 애플리케이션 스키마에서 문제가 발생할 수 있기 때문에 기존에 검토해야만 하는 사항들이 많이 존재한다.&lt;br&gt;3. DBA, CONNECT, RESOURCE 등과 같은 디폴트 롤들을 일반 유저에게 할당하지 않는다.&lt;br&gt;&lt;br&gt;다음은 DBA_ROLES 뷰를 조회한, 디폴트 환경에서 제공되는 디폴트 롤들의 리스트이다.&lt;br&gt;이 개별적인 롤들이 포함하고 있는 권한들의 파악 및 유저에게의 할당 현황, 설정 및 사용 내역은 반드시 초기에 모니터링 해야 하는 부분이다.&lt;br&gt;&lt;br&gt;&lt;pre name=&quot;CodeHighLighterCode&quot; class=&quot;brush:sql;&quot; cols=&quot;60&quot; rows=&quot;10&quot; readonly=&quot;readonly&quot;&gt;
SQL&amp;gt; DESC DBA_ROLES;
&amp;nbsp;Name &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Null? &amp;nbsp;&amp;nbsp; Type
&amp;nbsp;----------------------------------------- -------- ----------------------------
&amp;nbsp;ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NOT NULL VARCHAR2(30)
&amp;nbsp;PASSWORD_REQUIRED &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; VARCHAR2(8)
&amp;nbsp;AUTHENTICATION_TYPE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; VARCHAR2(11)

SQL&amp;gt; SELECT COUNT(*) FROM DBA_ROLES ;

&amp;nbsp; COUNT(*)
----------
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 55

SQL&amp;gt; SELECT * FROM DBA_ROLES ;

ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PASSWORD AUTHENTICAT
------------------------------ -------- -----------
CONNECT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
RESOURCE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
DBA &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
SELECT_CATALOG_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
EXECUTE_CATALOG_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
DELETE_CATALOG_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
EXP_FULL_DATABASE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
IMP_FULL_DATABASE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
LOGSTDBY_ADMINISTRATOR &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
DBFS_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
AQ_ADMINISTRATOR_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
AQ_USER_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
DATAPUMP_EXP_FULL_DATABASE &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
DATAPUMP_IMP_FULL_DATABASE &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
ADM_PARALLEL_EXECUTE_TASK &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
GATHER_SYSTEM_STATISTICS &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
JAVA_DEPLOY &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
RECOVERY_CATALOG_OWNER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
SCHEDULER_ADMIN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
HS_ADMIN_SELECT_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
HS_ADMIN_EXECUTE_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
HS_ADMIN_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
GLOBAL_AQ_USER_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; GLOBAL &amp;nbsp; GLOBAL
OEM_ADVISOR &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
OEM_MONITOR &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
WM_ADMIN_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
JAVAUSERPRIV &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
JAVAIDPRIV &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
JAVASYSPRIV &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
JAVADEBUGPRIV &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
EJBCLIENT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
JMXSERVER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
JAVA_ADMIN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
CTXAPP &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
XDBADMIN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
XDB_SET_INVOKER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
AUTHENTICATEDUSER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
XDB_WEBSERVICES &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
XDB_WEBSERVICES_WITH_PUBLIC &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
XDB_WEBSERVICES_OVER_HTTP &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
ORDADMIN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
OLAPI_TRACE_USER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
OLAP_XS_ADMIN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
OWB_USER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
OLAP_DBA &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
CWM_USER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
OLAP_USER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
SPATIAL_WFS_ADMIN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
WFS_USR_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; YES &amp;nbsp; &amp;nbsp;&amp;nbsp; PASSWORD
SPATIAL_CSW_ADMIN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; YES &amp;nbsp; &amp;nbsp;&amp;nbsp; PASSWORD
CSW_USR_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; YES &amp;nbsp; &amp;nbsp;&amp;nbsp; PASSWORD
MGMT_USER &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
APEX_ADMINISTRATOR_ROLE &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE
OWB$CLIENT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; YES &amp;nbsp; &amp;nbsp;&amp;nbsp; PASSWORD
OWB_DESIGNCENTER_VIEW &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; NO &amp;nbsp; &amp;nbsp; &amp;nbsp; NONE

55 rows selected.

&lt;/pre&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;출처 : 데이터베이스 보안 - 조은백&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
			<category>Oracle</category>
			<category>CONNECT</category>
			<category>DBA</category>
			<category>RESOURCE</category>
			<category>디폴트롤</category>
			<author>(sunshiny)</author>
			<guid>http://develop.sunshiny.co.kr/736</guid>
			<comments>http://develop.sunshiny.co.kr/736#entry736comment</comments>
			<pubDate>Fri, 27 Apr 2012 17:39:45 +0900</pubDate>
		</item>
		<item>
			<title>Oracle - 권한 및 롤 관리</title>
			<link>http://develop.sunshiny.co.kr/735</link>
			<description>&lt;strong&gt;# 권한 및 롤 관리&lt;/strong&gt; &lt;br&gt;&lt;pre name=&quot;CodeHighLighterCode&quot; class=&quot;brush:sql;&quot; cols=&quot;60&quot; rows=&quot;10&quot; readonly=&quot;readonly&quot;&gt;
-- 계정 및 패스워드 정보 &amp;nbsp;&amp;nbsp; 
SELECT NAME, PASSWORD 
&amp;nbsp; &amp;nbsp; FROM SYS.USER$ WHERE TYPE#=1
; &amp;nbsp;&amp;nbsp; 

-- DBA 권한 사용자 조회
SELECT DISTINCT * --A.NAME
&amp;nbsp; &amp;nbsp; FROM SYS.USER$ A, SYS.SYSAUTH$ B
&amp;nbsp; &amp;nbsp; WHERE A.USER# = B.GRANTEE#
&amp;nbsp; &amp;nbsp; AND B.PRIVILEGE# = 4 -- DBA 권한
; &amp;nbsp; 

&lt;/pre&gt; 
&lt;p&gt;- 시스템 권한&lt;br&gt;시스템 권한은 데이터베이스 내에서 데이터를 대상으로 하는 작업들을 제외한 나머지 영역에서 유저가 실행할 수 있는 모든 액션을 대상으로 한다.&lt;br&gt;실제 이러한 시스템 권한은 두가지로 소분류가 가능한데, 첫 번째로 특정 객체가 아니라 객체 종류 전체에 걸쳐 실행되는 권한으로 정의할 수 있으며, 흔히 &#039;ANY&#039; 권한으로 정의할 수 있다.&lt;br&gt;이러한 ANY 권한은 100개 이상이 존재한다.&lt;br&gt;ANY 권한의 예로서 EXECUTE ANY PROCEDURE 등을 생각해 볼 수 있으며, 이때 주의할 점은 ANY 권한을 할당받았다고 하여 SYS 소유의 객체까지 자동으로 대상이 되지는 않는다는 것이다.&lt;br&gt;이것은 07_DICTIONARY_ACCESSIBILITY 파라미터의 값을 TRUE 로 설정하였을 시에 적용되며, 보안상 심각한 문제를 유발할 수 있기에 항상 디폴트 값인 FALSE 를 유지해야만 한다.&lt;br&gt;&lt;br&gt;&lt;pre name=&quot;CodeHighLighterCode&quot; class=&quot;brush:sql;&quot; cols=&quot;60&quot; rows=&quot;10&quot; readonly=&quot;readonly&quot;&gt;
SELECT NAME 
&amp;nbsp; &amp;nbsp; FROM SYS.SYSTEM_PRIVILEGE_MAP ; 

SELECT NAME 
&amp;nbsp; &amp;nbsp; FROM SYS.TABLE_PRIVILEGE_MAP ;

&lt;/pre&gt;&lt;br&gt;&lt;br&gt;&lt;strong&gt;# 중요한 시스템 권한&lt;/strong&gt;&lt;br&gt;부적절한 관리가 이루어졌을 경우, 데이터베이스 서버 상의 전체 통제권을 획득할 수 있는 중요한 시스템 권한들이 있다.&lt;br&gt;
&lt;/p&gt;&lt;table style=&quot;WIDTH: 507pt; BORDER-COLLAPSE: collapse&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; width=&quot;676&quot;&gt;
&lt;colgroup&gt;
&lt;col style=&quot;WIDTH: 166pt; mso-width-source: userset; mso-width-alt: 7072&quot; width=&quot;221&quot;&gt;
&lt;col style=&quot;WIDTH: 341pt; mso-width-source: userset; mso-width-alt: 14560&quot; width=&quot;455&quot;&gt;
&lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr style=&quot;HEIGHT: 16.5pt&quot; height=&quot;22&quot;&gt;
&lt;td style=&quot;BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: #dbe5f1; WIDTH: 166pt; HEIGHT: 16.5pt; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid&quot; class=&quot;xl65&quot; height=&quot;22&quot; width=&quot;221&quot;&gt;&lt;strong&gt;&lt;font face=&quot;맑은 고딕&quot; size=&quot;2&quot;&gt;권한 명&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext; BACKGROUND-COLOR: #dbe5f1; WIDTH: 341pt; BORDER-TOP: windowtext 0.5pt solid; BORDER-RIGHT: windowtext 0.5pt solid&quot; class=&quot;xl65&quot; width=&quot;455&quot;&gt;&lt;strong&gt;&lt;font face=&quot;맑은 고딕&quot; size=&quot;2&quot;&gt;설명&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;HEIGHT: 27pt&quot; height=&quot;36&quot;&gt;
&lt;td style=&quot;BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; HEIGHT: 27pt; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid&quot; class=&quot;xl67&quot; height=&quot;36&quot;&gt;&lt;font face=&quot;맑은 고딕&quot; size=&quot;2&quot;&gt;EXECUTE ANY PROCEDURE&lt;/font&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext; BACKGROUND-COLOR: transparent; WIDTH: 341pt; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid&quot; class=&quot;xl66&quot; width=&quot;455&quot;&gt;&lt;font face=&quot;맑은 고딕&quot; size=&quot;2&quot;&gt;가장 중요한 시스템 계열 권한 중 하나이며, 이 권한이 잘못 허가되었을 경우, DBA 권한을 순식간에 획득할 수 있다.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;HEIGHT: 108pt&quot; height=&quot;144&quot;&gt;
&lt;td style=&quot;BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; HEIGHT: 108pt; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid&quot; class=&quot;xl67&quot; height=&quot;144&quot;&gt;&lt;font face=&quot;맑은 고딕&quot; size=&quot;2&quot;&gt;SELECT ANY DICTIONARY&lt;/font&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext; BACKGROUND-COLOR: transparent; WIDTH: 341pt; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid&quot; class=&quot;xl66&quot; width=&quot;455&quot;&gt;&lt;font face=&quot;맑은 고딕&quot; size=&quot;2&quot;&gt;SELECT ANY DICTIONARY 권한을 가진 유저는 데이터 딕셔너리 내의 모든 테이블을 조회할 수 있다.&lt;br&gt;예를 들어 SYS.USERS$ 테이블에서 각 유저별 패스워드의 해시 값을 획득하는 것이 가능하다.&lt;br&gt;일반적인 경우에 이 권한을 가진 유저가 DBSNMP 유저 계정이다.&lt;br&gt;이 유저 계정은 디폴트를 구축되는 계정 중 하나로서, DBA 권한이 없음에도 불고하고 데이터 딕셔너리를 조회할 수 있는 유저 계정으로서 이 유저 계정을 활용하여 DBA 권한을 획득하는 것이 가능하다.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;HEIGHT: 40.5pt&quot; height=&quot;54&quot;&gt;
&lt;td style=&quot;BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; WIDTH: 166pt; HEIGHT: 40.5pt; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid&quot; class=&quot;xl68&quot; height=&quot;54&quot; width=&quot;221&quot;&gt;&lt;font face=&quot;맑은 고딕&quot; size=&quot;2&quot;&gt;GRANT ANY PRIVILEGE&lt;br&gt;GRANT ANY ROLE&lt;br&gt;GRANT ANY OBJECT PROVILEGE&lt;/font&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext; BACKGROUND-COLOR: transparent; WIDTH: 341pt; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid&quot; class=&quot;xl66&quot; width=&quot;455&quot;&gt;&lt;font face=&quot;맑은 고딕&quot; size=&quot;2&quot;&gt;이 중 어떠한 권한이라도 유저에게 할당될 경우, 해당 유저 계정은 데이터베이스의 통제권을 획득하는 것이 가능하다.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;HEIGHT: 40.5pt&quot; height=&quot;54&quot;&gt;
&lt;td style=&quot;BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; HEIGHT: 40.5pt; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid&quot; class=&quot;xl67&quot; height=&quot;54&quot;&gt;&lt;font face=&quot;맑은 고딕&quot; size=&quot;2&quot;&gt;CREATE LIBRARY&lt;/font&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: windowtext 0.5pt solid; BORDER-LEFT: windowtext; BACKGROUND-COLOR: transparent; WIDTH: 341pt; BORDER-TOP: windowtext; BORDER-RIGHT: windowtext 0.5pt solid&quot; class=&quot;xl66&quot; width=&quot;455&quot;&gt;&lt;font face=&quot;맑은 고딕&quot; size=&quot;2&quot;&gt;만약 유저가 CREATE LIBRARY나 기타 LIBRARY 관련 권한을 할당받을 경우, 해당 유저는 외부저장 프로시저 내에 공격 코드를 심어 실행하는 것이 가능해 진다.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;br&gt;출처 : 데이터베이스 보안 - 조은백&lt;br&gt;&lt;br&gt;</description>
			<category>Oracle</category>
			<category>system_privilege_map</category>
			<author>(sunshiny)</author>
			<guid>http://develop.sunshiny.co.kr/735</guid>
			<comments>http://develop.sunshiny.co.kr/735#entry735comment</comments>
			<pubDate>Fri, 27 Apr 2012 17:05:27 +0900</pubDate>
		</item>
		<item>
			<title>Oracle - SQL*PLUS의 SYSDBA 접근 제어</title>
			<link>http://develop.sunshiny.co.kr/734</link>
			<description>&lt;p&gt;# SQL*PLUS의 SYSDBA 접근 제어&lt;/p&gt;
&lt;p&gt;UNIX 계열 운영체제에서 dba 그룹에 속해있는 계정들은 sqlplus / as sysdba 를 실행하여 SYSDBA로 접근하는 것이 가능하다.&lt;br&gt;주로 이와 같은 설정을 하는 경우는 편이성 및 SYS 암호 분실 시의 복구를 위함인데 이는 dba 그룹에 속한 모든 계정이 SYS로 접근 가능한 이유 때문에 또 다른 취약점을 생성해낼 수 있다.&lt;br&gt;SQLNET.ORA 파일에 다음과 같이 SQLNET.AUTHENTICATION_SERVICES 파라미터를 NONE 으로 설정할 경우, 위에서 자동 로그인 기능은 방지되어 반드시 SYS 유저 계정의 패스워드를 명시해야만 접근 가능하다.&lt;/p&gt;
&lt;p&gt;# sqlnet.ora 파일&lt;/p&gt;
&lt;div style=&quot;PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #c9edff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px&quot;&gt;SQLNET.AUTHENTICATION_SERVICES= (NONE)&lt;/div&gt;&lt;br&gt;&amp;nbsp;
&lt;div style=&quot;PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e4e4e4; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 10px&quot;&gt;
&lt;p&gt;[oracle@sunshiny-net admin]$ sqlplus &#039;/as sysdba&#039;&lt;/p&gt;
&lt;p&gt;SQL*Plus: Release 11.2.0.1.0 Production on Fri Apr 27 16:17:59 2012&lt;br&gt;Copyright (c) 1982, 2009, Oracle.&amp;nbsp; All rights reserved.&lt;/p&gt;
&lt;p&gt;ERROR:&lt;br&gt;ORA-01031: insufficient privileges&lt;/p&gt;
&lt;p&gt;Enter user-name: system&lt;br&gt;Enter password: &lt;br&gt;ERROR:&lt;br&gt;ORA-01017: invalid username/password; logon denied&lt;/p&gt;
&lt;p&gt;Enter user-name: system&lt;br&gt;Enter password: &lt;/p&gt;
&lt;p&gt;Connected to:&lt;br&gt;Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production&lt;br&gt;With the Partitioning, OLAP, Data Mining and Real Application Testing options&lt;/p&gt;
&lt;p&gt;SQL&amp;gt; show user&lt;br&gt;USER is &quot;SYSTEM&quot;&lt;/p&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;출처 : 데이터베이스 보안 - 조은백&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
			<category>Oracle</category>
			<category>sqlplus</category>
			<category>sysdba</category>
			<author>(sunshiny)</author>
			<guid>http://develop.sunshiny.co.kr/734</guid>
			<comments>http://develop.sunshiny.co.kr/734#entry734comment</comments>
			<pubDate>Fri, 27 Apr 2012 16:23:26 +0900</pubDate>
		</item>
		<item>
			<title>Oracle - PFILE, SPFILE 에 관하여</title>
			<link>http://develop.sunshiny.co.kr/733</link>
			<description>&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;# spfile&lt;BR&gt;&lt;/STRONG&gt;oracle 9i 이전 버젼에서는 오라클 인스턴스가 텍스트 파일 형태인 init&amp;lt;SID&amp;gt;.ora 파일을 이용해서 구동되었었다.&lt;BR&gt;이 파일은 기본적으로 ORACLE_HOME/dbs 디렉토리 에 위치하였었다.&lt;BR&gt;하지만 oracle 9i 에서는 SPFILE이라는 것이 새로 추가되었는데, DB서버 내에 저장되는 바이너리 파일이라는 점이 차이점이다.&lt;BR&gt;또한 인스턴스에 적용하고자 하는 파라미터 값의 변동사항을 인스턴스를 내리거나 구동시킬때마다 계속해서 적용될수 있게 할수 있다.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;# init&amp;lt;SID&amp;gt;.ora 와 spfile&amp;lt;SID&amp;gt;.ora 의 차이점&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;init&amp;lt;SID&amp;gt;.ora&lt;/STRONG&gt;&lt;BR&gt;텍스트파일이며 수동으로 파일을 수정할수 있다.&lt;BR&gt;DB재시작시 변경된 내용이 적용&lt;BR&gt;ORACLE_HOME/dbs에 위치&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;spfile&amp;lt;SID&amp;gt;.ora&lt;/STRONG&gt;&lt;BR&gt;바이너리 파일이며 직접 파일을 수정해서는 안된다.&lt;BR&gt;alter system 명령으로 record parameter 값을 변경한다.&lt;BR&gt;변경된 값을 일시적인지 지속적인지 결정가능하며 변경된 값을 삭제 , 또는 롤백할수 있다. (scope 속성이용)&lt;BR&gt;spfile의 생성은 init&amp;lt;SID&amp;gt;.ora 로부터 생성하여도된다.&lt;BR&gt;SQL&amp;gt; create spfile=&#039;spfile&amp;lt;SID&amp;gt;.ora&#039; from pfile = &#039;init&amp;lt;SID&amp;gt;.ora&#039; ;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;인스턴스에 적용시킬 파라미터를 spfile 또는 init&amp;lt;SID&amp;gt;.ora 파일에 저장할수 있는데&lt;BR&gt;oracle 9i에서 인스턴스 구동시 참조하는 파일은 아래와 같다.&lt;/P&gt;
&lt;P&gt;우선순위에 따라 참조하는 파일이 달라진다는것에 유념해야 한다.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;FONT color=#d41a01&gt;1순위 -&amp;nbsp; spfile&amp;lt;SID&amp;gt;.ora&lt;BR&gt;2순위 -&amp;nbsp; spfile.ora&lt;BR&gt;3순위 -&amp;nbsp; init&amp;lt;SID&amp;gt;.ora&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;그러므로 spfile&amp;lt;SID&amp;gt;.ora 파일이 없으면 spfile.ora 이파일도 없으면 , init&amp;lt;SID&amp;gt;.ora 순으로 참조하게 되는것이다.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;세 파일모두 존재 하지않으면 오라클에서는 다음과 같은 에러를 발생시킨다.&lt;BR&gt;&amp;nbsp;&amp;nbsp; SQL&amp;gt; startup&lt;BR&gt;&amp;nbsp;&amp;nbsp; ORA-01078: failure in processing system parameters&lt;BR&gt;&amp;nbsp;&amp;nbsp; LRM-00109: could not open parameter file&lt;BR&gt;&amp;nbsp;&amp;nbsp; &#039;D:\ORA901\DATABASE\INITORA901.ORA&#039;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;spfile을 확인하기 위해서는 다음과 같은 쿼리를 이용한다.&lt;/P&gt;
&lt;P&gt;SQL&amp;gt; show parameter spfile ;&lt;/P&gt;
&lt;P&gt;NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TYPE &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; VALUE&lt;BR&gt;------------------------------------ ----------- ------------------------------&lt;BR&gt;spfile &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string &amp;nbsp; &amp;nbsp;&amp;nbsp; %ORACLE_HOME%\DATABASE\SPFILE%&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; ORACLE_SID%.ORA&lt;BR&gt;&amp;nbsp;&lt;BR&gt;init.ora 파일의 지정.&lt;BR&gt;인스턴스 구동시 init.ora파일을 명시적으로 지정하는 방법은 이전 버젼과 동일하다.&lt;BR&gt;SQL&amp;gt;startup pfile=&#039;경로\init&amp;lt;SID&amp;gt;.ora&#039;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;마지막으로 인스턴스 구동중일때 , spfile의 parameter를 아래와 같이 바꿀수 있다.&lt;BR&gt;SQL&amp;gt;alter system set processes = 200 scope = spfile ; --scope는 spfile로써 spfile&amp;lt;SID&amp;gt;.ora에 기록됨&lt;BR&gt;System altered.&lt;BR&gt;SQL&amp;gt;select name, value from v$spparameter&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where name = &#039;processes&#039;;&lt;BR&gt;&amp;nbsp;&amp;nbsp; NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; VALUE&lt;BR&gt;&amp;nbsp;&amp;nbsp; --------------- -----&lt;BR&gt;&amp;nbsp;&amp;nbsp; processes &amp;nbsp; &amp;nbsp; &amp;nbsp; 200&lt;BR&gt;&amp;nbsp;&lt;BR&gt;SQL&amp;gt;alter system set db_cache_size = 3M;&lt;BR&gt;SQL&amp;gt;alter system set db_keep_cache_size=3M;&lt;BR&gt;SQL&amp;gt;alter system set db_recycle_cache_size=3M;&lt;BR&gt;SQL&amp;gt;alter system set shared_pool_size=60M;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;SQL&amp;gt;show parameter shared_pool_size ;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; TYPE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; VALUE&lt;BR&gt;----------------------- &amp;nbsp; &amp;nbsp;&amp;nbsp; ----- &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; -------------&lt;BR&gt;shared_pool_size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; big integer &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 67108864&lt;BR&gt;&amp;nbsp;&lt;BR&gt;--processesd를 200 으로 변경. 이떄 scope는 spfile로써 spfileSID.ora에 기록됨&lt;BR&gt;alter system set processes = 200 scope=spfile;&lt;BR&gt;--사용중인 spfile의 내용 &lt;BR&gt;select name, value from v$spparameter&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://blog.naver.com/jadin1?Redirect=Log&amp;amp;logNo=70025608635&quot; target=_blank&gt;[출처] [DEV.WON] ORACLE - spfile 에 대해|작성자 데브원&lt;BR&gt;&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;</description>
			<category>Oracle</category>
			<category>pfile</category>
			<category>spfile</category>
			<author>(sunshiny)</author>
			<guid>http://develop.sunshiny.co.kr/733</guid>
			<comments>http://develop.sunshiny.co.kr/733#entry733comment</comments>
			<pubDate>Fri, 27 Apr 2012 11:49:47 +0900</pubDate>
		</item>
	</channel>
</rss>

