<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>잡학문구</title>
    <link>https://yooloo.tistory.com/</link>
    <description>IT, DBMS, ORACLE, MongoDB, mySQL, mariaDB, AWS, AWS RDS, Docker, AI, python</description>
    <language>ko</language>
    <pubDate>Thu, 18 Jun 2026 17:54:08 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>필유아사</managingEditor>
    <item>
      <title>Oracle enq: TX - allocate ITL entry 구현</title>
      <link>https://yooloo.tistory.com/315</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-path-to-node=&quot;14&quot; data-ke-size=&quot;size26&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;Step 1. 테스트용 테이블 생성&lt;/h2&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;ITL 개수를 결정하는 INITRANS와 MAXTRANS를 가장 낮게 설정하고,&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;데이터가 여러 블록으로 쪼개지지 않도록 하나의 블록에 최대한 모아서 넣습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 테스트 테이블 생성&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1781248851377&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 1. 테스트 테이블 생성 (INITRANS와 MAXTRANS를 최소값인 1과 2로 설정)
CREATE TABLE itl_test_tbl (
    id   NUMBER,
    val  VARCHAR2(100)
)
INITRANS 1
MAXTRANS 2 -- Oracle 10g 이후 버전부터 MAXTRANS 값은 내부적으로 무조건 256으로 고정
PCTFREE 0; -- 블록 내 여유 공간을 0으로 만들어 ITL이 동적으로 확장될 공간을 원천 차단&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. 동일한 데이터 블록에 행들이 들어가도록 연속으로 INSERT&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1781248906193&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO itl_test_tbl VALUES (1, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (2, 'BBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (3, 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO itl_test_tbl VALUES (4, 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
INSERT INTO itl_test_tbl VALUES (5, 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
INSERT INTO itl_test_tbl VALUES (6, 'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG');
INSERT INTO itl_test_tbl VALUES (7, 'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
INSERT INTO itl_test_tbl VALUES (8, 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII');
INSERT INTO itl_test_tbl VALUES (9, 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ');
INSERT INTO itl_test_tbl VALUES (10, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (11, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (12, 'BBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (13, 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO itl_test_tbl VALUES (14, 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
INSERT INTO itl_test_tbl VALUES (15, 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
INSERT INTO itl_test_tbl VALUES (16, 'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG');
INSERT INTO itl_test_tbl VALUES (17, 'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
INSERT INTO itl_test_tbl VALUES (18, 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII');
INSERT INTO itl_test_tbl VALUES (19, 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ');
INSERT INTO itl_test_tbl VALUES (20, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (21, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (22, 'BBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (23, 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO itl_test_tbl VALUES (24, 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
INSERT INTO itl_test_tbl VALUES (25, 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
INSERT INTO itl_test_tbl VALUES (26, 'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG');
INSERT INTO itl_test_tbl VALUES (27, 'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
INSERT INTO itl_test_tbl VALUES (28, 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII');
INSERT INTO itl_test_tbl VALUES (29, 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ');
INSERT INTO itl_test_tbl VALUES (30, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (31, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (32, 'BBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (33, 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO itl_test_tbl VALUES (34, 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
INSERT INTO itl_test_tbl VALUES (35, 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
INSERT INTO itl_test_tbl VALUES (36, 'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG');
INSERT INTO itl_test_tbl VALUES (37, 'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
INSERT INTO itl_test_tbl VALUES (38, 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII');
INSERT INTO itl_test_tbl VALUES (39, 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ');
INSERT INTO itl_test_tbl VALUES (40, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (41, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (42, 'BBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (43, 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO itl_test_tbl VALUES (44, 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
INSERT INTO itl_test_tbl VALUES (45, 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
INSERT INTO itl_test_tbl VALUES (46, 'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG');
INSERT INTO itl_test_tbl VALUES (47, 'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
INSERT INTO itl_test_tbl VALUES (48, 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII');
INSERT INTO itl_test_tbl VALUES (49, 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ');
INSERT INTO itl_test_tbl VALUES (50, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (51, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (52, 'BBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (53, 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO itl_test_tbl VALUES (54, 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
INSERT INTO itl_test_tbl VALUES (55, 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
INSERT INTO itl_test_tbl VALUES (56, 'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG');
INSERT INTO itl_test_tbl VALUES (57, 'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
INSERT INTO itl_test_tbl VALUES (58, 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII');
INSERT INTO itl_test_tbl VALUES (59, 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ');
INSERT INTO itl_test_tbl VALUES (60, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (61, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (62, 'BBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (63, 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO itl_test_tbl VALUES (64, 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
INSERT INTO itl_test_tbl VALUES (65, 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
INSERT INTO itl_test_tbl VALUES (66, 'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG');
INSERT INTO itl_test_tbl VALUES (67, 'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
INSERT INTO itl_test_tbl VALUES (68, 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII');
INSERT INTO itl_test_tbl VALUES (69, 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ');
INSERT INTO itl_test_tbl VALUES (70, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (71, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (72, 'BBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (73, 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO itl_test_tbl VALUES (74, 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
INSERT INTO itl_test_tbl VALUES (75, 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
INSERT INTO itl_test_tbl VALUES (76, 'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG');
INSERT INTO itl_test_tbl VALUES (77, 'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
INSERT INTO itl_test_tbl VALUES (78, 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII');
INSERT INTO itl_test_tbl VALUES (79, 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ');
INSERT INTO itl_test_tbl VALUES (80, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (81, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (82, 'BBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (83, 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO itl_test_tbl VALUES (84, 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
INSERT INTO itl_test_tbl VALUES (85, 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
INSERT INTO itl_test_tbl VALUES (86, 'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG');
INSERT INTO itl_test_tbl VALUES (87, 'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
INSERT INTO itl_test_tbl VALUES (88, 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII');
INSERT INTO itl_test_tbl VALUES (89, 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ');
INSERT INTO itl_test_tbl VALUES (90, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (91, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (92, 'BBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
INSERT INTO itl_test_tbl VALUES (93, 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC');
INSERT INTO itl_test_tbl VALUES (94, 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD');
INSERT INTO itl_test_tbl VALUES (95, 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
INSERT INTO itl_test_tbl VALUES (96, 'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG');
INSERT INTO itl_test_tbl VALUES (97, 'HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH');
INSERT INTO itl_test_tbl VALUES (98, 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII');
INSERT INTO itl_test_tbl VALUES (99, 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ');

commit;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. 데이터가 실제로 같은 블록에 있는지 확인&lt;/b&gt; &lt;br /&gt;SELECT&amp;nbsp;id,&amp;nbsp;dbms_rowid.rowid_block_number(rowid)&amp;nbsp;as&amp;nbsp;block_no&amp;nbsp; &lt;br /&gt;FROM&amp;nbsp;itl_test_tbl; &lt;br /&gt;-- 같은 Block에 저장된 데이터 확인;&lt;/p&gt;
&lt;pre id=&quot;code_1781246719674&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;* 본 테스트에서는 아래와 같이 id=79 까지는 같은 block에 저장됨
        77     613313
        78     613313
        79     613313
        80     613314
        81     613314&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-path-to-node=&quot;14&quot; data-ke-size=&quot;size26&quot;&gt;  Step 2. 동시 다발적 트랜잭션 실행 (여러개의 세션 필요)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;MAXTRANS를 256로 설정되기 때문에, 이 블록을 동시에 수정할 수 있는 세션은 테스트 환경마다 상이할 수 있습니다.&lt;/p&gt;
&lt;blockquote data-path-to-node=&quot;11&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;11,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0&quot;&gt;⚠️ 주의:&lt;/b&gt; 각각 **다른 행(Row)**을 업데이트해야 합니다. 같은 행을 업데이트하면 ITL 부족이 아니라 일반적인 Row Lock(enq: TX - row lock contention)이 걸립니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;세션 1 (Session A):&lt;/b&gt;&lt;/li&gt;
&lt;li data-ved=&quot;0CAAQhtANahgKEwiWmKnOiPyUAxUAAAAAHQAAAAAQ7wE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;SQL&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;sql&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;UPDATE itl_test_tbl SET val = 'WORK_A' WHERE id = 1;
-- COMMIT 하지 않고 대기 (ITL 슬롯 1개 점유)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0&quot;&gt;세션 2 (Session B):&lt;/b&gt;&lt;/li&gt;
&lt;li data-ved=&quot;0CAAQhtANahgKEwiWmKnOiPyUAxUAAAAAHQAAAAAQ8AE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;SQL&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;sql&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;UPDATE itl_test_tbl SET val = 'WORK_B' WHERE id = 2;
-- -- COMMIT 하지 않고 대기 (ITL 슬롯 2개 점유)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,2,0&quot;&gt;세션 3 (Session C):&lt;/b&gt;&lt;/li&gt;
&lt;li data-ved=&quot;0CAAQhtANahgKEwiWmKnOiPyUAxUAAAAAHQAAAAAQ8QE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;&lt;span&gt;SQL&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;sql&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;UPDATE itl_test_tbl SET val = 'WORK_C' WHERE id = 3;
-- -- COMMIT 하지 않고 대기 (ITL 슬롯 3개 점유)&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;세션 4 (Session D):&lt;/li&gt;
&lt;li&gt;SQL&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;UPDATE itl_test_tbl SET val = 'WORK_C' WHERE id = 4;
-- -- COMMIT 하지 않고 대기 (ITL 슬롯 4개 점유)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 테스트에서는 세션 5, 세션 6에서 UPDATE 수행 후 commit 하지 않고 대기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;b data-path-to-node=&quot;12,2,0&quot; data-index-in-node=&quot;0&quot;&gt;세션 7 (Session G):&lt;/b&gt;&lt;/li&gt;
&lt;li data-hveid=&quot;0&quot; data-ved=&quot;0CAAQhtANahgKEwiWmKnOiPyUAxUAAAAAHQAAAAAQ8QE&quot;&gt;&amp;nbsp;
&lt;pre class=&quot;sql&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;UPDATE itl_test_tbl SET val = 'WORK_G' WHERE id = 7;
-- 실행하는 순간 락이 걸리며 세션이 멈춤 (대기 발생!)&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;SQL&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;==&amp;gt; UPDATE 가 락이 걸릴 때까지 새로운 session에서 id를 변경하면서 수행&lt;/span&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UPDATE itl_test_tbl &lt;span&gt;SET&lt;/span&gt; val &lt;span&gt;=&lt;/span&gt; &lt;span&gt;'WORK_G'&lt;/span&gt; &lt;span&gt;WHERE&lt;/span&gt; id &lt;span&gt;=&lt;/span&gt; &lt;span&gt;7&lt;/span&gt;;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 테스트에서는&amp;nbsp; 7번째 Session 에서 Lock 이 발생함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size26&quot;&gt;  Step 3. 모니터링 세션에서 대기 이벤트 확인&lt;/h2&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;세션이 멈춰있는 상태(본 테스트에서는 7번째 session)에서, 별도의 모니터링 창을 열어 아래 쿼리를 수행합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwiWmKnOiPyUAxUAAAAAHQAAAAAQ8gE&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;SQL&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;sql&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;SELECT 
    sid, 
    blocking_session, 
    event, 
    p1, p2, p3, 
    seconds_in_wait
FROM v$session 
WHERE event LIKE '%ITL%';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;  테스트 결과 출력&lt;/h3&gt;
&lt;pre id=&quot;code_1781247277420&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;SID	BLOCKING_SESSION	EVENT	P1	P2	P3	SECONDS_IN_WAIT
389	5,863	enq: TX - allocate ITL entry	1,415,053,316	62,586,881	24,382	30&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에서 BLOCKING_SESSION은&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0,0&quot;&gt;특징:&lt;/b&gt; 일반적인 Row Lock 경합과 달리 blocking_session이 명확하게 지정되지 않을 수 있습니다. 특정 세션이 나를 막은 게 아니라 &lt;b data-index-in-node=&quot;90&quot; data-path-to-node=&quot;20,0,0&quot;&gt;&quot;블록 자체의 방(ITL)이 꽉 차서&quot;&lt;/b&gt; 못 들어가는 것이기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-path-to-node=&quot;14&quot; data-ke-size=&quot;size26&quot;&gt;  추가로 Row lock test&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 테스트에서는 추가로 row lock test를 진행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-path-to-node=&quot;12&quot;&gt;
&lt;li&gt;&lt;b data-path-to-node=&quot;12,0,0&quot; data-index-in-node=&quot;0&quot;&gt;세션 8 (Session H):&lt;/b&gt;&lt;/li&gt;
&lt;li data-hveid=&quot;0&quot; data-ved=&quot;0CAAQhtANahgKEwiWmKnOiPyUAxUAAAAAHQAAAAAQ7wE&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;SQL&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;UPDATE itl_test_tbl SET val = 'WORK_H' WHERE id = 4;
-- row lock으로 대기&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 ITL lock과 row lock을 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1781250175776&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SID	BLOCKING_SESSION	EVENT	SECONDS_IN_WAIT
---------------------------------------------------------
389	5,863	enq: TX - allocate ITL entry	1,937
3,044	5,863	enq: TX - row lock contention	1,689&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ORACLE</category>
      <author>필유아사</author>
      <guid isPermaLink="true">https://yooloo.tistory.com/315</guid>
      <comments>https://yooloo.tistory.com/315#entry315comment</comments>
      <pubDate>Fri, 12 Jun 2026 16:44:26 +0900</pubDate>
    </item>
    <item>
      <title>사용 중인 Wi-Fi의 비밀번호를 확인하는 방법</title>
      <link>https://yooloo.tistory.com/314</link>
      <description>&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;이미 연결되어 사용 중인 Wi-Fi의 비밀번호를 확인하는 방법은 윈도우(Windows)와 맥(Mac) 환경에 따라 다릅니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;각 PC 환경에 맞는 방법을 따라해 보세요.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;1&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size23&quot;&gt;1. Windows PC에서 확인하는 방법 (가장 간단한 방법)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;윈도우 설정 메뉴를 통해 현재 연결된 Wi-Fi의 암호를 바로 확인할 수 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;4&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,0,0&quot;&gt;제어판&lt;/b&gt;을 엽니다. (작업표시줄 검색창에 '제어판' 입력)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0&quot;&gt;네트워크 및 인터넷&lt;/b&gt; &amp;gt; &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;4,1,0&quot;&gt;네트워크 및 공유 센터&lt;/b&gt;를 클릭합니다.&lt;/li&gt;
&lt;li&gt;'활성 네트워크 보기' 섹션에서 현재 연결된 **Wi-Fi 이름(SSID)**을 클릭합니다.&lt;/li&gt;
&lt;li&gt;새로 뜨는 상태 창에서 &lt;b data-index-in-node=&quot;13&quot; data-path-to-node=&quot;4,3,0&quot;&gt;무선 속성(Wireless Properties)&lt;/b&gt; 버튼을 누릅니다.&lt;/li&gt;
&lt;li&gt;상단 탭 중 &lt;b data-index-in-node=&quot;7&quot; data-path-to-node=&quot;4,4,0&quot;&gt;보안(Security)&lt;/b&gt; 탭을 선택합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,5,0&quot;&gt;문자 표시(Show characters)&lt;/b&gt; 체크박스에 체크하면 '네트워크 보안 키' 항목에서 비밀번호를 확인할 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-path-to-node=&quot;5&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size23&quot;&gt;2. Windows 명령 프롬프트(CMD)로 확인 (과거 접속 이력까지)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;현재 연결되지 않았더라도 예전에 연결했던 모든 Wi-Fi 비밀번호를 확인할 수 있는 방법입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Win + R 키를 누르고 &lt;b data-index-in-node=&quot;15&quot; data-path-to-node=&quot;8,0,0&quot;&gt;cmd&lt;/b&gt;를 입력하여 실행합니다.&lt;/li&gt;
&lt;li&gt;다음 명령어를 입력하고 엔터를 누릅니다.&lt;/li&gt;
&lt;li data-ved=&quot;0CAAQhtANahgKEwim6_HrhdCRAxUAAAAAHQAAAAAQxQY&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;netsh wlan show profiles
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;비밀번호를 알고 싶은 Wi-Fi 이름을 확인한 후, 아래 명령어를 입력합니다 (이름 부분에 실제 Wi-Fi 명칭 입력).&lt;/li&gt;
&lt;li data-ved=&quot;0CAAQhtANahgKEwim6_HrhdCRAxUAAAAAHQAAAAAQxgY&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;netsh wlan show profile name=&quot;와이파이이름&quot; key=clear
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;결과 내용 중 &lt;b data-index-in-node=&quot;8&quot; data-path-to-node=&quot;8,3,0&quot;&gt;보안 설정&lt;/b&gt; 섹션의 &lt;b data-index-in-node=&quot;18&quot; data-path-to-node=&quot;8,3,0&quot;&gt;키 콘텐츠(Key Content)&lt;/b&gt; 항목 옆에 있는 것이 비밀번호입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-path-to-node=&quot;9&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;3. Mac(macOS)에서 확인하는 방법&lt;/h3&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;맥은 '키체인 접근' 앱을 통해 보안 처리된 비밀번호를 관리합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Command + Space를 눌러 Spotlight 검색을 켜고 **키체인 접근(Keychain Access)**을 입력해 실행합니다.&lt;/li&gt;
&lt;li&gt;오른쪽 상단 검색창에 확인하려는 &lt;b data-index-in-node=&quot;18&quot; data-path-to-node=&quot;12,1,0&quot;&gt;Wi-Fi 이름&lt;/b&gt;을 입력합니다.&lt;/li&gt;
&lt;li&gt;목록에서 해당 항목을 &lt;b data-index-in-node=&quot;12&quot; data-path-to-node=&quot;12,2,0&quot;&gt;더블 클릭&lt;/b&gt;합니다.&lt;/li&gt;
&lt;li&gt;하단의 &lt;b data-index-in-node=&quot;4&quot; data-path-to-node=&quot;12,3,0&quot;&gt;비밀번호 보기(Show password)&lt;/b&gt; 체크박스를 클릭합니다.&lt;/li&gt;
&lt;li&gt;맥 계정 암호(로그인 암호)를 입력하면 비밀번호가 텍스트로 나타납니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-path-to-node=&quot;13&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;4. 모바일 기기를 활용한 QR 코드 확인 (Windows 11)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;Windows 11 사용자라면 스마트폰을 이용해 더 직관적으로 확인할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0,0&quot;&gt;설정 &amp;gt; 네트워크 및 인터넷 &amp;gt; Wi-Fi &amp;gt; 공유&lt;/b&gt; 항목으로 들어가면 QR 코드가 생성됩니다. 스마트폰 카메라로 이를 스캔하면 비밀번호가 텍스트로 표시됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;17&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>이것저것</category>
      <author>필유아사</author>
      <guid isPermaLink="true">https://yooloo.tistory.com/314</guid>
      <comments>https://yooloo.tistory.com/314#entry314comment</comments>
      <pubDate>Wed, 24 Dec 2025 14:43:39 +0900</pubDate>
    </item>
    <item>
      <title>java로 oracle DB 접속 테스트</title>
      <link>https://yooloo.tistory.com/313</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. 전제 조건&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;5&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;JDK (Java Development Kit) 설치:&lt;/b&gt; 자바 코드를 컴파일하고 실행할 환경이 필요합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Oracle JDBC 드라이버 (ojdbcX.jar):&lt;/b&gt; 해당 드라이버 파일을 다운로드하여 클래스 경로(CLASSPATH)에 포함해야 합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Oracle 19c:&lt;/b&gt; 일반적으로 ojdbc8.jar 또는 ojdbc10.jar을 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터베이스 정보:&lt;/b&gt; 접속할 Oracle 인스턴스의 정보(URL, 사용자 ID, 비밀번호)를 알고 있어야 합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-path-to-node=&quot;6&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;2. Java 코드 예시 (OracleConnectionTest.java)&lt;/h3&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjdxevxqKCRAxUAAAAAHQAAAAAQ_QU&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;&lt;span&gt;Java&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;processing&quot;&gt;&lt;code&gt;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class OracleConnectionTest {

    //   사용자 환경에 맞게 이 값들을 수정하세요.
    private static final String DRIVER = &quot;oracle.jdbc.driver.OracleDriver&quot;;
    // TNS Listener 포트가 기본값(1521)이고, SID가 ORCL이며, DB가 로컬에 있다고 가정
    private static final String URL = &quot;jdbc:oracle:thin:@localhost:1521:ORCL&quot;; 
    // 또는 Service Name을 사용하는 경우:
    // private static final String URL = &quot;jdbc:oracle:thin:@//localhost:1521/XEPDB1&quot;; 
    
    private static final String USER = &quot;your_username&quot;; // 예: SCOTT 또는 SYSTEM
    private static final String PASS = &quot;your_password&quot;; // 예: TIGER 또는 manager

    public static void main(String[] args) {
        Connection conn = null;

        try {
            // 1. JDBC 드라이버 로드 (Class.forName)
            Class.forName(DRIVER);
            System.out.println(&quot;✅ JDBC 드라이버 로드 성공.&quot;);

            // 2. 데이터베이스 연결 (DriverManager.getConnection)
            conn = DriverManager.getConnection(URL, USER, PASS);
            System.out.println(&quot;  데이터베이스 연결 성공!&quot;);
            System.out.println(&quot;DB 연결 정보: &quot; + conn.getMetaData().getDatabaseProductName() + &quot; &quot; + conn.getMetaData().getDatabaseProductVersion());

        } catch (ClassNotFoundException e) {
            System.err.println(&quot;❌ JDBC 드라이버를 찾을 수 없습니다. CLASSPATH 설정을 확인하세요.&quot;);
            e.printStackTrace();
        } catch (SQLException e) {
            System.err.println(&quot;❌ 데이터베이스 연결 실패!&quot;);
            System.err.println(&quot;오류 코드: &quot; + e.getErrorCode());
            System.err.println(&quot;오류 메시지: &quot; + e.getMessage());
            e.printStackTrace();
        } finally {
            // 3. 연결 닫기
            if (conn != null) {
                try {
                    conn.close();
                    System.out.println(&quot;연결 종료.&quot;);
                } catch (SQLException e) {
                    System.err.println(&quot;연결 종료 중 오류 발생: &quot; + e.getMessage());
                }
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;9&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;3. 컴파일 및 실행 방법&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;파일 저장:&lt;/b&gt; 코드를 OracleConnectionTest.java 파일로 저장합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ojdbcX.jar 준비:&lt;/b&gt; Oracle 드라이버 파일(ojdbc8.jar 등)을 소스 코드가 있는 디렉토리에 복사합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;컴파일:&lt;/b&gt; 터미널/명령 프롬프트에서 컴파일합니다.&lt;/li&gt;
&lt;li data-ved=&quot;0CAAQhtANahgKEwjdxevxqKCRAxUAAAAAHQAAAAAQ_gU&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;&lt;span&gt;Bash&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;# ojdbc8.jar 파일이 현재 디렉토리에 있다고 가정
javac -cp ojdbc8.jar OracleConnectionTest.java
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;실행:&lt;/b&gt; 컴파일된 클래스 파일을 실행합니다.&lt;/li&gt;
&lt;li data-ved=&quot;0CAAQhtANahgKEwjdxevxqKCRAxUAAAAAHQAAAAAQ_wU&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;&lt;span&gt;Bash&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;java -cp .:ojdbc8.jar OracleConnectionTest
# (Windows 환경: java -cp .;ojdbc8.jar OracleConnectionTest)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size20&quot;&gt;예상 출력 (성공 시)&lt;/h4&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjdxevxqKCRAxUAAAAAHQAAAAAQgAY&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;✅ JDBC 드라이버 로드 성공.
  데이터베이스 연결 성공!
DB 연결 정보: Oracle 19.0.0.0.0
연결 종료.
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size20&quot;&gt;예상 출력 (실패 시 - 비밀번호 오류 등)&lt;/h4&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjdxevxqKCRAxUAAAAAHQAAAAAQgQY&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;✅ JDBC 드라이버 로드 성공.
❌ 데이터베이스 연결 실패!
오류 코드: 1017
오류 메시지: ORA-01017: invalid username/password; logon denied
... (Java Stack Trace)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ORACLE</category>
      <author>필유아사</author>
      <guid isPermaLink="true">https://yooloo.tistory.com/313</guid>
      <comments>https://yooloo.tistory.com/313#entry313comment</comments>
      <pubDate>Thu, 4 Dec 2025 12:10:22 +0900</pubDate>
    </item>
    <item>
      <title>MySQL - 자동으로 파티션 추가 프로시저/Event</title>
      <link>https://yooloo.tistory.com/310</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;MySQL에서 자동으로 파티션을 추가하기 위해 MySQL의 event와 procedure를 활용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1) 프로시져 생성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2) event 생성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #006dd7;&quot;&gt;1. 프로시저 생성&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;파티션된 테이블에 maxvalue 파티션이 없는 경우와 maxvalue 파티션이 있는 경우에 대해 각각 파티션을 추가하는 프로시저이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1) maxvalue 가 없는 파티션인 경우&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;maxvalue가 없는 파티션 테이블&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;sales&amp;nbsp;(&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sale_id&amp;nbsp;INT&amp;nbsp;NOT&amp;nbsp;NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sale_date&amp;nbsp;DATETIME&amp;nbsp;NOT&amp;nbsp;NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;customer_id&amp;nbsp;INT&amp;nbsp;NOT&amp;nbsp;NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;amount&amp;nbsp;DECIMAL(10,2),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRIMARY&amp;nbsp;KEY&amp;nbsp;(sale_id,&amp;nbsp;sale_date)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;PARTITION&amp;nbsp;BY&amp;nbsp;RANGE&amp;nbsp;(TO_DAYS(sale_date))&amp;nbsp;(&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PARTITION p_2025_01 VALUES LESS THAN (TO_DAYS('2025-02-01')),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PARTITION p_2025_02 VALUES LESS THAN (TO_DAYS('2025-03-01')),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PARTITION p_2025_03 VALUES LESS THAN (TO_DAYS('2025-04-01')),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PARTITION p_2025_04 VALUES LESS THAN (TO_DAYS('2025-05-01'))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;);&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 16px; letter-spacing: 0px;&quot;&gt;자동으로 &lt;/span&gt;매월 새로운 파티션을 추가하는 프로시저&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DELIMITER&amp;nbsp;// &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CREATE PROCEDURE pr_monthly_add_partition(IN partition_time DATETIME) &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;BEGIN &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;@sql&amp;nbsp;=&amp;nbsp;CONCAT(&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'ALTER&amp;nbsp;TABLE&amp;nbsp;sales&amp;nbsp;ADD&amp;nbsp;PARTITION&amp;nbsp;(',&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'PARTITION&amp;nbsp;p_',&amp;nbsp;DATE_FORMAT(DATE_SUB(DATE_FORMAT(partition_time,&amp;nbsp;'%Y%m%d'),&amp;nbsp;interval&amp;nbsp;&amp;nbsp;1&amp;nbsp;month),&amp;nbsp;'%Y_%m'),&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'&amp;nbsp;VALUES&amp;nbsp;LESS&amp;nbsp;THAN&amp;nbsp;(',&amp;nbsp;TO_DAYS(partition_time),&amp;nbsp;'));'&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PREPARE&amp;nbsp;stmt&amp;nbsp;FROM&amp;nbsp;@sql; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EXECUTE&amp;nbsp;stmt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEALLOCATE&amp;nbsp;PREPARE&amp;nbsp;stmt; &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;END&amp;nbsp;// &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DELIMITER&amp;nbsp;;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;파티션 추가를 위한 프로시저 호출&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CALL &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;pr_monthly_add_partition&lt;/span&gt;('2025-06-01');&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2) maxvalue 가 있는 파티션인 경우&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;maxvalue가 있는 파티션 테이블&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CREATE TABLE sales_max (&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sale_id&amp;nbsp;INT&amp;nbsp;NOT&amp;nbsp;NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sale_date&amp;nbsp;DATETIME&amp;nbsp;NOT&amp;nbsp;NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;customer_id&amp;nbsp;INT&amp;nbsp;NOT&amp;nbsp;NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;amount&amp;nbsp;DECIMAL(10,2),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRIMARY&amp;nbsp;KEY&amp;nbsp;(sale_id,&amp;nbsp;sale_date)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;PARTITION&amp;nbsp;BY&amp;nbsp;RANGE&amp;nbsp;(TO_DAYS(sale_date))&amp;nbsp;(&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PARTITION p_2025_01 VALUES LESS THAN (TO_DAYS('2025-02-01')),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PARTITION p_2025_02 VALUES LESS THAN (TO_DAYS('2025-03-01')),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PARTITION p_2025_03 VALUES LESS THAN (TO_DAYS('2025-04-01')),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PARTITION p_2025_04 VALUES LESS THAN (TO_DAYS('2025-05-01')),&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; PARTITION p_maxvalue VALUES LESS THAN MAXVALUE&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;);&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DELIMITER //&lt;br /&gt;&lt;br /&gt;CREATE PROCEDURE pr_monthly_add_partition_max(IN partition_time DATETIME)&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SET&amp;nbsp;@sql&amp;nbsp;=&amp;nbsp;CONCAT(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'ALTER&amp;nbsp;TABLE&amp;nbsp;sales_max&amp;nbsp;REORGANIZE&amp;nbsp;PARTITION&amp;nbsp;p_maxvalue&amp;nbsp;INTO(\n',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'PARTITION p_', DATE_FORMAT(partition_time, '%Y_%m'), ' VALUES LESS THAN (', TO_DAYS(partition_time), '),\n',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'PARTITION&amp;nbsp;p_maxvalue',&amp;nbsp;'&amp;nbsp;VALUES&amp;nbsp;LESS&amp;nbsp;THAN&amp;nbsp;MAXVALUE);');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PREPARE&amp;nbsp;stmt&amp;nbsp;FROM&amp;nbsp;@sql;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EXECUTE&amp;nbsp;stmt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEALLOCATE&amp;nbsp;PREPARE&amp;nbsp;stmt;&lt;br /&gt;END&amp;nbsp;//&lt;br /&gt;&lt;br /&gt;DELIMITER ;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;파티션 추가를 위한 프로시저 호출&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CALL &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;pr_monthly_add_partition_max&lt;/span&gt;('2025-06-01');&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #006dd7;&quot;&gt;2. event 생성&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;위에서 생성한 프로시저를 event로 등록하여 필요한 시점에 수행되도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;event를 수행하기 위해서는 &lt;span style=&quot;text-align: start;&quot;&gt;event_scheduler가 ON 으로 설정되어 있어야 한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt; 이벤트 스케줄러 활성화 &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;SET&amp;nbsp;GLOBAL&amp;nbsp;event_scheduler&amp;nbsp;=&amp;nbsp;ON;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt; 매달 1일 자동 실행되는 EVENT 생성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;매달 1일에 자동으로 파티션을 추가하는 event를 생성한다. event는 매달 1일 00:00:00 에 수행된다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CREATE EVENT ev_monthly_add_partition&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ON&amp;nbsp;SCHEDULE&amp;nbsp;EVERY&amp;nbsp;1&amp;nbsp;MONTH &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;STARTS &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;TIMESTAMP&lt;/span&gt;(LAST_DAY(CURRENT_DATE() - INTERVAL 1 MONTH) + INTERVAL 1 DAY)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: left; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; ON COMPLETION PRESERVE COMMENT&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp;'매달 1일에 파티션 추가 EVENT'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DO CALL &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;pr_monthly_add_partition&lt;/span&gt;(DATE_FORMAT(LAST_DAY(CURRENT_DATE()&amp;nbsp;-&amp;nbsp;INTERVAL&amp;nbsp;1&amp;nbsp;MONTH)&amp;nbsp;+&amp;nbsp;INTERVAL&amp;nbsp;1&amp;nbsp;DAY,&amp;nbsp;'%Y-%m-%d')); &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;만일, 매달 1일 01:00 수행하기를 원하면&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;STARTS&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;TIMESTAMP&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;(LAST_DAY(CURRENT_DATE() - INTERVAL 1 MONTH) + INTERVAL 1 DAY)를&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;STARTS&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;TIMESTAMP&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;(LAST_DAY(CURRENT_DATE() - INTERVAL 1 MONTH) + INTERVAL 25 HOUR) 로 수정하면 된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;위와 같은 방법으로 수행하기를 원하는 시분초를 지정할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MySQL</category>
      <author>필유아사</author>
      <guid isPermaLink="true">https://yooloo.tistory.com/310</guid>
      <comments>https://yooloo.tistory.com/310#entry310comment</comments>
      <pubDate>Mon, 31 Mar 2025 17:34:23 +0900</pubDate>
    </item>
    <item>
      <title>MySQL 월별 파티션</title>
      <link>https://yooloo.tistory.com/309</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DATE, DATETIME, TIMESTAMP 데이터타입의 컬럼으로 파티션을 생성, 추가, 삭제 하는 예제입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;파티션테이블 생성&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1) DATE, DATETIME 컬럼으로 파티션&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래는 월별 파티션 예제입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1-1) TO_DAYS 함수 사용&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743387487213&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE sales (
    sale_id INT NOT NULL,
    sale_date DATE NOT NULL,
    customer_id INT NOT NULL,
    amount DECIMAL(10,2),
    PRIMARY KEY (sale_id, sale_date)
)
PARTITION BY RANGE (TO_DAYS(sale_date)) (
    PARTITION p_2024_01 VALUES LESS THAN (TO_DAYS('2024-02-01')),
    PARTITION p_2024_02 VALUES LESS THAN (TO_DAYS('2024-03-01')),
    PARTITION p_2024_03 VALUES LESS THAN (TO_DAYS('2024-04-01')),
    PARTITION p_2024_04 VALUES LESS THAN (TO_DAYS('2024-05-01')),
    PARTITION p_maxvalue VALUES LESS THAN MAXVALUE
);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-end=&quot;780&quot; data-start=&quot;760&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;Range 파티션은 값으로 int 형 데이터가 와야 하기 때문에 TO_DAYS 함수를 사용.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;780&quot; data-start=&quot;760&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;780&quot; data-start=&quot;760&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;설명:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1032&quot; data-start=&quot;781&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;867&quot; data-start=&quot;781&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;TO_DAYS(sale_date) 함수는 분할을 위해 날짜를 숫자 값으로 변환&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;963&quot; data-start=&quot;868&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;각 파티션은 특정 월(예: 2024년 1월, 2024년 2월 등)을 기준으로 정의&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;1032&quot; data-start=&quot;964&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;p_maxvalue 파티션은 2024년 4월보다 큰 모든 데이터를 적재&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;✔ TO_DAYS 함수를 사용하는 이유 : &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;Range 파티션은 값으로 int 형 데이터가 와야 하기 때문&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1-2) 날짜형식의 String으로 사용&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;DATE&amp;nbsp;또는&amp;nbsp;DATETIME&amp;nbsp;열을&amp;nbsp;분할&amp;nbsp;열로&amp;nbsp;사용하여&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;RANGE&amp;nbsp;COLUMNS&lt;/span&gt;&lt;/b&gt;로&amp;nbsp;테이블을&amp;nbsp;분할합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743398632231&quot; class=&quot;sql&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;CREATE TABLE sales_1 (
    sale_id INT NOT NULL,
    sale_date DATE NOT NULL,
    customer_id INT NOT NULL,
    amount DECIMAL(10,2),
    PRIMARY KEY (sale_id, sale_date)
)
PARTITION BY RANGE COLUMNS(sale_date) (
    PARTITION p_2024_01 VALUES LESS THAN ('2024-02-01'),
    PARTITION p_2024_02 VALUES LESS THAN ('2024-03-01'),
    PARTITION p_2024_03 VALUES LESS THAN ('2024-04-01'),
    PARTITION p_2024_04 VALUES LESS THAN ('2024-05-01'),
    PARTITION p_maxvalue VALUES LESS THAN MAXVALUE
);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2) TIMESTAMP 컬럼으로 파티션&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;UNIX_TIMESTAMP() 함수를 사용해서 파티셔닝 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;MySQL 8.4에서는 UNIX_TIMESTAMP() 함수를 사용하여 TIMESTAMP 열의 값을 기준으로 RANGE로 테이블을 분할할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743398332467&quot; class=&quot;sql&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;CREATE TABLE quarterly_report_status (
    report_id INT NOT NULL,
    report_status VARCHAR(20) NOT NULL,
    report_updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
PARTITION BY RANGE ( UNIX_TIMESTAMP(report_updated) ) (
    PARTITION p5 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-04-01 00:00:00') ),
    PARTITION p6 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-07-01 00:00:00') ),
    PARTITION p7 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-10-01 00:00:00') ),
    PARTITION p8 VALUES LESS THAN ( UNIX_TIMESTAMP('2010-01-01 00:00:00') ),
    PARTITION p9 VALUES LESS THAN (MAXVALUE)
);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;파티션 추가&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1) 파티션 테이블이 MAXVALUE로 구성되어 있는 경우에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;REORGANIXE PRTITION&lt;/span&gt; 명령어로 기존 MAXVALUE 파티션을 나눈다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743403750159&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE sales REORGANIZE PARTITION p_maxvalue INTO(
    PARTITION p_2024_05 VALUES LESS THAN (TO_DAYS('2024-06-01')),
    PARTITION p_maxvalue VALUES LESS THAN MAXVALUE);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;2) 파티션 테이블이 MAXVALUE로 구성되어 있지 않은 경우에는&lt;span style=&quot;color: #ee2323;&quot;&gt; ADD PRTITION&lt;/span&gt; 명령어로 파티션을 추가한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743403796895&quot; class=&quot;sql&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;ALTER TABLE sales ADD PARTITION (
    PARTITION p_2024_05 VALUES LESS THAN (TO_DAYS('2024-06-01'))
);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;파티션 삭제&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;삭제하고자 하는 파티션을 &lt;span style=&quot;color: #ee2323;&quot;&gt;DROP&amp;nbsp;PARTITION&lt;/span&gt; 명령어로 삭제한다. 아래는 p_2024_01 파티션을 삭제하는 예제이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1743403886048&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE sales DROP PARTITION p_2024_01;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>필유아사</author>
      <guid isPermaLink="true">https://yooloo.tistory.com/309</guid>
      <comments>https://yooloo.tistory.com/309#entry309comment</comments>
      <pubDate>Mon, 31 Mar 2025 14:26:59 +0900</pubDate>
    </item>
    <item>
      <title>MySQL uptime</title>
      <link>https://yooloo.tistory.com/308</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;MySQL DB의 구동시간을 알 수 있는 방법은 여러가지가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1) SHOW STATUS 로 확인&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;결과값은 초로 표시된다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;SHOW&amp;nbsp;STATUS&amp;nbsp;LIKE&amp;nbsp;'Uptime';&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;[결과값]&lt;/span&gt; &lt;br /&gt;Uptime 144931&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2) Dictionary Table 로 확인&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; performance_schema.global_status 의 Uptime 값은 초로 표시되기 때문에 초를 시분으로 변환하여 조회&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;-- Uptime 을 시분 형식으로 표시&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;SELECT TIME_FORMAT(SEC_TO_TIME(variable_value ),'%H시간 %i분') as Uptime&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;performance_schema.global_status&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE&amp;nbsp;variable_name='Uptime';&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;[결과값]&lt;/span&gt; &lt;br /&gt;40시간 16분&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;--&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; text-align: start;&quot;&gt;Uptime 을 datetime 형식으로 표시&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;SELECT &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;FROM_UNIXTIME(UNIX_TIMESTAMP()&amp;nbsp;-&amp;nbsp;variable_value)&lt;/span&gt; as Uptime&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;performance_schema.global_status&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE&amp;nbsp;variable_name='Uptime';&lt;/span&gt; &lt;br /&gt;[결과값]&lt;br /&gt;2025-03-25 07:31:29.000000&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3) mysql 명령어로 확인&lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;# mysql -u&amp;lt;user&amp;gt; -p&amp;lt;password&amp;gt; -e &quot;status;&quot; | grep -i &quot;uptime&quot;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;[결과값]&lt;/span&gt; &lt;br /&gt;Uptime:&amp;nbsp; 2 days 26 min 56 sec&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&amp;lt;user&amp;gt;, &amp;lt;password&amp;gt; 는 각자의 DB에서 사용하는 user와 패스워드를 입력&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3) mysqladmin status 명령어로 확인&lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;# mysqladmin status -u&amp;lt;user&amp;gt; -p&amp;lt;password&amp;gt;&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;[결과값]&lt;/span&gt;&lt;br /&gt;Uptime:&amp;nbsp;145329&amp;nbsp;&amp;nbsp;Threads:&amp;nbsp;9&amp;nbsp;&amp;nbsp;Questions:&amp;nbsp;46314&amp;nbsp;&amp;nbsp;Slow&amp;nbsp;queries:&amp;nbsp;0&amp;nbsp;&amp;nbsp;Opens:&amp;nbsp;478&amp;nbsp;&amp;nbsp;Flush&amp;nbsp;tables:&amp;nbsp;3&amp;nbsp;&amp;nbsp;Open&amp;nbsp;tables:&amp;nbsp;399&amp;nbsp;&amp;nbsp;Queries&amp;nbsp;per&amp;nbsp;second&amp;nbsp;avg:&amp;nbsp;0.318&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&amp;lt;user&amp;gt;, &amp;lt;password&amp;gt; 는 각자의 DB에서 사용하는 user와 패스워드를 입력&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4) mysqladmin version 명령어로 확인&lt;/span&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;# mysqladmin version -u&amp;lt;user&amp;gt; -p&amp;lt;password&amp;gt; | grep -i &quot;uptime&quot;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;[결과값]&lt;/span&gt;&lt;br /&gt;Uptime:&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;1 day 16 hours 24 min 51 sec&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&amp;lt;user&amp;gt;, &amp;lt;password&amp;gt; 는 각자의 DB에서 사용하는 user와 패스워드를 입력&lt;/i&gt;&lt;/p&gt;</description>
      <category>MySQL</category>
      <author>필유아사</author>
      <guid isPermaLink="true">https://yooloo.tistory.com/308</guid>
      <comments>https://yooloo.tistory.com/308#entry308comment</comments>
      <pubDate>Thu, 27 Mar 2025 15:02:45 +0900</pubDate>
    </item>
    <item>
      <title>MySQL event란</title>
      <link>https://yooloo.tistory.com/307</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;MySQL&amp;nbsp;event란&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;MySQL 이벤트는 일정에 따라 실행되는 작업입니다. &lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;예약된&lt;/span&gt;&amp;nbsp;이벤트라고 합니다. 이벤트를 만들면 주기적인 간격으로 실행할 SQL 문이 포함된 데이터베이스 객체를 만들고, 특정 시간에 시작합니다. Unix&amp;nbsp;crontab&amp;nbsp;(일명&amp;nbsp;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;&quot;&amp;nbsp;cron job&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;) 또는 Windows 작업 스케줄러와 유사합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Event 관리 - 생성/수정/삭제&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt; 1) &lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;Event Scheduler 활성화&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;이벤트를 실행하려면 &lt;/span&gt;Event Scheduler가 활성화되어 있어야 합니다. &lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;Event Scheduler가&lt;/span&gt; 활성화되어 있지 않다면 아래 명령어로 활성화시킵니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733371276232&quot; class=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SET GLOBAL event_scheduler = ON;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;2) Event 생성 권한&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이벤트가 생성될 스키마에 대한 권한이 필요합니다. Event 생성 권한이 없다면 아래와 같이 EVENT 권한을 부여합니다.&lt;span style=&quot;background-color: #ffffff; color: #555555; letter-spacing: 0px;&quot;&gt; 이벤트는 schema 레벨의 권한이므로 테이블 레벨로 권한을 부여할 수 없습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;
&lt;pre class=&quot;html xml&quot; style=&quot;background-color: #f8f8f8; color: #000000; text-align: left;&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;GRANT EVENT ON schemaname.* TO username@'%&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt; &lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;3) Event 생성&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래는 Event 생성 예시입니다.&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;
&lt;pre class=&quot;html xml&quot; style=&quot;background-color: #f8f8f8; color: #000000; text-align: left;&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;CREATE EVENT myevent
    ON SCHEDULE AT TIMESTAMP(CURRENT_DATE) + INTERVAL 1 HOUR
    DO
      UPDATE myschema.mytable SET mycol = mycol + 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;myevent&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;라는 이름의 이벤트를 생성합니다 . &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이 이벤트는&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;1시간에 한 번씩&lt;/span&gt; mytable &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;테이블의 mycol 컬럼&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;값을&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;1씩 증가시키는 SQL 명령문을 실행합니다.&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4) 이벤트 수정&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이벤트를 수정하려면 'ALTER EVENT' 명령을 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이벤트의 여러 특성을 변경할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이 예제에서는 에서 실행되는 SQL 명령문을 myevent에서 모든 레코드를 삭제하고 하루에 한 번(01 시) 실행되도록 변경합니다.&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;
&lt;pre class=&quot;html xml&quot; style=&quot;background-color: #f8f8f8; color: #000000; text-align: left;&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;ALTER EVENT myevent
    ON SCHEDULE
      AT TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR
    DO
      TRUNCATE TABLE myschema.mytable;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;5) 이벤트 활성화&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ENABLE 명령어로 Event를 비활성화합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background-color: #f8f8f8; color: #000000; text-align: left;&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;ALTER EVENT myevent ENABLE;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;6) 이벤트 비활성화&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DISABLE 명령어로 Event를 비활성화합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;
&lt;pre class=&quot;html xml&quot; style=&quot;background-color: #f8f8f8; color: #000000; text-align: left;&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;ALTER EVENT myevent DISABLE;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;7) 이벤트 Drop&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DISABLE 명령어로 Event를 비활성화합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; style=&quot;background-color: #f8f8f8; color: #000000; text-align: left;&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;DROP EVENT myevent ;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot;&gt;8) Event 조회&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #212529; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 데이터베이스의 모든 이벤트를 확인합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;SELECT * FROM information_schema.EVENTS;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 style=&quot;color: #555555;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;CREATE EVENT 옵션&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;
&lt;pre class=&quot;coq&quot; style=&quot;background-color: #f8f8f8; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;CREATE
    [DEFINER = user]
    EVENT
    [IF NOT EXISTS]
    event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON {REPLICA | SLAVE}]
    [COMMENT 'string']
    DO event_body;

schedule: {
    AT timestamp [+ INTERVAL interval] ...
  | EVERY interval
    [STARTS timestamp [+ INTERVAL interval] ...]
    [ENDS timestamp [+ INTERVAL interval] ...]
}

interval:
    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
              WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
              DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;*** Event 생성 옵션 중 설명&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;STARTS 와 ENDS 가 정의된 상태&lt;/b&gt;&lt;/span&gt;에서 ON COMPLETION NOT PRESERVE 옵션은 Event를 Drop 하고&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ON COMPLETION PRESERVE 옵션은 Event를 유지한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MySQL</category>
      <author>필유아사</author>
      <guid isPermaLink="true">https://yooloo.tistory.com/307</guid>
      <comments>https://yooloo.tistory.com/307#entry307comment</comments>
      <pubDate>Thu, 5 Dec 2024 12:59:59 +0900</pubDate>
    </item>
    <item>
      <title>MySQL privileges(권한)</title>
      <link>https://yooloo.tistory.com/306</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1560&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAj5Dm/btsJOItBFh2/3fDhk1KleGRpfoUpmBILVK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAj5Dm/btsJOItBFh2/3fDhk1KleGRpfoUpmBILVK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAj5Dm/btsJOItBFh2/3fDhk1KleGRpfoUpmBILVK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAj5Dm%2FbtsJOItBFh2%2F3fDhk1KleGRpfoUpmBILVK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1560&quot; height=&quot;876&quot; data-origin-width=&quot;1560&quot; data-origin-height=&quot;876&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000c14; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt; &lt;b&gt;G&lt;/b&gt;lobal privileges&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 전역 권한은 서버의 모든 데이터베이스에 적용됩니다. 관리 권한은 사용자가 MySQL 서버의 작업을 관리할 수 있게 하고 특정 데이터베이스에만 국한되지 않기 때문에 글로벌 그룹에 속합니다.(mysql.user, information_schema.user_privileges)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Database privileges&lt;/b&gt;&lt;span&gt; : 데이터베이스 권한은 MySQL 인스턴스의 특정 데이터베이스와 해당 데이터베이스 내의 모든 개체(예: 테이블, 컬럼, 뷰)에 적용됩니다. 데이터베이스 권한을 전역적으로 부여할 수도 있습니다. (mysql.db)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Proxy privileges&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&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;있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Privileges for database objects&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&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;있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>필유아사</author>
      <guid isPermaLink="true">https://yooloo.tistory.com/306</guid>
      <comments>https://yooloo.tistory.com/306#entry306comment</comments>
      <pubDate>Fri, 27 Sep 2024 16:59:09 +0900</pubDate>
    </item>
    <item>
      <title>MySQL - 튜닝(characterset)</title>
      <link>https://yooloo.tistory.com/305</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;테이블이나 컬럼의 character set 이 상이한 경우 인덱스가 존재하더라도, Full Table Scan으로 수행될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1) character set이 다른 2개의 테이블 생성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;country와 city라는 2개의 테이블을 생성한다. city의 CountryCode는 country 테이블의 Code값을 가지고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1724982584234&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; CREATE TABLE `country` (
   `Code` char(3) NOT NULL DEFAULT '',
   `Name` char(52) NOT NULL DEFAULT '',
   `Continent` enum('Asia','Europe','North America','Africa','Oceania','Antarctica','South America') NOT NULL DEFAULT 'Asia',
   `Region` char(26) NOT NULL DEFAULT '',
    PRIMARY KEY (`Code`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1724982617881&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; CREATE TABLE `city` (
   `ID` int NOT NULL AUTO_INCREMENT,
   `Name` char(35) NOT NULL DEFAULT '',
   `CountryCode` char(3) NOT NULL DEFAULT '',
   `District` char(20) NOT NULL DEFAULT '',
   `Population` int NOT NULL DEFAULT '0',
   PRIMARY KEY (`ID`),
   KEY `CountryCode` (`CountryCode`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2) JOIN&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt; country와 city 테이블을 JOIN하여 조회한다. &lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1724982649912&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; select *
 from country a, city b
 where a.code = b.CountryCode
 and a.code = 'AFG';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3) 실행계획 보기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;MySQL Workbench 로 실행계획을 확인한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;character set이 상이한 테이블을 join한 결과 인덱스가 존재함에도 Full Table Scan 하는 것을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;279&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlRgmb/btsJknLqZPj/5iKt3IBuV9okRFQGEUn9rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlRgmb/btsJknLqZPj/5iKt3IBuV9okRFQGEUn9rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlRgmb/btsJknLqZPj/5iKt3IBuV9okRFQGEUn9rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlRgmb%2FbtsJknLqZPj%2F5iKt3IBuV9okRFQGEUn9rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;236&quot; height=&quot;220&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;279&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt; 4) character set 변경&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;city 테이블의 character set을 country 테이블의 character set과 동일하게 변경한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1724982728558&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; alter table city convert to character set utf8mb4;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt; 5) 실행계획 확인&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;MySQL Workbench 로 실행계획을 확인한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;정상적으로 인덱스 Scan을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;349&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpBK6g/btsJlsLJHio/zyzmbGrsQMhKYbjNjV9p80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpBK6g/btsJlsLJHio/zyzmbGrsQMhKYbjNjV9p80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpBK6g/btsJlsLJHio/zyzmbGrsQMhKYbjNjV9p80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpBK6g%2FbtsJlsLJHio%2FzyzmbGrsQMhKYbjNjV9p80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;274&quot; height=&quot;218&quot; data-origin-width=&quot;349&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;6) 결론&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Character Set이 상이한 경우에 정상적으로 인덱스를 타지 않을 수 있으므로, 특별한 경우가 아니라면 &lt;span style=&quot;color: #ee2323;&quot;&gt;동일한 character set을 설정&lt;/span&gt;하도록 한다.&lt;/span&gt;&lt;/p&gt;</description>
      <author>필유아사</author>
      <guid isPermaLink="true">https://yooloo.tistory.com/305</guid>
      <comments>https://yooloo.tistory.com/305#entry305comment</comments>
      <pubDate>Thu, 29 Aug 2024 18:08:32 +0900</pubDate>
    </item>
    <item>
      <title>AI Big Data 시작하기 - Cloudera Manager</title>
      <link>https://yooloo.tistory.com/304</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;OS 환경&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- Ubuntu&amp;nbsp; 20.04 LTS- 4 vCPU, 8GB- Cloudera Manager&amp;nbsp; 7(설치되는 OS에 맞게 설치)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 30GB SSD Disk&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- OS 버전에 따라 설치가 잘 안될 수 있으니 OS 선택 시 주의 필요.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 개요&lt;/span&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. SW, HW 환경&lt;/span&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 설치&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; . java&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1723537277973&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install openjdk-8-jdk&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; . python3 설치&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1723566502351&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt update
sudo apt install python3&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; . eclipse&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; . virtual Box&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; . puTTy&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; . Fileziller&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; . Chrome&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; . NTP 설치&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; . 실습예제 및 소스 다운로드 : https://github.com/wikibook/bigdata2nd/archive/master.zip&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;*** 최초 Ubuntu 24.04 LTS 에 설치하려니 지원하지 않는다&lt;/span&gt;는 메시지 출력. Ubuntu 20.04 LTS로 변경&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;*** 아래는 Cloudera Manager 7 이 설치되는 OS 버전임.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1723450906860&quot; class=&quot;angelscript&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;Cloudera Manager supports the following 64-bit operating systems:

* Red Hat Enterprise Linux 7 (Update 6 or later recommended)
* Red Hat Enterprise Linux 8 (Update 2 or later recommended)
* Oracle Enterprise Linux 7 (Update 4 or later recommended)
* CentOS 7 (Update 4 or later recommended)
* CentOS 8 (Update 2 or later recommended)
* Ubuntu 18.04 LTS
* Ubuntu 20.04 LTSType 'back' to go back.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4.&amp;nbsp; VM 에 cloudera Manager 설치&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;b&gt;1) /etc/hosts 파일에 서버 등록&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;각자의 서버 IP에 대한 hostname을 /etc/hosts 파일에 등록해 준다. FQDN 은 등록하지 않아도 된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1723564732792&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;172.31.5.7	aiserver01.domain.com	aiserver01
172.31.3.242	aiserver02.domain.com	aiserver02
172.31.3.225	aiserver03.domain.com	aiserver03&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1) Cloudera Manager Server 설치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Cloudera Manager를 다운로드하고 CDP Private Cloud Base 클러스터를 설정한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래의 명령어로 cloudera Manger 를 설치한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1723450326998&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ wget https://archive.cloudera.com/cm7/7.4.4/cloudera-manager-installer.bin
$ chmod u+x cloudera-manager-installer.bin
$ sudo ./cloudera-manager-installer.bin&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;672&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w8h2J/btsI06DvVmD/thhaBjybFsNIelXJMk0MM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w8h2J/btsI06DvVmD/thhaBjybFsNIelXJMk0MM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w8h2J/btsI06DvVmD/thhaBjybFsNIelXJMk0MM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw8h2J%2FbtsI06DvVmD%2FthhaBjybFsNIelXJMk0MM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;530&quot; height=&quot;474&quot; data-origin-width=&quot;751&quot; data-origin-height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설치 시 계속이어지는 화면이다. 화면이 길어서 2개의 화면으로 캡쳐했다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbqkIZ/btsI2Qlt0q6/1zXV57A7jNFWqhvj1FoI3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbqkIZ/btsI2Qlt0q6/1zXV57A7jNFWqhvj1FoI3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbqkIZ/btsI2Qlt0q6/1zXV57A7jNFWqhvj1FoI3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbqkIZ%2FbtsI2Qlt0q6%2F1zXV57A7jNFWqhvj1FoI3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;775&quot; height=&quot;384&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설치가 완료되면 7180 포트로 브라우저에서 접속할 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;http://localhost:7180/ 또는 localhost 대신 접속할 수 있는 IP로 접속해 보면 아래와 같은 로그인 화면을 볼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;로그인 화면에 설치시에 화면에 보여진 admin 계정에 admin 패스워드를 입력하여 접속한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4oVTN/btsI23SD9Tx/6UdJxqT4nZJMFIKdrUreRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4oVTN/btsI23SD9Tx/6UdJxqT4nZJMFIKdrUreRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4oVTN/btsI23SD9Tx/6UdJxqT4nZJMFIKdrUreRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4oVTN%2FbtsI23SD9Tx%2F6UdJxqT4nZJMFIKdrUreRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;294&quot; height=&quot;152&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;236&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;설치된 Cloudera manager는 60일 데모 버전이다. 로그인하면 아래와 같이 license file을 업로드 하거나 &lt;br /&gt;60일 trial 버전을 사용하거나 하는 선택화면이 나온다. 본 문서에서는 60일 trial 을 선택한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v1tp4/btsI4pn36oQ/qa4BQ4I3f8EFi4yECG0BDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v1tp4/btsI4pn36oQ/qa4BQ4I3f8EFi4yECG0BDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v1tp4/btsI4pn36oQ/qa4BQ4I3f8EFi4yECG0BDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv1tp4%2FbtsI4pn36oQ%2Fqa4BQ4I3f8EFi4yECG0BDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;385&quot; height=&quot;200&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래와 같은 화면이 나오는데 [계속] 버튼을 클릭한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nHl0K/btsI2QMAgx6/plMtSZ4LOCANYFpMehY1aK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nHl0K/btsI2QMAgx6/plMtSZ4LOCANYFpMehY1aK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nHl0K/btsI2QMAgx6/plMtSZ4LOCANYFpMehY1aK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnHl0K%2FbtsI2QMAgx6%2FplMtSZ4LOCANYFpMehY1aK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;665&quot; height=&quot;270&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;381&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;클러스터 이름을 입력한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;359&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/09cYG/btsI2Ih3a1o/BhGZ6mjf9InckKtKHk4Yl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/09cYG/btsI2Ih3a1o/BhGZ6mjf9InckKtKHk4Yl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/09cYG/btsI2Ih3a1o/BhGZ6mjf9InckKtKHk4Yl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F09cYG%2FbtsI2Ih3a1o%2FBhGZ6mjf9InckKtKHk4Yl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;376&quot; height=&quot;209&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;359&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Agent를 설치할 Hosts를 네트워크 상에서 검색&lt;/b&gt;한다. 22번 Port로 검색하니 22번 Port로 통신이 되어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;/etc/hosts 파일에 등록한 hostname을 콤마로 구분하여 입력한 후 [검색] 버튼을 클릭한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2N8PX/btsI2IJnpiM/AK8XFswRux2TztYBoQ3Cxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2N8PX/btsI2IJnpiM/AK8XFswRux2TztYBoQ3Cxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2N8PX/btsI2IJnpiM/AK8XFswRux2TztYBoQ3Cxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2N8PX%2FbtsI2IJnpiM%2FAK8XFswRux2TztYBoQ3Cxk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;523&quot; height=&quot;281&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;리포지토리 선택&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;713&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yfCly/btsI3SYm2Zi/HUhfYkIYIMokPKqpEKUoDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yfCly/btsI3SYm2Zi/HUhfYkIYIMokPKqpEKUoDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yfCly/btsI3SYm2Zi/HUhfYkIYIMokPKqpEKUoDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyfCly%2FbtsI3SYm2Zi%2FHUhfYkIYIMokPKqpEKUoDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;572&quot; height=&quot;428&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;713&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;JDK 선택&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;JDK는 OpenJDK 8 버전을 설치하였으므로 &quot;Manually manage JDK&quot; 를 선택한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;607&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GA87O/btsI4TP1aou/kRvKAJCOkGNaEL4Tvm7QF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GA87O/btsI4TP1aou/kRvKAJCOkGNaEL4Tvm7QF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GA87O/btsI4TP1aou/kRvKAJCOkGNaEL4Tvm7QF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGA87O%2FbtsI4TP1aou%2FkRvKAJCOkGNaEL4Tvm7QF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;546&quot; height=&quot;345&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;607&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;SSH 로그인 정보 설정&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Agent가 설치될 서버에 접근할 수 있는 사용자 계정과 인증방법을 선택한다. 본문서에서는 인증키를 이용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Private Key를 선택해 준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LNRNc/btsI4jahUFA/hbPB6pdviCOVZVNAp59tCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LNRNc/btsI4jahUFA/hbPB6pdviCOVZVNAp59tCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LNRNc/btsI4jahUFA/hbPB6pdviCOVZVNAp59tCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLNRNc%2FbtsI4jahUFA%2FhbPB6pdviCOVZVNAp59tCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;595&quot; height=&quot;431&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2) Cloudera Manager Agent 설치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- Cloudera Manager&amp;nbsp; 서버의 7182 port와 agent가 통신하므로 port가 오픈되어 있어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아래 화면은 Agent가 설치 완료된 화면이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;395&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SafUa/btsI3UIRQl4/APTk7MUCSAvwUHnO5OVVZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SafUa/btsI3UIRQl4/APTk7MUCSAvwUHnO5OVVZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SafUa/btsI3UIRQl4/APTk7MUCSAvwUHnO5OVVZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSafUa%2FbtsI3UIRQl4%2FAPTk7MUCSAvwUHnO5OVVZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;579&quot; height=&quot;241&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;395&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Parcels 설치&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;다음 단계로 Parcels 가 설치되는 화면이다. 설치 시간이 오래 걸린다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;937&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/17yjf/btsI4wUXhfL/61OLTU4lSMGUgk0yNNfgF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/17yjf/btsI4wUXhfL/61OLTU4lSMGUgk0yNNfgF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/17yjf/btsI4wUXhfL/61OLTU4lSMGUgk0yNNfgF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F17yjf%2FbtsI4wUXhfL%2F61OLTU4lSMGUgk0yNNfgF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;516&quot; height=&quot;78&quot; data-origin-width=&quot;937&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;클러스터 인스펙트&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;클러스터 구성이 잘 되었는지 검사하는 과정이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;네트워크 성능 검사는 ping 테스트를 수행하는데 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;방화벽이 설정되어 있을 경우, &lt;/span&gt;ICMP 프로토콜을&amp;nbsp; 허용해 준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;921&quot; data-origin-height=&quot;735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfIS4a/btsI4VfYSQu/Ymxx9bkilhJqIpaUbKHB80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfIS4a/btsI4VfYSQu/Ymxx9bkilhJqIpaUbKHB80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfIS4a/btsI4VfYSQu/Ymxx9bkilhJqIpaUbKHB80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfIS4a%2FbtsI4VfYSQu%2FYmxx9bkilhJqIpaUbKHB80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;597&quot; height=&quot;476&quot; data-origin-width=&quot;921&quot; data-origin-height=&quot;735&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Network Performance 수행 시 Error가 발생했는데 확인해 보니 Cloudera Manager 에서 Python2 를 사용하고 있고, 이 부분에서 오류가 발생했다. Host 검사도 warning이 발생했는데 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;해결방법을 찾지 못해&lt;/span&gt; 무시하고 진행했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;설치할 서비스를 선택&lt;/b&gt;하는 화면이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;본 문서에서는 &quot;Data Engineering&quot;을 선택했다. 각자의 사용 목적에 따라 설치하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;661&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czk2lN/btsI2oYMk1j/e3gT3B2Y8XH8lBSmz8b6fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czk2lN/btsI2oYMk1j/e3gT3B2Y8XH8lBSmz8b6fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czk2lN/btsI2oYMk1j/e3gT3B2Y8XH8lBSmz8b6fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fczk2lN%2FbtsI2oYMk1j%2Fe3gT3B2Y8XH8lBSmz8b6fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;496&quot; height=&quot;438&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;661&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;역할 할당&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버별로 서비스할 역할을 할당해 주는 화면이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;kafka,Atlas, Data Analytics Studio, HBase, HDFS, Hive, Hive on Tez, Hue, Cloudera Management Service, Oozie, Ranger, Solr, Tez, YARN (MR2 Included), &lt;/span&gt;&lt;span data-original-title=&quot;&quot; data-bind=&quot;tooltip: tooltip, attr: attr, css: css, visible: visible, foreach: children&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;ZooKeeper&lt;/span&gt; 서비스에 대한 각 서버의 역할을 할당한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;547&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCKP6h/btsI2eotSdj/bvqbVqrVM1v35MgcgbWmX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCKP6h/btsI2eotSdj/bvqbVqrVM1v35MgcgbWmX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCKP6h/btsI2eotSdj/bvqbVqrVM1v35MgcgbWmX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCKP6h%2FbtsI2eotSdj%2FbvqbVqrVM1v35MgcgbWmX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;585&quot; height=&quot;306&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;547&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 본 문서에서 할당한 역할들이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;3749&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfYrxR/btsI3RFBvIB/zEKDLTHIxOjPq5zoNX2b4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfYrxR/btsI3RFBvIB/zEKDLTHIxOjPq5zoNX2b4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfYrxR/btsI3RFBvIB/zEKDLTHIxOjPq5zoNX2b4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfYrxR%2FbtsI3RFBvIB%2FzEKDLTHIxOjPq5zoNX2b4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1902&quot; height=&quot;3749&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;3749&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;데이터베이스 설정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 문서에서는 &quot;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;내장된 데이터베이스 사용&lt;/span&gt; &quot;을 선택했다. 화면에 제시된대로 패스워드는 따로 저장해 둔다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1057&quot; data-origin-height=&quot;489&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnyQAF/btsI3SEjBFd/tpUAbrfEZEK2S1KpweTl7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnyQAF/btsI3SEjBFd/tpUAbrfEZEK2S1KpweTl7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnyQAF/btsI3SEjBFd/tpUAbrfEZEK2S1KpweTl7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnyQAF%2FbtsI3SEjBFd%2FtpUAbrfEZEK2S1KpweTl7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;696&quot; height=&quot;322&quot; data-origin-width=&quot;1057&quot; data-origin-height=&quot;489&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;2451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdTY1c/btsI4t4Z1v1/PFts42LiZ7Htw6dkNdJjKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdTY1c/btsI4t4Z1v1/PFts42LiZ7Htw6dkNdJjKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdTY1c/btsI4t4Z1v1/PFts42LiZ7Htw6dkNdJjKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdTY1c%2FbtsI4t4Z1v1%2FPFts42LiZ7Htw6dkNdJjKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1902&quot; height=&quot;2451&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;2451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 1)&amp;nbsp; /etc/apt/sources.list.d/cloudera.manager 파일을 생성한 후 아래 내용을 입력한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; 내용 중 /myUsername:myPassword 부분은 본의의 &lt;a href=&quot;https://www.cloudera.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.cloudera.com/&lt;/a&gt; 의 계정과 패스워드를 입력한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; 단, 주의할 점은 계정과 패스워드에 특수문자는 반드시 퍼센트 인코딩(percent encoding) 문자로 변경해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; 예를 들면, 계정이름이 name@email.com 이라면 '@' 특수문자는 '%40' 으로 퍼센트 인코딩 문자로 변경해야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1723435693865&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Cloudera Manager 7.11.3
# Changeme: change username and password below to match your license
deb [arch=amd64] https://myUsername:myPassword@archive.cloudera.com/p/cm7/7.11.3/ubuntu2004/apt bionic-cm7.11.3 contrib&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Import the repository signing GPG key (substitute the correct URL):&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;concept_hy5_qhq_2yb__codeblock_zy5_qhq_2yb&quot; class=&quot;html xml&quot; style=&quot;background-color: #fafafa; color: #444444;&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;wget https://[username]:[password]@archive.cloudera.com/p/cm7/[**Cloudera Manager version**]/ubuntu2004/apt/archive.key
sudo apt-key add archive.key&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 위의 명령어에서 username, password, [**Cloudera Manager version**] 부분은 위와 동일하게 Cloudera URL의 계정과 패스워드 그리고 설치할 Cloudera Mnager 버전을 기입한다. 본 문서에서는 7.11.3 버전을 설치한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;https://www.cloudera.com/downloads/cdp-private-cloud-trial/cdp-private-cloud-base-trial.html&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;--&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;--&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;wget&amp;nbsp;&lt;a href=&quot;https://gosea01%40naver.com:%21Gosea0070@archive.cloudera.com/p/cm7/7.11.3/ubuntu2004/apt/archive.key&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://gosea01%40naver.com:%21Gosea0070@archive.cloudera.com/p/cm7/7.11.3/ubuntu2004/apt/archive.key&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Ubuntu&amp;nbsp;20 Repository: &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://username:password@archive.cloudera.com/p/cm7/7.11.3/ubuntu2004/apt&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://username:password@archive.cloudera.com/p/cm7/7.11.3/ubuntu2004/apt&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;Repository&amp;nbsp;file: &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://username:password@archive.cloudera.com/p/cm7/7.11.3/ubuntu2004/apt/cloudera-manager.list&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://username:password@archive.cloudera.com/p/cm7/7.11.3/ubuntu2004/apt/cloudera-manager.list&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <author>필유아사</author>
      <guid isPermaLink="true">https://yooloo.tistory.com/304</guid>
      <comments>https://yooloo.tistory.com/304#entry304comment</comments>
      <pubDate>Sun, 11 Aug 2024 20:15:41 +0900</pubDate>
    </item>
  </channel>
</rss>