<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발꾸러미</title>
    <link>https://dev-woo.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 7 Aug 2026 19:00:01 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>SK</managingEditor>
    <image>
      <title>개발꾸러미</title>
      <url>https://tistory1.daumcdn.net/tistory/2636078/attach/6ff93d3f0a7c477eaa0203c25d4497de</url>
      <link>https://dev-woo.tistory.com</link>
    </image>
    <item>
      <title>Flutter 페이지 이동(navigation)</title>
      <link>https://dev-woo.tistory.com/56</link>
      <description>&lt;p&gt;&lt;b&gt;1.&amp;nbsp;페이지&amp;nbsp;이동 &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1558140294481&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Widget build(BuildContext context){
	... 코드 ...
	
	onTab: _showOtherPage,
	
	... 코드 ...
}

_showOtherPage(){
	// Navigator.of(context)로 현재 context의 navigator에 접근한다
	// 새 route를 stack에 push하거나 pop할 수 있다
	Navigator.of(context).push(
		MaterialPageRoute(
			// builder 메서드는 항상 context를 취한다
			builder: (context){
				return otherPage();
			}
		),
	);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;=&amp;gt;&amp;nbsp;Flutter에서&amp;nbsp;자동으로&amp;nbsp;Appbar에&amp;nbsp;뒤로가기&amp;nbsp;버튼을&amp;nbsp;leading으로&amp;nbsp;추가해&amp;nbsp;준다 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;페이지&amp;nbsp;이동&amp;nbsp;+&amp;nbsp;리턴값&amp;nbsp;받기 &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1558140318102&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Widget build(BuildContext context){
	... 코드 ...
	
	onTab: _showOtherPage,
	
	... 코드 ...
}

_showOtherPage(){
	// Navigator.of(context)로 현재 context의 navigator에 접근한다
	// 새 route를 stack에 push하거나 pop할 수 있다
	TestClass newTestObject = await Navigator.of(context).push(
		MaterialPageRoute(
			// builder 메서드는 항상 context를 취한다
			builder: (context){
				return otherPage();
			}
		),
	);
	
	if(newTestObject != null){	
		... 코드 ...
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Android</category>
      <author>SK</author>
      <guid isPermaLink="true">https://dev-woo.tistory.com/56</guid>
      <comments>https://dev-woo.tistory.com/56#entry56comment</comments>
      <pubDate>Sat, 18 May 2019 09:45:43 +0900</pubDate>
    </item>
    <item>
      <title>Flutter sqlite 연동하기</title>
      <link>https://dev-woo.tistory.com/55</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://flutter.dev/docs/cookbook/persistence/sqlite&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://flutter.dev/docs/cookbook/persistence/sqlite&lt;/a&gt;&amp;nbsp;를&amp;nbsp;참조하여&amp;nbsp;작성 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1.&amp;nbsp;모델생성 &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1557833607044&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class&amp;nbsp;ExampleVo&amp;nbsp;{ 
&amp;nbsp;&amp;nbsp;final&amp;nbsp;int&amp;nbsp;id; 
&amp;nbsp;&amp;nbsp;final&amp;nbsp;String&amp;nbsp;contents; 

&amp;nbsp;&amp;nbsp;ExampleVo({this.id,&amp;nbsp;this.contents}); 

&amp;nbsp;&amp;nbsp;//&amp;nbsp;key&amp;nbsp;부분은&amp;nbsp;database의&amp;nbsp;컬럼명이&amp;nbsp;들어가야&amp;nbsp;한다 
&amp;nbsp;&amp;nbsp;Map&amp;lt;String,&amp;nbsp;dynamic&amp;gt;&amp;nbsp;toMap(){ 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;{ 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'id':id, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'contents':contents 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} 
&amp;nbsp;&amp;nbsp;} 
} &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;2.&amp;nbsp;&lt;a style=&quot;color: #333333;&quot; href=&quot;pubspec.yaml에&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;pubspec.yaml에&lt;/a&gt;&amp;nbsp;패키지&amp;nbsp;의존성&amp;nbsp;추가 &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1557833620106&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//&amp;nbsp;sqlite가&amp;nbsp;아니라&amp;nbsp;sqflite임에&amp;nbsp;주의 
dependencides: 
&amp;nbsp;&amp;nbsp;flutter: 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sdk:&amp;nbsp;flutter 
&amp;nbsp;&amp;nbsp;sqflite:&amp;nbsp;any 
&amp;nbsp;&amp;nbsp;path:&amp;nbsp;any 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;3.&amp;nbsp;database&amp;nbsp;연결&amp;nbsp;및&amp;nbsp;테이블&amp;nbsp;생성 &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1557833635005&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;final&amp;nbsp;Future&amp;nbsp;database&amp;nbsp;=&amp;nbsp;openDatabase( 
&amp;nbsp;&amp;nbsp;//&amp;nbsp;join&amp;nbsp;function을&amp;nbsp;이용하여&amp;nbsp;각&amp;nbsp;platform마다&amp;nbsp;올바르게&amp;nbsp;경로를&amp;nbsp;확인 
&amp;nbsp;&amp;nbsp;path:&amp;nbsp;join(await&amp;nbsp;getDatabasePath(),&amp;nbsp;'example_database.db'), 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;//&amp;nbsp;onCreate&amp;nbsp;function을&amp;nbsp;실행하기&amp;nbsp;위한&amp;nbsp;version&amp;nbsp;설정 
&amp;nbsp;&amp;nbsp;version:&amp;nbsp;1, 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;//&amp;nbsp;create&amp;nbsp;table&amp;nbsp;구문&amp;nbsp;실행 
&amp;nbsp;&amp;nbsp;onCreate:&amp;nbsp;(db,&amp;nbsp;version)&amp;nbsp;{ 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;db.execute( 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;create&amp;nbsp;table&amp;nbsp;example(id&amp;nbsp;integer,&amp;nbsp;contets&amp;nbsp;text)&quot;, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;); 
&amp;nbsp;&amp;nbsp;}, 
); &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;4.&amp;nbsp;crud&amp;nbsp;구현 &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1557833648078&quot; class=&quot;html xml&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//&amp;nbsp;create 
Future&amp;nbsp;insertExample&amp;nbsp;(ExampleVo&amp;nbsp;e)&amp;nbsp;async{ 
&amp;nbsp;&amp;nbsp;final&amp;nbsp;Database&amp;nbsp;db&amp;nbsp;=&amp;nbsp;await&amp;nbsp;database; 
&amp;nbsp;&amp;nbsp;await&amp;nbsp;db.rawInsert( 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'insert&amp;nbsp;into&amp;nbsp;example&amp;nbsp;(id,&amp;nbsp;contents)&amp;nbsp;values&amp;nbsp;(?,?)', 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[${e.id},&amp;nbsp;${e.contents}] 
&amp;nbsp;&amp;nbsp;); 
&amp;nbsp;&amp;nbsp;/* 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;await&amp;nbsp;db.insert('example',e.toMap()); 
&amp;nbsp;&amp;nbsp;*/ 
} 
//&amp;nbsp;retreive 
Future&amp;nbsp;selectExample&amp;nbsp;(ExampleVo&amp;nbsp;e)&amp;nbsp;async{ 
&amp;nbsp;&amp;nbsp;final&amp;nbsp;Database&amp;nbsp;db&amp;nbsp;=&amp;nbsp;await&amp;nbsp;database; 
&amp;nbsp;&amp;nbsp;return&amp;nbsp;List&amp;lt;Map&amp;lt;String,dynamic&amp;gt;&amp;gt;&amp;nbsp;exampleList&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;await&amp;nbsp;db.rawQuery('select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;example'); 
&amp;nbsp;&amp;nbsp;/*&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;List&amp;lt;Map&amp;lt;String,dynamic&amp;gt;&amp;gt;&amp;nbsp;exampleList&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;await&amp;nbsp;db.query('example',&amp;nbsp;columns:[id,contents]); 
&amp;nbsp;&amp;nbsp;*/ 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;//&amp;nbsp;추출된&amp;nbsp;map은&amp;nbsp;read-only이기&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;Map&amp;lt;String,&amp;nbsp;dynamic&amp;gt;&amp;nbsp;e&amp;nbsp;=&amp;nbsp;mapList.first; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;List.generate(mapList.length,&amp;nbsp;(idx)&amp;nbsp;=&amp;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;return&amp;nbsp;ExampleVo( 
&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;id&amp;nbsp;=&amp;nbsp;mapList[idx]['id']; 
&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;contents&amp;nbsp;=&amp;nbsp;mapList[idx]['contents']; 
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;*/ 
} 
//&amp;nbsp;update 
Future&amp;nbsp;updateExample&amp;nbsp;(ExampleVo&amp;nbsp;e)&amp;nbsp;async{ 
&amp;nbsp;&amp;nbsp;final&amp;nbsp;Database&amp;nbsp;db&amp;nbsp;=&amp;nbsp;await&amp;nbsp;database; 
&amp;nbsp;&amp;nbsp;await&amp;nbsp;db.rawUpdate( 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'update&amp;nbsp;example&amp;nbsp;set&amp;nbsp;contents=?&amp;nbsp;where&amp;nbsp;id=?', 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[${e.contents},${e.id}]; 
&amp;nbsp;&amp;nbsp;); 
&amp;nbsp;&amp;nbsp;/* 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;await&amp;nbsp;db.update('example',e.toMap(),&amp;nbsp;where:&amp;nbsp;'id=?',&amp;nbsp;whereArgs:&amp;nbsp;[e.id]); 
&amp;nbsp;&amp;nbsp;*/ 
} 
//&amp;nbsp;delete 
Future&amp;nbsp;deleteExample&amp;nbsp;(ExampleVo&amp;nbsp;e)&amp;nbsp;async{ 
&amp;nbsp;&amp;nbsp;final&amp;nbsp;Database&amp;nbsp;db&amp;nbsp;=&amp;nbsp;await&amp;nbsp;database; 
&amp;nbsp;&amp;nbsp;await&amp;nbsp;db.rawDelete( 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'delete&amp;nbsp;from&amp;nbsp;example&amp;nbsp;where&amp;nbsp;id&amp;nbsp;=&amp;nbsp;?', 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[${e.id}] 
&amp;nbsp;&amp;nbsp;); 
&amp;nbsp;&amp;nbsp;/* 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;await&amp;nbsp;db.delete('example',where:&amp;nbsp;id=?',&amp;nbsp;whereArgs:&amp;nbsp;[e.id]); 
&amp;nbsp;&amp;nbsp;*/ 
} 

/* 

&amp;nbsp;&amp;nbsp;final&amp;nbsp;e1&amp;nbsp;=&amp;nbsp;ExampleVo&amp;nbsp;(id:&amp;nbsp;0,&amp;nbsp;contents:&amp;nbsp;'example0'); 
&amp;nbsp;&amp;nbsp;await&amp;nbsp;insertExample(e1); 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;print(await&amp;nbsp;selectExample()): 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;final&amp;nbsp;e2&amp;nbsp;=&amp;nbsp;ExampleVo&amp;nbsp;(id:&amp;nbsp;0,&amp;nbsp;contents:&amp;nbsp;'example1'); 
&amp;nbsp;&amp;nbsp;await&amp;nbsp;updateExample(e2); 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;print(await&amp;nbsp;selectExample()): 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;await&amp;nbsp;deleteExample(e2); 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;print(await&amp;nbsp;selectExample()): 

*/&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Android</category>
      <author>SK</author>
      <guid isPermaLink="true">https://dev-woo.tistory.com/55</guid>
      <comments>https://dev-woo.tistory.com/55#entry55comment</comments>
      <pubDate>Tue, 14 May 2019 20:34:49 +0900</pubDate>
    </item>
    <item>
      <title>Flutter Future 설명</title>
      <link>https://dev-woo.tistory.com/54</link>
      <description>&lt;p style=&quot;text-align: left; line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;flutter에서 db에 저장할 때나 http 요청 등에 많이 쓰이는 Future에 대해 간략히 정리한다.&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;Future, async, await&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;flutter의 Future는 javascript의 promise와 유사하다. 미래의 어느 시점에 사용간으한 value를 표현하기 위해 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;http package에서 get, post 등의 method를 통해 받는 response라든가 new Future 생상자를 통해서 Future Object를 얻을 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Future에 관한 대략적인 정보는 아래와 같다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;- Future Object의 상태&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;pending: 프로세스가 진행중&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;complete: 프로세스 완료, 세부적으로 complete with value와 complete with error로 분류된다&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;- Future.then&amp;nbsp; * try&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Future가 complete 되었을 때 callback을 추가하기 위해 사용되는 method다&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;var future = ... return future object ...&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;future.then((value){&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;print('success');&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}, onError: (error){&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;print('error');&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;});&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;- Future.catchError&amp;nbsp; * catch&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;future.then의 onError는 해당 Future 의 error만 처리한다. future가 체이닝되어 발생할 때 한번에 잡기 위해서는&lt;/span&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;catchError를 사용해야 한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;new Future.value(1).then(v)({&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;return Future.error('error');&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}).then((v){&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;return Future.value(v);&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;})catchError((error){&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;print('error');&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;});&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;- Future.whenCompelete&amp;nbsp; * finally&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;var future = ... return future object ...&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;future.then(print).catchError(print).whenCompelete((){&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;print('done');&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;});&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;- Future.timeout&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;timeout에서 설정한 시간이 지난 후에 TimeoutException을 발생시킨다&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;future.delayed(Duration(seconds: 5), (){&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;return '1';&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}).timeout(Duration(seconds: 2)).then(print).catchError(print);&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;또는 시간이 지난 후 기본값 리턴&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;future.delayed(Duration(seconds: 5), (){&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;return '1';&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}).timeout(Duration(seconds: 2), onTimeout:(){&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;return 'default value';&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}).then(print).catchError(print);&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;- async, await&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Future가 chain을 이룰 경우 코드가 더러워지기 때문에 async와 await을 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Future를 동기처리 코드처럼 사용하게 된다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;void main() async {&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;var future = Future.delayed(Duration(seconds: 3), () =&amp;gt; {return 1});&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;// await은 Future의 결과를 기다린다&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;var rslt = await future;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;print(rslt);&amp;nbsp; // rslt 는 1&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;async, await 사용시 error 처리는 try ~ catch ~ finally 구문을 사용한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;void main() async {&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;var future = Future.delayed(Duration(seconds: 3), () =&amp;gt; {return Future.error('error')});&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;try{&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;			&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;var rslt = await future;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;			&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;print(rslt);&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}catch(e){&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;			&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;print(e);&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}finally{&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;			&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;print('done');&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Future 체이닝이 이루어지는 경우 async, await을 사용하면 callback hell을 방지할 수 있다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;void main() async{&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;var f1 = (int value) async =&amp;gt; v+1;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;var f2 = (int value) async =&amp;gt; v+2;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;var f3 = (int value) async =&amp;gt; v+3;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;var value=100;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;value = await f1(value);&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;value = await f2(value);&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;value = await f3(value);&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;		&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;print(value);&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;white-space: pre; font-size: 12pt;&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;** 참고: https://flutter-academy.com/async-in-flutter-futures/&lt;/p&gt;</description>
      <category>Android</category>
      <author>SK</author>
      <guid isPermaLink="true">https://dev-woo.tistory.com/54</guid>
      <comments>https://dev-woo.tistory.com/54#entry54comment</comments>
      <pubDate>Mon, 22 Apr 2019 22:47:55 +0900</pubDate>
    </item>
    <item>
      <title>DataWarehouse 란?</title>
      <link>https://dev-woo.tistory.com/53</link>
      <description>&lt;p&gt;&lt;font face=&quot;Arial&quot;&gt;&lt;span style=&quot;font-size: 20px; white-space: pre-wrap;&quot;&gt;몇 년 전 데이터웨어하우스 업무를 처음 맡게 되면서, 개념을 잡기 위해 정리했던 내용을 발견했다. 여기에 다시 포스팅해둔다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span id=&quot;docs-internal-guid-47816019-7fff-99aa-8c9f-68b6d38f93f5&quot;&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;□ DW(DataWarehouse) 란?&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;○ 정의&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;사용자의 의사결정에 도움을 주기 위하여, 기간시스템의 데이터베이스에 축적된 데이터를 공통의 형식으로 변환해서 관리하는 데이터베이스&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;○ 특성&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- 주제 지향성(subject-orientation): 데이터를 주제별로 구성함으로써 전산에 약한 사용자라도 이해하기 쉬움(운영계 DB는 어플리케이션 중심)&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- 통합성(integration): 데이터가 DW에 들어갈 때는 일관적인 형태(명명법, 변수 측정, 코드화 구조 등)로 변환&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- 시계열성(time-variancy): 과거의 데이터를 보관함(운영계 DB가 항상 최근의 데이터만 가지고 있는 것과 다름)&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- 비휘발성(nonvolatilization): DW에 데이터가 적재되면 일괄처리(batch)에 의한 갱신 외에는 Insert나 Delete 등의 변경이 수행되지 않음&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(출처:https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%9B%A8%EC%96%B4%ED%95%98%EC%9A%B0%EC%8A%A4)&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;○ 아키텍쳐&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;DW마다 다르나 통상 아래와 같은 Layer들을 포함&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- Data Source Layer: DW에 들어갈 다양한 타입(운영데이터, 웹서버 로그, 리서치자료 등), 다양한 포맷(텍스트파일, DB, 엑셀 등)의 데이터소스&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- Data Extraction Layer: DM에 들어갈 데이터를 추출하며, 최소한의 데이터 정리 가능성이 있음&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- Staging Area: &amp;nbsp;이후 DW 혹은 DM에서 이루어질 데이터 처리, 통합을 쉽게 하기 위해 존재하는 공간&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- ETL Layer: 데이터에 분석 로직이 더해져 정보화되며, 데이터 정리가 이루어짐. ETL tool이 주로 이 단계에서 사용됨&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- Data Storage Layer: 변형 및 정제된 데이터가 위치하는 Layer. Scope와 기능에 따라 3가지 타입의 개체가 존재(DataWarehouse, DataMart, OperationalDataStore(ODS))&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- Data Logic Layer: Business rules가 저장되는 Layer. 데이터 변환에는 영향을 주지 않지만, 보고서의 형태에 영향을 줌&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- Data Presentation Layer: 정보가 사용자들에게 보여지는 단계. OLAP tool이나 Reporting tool 이 단계에서 사용됨&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- Metadata Layer: 메타데이터가 저장되는 Layer. 메타데이터 관리를 위해 Metadata tool을 사용함&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;- System Operations Layer: ETL job status, 시스템 성능, 유저 접속 로그 등 DW시스템 운영과 관련된 정보가 포함된 Layer&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(출처:https://www.1keydata.com/datawarehousing/data-warehouse-architecture.html)&lt;/span&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>DB</category>
      <author>SK</author>
      <guid isPermaLink="true">https://dev-woo.tistory.com/53</guid>
      <comments>https://dev-woo.tistory.com/53#entry53comment</comments>
      <pubDate>Thu, 7 Mar 2019 21:01:56 +0900</pubDate>
    </item>
    <item>
      <title>Singleton Pattern(싱글톤 패턴)</title>
      <link>https://dev-woo.tistory.com/52</link>
      <description>&lt;p style=&quot;line-height: 1.8;&quot;&gt;자바에서는 new 키워드를 이용해서 객체를 생성한다. 고로 한번만 생성하면 될 객체를 여러번 생성하게 되면 그만큼 메모리에 낭비가 생길 수가 밖에 없다. 때문에 싱글톤 패턴을 적용하여 객체를 한 번만 생성하도록 하는 경우가 있다.&amp;nbsp;&lt;/p&gt;&lt;hr&gt;&lt;div&gt;&lt;b&gt;public class Test {&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;NonSingleton n1 = new NonSingleton();&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;NonSingleton n2 = new NonSingleton();&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;System.out.println(n1 == n2); // false&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;&lt;b&gt;		&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;Singleton s1 = Singleton.getInstance();&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;Singleton s2 = Singleton.getInstance();&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;System.out.println(s1 == s2); // true&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;}&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;class NonSingleton {&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public NonSingleton() {}&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;}&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;class Singleton {&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;private static final Singleton&amp;nbsp;&lt;/b&gt;&lt;b&gt;INSTANCE&lt;/b&gt;&lt;b&gt;&amp;nbsp;= new Singleton();&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;private Singleton() {}&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public static Singleton getInstance() {&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;return&amp;nbsp;&lt;/b&gt;&lt;b&gt;INSTANCE&lt;/b&gt;&lt;b&gt;;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;}&lt;/b&gt;&lt;/div&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;위 예제에서 n1과 n2는 각기 다른 객체다. 반면, s1과 s2는 같은 객체라는 점을 알 수 있다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;문제(?)는 내가 지금까지 알던 이 패턴에 허점이 있다는 것. 첫째는 해당 인스턴스를 사용할 필요가 없을 때도 생성한다는 점(Lazy implementation으로 해결 가능), 둘째는 직렬화 시에는 또 다시 새로운 객체가 생성된다는 점이고(readResolve() 메서드를 구현해서 해결 가능), 셋째는 아래 코드와 같이 reflection을 이용하면 기껏 만들어 놓은 싱글톤 패턴을 무시할 수 있다는 것이다.&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;import java.lang.reflect.Constructor;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;public class Test {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;Singleton s3 = Singleton.getInstance();&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;Singleton s4 = null;&lt;span style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;try {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;Constructor&amp;lt;?&amp;gt;[] constructors =&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Singleton.class.getDeclaredConstructors();&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;for ( Constructor&amp;lt;?&amp;gt; constructor : constructors ) {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;constructor.setAccessible(true);&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;s4 = (Singleton)constructor.newInstance();&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;} catch (Exception ex) {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;System.out.println(ex);&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;System.out.println(s3 == s4); // false&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;class Singleton {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;private static final Singleton INSTANCE= new Singleton();&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;private Singleton() {}&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public static Singleton getInstance() {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;return&amp;nbsp;&lt;/b&gt;&lt;b&gt;INSTANCE&lt;/b&gt;&lt;b&gt;;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;그래서 어떻게 하면 되느냐, enum을 사용하면 된다. 아래 처럼&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;public class Test {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;Singleton s3 = Singleton.INSTANCE;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;Singleton s4 = Singleton.INSTANCE;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;System.out.println(s3==s4);&amp;nbsp; // true&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public enum Singleton {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;INSTANCE;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * 예시라서 이렇게 썼지만 실제로 이 부분은 다른 어딘가에 있을 것이다&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * 그 외에 변수나 메서드 등등 필요한게 있을 것이다&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;매우 심플해지지 않았는가? 직렬화 구현도 필요 없고, reflection으로부터도 안전하며, 객체가 여러개 생기는 문제도 없는 해결책이다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;i&gt;(단, 직렬화시 멤버변수는 잃게 된다고 한다....https://docs.oracle.com/javase/6/docs/platform/serialization/spec/serial-arch.html#6469)&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;참고:&amp;nbsp;https://dzone.com/articles/java-singletons-using-enum&lt;/p&gt;</description>
      <category>JAVA</category>
      <author>SK</author>
      <guid isPermaLink="true">https://dev-woo.tistory.com/52</guid>
      <comments>https://dev-woo.tistory.com/52#entry52comment</comments>
      <pubDate>Wed, 13 Feb 2019 22:10:15 +0900</pubDate>
    </item>
    <item>
      <title>람다식 기본</title>
      <link>https://dev-woo.tistory.com/51</link>
      <description>&lt;p&gt;Java8부터 도입된 람다표현식. 회사에서는 Java6를 쓰고 있다보니 쓸 일이 없어서 무관심 하다가, 신규 서버로 전환 후 일괄 버전업이 되어 이제 쓸 수 있게 되었다. 내친 김에 간단히 정리해본다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;람다표현식이 중요한게 아니라 함수형 프로그래밍의 사상을 아는게 더 중요하다고 생각되는데, 귀찮으니까 링크로 대체...&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;위키피디아: 함수형프로그래밍 설명&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98%ED%98%95_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;람다식을 이용하지 않고 인터페이스를 구현하는 경우, 원래는 아래처럼 사용했었다.&lt;/p&gt;&lt;p&gt;클래스로 implements한 뒤 사용하거나, 일회성이라면 익명함수로 바로 구현하거나.&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;public class Test {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;span style=&quot;white-space: pre;&quot;&gt;		&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;Food food0 = new Banana();&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;food0.eat(&quot;banana&quot;);&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;span style=&quot;white-space:pre&quot;&gt;&lt;b&gt;		&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;Food food1 = new Food() {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void eat(String target) {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;System.out.println(&quot;eat:&quot;+target);&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;};&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;food1.eat(&quot;banana&quot;);&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;interface Food {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;void eat(String target);&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;class Banana implements Food{&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;@Override&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public void eat(String target) {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;System.out.println(&quot;eat:&quot;+target);&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그런데 자바8 이후 람다식이 가능해지면서 더 간단하게 표현이 가능해졌다. 아래와 같이... (익명함수 구현시 7줄이던게 2줄로)&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;public class Test {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;Food food3 = (target) -&amp;gt; System.out.println(&quot;eat:&quot;+target);&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;food3.eat(&quot;banana&quot;);&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;@FunctionalInterface&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;interface Food {&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;void eat(String target);&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;b&gt;}&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 0.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;이것이 어떻게 가능한고 하니... 자바가 함수형 프로그래밍 언어가 아니다보니 람다를 도입하기 위해 함수형 인터페이스, 즉 '단 하나의 추상 메서드만 가진' 인터페이스라는 개념을 만들었다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;이 때문에 다음과 같은 추론이 가능하게 된다. (위 예시 기준)&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;1. &lt;i&gt;new Food()&lt;/i&gt; 가 필요 없다. &lt;i&gt;Food&lt;/i&gt; 타입을 구현하려는 것이&amp;nbsp;명확하기 때문에 생략 가능하다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;2. &lt;i&gt;eat()&lt;/i&gt;가 필요 없다. &lt;i&gt;Food&lt;/i&gt; 인터페이스에는 단 하나의 메서드만이 있기 때문에 구현하고자 하는 메서드가 해당 메서드임이 분명하다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;3. &lt;i&gt;String&lt;/i&gt;이 필요 없다. 메서드가 하나이므로, 해당 메서드가 받는 파라미터 수와 타입이 정해져있어 파라미터타입 명시가 불필요하다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;확실히 편해졌다. 그런데 인터페이스에 항상 한 메서드만 있어야 한다는데... 처음 구현할 때야 그렇다 치지만, 나중에 누군가 메서드를 추가하면 어떻게 될까? 물론 컴파일이 되지 않고 에러가 난다. 하지만 좀 더 명확히 하기 위해 해당 인터페이스에 &lt;i&gt;@FunctionalInterface &lt;/i&gt;어노테이션을 붙여주자.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;람다식과 함께 새롭게 등장한 녀석중 Stream이 있는데, 람다로 인해 이 API가 빛을 발한다. 이건 나중에 포스팅.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>JAVA</category>
      <author>SK</author>
      <guid isPermaLink="true">https://dev-woo.tistory.com/51</guid>
      <comments>https://dev-woo.tistory.com/51#entry51comment</comments>
      <pubDate>Sun, 10 Feb 2019 10:37:25 +0900</pubDate>
    </item>
    <item>
      <title>Resource Manager</title>
      <link>https://dev-woo.tistory.com/50</link>
      <description>&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:15pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;□ RM(Resource Manager)이란?&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ 정의&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;비효율적인 OS 관리로 초래된 문제들(자원의 부적절한 할당, 비효율적인 스케쥴링 등)을 해결하기 위해 Oracle DB server가 자원 관리 결정을 더 잘 하도록 하는 것&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ RM 기능&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 사용자 수나 시스템 부하에 관계없이 사용자에게 자원처리 최소량 보증&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 각각 다른 사용자나 응용프로그램에 CPU time 비율을 할당하여 가용 자원 분배. DW에서는 Batch job보다ROLAP 응용프로그램에 높은 비율이 주어짐&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 사용자 그룹(DB사용자를 리소스 그룹별로 그루핑)이 수행하는 작업의 병행성 수준을 제한&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Active Session Pool(동시에 활성화 되는 세션의 최대치&lt;/span&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;로 구성&lt;/span&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;) 생성. 최대치를 넘어서는 세션은 대기하며,해당 세션에 대해 소멸시간 설정가능&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 관리자 정의 기준에 따라 사용자를 다른 그룹으로 자동 전환 가능(특정 사용자 그룹이 지정된 시간보다 긴 세션을 수행할 경우, 해당 세션을 다른 사용자 그룹으로 옮길 수 있음)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Optimizer가 추정한 특정 작업(규정된 시간제한을 넘어서는 작업)의 수행 방지&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Undo Pool 생성(한 그룹의 사용자들이 이용하는 undo 스페이스의 양으로 구성)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- session idle time의 양을 제한&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 자원할당을 위한 특정 메서드를 사용하기 위해 instance를 설정instance의 재시작이나 종료 없이 daytime이나 nighttime 설정으로 메서드 변경 가능)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- long-running session 이나 long-running SQL statement 취소를 허용&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ RM 요소&lt;/span&gt;&lt;/p&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left:0pt;&quot;&gt;&lt;table style=&quot;border:none;border-collapse:collapse&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;202&quot;&gt;&lt;col width=&quot;400&quot;&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:16pt&quot;&gt;&lt;td style=&quot;border-left:solid #8064a2 0.9960975000000001pt;border-bottom:solid #8064a2 0.9960975000000001pt;border-top:solid #8064a2 0.9960975000000001pt;vertical-align:top;background-color:#8064a2;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#ffffff;background-color:#ffffff;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Element&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-right:solid #8064a2 0.9960975000000001pt;border-bottom:solid #8064a2 0.9960975000000001pt;border-top:solid #8064a2 0.9960975000000001pt;vertical-align:top;background-color:#8064a2;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#ffffff;background-color:#ffffff;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Description&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:32pt&quot;&gt;&lt;td style=&quot;border-left:solid #8064a2 0.9960975000000001pt;border-bottom:solid #8064a2 0.9960975000000001pt;border-top:solid #8064a2 0.9960975000000001pt;vertical-align:top;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Resource consumer group&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-right:solid #8064a2 0.9960975000000001pt;border-bottom:solid #8064a2 0.9960975000000001pt;border-top:solid #8064a2 0.9960975000000001pt;vertical-align:top;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;자원 처리 요청에 의거 그루핑된 사용자 session&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:32pt&quot;&gt;&lt;td style=&quot;border-left:solid #8064a2 0.9960975000000001pt;border-bottom:solid #8064a2 0.9960975000000001pt;border-top:solid #8064a2 0.9960975000000001pt;vertical-align:top;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Resource plan&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-right:solid #8064a2 0.9960975000000001pt;border-bottom:solid #8064a2 0.9960975000000001pt;border-top:solid #8064a2 0.9960975000000001pt;vertical-align:top;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Resource consumer grouop에 어떻게 자원을 할당할 것인지 구체화&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:48pt&quot;&gt;&lt;td style=&quot;border-left:solid #8064a2 0.9960975000000001pt;border-bottom:solid #8064a2 0.9960975000000001pt;border-top:solid #8064a2 0.9960975000000001pt;vertical-align:top;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Resource allocation method&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-right:solid #8064a2 0.9960975000000001pt;border-bottom:solid #8064a2 0.9960975000000001pt;border-top:solid #8064a2 0.9960975000000001pt;vertical-align:top;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;데이터베이스 RM이 자원을 할당할 때 사용하는 메서드/정책. 데이터베이스는 가용한 자원할당 메서드를 제공하고 관리자가 어떤 것을 사용할지 선택&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:48pt&quot;&gt;&lt;td style=&quot;border-left:solid #8064a2 0.9960975000000001pt;border-bottom:solid #8064a2 0.9960975000000001pt;border-top:solid #8064a2 0.9960975000000001pt;vertical-align:top;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Resource plan directive&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-right:solid #8064a2 0.9960975000000001pt;border-bottom:solid #8064a2 0.9960975000000001pt;border-top:solid #8064a2 0.9960975000000001pt;vertical-align:top;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Resource consumer group과 특정 plan을 연관시키고Resource consumer group에게 어떻게 자원을 할당시킬지 정하는데 사용&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ Resource Plan 이해&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 기본형태&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:8pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;(출처:&lt;/span&gt;&lt;span style=&quot;font-size:4pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:8pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;http://docs.oracle.com/cd/B19306_01/server.102/b14231/dbrm.htm#i1007556)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;하나의 플랜에 따라 각 Resource consumer group이 할당받는 CPU자원이 다름. 만약 SALES group이 자원을 사용하지 않으면 다른 group이 자원을 사용하도록 허용해야함.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Subplan이 있는 형태&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;하나의 플랜 아래 Subplan을 두는 것이 가능하며, 이 플랜에 Resource consumer grouop을 세분하할 수 있음. Subplan이나 Resource consumer grouop은 하나 이상의 부모(플랜)을 가질 수 있음. &lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;ex) 위 그림에서GREAT_BREAD 플랜이 DAY plan과 NIGHT plan으로 나누어졌을 경우 두 플랜 모두 SALES_TEAM Subplan을 멤버로 두는 것이 가능&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;* 위 그림에는 없으나 항상 Default로 OTHER_GROUPS가 설정되어 있어야 함&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ DBMS_RESOURCE_MANAGER 패키지&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;데이터베이스 RM을 관리할 수 있는 시스템 권한(ADMINISTER_RESOURCE_MANAGER)이 있어야 함. 주로 DBA가 ADMIN 옵션으로 해당 권한을 가지고 있음. 권한 획득 후에는 DBMS_RESOURCE_MANAGER 패키지에 있는 프로시져 사용 가능&lt;/span&gt;&lt;/p&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left:0pt;&quot;&gt;&lt;table style=&quot;border:none;border-collapse:collapse&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;203&quot;&gt;&lt;col width=&quot;399&quot;&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:12pt&quot;&gt;&lt;td style=&quot;vertical-align:bottom;background-color:#3f3f3f;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#ffffff;background-color:#ffffff;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Procedure&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom;background-color:#3f3f3f;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#ffffff;background-color:#ffffff;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Description&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:24pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;CREATE_SIMPLE_PLAN&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Creates a simple resource plan, containing up to eight consumer groups, in one step. This is the quickest way to get started when you use this package.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;CREATE_PLAN&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Creates a resource plan and specifies its allocation methods.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;UPDATE_PLAN&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Updates a resource plan.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;DELETE_PLAN&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Deletes a resource plan and its directives.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;DELETE_PLAN_CASCADE&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Deletes a resource plan and all of its descendents.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;CREATE_CONSUMER_GROUP&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Creates a resource consumer group.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;UPDATE_CONSUMER_GROUP&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Updates a consumer group.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;DELETE_CONSUMER_GROUP&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Deletes a consumer group.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:24pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;CREATE_PLAN_DIRECTIVE&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Specifies the resource plan directives that allocate resources to resource consumer groups or subplans in a plan.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;UPDATE_PLAN_DIRECTIVE&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Updates plan directives&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;DELETE_PLAN_DIRECTIVE&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Deletes plan directives&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;CREATE_PENDING_AREA&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Creates a pending area (scratch area) within which changes can be made to a plan schema&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;VALIDATE_PENDING_AREA&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Validates the pending changes to a plan schema&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;CLEAR_PENDING_AREA&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Clears all pending changes from the pending area&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SUBMIT_PENDING_AREA&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Submits all changes for a plan schema&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:37pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SET_INITIAL_CONSUMER_GROUP&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Sets the initial consumer group for a user. This procedure has been deprecated. The database recommends that you use the &lt;/span&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SET_CONSUMER_GROUP_MAPPING&lt;/span&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; procedure to specify the initial consumer group.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SWITCH_CONSUMER_GROUP_FOR_SESS&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Switches the consumer group of a specific session&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SWITCH_CONSUMER_GROUP_FOR_USER&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Switches the consumer group of all sessions belonging to a specific user&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SET_CONSUMER_GROUP_MAPPING&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Maps sessions to consumer groups&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:13pt&quot;&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#000000;background-color:#eeeeee;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SET_CONSUMER_GROUP_MAPPING_PRI&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:top;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10.5pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Establishes session attribute mapping priorities&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;* 플랜 정보 보는 법&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;- Viewing plan information:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;select plan, comments from dba_rsrc_plans;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;- Viewing current consumer group for sessions:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; select sid, serial#, resource_consumer_group from v$session;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;- Viewing the currently active plans:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; alert system set resource_manager_plan = 플랜명;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; select name, IS_TOP_PLAN from v$rsrc_plan;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;- Viewing consumer group Granted to user or role:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; select * from dba-rsrc_consumer_group_privs;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;- Viewing directive:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;select plan, max_est_exec_time, comments, type from dba_rsrc_plan_directives;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ Pending Area&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;현재 수행중인 어플리케이션에 영향을 주지 않고 플랜을 만들거나 변경하거나 삭제할 수 있도록 하는 staging area. pending area에서 변경을 한 뒤에는 변경사항을 데이터사전에 적용하기 위해서 pending arear를validate하고 submit해야 함(pending area 없이 플랜을 생성하거나 변경, 삭제 하는 경우 에러 메시지 리턴).&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;clear_pending_area 프로시져를 통해 pending area로부터 모든 변경사항을 비우고, pending area를 비활성화시킬 수 있으며, 해당 프로시져 다음에는 반드시 다른 변경 시도를 위해서 pending area를 생성해야 함.&lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ DBMS_SCHEDULER 패키지&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;PL/SQL 프로그램에서 호출될 수 있는 스케쥴링 프로시져 패키지. subprogram 중 window를 통해 플랜들을 각각 다른 시간에 자동으로 활성화되게 할 수 있음.&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- CREATE_WINDOW Procedure 사용법:&lt;/span&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;DBMS_SCHEDULER.CREATE_WINDOW (&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;window_name &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;IN VARCHAR2(&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;윈도우&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;명&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;),&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;resource_plan &amp;nbsp;&amp;nbsp;IN VARCHAR2(&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;리소스&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;플랜명&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;),&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;start_date &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;IN TIMESTAMP WITH TIME ZONE DEFAULT NULL(&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;시작시간&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;),&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;repeat_interval IN VARCHAR2(&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;반복&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;간격&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;, Calendaring Syntax&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;로&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;작성&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;),&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;end_date &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;IN TIMESTAMP WITH TIME ZONE DEFAULT NULL(&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;종료&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;시간&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;),&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;duration &amp;nbsp;&amp;nbsp;IN INTERVAL DAY TO SECOND(&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;지속시간&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;, numtodsinterval&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;로&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;설정&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;),&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;window_priority IN VARCHAR2(&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;두&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; window&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;가&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;겹칠&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;때&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;우선순위&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;) DEFAULT 'LOW',&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;comments &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;IN VARCHAR2 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;DEFAULT NULL);&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;* Calendaring Syntax:&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;(http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#BABFBCEF)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;* numtodsinterval: numtodsinterval(n, 'interval unit') &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;형태로&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;사용&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;'interval unit'&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;에는&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; 'DAY', 'HOUR', 'MINUTE', 'SECOND' &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;가능&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- DROP_WINDOW Procedure 사용법:&lt;/span&gt;&lt;span style=&quot;font-size:9pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;DBMS_SCHEDULER.DROP_WINDOW (&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;window_name &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;IN VARCHAR2(&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;윈도우&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;명&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;),&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;force &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IN BOOLEAN(&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;윈도우&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;활성에&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;관계없이&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;실행&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;여부&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:'Courier New';color:#222222;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;) DEFAULT FALSE);&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;* 윈도우 정보 보는 법&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;&amp;nbsp;- Viewing window and resource plan information:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span id=&quot;docs-internal-guid-b7420554-7fff-e977-6c08-f28df093f3b0&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;select * from dba_schedular_windows;&lt;/span&gt;&lt;/p&gt;</description>
      <category>DB</category>
      <author>SK</author>
      <guid isPermaLink="true">https://dev-woo.tistory.com/50</guid>
      <comments>https://dev-woo.tistory.com/50#entry50comment</comments>
      <pubDate>Sat, 9 Feb 2019 23:22:49 +0900</pubDate>
    </item>
    <item>
      <title>파티셔닝</title>
      <link>https://dev-woo.tistory.com/49</link>
      <description>&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:15pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;□ 파티셔닝(Partitioning)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ 개요&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;하나의 테이블이나 인덱스를 동일한 논리적 속성을 가진 여러 단위로 나누어 각각이 별도의 물리적 속성을 갖게 하는 것&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ 장점&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 데이터 접근시 스캔 범위를 줄여 성능 향상&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 데이터 훼손 가능성 저하 및 데이터 가용성 향상&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 각 파티션별 백업 및 복구작업 가능&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 테이블 파티션 단위로 디스크 I/O를 분산하여 부하 저하&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ 파티셔닝 종류(오라클 기준)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 레인지 파티셔닝(Range Partitioning)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· 특정 컬럼 값을 기준으로 분할&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· 주로 순차적인 데이터(historical data)를 관리하는 테이블에 사용&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;ex) '가입계약관리' 테이블에서는 통상 최근 1~2년치만 접근&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· 각 범위에 따라 데이터 분포도가 일정치 않음&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· DDL 스크립트&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;CREATE TABLE TEST_TABLE&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; (I_YYYYMMDD VARCHAR2(8), I_CUSTOMER VARCHAR2(9), …… )&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;TABLESPACE TBS1&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; PARTITION BY RANGE (I_YYYYMMDD) &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#ff0000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;lt;- 파티셔닝 컬럼(16개 까지 지정 가능)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; (PARTITION PAR_200307 VALUES LESS THAN (‘20030801’),&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;PARTITION PAR_200308 VALUES LESS THAN (‘20030901’), …… )&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 해시 파티셔닝(Hash Partitioning)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· 특정 컬럼 값에 해시 함수를 적용해 분할(데이터 관리보다 성능향상에 중점)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· 분포도를 정의하기 어려운 테이블을 파티셔닝할 때 많이 사용(균등한 분포도를 가질 수 있도록 조율, 주로 2의 배수로 파티셔닝)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· 해시 파티셔닝으로 구분된 파티션들은 동일한 논리, 물리 속성을 가지며 파티션에 지정된 값들을 DMBS가 결정하기때문에 각 파티션에 어떤 값이 들어있는지 알 수 없음&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· DDL 스크립트&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;CREATE TABLE TEST_TALBE&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; ( SERIAL NUMBER, CODE VARCHAR2(4), ……)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;TABLESPACE TBS1&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;PARTITION BY HASH(SERIAL)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; (PARTITION PAR_HASH_1 TABLESPACE TBS2,&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; PARTITION PAR_HASH_2 TABLESPACE TBS3, ……)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 리스트 파티셔닝(List Partitioning)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· 특정 컬럼의 특정 값을 기준으로 파티셔닝&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· 주로 이질적인 값이 많지 않고 분포도가 비슷하며 해당 컬럼의 조건이 많이 들어오는 경우에 사용&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;ex) '서비스 계약' 테이블에서 서비스 가입 대리점을 A, 서비스 변경 대리점을 B라고 할 때, 모든 서비스 처리 데이터에는 대리점 타입이 두 가지 존재하고 대부분 조회 패턴에는 두 대리점을 구분하는 값이 주어지게 됨&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· DDL 스크립트&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;CREATE TABLE SERVICE_CONTRACT&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; (I_YYYYMMDD VARCHAR2(8), I_CUSTOMER VARCHAR2(6),&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; I_DLR_IND VARCHAR2(2), I_DEALER VARCHAR2(6), …….)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;TABLESPACE TBS1&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;PARTITION BY LIST (I_DLR_IND)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; (PARTITION PAR_A VALUES (‘A’), PARTITION PAR_S VALUES (‘S’))&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 레인지-해시 컴포지트 파티셔닝(Range-Hash Composite Partitioning)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· 레인지 방식으로 데이터를 파티셔닝하고 각 파티션 내에서 해시 방식으로 서브 파티셔닝을 적용하는 방식 → 서브 파티션이 독립된 세그먼트가 되는 것이 특징&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· 레인지 파티셔닝으로 관리와 성능 이슈 향상, 해쉬 파티셔닝으로 데이터 균등 배치와 병렬화, 서브 파티션에 특정 테이블 스페이스 지정가능, 서브 파티션별 풀 스캔을 할 수 있어 스캔 범위 줄이는 효과&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:12pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;· DDL 스크립트&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;CREATE TABE TB_RANGE_HASH&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; (I_YYYYMMDD VARCHAR2(8), I_SERIAL NUMBER, SALE_PRICE NUMBER, ……)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;TABLESPACE TBS1&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;PARTITION BY RANGE (I_YYYYMMDD)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SUBPARTITION BY HASH (I_SERIAL)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; (PARTITION SALES_1997 VALUES LESS THAN (‘19980101’)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; (SUBPARTITION SALES_1997_Q1 TABLESPACE TBS2,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span id=&quot;docs-internal-guid-782f6388-7fff-d093-2ff2-59d9a8dd8209&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; SUBPARTITION SALES_1997_Q2 TABLESPACE TBS3), ……)&lt;/span&gt;&lt;/p&gt;</description>
      <category>DB</category>
      <author>SK</author>
      <guid isPermaLink="true">https://dev-woo.tistory.com/49</guid>
      <comments>https://dev-woo.tistory.com/49#entry49comment</comments>
      <pubDate>Sat, 9 Feb 2019 23:21:18 +0900</pubDate>
    </item>
    <item>
      <title>멀티캐스트</title>
      <link>https://dev-woo.tistory.com/48</link>
      <description>&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 13px; white-space: normal;&quot;&gt;운영 중인 시스템 서버 / 스위치 등 장비 교체후&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 13px; white-space: normal;&quot;&gt;&amp;nbsp;멀티캐스트 통신이 안되는 문제가 발생했다. 문제는 멀티캐스트의 일부 대역대를 스위치 장비에서 해당 제조사의 기능활용을 위해 예약해두어서 발생했다. 해당 기능 설정을 off하고 정상화했다. 문제해결하는 김에 멀티캐스트가 무엇인지 정리했다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 13px; white-space: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size: 15pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Multicast란?&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ 정의&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Multicast group에 소속된 특정 다수에게 데이터를 전송하는 기법&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ 특징&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Multicast group 단위로 묶어 해당 그룹 host들은 동시에 데이터 수신&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- UDP 사용(신뢰성 보장 x)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Client에서 Multicast를 사용하는 어플리케이션을 시작하면 Multicast IP&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt; 주소와 Multicast MAC 주소를 라우터에 등록하여 Multicast group에 등록&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- 하나의 Client에서 여러 Multicast 주소를 수용 가능&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;(여러 Multicast 데이터 수신 가능)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Server가 Multicast 주소로 데이터 전송 중에 있을 경우,&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;중간에 Client가 끼어들어도 처음부터 데이터를 받을 수 없고&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;중간부터 받게 됨&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ IP 주소체계(D class IP주소)&lt;/span&gt;&lt;/p&gt;&lt;div dir=&quot;ltr&quot; style=&quot;margin-left:0pt;&quot;&gt;&lt;table style=&quot;border:none;border-collapse:collapse&quot;&gt;&lt;colgroup&gt;&lt;col width=&quot;197&quot;&gt;&lt;col width=&quot;368&quot;&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:19pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 0.9960975000000001pt;border-right:solid #000000 0.9960975000000001pt;border-bottom:solid #000000 0.9960975000000001pt;border-top:solid #000000 0.9960975000000001pt;vertical-align:top;background-color:#eeece1;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:2.56;margin-top:0pt;margin-bottom:0pt;margin-left: 27pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; 224.0.0.0 ~ 224.0.0.255&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 0.9960975000000001pt;border-right:solid #000000 0.9960975000000001pt;border-bottom:solid #000000 0.9960975000000001pt;border-top:solid #000000 0.9960975000000001pt;vertical-align:top;background-color:#eeece1;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:2.56;margin-top:0pt;margin-bottom:0pt;margin-left: 27pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;IETF에서 관리용으로 사용되는 대역 (RIP, EIGRP, OSPF 등)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:19pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 0.9960975000000001pt;border-right:solid #000000 0.9960975000000001pt;border-bottom:solid #000000 0.9960975000000001pt;border-top:solid #000000 0.9960975000000001pt;vertical-align:top;background-color:#eeece1;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:2.56;margin-top:0pt;margin-bottom:0pt;margin-left: 27pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; 224.0.1.0 ~ 238.255.255.255&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 0.9960975000000001pt;border-right:solid #000000 0.9960975000000001pt;border-bottom:solid #000000 0.9960975000000001pt;border-top:solid #000000 0.9960975000000001pt;vertical-align:top;background-color:#eeece1;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:2.56;margin-top:0pt;margin-bottom:0pt;margin-left: 27pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;실제 인터넷에서 Multicast를 사용한 기관이나 기업에게 할당&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:20pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 0.9960975000000001pt;border-right:solid #000000 0.9960975000000001pt;border-bottom:solid #000000 0.9960975000000001pt;border-top:solid #000000 0.9960975000000001pt;vertical-align:top;background-color:#eeece1;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:2.56;margin-top:0pt;margin-bottom:0pt;margin-left: 27pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; 232.0.0.0 ~ 232.255.255.255&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 0.9960975000000001pt;border-right:solid #000000 0.9960975000000001pt;border-bottom:solid #000000 0.9960975000000001pt;border-top:solid #000000 0.9960975000000001pt;vertical-align:top;background-color:#eeece1;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:2.56;margin-top:0pt;margin-bottom:0pt;margin-left: 27pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;PIM 기술을 위해 사용하는 대역 &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:20pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 0.9960975000000001pt;border-right:solid #000000 0.9960975000000001pt;border-bottom:solid #000000 0.9960975000000001pt;border-top:solid #000000 0.9960975000000001pt;vertical-align:top;background-color:#eeece1;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:2.56;margin-top:0pt;margin-bottom:0pt;margin-left: 27pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; 233.0.0.0 ~ 233.255.255.255&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 0.9960975000000001pt;border-right:solid #000000 0.9960975000000001pt;border-bottom:solid #000000 0.9960975000000001pt;border-top:solid #000000 0.9960975000000001pt;vertical-align:top;background-color:#eeece1;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:2.56;margin-top:0pt;margin-bottom:0pt;margin-left: 27pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;하나의 AS 내에 전파를 원할 때 사용하는 대역 &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:19pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 0.9960975000000001pt;border-right:solid #000000 0.9960975000000001pt;border-bottom:solid #000000 0.9960975000000001pt;border-top:solid #000000 0.9960975000000001pt;vertical-align:top;background-color:#eeece1;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:2.56;margin-top:0pt;margin-bottom:0pt;margin-left: 27pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; 239.0.0.0 ~ 239.255.255.255&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 0.9960975000000001pt;border-right:solid #000000 0.9960975000000001pt;border-bottom:solid #000000 0.9960975000000001pt;border-top:solid #000000 0.9960975000000001pt;vertical-align:top;background-color:#eeece1;padding:0pt 5pt 0pt 5pt;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:2.56;margin-top:0pt;margin-bottom:0pt;margin-left: 27pt;&quot;&gt;&lt;span style=&quot;font-size:9pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;기관이나 기업 내부에서 사용할 수 있는 사설 Multicast 주소&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;* 224.0.0.1 : 현재 서브넷에 존재하는 Mulicast가 가능한 모든 host를 지칭&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;* 224.0.0.2 : 현재 서브넷에 존재하는 Multicast가 가능한 모든 라우터를 지칭&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 14pt; white-space: pre-wrap;&quot;&gt;○ 프로토콜&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;어떤 장비와 Multicast&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt; 정보를 교환하느냐에 따라 프로토콜 구분&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- IGMP: host와 라우터 간&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- CGMP, IGMP Snooping: 라우터와 스위치간&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Multicasting Routing Protocol: 라우터와 라우터간&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13.999999999999998pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;○ Unicast / Broadcast / Multicast 차이&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Unicast: 하나의 송신자가 다른 하나의 수신자로 데이터를 전송하는 방식 &lt;/span&gt;&lt;span style=&quot;font-size: 13pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(일반적인 인터넷 응용프로그램이 채택)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Broadcast: 하나의 송신자가 같은 서브네트워크 상의 모든 수신자에게&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;&amp;nbsp;데이터를 전송하는 방식&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;- Multicast: 하나 이상의 송신자들이 특정한 하나 이상의 수신자들에게&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;&amp;nbsp;데이터를 전송하는 방식(인터넷 화상 회의 등)&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp;=&amp;gt; 다중 수신자에게 동일한 데이터를 전송할 경우 유니캐스트 사용시&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;&amp;nbsp;데이터패킷을 다수 사용자에게 여러 번 전송하기 때문에 회선부담,&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;&amp;nbsp;브로드캐스트 사용시 하나의 트래픽으로 보내지만 No Reciever&lt;/span&gt;&lt;span style=&quot;font-family: Arial; font-size: 13pt; white-space: pre-wrap;&quot;&gt;&amp;nbsp;입장에서는 불필요 트래픽 수신&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size:13pt;font-family:Arial;color:#000000;background-color:#ffffff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-top: 0pt; margin-bottom: 10pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;(참고: &lt;/span&gt;&lt;a href=&quot;http://www.terms.co.kr/multicast.htm&quot;&gt;&lt;span style=&quot;font-size: 9pt; font-family: Arial; color: rgb(0, 0, 255); font-variant-numeric: normal; font-variant-east-asian: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http://www.terms.co.kr/multicast.htm&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-top: 0pt; margin-bottom: 10pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://unabated.tistory.com/entry/Multicast-1-%EA%B8%B0%EB%B3%B8-%EC%9D%B4%EB%A1%A0&quot;&gt;&lt;span style=&quot;font-size: 9pt; font-family: Arial; color: rgb(0, 0, 255); font-variant-numeric: normal; font-variant-east-asian: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http://unabated.tistory.com/entry/Multicast-1-%EA%B8%B0%EB%B3%B8-%EC%9D%B4%EB%A1%A0&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 9pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.7999999999999998;margin-top:0pt;margin-bottom:10pt;&quot;&gt;&lt;span style=&quot;font-size: 13pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height: 1.8; margin-top: 0pt; margin-bottom: 10pt;&quot;&gt;&lt;span style=&quot;font-size: 9pt; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;https://wiki.kldp.org/wiki.php/LinuxdocSgml/Multicast-HOWTO)&lt;/span&gt;&lt;/p&gt;</description>
      <category>네트워크</category>
      <author>SK</author>
      <guid isPermaLink="true">https://dev-woo.tistory.com/48</guid>
      <comments>https://dev-woo.tistory.com/48#entry48comment</comments>
      <pubDate>Mon, 28 Jan 2019 22:04:23 +0900</pubDate>
    </item>
    <item>
      <title>회귀분석에서 T통계량과 F통계량을 사용하는 이유</title>
      <link>https://dev-woo.tistory.com/46</link>
      <description>&lt;p&gt;회귀분석에서 T통계량과 F통계량을 사용하는 이유&lt;/p&gt;&lt;p&gt;https://m.blog.naver.com/PostView.nhn?blogId=vnf3751&amp;amp;logNo=220841363022&amp;amp;proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F&lt;/p&gt;</description>
      <category>데이터사이언스</category>
      <author>SK</author>
      <guid isPermaLink="true">https://dev-woo.tistory.com/46</guid>
      <comments>https://dev-woo.tistory.com/46#entry46comment</comments>
      <pubDate>Wed, 3 Oct 2018 15:33:05 +0900</pubDate>
    </item>
  </channel>
</rss>