<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>The Keyboard Player</title>
    <link>https://with-kami.tistory.com/</link>
    <description>미들웨어, 인프라, 클라우드에 관심이 많습니다.</description>
    <language>ko</language>
    <pubDate>Thu, 7 May 2026 03:26:26 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>수상한 김토끼</managingEditor>
    <image>
      <title>The Keyboard Player</title>
      <url>https://tistory1.daumcdn.net/tistory/5656515/attach/b8e66916ed8047b38a022f79c511d611</url>
      <link>https://with-kami.tistory.com</link>
    </image>
    <item>
      <title>5장. ACO (Advanced Compression Option)</title>
      <link>https://with-kami.tistory.com/1534876</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Oracle Compression 개요 &lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오라클 데이터베이스는 다양한 압축 기술을 제공하여 데이터 저장 공간을 효율적으로 관리하고 데이터 처리 성능을 향상 시키는데 데이터 압축은 저장 공간을 절약할 뿐만 아니라, I/O 성능 향상, 네트워크 전송 속도 향상, 백업 및 복구 시간 단축 등 다양한 이점 제공
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;저장공간 효율성 : 데이터 압축을 통해 저장 공간 사용량을 줄여 비용을 절감하고 더 많은 데이터를 저장할 수 있도록하여 미래 스토리지 구매 시점 연기 또는 구매 필요성 감소&lt;/li&gt;
&lt;li&gt;성능 향상: 압축된 데이터를 읽고 쓰는 데 필요한 I/O 작업을 줄여 데이터 처리 속도를 향상&lt;/li&gt;
&lt;li&gt;데이터 전송 효율성: 네트워크를 통해 데이터를 전송할 때 압축을 통해 전송량을 줄여 네트워크 대역폭을 절약하고 데이터 전송 효율성을 향상&lt;/li&gt;
&lt;li&gt;백업 및 복구 효율성: 백업 데이터를 압축하여 백업 저장 공간을 절약하고 백업 및 복구 시간을 단축&lt;/li&gt;
&lt;li&gt;오라클 데이터베이스 11g부터 ACO 사용가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Oracle Compression 분류&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Basic Table Compression (기본 테이블 압축)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-11:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-7:43&quot;&gt;특징:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;6:5-7:43&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;6:5-6:71&quot;&gt;데이터 웨어하우스 환경의 &quot;주로 읽기&quot; (데이터를 자주 수정하기보다 과거 데이터를 읽어서 분석하는) 테이블 및 파티션 또는 OLTP 환경의 &quot;비활성&quot; (시간이 지나 활발하게 사용되지 않는 과거 데이터) 데이터 파티션에 적합&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:5-7:43&quot;&gt;데이터를 압축하여 저장 공간을 절약하고 I/O 성능을 향상시킴&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:1-11:0&quot;&gt;적합한 환경:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;9:5-11:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;9:5-9:35&quot;&gt;데이터 웨어하우스 환경에서 자주 변경되지 않는 데이터&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:5-11:0&quot;&gt;OLTP 환경에서 오래되어 접근 빈도가 낮은 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Advanced Row Compression (고급 행 압축)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;14:1-21:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;14:1-17:44&quot;&gt;특징:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;15:5-17:44&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;15:5-15:47&quot;&gt;OLTP 및 데이터 웨어하우스 환경의 활성 테이블 및 파티션에 적합&lt;/li&gt;
&lt;li data-sourcepos=&quot;16:5-16:44&quot;&gt;OLTP 및 데이터 웨어하우스 환경의 비관계형 데이터에도 적합&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:5-17:44&quot;&gt;데이터 행 단위로 압축하여 저장 공간을 절약하고 성능을 향상시킴&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:5-17:44&quot;&gt;온라인 압축 지원 (다운타임 필요 없음)&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:5-17:44&quot;&gt;SQL 또는 애플리케이션 변경 없음&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:5-17:44&quot;&gt;일반적으로 50% (또는 그 이상)의 데이터 저장 감소&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:1-21:0&quot;&gt;적합한 환경:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;19:5-21:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;19:5-19:41&quot;&gt;OLTP 및 데이터 웨어하우스 환경에서 활발하게 사용되는 데이터&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:5-21:0&quot;&gt;텍스트, 이미지 등 비정형 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Advanced LOB Compression and Deduplication (고급 LOB 압축 및 중복 제거)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;24:1-29:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;24:1-26:47&quot;&gt;특징:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;25:5-26:47&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;25:5-25:56&quot;&gt;OLTP 및 데이터 웨어하우스 환경의 LOB(Large Object) 데이터에 적합&lt;/li&gt;
&lt;li data-sourcepos=&quot;26:5-26:47&quot;&gt;LOB 데이터를 압축하고 중복된 데이터를 제거하여 저장 공간을 절약&lt;/li&gt;
&lt;li data-sourcepos=&quot;26:5-26:47&quot;&gt;온라인 압축 지원 (다운타임 필요 없음)&lt;/li&gt;
&lt;li data-sourcepos=&quot;26:5-26:47&quot;&gt;일반적으로 50% (또는 그 이상)의 데이터 저장 감소&lt;/li&gt;
&lt;li data-sourcepos=&quot;26:5-26:47&quot;&gt;Oracle Database SecureFiles 기능과 함께 작동&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;27:1-29:0&quot;&gt;적합한 환경:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;28:5-29:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;28:5-29:0&quot;&gt;이미지, 비디오, 문서 등 대용량 LOB 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Advanced Index Compression (고급 인덱스 압축)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;32:1-37:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;32:1-34:46&quot;&gt;특징:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;33:5-34:46&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;33:5-33:38&quot;&gt;지원되는 모든 인덱스에 적합하며, 키에 종속되지 않음&lt;/li&gt;
&lt;li data-sourcepos=&quot;34:5-34:46&quot;&gt;인덱스를 압축하여 저장 공간을 절약하고 인덱스 검색 성능을 향상시킴&lt;/li&gt;
&lt;li data-sourcepos=&quot;34:5-34:46&quot;&gt;OLTP와 데이터 웨어하우스 모두에 최적화&lt;/li&gt;
&lt;li data-sourcepos=&quot;34:5-34:46&quot;&gt;온라인 압축 지원 (다운타임 필요 없음)&lt;/li&gt;
&lt;li data-sourcepos=&quot;34:5-34:46&quot;&gt;SQL 또는 어플리케이션 변경 없음&lt;/li&gt;
&lt;li data-sourcepos=&quot;34:5-34:46&quot;&gt;일반적으로 50% (또는 그 이상)의 데이터 저장 감소&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;35:1-37:0&quot;&gt;적합한 환경:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;36:5-37:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;36:5-37:0&quot;&gt;모든 유형의 인덱스&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Advanced Network Compression and Data Guard Redo Transport Compression (고급 네트워크 압축 및 Data Guard Redo 전송 압축)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;40:1-46:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;40:1-42:59&quot;&gt;특징:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;41:5-42:59&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;41:5-41:45&quot;&gt;네트워크 압축 및 Data Guard Redo 전송 압축에 사용&lt;/li&gt;
&lt;li data-sourcepos=&quot;42:5-42:59&quot;&gt;네트워크를 통해 전송되는 데이터를 압축하여 네트워크 대역폭을 절약하고 전송 속도를 향상시킴&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;43:1-46:0&quot;&gt;적합한 환경:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;44:5-46:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;44:5-44:27&quot;&gt;네트워크를 통해 데이터를 전송하는 환경&lt;/li&gt;
&lt;li data-sourcepos=&quot;45:5-46:0&quot;&gt;Data Guard 환경에서 Redo 로그 전송&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RMAN/Data Pump Backup Compression (RMAN/Data Pump 백업 압축)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;49:1-54:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;49:1-51:47&quot;&gt;특징:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;50:5-51:47&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;50:5-50:19&quot;&gt;백업 압축에 사용&lt;/li&gt;
&lt;li data-sourcepos=&quot;51:5-51:47&quot;&gt;백업 데이터를 압축하여 백업 저장 공간을 절약하고 백업 시간을 단축&lt;/li&gt;
&lt;li data-sourcepos=&quot;51:5-51:47&quot;&gt;이미 압축된 데이터/인덱스는 백업/복원 시에도 압축된 상태를 유지&lt;/li&gt;
&lt;li data-sourcepos=&quot;51:5-51:47&quot;&gt;3가지 수준의 압축레벨: 낮음, 중간, 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;52:1-54:0&quot;&gt;적합한 환경:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;53:5-54:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;53:5-54:0&quot;&gt;데이터베이스 백업 및 복구 환경&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Automatic Data Optimization/Heat Map (자동 데이터 최적화/히트 맵)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;57:1-62:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;57:1-59:97&quot;&gt;특징:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;58:5-59:97&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;58:5-58:34&quot;&gt;자동 압축 계층화 및 스토리지 계층화 지원&lt;/li&gt;
&lt;li data-sourcepos=&quot;59:5-59:97&quot;&gt;데이터 접근 패턴을 분석하여 자주 사용되는 데이터는 고성능 스토리지에 저장하고, 자주 사용되지 않는 데이터는 저성능 스토리지에 저장하여 스토리지 효율성을 높임&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;60:1-62:0&quot;&gt;적합한 환경:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;61:5-62:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;61:5-62:0&quot;&gt;데이터 접근 패턴이 다양한 환경&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hybrid Columnar Compression - Warehouse Level (하이브리드 컬럼 압축 - 웨어하우스 레벨)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;65:1-71:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;65:1-68:52&quot;&gt;특징:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;66:5-68:52&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;66:5-66:45&quot;&gt;데이터 웨어하우스 환경의 &quot;주로 읽기&quot; 테이블 및 파티션에 적합&lt;/li&gt;
&lt;li data-sourcepos=&quot;67:5-67:26&quot;&gt;분석을 위한 컬럼 쿼리를 지원&lt;/li&gt;
&lt;li data-sourcepos=&quot;68:5-68:52&quot;&gt;데이터를 컬럼 단위로 압축하여 저장 공간을 절약하고 분석 쿼리 성능을 향상시킴&lt;/li&gt;
&lt;li data-sourcepos=&quot;68:5-68:52&quot;&gt;Exadata 시스템에 최적화된 압축 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;69:1-71:0&quot;&gt;적합한 환경:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;70:5-71:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;70:5-71:0&quot;&gt;데이터 웨어하우스 환경에서 분석 쿼리가 많은 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hybrid Columnar Compression - Archive Level (하이브리드 컬럼 압축 - 아카이브 레벨)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;74:1-79:49&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;74:1-77:40&quot;&gt;특징:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;75:5-77:40&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;75:5-75:48&quot;&gt;OLTP 및 데이터 웨어하우스 환경의 &quot;비활성&quot; 데이터 파티션에 적합&lt;/li&gt;
&lt;li data-sourcepos=&quot;76:5-76:20&quot;&gt;최대 압축률을 제공&lt;/li&gt;
&lt;li data-sourcepos=&quot;77:5-77:40&quot;&gt;데이터를 컬럼 단위로 압축하여 저장 공간을 최대한 절약&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;78:1-79:49&quot;&gt;적합한 환경:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;79:5-79:49&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;79:5-79:49&quot;&gt;OLTP 및 데이터 웨어하우스 환경에서 오래되어 접근 빈도가 매우 낮은 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. ACO (Advanced Compression Option) 기술&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;18:5-18:68&quot;&gt;ACO 기술은 심볼 테이블(Symbol Table) 구조를 통해 중복 데이터를 제거하고 압축 효율성을 높임&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:5-19:58&quot;&gt;압축된 데이터에 대한 직접 읽기 기능을 제공하여 I/O 오버헤드를 줄이고 성능을 향상시킴&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:5-20:82&quot;&gt;OLTP 환경에서 데이터 삽입 시 블록 사용률이 특정 임계값(PCTFREE)에 도달하면 자동으로 압축을 수행하여 공간 효율성을 높임&lt;/li&gt;
&lt;li data-sourcepos=&quot;21:5-22:0&quot;&gt;ACO 기술은 특히 데이터 웨어하우스 환경에서 분석 쿼리 성능 향상에 효과적임&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Oracle Database/Training</category>
      <category>aco</category>
      <category>oracle</category>
      <category>압축</category>
      <category>오라클</category>
      <author>수상한 김토끼</author>
      <guid isPermaLink="true">https://with-kami.tistory.com/1534876</guid>
      <comments>https://with-kami.tistory.com/1534876#entry1534876comment</comments>
      <pubDate>Mon, 10 Mar 2025 15:09:16 +0900</pubDate>
    </item>
    <item>
      <title>4장. In-Memory</title>
      <link>https://with-kami.tistory.com/1534875</link>
      <description>&lt;p data-sourcepos=&quot;1:1-1:38&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-sourcepos=&quot;3:1-3:19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 오라클 인메모리 개요:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-7:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:77&quot;&gt;오라클 인메모리는 데이터베이스 성능 향상을 위한 기술로, 데이터를 SGA의 인메모리 영역에 로드한 후 처리하여 빠른 데이터 접근 및 분석 가능&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-7:0&quot;&gt;주로 분석 쿼리(OLAP) 성능 향상에 초점을 맞추고 있으며, OLTP 환경에서도 성능 향상을 기대할 수 있음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;6:1-7:0&quot;&gt;활용분야:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;6:1-7:0&quot;&gt;실시간 대시보드 및 보고서: 인메모리에 실시간 데이터를 로드하고, 이를 기반으로 대시보드 및 보고서를 생성하여 경영진 또는 담당자가 실시간으로 데이터를 분석하고 의사 결정을 내릴 수 있도록 지원&lt;/li&gt;
&lt;li&gt;캐싱: 인메모리를 캐시로 활용하여 자주 사용되는 데이터를 메모리에 저장하여, 데이터 접근 속도 향상&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;오라클 12.1.0.2 버전에 최초 도입&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-sourcepos=&quot;8:1-8:20&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 로우 포맷과 컬럼 포맷:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;10:1-14:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;10:1-12:65&quot;&gt;오라클 인메모리는 데이터를 로우 포맷과 컬럼 포맷 두 가지 형태로 메모리에 저장
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;11:5-12:65&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:5-11:55&quot;&gt;로우 포맷: 일반적인 데이터베이스 저장 방식으로, 트랜잭션 처리(OLTP)에 유리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:5-11:55&quot;&gt;개념: 데이터를 행(row) 단위로 저장하며, 각 레코드의 모든 필드(열) 값을 하나의 연속된 블록에 저장&lt;/li&gt;
&lt;li data-sourcepos=&quot;11:5-11:55&quot;&gt;특징: 트랜잭션 처리(OLTP)에 유리하며, 레코드 단위의 삽입, 수정, 삭제 작업에 효율적&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:5-12:65&quot;&gt;컬럼 포맷: 분석 쿼리(OLAP)에 특화된 저장 방식으로, 특정 열의 데이터만 빠르게 처리 가능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;12:5-12:65&quot;&gt;개념: 데이터를 열(column) 단위로 저장하며, 같은 열에 해당하는 모든 레코드의 값을 하나의 연속된 블록에 저장&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:5-12:65&quot;&gt;특징: 분석 쿼리(OLAP)에 특화된 저장 방식으로, 특정 열의 데이터만 빠르게 처리 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;온라인 쇼핑몰에서 고객이 상품을 주문하면 로우 포맷으로 주문 정보를 저장하고, 컬럼 포맷으로 매출 분석에 필요한 데이터 업데이트 수행,&amp;nbsp; 이렇게 하면 주문 처리 속도를 높이면서도 실시간으로 매출 분석 수행 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:1-14:0&quot;&gt;인메모리 기능은 두 포맷을 동시에 사용하여 OLTP와 OLAP 작업을 모두 효율적으로 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-sourcepos=&quot;15:1-15:19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 인메모리 기능의 특징:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;17:1-22:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;17:1-17:44&quot;&gt;컬럼 스토어: 데이터를 컬럼 단위로 저장하여 분석 쿼리 성능 향상&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:1-18:42&quot;&gt;데이터 압축: 메모리 사용량을 줄이기 위해 데이터를 압축하여 저장&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:1-19:44&quot;&gt;스토리지 인덱스: 불필요한 데이터 로드를 줄여 메모리 사용량을 최적화
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;19:1-19:44&quot;&gt;스토리지 인덱스는 Oracle Exadata에서 사용되던 기술로, 데이터베이스가 디스크에서 데이터를 읽어올 때 불필요한 데이터 블록을 필터링하는 데 사용하여 메모리에 로드해야 할 데이터 블록을 미리 식별하여 I/O 오버헤드를 줄이는 역할 수행&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:1-19:44&quot;&gt;일반 데이터베이스에서도 WHERE 조건을 통해 데이터 범위를 지정할 때 인덱스를 사용하면 스토리지 인덱스와 유사한 효과를 기대할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:1-20:53&quot;&gt;SIMD (Single Instruction, Multiple Data) 벡터 프로세싱: CPU 수준에서 병렬 처리를 통해 데이터 처리 속도 향상
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;20:1-20:53&quot;&gt;여러 개의 데이터 요소를 SIMD 벡터 레지스터에 로드하고, 하나의 명령어로 벡터 레지스터의 모든 요소를 동시에 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;21:1-22:0&quot;&gt;AIM (Automatic In-Memory): 데이터베이스가 작업 부하와 데이터 접근 패턴을 분석하여 자주 사용되는 데이터를 자동으로 In-Memory 영역에 로드하고, 사용 빈도가 낮은 데이터는 자동으로 제거하는 기능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-sourcepos=&quot;29:1-29:25&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 19c DB 무료 인메모리 기능:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;31:1-34:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;31:1-31:58&quot;&gt;오라클 19.8 버전부터 In-Memory 옵션 기능을 최대 16GB까지 무료로 사용 가능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;31:1-31:58&quot;&gt;Windows 와 HP-UX의 경우 19.9 버전부터 사용가능&lt;/li&gt;
&lt;li data-sourcepos=&quot;31:1-31:58&quot;&gt;alter system set inmemory_force=base_level scope=spfile;&lt;/li&gt;
&lt;li data-sourcepos=&quot;31:1-31:58&quot;&gt;alter system set inmemory_size=16G scope=spfile;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;32:1-32:57&quot;&gt;RAC 환경 지원 (노드당 16GB), Init Parameter 설정, 낮은 수준의 쿼리 압축 기능 압축 기능 등을 제공&lt;/li&gt;
&lt;li data-sourcepos=&quot;33:1-34:0&quot;&gt;AIM 기능, 특정 컬럼 선택, Exadata 환경에서의 CELLMEMORY 사용은 유료 버전에서만 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-sourcepos=&quot;35:1-35:18&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. CELLMEMORY:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;37:1-38:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;37:1-38:0&quot;&gt;Oracle Exadata 시스템에서 사용되는 플래시 메모리 기반 캐시 기술로, 데이터베이스 성능을 향상시키는 역할 수행
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;37:1-38:0&quot;&gt;플래시 메모리:&amp;nbsp; Exadata 스토리지 서버에는 플래시 메모리가 탑재되어 있으며, CELLMEMORY는 이 Exadata 스토리지 서버에 탑재된 플래시 메모리를 데이터베이스 캐시로 활용&lt;/li&gt;
&lt;li data-sourcepos=&quot;37:1-38:0&quot;&gt;Smart Scan (스마트 스캔): Exadata 스토리지 서버에서 스마트 스캔이라는 기술을 통해 데이터 필터링 및 처리를 수행하고, CELLMEMORY는 스마트 스캔 과정에서 필터링된 데이터를 플래시 메모리에 저장하여 후속 쿼리 성능 향상&lt;/li&gt;
&lt;li data-sourcepos=&quot;37:1-38:0&quot;&gt;Memory Tiering (메모리 계층화): CELLMEMORY는 DRAM 캐시와 플래시 메모리 캐시를 계층화하여 데이터를 관리하며, 자주 사용되는 데이터는 DRAM 캐시에 저장하고, 덜 자주 사용되는 데이터는 플래시 메모리에 저장하여 메모리 효율성을 높임&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Oracle Database/Training</category>
      <category>in-memory</category>
      <category>oracle</category>
      <category>오라클</category>
      <category>인메모리</category>
      <author>수상한 김토끼</author>
      <guid isPermaLink="true">https://with-kami.tistory.com/1534875</guid>
      <comments>https://with-kami.tistory.com/1534875#entry1534875comment</comments>
      <pubDate>Mon, 10 Mar 2025 14:43:58 +0900</pubDate>
    </item>
    <item>
      <title>3장. Backup and Recovery</title>
      <link>https://with-kami.tistory.com/1534874</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;3.1 Checkpoint&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1332&quot; data-origin-height=&quot;789&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QoysY/btsMCoNY7tQ/CHhxb2crq5x1jBBJastSA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QoysY/btsMCoNY7tQ/CHhxb2crq5x1jBBJastSA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QoysY/btsMCoNY7tQ/CHhxb2crq5x1jBBJastSA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQoysY%2FbtsMCoNY7tQ%2FCHhxb2crq5x1jBBJastSA0%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;1332&quot; height=&quot;789&quot; data-origin-width=&quot;1332&quot; data-origin-height=&quot;789&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CKPT (체크포인트 프로세스)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:122&quot;&gt;복구 시작 시점의 SCN 기록: CKPT는 데이터베이스 복구 시 필요한 시작 시점의 SCN(System Change Number) 기록 (SCN은 데이터베이스의 변경 사항을 식별하는 고유한 번호)&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-9:0&quot;&gt;체크포인트 유형:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;7:5-9:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;7:5-7:92&quot;&gt;전체 체크포인트(Full): 컨트롤 파일(Control file)과 데이터 파일 헤더(Datafile header)에 체크포인트 정보 기록&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:5-9:0&quot;&gt;증분 체크포인트(Incremental): 컨트롤 파일에만 체크포인트 정보를 기록&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;작동 방식
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;12:1-12:68&quot;&gt;CKPT 프로세스: CKPT 백그라운드 프로세스는 주기적으로 또는 특정 이벤트 발생 시 체크포인트 수행&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:1-13:81&quot;&gt;컨트롤 파일 및 데이터 파일 업데이트: 체크포인트가 발생하면 CKPT는 컨트롤 파일과 데이터 파일 헤더에 체크포인트 정보 기록&lt;/li&gt;
&lt;li data-sourcepos=&quot;14:1-15:0&quot;&gt;데이터 파일 동기화: 체크포인트 발생 시 DBWR(Database Writer) 프로세스는 데이터 버퍼 캐시의 변경된 데이터 블록을 데이터 파일에 기록하여 데이터 파일과 메모리 동기화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;중요성
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;18:1-21:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;18:1-18:68&quot;&gt;데이터 복구 시간 단축: 체크포인트는 데이터베이스 복구 시 필요한 시작 시점을 제공하여 복구 시간 단축&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:1-19:61&quot;&gt;데이터 일관성 유지: 체크포인트는 데이터 파일과 메모리의 동기화를 통해 데이터 일관성 유지&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:1-21:0&quot;&gt;데이터 손실 방지: 체크포인트는 데이터베이스 장애 발생 시 손실되는 데이터의 양 최소화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;3.2 Backup &amp;amp; Recovery&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3.2.1 백업 및 복구 솔루션 종류&lt;/h3&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;810&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQQwrN/btsMCwkIiZJ/4KbeIgTXk9fXSpHKABCA01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQQwrN/btsMCwkIiZJ/4KbeIgTXk9fXSpHKABCA01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQQwrN/btsMCwkIiZJ/4KbeIgTXk9fXSpHKABCA01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQQwrN%2FbtsMCwkIiZJ%2F4KbeIgTXk9fXSpHKABCA01%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;938&quot; height=&quot;810&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;810&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Logical Methods (논리적 방법)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-17:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-8:28&quot;&gt;Export and Import:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;6:5-8:28&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;6:5-6:63&quot;&gt;데이터베이스 객체(테이블, 뷰 등)를 논리적인 파일로 추출하고 다시 데이터베이스에 로드하는 방식&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:5-7:46&quot;&gt;데이터베이스 전체 또는 일부를 백업 및 복구하는 데 사용할 수 있음&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:5-8:28&quot;&gt;데이터베이스 버전 간 호환성이 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Data Pump (10g 이상):
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;10:5-12:27&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;10:5-10:42&quot;&gt;Export and Import의 성능을 향상시킨 유틸리티&lt;/li&gt;
&lt;li data-sourcepos=&quot;11:5-11:34&quot;&gt;대용량 데이터베이스의 백업 및 복구에 효율적&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:5-12:27&quot;&gt;병렬 처리 및 압축 기능을 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Flashback Functions (10g 이상):
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;14:5-17:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;14:5-14:37&quot;&gt;특정 시점의 데이터로 데이터베이스를 복원하는 기능&lt;/li&gt;
&lt;li data-sourcepos=&quot;15:5-15:32&quot;&gt;사용자 실수로 인한 데이터 손실 시 유용&lt;/li&gt;
&lt;li data-sourcepos=&quot;16:5-17:0&quot;&gt;Flashback Query, Flashback Table, Flashback Database 등 다양한 기능이 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Physical Methods (물리적 방법)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;O/S Backup and Restore:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;21:5-23:32&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;21:5-21:66&quot;&gt;운영 체제 명령어를 사용하여 데이터 파일, 컨트롤 파일, 리두 로그 파일 등을 백업하고 복구하는 방식&lt;/li&gt;
&lt;li data-sourcepos=&quot;22:5-22:35&quot;&gt;데이터베이스 전체를 백업 및 복구하는 데 사용&lt;/li&gt;
&lt;li data-sourcepos=&quot;23:5-23:32&quot;&gt;데이터베이스 구조를 그대로 복원할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RMAN Backup and Restore:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;25:5-28:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;25:5-25:33&quot;&gt;오라클에서 제공하는 백업 및 복구 유틸리티&lt;/li&gt;
&lt;li data-sourcepos=&quot;26:5-26:41&quot;&gt;데이터베이스 전체 또는 일부를 백업 및 복구하는 데 사용&lt;/li&gt;
&lt;li data-sourcepos=&quot;27:5-28:0&quot;&gt;증분 백업, 압축, 암호화 등 다양한 기능을 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;High Availability Methods (고가용성 방법)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Data Guard (Data HA):
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;32:5-34:66&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;32:5-32:63&quot;&gt;운영 데이터베이스의 변경 사항을 대기 데이터베이스에 실시간으로 동기화하여 데이터 고가용성 제공&lt;/li&gt;
&lt;li data-sourcepos=&quot;33:5-33:34&quot;&gt;재해 복구(DR) 사이트를 구축하는 데 사용&lt;/li&gt;
&lt;li data-sourcepos=&quot;34:5-34:66&quot;&gt;Active Data Guard 옵션을 사용하면 대기 데이터베이스에서 읽기 전용 작업을 수행할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RAC (O/S, Server HA):
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;36:5-39:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;36:5-36:39&quot;&gt;여러 서버를 클러스터로 구성하여 서버 고가용성 제공&lt;/li&gt;
&lt;li data-sourcepos=&quot;37:5-37:43&quot;&gt;특정 서버에 장애가 발생해도 다른 서버가 서비스를 계속 제공&lt;/li&gt;
&lt;li data-sourcepos=&quot;38:5-39:0&quot;&gt;로드 밸런싱 기능을 통해 성능을 향상할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 80px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 20px;&quot;&gt;방법&lt;/td&gt;
&lt;td style=&quot;width: 28.6046%; height: 20px;&quot;&gt;특징&lt;/td&gt;
&lt;td style=&quot;width: 30.2325%; height: 20px;&quot;&gt;장점&lt;/td&gt;
&lt;td style=&quot;width: 29.6513%; height: 20px;&quot;&gt;단점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 20px;&quot;&gt;논리적 방법&lt;/td&gt;
&lt;td style=&quot;width: 28.6046%; height: 20px;&quot;&gt;데이터베이스 객체 단위 백업/복구&lt;/td&gt;
&lt;td style=&quot;width: 30.2325%; height: 20px;&quot;&gt;데이터베이스 버전 간 호환성 높음&lt;/td&gt;
&lt;td style=&quot;width: 29.6513%; height: 20px;&quot;&gt;물리적 방법에 비해 복구 시간 오래 걸림&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 20px;&quot;&gt;물리적 방법&lt;/td&gt;
&lt;td style=&quot;width: 28.6046%; height: 20px;&quot;&gt;데이터베이스 전체 백업/복구&lt;/td&gt;
&lt;td style=&quot;width: 30.2325%; height: 20px;&quot;&gt;데이터베이스 구조 그대로 복원 가능&lt;/td&gt;
&lt;td style=&quot;width: 29.6513%; height: 20px;&quot;&gt;데이터베이스 버전 간 호환성 낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 20px;&quot;&gt;고가용성 방&lt;/td&gt;
&lt;td style=&quot;width: 28.6046%; height: 20px;&quot;&gt;서비스 연속성 보장&lt;/td&gt;
&lt;td style=&quot;width: 30.2325%; height: 20px;&quot;&gt;다운타임 최소화&lt;/td&gt;
&lt;td style=&quot;width: 29.6513%; height: 20px;&quot;&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;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3.2.2 오프라인 모드 사용자 백업 절차&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1355&quot; data-origin-height=&quot;737&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVZXC5/btsMC1SkUwv/joxsBczchvkEyAgH50xx31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVZXC5/btsMC1SkUwv/joxsBczchvkEyAgH50xx31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVZXC5/btsMC1SkUwv/joxsBczchvkEyAgH50xx31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVZXC5%2FbtsMC1SkUwv%2FjoxsBczchvkEyAgH50xx31%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;1355&quot; height=&quot;737&quot; data-origin-width=&quot;1355&quot; data-origin-height=&quot;737&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;백업 대상 확인: 아래 뷰를 조회하여 백업해야 할 파일 목록 확인
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;6:5-10:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;6:5-6:49&quot;&gt;V$DATAFILE 또는 DBA_DATA_FILES: 데이터 파일 정보&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:5-7:30&quot;&gt;V$LOGFILE: 리두 로그 파일 정보&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:5-8:32&quot;&gt;V$CONTROLFILE: 컨트롤 파일 정보&lt;/li&gt;
&lt;li data-sourcepos=&quot;9:5-10:0&quot;&gt;V$PARAMETER: 초기화 파라미터 파일 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;데이터베이스 종료: 모든 인스턴스를 Shutdown immediate 명령어를 사용하여 종료&lt;/li&gt;
&lt;li&gt;파일 복사: 운영 체제 명령어를 사용하여 백업 위치에 대상 파일을 복사&lt;/li&gt;
&lt;li&gt;오프라인 모드 백업의 특징
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;17:1-22:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;17:1-17:47&quot;&gt;단순함: 운영 체제 명령어를 사용하여 간단하게 백업 수행&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:1-18:30&quot;&gt;전체 백업: 데이터베이스 전체를 백업&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:1-19:44&quot;&gt;다운타임 발생: 데이터베이스를 종료해야 하므로 다운타임 발생&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:1-20:56&quot;&gt;데이터 일관성 보장: 데이터베이스가 종료된 상태에서 백업하므로 데이터 일관성 보장&lt;/li&gt;
&lt;li data-sourcepos=&quot;21:1-22:0&quot;&gt;복구 시간 오래 걸림: 백업된 파일들을 수동으로 복사해야 하므로 복구 시간이 오래 걸릴 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;장점&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;단점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;단순하고 구현이 쉽다&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;다운타임이 발생한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;데이터 일관성이 보장된다&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;복구 시간이 오래 걸린다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;전체 백업이 가능하다&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;백업 및 복구 과정이 수동적이다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3.2.3 온라인 백업 모드&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1544&quot; data-origin-height=&quot;802&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HaEob/btsMDRBgii1/HVPHZn6bmha1rhr1wtbdf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HaEob/btsMDRBgii1/HVPHZn6bmha1rhr1wtbdf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HaEob/btsMDRBgii1/HVPHZn6bmha1rhr1wtbdf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHaEob%2FbtsMDRBgii1%2FHVPHZn6bmha1rhr1wtbdf0%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;1544&quot; height=&quot;802&quot; data-origin-width=&quot;1544&quot; data-origin-height=&quot;802&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;온라인 백업 모드 변경 방법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:83&quot;&gt;단일 명령: ALTER DATABASE BEGIN BACKUP; 명령어를 사용하여 전체 데이터베이스를 백업 모드로 변경&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-7:0&quot;&gt;테이블스페이스 단위 명령 불필요 (10g 이상): 이전 버전에서는 각 테이블스페이스별로 백업 모드를 설정해야 했지만, 10g 이상부터는 단일 명령으로 전체 데이터베이스를 설정 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;온라인 백업 모드 조건
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;10:1-12:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;10:1-10:57&quot;&gt;ARCHIVELOG 모드: 데이터베이스가 ARCHIVELOG 모드로 설정되어 있어야 함&lt;/li&gt;
&lt;li data-sourcepos=&quot;11:1-12:0&quot;&gt;Mounted and open: 데이터베이스가 마운트 되고 열려 있어야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RMAN과의 관계
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;15:1-16:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;15:1-16:0&quot;&gt;RMAN은 온라인 백업 모드 불필요: RMAN(Recovery Manager)은 자체적으로 온라인 백업 기능을 지원하므로, 데이터베이스를 명시적으로 온라인 백업 모드로 설정할 필요가 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;온라인 백업 모드 제한 사항
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다음 작업 수행 불가:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;20:5-23:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;20:5-20:48&quot;&gt;Normal Shutdown: 데이터베이스를 정상적으로 종료할 수 없음&lt;/li&gt;
&lt;li data-sourcepos=&quot;21:5-21:101&quot;&gt;Tablespace read-only &amp;amp; online backup mode: 테이블스페이스를 읽기 전용으로 설정하고 온라인 백업 모드를 동시에 사용할 수 없음&lt;/li&gt;
&lt;li data-sourcepos=&quot;22:5-23:0&quot;&gt;Tablespace offline: 테이블스페이스를 오프라인으로 설정할 수 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;온라인 백업 모드의 장점
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;26:1-28:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;26:1-26:47&quot;&gt;다운타임 최소화: 데이터베이스를 중단하지 않고 백업을 수행할 수 있음&lt;/li&gt;
&lt;li data-sourcepos=&quot;27:1-28:0&quot;&gt;24시간 서비스 가능: 서비스 중단 없이 백업을 수행해야 하는 시스템에 적합&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;온라인 백업 모드의 단점
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;31:1-33:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;31:1-31:38&quot;&gt;복잡성: 오프라인 백업에 비해 설정 및 관리가 복잡함&lt;/li&gt;
&lt;li data-sourcepos=&quot;32:1-33:0&quot;&gt;로그 관리 필요: ARCHIVELOG 모드가 필요하며, 아카이브 로그 파일 관리 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3.2.4 Instance Recovery (인스턴스 복구)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1527&quot; data-origin-height=&quot;877&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuDvkT/btsMC6MK3xF/ud4hBAWOMzaWmK7aYHcHkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuDvkT/btsMC6MK3xF/ud4hBAWOMzaWmK7aYHcHkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuDvkT/btsMC6MK3xF/ud4hBAWOMzaWmK7aYHcHkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuDvkT%2FbtsMC6MK3xF%2Fud4hBAWOMzaWmK7aYHcHkK%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;1527&quot; height=&quot;877&quot; data-origin-width=&quot;1527&quot; data-origin-height=&quot;877&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인스턴스 복구 단계
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인스턴스 시작 (데이터 파일 비동기화): 인스턴스가 시작되면 데이터 파일은 메모리(SGA)와 동기화되지 않은 상태&lt;/li&gt;
&lt;li&gt;REDO (롤 포워드): 리두 로그 파일을 사용하여 데이터 파일에 기록되지 않은 커밋된 트랜잭션을 적용, 이 과정을 롤 포워드라고 부름&lt;/li&gt;
&lt;li&gt;파일에 커밋/미커밋 데이터 포함: 롤 포워드 후 데이터 파일에는 커밋된 데이터와 아직 커밋되지 않은 데이터가 모두 포함됨&lt;/li&gt;
&lt;li&gt;데이터베이스 Open: 데이터베이스가 Open 되어 사용자에게 서비스를 제공할 수 있는 상태가 됨&lt;/li&gt;
&lt;li&gt;UNDO (롤백): 언두 세그먼트를 사용하여 커밋되지 않은 트랜잭션을 롤백, 이 과정을 롤백이라고 부름&lt;/li&gt;
&lt;li&gt;파일에 커밋된 데이터만 포함: 롤백 후 데이터 파일에는 커밋된 데이터만 남게 되어 데이터베이스의 일관성이 유지됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3.2.5 Complete Recovery (완전 복구)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1531&quot; data-origin-height=&quot;869&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7BRoQ/btsMDZ0jk94/kXTSod4avMZRUfADEPx4O1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7BRoQ/btsMDZ0jk94/kXTSod4avMZRUfADEPx4O1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7BRoQ/btsMDZ0jk94/kXTSod4avMZRUfADEPx4O1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7BRoQ%2FbtsMDZ0jk94%2FkXTSod4avMZRUfADEPx4O1%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;1531&quot; height=&quot;869&quot; data-origin-width=&quot;1531&quot; data-origin-height=&quot;869&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;완전 복구 프로세스 단계
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;복원된 데이터 파일: 백업된 데이터 파일을 복원&lt;/li&gt;
&lt;li&gt;변경 사항 적용 (아카이브 된 리두 로그, 온라인 리두 로그): 아카이브된 리두 로그 파일과 온라인 리두 로그 파일을 사용하여 복원된 데이터 파일에 변경 사항을 적용, 이 과정을 통해 데이터 파일은 특정 시점까지의 모든 커밋된 트랜잭션이 반영 됨&lt;/li&gt;
&lt;li&gt;현시점까지 커밋/미커밋 트랜잭션 복구: 리두 로그 파일을 통해 커밋된 트랜잭션과 커밋되지 않은 트랜잭션을 모두 복구&lt;/li&gt;
&lt;li&gt;언두 적용: 언두 세그먼트를 사용하여 커밋되지 않은 트랜잭션을 롤백, 이 과정을 통해 데이터베이스의 일관성 유지&lt;/li&gt;
&lt;li&gt;Recovery된 데이터 파일: 완전 복구가 완료된 데이터 파일은 모든 커밋된 트랜잭션을 반영하고 일관성 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3.2.6 Point-in-Time Recovery (특정 시점 복구)&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;858&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lyjMd/btsMCrjqXit/YH4KzNacx7jJybPkYQpfak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lyjMd/btsMCrjqXit/YH4KzNacx7jJybPkYQpfak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lyjMd/btsMCrjqXit/YH4KzNacx7jJybPkYQpfak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlyjMd%2FbtsMCrjqXit%2FYH4KzNacx7jJybPkYQpfak%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;1515&quot; height=&quot;858&quot; data-origin-width=&quot;1515&quot; data-origin-height=&quot;858&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 시점 복구 프로세스 단계
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;과거의 필요한 시점에서 복원된 데이터 파일: 백업된 데이터 파일을 특정 시점으로 복원&lt;/li&gt;
&lt;li&gt;PIT(point-in-time)에 적용된 변경 사항 (아카이브된 리두 로그, 온라인 리두 로그): 아카이브된 리두 로그 파일과 온라인 리두 로그 파일을 사용하여 복원된 데이터 파일에 PIT까지의 변경 사항을 적용, 이 과정을 통해 데이터 파일은 PIT까지의 모든 커밋된 트랜잭션 반영&lt;/li&gt;
&lt;li&gt;PIT까지 커밋/미커밋 트랜잭션 포함 데이터 파일: 리두 로그 파일을 통해 PIT까지의 커밋된 트랜잭션과 커밋되지 않은 트랜잭션을 모두 복구&lt;/li&gt;
&lt;li&gt;데이터베이스 열림: 데이터베이스를 Open 하여 복구 작업 시작&lt;/li&gt;
&lt;li&gt;언두 적용: 언두 세그먼트를 사용하여 PIT 이후의 커밋되지 않은 트랜잭션 롤백, 이 과정을 통해 데이터베이스의 일관성 유지&lt;/li&gt;
&lt;li&gt;PIT Recovery 데이터 파일: 특정 시점 복구가 완료된 데이터 파일은 PIT까지의 모든 커밋된 트랜잭션을 반영하고 PIT 이후의 변경 사항은 롤백되어 일관성 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;3.2.7 RESETLOGS&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1517&quot; data-origin-height=&quot;726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xhiDn/btsMB3XzlfL/dWksL2OhmCjrmoashQxOIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xhiDn/btsMB3XzlfL/dWksL2OhmCjrmoashQxOIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xhiDn/btsMB3XzlfL/dWksL2OhmCjrmoashQxOIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxhiDn%2FbtsMB3XzlfL%2FdWksL2OhmCjrmoashQxOIk%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;1517&quot; height=&quot;726&quot; data-origin-width=&quot;1517&quot; data-origin-height=&quot;726&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RESETLOGS 옵션의 필요성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:92&quot;&gt;불완전 복구의 특성: 불완전 복구는 특정 시점(PIT)으로 데이터베이스를 복원하는 과정으로 이 과정에서는 현재 시점의 리두 로그를 적용할 수 없음&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:61&quot;&gt;새로운 리두 로그 생성: 과거의 특정 시점으로 복구했기 때문에 새로운 리두 로그 생성 필요&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-8:0&quot;&gt;RESETLOGS 옵션 사용: ALTER DATABASE OPEN RESETLOGS; 명령어를 사용하여 데이터베이스를 열고 새로운 리두 로그 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RESETLOGS 옵션 사용 시 주의사항
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;11:1-13:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:1-11:109&quot;&gt;새로운 Incarnation 생성: RESETLOGS 옵션을 사용하여 데이터베이스를 열면 이전 데이터베이스와 다른 새로운 Incarnation(데이터베이스의 새로운 버전) 생성&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:1-13:0&quot;&gt;이전 백업 및 아카이브 로그 사용 불가: 새로운 Incarnation이 생성되므로 이전 백업 및 아카이브 로그를 사용할 수 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RESETLOGS 옵션 사용 후 작업
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;16:1-17:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;16:1-17:0&quot;&gt;백업 수행: RESETLOGS 옵션을 사용하여 데이터베이스를 연 후에는 반드시 새로운 백업을 수행해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3.2.8 Flashback&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;플래시백 기술 개요
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:69&quot;&gt;아카이브 로그 모드 필수: 플래시백 기능을 사용하려면 데이터베이스 아카이브 로그 모드 설정 필요&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-7:0&quot;&gt;커밋 후 특정 시점 복구: 플래시백은 커밋된 트랜잭션 이후에도 특정 시점으로 데이터를 복원 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;플래시백 기술 종류
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Flashback Database (플래시백 데이터베이스)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:5-11:23&quot;&gt;대상: 데이터베이스 전체&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:5-12:49&quot;&gt;시나리오: 테이블 잘림(Truncate), 원치 않는 다중 테이블 변경&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:5-13:37&quot;&gt;사용: 플래시백 로그(Flashback logs)&lt;/li&gt;
&lt;li data-sourcepos=&quot;14:5-15:0&quot;&gt;데이터 영향: TRUE (데이터 변경)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Flashback Drop (플래시백 테이블 삭제 취소)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;17:5-17:26&quot;&gt;대상: 테이블 삭제(Drop)&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:5-18:22&quot;&gt;시나리오: 테이블 삭제&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:5-19:29&quot;&gt;사용: 휴지통(Recyclebin)&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:5-21:0&quot;&gt;데이터 영향: TRUE (데이터 복구)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Flashback Table (플래시백 테이블)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;23:5-23:17&quot;&gt;대상: 테이블&lt;/li&gt;
&lt;li data-sourcepos=&quot;24:5-24:37&quot;&gt;시나리오: 잘못된 WHERE 절을 사용한 업데이트&lt;/li&gt;
&lt;li data-sourcepos=&quot;25:5-25:31&quot;&gt;사용: 언두 데이터(Undo data)&lt;/li&gt;
&lt;li data-sourcepos=&quot;26:5-27:0&quot;&gt;데이터 영향: TRUE (데이터 변경)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Flashback Query (플래시백 쿼리)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;29:5-29:17&quot;&gt;대상: 테이블&lt;/li&gt;
&lt;li data-sourcepos=&quot;30:5-30:33&quot;&gt;시나리오: 현재 데이터와 과거 데이터 비교&lt;/li&gt;
&lt;li data-sourcepos=&quot;31:5-31:31&quot;&gt;사용: 언두 데이터(Undo data)&lt;/li&gt;
&lt;li data-sourcepos=&quot;32:5-33:0&quot;&gt;데이터 영향: FALSE (데이터 조회만)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Flashback Version Query (플래시백 버전 쿼리)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;35:5-35:18&quot;&gt;대상: 트랜잭션&lt;/li&gt;
&lt;li data-sourcepos=&quot;36:5-36:24&quot;&gt;시나리오: 행의 버전 비교&lt;/li&gt;
&lt;li data-sourcepos=&quot;37:5-37:31&quot;&gt;사용: 언두 데이터(Undo data)&lt;/li&gt;
&lt;li data-sourcepos=&quot;38:5-39:0&quot;&gt;데이터 영향: FALSE (데이터 조회만)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Flashback Transaction (플래시백 트랜잭션)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;41:5-41:18&quot;&gt;대상: 트랜잭션&lt;/li&gt;
&lt;li data-sourcepos=&quot;42:5-42:26&quot;&gt;시나리오: 특정 트랜잭션 복구&lt;/li&gt;
&lt;li data-sourcepos=&quot;43:5-43:31&quot;&gt;사용: 언두 데이터(Undo data)&lt;/li&gt;
&lt;li data-sourcepos=&quot;44:5-45:0&quot;&gt;데이터 영향: TRUE (데이터 변경)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;플래시백 기술 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;48:1-48:58&quot;&gt;플래시백 데이터베이스: 플래시백 로그를 사용하여 데이터베이스 전체를 특정 시점으로 복원&lt;/li&gt;
&lt;li data-sourcepos=&quot;49:1-49:48&quot;&gt;플래시백 테이블: 언두 데이터를 사용하여 테이블을 특정 시점으로 복원&lt;/li&gt;
&lt;li data-sourcepos=&quot;50:1-51:0&quot;&gt;플래시백 트랜잭션: 언두 데이터를 사용하여 특정 트랜잭션 복구&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;플래시백 기술의 장점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;54:1-54:38&quot;&gt;빠른 복구: 백업 및 복구에 비해 빠른 복구 가능&lt;/li&gt;
&lt;li data-sourcepos=&quot;55:1-55:36&quot;&gt;유연성: 다양한 수준에서 데이터를 복구 가능&lt;/li&gt;
&lt;li data-sourcepos=&quot;56:1-57:0&quot;&gt;데이터 손실 최소화: 사용자 실수로 인한 데이터 손실을 최소화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;플래시백 기술 사용 시 주의사항
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;60:1-60:69&quot;&gt;아카이브 로그 모드 필수&lt;/li&gt;
&lt;li data-sourcepos=&quot;61:1-61:57&quot;&gt;언두 데이터 관리: 플래시백 기능을 사용하려면 충분한 언두 데이터 공간 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.1396%;&quot;&gt;대상&lt;/td&gt;
&lt;td style=&quot;width: 36.279%;&quot;&gt;시나리오&lt;/td&gt;
&lt;td style=&quot;width: 24.4186%;&quot;&gt;플래시백 기술&lt;/td&gt;
&lt;td style=&quot;width: 13.9535%;&quot;&gt;사용&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;데이터 영향&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.1396%;&quot;&gt;데이터베이스&lt;/td&gt;
&lt;td style=&quot;width: 36.279%;&quot;&gt;테이블 잘림, 원치 않는 다중 테이블 변경&lt;/td&gt;
&lt;td style=&quot;width: 24.4186%;&quot;&gt;플래시백 데이터베이스&lt;/td&gt;
&lt;td style=&quot;width: 13.9535%;&quot;&gt;플래시백 로그&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;TRUE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.1396%;&quot;&gt;테이블&lt;/td&gt;
&lt;td style=&quot;width: 36.279%;&quot;&gt;테이블 삭제&lt;/td&gt;
&lt;td style=&quot;width: 24.4186%;&quot;&gt;플래시백 삭제 취소&lt;/td&gt;
&lt;td style=&quot;width: 13.9535%;&quot;&gt;휴지통&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;TRUE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.1396%;&quot;&gt;테이블&lt;/td&gt;
&lt;td style=&quot;width: 36.279%;&quot;&gt;잘못된 WHERE 절을 사용한 업데이트&lt;/td&gt;
&lt;td style=&quot;width: 24.4186%;&quot;&gt;플래시백 테이블&lt;/td&gt;
&lt;td style=&quot;width: 13.9535%;&quot;&gt;언두 데이터&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;TRUE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.1396%;&quot;&gt;테이블&lt;/td&gt;
&lt;td style=&quot;width: 36.279%;&quot;&gt;현재 데이터와 과거 데이터 비교&lt;/td&gt;
&lt;td style=&quot;width: 24.4186%;&quot;&gt;플래시백 쿼리&lt;/td&gt;
&lt;td style=&quot;width: 13.9535%;&quot;&gt;언두 데이터&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;FALSE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.1396%;&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #333333; text-align: start;&quot;&gt;트랜잭션&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 36.279%;&quot;&gt;행의 버전 비교&lt;/td&gt;
&lt;td style=&quot;width: 24.4186%;&quot;&gt;플래시백 버전 쿼리&lt;/td&gt;
&lt;td style=&quot;width: 13.9535%;&quot;&gt;언두 데이터&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;FALSE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.1396%;&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #333333; text-align: start;&quot;&gt;트랜잭션&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 36.279%;&quot;&gt;특정 트랜잭션 복구&lt;/td&gt;
&lt;td style=&quot;width: 24.4186%;&quot;&gt;플래시백 트랜잭&lt;/td&gt;
&lt;td style=&quot;width: 13.9535%;&quot;&gt;언두 데이터&lt;/td&gt;
&lt;td style=&quot;width: 12.2093%;&quot;&gt;TRUE&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>Oracle Database/Training</category>
      <author>수상한 김토끼</author>
      <guid isPermaLink="true">https://with-kami.tistory.com/1534874</guid>
      <comments>https://with-kami.tistory.com/1534874#entry1534874comment</comments>
      <pubDate>Thu, 6 Mar 2025 17:07:43 +0900</pubDate>
    </item>
    <item>
      <title>2장. High Availability</title>
      <link>https://with-kami.tistory.com/1534873</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2.1 오라클 HA 아키텍처에서 발생하는 다양한 유형의 다운타임 및 대응 솔루션&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1856&quot; data-origin-height=&quot;1038&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE2Veh/btsMDtUGywT/vhBJjX1rrywPsH8Jp4RXi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE2Veh/btsMDtUGywT/vhBJjX1rrywPsH8Jp4RXi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE2Veh/btsMDtUGywT/vhBJjX1rrywPsH8Jp4RXi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE2Veh%2FbtsMDtUGywT%2FvhBJjX1rrywPsH8Jp4RXi1%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;1856&quot; height=&quot;1038&quot; data-origin-width=&quot;1856&quot; data-origin-height=&quot;1038&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1851&quot; data-origin-height=&quot;992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MQZFJ/btsMBB7WrZG/ATDHkCsclGBq8jEkJkrZIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MQZFJ/btsMBB7WrZG/ATDHkCsclGBq8jEkJkrZIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MQZFJ/btsMBB7WrZG/ATDHkCsclGBq8jEkJkrZIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMQZFJ%2FbtsMBB7WrZG%2FATDHkCsclGBq8jEkJkrZIk%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;1851&quot; height=&quot;992&quot; data-origin-width=&quot;1851&quot; data-origin-height=&quot;992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Unplanned Downtime (계획되지 않은 다운타임)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-7:74&quot;&gt;System Failures (시스템 실패)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;6:5-7:74&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;6:5-6:74&quot;&gt;HW Failure (하드웨어 실패 ): 서버, 디스크, 네트워크 장비 등의 하드웨어 고장으로 인해 발생하는 다운타임&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:5-7:74&quot;&gt;OS Failure (운영 체제 실패): 운영 체제의 오류, 충돌, 또는 예상치 못한 종료로 인해 발생하는 다운타임&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:5-7:112&quot;&gt;대응 솔루션: RAC(Real Application Clusters) 및 Data Guard를 사용하여 시스템 실패 시에도 다른 노드로 서비스를 즉시 전환하여 다운타임을 최소화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:1-13:0&quot;&gt;Data Failures (데이터 실패)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;9:5-13:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;9:5-9:79&quot;&gt;Storage Failure (저장소 실패): 데이터 저장 장치(디스크, 스토리지 시스템)의 고장으로 인해 발생하는 다운타임&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:5-10:64&quot;&gt;Human Error (인적 오류): 데이터베이스 관리자나 사용자의 실수로 인해 발생하는 다운타임&lt;/li&gt;
&lt;li data-sourcepos=&quot;11:5-11:65&quot;&gt;Corruption (데이터 손상): 데이터 파일이나 데이터베이스 객체가 손상되어 발생하는 다운타임&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:5-13:0&quot;&gt;Site Failure (사이트 실패): 데이터 센터나 전체 시스템이 물리적인 재해(화재, 지진 등)로 인해 발생하는 다운타임&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:5-11:0&quot;&gt;대응 솔루션: ASM(Automatic Storage Management)을 사용하여 저장소 오류를 방지하고, Flashback, RMAN Backup, Data Guard, GoldenGate를 사용하여 데이터 복구 용이성 확보 및 손실 최소화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:5-13:0&quot;&gt;Planned Downtime (계획된 다운타임)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;16:1-18:68&quot;&gt;System Changes (시스템 변경)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;17:5-18:68&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;17:5-17:85&quot;&gt;SW Patch Apply (소프트웨어 패치 적용): 데이터베이스 소프트웨어나 관련 소프트웨어에 패치를 적용하기 위해 발생하는 다운타임&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:5-18:68&quot;&gt;OS Patch Apply (운영 체제 패치 적용) 운영 체제에 패치를 적용하기 위해 발생하는 다운타임&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:5-18:68&quot;&gt;대응 솔루션: Rolling Patches 및 Rolling Upgrades를 사용하여 시스템 변경 시에도 서비스를 중단하지 않고 연속적으로 운영가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:1-22:0&quot;&gt;Data Changes (데이터 변경)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;20:5-22:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;20:5-20:76&quot;&gt;Data Reorg (데이터 재구성): 데이터베이스 객체의 구조를 변경하거나 데이터를 재구성하기 위해 발생하는 다운타임&lt;/li&gt;
&lt;li data-sourcepos=&quot;21:5-22:0&quot;&gt;Data Migration (데이터 마이그레이션): 데이터를 다른 시스템이나 데이터베이스로 이전하기 위해 발생하는 다운타임&lt;/li&gt;
&lt;li data-sourcepos=&quot;21:5-22:0&quot;&gt;대응 솔루션: Online Redefinition을 사용하여 데이터 변경 시에도 서비스를 중단하지 않고 온라인 상태에서 작업 수행가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2.2 RAC (Real&amp;nbsp; Application Clusters)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2.2.1 HA (Active &amp;amp; Stanby) vs RAC&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1894&quot; data-origin-height=&quot;1101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WIUBd/btsMBQRlcD1/VgsH2sXgVV545khO5yotn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WIUBd/btsMBQRlcD1/VgsH2sXgVV545khO5yotn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WIUBd/btsMBQRlcD1/VgsH2sXgVV545khO5yotn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWIUBd%2FbtsMBQRlcD1%2FVgsH2sXgVV545khO5yotn0%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;1894&quot; height=&quot;1101&quot; data-origin-width=&quot;1894&quot; data-origin-height=&quot;1101&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Active &amp;amp; Standby (HA 구성)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-12:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:90&quot;&gt;단일 활성 서버: 하나의 서버(Server A)만 활성화되어 서비스를 제공하고, 다른 서버(Server B)는 대기(Standby) 상태로 유지&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:66&quot;&gt;서버 실패 시 대기 서버 활성화: 활성 서버에 장애가 발생하면 대기 서버가 활성화되어 서비스를 이어받음&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-7:58&quot;&gt;대기 서버 자원 유휴화: 대기 서버는 평상시에는 유휴 상태로 유지되어 자원 활용도 낮음&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:1-8:105&quot;&gt;OS 클러스터 기반 페일오버 (과거): 과거에는 OS 클러스터가 페일오버 역할을 수행했지만, 오라클 11g부터는 Grid Infrastructure가 페일오버 역할 대체&lt;/li&gt;
&lt;li data-sourcepos=&quot;9:1-9:65&quot;&gt;비공유 환경: 스토리지 자원이 공유되지 않으므로, 페일오버 시 대기 서버에서 스토리지 마운트 필요&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:1-10:55&quot;&gt;DB 및 AP 재기동 필요: 페일오버 후 데이터베이스와 애플리케이션 재기동 필요&lt;/li&gt;
&lt;li data-sourcepos=&quot;11:1-12:0&quot;&gt;수분~수십 분 다운타임 발생: 페일오버 과정에서 수분에서 수십 분의 다운타임 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;11:1-12:0&quot;&gt;Active &amp;amp; Active (RAC 구성)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;15:1-21:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;15:1-15:66&quot;&gt;다중 활성 서버: 여러 서버(Server A, Server B 등)가 동시에 활성화되어 서비스 제공&lt;/li&gt;
&lt;li data-sourcepos=&quot;16:1-16:49&quot;&gt;로드 밸런싱: 여러 서버가 작업을 분산 처리하여 성능을 향상할 수 있음&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:1-17:76&quot;&gt;서버 실패 시 서비스 연속성 유지: 일부 서버에 장애가 발생해도 다른 서버들이 서비스를 계속 제공하여 다운타임 최소화&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:1-18:54&quot;&gt;공유 스토리지 사용: 모든 서버가 공유 스토리지를 사용하여 데이터 일관성 유지&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:1-19:56&quot;&gt;Cache Fusion: 서버 간 데이터 블록 공유 및 동기화를 통해 성능 향상&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:1-21:0&quot;&gt;Transparent Application Failover (TAF): 애플리케이션 연결이 자동으로 다른 서버로 전환되어 사용자에게 투명한 페일오버 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 119px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;특징&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;HA 구성&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;RAC 구성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;활성 서버 수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;1개&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;여러 개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;자원 활용 도&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;낮음&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;페일오버 속도&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;느림 (수분~ 수십 분)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;빠름 (TAF 사용 시 투명)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;스토리지&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;비공유&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;공유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;복잡성&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;낮음&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;비용&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;낮음&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&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;h3 data-ke-size=&quot;size23&quot;&gt;2.2.2 오라클 RAC&amp;nbsp; 환경의 작동 방식과 장점&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1860&quot; data-origin-height=&quot;1028&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfTQCv/btsMDjEAJPI/X1W281qaK46zqqCdmJRhYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfTQCv/btsMDjEAJPI/X1W281qaK46zqqCdmJRhYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfTQCv/btsMDjEAJPI/X1W281qaK46zqqCdmJRhYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfTQCv%2FbtsMDjEAJPI%2FX1W281qaK46zqqCdmJRhYK%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;1860&quot; height=&quot;1028&quot; data-origin-width=&quot;1860&quot; data-origin-height=&quot;1028&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;20:1-21:0&quot;&gt;왼쪽 그림 (정상 작동 시)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:74&quot;&gt;Active &amp;amp; Active 상태: 모든 서버(Server A, Server B)가 활성화되어 서비스 제공&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:44&quot;&gt;로드 밸런싱: 여러 서버가 작업을 분산 처리하여 성능 향상&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-8:0&quot;&gt;자원 효율적 활용: 모든 서버가 활성화되어 자원을 효율적으로 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-8:0&quot;&gt;오른쪽 그림 (장애 발생 시)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;11:1-14:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:1-11:83&quot;&gt;장애 발생 노드 제외 서비스 지속: Server A에 장애가 발생하더라도 Server B가 서비스를 계속 제공하여 다운타임 최소화&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:1-12:72&quot;&gt;AP 서버 재접속: 장애 발생 노드에 연결된 애플리케이션 서버(AP 서버)는 재접속만으로 서비스 지속&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:1-14:0&quot;&gt;DB 재기동 및 스토리지 마운트 불필요: RAC는 공유 스토리지를 사용하므로, 장애 발생 시 데이터베이스를 재기동하거나 스토리지를 마운트 할 필요 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:1-14:0&quot;&gt;RAC (Real Application Clusters) 환경에서 데이터 버퍼 캐시 (Data Buffer Cache)는 각 인스턴스 간에 데이터를 전달해야 하므로 인터커넥트 (interconnect) 속도가 매우 중요
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;13:1-14:0&quot;&gt;인터커넥트의 역할
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-8:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:137&quot;&gt;데이터 블록 전달: RAC 환경에서 각 인스턴스는 자체적인 데이터 버퍼 캐시를 가지고 있으며, 한 인스턴스에서 데이터 블록을 요청했는데 해당 블록이 다른 인스턴스의 버퍼 캐시에 있는 경우, 인터커넥트를 통해 해당 블록을 전달받음&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:63&quot;&gt;Cache Fusion (캐시 퓨전): 인스턴스 간 데이터 블록 전달을 효율적으로 처리하는 기술&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-8:0&quot;&gt;Global Cache Service (글로벌 캐시 서비스): 데이터 블록의 일관성을 유지하고 인스턴스 간 동기화를 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-8:0&quot;&gt;인터커넥트 속도의 중요성
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;11:1-14:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:1-11:67&quot;&gt;성능 영향: 인터커넥트 속도가 느리면 데이터 블록 전달 시간이 길어져 전체 시스템 성능 저하 발생&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:1-12:57&quot;&gt;전용 스위치 구성 필요: 높은 성능을 위해 인터커넥트 전용 스위치를 구성을 권장&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:1-14:0&quot;&gt;네트워크 구성: 고속 네트워크 인터페이스 (예: 10 GbE 이상)와 저지연 네트워크 프로토콜 (예: InfiniBand) 사용 권장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2.2.3 오라클 RAC&lt;span&gt;&amp;nbsp;아키텍처&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2027&quot; data-origin-height=&quot;1103&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BJwXX/btsMC2JRgDT/41m4Kp1JZoJoI5qnMBhOZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BJwXX/btsMC2JRgDT/41m4Kp1JZoJoI5qnMBhOZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BJwXX/btsMC2JRgDT/41m4Kp1JZoJoI5qnMBhOZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBJwXX%2FbtsMC2JRgDT%2F41m4Kp1JZoJoI5qnMBhOZ0%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;2027&quot; height=&quot;1103&quot; data-origin-width=&quot;2027&quot; data-origin-height=&quot;1103&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RAC 아키텍처 주요 구성 요소
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-8:42&quot;&gt;Grid Infrastructure:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;6:5-8:42&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;6:5-6:29&quot;&gt;RAC 환경의 핵심 기반 소프트웨어&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:5-7:68&quot;&gt;Oracle Clusterware와 ASM (Automatic Storage Management)으로 구성&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:5-8:42&quot;&gt;클러스터 관리, 스토리지 관리, 네트워크 관리 기능 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;9:1-16:52&quot;&gt;Oracle Clusterware:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;10:5-16:52&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;10:5-10:32&quot;&gt;클러스터 노드 간의 통신 및 관리 담당&lt;/li&gt;
&lt;li data-sourcepos=&quot;11:5-11:43&quot;&gt;노드 추가/삭제, 장애 감지, 리소스 관리 등의 기능 수행&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:5-12:54&quot;&gt;장애 발생 시 서버 간의 Node Fencing을 수행하여 데이터 무결성 보호&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:5-13:73&quot;&gt;Oracle 10g부터 도입되었으며, Oracle 11gR2까지는 3rd Party Cluster와 함께 사용되었음&lt;/li&gt;
&lt;li data-sourcepos=&quot;14:5-14:85&quot;&gt;12c부터는 Grid Software에서 관리하는 HAC (High Availability Cluster) Listener의 역할 수행&lt;/li&gt;
&lt;li data-sourcepos=&quot;15:5-15:37&quot;&gt;VIP (Virtual IP) 구성 및 관리 담당&lt;/li&gt;
&lt;li data-sourcepos=&quot;16:5-16:52&quot;&gt;클러스터 노드 간 리소스의 위치 확인 및 리소스 간 의존성 구성 기능 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:1-22:59&quot;&gt;ASM (Automatic Storage Management):
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;18:5-22:59&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;18:5-18:70&quot;&gt;기존 LVM (Logical Volume Manager) 및 Raw Device를 대체하는 스토리지 관리 기능&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:5-19:64&quot;&gt;Oracle 10g에서 도입되었으나, Oracle 11g까지는 주로 Raw Device가 사용&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:5-20:73&quot;&gt;12c부터 Raw Device가 지원 중단되면서 ASM과 CFS (Cluster File System)만 사용 가능&lt;/li&gt;
&lt;li data-sourcepos=&quot;21:5-21:57&quot;&gt;ASM Diskgroup/Disk/File/Instance 등의 스토리지 객체 관리&lt;/li&gt;
&lt;li data-sourcepos=&quot;22:5-22:59&quot;&gt;동일 서버 내 여러 DB instance가 하나의 ASM instance를 공유할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;23:1-26:20&quot;&gt;공유 스토리지 (Shared Storage):
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;24:5-26:20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;24:5-24:33&quot;&gt;모든 RAC 노드가 공유하는 스토리지 영역&lt;/li&gt;
&lt;li data-sourcepos=&quot;25:5-25:40&quot;&gt;데이터 파일, 컨트롤 파일, 리두 로그 파일 등을 저장&lt;/li&gt;
&lt;li data-sourcepos=&quot;26:5-26:20&quot;&gt;ASM에 의해 관리됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;27:1-30:94&quot;&gt;OCR (Oracle Cluster Registry) / Voting Disks:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;28:5-30:94&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;28:5-28:38&quot;&gt;Oracle Clusterware에서 사용하는 파일&lt;/li&gt;
&lt;li data-sourcepos=&quot;29:5-29:58&quot;&gt;OCR: Clusterware의 메타 저장소로, 클러스터 리소스 정보 등을 저장&lt;/li&gt;
&lt;li data-sourcepos=&quot;30:5-30:94&quot;&gt;Voting Disks: 클러스터 노드 간의 디스크 Heartbeat 용도로 사용되며, I/O timeout 발생 시 일부 노드가 다운될 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;31:1-33:54&quot;&gt;클러스터 인터커넥트 (Cluster Interconnect):
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;32:5-33:54&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;32:5-32:32&quot;&gt;클러스터 노드 간의 통신을 위한 네트워크&lt;/li&gt;
&lt;li data-sourcepos=&quot;33:5-33:54&quot;&gt;고속 네트워크 (예: InfiniBand)를 사용하여 데이터 블록 전송 성능을 높임&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;34:1-37:0&quot;&gt;공용 네트워크 (Public Network):
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;35:5-37:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;35:5-35:41&quot;&gt;클라이언트가 데이터베이스에 접속하는 데 사용하는 네트워크&lt;/li&gt;
&lt;li data-sourcepos=&quot;36:5-37:0&quot;&gt;VIP (Virtual IP)를 통해 접속&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2.2.4 오라클 RAC &lt;span&gt;&lt;span&gt;Clusterware&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;981&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR9krz/btsMCqkg9fm/dkgvskVIPRAGN5WedhVR9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR9krz/btsMCqkg9fm/dkgvskVIPRAGN5WedhVR9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR9krz/btsMCqkg9fm/dkgvskVIPRAGN5WedhVR9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR9krz%2FbtsMCqkg9fm%2FdkgvskVIPRAGN5WedhVR9K%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;2000&quot; height=&quot;981&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;981&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle Clusterware Overview (오라클 클러스터웨어 개요)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-11:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:120&quot;&gt;Grid Infrastructure의 구성 요소: 클러스터웨어는 Grid Infrastructure에 포함된 RAC 노드를 클러스터링 하기 위한 솔루션&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:72&quot;&gt;Grid Infrastructure의 중심 기능: 오라클 Grid Infrastructure의 중심이 되는 기능&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-7:60&quot;&gt;ASM과 통합: ASM (Automatic Storage Management)과 통합되어 있음&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:1-8:58&quot;&gt;VIP 생성 및 관리: RAC에서 사용되는 VIP (Virtual IP)를 생성 및 관리&lt;/li&gt;
&lt;li data-sourcepos=&quot;9:1-9:52&quot;&gt;통합 인터페이스 제공: 전체 노드 리소스 제어를 위한 통합 인터페이스 제공&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:1-11:0&quot;&gt;Split Brain 해결: 노드 장애 시 Split Brain 문제 해결&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:1-11:0&quot;&gt;이미지 구성 요소
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;14:1-19:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;14:1-14:50&quot;&gt;Network: 클라이언트가 데이터베이스에 접속하는 데 사용하는 네트워크&lt;/li&gt;
&lt;li data-sourcepos=&quot;15:1-15:46&quot;&gt;Interconnect: 클러스터 노드 간의 통신을 위한 네트워크&lt;/li&gt;
&lt;li data-sourcepos=&quot;16:1-16:35&quot;&gt;Users: 데이터베이스를 사용하는 클라이언트&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:1-17:60&quot;&gt;Oracle Clusterware: 클러스터 노드 간의 통신 및 관리를 담당하는 소프트웨어&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:1-19:0&quot;&gt;Storage Network: 공유 스토리지를 연결하는 네트워크&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1877&quot; data-origin-height=&quot;1079&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7I3zk/btsMBEcv4gG/7hY9NEzmnP7X3HoVpR3wpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7I3zk/btsMBEcv4gG/7hY9NEzmnP7X3HoVpR3wpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7I3zk/btsMBEcv4gG/7hY9NEzmnP7X3HoVpR3wpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7I3zk%2FbtsMBEcv4gG%2F7hY9NEzmnP7X3HoVpR3wpK%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;1877&quot; height=&quot;1079&quot; data-origin-width=&quot;1877&quot; data-origin-height=&quot;1079&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스 종류:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;7:5-15:39&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;7:5-7:63&quot;&gt;VIP (Virtual IP): 클러스터 환경에서 클라이언트 접속을 위한 가상 IP 주소&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:5-8:63&quot;&gt;Listener: 클라이언트 연결 요청을 수신하고 데이터베이스로 연결을 중재하는 프로세스&lt;/li&gt;
&lt;li data-sourcepos=&quot;9:5-9:58&quot;&gt;Public Network Monitoring: 공용 네트워크의 상태를 모니터링&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:5-10:95&quot;&gt;SCAN (Single Client Access Name) Listener: 클라이언트가 RAC 데이터베이스에 접속할 때 사용하는 단일 접속 이름&lt;/li&gt;
&lt;li data-sourcepos=&quot;11:5-11:52&quot;&gt;SCAN VIP: SCAN Listener가 사용하는 가상 IP 주소&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:5-12:76&quot;&gt;ASM (Automatic Storage Management): 오라클 데이터베이스 전용의 스토리지 관리 시스템&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:5-13:44&quot;&gt;ASM Data Group: ASM 디스크 그룹을 관리&lt;/li&gt;
&lt;li data-sourcepos=&quot;14:5-14:39&quot;&gt;Database: 데이터베이스 인스턴스를 관리&lt;/li&gt;
&lt;li data-sourcepos=&quot;15:5-15:39&quot;&gt;Instance: 데이터베이스 인스턴스를 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;리소스 상태 확인 명령어: crsctl stat res -t 명령어를 사용하여 리소스의 상태를 확인가능&lt;/li&gt;
&lt;li&gt;리소스 상태 정보:
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;18:5-22:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;18:5-18:22&quot;&gt;Name: 리소스 이름&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:5-19:47&quot;&gt;Target State: 목표 상태 (ONLINE, OFFLINE)&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:5-20:31&quot;&gt;Server: 리소스가 실행 중인 서버&lt;/li&gt;
&lt;li data-sourcepos=&quot;21:5-22:0&quot;&gt;State details: 리소스의 상세 상태 (STABLE 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2005&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xuHMn/btsMDvytzzD/BUr9R5kDZ5OoSoOxui8ZG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xuHMn/btsMDvytzzD/BUr9R5kDZ5OoSoOxui8ZG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xuHMn/btsMDvytzzD/BUr9R5kDZ5OoSoOxui8ZG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxuHMn%2FbtsMDvytzzD%2FBUr9R5kDZ5OoSoOxui8ZG1%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;2005&quot; height=&quot;1024&quot; data-origin-width=&quot;2005&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스플릿 브레인 (Split Brain) 개념
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-8:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:70&quot;&gt;정의: 클러스터 노드 간의 Heartbeat 네트워크가 단절된 상태에서 노드들이 여전히 작동하는 상황&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:66&quot;&gt;문제점: 각 노드가 독립적으로 작동하면서 데이터 불일치(Data Corruption)가 발생할 수 있음&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-8:0&quot;&gt;해결 방법: 데이터 정합성을 위해 클러스터 내 일부 노드를 제거(Eviction)해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;IO Fencing (IO 펜싱)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;11:1-13:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:1-11:72&quot;&gt;정의: 스플릿 브레인 상황에서 제거(Evicted)된 노드가 공유 디스크에 접근하지 못하도록 IO를 차단&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:1-13:0&quot;&gt;목적: 데이터 손상 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;IO Fencing 방법
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;16:1-18:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;16:1-16:91&quot;&gt;STONITH (Shoot The Other Node In The Head): 정상적인 노드가 문제가 있는 노드를 강제로 Shutdown 하는 방식&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:1-18:0&quot;&gt;Self-fencing: /etc/init.d/init.cssd를 스스로 수행하여 리부트 하는 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2.2.5 오라클 RAC&lt;span&gt; TAF (Transparent Application Failover) / CTF (Connection Time Failover) &lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1801&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lO0vZ/btsMDxJAphP/KhNRYB0XyseQDWQkSo2ZQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lO0vZ/btsMDxJAphP/KhNRYB0XyseQDWQkSo2ZQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lO0vZ/btsMDxJAphP/KhNRYB0XyseQDWQkSo2ZQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlO0vZ%2FbtsMDxJAphP%2FKhNRYB0XyseQDWQkSo2ZQ1%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;1801&quot; height=&quot;752&quot; data-origin-width=&quot;1801&quot; data-origin-height=&quot;752&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1975&quot; data-origin-height=&quot;977&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA06Z2/btsMBldjsWh/QxPOoZMt4QBwsd0k1kO5TK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA06Z2/btsMBldjsWh/QxPOoZMt4QBwsd0k1kO5TK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA06Z2/btsMBldjsWh/QxPOoZMt4QBwsd0k1kO5TK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA06Z2%2FbtsMBldjsWh%2FQxPOoZMt4QBwsd0k1kO5TK%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;1975&quot; height=&quot;977&quot; data-origin-width=&quot;1975&quot; data-origin-height=&quot;977&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CTF (Connection Time Failover) 개요
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-8:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:67&quot;&gt;사용자 재연결 필요: RAC 환경에서 일부 인스턴스가 다운되었을 때, 사용자가 직접 연결을 재시도해야 함&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:84&quot;&gt;TNS 설정 기반: TNS(Transparent Network Substrate)에 기술된 IP 주소 중 접속 가능한 인스턴스로 연결됨&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-8:0&quot;&gt;단순 연결 전환: 단순히 연결을 다른 인스턴스로 전환하는 기능만 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1035&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VZBGY/btsMDSGKEbJ/kcNYhcHRFIpzrkjKdd7GI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VZBGY/btsMDSGKEbJ/kcNYhcHRFIpzrkjKdd7GI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VZBGY/btsMDSGKEbJ/kcNYhcHRFIpzrkjKdd7GI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVZBGY%2FbtsMDSGKEbJ%2FkcNYhcHRFIpzrkjKdd7GI1%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;1976&quot; height=&quot;1035&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1035&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TAF (Transparent Application Failover) 개요
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;11:1-15:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:1-11:71&quot;&gt;자동 세션 복구: 세션이 끊기더라도 SQL*Net이 자동으로 살아있는 노드로 세션을 재연결됨 (일부 세션 제외)&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:1-12:65&quot;&gt;데이터 변경 없는 세션 복구: 조회(SELECT) 또는 유휴(IDLE) 상태의 세션은 자동으로 복구&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:1-13:70&quot;&gt;데이터 변경 트랜잭션 롤백: 데이터 변경이 있는 트랜잭션은 재접속이 필요하며, 변경된 데이터는 자동으로 롤백&lt;/li&gt;
&lt;li data-sourcepos=&quot;14:1-15:0&quot;&gt;애플리케이션 투명성: 애플리케이션은 장애 발생을 인지하지 못하고 계속 작동할 수 있음&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-7:50&quot;&gt;작업 지속: 실패한 노드의 질의 작업에 대해서 나머지 노드가 작업 지속&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:1-8:35&quot;&gt;자동 페일오버: 페일오버 작업이 자동으로 진행&lt;/li&gt;
&lt;li data-sourcepos=&quot;9:1-9:78&quot;&gt;DML 롤백 및 예외 처리: Update/Insert/Delete 등 DML은 롤백되므로 애플리케이션에서 예외 처리 필요&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:1-11:0&quot;&gt;JDBC Thin 미지원: JDBC Thin 드라이버는 TAF를 지원하지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;기능&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;CTF&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;TAF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;세션 복구 방식&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;사용자 재연결&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;자동 세션 복구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;지원 범위&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;모든 세션&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;데이터 변경 없는 세션 자동 복구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;애플리케이션 영향&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;재연결 코드 필요&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;투명한 장애 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;트랜잭션 처리&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;재연결 후 수동 처리&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1919&quot; data-origin-height=&quot;1054&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bveGKT/btsMCsWNYHC/Kj331IDS01IfTknO3rJV21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bveGKT/btsMCsWNYHC/Kj331IDS01IfTknO3rJV21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bveGKT/btsMCsWNYHC/Kj331IDS01IfTknO3rJV21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbveGKT%2FbtsMCsWNYHC%2FKj331IDS01IfTknO3rJV21%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;1919&quot; height=&quot;1054&quot; data-origin-width=&quot;1919&quot; data-origin-height=&quot;1054&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RAC 환경에서 TNSNAMES.ORA 파일 설정 시, PUBLIC IP 대신 VIRTUAL IP(VIP)를 사용하면 장애 발생 시 클러스터가 더 빠르게 감지하고 페일오버를 수행하여 서비스 연속성을 높일 수 있음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클러스터웨어는 VIP의 상태를 지속적으로 모니터링&lt;/li&gt;
&lt;li&gt;VIP는 클라이언트에게 고정된 접속 주소를 제공&lt;/li&gt;
&lt;li&gt;노드 장애 시에도 클라이언트는 VIP를 통해 계속해서 데이터베이스에 접속할 수 있음&lt;/li&gt;
&lt;li&gt;PUBLIC IP를 사용하는 경우, 클라이언트는 장애 발생 노드의 IP 주소 변경필요&lt;/li&gt;
&lt;li&gt;SCAN VIP를 사용하면 클라이언트 연결 요청을 클러스터 내의 활성 노드에 분산이 가능하며 RAC 데이터베이스의 성능과 가용성을 향상&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;2.3 오라클 &lt;span&gt;&lt;span&gt;Data Guard (Active Data Guard)&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1047&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAslZx/btsMB5nh21T/rCxgp2LBu8NKjE18sbvE6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAslZx/btsMB5nh21T/rCxgp2LBu8NKjE18sbvE6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAslZx/btsMB5nh21T/rCxgp2LBu8NKjE18sbvE6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAslZx%2FbtsMB5nh21T%2FrCxgp2LBu8NKjE18sbvE6K%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;2010&quot; height=&quot;1047&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1047&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RAC (Real Application Clusters)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-8:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:33&quot;&gt;목적: 서버 이중화 및 서버 HW/SW 장애 대비&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:54&quot;&gt;구조: 모든 노드가 Active-Active 구조로 동일한 작업 수행&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-8:0&quot;&gt;작동 방식: Interconnect를 통해 노드 간 데이터를 공유하고 동기화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Data Guard
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;11:1-18:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:1-11:25&quot;&gt;목적: 디스크 이중화 및 재난 대비&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:1-12:66&quot;&gt;구조: Active-Standby 구조로 운영 시스템에서만 서비스 제공 (일반 Data Guard)&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:1-13:61&quot;&gt;Active Data Guard: Standby 데이터베이스에서 조회 서비스를 제공&lt;/li&gt;
&lt;li data-sourcepos=&quot;14:1-14:65&quot;&gt;작동 방식: Redo 로그 파일을 DR 센터의 Standby 데이터베이스로 전송하여 데이터 동기화&lt;/li&gt;
&lt;li data-sourcepos=&quot;15:1-15:66&quot;&gt;Data Guard Broker: Data Guard 생성, 관리, 모니터링을 중앙에서 관리 가능&lt;/li&gt;
&lt;li data-sourcepos=&quot;16:1-16:56&quot;&gt;Switchover: 개발 또는 테스트 목적으로 주 센터와 DR 센터의 역할 전환&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:1-18:0&quot;&gt;Failover: 주 센터에 장애가 발생했을 때 DR 센터를 주 센터로 전환 (주 센터는 더 이상 사용 불가)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.8449%;&quot;&gt;비교항목&lt;/td&gt;
&lt;td style=&quot;width: 32.5193%;&quot;&gt;RAC (Real Application Clusters)&lt;/td&gt;
&lt;td style=&quot;width: 47.6357%;&quot;&gt;Data Guard (Active Data Guard)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.8449%;&quot;&gt;솔루션 사용 목적&lt;/td&gt;
&lt;td style=&quot;width: 32.5193%;&quot;&gt;서버 이중화 / 서버 HW, SW 장애 대비&lt;/td&gt;
&lt;td style=&quot;width: 47.6357%;&quot;&gt;디스크 이중화 / 재난 대비&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.8449%;&quot;&gt;서비스 수행범위&lt;/td&gt;
&lt;td style=&quot;width: 32.5193%;&quot;&gt;모든 노드 Active - Active 구조로 동일 작업 수행 가능&lt;/td&gt;
&lt;td style=&quot;width: 47.6357%;&quot;&gt;Active-Standby 구조로 운영 시스템에서만 서비스 가능 (일반 DG) &amp;lt;br&amp;gt; Active Data Guard 환경인 경우 Standby Database 조회 서비스 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.8449%;&quot;&gt;데이터 동기화 방식&lt;/td&gt;
&lt;td style=&quot;width: 32.5193%;&quot;&gt;Interconnect를 통한 데이터 블록 공유&lt;/td&gt;
&lt;td style=&quot;width: 47.6357%;&quot;&gt;Redo 로그 파일 전송&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.8449%;&quot;&gt;장애 복구 방식&lt;/td&gt;
&lt;td style=&quot;width: 32.5193%;&quot;&gt;노드 간 Failover&lt;/td&gt;
&lt;td style=&quot;width: 47.6357%;&quot;&gt;DR 센터로 Failover&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.8449%;&quot;&gt;데이터 손실 가능성&lt;/td&gt;
&lt;td style=&quot;width: 32.5193%;&quot;&gt;거의 없음&lt;/td&gt;
&lt;td style=&quot;width: 47.6357%;&quot;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1977&quot; data-origin-height=&quot;1039&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JynCP/btsMC42fHYZ/zaCKXZzxWjpMHxzTyvk4m1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JynCP/btsMC42fHYZ/zaCKXZzxWjpMHxzTyvk4m1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JynCP/btsMC42fHYZ/zaCKXZzxWjpMHxzTyvk4m1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJynCP%2FbtsMC42fHYZ%2FzaCKXZzxWjpMHxzTyvk4m1%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;1977&quot; height=&quot;1039&quot; data-origin-width=&quot;1977&quot; data-origin-height=&quot;1039&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스토리지 원격 복제
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-9:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:65&quot;&gt;복제 방식: 운영 DB의 모든 데이터 파일, 컨트롤 파일, 리두 로그 파일 등을 DR 사이트로 복제&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:53&quot;&gt;데이터 손상 전파: 운영 DB에서 데이터 손상이 발생하면 DR 사이트로도 전파&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-7:57&quot;&gt;네트워크 대역폭 소비: 모든 데이터 변경 사항을 복제하므로 네트워크 대역폭 소비가 많음&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:1-9:0&quot;&gt;DR 사이트 활용: DR 사이트는 단순 복제본 역할만 수행하며, 실시간 쿼리나 백업 등 다른 용도로 활용할 수 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:1-9:0&quot;&gt;Data Guard (Active Data Guard)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;12:1-17:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;12:1-12:77&quot;&gt;복제 방식: 운영 DB의 리두 로그 파일만 DR 사이트로 전송하고, DR 사이트에서 리두 로그를 적용하여 데이터를 동기화&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:1-13:75&quot;&gt;데이터 손상 방지: 운영 DB에서 데이터 손상이 발생해도 DR 사이트에서는 검증 과정을 거쳐 전파될 가능성이 훨씬 적음&lt;/li&gt;
&lt;li data-sourcepos=&quot;14:1-14:73&quot;&gt;네트워크 대역폭 소비: 리두 로그만 전송하므로 네트워크 대역폭 소비가 훨씬 적음 (스토리지 복제 대비 27배 감소)&lt;/li&gt;
&lt;li data-sourcepos=&quot;15:1-15:88&quot;&gt;DR 사이트 활용: DR 사이트에서 실시간 쿼리 (Active Data Guard 옵션 필요), RMAN 백업 등 다양한 용도로 활용&lt;/li&gt;
&lt;li data-sourcepos=&quot;16:1-17:0&quot;&gt;데이터 블록 손상 자동 복구: 운영 시스템에 데이터 블록 손상 시 자동으로 DR 사이트의 정상 블록 전송 후 자동 복구&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;비교 항목&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;스토리지 복제&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Data Guard (Active Data Guard)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;복제 방식&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;모든 데이터 파일 복제&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;리두 로그 파일 전송 및 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;데이터 손상 전파&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;전파됨&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;전파 가능성 낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;네트워크 대역폭 소비&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;많음&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;적음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;DR 사이트 활용&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;제한적&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;다양함 (실시간 쿼리, 백업 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;데이터 블록 손상 복구&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;수동 복&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2025&quot; data-origin-height=&quot;1101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOMsxR/btsMCsvO4F2/q0QSMIyynJSmK7A4HeiF1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOMsxR/btsMCsvO4F2/q0QSMIyynJSmK7A4HeiF1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOMsxR/btsMCsvO4F2/q0QSMIyynJSmK7A4HeiF1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOMsxR%2FbtsMCsvO4F2%2Fq0QSMIyynJSmK7A4HeiF1k%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;2025&quot; height=&quot;1101&quot; data-origin-width=&quot;2025&quot; data-origin-height=&quot;1101&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Active Data Guard 주요 기능
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-8:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:83&quot;&gt;Read Only 작업 부하 분담: Standby 데이터베이스를 Read Only 모드로 열어 읽기 전용 작업 분산 처리&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:74&quot;&gt;Real-time Reporting: Standby 데이터베이스에서 실시간 데이터를 조회하여 보고서 생성&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-8:0&quot;&gt;Fast Incremental Backups: Standby 데이터베이스에서 RMAN의 BCT(Block Change Tracking) 기능을 사용하여 빠른 증분 백업 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;작동 방식
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;11:1-13:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:1-11:102&quot;&gt;Redo 로그 전송 및 적용: Primary 데이터베이스의 Redo 로그(트랜잭션 로그)를 Active Standby 데이터베이스로 전송하고 적용하여 데이터 동기화&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:1-13:0&quot;&gt;Read Only Open 상태 유지: Active Standby 데이터베이스는 Read Only Open 상태를 유지하면서 복구를 지속적으로 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Active Data Guard 장점
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;16:1-19:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;16:1-16:79&quot;&gt;DR 사이트 활용도 향상: Standby 데이터베이스를 단순 복제본이 아닌 다양한 용도로 활용하여 DR 사이트의 활용&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:1-17:86&quot;&gt;Primary 데이터베이스 부하 감소: 읽기 전용 작업을 Standby 데이터베이스로 분산하여 Primary 데이터베이스의 부하 감소&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:1-19:0&quot;&gt;빠른 백업 및 복구: BCT 기능을 사용하여 빠른 증분 백업 및 복구 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;항목&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Active Data Guard&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Data Guard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;라이선스&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;유료&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;무료 (EE 옵션에 포함)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;데이터 복구 중 Standby 조회&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;가능&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;불가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;자동 블록 복구&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;가능&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;불가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;RMAN BCT (Block Change Tracking)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;지원&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Data Guard Rolling Upgrade&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;지원&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;DML redirection&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;지원&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&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;</description>
      <category>Oracle Database/Training</category>
      <author>수상한 김토끼</author>
      <guid isPermaLink="true">https://with-kami.tistory.com/1534873</guid>
      <comments>https://with-kami.tistory.com/1534873#entry1534873comment</comments>
      <pubDate>Thu, 6 Mar 2025 15:24:36 +0900</pubDate>
    </item>
    <item>
      <title>1장. Administration</title>
      <link>https://with-kami.tistory.com/1534872</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Reference Link&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[Oracle Database 19c Administration Database Concepts](&lt;a href=&quot;https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/index.html)&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/index.html)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Oracle Database 19c Reference](&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/index.html)&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/index.html)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1.1 Database and Instance&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle Database Server (Oracle Database) = Database + Database Instance
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Database
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디스크에 위치한 파일 집합&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Database Instance&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SGA (System Global Area) + Background Process&lt;/li&gt;
&lt;li&gt;데이터베이스 파일을 관리하기 위한 메모리 구조의 집합으로 공유 메모리와 프로세스로 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Client Process가 인스턴스에 접속하여 Session이 설정되면 Server Process가 생성됨&lt;/li&gt;
&lt;li&gt;Server Process는 공유하지 않는 개별 세션 메모리인 PGA (Program Global Area)를 보유하고 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;639&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPi1ti/btsMByWQKwW/tMhvY8P3Cb6q12Du3KvmHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPi1ti/btsMByWQKwW/tMhvY8P3Cb6q12Du3KvmHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPi1ti/btsMByWQKwW/tMhvY8P3Cb6q12Du3KvmHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPi1ti%2FbtsMByWQKwW%2FtMhvY8P3Cb6q12Du3KvmHK%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;593&quot; height=&quot;639&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;639&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1.2 Database Storage Structures&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.2.1 물리적인 저장구조&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스 파일 저장 메커니즘
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Automatic Storage Management (ASM)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오라클 데이터베이스를 위해 특별히 설계된 파일 및 볼륨(디스크) 관리 시스템&lt;/li&gt;
&lt;li&gt;고가의 RAID 장비나 타사 OS볼륨관리 및 파일 시스템 관리를 ASM으로 대체 가능&lt;/li&gt;
&lt;li&gt;디스크에 데이터를 분산 기록하여 균일한 성능제공&lt;/li&gt;
&lt;li&gt;오라클 엑사데이터 시스에서 사용됨&lt;/li&gt;
&lt;li&gt;데이터베이스는 데이터 파일, 컨트롤 파일, 온라인 리두 로그 파일 및 기타 유형의 파일을 ASM에 저장 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6WhDw/btsMzYbiiAG/E9zF5VKkxNoggKFehdhwG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6WhDw/btsMzYbiiAG/E9zF5VKkxNoggKFehdhwG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6WhDw/btsMzYbiiAG/E9zF5VKkxNoggKFehdhwG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6WhDw%2FbtsMzYbiiAG%2FE9zF5VKkxNoggKFehdhwG1%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;726&quot; height=&quot;341&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;341&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스 파일
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터파일 (Data Files)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 파일은 데이터베이스의 실제 데이터가 저장되는 물리적인 파일&lt;/li&gt;
&lt;li&gt;데이터베이스의 데이터는 각 테이블스페이스의 데이터 파일 집합 형태로 저장 (테이블스페이스는 하나 이상의 데이터 파일로 구성)&lt;/li&gt;
&lt;li&gt;데이터 파일에는 테이블, 인덱스와 같은 데이터베이스 구조를 포함하는 데이터 딕셔너리가 저장&lt;/li&gt;
&lt;li&gt;v$datafile, v$tempfile 뷰를 사용하여 데이터 파일 정보를 조회&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh9evV/btsMCoMJyMJ/GWjkMKEug0iUUkyJuPJkW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh9evV/btsMCoMJyMJ/GWjkMKEug0iUUkyJuPJkW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh9evV/btsMCoMJyMJ/GWjkMKEug0iUUkyJuPJkW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh9evV%2FbtsMCoMJyMJ%2FGWjkMKEug0iUUkyJuPJkW1%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;524&quot; height=&quot;402&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: none;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컨트롤 파일 (Control Files)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스의 물리적 구조를 저장하는 파일&lt;/li&gt;
&lt;li&gt;데이터베이스 이름, 데이터베이스 ID, 데이터 파일, 리두 로그 및 아카이브 파일 정보, 현재 로그 번호, 체크포인트 정보 등을 포함&lt;/li&gt;
&lt;li&gt;바이너리 파일이며, CREATE CONTROLFILE 명령어로 생성가능&lt;/li&gt;
&lt;li&gt;ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/home/oracle/trace_cf.txt'; 명령어를 사용하여 텍스트 파일로 변환하여 내용 확인가능&lt;/li&gt;
&lt;li&gt;v$controlfile 뷰를 사용하여 컨트롤 파일 정보를 조회&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;리두로그 파일 (Redo Log Files)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스에서 발생한 모든 변경 작업을 기록하는 파일&lt;/li&gt;
&lt;li&gt;데이터 복구에 사용&lt;/li&gt;
&lt;li&gt;v$log, v$logfile 뷰를 사용하여 조회&lt;/li&gt;
&lt;li&gt;장애 대비를 위해 리두 로그 파일은 다중으로 관리됨
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리두로그 그룹 : 온라인 리두로그 파일과 복사본으로 구성&lt;/li&gt;
&lt;li&gt;멤버 : 리두로그 파일 및 복사본 파일&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSwkH6/btsMB24desD/XIKAaQkmmXXyMlmw4fpXf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSwkH6/btsMB24desD/XIKAaQkmmXXyMlmw4fpXf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSwkH6/btsMB24desD/XIKAaQkmmXXyMlmw4fpXf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSwkH6%2FbtsMB24desD%2FXIKAaQkmmXXyMlmw4fpXf0%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;500&quot; height=&quot;362&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;362&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리두로그 스위치 (redo log switch)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:42&quot;&gt;리두 로그 파일이 가득 차면 다음 리두 로그 파일로 전환&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:48&quot;&gt;리두 로그 스위치가 발생하면 체크포인트(Checkpoint) 프로세스가 시작됨&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-8:0&quot;&gt;체크포인트 프로세스가 시작되면 DBWR 프로세스는 데이터베이스 버퍼 캐시에 있는 변경된 데이터 블록들을 데이터 파일에 기록&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DBWR (DataBase WRiter)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오라클 데이터베이스의 백그라운드 프로세스 중 하나&lt;/li&gt;
&lt;li&gt;데이터베이스 버퍼 캐시(Database Buffer Cache)에서 변경된 데이터 블록을 데이터 파일(Datafile)에 기록하는 역할&lt;/li&gt;
&lt;li&gt;체크포인트(Checkpoint)가 발생하면 DBWR은 변경된 데이터 블록을 디스크에 기록하여 데이터 파일과 메모리 간의 동기화를 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;오라클 데이터베이스에서 일반적으로 권장되는 리두로그 파일 개수는 5개로 1개당 1Gb 정도로 설정 (5개 정도를 유지하면 리두로그 스위치가 자주 발생하더라도 충분한 공간을 확보하여 데이터베이스 성능저하를 방지할 수 있음, 리두로그 스위치 발생 시 다음 리두로그의 CheckPoint 프로세스가 종료되지 않은 상태가 되면 시스템전체가 멈추기 때문에 순환이 되기 전에 CheckPoint가 다 끝나도록 튜닝필요)&lt;/li&gt;
&lt;li&gt;리두로그 파일 크기는 트랜잭션 처리량과 복구 요구사항에 따라 조정될 수 있으나 최근에는 1Gb 정도를 설정하는 것이 일반적 (리두로그 파일의 크기가 너무 작으면 리두 로그 스위치가 자주 발생하여 데이터베이스 성능이 저하될 수 있으며, 너무 크면 복구 시간이 오래 걸릴 수 있음)&lt;/li&gt;
&lt;li&gt;RAC (Real Application Clusters) 환경에서의 데이터 파일 및 리두 로그 파일 관리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 파일 (Data Files)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;6:5-6:119&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;6:5-6:119&quot;&gt;RAC 환경에서는 여러 인스턴스가 하나의 데이터베이스를 공유함으로&amp;nbsp;데이터 파일은 모든 인스턴스에서 공유됨 (즉, 모든 인스턴스가 동일한 데이터 파일에 접근하여 데이터를 읽고 쓸 수 있음)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:5-6:119&quot;&gt;리두 로그 파일 (Redo Log Files)
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;8:5-11:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;8:5-8:78&quot;&gt;각 RAC 인스턴스는 자체적인 리두 로그 파일을 가지고 있으며 이는 각 인스턴스에서 발생하는 변경 사항을 별도로 기록하기 위함&lt;/li&gt;
&lt;li data-sourcepos=&quot;9:5-9:107&quot;&gt;따라서 각 인스턴스별로 고유한 리두 로그 파일이 존재하며, 이 파일들은 공유 저장소에 저장되어야 함&amp;nbsp; (인스턴스 복구 시 다른 인스턴스에서 접근할 수 있도록 하기 위함)&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:5-11:0&quot;&gt;리두 로그 그룹을 공유하고, redo log file에 쓰는 것은 개별적으로 기록됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:5-11:0&quot;&gt;RAC 환경에서의 데이터 안정성 확보
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;14:1-17:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;14:1-14:100&quot;&gt;리두 로그 스위치 발생 시 체크포인트 발생과 함께 DBWR(Database Writer)를 통해 기록하여 데이터 안정성을 확보하는 과정은 RAC 환경에서도 동일하게 적용됨&lt;/li&gt;
&lt;li data-sourcepos=&quot;15:1-15:81&quot;&gt;다만, RAC 환경에서는 여러 인스턴스가 동시에 데이터를 변경할 수 있으므로, 데이터의 일관성을 유지하기 위한 추가적인 메커니즘이 필요하며&amp;nbsp;Cache Fusion 기능을 통해 블록의 일관성을 유지함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.2.2 논리적인 저장구조&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;227&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lxfnw/btsMBSHP5OC/AXpPvWkcCUCsqOVgOAlqPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lxfnw/btsMBSHP5OC/AXpPvWkcCUCsqOVgOAlqPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lxfnw/btsMBSHP5OC/AXpPvWkcCUCsqOVgOAlqPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flxfnw%2FbtsMBSHP5OC%2FAXpPvWkcCUCsqOVgOAlqPK%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;227&quot; height=&quot;263&quot; data-origin-width=&quot;227&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 블록 (Data Block) - 벽돌 한 장
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스 I/O의 최소 단위 (데이터베이스에서 데이터를 읽거나 쓸 때 가장 작은 단위)&lt;/li&gt;
&lt;li&gt;데이터 블록은 OS 블록으로 구성&lt;/li&gt;
&lt;li&gt;데이터베이스가 생성될 때 데이터베이스의 블록 크기를 설정 (DB_BLOCK_SIZE)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;익스텐트 (Extents) - 벽돌 (데이터 블록) 여러 장을 붙여 만든 작은 벽
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;논리적으로 연속된 데이터 블록 집합 (여러 개의 데이터 블록이 연속적으로 모여서 하나의 익스텐트를 구성)&lt;/li&gt;
&lt;li&gt;익스텐트는 항상 하나의 데이터 파일에 포함&lt;/li&gt;
&lt;li&gt;익스텐트는 세그먼트에 공간을 할당하기 위한 단위&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;세그먼트 (Segements) - 여러 개의 작은 벽 (익스텐트)을 쌓아 만든 건물 (테이블, 인덱스)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테이블 스페이스 내의 논리적 저장 구조 (테이블 스페이스 안에 데이터를 저장하는 논리적인 공간)&lt;/li&gt;
&lt;li&gt;테이블/인덱스와 같은 Schema Object에 할당된 익스텐트의 집합 (테이블, 인덱스, LOB와 같은 데이터베이스 객체들이 사용하는 익스텐트들의 모음)&lt;/li&gt;
&lt;li&gt;하나 이상의 데이터 파일을 가질 수 있음 (세그먼트는 하나 또는 여러 개의 데이터 파일에 걸쳐서 존재할 수 있음)&lt;/li&gt;
&lt;li&gt;반드시 하나의 테이블 스페이스 안에 속함&lt;/li&gt;
&lt;li&gt;LOB (Large OBject) 데이터는 별도 세그먼트에 저장 (큰 용량의 LOB 데이터는 일반적으로 테이블 데이터와 분리되어 별도의 세그먼트에 저장됨)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddM3bM/btsMCsPlWqe/ohzKbgk3yZ3mfgRagaYfnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddM3bM/btsMCsPlWqe/ohzKbgk3yZ3mfgRagaYfnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddM3bM/btsMCsPlWqe/ohzKbgk3yZ3mfgRagaYfnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddM3bM%2FbtsMCsPlWqe%2FohzKbgk3yZ3mfgRagaYfnK%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;455&quot; height=&quot;321&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;321&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테이블 스페이스 (TableSpaces)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;하나 이상의 세그먼트로 구성 (테이블스페이스는 여러 개의 세그먼트를 포함하는 논리적인 저장공간)&lt;/li&gt;
&lt;li&gt;데이터베이스는 테이블스페이스라는 논리적 저장 단위를 사용하여 데이터를 관리&lt;/li&gt;
&lt;li&gt;테이블스페이스는 실제 데이터를 하나 이상의 데이터파일 또는 임시파일에 저장&lt;/li&gt;
&lt;li&gt;각 데이터베이스 사용자는 기본 영구 테이블스페이스 (Permanent Tablespace) 데이터베이스를 할당받음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SYSTEM
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SYS 사용자 소유 (오라클 데이터베이스 시스템의 핵심 구성 요소)&lt;/li&gt;
&lt;li&gt;Data Dictionary (데이터베이스의 관리 정보 : 테이블, 뷰, 트리거, 프로시저, 패키지 등)를 저장&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;데이터베이스에 대한 관리 정보가 포함된 테이블 및 뷰&lt;/li&gt;
&lt;li&gt;트리거, 프로시저, 패키지 등의 컴파일된 저장 객체&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;nbsp;SYSAUX
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SYSTEM 테이블스페이스의 보조 테이블스페이스 (SYSTEM 테이블 스페이스의 부담을 줄이기 위해 보조적인 역할을 수행)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UNDO
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행 취소 데이터 저장 (트랜잭션의 실행취소 데이터를 저장)&lt;/li&gt;
&lt;li&gt;인스턴스당 한 개 (오라클 데이터베이스 인스턴스마다 하나의 UNDO 테이블스페이스를 가짐)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8JVoP/btsMC0SufMQ/UGgkldMbRoCxhWLjSJVgk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8JVoP/btsMC0SufMQ/UGgkldMbRoCxhWLjSJVgk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8JVoP/btsMC0SufMQ/UGgkldMbRoCxhWLjSJVgk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8JVoP%2FbtsMC0SufMQ%2FUGgkldMbRoCxhWLjSJVgk1%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;600&quot; height=&quot;338&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1.3 Oracle Instance Architecture&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.3.1 데이터베이스 인스턴스&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스 인스턴스 식별
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle Base Directory : 오라클 데이터베이스 설치 소유자의 Home 디렉터리로 SW와 구성 파일 저장 위치&lt;/li&gt;
&lt;li&gt;Oracle Home Directory : 오라클 데이터베이스 SW 홈 디렉터리로 Oracle Base 하위 디렉토리&lt;/li&gt;
&lt;li&gt;Oracle System Identifier(SID) : Host의 오라클 데이터베이스 인스턴스에 대한 고유 이름&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;인스턴스 및 데이터베이스 시작 순서&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KoUlI/btsMAscojUQ/roxWkKeYSvahwQCpa6bpR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KoUlI/btsMAscojUQ/roxWkKeYSvahwQCpa6bpR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KoUlI/btsMAscojUQ/roxWkKeYSvahwQCpa6bpR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKoUlI%2FbtsMAscojUQ%2FroxWkKeYSvahwQCpa6bpR0%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;434&quot; height=&quot;272&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Initialization Parameter Files (초기화 파라미터 파일)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오라클 메모리/인스턴스 설정 (오라클 데이터베이스의 메모리 구조와 인스턴스 설정을 정의하는 파일)&lt;/li&gt;
&lt;li&gt;데이터베이스 시작 시 읽기 (데이터베이스가 시작될 때 가장 먼저 읽는 파일)&lt;/li&gt;
&lt;li&gt;파일 종류
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;spfile (binary) : 바이너리 형식의 파일로, RAC (Real Application Clusters)와 같이 여러 노드에서 사용하는 경우에 적합&lt;/li&gt;
&lt;li&gt;pfile (text) : 텍스트 형식의 파일로, 사람이 직접 편집할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;파라미터 변경 확인 [Database&amp;nbsp;Reference](&lt;a href=&quot;https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/index.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/index.html&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;v$parameter 뷰를 사용하여 현재 설정된 파라미터 값 확인&lt;/li&gt;
&lt;li&gt;파일 변환
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CREATE pfile='initorcl.ora' FROM spfile='spfileorcl.ora'; 와 같은 명령를 사용하여 spfile을 pfile로 변환하거나 그 반대로 변환 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;파라미터 변경
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ALTER SYSTEM SET undo_retention=10800 scope=memory; 와 같은 명령어를 사용하여 파라미터 값을 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;SCOPE
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MEMORY : 현재 인스턴스에 즉시 반영&lt;/li&gt;
&lt;li&gt;SPFILE : spfile에만 반영&lt;/li&gt;
&lt;li&gt;BOTH : spfile과 현재 인스턴스 모두에 반영 (기본값)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;파라미터 종류
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;static parameter : 데이터베이스 재시작 후 적용&lt;/li&gt;
&lt;li&gt;dynamic parameter : 데이터베이스 재시작 없이 즉시 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Alter Log (알터 로그)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스 문제 발생 시 가장 먼저 확인해야 하는 로그 파일&lt;/li&gt;
&lt;li&gt;위치 : $ORACLE_BASE/diag/rdbms/*db_name*/*sid*/trace/alter_*sid*. log&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Trace Files (트레이스 파일)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버 프로세스와 백그라운드 프로세스에 관련된 정보를 기록하는 파일&lt;/li&gt;
&lt;li&gt;ADR (Automatic Diagnostic Repository) : 오라클 지원 서비스 (SR) 처리를 원활하게 하기 위해 도입된 진단 저장소&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.3.2 메모리 아키텍처&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오라클 데이터 베이스 기본 메모리 구조&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/erZNci/btsMAHmXYB7/ZKM9JQB0cbS8HkyycADEuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/erZNci/btsMAHmXYB7/ZKM9JQB0cbS8HkyycADEuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/erZNci/btsMAHmXYB7/ZKM9JQB0cbS8HkyycADEuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FerZNci%2FbtsMAHmXYB7%2FZKM9JQB0cbS8HkyycADEuK%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;581&quot; height=&quot;596&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UGS (User Global Area)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UGA는 사용자 세션에 대한 정보를 저장하는 중요한 메모리 영역&lt;/li&gt;
&lt;li&gt;PL/SQL 패키지 변수 보관 : 세션이 PL/SQL 패키지를 메모리에 로드하면 UGA는 패키지 변수의 값을 보관&lt;/li&gt;
&lt;li&gt;Session variables (세션 변수)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로그인 정보와 데이터베이스 세션에 필요한 기타 정보 (세션 상태 포함)에 할당된 메모리를 의미&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OLAP Pool
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 블록과 동일한 OLAP 데이터 페이지 관리&lt;/li&gt;
&lt;li&gt;사용자가 dimensional object (예: 큐브)를 쿼리 할 때 OLAP 세션이 자동으로 열림&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;203&quot; data-origin-height=&quot;153&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oAWww/btsMALv5lHE/RDUFbQYsKlSef0HkMoXhp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oAWww/btsMALv5lHE/RDUFbQYsKlSef0HkMoXhp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oAWww/btsMALv5lHE/RDUFbQYsKlSef0HkMoXhp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoAWww%2FbtsMALv5lHE%2FRDUFbQYsKlSef0HkMoXhp1%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;203&quot; height=&quot;153&quot; data-origin-width=&quot;203&quot; data-origin-height=&quot;153&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Shared Server vs Dedicated Server
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SHARED_SERVERS 파라미터를 통해 Shared Server 모드 사용 여부 결정&lt;/li&gt;
&lt;li&gt;Shared Server (공유 서버 / 사용자 수가 많고 자원 효율성이 중요한 환경에 적합)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 사용자가 서버 프로세스를 공유하는 환경 (다대다 연결)&lt;/li&gt;
&lt;li&gt;세션 정보 공유를 위해 UGA가 SGA (System Global Area)에 존재&lt;/li&gt;
&lt;li&gt;Dispacher (디스패처)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DISPATCHER 파라미터를 통해 디스패처 프로세스의 개수와 설정 조정&lt;/li&gt;
&lt;li&gt;사용자 프로세스와 공유 서버 프로세스 사이에 네트워크 연결을 중재&lt;/li&gt;
&lt;li&gt;사용자 요청을 SGA (System Global Area)의 요청 큐 (request queue)에 전달&lt;/li&gt;
&lt;li&gt;공유 서버 프로세스가 처리한 결과를 SGA의 응답 큐 (reqponse queue)에서 가져와 사용자에게 전달&lt;/li&gt;
&lt;li&gt;디스패처에 프로세스에 문제가 발생하면 모든 사용자에게 영향&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dedicated Server (전용 서버 / 사용자 수가 적고 성능이 중요한 환경에 적합)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 사용자 프로세스마다 전용 서버 프로세스가 할당되어 처리&lt;/li&gt;
&lt;li&gt;UGA가 PGA (Program Global Area)에 존재&lt;/li&gt;
&lt;li&gt;동시 사용자 수가 증가하면 서버 프로세스 수도 증가하여 시스템 자원을 많이 소모하며 사용자 수가 적을 때에는 자원 낭비가 발생할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PGA (Program Global Area)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PGA는 시스템의 다른 프로세스와 공유되지 않는 메모리 영역&lt;/li&gt;
&lt;li&gt;전용 또는 공유 서버 프로세스에 필요한 세션 종속 변수를 포함&lt;/li&gt;
&lt;li&gt;서버 프로세스는 PGA에서 필요한 메모리 구조를 할당&lt;/li&gt;
&lt;li&gt;PGA 구성 요소
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Private SQL Area
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구문 분석된 SQL문과 처리를 위한 기타 세션별 정보를 보관&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;SQL Work Area
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메모리 집약적 작업 (정열, 해시 조인, 비트맵 인덱스에서 검색된 데이터 병합 등)에 사용되는 PGA 메모리의 전용 메모리&lt;/li&gt;
&lt;li&gt;정렬 작업 중에 메모리가 부족하면 Temp (임시 공간) 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DPgfQ/btsMBECY2Bg/NLU9o668mt0CAMUiAh4M60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DPgfQ/btsMBECY2Bg/NLU9o668mt0CAMUiAh4M60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DPgfQ/btsMBECY2Bg/NLU9o668mt0CAMUiAh4M60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDPgfQ%2FbtsMBECY2Bg%2FNLU9o668mt0CAMUiAh4M60%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;503&quot; height=&quot;122&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;122&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SGA (System Global Area)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오라클 데이터베이스 인스턴스에서 읽기/쓰기 메모리 영역으로, 모든 서버 프로세스와 백그라운드 프로세스가 공유&lt;/li&gt;
&lt;li&gt;데이터베이스 인스턴스가 시작될 때 SGA에 대한 메모리가 자동으로 할당되고, 인스턴스가 종료될 때 메모리가 회수됨&lt;/li&gt;
&lt;li&gt;서버 프로세스와 백그라운드 프로세스는 SGA가 아닌 별도의 메모리 공간에 존재&lt;/li&gt;
&lt;li&gt;SGA 구성요소
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Buffer Cache
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 파일에서 읽은 데이터 블록의 사본을 저장하는 메모리 영역&lt;/li&gt;
&lt;li&gt;데이터베이스 캐시에서 데이터 블록을 업데이트하고, 리두 로그 버퍼의 변경 사항에 대한 메타데이터를 저장&lt;/li&gt;
&lt;li&gt;커밋 후에도 데이터 블록을 데이터 파일에 즉시 쓰지 않고, 데이터베이스 Writer (DBWR) 프로세스가 백그라운드에서 분산하여 기록&lt;/li&gt;
&lt;li&gt;LRU (Least Recently Used) 알고리즘을 기반으로 자주 액세스되는 블록을 버퍼 캐시에 보관하고, 그렇지 않은 블록을 디스크에 기록&lt;/li&gt;
&lt;li&gt;표준 블록 크기 외에도 다른 크기의 테이블스페이스를 생성할 수 있으며, 각 블록 크리별로 자체 풀을 생성할 수 있음 (Multi block 사용 가능 : 2k, 4k, 8k(기본값), 16k)&lt;/li&gt;
&lt;li&gt;keep pool : 자주 액세스되지만 기본 풀에서 오래된 블록을 보관&lt;/li&gt;
&lt;li&gt;recycle pool : 드물게 사용되는 블록으로, 가장 먼저 메모리에서 제거됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Redo Log Buffer&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SGA 내의 순환 버퍼로, 데이터베이스 변경 사항인 리두 엔트리를 저장&lt;/li&gt;
&lt;li&gt;데이터베이스 프로세스는 사용자 메모리 공간 (UGA)에서 SGA의 리두 로그 버퍼로 리두 엔트리를 복사&lt;/li&gt;
&lt;li&gt;로그 Writer (LGWR) 프로세스는 리두 로그 버퍼를 디스크의 온라인 리두 로그 파일에 순차적으로 기록&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Shared Pool
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다양한 유형의 프로그램 데이터를 캐시&lt;/li&gt;
&lt;li&gt;구문 분석된 SQL, PL/SQL 코드, 시스템 매개변수 및 데이터 사전 정보를 저장&lt;/li&gt;
&lt;li&gt;Library Cache : 실행 가능한 SQL, PL/SQL 코드를 저장
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SQL 문이 실행되면 데이터베이스는 이전에 실행된 코드를 재사용하려고 시도함&lt;/li&gt;
&lt;li&gt;구분 분석된 SQL이 라이브러리 캐시에 존재하면 Soft Parse라고 하여 재사용 가능하지만, 그렇지 않으면 SQL구문을 새롭게 빌드하는데 이를 Hard Parse라고 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Data Dictionary Cache : 데이터베이스, 데이터베이스 구조, 사용자에 대한 참조 정보 (권한)를 포함하는 데이터베이스 테이블과 뷰의 모음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SQL 구문 분석을 위해 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Server Result Cache : 공유 풀 내의 메모리 풀로, 버퍼 풀과 달리 데이터 블록이 아닌 결과 세트를 보관
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트 결과 캐시는 데이터베이스 메모리가 아닌 클라이언트 메모리에 위치함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Large Pool
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공유 풀보다 더 큰 메모리 할당을 위한 메모리 영역&lt;/li&gt;
&lt;li&gt;공유 서버 (shard server) 및 XA 인터페이스용 UGA (세션을 풀로 공유하여 사용하기 위한 용도 - 미들웨어의 역할)&lt;/li&gt;
&lt;li&gt;병렬 실행에서 사용되는 메시지 버퍼&lt;/li&gt;
&lt;li&gt;Recovery Manager (RMAN) I/O 슬레이브용 버퍼&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Java Pool
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Java Virtual Maching (JVM) 내의 모든 세션별 Java 코드와 데이터를 저장하는 메모리 영역&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.3.3 프로세스 아키텍처&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Mandatory Background Processes (필수 백그라운드 프로세스)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PMON (Process Monitor Process) 그룹
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;6:5-6:46&quot;&gt;버퍼 캐시 정리 및 종료된 클라이언트 프로세스가 점유한 리소스 해제 감독&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:5-7:32&quot;&gt;PMON: 다른 백그라운드 프로세스의 종료 감시&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:5-8:74&quot;&gt;CLMN (Cleanup Main Process): 종료된 프로세스, 세션, 트랜잭션, 네트워크 연결 등을 주기적으로 정리&lt;/li&gt;
&lt;li data-sourcepos=&quot;9:5-9:58&quot;&gt;CLnn (Cleanup Helper Processes): 종료된 프로세스 및 세션 정리 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;10:1-11:62&quot;&gt;&lt;b&gt;PMAN (Process Manager)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;11:5-11:62&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;11:5-11:62&quot;&gt;공유 서버, 풀 서버, 작업 대기열 프로세스를 포함한 여러 백그라운드 프로세스 모니터링 및 생성/중지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:1-14:34&quot;&gt;&lt;b&gt;LREG (Listener Registration Process)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;13:5-14:34&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;13:5-13:57&quot;&gt;데이터베이스 인스턴스 및 디스패처 프로세스 정보를 Oracle Net Listener에 등록&lt;/li&gt;
&lt;li data-sourcepos=&quot;14:5-14:34&quot;&gt;12c 이전 버전에서는 PMON이 리스너 등록 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;15:1-20:51&quot;&gt;&lt;b&gt;SMON (System Monitor Process)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;16:5-20:51&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;16:5-16:21&quot;&gt;시스템 수준 정리 작업 담당&lt;/li&gt;
&lt;li data-sourcepos=&quot;17:5-17:26&quot;&gt;인스턴스 시작 시 인스턴스 복구 수행&lt;/li&gt;
&lt;li data-sourcepos=&quot;18:5-18:46&quot;&gt;파일 읽기 또는 테이블스페이스 오프라인 오류로 인해 종료된 트랜잭션 복구&lt;/li&gt;
&lt;li data-sourcepos=&quot;19:5-19:24&quot;&gt;사용되지 않는 임시 세그먼트 정리&lt;/li&gt;
&lt;li data-sourcepos=&quot;20:5-20:51&quot;&gt;Dictionary-managed 테이블스페이스 내에서 인접한 여유 익스텐트 통합&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;21:1-25:40&quot;&gt;&lt;b&gt;DBW (Database Writer Process)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;22:5-25:40&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;22:5-22:35&quot;&gt;데이터베이스 버퍼 캐시의 수정된 버퍼를 디스크에 기록&lt;/li&gt;
&lt;li data-sourcepos=&quot;23:5-23:27&quot;&gt;비동기적으로 더티 버퍼를 디스크에 기록&lt;/li&gt;
&lt;li data-sourcepos=&quot;24:5-24:23&quot;&gt;체크포인트 발생 시 디스크 기록&lt;/li&gt;
&lt;li data-sourcepos=&quot;25:5-25:40&quot;&gt;오라클 권장 DBWR 프로세스 개수: CPU_COUNT / 8&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;26:1-30:98&quot;&gt;&lt;b&gt;LGWR (Log Writer Process)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;27:5-30:98&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;27:5-27:33&quot;&gt;리두 로그 버퍼의 일부를 온라인 리두 로그에 기록&lt;/li&gt;
&lt;li data-sourcepos=&quot;28:5-28:23&quot;&gt;리두 로그 스위치 발생 시 기록&lt;/li&gt;
&lt;li data-sourcepos=&quot;29:5-29:117&quot;&gt;사용자 COMMIT 실행 시 트랜잭션에 SCN(System Change Number) 할당, LGWR은 커밋 레코드를 리두 로그 버퍼에 넣고 커밋 SCN과 트랜잭션의 리두 엔트리를 즉시 디스크에 기록&lt;/li&gt;
&lt;li data-sourcepos=&quot;30:5-30:98&quot;&gt;LGWR은 트랜잭션 커밋 전에 리두 로그 엔트리를 디스크에 쓸 수 있음, 다만 리두 엔트리로 보호되는 변경 사항은 트랜잭션이 나중에 커밋되는 경우에만 영구적으로 유지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;31:1-37:0&quot;&gt;&lt;b&gt;CKPT (Checkpoint Process)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;32:5-37:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;32:5-32:66&quot;&gt;체크포인트 정보로 컨트롤 파일과 데이터 파일 헤더를 업데이트하고 DBW에 블록을 디스크에 쓰도록 신호를 보냄&lt;/li&gt;
&lt;li data-sourcepos=&quot;33:5-33:48&quot;&gt;체크포인트 정보에는 체크포인트 위치, SCN, 온라인 리두 로그 위치가 포함&lt;/li&gt;
&lt;li data-sourcepos=&quot;34:5-34:26&quot;&gt;리두 로그 스위치 시 체크포인트 발생&lt;/li&gt;
&lt;li data-sourcepos=&quot;35:5-35:26&quot;&gt;테이블스페이스 오프라인 및 백업 시작&lt;/li&gt;
&lt;li data-sourcepos=&quot;36:5-37:0&quot;&gt;데이터베이스 정상 종료 시 체크포인트 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;371&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Eqx3P/btsMALCOpA3/5LkIktnHZXoOUnWUNCs5Rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Eqx3P/btsMALCOpA3/5LkIktnHZXoOUnWUNCs5Rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Eqx3P/btsMALCOpA3/5LkIktnHZXoOUnWUNCs5Rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEqx3P%2FbtsMALCOpA3%2F5LkIktnHZXoOUnWUNCs5Rk%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;281&quot; height=&quot;371&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;371&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Optional Background Processes (선택적 백그라운드 프로세스)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-8:64&quot;&gt;&lt;b&gt;ARCn (Archiver Processes)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;6:5-8:64&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;6:5-6:51&quot;&gt;리두 로그 스위치 발생 후 온라인 리두 로그 파일을 오프라인 저장소로 복사&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:5-7:44&quot;&gt;아카이브 로그 모드(archive log mode)에서 활성화&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:5-8:64&quot;&gt;온라인 리두 로그 파일이 재사용되기 전에 아카이브 로그 파일로 백업하여 데이터 복구 능력을 향상&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;9:1-12:56&quot;&gt;&lt;b&gt;CJQ0 and Jnnn (Job Queue Processes)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;10:5-12:56&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;10:5-10:37&quot;&gt;배치 모드로 사용자 작업(user job)을 실행&lt;/li&gt;
&lt;li data-sourcepos=&quot;11:5-11:27&quot;&gt;예약된 사용자 정의 작업을 처리&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:5-12:56&quot;&gt;CJQ0 프로세스는 작업 스케줄링을 관리하고, Jnnn 프로세스는 실제 작업을 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;13:1-16:0&quot;&gt;&lt;b&gt;FBDA (Flashback Data Archive Process)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;14:5-16:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;14:5-14:140&quot;&gt;추적된 테이블(tracked table)에 DML(Data Manipulation Language)을 포함하는 트랜잭션이 커밋되면, 변경된 행의 이전 이미지를 플래시백 데이터 아카이브(flashback data archive)에 저장&lt;/li&gt;
&lt;li data-sourcepos=&quot;15:5-16:0&quot;&gt;플래시백 데이터 아카이브를 통해 과거 특정 시점의 데이터를 복구가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.3.2 Oracle&amp;nbsp;Net&amp;nbsp;Service&amp;nbsp;Architecture&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt; Oracle Net Listener&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;5:1-9:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;5:1-5:75&quot;&gt;클라이언트 연결 요청 수신: 클라이언트의 데이터베이스 연결 요청을 수신하고 데이터베이스로 트래픽을 관리하는 서버 측 프로세스&lt;/li&gt;
&lt;li data-sourcepos=&quot;6:1-6:96&quot;&gt;서비스 이름 (Service Name): 클라이언트 연결에 사용되는 서비스의 논리적 표현 (리스너로 알려진 서비스는 하나 이상의 데이터베이스 인스턴스를 식별)&lt;/li&gt;
&lt;li data-sourcepos=&quot;7:1-7:115&quot;&gt;서비스 등록 (Service Registration): LREG 프로세스가 리스너에 인스턴스 정보를 동적으로 등록 (서비스 등록은 동적이므로 listener.ora 파일에 구성이 필요하지 않음)&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:1-9:0&quot;&gt;tnsping: TCP/IP의 ping 유틸리티와 동일한 Oracle Net 유틸리티로, 네트워크 경로가 유효한지 신속하게 확인할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;8:1-9:0&quot;&gt;&lt;b&gt;Security (보안)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;12:1-13:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;12:1-13:0&quot;&gt;역할 (ROLE): 권한의 모음 (역할을 통해 사용자에게 필요한 권한을 효율적으로 관리)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;12:1-13:0&quot;&gt;&lt;b&gt;Concurrency (동시성)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;16:1-17:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;16:1-17:0&quot;&gt;ROW 단위 LOCK: 오라클은 데이터의 동시성 관리를 위해 ROW 단위로 LOCK을 제공 (이를 통해 여러 사용자가 동시에 데이터에 접근하고 수정할 때 데이터 무결성을 유지)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-sourcepos=&quot;16:1-17:0&quot;&gt;&lt;b&gt;UNDO&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-sourcepos=&quot;20:1-22:0&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sourcepos=&quot;20:1-20:108&quot;&gt;UNDO 데이터 사용: 오라클 데이터베이스는 트랜잭션 롤백, 데이터베이스 복구, 읽기 일관성 제공, Oracle Flashback Query 기능 활성화를 위해 UNDO 데이터를 사용&lt;/li&gt;
&lt;li data-sourcepos=&quot;21:1-22:0&quot;&gt;UNDO_RETENTION: 일관성 읽기를 위해 제공되는 UNDO 데이터의 보유 기간 (기본값은 900초(15분)이며, 10800초 정도로 수정하여 사용함)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Oracle Database/Training</category>
      <category>19c</category>
      <category>dba</category>
      <category>oracle</category>
      <author>수상한 김토끼</author>
      <guid isPermaLink="true">https://with-kami.tistory.com/1534872</guid>
      <comments>https://with-kami.tistory.com/1534872#entry1534872comment</comments>
      <pubDate>Wed, 5 Mar 2025 15:45:22 +0900</pubDate>
    </item>
    <item>
      <title>12장. 프로그래밍 방식의 Hello Coherence 예제</title>
      <link>https://with-kami.tistory.com/1534871</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;수상한 김토끼&amp;rsquo; 입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 장에서는 Coherence를 IMDG로 사용할때 개발 및 테스트 단계에서 활용해 볼 수 있는 Eclipse 기반의 IMDG 테스트를 진행 해 보았습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Coherence는 서버에 설치형으로 사용하는 제품이지만 단순 테스트나 기능확인등을 위해서 coherence.jar 파일만 추가하여 사용할 수있는 방법이 있어 그 내용을 기록 해 보았습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번장 진행에 참고한 Coherence Github 문서입니다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/oracle/coherence&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/oracle/coherence&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740620448397&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - oracle/coherence: Oracle Coherence Community Edition&quot; data-og-description=&quot;Oracle Coherence Community Edition. Contribute to oracle/coherence development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/oracle/coherence&quot; data-og-url=&quot;https://github.com/oracle/coherence&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/crQgFX/hyYndrPpab/dgllP5727ebJc6ATfT3Hhk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/nYHPw/hyYjmD4GEe/tQYIsB9PPUuYl5KAlADFkK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/oracle/coherence&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/oracle/coherence&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/crQgFX/hyYndrPpab/dgllP5727ebJc6ATfT3Hhk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/nYHPw/hyYjmD4GEe/tQYIsB9PPUuYl5KAlADFkK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - oracle/coherence: Oracle Coherence Community Edition&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Oracle Coherence Community Edition. Contribute to oracle/coherence development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-size: 1.44em; letter-spacing: -1px; background-color: #ffffff;&quot;&gt;프로그래밍 방식의 Hello Coherence 예제&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Eclipse에 Java 프로젝트를 생성한 후 &lt;b&gt;저장소가 활성화된&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Coherence 서버를 구성하여 간단한 Coherence 애플리케이션을 실행할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Coherence를 적용하기 위해서 필요한 단계는 Coherence.jar 파일을 클래스패스에 추가해 주는 과정 뿐이며&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이를 손쉽게 사용하기 위해 Maven 프로젝트로 진행하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;실행환경은 Github문서에 명시 된 대로 Java 17버전에 Maven 3.9 버전을 사용하였습니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #1f2328; text-align: start;&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Hello Coherence 프로젝트 생성&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-size: 16px; letter-spacing: 0px;&quot;&gt;1. 이클립스에서 maven-archetype-quickstart와 같은 아키타입을 사용하거나 일반 maven 프로젝트를 만듭니다.&lt;/span&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RK6Od/btsMx4uLdgI/CIIQxmHTXVKBTzPps3lRk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RK6Od/btsMx4uLdgI/CIIQxmHTXVKBTzPps3lRk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RK6Od/btsMx4uLdgI/CIIQxmHTXVKBTzPps3lRk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRK6Od%2FbtsMx4uLdgI%2FCIIQxmHTXVKBTzPps3lRk0%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;343&quot; height=&quot;326&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;326&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;2. Coherence.jar 파일을 추가하기 위해 pom.xml 다음 항목을 추가하여 jar 파일을 다운로드 받습니다.&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;pre id=&quot;code_1740621715193&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;com.oracle.coherence.ce&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;coherence&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;22.06.10&amp;lt;/version&amp;gt;
    &amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가 된 pom.xml 파일입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740621387174&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt;
  &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;

  &amp;lt;groupId&amp;gt;com.oracle.coherence&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;HelloCoherence&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;

  &amp;lt;name&amp;gt;HelloCoherence&amp;lt;/name&amp;gt;
  &amp;lt;!-- FIXME change it to the project's website --&amp;gt;
  &amp;lt;url&amp;gt;http://www.example.com&amp;lt;/url&amp;gt;

  &amp;lt;properties&amp;gt;
    &amp;lt;project.build.sourceEncoding&amp;gt;UTF-8&amp;lt;/project.build.sourceEncoding&amp;gt;
    &amp;lt;maven.compiler.release&amp;gt;17&amp;lt;/maven.compiler.release&amp;gt;
  &amp;lt;/properties&amp;gt;

  &amp;lt;dependencyManagement&amp;gt;
    &amp;lt;dependencies&amp;gt;
      &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;org.junit&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;junit-bom&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;5.11.0&amp;lt;/version&amp;gt;
        &amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;
        &amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;
      &amp;lt;/dependency&amp;gt;
    &amp;lt;/dependencies&amp;gt;
  &amp;lt;/dependencyManagement&amp;gt;

  &amp;lt;dependencies&amp;gt;
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;org.junit.jupiter&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;junit-jupiter-api&amp;lt;/artifactId&amp;gt;
      &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &amp;lt;!-- Optionally: parameterized tests support --&amp;gt;
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;org.junit.jupiter&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;junit-jupiter-params&amp;lt;/artifactId&amp;gt;
      &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &amp;lt;!-- Oracle Coherence --&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;com.oracle.coherence.ce&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;coherence&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;22.06.10&amp;lt;/version&amp;gt;
    &amp;lt;/dependency&amp;gt;
    
  &amp;lt;/dependencies&amp;gt;

  &amp;lt;build&amp;gt;
    &amp;lt;pluginManagement&amp;gt;&amp;lt;!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --&amp;gt;
      &amp;lt;plugins&amp;gt;
        &amp;lt;!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --&amp;gt;
        &amp;lt;plugin&amp;gt;
          &amp;lt;artifactId&amp;gt;maven-clean-plugin&amp;lt;/artifactId&amp;gt;
          &amp;lt;version&amp;gt;3.4.0&amp;lt;/version&amp;gt;
        &amp;lt;/plugin&amp;gt;
        &amp;lt;!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --&amp;gt;
        &amp;lt;plugin&amp;gt;
          &amp;lt;artifactId&amp;gt;maven-resources-plugin&amp;lt;/artifactId&amp;gt;
          &amp;lt;version&amp;gt;3.3.1&amp;lt;/version&amp;gt;
        &amp;lt;/plugin&amp;gt;
        &amp;lt;plugin&amp;gt;
          &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;
          &amp;lt;version&amp;gt;3.13.0&amp;lt;/version&amp;gt;
        &amp;lt;/plugin&amp;gt;
        &amp;lt;plugin&amp;gt;
          &amp;lt;artifactId&amp;gt;maven-surefire-plugin&amp;lt;/artifactId&amp;gt;
          &amp;lt;version&amp;gt;3.3.0&amp;lt;/version&amp;gt;
        &amp;lt;/plugin&amp;gt;
        &amp;lt;plugin&amp;gt;
          &amp;lt;artifactId&amp;gt;maven-jar-plugin&amp;lt;/artifactId&amp;gt;
          &amp;lt;version&amp;gt;3.4.2&amp;lt;/version&amp;gt;
        &amp;lt;/plugin&amp;gt;
        &amp;lt;plugin&amp;gt;
          &amp;lt;artifactId&amp;gt;maven-install-plugin&amp;lt;/artifactId&amp;gt;
          &amp;lt;version&amp;gt;3.1.2&amp;lt;/version&amp;gt;
        &amp;lt;/plugin&amp;gt;
        &amp;lt;plugin&amp;gt;
          &amp;lt;artifactId&amp;gt;maven-deploy-plugin&amp;lt;/artifactId&amp;gt;
          &amp;lt;version&amp;gt;3.1.2&amp;lt;/version&amp;gt;
        &amp;lt;/plugin&amp;gt;
        &amp;lt;!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --&amp;gt;
        &amp;lt;plugin&amp;gt;
          &amp;lt;artifactId&amp;gt;maven-site-plugin&amp;lt;/artifactId&amp;gt;
          &amp;lt;version&amp;gt;3.12.1&amp;lt;/version&amp;gt;
        &amp;lt;/plugin&amp;gt;
        &amp;lt;plugin&amp;gt;
          &amp;lt;artifactId&amp;gt;maven-project-info-reports-plugin&amp;lt;/artifactId&amp;gt;
          &amp;lt;version&amp;gt;3.6.1&amp;lt;/version&amp;gt;
        &amp;lt;/plugin&amp;gt;
      &amp;lt;/plugins&amp;gt;
    &amp;lt;/pluginManagement&amp;gt;
  &amp;lt;/build&amp;gt;
&amp;lt;/project&amp;gt;&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;이번 장에서는 IMDG 기능만 사용함으로 예제와 같이 Coherence CE 버전의 라이브러리를 사용했습니다만 추가 기능을 활용할 필요가 있는 경우 정식버전의 라이브러리를 사용하셔도 동일하게 적용 가능합니다.&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;3. src/main/java 경로에 main 클래스 파일을 작성 해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 HelloCoherence.java 파일을 다음과 같이 생성하였습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740621592801&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.oracle.coherence.HelloCoherence;

import com.tangosol.net.CacheFactory;
import com.tangosol.net.NamedMap;

public class HelloCoherence {
    public static void main(String[] args) {
    	{
            NamedMap&amp;lt;String, String&amp;gt; map_1 = CacheFactory.getCache(&quot;welcomes&quot;);
            
            NamedMap&amp;lt;String, String&amp;gt; map_2 = CacheFactory.getCache(&quot;goodbye&quot;);

            System.out.printf(&quot;Accessing map \&quot;%s\&quot; containing %d entries\n&quot;,
                    map_1.getName(),
                    map_1.size());
            
            System.out.printf(&quot;Accessing map \&quot;%s\&quot; containing %d entries\n&quot;,
                    map_2.getName(),
                    map_2.size());

            map_1.put(&quot;english&quot;, &quot;Hello&quot;);
            map_1.put(&quot;spanish&quot;, &quot;Hola&quot;);
            map_1.put(&quot;french&quot; , &quot;Bonjour&quot;);
            
            map_2.put(&quot;english&quot;, &quot;ByeBye&quot;);
            map_2.put(&quot;spanish&quot;, &quot;Adios&quot;);
            map_2.put(&quot;japan&quot; , &quot;Sayonara&quot;);

            // list
            System.out.println(&quot;MapName:&quot;+map_1.getName());
            map_1.entrySet().forEach(System.out::println);
            
            // list2
            System.out.println(&quot;MapName:&quot;+map_2.getName());
            map_2.entrySet().forEach(System.out::println);
            }
    }
}&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;welcomes, goodbye라는 2개의 캐시를 생성하고 각각 3개의 데이터를 put 하고 꺼내어 출력하는 간단한 내용입니다.&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;이렇게 pom.xml 파일과 HelloCoherence.java 2개 파일을 추가한 후 Maven 빌드(package) 후 확인이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업 완료 후 Project Explorer는 아래와 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;623&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUeFXU/btsMyjFeWsv/jsOQKnXMHITZY00M5juYeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUeFXU/btsMyjFeWsv/jsOQKnXMHITZY00M5juYeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUeFXU/btsMyjFeWsv/jsOQKnXMHITZY00M5juYeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUeFXU%2FbtsMyjFeWsv%2FjsOQKnXMHITZY00M5juYeK%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;429&quot; height=&quot;623&quot; data-origin-width=&quot;429&quot; data-origin-height=&quot;623&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;필요한 파일 작성이 마무리되었으니 Maven 빌드를 수행하여 프로젝트를 빌드 해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mvn package 명령으로 빌드를 실행합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740622372005&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\developerWorks\eclipse-jee-2024-06-R-win32-x86_64\git\Coherence\HelloCoherence&amp;gt;mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------&amp;lt; com.oracle.coherence:HelloCoherence &amp;gt;-----------------
[INFO] Building HelloCoherence 0.0.1-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- resources:3.3.1:resources (default-resources) @ HelloCoherence ---
[INFO] Copying 1 resource from src\main\resources to target\classes
[INFO]
[INFO] --- compiler:3.13.0:compile (default-compile) @ HelloCoherence ---
[INFO] Nothing to compile - all classes are up to date.
[INFO]
[INFO] --- resources:3.3.1:testResources (default-testResources) @ HelloCoherence ---
[INFO] skip non existing resourceDirectory C:\developerWorks\eclipse-jee-2024-06-R-win32-x86_64\git\Coherence\HelloCoherence\src\test\resources
[INFO]
[INFO] --- compiler:3.13.0:testCompile (default-testCompile) @ HelloCoherence ---
[INFO] Nothing to compile - all classes are up to date.
[INFO]
[INFO] --- surefire:3.3.0:test (default-test) @ HelloCoherence ---
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.oracle.coherence.HelloCoherence.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.280 s -- in com.oracle.coherence.HelloCoherence.AppTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- jar:3.4.2:jar (default-jar) @ HelloCoherence ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  8.646 s
[INFO] Finished at: 2025-02-27T11:12:35+09:00
[INFO] ------------------------------------------------------------------------&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;우선 Coherence.jar 파일을 활용하여 캐시서버를 실행 후 main 클래스를 실행하여 동작여부를 확인할 수 있습니다.&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;터미널 혹은 cmd 창에서 프로젝트 디렉토리로 이동 후 다음 명령어로 캐시서버를 실행해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740622273357&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    mvn exec:java -Dexec.mainClass=&quot;com.tangosol.net.DefaultCacheServer&quot; &amp;amp;&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;동작이 완료되면 coherence.jar 파일을 활용해 캐시서버가 구동됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740622228800&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\developerWorks\eclipse-jee-2024-06-R-win32-x86_64\git\Coherence\HelloCoherence&amp;gt;mvn exec:java -Dexec.mainClass=&quot;com.tangosol.net.DefaultCacheServer&quot; &amp;amp;
[INFO] Scanning for projects...
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml
Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata.xml
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml (14 kB at 18 kB/s)
Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata.xml (21 kB at 25 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/maven-metadata.xml
Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/maven-metadata.xml (989 B at 27 kB/s)
[INFO]
[INFO] ----------------&amp;lt; com.oracle.coherence:HelloCoherence &amp;gt;-----------------
[INFO] Building HelloCoherence 0.0.1-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec:3.5.0:java (default-cli) @ HelloCoherence ---
2025-02-27 11:10:03.255/13.341 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): Loaded operational configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/tangosol-coherence.xml&quot;
2025-02-27 11:10:03.657/13.665 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): Loaded operational overrides from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/com/oracle/coherence/defaults/tangosol-coherence-override-dev.xml&quot;
2025-02-27 11:10:03.718/13.727 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): Loaded operational overrides from &quot;file:/C:/developerWorks/eclipse-jee-2024-06-R-win32-x86_64/git/Coherence/HelloCoherence/target/classes/tangosol-coherence-override.xml&quot;
2025-02-27 11:10:03.726/13.735 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): Optional configuration override &quot;cache-factory-config.xml&quot; is not specified
2025-02-27 11:10:03.727/13.736 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): Optional configuration override &quot;cache-factory-builder-config.xml&quot; is not specified
2025-02-27 11:10:03.727/13.737 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): Optional configuration override &quot;/custom-mbeans.xml&quot; is not specified

Oracle Coherence Version 22.06.10 Build 111636
 Community Edition: Development mode
Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved.

2025-02-27 11:10:03.934/13.943 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): Loaded cache configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/com/oracle/coherence/defaults/coherence-cache-config.xml&quot;
2025-02-27 11:10:05.411/15.420 Oracle Coherence CE 22.06.10 &amp;lt;D5&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): Created cache factory com.tangosol.net.ExtensibleConfigurableCacheFactory
2025-02-27 11:10:05.421/15.431 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): ExtensibledConfigurableCacheFactory.activate() cache config with scope
2025-02-27 11:10:06.054/16.063 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): Tracing support will not be enabled.  The following dependencies appear to be missing: [opentracing-api, opentracing-util, opentracing-noop, opentracing-tracerresolver]
2025-02-27 11:10:06.154/16.163 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): TCMP bound to /192.168.0.39:5159 using SystemDatagramSocketProvider
2025-02-27 11:10:09.714/19.722 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=NameService:TcpAcceptor, member=n/a): TcpAcceptor now listening for connections on DESKTOP-1EOEL72:5159.3
2025-02-27 11:10:09.726/19.735 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=Cluster, member=n/a): NameService now listening for connections on DESKTOP-1EOEL72:7574.3
2025-02-27 11:10:09.734/19.743 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=Cluster, member=n/a): Created a new cluster &quot;Kami-Coherence-Cluster&quot; with Member(Id=1, Timestamp=2025-02-27 11:10:06.227, Address=192.168.0.39:5159, MachineId=46499, Location=process:12236, Role=CodehausPlexusClassworldsLauncherLauncher, Edition=Community Edition, Mode=Development, CpuCount=4, SocketCount=4)
2025-02-27 11:10:09.791/19.800 Oracle Coherence CE 22.06.10 &amp;lt;D4&amp;gt; (thread=Transport:TransportService, member=n/a): Initialized BufferManager to: NonDisposableBufferManager(delegate=DirectBufferManager(capacity=11MB, usage=0B..0B/0B, hit rate=0%, segment utilization=1KB(0%)/0, 2KB(0%)/0, 4KB(0%)/0, 8KB(0%)/0, 16KB(0%)/0, 32KB(0%)/0, 64KB(0%)/0, allocator=com.oracle.coherence.common.internal.io.SlabBufferManager$DirectBufferAllocator@7167844f))
2025-02-27 11:10:09.801/19.809 Oracle Coherence CE 22.06.10 &amp;lt;D5&amp;gt; (thread=Transport:TransportService, member=n/a): Service TransportService is bound to tmb://192.168.0.39:5159.58228
2025-02-27 11:10:09.824/19.832 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=Transport:TransportService, member=n/a): Service TransportService joined the cluster with senior service member 1
2025-02-27 11:10:09.838/19.847 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=n/a): Started cluster Name=Kami-Coherence-Cluster, ClusterPort=7574

Group{Address=239.192.0.0, TTL=4}

MasterMemberSet(
  ThisMember=Member(Id=1, Timestamp=2025-02-27 11:10:06.227, Address=192.168.0.39:5159, MachineId=46499, Location=process:12236, Role=CodehausPlexusClassworldsLauncherLauncher)
  OldestMember=Member(Id=1, Timestamp=2025-02-27 11:10:06.227, Address=192.168.0.39:5159, MachineId=46499, Location=process:12236, Role=CodehausPlexusClassworldsLauncherLauncher)
  ActualMemberSet=MemberSet(Size=1
    Member(Id=1, Timestamp=2025-02-27 11:10:06.227, Address=192.168.0.39:5159, MachineId=46499, Location=process:12236, Role=CodehausPlexusClassworldsLauncherLauncher)
    )
  MemberId|ServiceJoined|MemberState|Version|Edition
    1|2025-02-27 11:10:06.227|JOINED|22.06.10|CE
  RecycleMillis=1200000
  RecycleSet=MemberSet(Size=0
    )
  )

TcpRing{Connections=[]}
IpMonitor{Addresses=0, Timeout=15s}

2025-02-27 11:10:09.856/19.866 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=1): Loaded management configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/com/oracle/coherence/defaults/management-config.xml&quot;
2025-02-27 11:10:09.863/19.872 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=Invocation:Management, member=1): Service Management joined the cluster with senior service member 1
2025-02-27 11:10:09.985/19.994 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=1): Loaded Reporter configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/reports/report-group.xml&quot;
2025-02-27 11:10:10.088/20.097 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=1): JMXConnectorServer now listening for connections on DESKTOP-1EOEL72:5160
2025-02-27 11:10:10.128/20.136 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=1): Loaded Reporter configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/reports/report-group.xml&quot;
2025-02-27 11:10:10.754/20.763 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=DistributedCache:PartitionedCache, member=1): Service PartitionedCache joined the cluster with senior service member 1
2025-02-27 11:10:10.771/20.781 Oracle Coherence CE 22.06.10 &amp;lt;D4&amp;gt; (thread=DistributedCache:PartitionedCache, member=1): Started DaemonPool &quot;PartitionedCache&quot;: [DeamonCount=4, DaemonCountMax=2147483647, DaemonCountMin=4, Dynamic=true QueueSize=4, WorkSlots=4]
2025-02-27 11:10:10.806/20.815 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=DistributedCache:PartitionedCache, member=1): Service PartitionedCache: sending PartitionConfig com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.ConfigSync to all
2025-02-27 11:10:10.883/20.892 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=DistributedCache:PartitionedCache, member=1): This member has become the distribution coordinator for MemberSet(Size=1
  Member(Id=1, Timestamp=2025-02-27 11:10:06.227, Address=192.168.0.39:5159, MachineId=46499, Location=process:12236, Role=CodehausPlexusClassworldsLauncherLauncher)
  )
2025-02-27 11:10:10.989/20.998 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=DistributedCache:PartitionedCache, member=1): Partition ownership has stabilized with 1 nodes
2025-02-27 11:10:11.090/21.099 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=PagedTopic:PartitionedTopic, member=1): Loaded POF configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/com/oracle/coherence/defaults/pof-config.xml&quot;
2025-02-27 11:10:11.104/21.112 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=PagedTopic:PartitionedTopic, member=1): Loaded included POF configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/coherence-pof-config.xml&quot;
2025-02-27 11:10:11.557/21.565 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=PagedTopic:PartitionedTopic, member=1): Service PartitionedTopic joined the cluster with senior service member 1
2025-02-27 11:10:11.746/21.754 Oracle Coherence CE 22.06.10 &amp;lt;D4&amp;gt; (thread=PagedTopic:PartitionedTopic, member=1): Started DaemonPool &quot;PartitionedTopic&quot;: [DeamonCount=4, DaemonCountMax=2147483647, DaemonCountMin=4, Dynamic=true QueueSize=4, WorkSlots=4]
2025-02-27 11:10:11.749/21.757 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=PagedTopic:PartitionedTopic, member=1): Service PartitionedTopic: sending PartitionConfig com.tangosol.coherence.component.util.daemon.queueProcessor.service.Grid.ConfigSync to all
2025-02-27 11:10:11.817/21.827 Oracle Coherence CE 22.06.10 &amp;lt;D4&amp;gt; (thread=PagedTopic:PartitionedTopic, member=1): Started DaemonPool &quot;CoherenceCommonPool&quot;: [DeamonCount=4, DaemonCountMax=2147483647, DaemonCountMin=4, Dynamic=true QueueSize=4, WorkSlots=4]
2025-02-27 11:10:11.851/21.860 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=PagedTopic:PartitionedTopic, member=1): This member has become the distribution coordinator for MemberSet(Size=1
  Member(Id=1, Timestamp=2025-02-27 11:10:06.227, Address=192.168.0.39:5159, MachineId=46499, Location=process:12236, Role=CodehausPlexusClassworldsLauncherLauncher)
  )
2025-02-27 11:10:11.889/21.898 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=PagedTopic:PartitionedTopic, member=1): Partition ownership has stabilized with 1 nodes
2025-02-27 11:10:11.945/21.954 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=Proxy:TcpAcceptor, member=1): TcpAcceptor now listening for connections on DESKTOP-1EOEL72:5159.38917
2025-02-27 11:10:11.948/21.957 Oracle Coherence CE 22.06.10 &amp;lt;D4&amp;gt; (thread=Proxy:TcpAcceptor, member=1): Started DaemonPool &quot;Proxy:TcpAcceptor&quot;: [DeamonCount=1, DaemonCountMax=2147483647, DaemonCountMin=1, Dynamic=true QueueSize=1, WorkSlots=4]
2025-02-27 11:10:11.954/21.964 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=Proxy, member=1): Service Proxy joined the cluster with senior service member 1
2025-02-27 11:10:11.966/21.975 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.tangosol.net.DefaultCacheServer.main(), member=1): Started DefaultCacheServer
Services
  (
  ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, OldestMemberId=1}
  TransportService{Name=TransportService, State=(SERVICE_STARTED), Id=1, OldestMemberId=1}
  InvocationService{Name=Management, State=(SERVICE_STARTED), Id=2, OldestMemberId=1, Serializer=java}
  PartitionedCache{Name=PartitionedCache, State=(SERVICE_STARTED), Id=3, OldestMemberId=1, LocalStorage=enabled, PartitionCount=257, BackupCount=1, AssignedPartitions=257, BackupPartitions=0, CoordinatorId=1, PersistenceMode=on-demand, Serializer=java}
  PagedTopic{Name=PartitionedTopic, State=(SERVICE_STARTED), Id=4, OldestMemberId=1, LocalStorage=enabled, PartitionCount=257, BackupCount=1, AssignedPartitions=257, BackupPartitions=0, CoordinatorId=1, PersistenceMode=on-demand, Serializer=safe-pof}
  ProxyService{Name=Proxy, State=(SERVICE_STARTED), Id=5, OldestMemberId=1, Serializer=java}
  )&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;캐시 서버가 구동되었으니 main 클래스를 수행하여 예제가 정상적으로 동작하는지 확인합니다.&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;터미널 혹은 cmd 창에서 프로젝트 디렉토리로 이동 후 다음 명령어로 main 클래스 실행해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740622666276&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mvn exec:java -Dexec.mainClass=&quot;com.oracle.coherence.HelloCoherence.HelloCoherence&quot;&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;본인의 패키지+클래스명으로 mainClass 부분을 작성해 주시면 됩니다.&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;실행결과 아래와 같이 캐시 서버에 멤버로 접속하여 main 클래스의 내용이 수행된 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740622653315&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\developerWorks\eclipse-jee-2024-06-R-win32-x86_64\git\Coherence\HelloCoherence&amp;gt;mvn exec:java -Dexec.mainClass=&quot;com.oracle.coherence.HelloCoherence.HelloCoherence&quot;
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------&amp;lt; com.oracle.coherence:HelloCoherence &amp;gt;-----------------
[INFO] Building HelloCoherence 0.0.1-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec:3.5.0:java (default-cli) @ HelloCoherence ---
2025-02-27 11:16:57.480/4.966 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): Loaded operational configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/tangosol-coherence.xml&quot;
2025-02-27 11:16:57.753/5.217 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): Loaded operational overrides from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/com/oracle/coherence/defaults/tangosol-coherence-override-dev.xml&quot;
2025-02-27 11:16:57.799/5.263 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): Loaded operational overrides from &quot;file:/C:/developerWorks/eclipse-jee-2024-06-R-win32-x86_64/git/Coherence/HelloCoherence/target/classes/tangosol-coherence-override.xml&quot;
2025-02-27 11:16:57.805/5.269 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): Optional configuration override &quot;cache-factory-config.xml&quot; is not specified
2025-02-27 11:16:57.806/5.270 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): Optional configuration override &quot;cache-factory-builder-config.xml&quot; is not specified
2025-02-27 11:16:57.807/5.271 Oracle Coherence 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): Optional configuration override &quot;/custom-mbeans.xml&quot; is not specified

Oracle Coherence Version 22.06.10 Build 111636
 Community Edition: Development mode
Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved.

2025-02-27 11:16:58.056/5.520 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): Loaded cache configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/com/oracle/coherence/defaults/coherence-cache-config.xml&quot;
2025-02-27 11:16:59.383/6.847 Oracle Coherence CE 22.06.10 &amp;lt;D5&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): Created cache factory com.tangosol.net.ExtensibleConfigurableCacheFactory
2025-02-27 11:16:59.856/7.320 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): Tracing support will not be enabled.  The following dependencies appear to be missing: [opentracing-api, opentracing-util, opentracing-noop, opentracing-tracerresolver]
2025-02-27 11:17:00.045/7.509 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): TCMP bound to /192.168.0.39:5234 using SystemDatagramSocketProvider
2025-02-27 11:17:00.412/7.875 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=Cluster, member=n/a): Member(Id=1, Timestamp=2025-02-27 11:10:06.227, Address=192.168.0.39:5159, MachineId=46499, Location=process:12236, Role=CodehausPlexusClassworldsLauncherLauncher) joined Cluster with senior member 1
2025-02-27 11:17:00.421/7.885 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=Cluster, member=n/a): This Member(Id=2, Timestamp=2025-02-27 11:17:00.205, Address=192.168.0.39:5234, MachineId=46499, Location=process:16492, Role=CodehausPlexusClassworldsLauncherLauncher, Edition=Community Edition, Mode=Development, CpuCount=4, SocketCount=4) joined cluster &quot;Kami-Coherence-Cluster&quot; with senior Member(Id=1, Timestamp=2025-02-27 11:10:06.227, Address=192.168.0.39:5159, MachineId=46499, Location=process:12236, Role=CodehausPlexusClassworldsLauncherLauncher, Edition=Community Edition, Mode=Development, CpuCount=4, SocketCount=4)
2025-02-27 11:17:00.697/8.162 Oracle Coherence CE 22.06.10 &amp;lt;D4&amp;gt; (thread=Transport:TransportService, member=n/a): Initialized BufferManager to: NonDisposableBufferManager(delegate=DirectBufferManager(capacity=13.6MB, usage=0B..0B/0B, hit rate=0%, segment utilization=1KB(0%)/0, 2KB(0%)/0, 4KB(0%)/0, 8KB(0%)/0, 16KB(0%)/0, 32KB(0%)/0, 64KB(0%)/0, allocator=com.oracle.coherence.common.internal.io.SlabBufferManager$DirectBufferAllocator@2718d348))
2025-02-27 11:17:00.706/8.170 Oracle Coherence CE 22.06.10 &amp;lt;D5&amp;gt; (thread=Transport:TransportService, member=n/a): Service TransportService is bound to tmb://192.168.0.39:5234.57807
2025-02-27 11:17:00.771/8.235 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=Transport:TransportService, member=n/a): Service TransportService joined the cluster with senior service member 1
2025-02-27 11:17:00.865/8.329 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=SelectionService(channels=7, selector=MultiplexedSelector(sun.nio.ch.WEPollSelectorImpl@4ac22748), id=255983547), member=n/a): Connection established with tmb://192.168.0.39:5159.58228
2025-02-27 11:17:00.887/8.351 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=n/a): Started cluster Name=Kami-Coherence-Cluster, ClusterPort=7574

Group{Address=239.192.0.0, TTL=4}

MasterMemberSet(
  ThisMember=Member(Id=2, Timestamp=2025-02-27 11:17:00.205, Address=192.168.0.39:5234, MachineId=46499, Location=process:16492, Role=CodehausPlexusClassworldsLauncherLauncher)
  OldestMember=Member(Id=1, Timestamp=2025-02-27 11:10:06.227, Address=192.168.0.39:5159, MachineId=46499, Location=process:12236, Role=CodehausPlexusClassworldsLauncherLauncher)
  ActualMemberSet=MemberSet(Size=2
    Member(Id=1, Timestamp=2025-02-27 11:10:06.227, Address=192.168.0.39:5159, MachineId=46499, Location=process:12236, Role=CodehausPlexusClassworldsLauncherLauncher)
    Member(Id=2, Timestamp=2025-02-27 11:17:00.205, Address=192.168.0.39:5234, MachineId=46499, Location=process:16492, Role=CodehausPlexusClassworldsLauncherLauncher)
    )
  MemberId|ServiceJoined|MemberState|Version|Edition
    1|2025-02-27 11:10:06.227|JOINED|22.06.10|CE,
    2|2025-02-27 11:17:00.205|JOINED|22.06.10|CE
  RecycleMillis=1200000
  RecycleSet=MemberSet(Size=0
    )
  )

TcpRing{Connections=[1]}
IpMonitor{Addresses=0, Timeout=15s}

2025-02-27 11:17:00.904/8.368 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=2): Loaded management configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/com/oracle/coherence/defaults/management-config.xml&quot;
2025-02-27 11:17:00.913/8.376 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=Invocation:Management, member=2): Service Management joined the cluster with senior service member 1
2025-02-27 11:17:00.963/8.427 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=com.oracle.coherence.HelloCoherence.HelloCoherence.main(), member=2): Loaded Reporter configuration from &quot;jar:file:/C:/Users/kami/.m2/repository/com/oracle/coherence/ce/coherence/22.06.10/coherence-22.06.10.jar!/reports/report-group.xml&quot;
2025-02-27 11:17:03.159/10.623 Oracle Coherence CE 22.06.10 &amp;lt;Info&amp;gt; (thread=DistributedCache:PartitionedCache, member=2): Service PartitionedCache joined the cluster with senior service member 1
Accessing map &quot;welcomes&quot; containing 0 entries
Accessing map &quot;goodbye&quot; containing 0 entries
MapName:welcomes
ConverterEntry{Key=&quot;french&quot;, Value=&quot;Bonjour&quot;}
ConverterEntry{Key=&quot;spanish&quot;, Value=&quot;Hola&quot;}
ConverterEntry{Key=&quot;english&quot;, Value=&quot;Hello&quot;}
MapName:goodbye
ConverterEntry{Key=&quot;japan&quot;, Value=&quot;Sayonara&quot;}
ConverterEntry{Key=&quot;spanish&quot;, Value=&quot;Adios&quot;}
ConverterEntry{Key=&quot;english&quot;, Value=&quot;ByeBye&quot;}
Interrupted PacketReceiver, Thread[PacketReceiver,10,Cluster]
Interrupted PacketPublisher, Thread[PacketPublisher,10,Cluster]
Interrupted TransportService, Thread[Transport:TransportService,10,Cluster]
Interrupted InvocationService, Thread[Invocation:Management,10,Cluster]
Interrupted EventDispatcher, Thread[Invocation:Management:EventDispatcher,10,Cluster]
Interrupted PartitionedCache, Thread[DistributedCache:PartitionedCache,10,Cluster]
Interrupted EventDispatcher, Thread[DistributedCache:PartitionedCache:EventDispatcher,10,Cluster]
Interrupted IpMonitor, Thread[IpMonitor,6,Cluster]
Interrupted Logger, Thread[Logger@9267279 22.06.10,3,com.oracle.coherence.HelloCoherence.HelloCoherence]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;로그 중간의 출력부분에 아래 내용이 포함되었는지 확인을 통해 정상동작 여부를 알 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1740622819792&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MapName:welcomes
ConverterEntry{Key=&quot;french&quot;, Value=&quot;Bonjour&quot;}
ConverterEntry{Key=&quot;spanish&quot;, Value=&quot;Hola&quot;}
ConverterEntry{Key=&quot;english&quot;, Value=&quot;Hello&quot;}
MapName:goodbye
ConverterEntry{Key=&quot;japan&quot;, Value=&quot;Sayonara&quot;}
ConverterEntry{Key=&quot;spanish&quot;, Value=&quot;Adios&quot;}
ConverterEntry{Key=&quot;english&quot;, Value=&quot;ByeBye&quot;}&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이와같이 Coherence의 IMDG 기능은 Coherence.jar 파일만 클래스 패스에 추가해 주는 것만으로도 손쉽게 구현이 가능합니다. 다소 생소한 내용으로 활용 방법에 의문을 가지는 경우가 많은 것 같아 관련 내용을 포스팅 하게 되었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;실제 업무에 적용하기 위해서는 여러 설정이 필요하며 이러한 설정은 'tangosol-coherence-override.xml' 파일을 작성하여 Coherence.jar 파일 내부에 포함되어 있는 tangosol-coherence.xml 파일을 오버라이드 하여 적용이 가능합니다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;업무에 사용하기 위해서 우선적으로 캐시서버명, 타임아웃설정등이 정의 되어야 하고 본 예제와 달리 실제 서버에 설치 된 Coherence 캐시서버에 접속을 위한 WKA설정등이 포함되어야 하기 때문이며 관련내용은 tangosol-coherence-override 설정이라는 별도의 포스팅으로 작성해 보도록 하겠습니다.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 포스팅 내용은 간단히 jar 파일 추가 만으로 Coherence 캐시서버 구현 및 기능사용이 가능함을 알아보는 목적으로 이해하시면 좋을 것 같습니다.&lt;/p&gt;</description>
      <category>Oracle Fusion Middleware/Coherence</category>
      <category>Coherence</category>
      <category>Datagrid</category>
      <category>imdg</category>
      <category>oracle</category>
      <author>수상한 김토끼</author>
      <guid isPermaLink="true">https://with-kami.tistory.com/1534871</guid>
      <comments>https://with-kami.tistory.com/1534871#entry1534871comment</comments>
      <pubDate>Thu, 27 Feb 2025 11:26:19 +0900</pubDate>
    </item>
    <item>
      <title>2장. Oracle ORDS 설치 (Oracle 19c)</title>
      <link>https://with-kami.tistory.com/1534870</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;수상한 김토끼&amp;rsquo; 입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 포스팅은 Oracle Database 19c에 Apex와 ORDS를 설치하고 Apex 개발환경을 설정하는 과정을 정리 한 내용입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;설치과정은 크게 Apex 설치와 ORDS를 설치하고 구성하는 2개의 과정으로 진행됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://with-kami.tistory.com/1534869&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;1장. Oracle Apex 설치 (Oracle 19c)&lt;/a&gt;에서 apex 설치를 진행하였고 이번장에서는 ORDS를 설치 해 보도록 하겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://with-kami.tistory.com/1534869&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.07.23 - [Oracle Database/Apex] - 1장. Oracle Apex 설치 (Oracle 19c)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721734275335&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;1장. Oracle Apex 설치 (Oracle 19c)&quot; data-og-description=&quot;안녕하세요.&amp;nbsp;&amp;lsquo;수상한 김토끼&amp;rsquo; 입니다.&amp;nbsp;이 포스팅은 Oracle Database 19c에 Apex와 ORDS를 설치하고 Apex 개발환경을 설정하는 과정을 정리 한 내용입니다.설치과정은 크게 Apex 설치와 ORDS를 설치하고 &quot; data-og-host=&quot;with-kami.tistory.com&quot; data-og-source-url=&quot;https://with-kami.tistory.com/1534869&quot; data-og-url=&quot;https://with-kami.tistory.com/1534869&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cdi3GG/hyWCMK4pdR/xp0fn8sYwkW4b8ItkWFRn0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/MFjAz/hyWG0t6i2N/Uk9q9k0Vu0iD05WKKbNQMK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/NF9pF/hyWGVzyNvH/FHxQj3lXhjuEywF7LWsV00/img.png?width=1024&amp;amp;height=627&amp;amp;face=0_0_1024_627&quot;&gt;&lt;a href=&quot;https://with-kami.tistory.com/1534869&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://with-kami.tistory.com/1534869&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cdi3GG/hyWCMK4pdR/xp0fn8sYwkW4b8ItkWFRn0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/MFjAz/hyWG0t6i2N/Uk9q9k0Vu0iD05WKKbNQMK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/NF9pF/hyWGVzyNvH/FHxQj3lXhjuEywF7LWsV00/img.png?width=1024&amp;amp;height=627&amp;amp;face=0_0_1024_627');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1장. Oracle Apex 설치 (Oracle 19c)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요.&amp;nbsp;&amp;lsquo;수상한 김토끼&amp;rsquo; 입니다.&amp;nbsp;이 포스팅은 Oracle Database 19c에 Apex와 ORDS를 설치하고 Apex 개발환경을 설정하는 과정을 정리 한 내용입니다.설치과정은 크게 Apex 설치와 ORDS를 설치하고&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;with-kami.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;ORDS를 사용하기 위해서는 Java 11 이상의 JDK가 필요합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;우선 사용할 Java를 서버에 업로드 하고 .bash_profile을 수정하여 환경설정을 진행 해 줍니다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721734304643&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[apex@apex jdk-11.0.23]$ cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
. /home/apex/scripts/setEnv.sh
export JAVA_HOME=/home/apex/jdk-11.0.23
export PATH=&quot;$JAVA_HOME/bin&quot;
[apex@apex jdk-11.0.23]$ pwd
/home/apex/jdk-11.0.23
[apex@apex jdk-11.0.23]$ ls
bin  conf  include  jmods  legal  lib  man  README.html  release
[apex@apex jdk-11.0.23]$&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;ORDS는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://www.oracle.com/database/sqldeveloper/technologies/db-actions/download/&quot;&gt;Oracle REST Data Services Download&lt;/a&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&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;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;&lt;a href=&quot;https://www.oracle.com/database/sqldeveloper/technologies/db-actions/download/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.oracle.com/database/sqldeveloper/technologies/db-actions/download/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721734323151&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Oracle REST Data Services Download&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.oracle.com&quot; data-og-source-url=&quot;https://www.oracle.com/database/sqldeveloper/technologies/db-actions/download/&quot; data-og-url=&quot;https://www.oracle.com/database/sqldeveloper/technologies/db-actions/download/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.oracle.com/database/sqldeveloper/technologies/db-actions/download/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.oracle.com/database/sqldeveloper/technologies/db-actions/download/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Oracle REST Data Services Download&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.oracle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721734338950&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[apex@apex ords]$ pwd
/home/apex/ords
[apex@apex ords]$ ls -al
total 118380
drwxrwxr-x. 9 apex apex       190 Jul 15 08:48 .
drwx------. 9 apex apex      4096 Jul 15 08:48 ..
drwxr-xr-x. 2 apex apex        54 Jun 28 16:57 bin
drwxr-xr-x. 3 apex apex        21 Jun 28 16:57 docs
drwxr-xr-x. 8 apex apex       113 Jun 17 17:21 examples
drwxr-xr-x. 2 apex apex        28 Jun 17 17:21 icons
drwxr-xr-x. 3 apex apex      4096 Jun 17 17:21 lib
-rw-r--r--. 1 apex apex      5996 Jun 17 17:21 LICENSE.txt
drwxr-xr-x. 3 apex apex        86 Jun 28 16:57 linux-support
-rw-r--r--. 1 apex apex       210 Jun 17 17:21 NOTICE.txt
-rw-r--r--. 1 apex apex 121195337 Jun 28 16:52 ords.war
drwxr-xr-x. 4 apex apex        38 Jun 17 17:21 scripts
-rw-r--r--. 1 apex apex       365 Jun 17 17:21 THIRD-PARTY-LICENSES.txt
[apex@apex ords]$&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;ORDS 관련 명령어를 .bash_profile을 수정하여 PATH에 추가 해 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721734360113&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[apex@apex ords]$ cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
. /home/apex/scripts/setEnv.sh
export JAVA_HOME=/home/apex/jdk-11.0.23
export PATH=&quot;$JAVA_HOME/bin:$PATH:/home/apex/ords/bin&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;제가 구성한 환경은 oracle유저와 apex유저가 다르기 때문에 apex 유저의 그룹을 oracle과 같은 dba 그룹으로 변경을 진행해야 설치를 정상적으로 진행할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다음 명령으로 apex의 그룹을 dba로 변경 후 아래 내용을 진행 해 주세요.&lt;/p&gt;
&lt;pre id=&quot;code_1721734377211&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[root@apex /]# usermod -G dba apex
[root@apex /]# chown -R apex:dba /home/apex&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;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;다음 명령을 사용하여 ORDS config 디렉토리를 생성하고 설정을 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721734389409&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ords --config /home/apex/ords/config install&lt;/code&gt;&lt;/pre&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721734401271&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[apex@apex ords]$ ords --config /home/apex/ords/config install
2024-07-15T09:18:56.876Z WARNING     Your configuration folder /home/apex/ords/config is located in ORDS product folder.  Oracle recommends to use a different configuration folder.
Refer to Oracle REST Data Services Documentation on how to setup your configuration folder.

ORDS: Release 24.2 Production on Mon Jul 15 09:18:56 2024

Copyright (c) 2010, 2024, Oracle.

Configuration:
  /home/apex/ords/config

The configuration folder /home/apex/ords/config does not contain any configuration files.

Oracle REST Data Services - Interactive Install

Created folder /home/apex/ords/config
  Enter a number to select the TNS net service name to use from /oracle/app/oracle/product/19.3.0/network/admin/tnsnames.ora or specify the database connection
    [1] ORCL         SERVICE_NAME=orcl.subnet07151349.vcn07151349.oraclevcn.com
    [S] Specify the database connection
  Choose [1]: 1
  Provide database user name with administrator privileges.
    Enter the administrator username: sys
  Enter the database password for SYS AS SYSDBA:

Retrieving information.
ORDS is not installed in the database. ORDS installation is required.

  Enter a number to update the value or select option A to Accept and Continue
    [1] Connection Type: TNS
    [2] TNS Connection: TNS_NAME=ORCL TNS_FOLDER=/oracle/app/oracle/product/19.3.0/network/admin
           Administrator User: SYS AS SYSDBA
    [3] Database password for ORDS runtime user (ORDS_PUBLIC_USER): &amp;lt;generate&amp;gt;
    [4] ORDS runtime user and schema tablespaces:  Default: SYSAUX Temporary TEMP
    [5] Additional Feature: Database Actions
    [6] Configure and start ORDS in Standalone Mode: Yes
    [7]    Protocol: HTTP
    [8]       HTTP Port: 8080
    [9]   APEX static resources location:
    [A] Accept and Continue - Create configuration and Install ORDS in the database
    [Q] Quit - Do not proceed. No changes
  Choose [A]: A
The setting named: db.connectionType was set to: tns in configuration: default
The setting named: db.tnsAliasName was set to: ORCL in configuration: default
The setting named: db.tnsDirectory was set to: /oracle/app/oracle/product/19.3.0/network/admin in configuration: default
The setting named: plsql.gateway.mode was set to: proxied in configuration: default
The setting named: db.username was set to: ORDS_PUBLIC_USER in configuration: default
The setting named: db.password was set to: ****** in configuration: default
The setting named: feature.sdw was set to: true in configuration: default
The global setting named: database.api.enabled was set to: true
The setting named: restEnabledSql.active was set to: true in configuration: default
The global setting named: standalone.http.port was set to: 8080
The global setting named: standalone.static.context.path was set to: /ords
The global setting named: standalone.doc.root was set to: /home/apex/ords/config/global/doc_root
The setting named: security.requestValidationFunction was set to: ords_util.authorize_plsql_gateway in configuration: default
2024-07-15T09:19:31.299Z INFO        Created folder /home/apex/ords/logs
2024-07-15T09:19:31.299Z INFO        The log file is defaulted to the current working directory located at /home/apex/ords/logs
2024-07-15T09:19:31.391Z INFO        Installing Oracle REST Data Services version 24.2.1.r1801634 in NON_CDB
2024-07-15T09:19:33.890Z INFO        ... Verified database prerequisites
2024-07-15T09:19:34.791Z INFO        ... Created Oracle REST Data Services proxy user
2024-07-15T09:19:36.065Z INFO        ... Created Oracle REST Data Services schema
2024-07-15T09:19:36.835Z INFO        ... Granted privileges to Oracle REST Data Services
2024-07-15T09:19:40.190Z INFO        ... Created Oracle REST Data Services database objects
2024-07-15T09:19:54.561Z INFO        Completed installation for Oracle REST Data Services version 24.2.1.r1801634. Elapsed time: 00:00:23.133

2024-07-15T09:19:54.639Z INFO        Completed configuring PL/SQL gateway user for Oracle REST Data Services version 24.2.1.r1801634. Elapsed time: 00:00:00.71

2024-07-15T09:19:54.643Z INFO        Log file written to /home/apex/ords/logs/ords_install_2024-07-15_091931_30027.log
2024-07-15T09:19:54.966Z INFO        HTTP and HTTP/2 cleartext listening on host: 0.0.0.0 port: 8080
2024-07-15T09:19:55.006Z INFO        Disabling document root because the specified folder does not exist: /home/apex/ords/config/global/doc_root
2024-07-15T09:19:55.007Z INFO        Default forwarding from / to contextRoot configured.
2024-07-15T09:19:59.706Z INFO        Configuration properties for: |default|lo|
db.password=******
db.tnsAliasName=ORCL
conf.use.wallet=true
security.requestValidationFunction=ords_util.authorize_plsql_gateway
standalone.static.context.path=/ords
database.api.enabled=true
db.username=ORDS_PUBLIC_USER
standalone.http.port=8080
restEnabledSql.active=true
resource.templates.enabled=false
plsql.gateway.mode=proxied
feature.sdw=true
config.required=true
db.connectionType=tns
standalone.doc.root=/home/apex/ords/config/global/doc_root
db.tnsDirectory=/oracle/app/oracle/product/19.3.0/network/admin

2024-07-15T09:19:59.710Z WARNING     *** jdbc.MaxLimit in configuration |default|lo| is using a value of 10, this setting may not be sized adequately for a production environment ***
2024-07-15T09:19:59.710Z WARNING     *** jdbc.InitialLimit in configuration |default|lo| is using a value of 10, this setting may not be sized adequately for a production environment ***
2024-07-15T09:20:09.884Z INFO

Mapped local pools from /home/apex/ords/config/databases:
  /ords/                              =&amp;gt; default                        =&amp;gt; VALID


2024-07-15T09:20:10.037Z INFO        Oracle REST Data Services initialized
Oracle REST Data Services version : 24.2.1.r1801634
Oracle REST Data Services server info: jetty/10.0.21
Oracle REST Data Services java info: Java HotSpot(TM) 64-Bit Server VM 11.0.23+7-LTS-222&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;중간에 1과 A를 입력하고 여기가지 진행이 완료되면 ORDS 설치는 마무리가 되었고 해당 서버의 8080포트로 접근하여 ORDS를 사용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721734419269&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;http://localhost:8080/ords&lt;/code&gt;&lt;/pre&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;1024&quot; data-origin-height=&quot;912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sXfRv/btsILSwZs29/OS9aPuAbirLAnpzKHEL7J1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sXfRv/btsILSwZs29/OS9aPuAbirLAnpzKHEL7J1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sXfRv/btsILSwZs29/OS9aPuAbirLAnpzKHEL7J1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsXfRv%2FbtsILSwZs29%2FOS9aPuAbirLAnpzKHEL7J1%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;1024&quot; height=&quot;912&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;912&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다만 ords config를 구성하며 ords.war가 동작하는 jetty 웹서버가 포어그라운드로 실행되었기에 해당 창을 닫거나 접속을 종료하면 프로세스도 함께 죽어버리는 문제가 있어 기동과 종료를 스크립트로 만들어 줄 필요가 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;저는 /home/apex/scirpts 경로에 아래 2개 파일을 작성하여 기동, 종료시 사용하도록 하겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;start.sh&lt;/b&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721734521034&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[apex@apex scripts]$ cat start.sh
#!/bin/bash
. /home/apex/scripts/setEnv.sh
nohup ords --config /home/apex/ords/config serve &amp;gt; /dev/null &amp;amp;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;stop.sh&lt;/b&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1721734547429&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[apex@apex scripts]$ cat stop.sh
#!/bin/bash
. /home/apex/scripts/setEnv.sh
ps -ef | grep java | grep &quot;/home/apex/ords/config&quot; | awk '{print $2}' | xargs kill -9&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;start.sh 스크립트로 jetty 웹서버 실행 후 Oracle APEX 실행을 눌러 접속하면 다음과 같은 메세지와 함께 이미지가 출력되지 않는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUv10G/btsIKYLneoa/DSNU0RSGNBcCUTCdBPkIy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUv10G/btsIKYLneoa/DSNU0RSGNBcCUTCdBPkIy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUv10G/btsIKYLneoa/DSNU0RSGNBcCUTCdBPkIy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUv10G%2FbtsIKYLneoa%2FDSNU0RSGNBcCUTCdBPkIy1%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;1024&quot; height=&quot;912&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;912&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;apex의 이미지는 cdn을 통해서 불러오도록 설정되어 있어 cdn정보가 입력되지 않은 경우 발생하는 오류로 alert창에 나온대로 reset_image_prefix.sql 파일을 수행하여 cdn 주소를 등록해 주면 해결할 수 있습니다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721734584298&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[apex@apex utilities]$ pwd
/home/apex/apex_24.1/utilities
[apex@apex utilities]$ ls
apxpart.sql                debug                              reset_image_prefix_con.sql   support
apxrekey.sql               enable_sso.sql                     reset_image_prefix_core.sql
check_lovs_for_errors.sql  report_instance_configuration.sql  reset_image_prefix.sql
[apex@apex utilities]$ sqlplus

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jul 15 09:40:01 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Enter user-name: sys as sysdba
Enter password:

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL&amp;gt; @reset_image_prefix.sql


Enter the Oracle APEX image prefix [/i/] https://static.oracle.com/cdn/apex/24.1.0/
...Changing Oracle APEX image prefix

NEW_IMAGE_PREFIX
------------------------------------------
https://static.oracle.com/cdn/apex/24.1.0/


PL/SQL procedure successfully completed.


...Recreate APEX global


PL/SQL procedure successfully completed.


Commit complete.


Image Prefix update complete

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[apex@apex utilities]$&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;작성일 기준 주요 apex 버전별 cdn 주소는 아래와 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.oracle.com/tools/downloads/apex-downloads/apex-241-known-issues/&quot;&gt;https://www.oracle.com/tools/downloads/apex-downloads/apex-241-known-issues/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721734634991&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Oracle APEX 24.1 Known Issues&quot; data-og-description=&quot;Patch Set Bundle for Oracle APEX 24.1 (36695709) The Patch Set Bundle for Oracle APEX 24.1 is available for download from My Oracle Support, via the following path: https://support.oracle.com/epmos/faces/PatchDetail?patchId=36695709. Navigate to Patches &amp;amp; &quot; data-og-host=&quot;www.oracle.com&quot; data-og-source-url=&quot;https://www.oracle.com/tools/downloads/apex-downloads/apex-241-known-issues/&quot; data-og-url=&quot;https://www.oracle.com/tools/downloads/apex-downloads/apex-241-known-issues/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.oracle.com/tools/downloads/apex-downloads/apex-241-known-issues/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.oracle.com/tools/downloads/apex-downloads/apex-241-known-issues/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Oracle APEX 24.1 Known Issues&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Patch Set Bundle for Oracle APEX 24.1 (36695709) The Patch Set Bundle for Oracle APEX 24.1 is available for download from My Oracle Support, via the following path: https://support.oracle.com/epmos/faces/PatchDetail?patchId=36695709. Navigate to Patches &amp;amp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.oracle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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&gt;24.1.0&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://static.oracle.com/cdn/apex/24.1.0/&quot;&gt;https://static.oracle.com/cdn/apex/24.1.0/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24.1.1&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://static.oracle.com/cdn/apex/24.1.1/&quot;&gt;https://static.oracle.com/cdn/apex/24.1.1/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24.1.2&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://static.oracle.com/cdn/apex/24.1.2/&quot;&gt;https://static.oracle.com/cdn/apex/24.1.2/&lt;/a&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHxue3/btsIK5KmfT1/4iolwFbLKEHXa6diyHzJm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHxue3/btsIK5KmfT1/4iolwFbLKEHXa6diyHzJm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHxue3/btsIK5KmfT1/4iolwFbLKEHXa6diyHzJm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHxue3%2FbtsIK5KmfT1%2F4iolwFbLKEHXa6diyHzJm1%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;1024&quot; height=&quot;912&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;912&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;최초로 apex에 로그인한 경우 Workspace나 사용자등을 설정하기 위해서 apex_admin 페이지에 접근하여 설치시 입력했던 계정정보로 로그인 후 Workspace, 사용자등을 수정 후 사용하시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1721734665505&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;http://localhost:8080/ords/apex_admin&lt;/code&gt;&lt;/pre&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;1024&quot; data-origin-height=&quot;912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGKdZA/btsIKhreJx8/QWQpqgfqG2TuQIFiEwagaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGKdZA/btsIKhreJx8/QWQpqgfqG2TuQIFiEwagaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGKdZA/btsIKhreJx8/QWQpqgfqG2TuQIFiEwagaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGKdZA%2FbtsIKhreJx8%2FQWQpqgfqG2TuQIFiEwagaK%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;1024&quot; height=&quot;912&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;912&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckoKTF/btsIJdpNQnP/vOVHT4nHEsYxb2S22qNBc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckoKTF/btsIJdpNQnP/vOVHT4nHEsYxb2S22qNBc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckoKTF/btsIJdpNQnP/vOVHT4nHEsYxb2S22qNBc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckoKTF%2FbtsIJdpNQnP%2FvOVHT4nHEsYxb2S22qNBc1%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;1024&quot; height=&quot;912&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;912&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여기까지 ords를 구성하고 apex에 접근하는 과정을 마무리 하였습니다.&lt;/p&gt;</description>
      <category>Oracle Database/Apex</category>
      <category>19c</category>
      <category>24.1</category>
      <category>APEX</category>
      <category>cdn</category>
      <category>oracle</category>
      <category>ords</category>
      <author>수상한 김토끼</author>
      <guid isPermaLink="true">https://with-kami.tistory.com/1534870</guid>
      <comments>https://with-kami.tistory.com/1534870#entry1534870comment</comments>
      <pubDate>Tue, 23 Jul 2024 20:36:18 +0900</pubDate>
    </item>
    <item>
      <title>1장. Oracle Apex 설치 (Oracle 19c)</title>
      <link>https://with-kami.tistory.com/1534869</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;수상한 김토끼&amp;rsquo; 입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 포스팅은 Oracle Database 19c에 Apex와 ORDS를 설치하고 Apex 개발환경을 설정하는 과정을 정리 한 내용입니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;설치과정은 크게 Apex 설치와 ORDS를 설치하고 구성하는 2개의 과정으로 진행됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Databse는 Oracle Database 19c를 사용했으며 설치과정은 이전 블로그 포스팅을 참조 해 진행 해 주세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://with-kami.tistory.com/1534863&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.07.23 - [Oracle Database] - 2장. Oracle DB 19c 설치 (Oracle Linux 8)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721731106363&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;2장. Oracle DB 19c 설치 (Oracle Linux 8)&quot; data-og-description=&quot;안녕하세요.&amp;lsquo;수상한 김토끼&amp;rsquo; 입니다.이 포스팅은 OGG 구성을 위해 Oracle Linux 8 위에 Oracle DB 19c를 설치하는 과정을 정리 한 내용입니다.설치는 크게 2단계로 진행되며 다음과 같습니다.Oracle DB 19c&quot; data-og-host=&quot;with-kami.tistory.com&quot; data-og-source-url=&quot;https://with-kami.tistory.com/1534863&quot; data-og-url=&quot;https://with-kami.tistory.com/1534863&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lwqu1/hyWCAKBKfl/4tVdCB9iMbSXakO7Rjxyrk/img.png?width=800&amp;amp;height=630&amp;amp;face=0_0_800_630,https://scrap.kakaocdn.net/dn/mzUcB/hyWCHiFLgr/HbPGKYMg1RdDceZKwEcmG1/img.png?width=800&amp;amp;height=630&amp;amp;face=0_0_800_630,https://scrap.kakaocdn.net/dn/VCYRx/hyWCFLVLRL/hsAWqe8ikwkZOupkaE0hOK/img.png?width=802&amp;amp;height=632&amp;amp;face=0_0_802_632&quot;&gt;&lt;a href=&quot;https://with-kami.tistory.com/1534863&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://with-kami.tistory.com/1534863&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lwqu1/hyWCAKBKfl/4tVdCB9iMbSXakO7Rjxyrk/img.png?width=800&amp;amp;height=630&amp;amp;face=0_0_800_630,https://scrap.kakaocdn.net/dn/mzUcB/hyWCHiFLgr/HbPGKYMg1RdDceZKwEcmG1/img.png?width=800&amp;amp;height=630&amp;amp;face=0_0_800_630,https://scrap.kakaocdn.net/dn/VCYRx/hyWCFLVLRL/hsAWqe8ikwkZOupkaE0hOK/img.png?width=802&amp;amp;height=632&amp;amp;face=0_0_802_632');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2장. Oracle DB 19c 설치 (Oracle Linux 8)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요.&amp;lsquo;수상한 김토끼&amp;rsquo; 입니다.이 포스팅은 OGG 구성을 위해 Oracle Linux 8 위에 Oracle DB 19c를 설치하는 과정을 정리 한 내용입니다.설치는 크게 2단계로 진행되며 다음과 같습니다.Oracle DB 19c&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;with-kami.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.oracle.com/tools/downloads/apex-downloads/&quot;&gt;Oracle APEX &amp;ndash; Downloads&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;페이지에서 설치파일을 다운 받은 후, 설치하려는 Oracle DB 서버에 업로드 해 줍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.oracle.com/tools/downloads/apex-downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.oracle.com/tools/downloads/apex-downloads/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721731069651&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Oracle APEX - Downloads&quot; data-og-description=&quot;Support Oracle APEX 24.1 is fully supported through Oracle Support Services on all Editions (EE, SE2, SE, and SE1) of the Oracle database, 19.3 or higher with a valid Oracle Database Technical Support agreement. APEX 24.1 can also be used with Oracle Datab&quot; data-og-host=&quot;www.oracle.com&quot; data-og-source-url=&quot;https://www.oracle.com/tools/downloads/apex-downloads/&quot; data-og-url=&quot;https://www.oracle.com/tools/downloads/apex-downloads/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.oracle.com/tools/downloads/apex-downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.oracle.com/tools/downloads/apex-downloads/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Oracle APEX - Downloads&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Support Oracle APEX 24.1 is fully supported through Oracle Support Services on all Editions (EE, SE2, SE, and SE1) of the Oracle database, 19.3 or higher with a valid Oracle Database Technical Support agreement. APEX 24.1 can also be used with Oracle Datab&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.oracle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;627&quot;&gt;&lt;span data-url=&quot;https://with-kami.duckdns.org/wp-content/uploads/2024/07/image-65-1024x627.png&quot; data-phocus=&quot;https://with-kami.duckdns.org/wp-content/uploads/2024/07/image-65-1024x627.png&quot;&gt;&lt;img src=&quot;https://with-kami.duckdns.org/wp-content/uploads/2024/07/image-65-1024x627.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fwith-kami.duckdns.org%2Fwp-content%2Fuploads%2F2024%2F07%2Fimage-65-1024x627.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;1024&quot; height=&quot;627&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;627&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여기에서는 apex라는 db와 별도의 계정을 생성하여 설치를 진행하였습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;작성일 기준 최신버전인 24.1 버전(apex_24.1.zip)을 서버에 업로드 후 압축을 풀어 주었습니다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721731491844&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[apex@apex apex_24.1]$ id
uid=54322(apex) gid=54331(apex) groups=54331(apex) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[apex@apex apex_24.1]$ pwd
/home/apex/apex_24.1
[apex@apex apex_24.1]$ ls
apexins1.sql                apex_rest_config.sql  apxdwngrd.sql       apxrtins2.sql       coreins4.sql
apexins2.sql                appins.sql            apxpatch_cdb.sql    apxrtins3.sql       coreins5.sql
apexins3.sql                apxappcon.sql         apxpatch_nocdb.sql  apxrtins_cdb.sql    coreins.sql
apexins_adb.sql             apxchpwd.sql          apxpatch.sql        apxrtins_nocdb.sql  dbcsconf.sql
apexins_cdb.sql             apxdevrm_cdb.sql      apxremov1.sql       apxrtins.sql        dbcsins.sql
apexins_nocdb.sql           apxdevrm_nocdb.sql    apxremov2.sql       apxsilentins.sql    devins.sql
apexins.sql                 apxdevrm.sql          apxremov_cdb.sql    builder             images
apex_rest_config_cdb.sql    apxdvins_cdb.sql      apxremov_nocdb.sql  core                LICENSE.txt
apex_rest_config_core.sql   apxdvins_nocdb.sql    apxremov.sql        coreins2.sql        load_trans.sql
apex_rest_config_nocdb.sql  apxdvins.sql          apxrtins1.sql       coreins3.sql        utilities
[apex@apex apex_24.1]$&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;설치파일 준비가 끝났으니 Oracle 환경변수를 정의 해 줍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Oracle 환경변수와 동일하게 scripts 경로를 생성하고 setEnv.sh 파일을 작성해 줍니다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721731508408&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[apex@apex scripts]$ vi setEnv.sh
# Oracle Settings

export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0
export TNS_ADMIN=$ORACLE_HOME/network/admin
export DATA_DIR=/oracle/app/oradata

export ORACLE_HOSTNAME=apex
export ORACLE_UNQNAME=apex
export ORACLE_SID=apex

export NLS_LANG=American_America.KO16MSWIN949
#export DISPLAY=$ORACLE_HOSTNAME:0.0
export ORA_NLS=$ORACLE_HOME/admin/data

export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:.:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

alias ss='sqlplus / as sysdba'&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;작성한 setEnv.sh 파일을 .bash_profile에 등록해 변수가 자동으로 등록될 수 있도록 해 주세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;설치파일과 환경준비가 마무리 되었으니 apex 설치를 진행 해 보겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;우선 압축을 해제한 apex 디렉토리로 이동 후 SQL*Plus 명령으로 Oracle DB에 접속 해 주세요.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721731530380&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[apex@apex apex_24.1]$ pwd
/home/apex/apex_24.1
[apex@apex apex_24.1]$ ss

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jul 15 06:53:50 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name: sys as sysdba
Enter password:

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;apex 설치를 위해 apexins.sql 스크립트를 아래와 같은 옵션으로 수행 해 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721731547780&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SQL&amp;gt; @apexins.sql SYSAUX SYSAUX TEMP /i/&lt;/code&gt;&lt;/pre&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721731568353&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SQL&amp;gt; @apexins.sql SYSAUX SYSAUX TEMP /i/
...set_appun.sql

PL/SQL procedure successfully completed.

... 중략 ...

Thank you for installing Oracle APEX 24.1.0

Oracle APEX is installed in the APEX_240100 schema.

The structure of the link to the Oracle APEX administration services is as follows:
http://host:port/ords/apex_admin

The structure of the link to the Oracle APEX development interface is as follows:
http://host:port/ords


timing for: Phase 3 (Switch)
Elapsed:    0.13


timing for: Complete Installation
Elapsed:    5.48

SYS&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;Apex 설치가 완료되면 다음 명령으로 Administrator 계정을 구성해 줘야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721731580233&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SQL&amp;gt; @apxchpwd.sql&lt;/code&gt;&lt;/pre&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721731588602&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SYS&amp;gt; @apxchpwd.sql
...set_appun.sql
================================================================================
This script can be used to change the password of an Oracle APEX
instance administrator. If the user does not yet exist, a user record will be
created.
================================================================================
Enter the administrator's username [ADMIN]
User &quot;ADMIN&quot; does not yet exist and will be created.
Enter ADMIN's email [ADMIN] test@test.test
Enter ADMIN's password []
Created instance administrator ADMIN.

SYS&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;다음으로 Public User 구성작업을 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721731601195&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# APEX_PUBLIC_USER Lock 해제
SQL&amp;gt; ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK ;

# APEX_PUBLIC_USER PW 변경
SQL&amp;gt; ALTER USER APEX_PUBLIC_USER IDENTIFIED BY new_password ;&lt;/code&gt;&lt;/pre&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721731609159&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SYS&amp;gt; ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK ;
SYS&amp;gt; ALTER USER APEX_PUBLIC_USER IDENTIFIED BY &quot;new_password&quot;;
SYS&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;계정 관련 작업은 마무리 되었고 Apex RESTful Data Service 사용을 위한 설정을 진행 해 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721731620110&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# APEX RESTful Data Service 구성
SQL&amp;gt; @apex_rest_config.sql&lt;/code&gt;&lt;/pre&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721731628307&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SYS&amp;gt; @apex_rest_config.sql

Enter a password for the APEX_LISTENER user              []
Enter a password for the APEX_REST_PUBLIC_USER user              []
...set_appun.sql
...setting session environment
...create APEX_LISTENER and APEX_REST_PUBLIC_USER users
...grants for APEX_LISTENER and ORDS_METADATA user
SYS&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여기까지 apex 개발환경 구성작업이 마무리 되었습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;실제 http환경으로 apex에 접속하기 위해서는 ORDS 구성이 필요한데, ORDS 구성은 다음 장에서 진행 해 보도록 하겠습니다.&lt;/p&gt;</description>
      <category>Oracle Database/Apex</category>
      <category>19c</category>
      <category>APEX</category>
      <category>DB</category>
      <category>oracle</category>
      <author>수상한 김토끼</author>
      <guid isPermaLink="true">https://with-kami.tistory.com/1534869</guid>
      <comments>https://with-kami.tistory.com/1534869#entry1534869comment</comments>
      <pubDate>Tue, 23 Jul 2024 19:48:10 +0900</pubDate>
    </item>
    <item>
      <title>11장. WebLogic &amp;ndash; Coherence 세션 그리드 서비스 &amp;ndash; 2.1 (WKA을 활용한 MultiCast Cluster)</title>
      <link>https://with-kami.tistory.com/1534868</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;수상한 김토끼&amp;rsquo; 입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;6장의 코히어런스 세션그리드 서비스 &amp;ndash; 2(&lt;a href=&quot;https://with-kami.tistory.com/1534841&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://with-kami.tistory.com/1534841&lt;/a&gt;)를 통해 별도의 코히어런스를 활용한 웹로직 &amp;ndash; 코히어런스 세션 클러스터링을 확인 해 보았습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://with-kami.tistory.com/1534841&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://with-kami.tistory.com/1534841&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721730686669&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;6장. WebLogic - Coherence 세션 그리드 서비스 - 2&quot; data-og-description=&quot;안녕하세요. '수상한 김토끼' 입니다. 5장의 코히어런스 세션그리드 서비스 - 1을 통해 코히어런스 기반 세션 클러스터링을 확인 해 보았습니다. 6장에서는 별도의 코히어런스를 활용하여 웹로직&quot; data-og-host=&quot;with-kami.tistory.com&quot; data-og-source-url=&quot;https://with-kami.tistory.com/1534841&quot; data-og-url=&quot;https://with-kami.tistory.com/1534841&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ulSJu/hyWCNDcqXJ/NUjq5j3NF1KdxjY8abn64K/img.png?width=800&amp;amp;height=472&amp;amp;face=0_0_800_472,https://scrap.kakaocdn.net/dn/bYlLJo/hyWCKfmWuT/TKcd2bVktDoLtkkPamhIu1/img.png?width=800&amp;amp;height=472&amp;amp;face=0_0_800_472,https://scrap.kakaocdn.net/dn/bBPSr4/hyWCHwdQqM/UnVCxlwubjIzvaTy9y4tr1/img.png?width=1280&amp;amp;height=756&amp;amp;face=0_0_1280_756&quot;&gt;&lt;a href=&quot;https://with-kami.tistory.com/1534841&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://with-kami.tistory.com/1534841&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ulSJu/hyWCNDcqXJ/NUjq5j3NF1KdxjY8abn64K/img.png?width=800&amp;amp;height=472&amp;amp;face=0_0_800_472,https://scrap.kakaocdn.net/dn/bYlLJo/hyWCKfmWuT/TKcd2bVktDoLtkkPamhIu1/img.png?width=800&amp;amp;height=472&amp;amp;face=0_0_800_472,https://scrap.kakaocdn.net/dn/bBPSr4/hyWCHwdQqM/UnVCxlwubjIzvaTy9y4tr1/img.png?width=1280&amp;amp;height=756&amp;amp;face=0_0_1280_756');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;6장. WebLogic - Coherence 세션 그리드 서비스 - 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. '수상한 김토끼' 입니다. 5장의 코히어런스 세션그리드 서비스 - 1을 통해 코히어런스 기반 세션 클러스터링을 확인 해 보았습니다. 6장에서는 별도의 코히어런스를 활용하여 웹로직&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;with-kami.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 장에서는 6장에서 활용한 유니캐스트가 아닌 멀티캐스트 방식으로 같은 기능을 구현하는 내용을 정리하게 되었는데요, 클라우드 환경에서 해당 아키텍처를 구현하는 과정에서 클라우드 특성상 유니캐스트 방식은 허용되지 않아 또 다른 클러스터 구성 방식인 멀티캐스트 WKA (Well Known Address)을 활용하여 구현 해 보았습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;WKA (Well Known Address)를 사용하는 만큼 이를 검증하기 위해 코히어런스와 웹로직 서버를 분리하여 각각의 IP를 가진 서버들 간의 클러스터로 구성되었음을 알려 드립니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 구성을 응용하면 (코히어런스 + 톰캣), (코히어런스 + 웹로직 + 톰캣)등의 구성에도 적용이 가능하며 비용이 저렴한 (웹로직 스탠다드 라이선스 + 코히어런스 라이선스) 조합으로 웹로직 엔터프라이즈 라이선스에서 제공되는 코히어런스 기반 세션 클러스터링 적용이 가능합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 블로그 글은 미들웨어 경험이 없으신 분들도 쉽게 따라 하실 수 있도록 쉽게 작성하는 것이 목표입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;설명을 보고 진행하시다가 궁금하신 내용은 댓글로 문의하시면 가능한 범위 내에서 알려 드리도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 코히어런스 설정 변경&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;6장과 동일한 방식으로 코히어런스와 웹로직을 구성한 후 설정부분만 다음과 같이 변경하여 적용하면 멀티캐스트(WKA)방식 적용이 가능합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;우선 멀티캐스트 관련 설정을 위해 JAVA_OPT를 수정 해 줍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위 cache-server.sh 파일에서 설정에 맞도록 수정해야 하는 부분은 크게 3부분으로 아래 스크린샷에서 확인하실 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1721730715954&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 추가 항목 : 멀티캐스트 관련 설정
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.localport=9000&quot;           : 코히어런스 클러스터의 Listen Port
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.localhost=10.0.0.58&quot;      : 코히어런스 클러스터의 Listen IP
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.wka=10.0.0.58&quot;            : 클러스터에 속할 서버들의 IP, 여러대는 wka2, wka3등으로 구분하여 추가
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.wka2=10.0.0.227&quot;         

# 제거 항목 : 유니캐스트 관련 설정
#JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.clusteraddress=224.2.1.2&quot;
#JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.clusterport=14199&quot;
#JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.ttl=1&quot;

# 예제에서 10.0.0.58은 코히어런스 서버, 10.0.0.227은 웹로직 서버이며, 이와 같이 구성하면 10.0.0.58:9000 으로 코히어런스 서버가 동작하게 됩니다.&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;수정 후 cache-server.sh 파일입니다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721730750853&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[coherence@coherence bin]$ cat cache-server.sh
#!/bin/sh

# This will start a cache server

# specify the Coherence installation directory
SCRIPT_PATH=&quot;${0}&quot;
while [ -h &quot;${SCRIPT_PATH}&quot; ]; do
  LS=`ls -ld &quot;${SCRIPT_PATH}&quot;`
  LINK=`expr &quot;${LS}&quot; : '.*-&amp;gt; \(.*\)$'`
  if [ `expr &quot;${LINK}&quot; : '/.*'` &amp;gt; /dev/null ]; then
    SCRIPT_PATH=&quot;${LINK}&quot;
  else
    SCRIPT_PATH=&quot;`dirname &quot;${SCRIPT_PATH}&quot;`/${LINK}&quot;
  fi
done

CURRENT_DIR=`pwd`
cd `dirname ${SCRIPT_PATH}` &amp;gt; /dev/null
SCRIPT_PATH=`pwd`
COHERENCE_HOME=`dirname $SCRIPT_PATH`
cd ${CURRENT_DIR}

# specify the JVM heap size
MEMORY=1g

# jvm ipv4 set
IPV4=-Djava.net.preferIPv4Stack=true

if [ ! -f ${COHERENCE_HOME}/bin/cache-server.sh ]; then
  echo &quot;coherence.sh: must be run from the Coherence installation directory.&quot;
  exit
fi

if [ -f $JAVA_HOME/bin/java ]; then
  JAVAEXEC=$JAVA_HOME/bin/java
else
  JAVAEXEC=java
fi

if [ &quot;$1&quot; = &quot;-jmx&quot; ]; then
    JMXPROPERTIES=&quot;-Dcoherence.management=all -Dcoherence.management.remote=true&quot;
    shift
fi

COHERENCE_NAME='weblogic_session_cluster'

JAVA_OPTS=&quot;-Xms${MEMORY} -Xmx${MEMORY}&quot;
JAVA_OPTS=&quot;${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom&quot;
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.cacheconfig=default-session-cache-config.xml&quot;
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.session.localstorage=true&quot;
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.cluster=${COHERENCE_NAME}&quot;
#JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.clusteraddress=224.2.1.2&quot;
#JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.clusterport=14199&quot;
#JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.ttl=1&quot;
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.localport=9000&quot;
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.localhost=10.0.0.58&quot;
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.wka=10.0.0.58&quot;
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.wka2=10.0.0.227&quot;

$JAVAEXEC -server -showversion -cp &quot;$COHERENCE_HOME/lib/coherence.jar:${COHERENCE_HOME}/lib/coherence-web.jar&quot; $JAVA_OPTS com.tangosol.net.DefaultCacheServer $1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;수정이 완료 되면 cache-server.sh 파일을 실행하여 코히어런스 서버를 기동시켜 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721730767133&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[coherence@coherence bin]$ ./cache-server.sh
java version &quot;1.8.0_321&quot;
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)

2024-07-22 21:46:13.835/0.493 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=n/a): Loaded operational configuration from &quot;jar:file:/home/coherence/coherence14c/coherence/lib/coherence.jar!/tangosol-coherence.xml&quot;
2024-07-22 21:46:13.935/0.593 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=n/a): Loaded operational overrides from &quot;jar:file:/home/coherence/coherence14c/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml&quot;
2024-07-22 21:46:13.935/0.593 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=n/a): Optional configuration override &quot;/tangosol-coherence-override.xml&quot; is not specified
2024-07-22 21:46:13.939/0.597 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=n/a): Optional configuration override &quot;cache-factory-config.xml&quot; is not specified
2024-07-22 21:46:13.939/0.597 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=n/a): Optional configuration override &quot;cache-factory-builder-config.xml&quot; is not specified
2024-07-22 21:46:13.939/0.597 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=n/a): Optional configuration override &quot;/custom-mbeans.xml&quot; is not specified

Oracle Coherence Version 14.1.1.0.0 Build 77467
 Grid Edition: Development mode
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

2024-07-22 21:46:14.169/0.827 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=n/a): Loaded cache configuration from &quot;jar:file:/home/coherence/coherence14c/coherence/lib/coherence-web.jar!/default-session-cache-config.xml&quot;
2024-07-22 21:46:14.597/1.255 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=n/a): Created cache factory com.tangosol.net.ExtensibleConfigurableCacheFactory
2024-07-22 21:46:14.878/1.537 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=n/a): TCMP bound to /10.0.0.58:9000 using SystemDatagramSocketProvider
2024-07-22 21:46:18.172/4.830 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=NameService:TcpAcceptor, member=n/a): TcpAcceptor now listening for connections on coherence:9000.3
2024-07-22 21:46:18.173/4.831 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=Cluster, member=n/a): NameService now listening for connections on coherence:7574.3
2024-07-22 21:46:18.174/4.832 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=Cluster, member=n/a): Created a new cluster &quot;weblogic_session_cluster&quot; with Member(Id=1, Timestamp=2024-07-22 21:46:14.929, Address=10.0.0.58:9000, MachineId=62836, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:coherence,process:5281, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=2)
2024-07-22 21:46:18.195/4.853 Oracle Coherence GE 14.1.1.0.0 &amp;lt;D5&amp;gt; (thread=Transport:TransportService, member=n/a): Service TransportService is bound to tmb://10.0.0.58:9000.60504
2024-07-22 21:46:18.205/4.863 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=Transport:TransportService, member=n/a): Service TransportService joined the cluster with senior service member 1
2024-07-22 21:46:18.208/4.866 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=n/a): Started cluster Name=weblogic_session_cluster, ClusterPort=7574

WellKnownAddressList(
  10.0.0.58
  )

MasterMemberSet(
  ThisMember=Member(Id=1, Timestamp=2024-07-22 21:46:14.929, Address=10.0.0.58:9000, MachineId=62836, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:coherence,process:5281, Role=CoherenceServer)
  OldestMember=Member(Id=1, Timestamp=2024-07-22 21:46:14.929, Address=10.0.0.58:9000, MachineId=62836, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:coherence,process:5281, Role=CoherenceServer)
  ActualMemberSet=MemberSet(Size=1
    Member(Id=1, Timestamp=2024-07-22 21:46:14.929, Address=10.0.0.58:9000, MachineId=62836, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:coherence,process:5281, Role=CoherenceServer)
    )
  MemberId|ServiceJoined|MemberState|Version
    1|2024-07-22 21:46:14.929|JOINED|14.1.1.0.0
  RecycleMillis=1200000
  RecycleSet=MemberSet(Size=0
    )
  )

TcpRing{Connections=[]}
IpMonitor{Addresses=0, Timeout=15s}

2024-07-22 21:46:18.223/4.881 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=Invocation:Management, member=1): Service Management joined the cluster with senior service member 1
2024-07-22 21:46:18.267/4.925 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=1): Loaded Reporter configuration from &quot;jar:file:/home/coherence/coherence14c/coherence/lib/coherence.jar!/reports/report-group.xml&quot;
2024-07-22 21:46:18.305/4.963 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=1): JMXConnectorServer now listening for connections on coherence
2024-07-22 21:46:18.318/4.976 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=1): Loaded Reporter configuration from &quot;jar:file:/home/coherence/coherence14c/coherence/lib/coherence.jar!/reports/report-group.xml&quot;
2024-07-22 21:46:18.372/5.030 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=ReplicatedCache:oracle.coherence.web:ReplicatedSessionsMisc, member=1): Service oracle.coherence.web:ReplicatedSessionsMisc joined the cluster with senior service member 1
2024-07-22 21:46:18.519/5.177 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=1): Service oracle.coherence.web:DistributedSessions joined the cluster with senior service member 1
2024-07-22 21:46:18.535/5.193 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=1): Service oracle.coherence.web:DistributedSessions: sending PartitionConfig ConfigSync to all
2024-07-22 21:46:18.563/5.221 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=1): This member has become the distribution coordinator for MemberSet(Size=1
  Member(Id=1, Timestamp=2024-07-22 21:46:14.929, Address=10.0.0.58:9000, MachineId=62836, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:coherence,process:5281, Role=CoherenceServer)
  )
2024-07-22 21:46:18.566/5.224 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=main, member=1):
Services
  (
  ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, OldestMemberId=1}
  TransportService{Name=TransportService, State=(SERVICE_STARTED), Id=1, OldestMemberId=1}
  InvocationService{Name=Management, State=(SERVICE_STARTED), Id=2, OldestMemberId=1}
  ReplicatedCache{Name=oracle.coherence.web:ReplicatedSessionsMisc, State=(SERVICE_STARTED), Id=3, OldestMemberId=1}
  PartitionedCache{Name=oracle.coherence.web:DistributedSessions, State=(SERVICE_STARTED), Id=4, OldestMemberId=1, LocalStorage=enabled, PartitionCount=257, BackupCount=1, AssignedPartitions=0, BackupPartitions=0, CoordinatorId=1}
  )

Started DefaultCacheServer...

2024-07-22 21:46:18.618/5.276 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=1): Partition ownership has stabilized with 1 nodes&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;WKA방식의 멀티캐스트의 적용여부는 &amp;lsquo;WellKnownAddressList&amp;rsquo;항목으로 IP가 로그에 출력되는 것을 통해 확인이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1721730783730&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WellKnownAddressList(
  10.0.0.58
  )&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;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;코히어런스 설정이 마무리 되었으니 웹로직을 설정해 주겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 웹로직 설정 변경&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존 웹로직 기동 스크립트에 아래 JAVA 옵션을 추가 후 기동 해 주면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1721730810498&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.session.localstorage=false&quot;   : 로컬 스토리지 사용 안함
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.wka=10.0.0.58&quot;                : 코히어런스 클러스터 IP
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.wka.port=9000&quot;                : 코히어런스 클러스터 Port&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;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;수정 한 스트립트는 아래와 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721730830215&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[weblogic@weblogic script]$ cat startServerCoheWeb1.sh
#!/bin/bash

SERVER_NAME=&quot;Server-Cohe-Web-1&quot;
ADMIN_SERVER_URL=&quot;t3://localhost:7001&quot;
DOMAIN_HOME=&quot;/home/weblogic/domains/kami_domain&quot;
LOG_DIR=&quot;${DOMAIN_HOME}/logs&quot;

if [ &quot;`whoami`&quot; != &quot;weblogic&quot; ]; then
  echo I am not weblogic user.
  exit
fi

if [ &quot;`ps -auwwx|grep java|grep ${SERVER_NAME} |awk '{print $2}'`&quot; != &quot;&quot; ]; then
  echo ${SERVER_NAME} Server is aready RUNNING
  exit
fi

MEMORY=&quot;-Xms1024m -Xmx1024m -XX:NewSize=160m -XX:MaxNewSize=160m -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=90 -Xss256k&quot;

GC=&quot;-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -Xloggc:${LOG_DIR}/gc/${SERVER_NAME}.log&quot;

ANALYSIS=&quot;-XX:+PrintClassHistogram -XX:+HeapDumpOnOutOfMemoryError&quot;

BOOT_PROPERTIES=&quot;-Dweblogic.system.BootIdentityFile=${DOMAIN_HOME}/servers/AdminServer/security/boot.properties&quot;

ETC_OPT=&quot;-XX:SoftRefLRUPolicyMSPerMB=1 -showversion -XX:+AggressiveOpts -XX:-UseBiasedLocking -XX:+DisableExplicitGC -Dweblogic.ProductionModeEnabled=true -Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer -Dweblogic.SocketReaders=3 -Dweblogic.management.discover=false -Dweblogic.diagnostics.debug.DebugLogger.DISABLED=true -Doracle.jdbc.defaultRowPrefetch=200 -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0 -Djavax.xml.parsers.DocumentBuilderFactory=weblogic.xml.jaxp.RegistryDocumentBuilderFactory -Djava.net.preferIPv4Stack=true -Djava.security.egd=file:/dev/./urandom&quot;

COHERENCE_NAME='weblogic_session_cluster'

JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.cluster=${COHERENCE_NAME}&quot;

JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.session.localstorage=false&quot;
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.wka=10.0.0.58&quot;
JAVA_OPTS=&quot;${JAVA_OPTS} -Dcoherence.wka.port=9000&quot;

USER_MEM_ARGS=&quot;${MEMORY} ${GC} ${ANALYSIS} ${BOOT_PROPERTIES} ${ETC_OPT} ${JAVA_OPTS}&quot;

echo $USER_MEM_ARGS

EXT_PRE_CLASSPATH=&quot;&quot;

EXT_POST_CLASSPATH=&quot;&quot;

export USER_MEM_ARGS EXT_PRE_CLASSPATH EXT_POST_CLASSPATH

mv ${LOG_DIR}/${SERVER_NAME}.out ${LOG_DIR}/${SERVER_NAME}.out.`date +'%m%d_%H%M%S'`
mv ${LOG_DIR}/gc/${SERVER_NAME}.out ${LOG_DIR}/gc/${SERVER_NAME}.out.`date +'%m%d_%H%M%S'`

nohup ${DOMAIN_HOME}/bin/startManagedWebLogic.sh ${SERVER_NAME} ${ADMIN_SERVER_URL} &amp;gt; ${LOG_DIR}/${SERVER_NAME}.out 2&amp;gt;&amp;amp;1 &amp;amp;

tail -f ${LOG_DIR}/${SERVER_NAME}.out&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;수정 후 서버를 기동 해 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721730845704&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[weblogic@weblogic script]$ ./startServerCoheWeb1.sh
-Xms1024m -Xmx1024m -XX:NewSize=160m -XX:MaxNewSize=160m -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=90 -Xss256k -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -Xloggc:/home/weblogic/domains/kami_domain/logs/gc/Server-Cohe-Web-1.log -XX:+PrintClassHistogram -XX:+HeapDumpOnOutOfMemoryError -Dweblogic.system.BootIdentityFile=/home/weblogic/domains/kami_domain/servers/AdminServer/security/boot.properties -XX:SoftRefLRUPolicyMSPerMB=1 -showversion -XX:+AggressiveOpts -XX:-UseBiasedLocking -XX:+DisableExplicitGC -Dweblogic.ProductionModeEnabled=true -Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer -Dweblogic.SocketReaders=3 -Dweblogic.management.discover=false -Dweblogic.diagnostics.debug.DebugLogger.DISABLED=true -Doracle.jdbc.defaultRowPrefetch=200 -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0 -Djavax.xml.parsers.DocumentBuilderFactory=weblogic.xml.jaxp.RegistryDocumentBuilderFactory -Djava.net.preferIPv4Stack=true -Djava.security.egd=file:/dev/./urandom -Dcoherence.cluster=weblogic_session_cluster -Dcoherence.session.localstorage=false -Dcoherence.wka=10.0.0.58 -Dcoherence.wka.port=9000
mv: cannot stat '/home/weblogic/domains/kami_domain/logs/gc/Server-Cohe-Web-1.out': No such file or directory
.
.
JAVA Memory arguments: -Xms1024m -Xmx1024m -XX:NewSize=160m -XX:MaxNewSize=160m -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=90 -Xss256k -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -Xloggc:/home/weblogic/domains/kami_domain/logs/gc/Server-Cohe-Web-1.log -XX:+PrintClassHistogram -XX:+HeapDumpOnOutOfMemoryError -Dweblogic.system.BootIdentityFile=/home/weblogic/domains/kami_domain/servers/AdminServer/security/boot.properties -XX:SoftRefLRUPolicyMSPerMB=1 -showversion -XX:+AggressiveOpts -XX:-UseBiasedLocking -XX:+DisableExplicitGC -Dweblogic.ProductionModeEnabled=true -Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer -Dweblogic.SocketReaders=3 -Dweblogic.management.discover=false -Dweblogic.diagnostics.debug.DebugLogger.DISABLED=true -Doracle.jdbc.defaultRowPrefetch=200 -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0 -Djavax.xml.parsers.DocumentBuilderFactory=weblogic.xml.jaxp.RegistryDocumentBuilderFactory -Djava.net.preferIPv4Stack=true -Djava.security.egd=file:/dev/./urandom  -Dcoherence.cluster=weblogic_session_cluster -Dcoherence.session.localstorage=false -Dcoherence.wka=10.0.0.58 -Dcoherence.wka.port=9000
.
CLASSPATH=/home/weblogic/jdk1.8.0_321/lib/tools.jar:/home/weblogic/weblogic14c/wlserver/server/lib/weblogic.jar:/home/weblogic/weblogic14c/wlserver/../oracle_common/modules/thirdparty/ant-contrib-1.0b3.jar:/home/weblogic/weblogic14c/wlserver/modules/features/oracle.wls.common.nodemanager.jar:/home/weblogic/weblogic14c/wlserver/common/derby/lib/derbyclient.jar:/home/weblogic/weblogic14c/wlserver/common/derby/lib/derby.jar:/home/weblogic/jdk1.8.0_321/jre/lib:/home/weblogic/jdk1.8.0_321/lib/tools.jar
.
PATH=/home/weblogic/domains/kami_domain/bin:/home/weblogic/weblogic14c/wlserver/server/bin:/home/weblogic/weblogic14c/wlserver/../oracle_common/modules/thirdparty/org.apache.ant/1.10.5.0.0/apache-ant-1.10.5/bin:/home/weblogic/jdk1.8.0_321/jre/bin:/home/weblogic/jdk1.8.0_321/bin:/home/weblogic/.local/bin:/home/weblogic/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/weblogic/jdk1.8.0_321/bin
.
***************************************************
*  To start WebLogic Server, use a username and   *
*  password assigned to an admin-level user.  For *
*  server administration, use the WebLogic Server *
*  console at http://hostname:port/console        *
***************************************************
Starting WLS with line:
/home/weblogic/jdk1.8.0_321/bin/java -server   -Xms1024m -Xmx1024m -XX:NewSize=160m -XX:MaxNewSize=160m -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=90 -Xss256k -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -Xloggc:/home/weblogic/domains/kami_domain/logs/gc/Server-Cohe-Web-1.log -XX:+PrintClassHistogram -XX:+HeapDumpOnOutOfMemoryError -Dweblogic.system.BootIdentityFile=/home/weblogic/domains/kami_domain/servers/AdminServer/security/boot.properties -XX:SoftRefLRUPolicyMSPerMB=1 -showversion -XX:+AggressiveOpts -XX:-UseBiasedLocking -XX:+DisableExplicitGC -Dweblogic.ProductionModeEnabled=true -Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer -Dweblogic.SocketReaders=3 -Dweblogic.management.discover=false -Dweblogic.diagnostics.debug.DebugLogger.DISABLED=true -Doracle.jdbc.defaultRowPrefetch=200 -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0 -Djavax.xml.parsers.DocumentBuilderFactory=weblogic.xml.jaxp.RegistryDocumentBuilderFactory -Djava.net.preferIPv4Stack=true -Djava.security.egd=file:/dev/./urandom  -Dcoherence.cluster=weblogic_session_cluster -Dcoherence.session.localstorage=false -Dcoherence.wka=10.0.0.58 -Dcoherence.wka.port=9000 -cp /home/weblogic/weblogic14c/wlserver/server/lib/weblogic-launcher.jar -Dlaunch.use.env.classpath=true -Dweblogic.Name=Server-Cohe-Web-1 -Djava.security.policy=/home/weblogic/weblogic14c/wlserver/server/lib/weblogic.policy  -Djava.system.class.loader=com.oracle.classloader.weblogic.LaunchClassLoader  -javaagent:/home/weblogic/weblogic14c/wlserver/server/lib/debugpatch-agent.jar -da -Dwls.home=/home/weblogic/weblogic14c/wlserver/server -Dweblogic.home=/home/weblogic/weblogic14c/wlserver/server   -Dweblogic.management.server=t3://localhost:7001  -Djava.endorsed.dirs=/home/weblogic/jdk1.8.0_321/jre/lib/endorsed:/home/weblogic/weblogic14c/wlserver/../oracle_common/modules/endorsed:/home/weblogic/weblogic14c/wlserver/modules/endorsed  weblogic.Server
java version &quot;1.8.0_321&quot;
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)

&amp;lt;Jul 22, 2024 12:48:16 PM GMT&amp;gt; &amp;lt;Info&amp;gt; &amp;lt;Security&amp;gt; &amp;lt;BEA-090905&amp;gt; &amp;lt;Disabling the CryptoJ JCE Provider self-integrity check for better startup performance. To enable this check, specify -Dweblogic.security.allowCryptoJDefaultJCEVerification=true.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:17 PM GMT&amp;gt; &amp;lt;Info&amp;gt; &amp;lt;Security&amp;gt; &amp;lt;BEA-090906&amp;gt; &amp;lt;Changing the default Random Number Generator in RSA CryptoJ from ECDRBG128 to HMACDRBG. To disable this change, specify -Dweblogic.security.allowCryptoJDefaultPRNG=true.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:17 PM GMT&amp;gt; &amp;lt;Info&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000377&amp;gt; &amp;lt;Starting WebLogic Server with Java HotSpot(TM) 64-Bit Server VM Version 25.321-b07 from Oracle Corporation.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:19 PM GMT&amp;gt; &amp;lt;Info&amp;gt; &amp;lt;Management&amp;gt; &amp;lt;BEA-141107&amp;gt; &amp;lt;Version: WebLogic Server 14.1.1.0.0  Thu Mar 26 03:15:09 GMT 2020 2000885&amp;gt;
&amp;lt;Jul 22, 2024 12:48:19 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000365&amp;gt; &amp;lt;Server state changed to STARTING.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:19 PM GMT&amp;gt; &amp;lt;Info&amp;gt; &amp;lt;WorkManager&amp;gt; &amp;lt;BEA-002900&amp;gt; &amp;lt;Initializing self-tuning thread pool.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:19,984 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Log Management&amp;gt; &amp;lt;BEA-170019&amp;gt; &amp;lt;The server log file weblogic.logging.FileStreamHandler instance=86723058
Current log file=/home/weblogic/domains/kami_domain/servers/Server-Cohe-Web-1/logs/Server-Cohe-Web-1.log
Rotation dir=/home/weblogic/domains/kami_domain/servers/Server-Cohe-Web-1/logs
 is opened. All server side log events will be written to this file.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:20,724 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Security&amp;gt; &amp;lt;BEA-090946&amp;gt; &amp;lt;Security pre-initializing using security realm: myrealm&amp;gt;
&amp;lt;Jul 22, 2024 12:48:21,110 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Security&amp;gt; &amp;lt;BEA-090947&amp;gt; &amp;lt;Security post-initializing using security realm: myrealm&amp;gt;
&amp;lt;Jul 22, 2024 12:48:22,747 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Security&amp;gt; &amp;lt;BEA-090082&amp;gt; &amp;lt;Security initialized using administrative security realm: myrealm&amp;gt;
&amp;lt;Jul 22, 2024 12:48:23,158 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;JMX&amp;gt; &amp;lt;BEA-149512&amp;gt; &amp;lt;JMX Connector Server started at service:jmx:iiop://10.0.0.227:9001/jndi/weblogic.management.mbeanservers.runtime.&amp;gt;
2024-07-22 12:48:23.916/8.294 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Loaded operational configuration from &quot;jar:file:/home/weblogic/weblogic14c/coherence/lib/coherence.jar!/tangosol-coherence.xml&quot;
2024-07-22 12:48:24.010/8.389 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Loaded operational overrides from &quot;jar:file:/home/weblogic/weblogic14c/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml&quot;
2024-07-22 12:48:24.014/8.392 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Optional configuration override &quot;/tangosol-coherence-override.xml&quot; is not specified
2024-07-22 12:48:24.022/8.401 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Optional configuration override &quot;cache-factory-config.xml&quot; is not specified
2024-07-22 12:48:24.025/8.404 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Optional configuration override &quot;cache-factory-builder-config.xml&quot; is not specified
2024-07-22 12:48:24.028/8.406 Oracle Coherence 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Optional configuration override &quot;/custom-mbeans.xml&quot; is not specified

Oracle Coherence Version 14.1.1.0.0 Build 77467
 Grid Edition: Development mode
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

&amp;lt;Jul 22, 2024 12:48:24,736 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000365&amp;gt; &amp;lt;Server state changed to STANDBY.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:24,736 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000365&amp;gt; &amp;lt;Server state changed to STARTING.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:24,798 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Log Management&amp;gt; &amp;lt;BEA-170036&amp;gt; &amp;lt;The Logging monitoring service timer has started to check for logged message counts every 30 seconds.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:25,125 PM GMT&amp;gt; &amp;lt;Warning&amp;gt; &amp;lt;HTTP&amp;gt; &amp;lt;BEA-101369&amp;gt; &amp;lt;WebAppModule(test:test): The encoding jsp-descriptor parameter has been deprecated. Consider declaring the encoding in the jsp-config element (web.xml) or as a page directive (pageEncoding) instead.&amp;gt;
2024-07-22 12:48:25.322/9.701 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Loaded cache configuration from &quot;jar:file:/home/weblogic/weblogic14c/coherence/lib/coherence-web.jar!/default-session-cache-config.xml&quot;
2024-07-22 12:48:26.101/10.480 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Created cache factory com.tangosol.net.ExtensibleConfigurableCacheFactory
2024-07-22 12:48:26.646/11.024 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): TCMP bound to /10.0.0.227:41945 using SystemDatagramSocketProvider
2024-07-22 12:48:26.935/11.313 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=Cluster, member=n/a): Member(Id=1, Timestamp=2024-07-22 12:46:14.929, Address=10.0.0.58:9000, MachineId=62836, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:coherence,process:5281, Role=CoherenceServer) joined Cluster with senior member 1
2024-07-22 12:48:26.940/11.318 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=Cluster, member=n/a): This Member(Id=2, Timestamp=2024-07-22 12:48:26.757, Address=10.0.0.227:41945, MachineId=6282, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:weblogic,process:86359, Role=WeblogicServer, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=2) joined cluster &quot;weblogic_session_cluster&quot; with senior Member(Id=1, Timestamp=2024-07-22 12:46:14.929, Address=10.0.0.58:9000, MachineId=62836, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:coherence,process:5281, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=2)
2024-07-22 12:48:26.988/11.366 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=NameService:TcpAcceptor, member=n/a): TcpAcceptor now listening for connections on weblogic.sub05260159430.coherencevcn.oraclevcn.com:41945.3
2024-07-22 12:48:26.989/11.367 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=Cluster, member=n/a): NameService now listening for connections on weblogic.sub05260159430.coherencevcn.oraclevcn.com:7574.3
2024-07-22 12:48:27.015/11.394 Oracle Coherence GE 14.1.1.0.0 &amp;lt;D5&amp;gt; (thread=Transport:TransportService, member=n/a): Service TransportService is bound to tmb://10.0.0.227:41945.50155
2024-07-22 12:48:27.029/11.407 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=Transport:TransportService, member=n/a): Service TransportService joined the cluster with senior service member 1
2024-07-22 12:48:27.047/11.425 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=SelectionService(channels=7, selector=MultiplexedSelector(sun.nio.ch.EPollSelectorImpl@c33210a), id=1239965793), member=n/a): Connection established with tmb://10.0.0.58:9000.60504
2024-07-22 12:48:27.050/11.428 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Started cluster Name=weblogic_session_cluster, ClusterPort=7574

WellKnownAddressList(
  10.0.0.58
  )

MasterMemberSet(
  ThisMember=Member(Id=2, Timestamp=2024-07-22 12:48:26.757, Address=10.0.0.227:41945, MachineId=6282, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:weblogic,process:86359, Role=WeblogicServer)
  OldestMember=Member(Id=1, Timestamp=2024-07-22 12:46:14.929, Address=10.0.0.58:9000, MachineId=62836, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:coherence,process:5281, Role=CoherenceServer)
  ActualMemberSet=MemberSet(Size=2
    Member(Id=1, Timestamp=2024-07-22 12:46:14.929, Address=10.0.0.58:9000, MachineId=62836, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:coherence,process:5281, Role=CoherenceServer)
    Member(Id=2, Timestamp=2024-07-22 12:48:26.757, Address=10.0.0.227:41945, MachineId=6282, Location=site:sub05260159430.coherencevcn.oraclevcn.com,machine:weblogic,process:86359, Role=WeblogicServer)
    )
  MemberId|ServiceJoined|MemberState|Version
    1|2024-07-22 12:46:14.929|JOINED|14.1.1.0.0,
    2|2024-07-22 12:48:26.757|JOINED|14.1.1.0.0
  RecycleMillis=1200000
  RecycleSet=MemberSet(Size=0
    )
  )

TcpRing{Connections=[1]}
IpMonitor{Addresses=1, Timeout=15s}

2024-07-22 12:48:27.083/11.461 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=Invocation:Management, member=2): Service Management joined the cluster with senior service member 1
2024-07-22 12:48:27.105/11.484 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)', member=2): Loaded Reporter configuration from &quot;jar:file:/home/weblogic/weblogic14c/coherence/lib/coherence.jar!/reports/report-group.xml&quot;
2024-07-22 12:48:27.987/12.366 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=DistributedCache:oracle.coherence.web:DistributedSessions, member=2): Service oracle.coherence.web:DistributedSessions joined the cluster with senior service member 1
2024-07-22 12:48:28.149/12.527 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)', member=2): Configured session model &quot;SplitHttpSessionCollection&quot;:
  Clustered Session Cache Name=session-storage
  Local Session Cache Name=local-session-storage
  Local Session Attribute Cache Name=local-attribute-storage
  SessionDistributionController Class Name=
  AttributeScopeController Class Name=com.tangosol.coherence.servlet.AbstractHttpSessionCollection$ApplicationScopeController
  Maximum Session Inactive Seconds=3600
  Session ID Character Length=52
  Session Get Lock Timeout=300
  Suspect Attribute Detection=true
  Strict &quot;Servlet Specification&quot; Exception Handling=true
  Sticky Session Ownership=false
  Sticky Session Ownership Service Name=SessionOwnership
  Assume Session Locality for Reaping=false
  Parallel Session Reaping=false
  Allow Local Attributes=false
  Use Default Session ID Decoding=true
  Use Default Session ID Encoding=false
  Session ID Affinity Token=null
  Session ID Replace Affinity Token=false
  Session Expiry Filter Factory=
  Session Access Debug Logging Enabled=false
  Session Access Debug Logging Filter=
  Session Locking Mode=none
  Session Reaping Mechanism=Default
Jul 22, 2024 12:48:28 PM com.tangosol.coherence.servlet.AbstractHttpSessionCollection configure
INFO: Configured session model &quot;SplitHttpSessionCollection&quot;:
  Clustered Session Cache Name=session-storage
  Local Session Cache Name=local-session-storage
  Local Session Attribute Cache Name=local-attribute-storage
  SessionDistributionController Class Name=
  AttributeScopeController Class Name=com.tangosol.coherence.servlet.AbstractHttpSessionCollection$ApplicationScopeController
  Maximum Session Inactive Seconds=3600
  Session ID Character Length=52
  Session Get Lock Timeout=300
  Suspect Attribute Detection=true
  Strict &quot;Servlet Specification&quot; Exception Handling=true
  Sticky Session Ownership=false
  Sticky Session Ownership Service Name=SessionOwnership
  Assume Session Locality for Reaping=false
  Parallel Session Reaping=false
  Allow Local Attributes=false
  Use Default Session ID Decoding=true
  Use Default Session ID Encoding=false
  Session ID Affinity Token=null
  Session ID Replace Affinity Token=false
  Session Expiry Filter Factory=
  Session Access Debug Logging Enabled=false
  Session Access Debug Logging Filter=
  Session Locking Mode=none
  Session Reaping Mechanism=Default
2024-07-22 12:48:28.211/12.590 Oracle Coherence GE 14.1.1.0.0 &amp;lt;Info&amp;gt; (thread=[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)', member=2): Registering MBean using object name &quot;type=WebLogicHttpSessionManager,nodeId=2,appId=testtest&quot;
Jul 22, 2024 12:48:28 PM com.tangosol.coherence.servlet.SessionHelper registerMBean
INFO: Registering MBean using object name &quot;type=WebLogicHttpSessionManager,nodeId=2,appId=testtest&quot;
&amp;lt;Jul 22, 2024 12:48:28,444 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Log Management&amp;gt; &amp;lt;BEA-170027&amp;gt; &amp;lt;The server has successfully established a connection with the Domain level Diagnostic Service.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:28,934 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000365&amp;gt; &amp;lt;Server state changed to ADMIN.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:28,985 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000365&amp;gt; &amp;lt;Server state changed to RESUMING.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:29,033 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Server&amp;gt; &amp;lt;BEA-002613&amp;gt; &amp;lt;Channel &quot;Default[1]&quot; is now listening on 127.0.0.1:9001 for protocols iiop, t3, ldap, snmp, http.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:29,034 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Server&amp;gt; &amp;lt;BEA-002613&amp;gt; &amp;lt;Channel &quot;Default&quot; is now listening on 10.0.0.227:9001 for protocols iiop, t3, ldap, snmp, http.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:29,035 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Server&amp;gt; &amp;lt;BEA-002613&amp;gt; &amp;lt;Channel &quot;Default[1]&quot; is now listening on 127.0.0.1:9001 for protocols iiop, t3, ldap, snmp, http.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:29,035 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Server&amp;gt; &amp;lt;BEA-002613&amp;gt; &amp;lt;Channel &quot;Default&quot; is now listening on 10.0.0.227:9001 for protocols iiop, t3, ldap, snmp, http.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:29,036 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000332&amp;gt; &amp;lt;Started the WebLogic Server Managed Server &quot;Server-Cohe-Web-1&quot; for domain &quot;kami_domain&quot; running in development mode.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:29,048 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000360&amp;gt; &amp;lt;The server started in RUNNING mode.&amp;gt;
&amp;lt;Jul 22, 2024 12:48:29,061 PM GMT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;WebLogicServer&amp;gt; &amp;lt;BEA-000365&amp;gt; &amp;lt;Server state changed to RUNNING.&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;이런 방식으로 세션클러스터링이 필요한 서버들을 추가하여 사용이 가능합니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Oracle Fusion Middleware/Coherence</category>
      <category>Cluster</category>
      <category>Coherence</category>
      <category>multicast</category>
      <category>oracle</category>
      <category>session</category>
      <category>sessioncluster</category>
      <category>weblogic</category>
      <category>wellknownaddress</category>
      <category>wka</category>
      <author>수상한 김토끼</author>
      <guid isPermaLink="true">https://with-kami.tistory.com/1534868</guid>
      <comments>https://with-kami.tistory.com/1534868#entry1534868comment</comments>
      <pubDate>Tue, 23 Jul 2024 19:35:46 +0900</pubDate>
    </item>
    <item>
      <title>SSL을 지원하는 WordPress docker-compose.yaml</title>
      <link>https://with-kami.tistory.com/1534867</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;wordpress를 사용하기 위해 서버를 구성하며 진행했던 내용 누군가에게 도움이 되었으면 좋겠다는 바램을 담아 기록으로 남겨봅니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Oracle Free Trial 서버를 만든 지 한참이 지났지만 넉넉하지 못한 서버 사양으로 활용도를 찾지 못하고 있던 와중에 wordpress로 블로그를 구축해서 사용하는 사례를 알게 되었고, 직접 구현해 보면서 고민하고 알게 된 내용입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;현재 제 wordpress가 돌고 있는 서버(&lt;a href=&quot;https://with-kami.duckdns.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://with-kami.duckdns.org/&lt;/a&gt;)는 Oracle Free Trial에서 평생 무료 정책으로 계정당 2개를 제공해주는 vm 중 1개로 Ubuntu Linux 22.04 LTS 버전이 설치되어 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://with-kami.duckdns.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://with-kami.duckdns.org/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721730502674&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;The Keyboard Player&quot; data-og-description=&quot;안녕하세요. &amp;lsquo;수상한 김토끼&amp;rsquo; 입니다. 6장의 코히어런스 세션그리드 서비스 &amp;ndash; 2(https://with-kami.duckdns.org/oracle-fusion-middleare/coherence/119)를 통해 별도의 코히어런스를 활용한 웹로직 &amp;ndash; 코히어런&quot; data-og-host=&quot;with-kami.duckdns.org&quot; data-og-source-url=&quot;https://with-kami.duckdns.org/&quot; data-og-url=&quot;https://with-kami.duckdns.org/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://with-kami.duckdns.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://with-kami.duckdns.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;The Keyboard Player&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. &amp;lsquo;수상한 김토끼&amp;rsquo; 입니다. 6장의 코히어런스 세션그리드 서비스 &amp;ndash; 2(https://with-kami.duckdns.org/oracle-fusion-middleare/coherence/119)를 통해 별도의 코히어런스를 활용한 웹로직 &amp;ndash; 코히어런&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;with-kami.duckdns.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;AMD EPYC 7551 32-Core Processor CPU 2Core와 1GB의 메모리, 100GB의 디스크로 구성된 서버라 간단한 웹서버나 DB서버 등으로 활용이 가능한데, wordpress 정도를 구성하는데는 충분한 사양인 것 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;wordpress를 구성하기 위해서는 크게 2가지 모듈이 필요합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1721730136283&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1. wordpress (php가 설치된 웹서버 필요 ex.apache, nginx)
2. database (일반적으로 MySQL, mariaDB)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;각각 서버에 직접 설치 및 구성도 가능하지만 Docker를 활용하면 아주 간단하게 구성이 가능한데, 1가지 문제가 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;wordpress 컨테이너가 동작하는 웹서버는 nginx혹은 apache로 구현 된 경우가 많은데 기본적으로 SSL(https)를 지원하지 않기 때문에 요즘 많이 사용하는 chrome같은 브라우저에서 빨간 창을 보여주며 접근을 막는 상황이 발생하게 되죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 문제를 해결하려면 서버 IP에 해당하는 도메인 생성 및 도메인에 맞는 SSL인증서를 발급받아 웹서버에 등록해야 하는데 이런 일련의 과정을 1개의 docker-compose.yaml 파일로 정의 해서 바로 사용이 가능한 방법이 있어 그 방법을 사용하여 구성하였습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;서버 환경설정(docker환경 구성, 방화벽, 도메인 등록)은 이번 포스팅에서는 언급하지 않고 docker-compose.yaml 파일을 소개하는데 집중하고 관련 내용은 추후 하나하나 포스팅을 올려보도록 할께요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #222222; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;docker-compose.yaml&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1721730207176&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;version: &quot;3.8&quot;

services:
  # NginxProxy 가상 호스트를 관리하는 컨테이너
  nginx-proxy:
    image: jwilder/nginx-proxy:latest
    container_name: nginx-proxy
    privileged: true
    ports:
      - &quot;80:80&quot;
      - &quot;443:443&quot;
    environment:
      - DEFAULT_HOST=example.com  # 사용 domain
    volumes:
      - proxy:/etc/nginx/vhost.d
      - proxy:/usr/share/nginx/html
      - ./nginx-proxy/conf.d/custom_proxy_settings.conf:/etc/nginx/conf.d/custom_proxy_settings.conf  # nginx 설정 파일 mount
      - ./nginx-proxy/logs:/var/log/nginx  # Docker 컨테이너 내부의 apache 설정파일 mount
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./certs:/etc/nginx/certs:ro
    restart: always
    networks:
      - app-net
      - default
    labels:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: &quot;&quot;

  # SSL 인증서를 관리하는 컨테이너 (Let's Encrypt)
  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: lets-encrypt
    restart: always
    depends_on:
      - nginx-proxy
    volumes:
      - proxy:/etc/nginx/vhost.d
      - proxy:/usr/share/nginx/html
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./certs:/etc/nginx/certs:rw
    environment:
      - NGINX_PROXY_CONTAINER=nginx-proxy
    networks:
      - app-net
      - default

  # WordPress 컨테이너
  wordpress:
    build: 
      context: ./Php
      dockerfile: Dockerfile
    container_name: wordpress
    depends_on:
      - wordpressdb
    restart: always
    expose:
      - 80
      - 443
    environment:
      WORDPRESS_DB_HOST: wordpressdb
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: password # 데이터베이스의 비밀번호
      WORDPRESS_DB_NAME: wordpress
      VIRTUAL_HOST: example.com  # 사용 domain
      VIRTUAL_PORT: 80
      LETSENCRYPT_HOST: example.com  # 사용 domain
      LETSENCRYPT_EMAIL: info@example.com # e-mail 주소
    volumes:
      - ./wordpress/html:/var/www/html  # wordpress 소스코드 폴더 mount
      - ./wordpress/log:/var/log/apache2  # Docker 컨테이너 내부의 apache 설정파일 mount
      - ./Php/php.ini:/usr/local/etc/php/php.ini # PHP 설정파일 mouunt
    networks:
      - app-net
      - default

  # wordpress가 사용할 데이터베이스 컨테이너
  wordpressdb:
    image: mariadb
    restart: always
    volumes:
      - ./wp_mariadb/db_data:/docker-entrypoint-initdb.d
      - ./wp_mariadb/data:/var/lib/mysql
      - ./wp_mariadb/logs:/var/log/mysql
      - ./wp_mariadb/conf.d/my.cnf:/etc/mysql/conf.d/my.cnf
    expose:
      - 3306
    ports:
      - 3306:3306
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: password # 데이터베이스 비밀번호
      MYSQL_ROOT_PASSWORD: root_password # 데이터베이스의 root 비밀번호
      TZ: Asia/Seoul
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    networks:
      - app-net
      - default

  # phpMyAdmin 컨테이너
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
      - wordpressdb
    restart: always
    expose:
      - 88
    ports:
      - 88:80
    volumes:
      - ./wp_phpmyadmin/sessions:/sessions
    environment:
      PMA_ARBITRARY: 1
      PMA_HOST: wordpressdb
      PMA_USER: root
      PMA_PASSWORD: root_password # 데이터베이스의 root 비밀번호
    networks:
      - app-net
      - default

# 컨테이너들이 사용할 공유 네트워크
networks:
  app-net:
    driver: bridge
# mount volumes
volumes:
  db_data:
  proxy:&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;간단히 설명하면 nginx-proxy는 가상호스트를 관리합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;example.com&amp;rsquo;에 접속하면 nginx-proxy가 wordpress 컨테이너로 연결 해 줍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;letsencrypt&amp;rsquo;는 SSL 인증서를 관리하고 wordpress 컨테이너가 &amp;lsquo;https&amp;rsquo;로 연결 해 줍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;wordpress는 wordpress 자체 컨테이너 입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;phpmyadmin은 phpMyAdmin이라는 도구가 동작하는 컨테이너로 서버의 88번 포트를 통해 접속됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정리하면 잘 알고 계시는 wordpress와 mariadb 구조에 nginx-proxy와 letsencrypt컨테이너를 더해서 SSL인증서가 등록된 nginx-proxy를 통해 wordpress에 접속하는 구조 정도라고 할 수 있겠네요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여기에 추가로 docker-compose.yaml 파일내부에 정의 된 Dockerfile과 custom_proxy_setting.conf , php.ini 파일이 필요합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #222222; text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Dockerfile&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1721730289832&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;FROM wordpress:6.5.3-php8.1-apache

# Run apt command
RUN apt-get update \
    &amp;amp;&amp;amp; apt-get install -y \
            g++ \
            libicu-dev \
            libpq-dev \
            libzip-dev \
            unzip \
            zip \
            zlib1g-dev \
            libonig-dev \
            vim

# CP php.ini
RUN cp /usr/local/etc/php/php.ini-development /usr/local/etc/php/php.ini

CMD [&quot;apache2-foreground&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;custom_proxy_setting.conf&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1721730307677&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;client_max_body_size 10g;
proxy_request_buffering off;

proxy_buffers 8 32K;
proxy_buffer_size 32k;
proxy_busy_buffers_size 64k;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;php.ini&lt;/b&gt;&lt;/h2&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1721730396764&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[PHP]

;;;;;;;;;;;;;;;;;;;
; About php.ini   ;
;;;;;;;;;;;;;;;;;;;
; PHP's initialization file, generally called php.ini, is responsible for
; configuring many of the aspects of PHP's behavior.

; PHP attempts to find and load this configuration from a number of locations.
; The following is a summary of its search order:
; 1. SAPI module specific location.
; 2. The PHPRC environment variable. (As of PHP 5.2.0)
; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0)
; 4. Current working directory (except CLI)
; 5. The web server's directory (for SAPI modules), or directory of PHP
; (otherwise in Windows)
; 6. The directory from the --with-config-file-path compile time option, or the
; Windows directory (usually C:\windows)
; See the PHP docs for more specific information.
; https://php.net/configuration.file

; The syntax of the file is extremely simple.  Whitespace and lines
; beginning with a semicolon are silently ignored (as you probably guessed).
; Section headers (e.g. [Foo]) are also silently ignored, even though
; they might mean something in the future.

; Directives following the section heading [PATH=/www/mysite] only
; apply to PHP files in the /www/mysite directory.  Directives
; following the section heading [HOST=www.example.com] only apply to
; PHP files served from www.example.com.  Directives set in these
; special sections cannot be overridden by user-defined INI files or
; at runtime. Currently, [PATH=] and [HOST=] sections only work under
; CGI/FastCGI.
; https://php.net/ini.sections

; Directives are specified using the following syntax:
; directive = value
; Directive names are *case sensitive* - foo=bar is different from FOO=bar.
; Directives are variables used to configure PHP or PHP extensions.
; There is no name validation.  If PHP can't find an expected
; directive because it is not set or is mistyped, a default value will be used.

; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one
; of the INI constants (On, Off, True, False, Yes, No and None) or an expression
; (e.g. E_ALL &amp;amp; ~E_NOTICE), a quoted string (&quot;bar&quot;), or a reference to a
; previously set variable or directive (e.g. ${foo})

; Expressions in the INI file are limited to bitwise operators and parentheses:
; |  bitwise OR
; ^  bitwise XOR
; &amp;amp;  bitwise AND
; ~  bitwise NOT
; !  boolean NOT

; Boolean flags can be turned on using the values 1, On, True or Yes.
; They can be turned off using the values 0, Off, False or No.

; An empty string can be denoted by simply not writing anything after the equal
; sign, or by using the None keyword:

; foo =         ; sets foo to an empty string
; foo = None    ; sets foo to an empty string
; foo = &quot;None&quot;  ; sets foo to the string 'None'

; If you use constants in your value, and these constants belong to a
; dynamically loaded extension (either a PHP extension or a Zend extension),
; you may only use these constants *after* the line that loads the extension.

;;;;;;;;;;;;;;;;;;;
; About this file ;
;;;;;;;;;;;;;;;;;;;
; PHP comes packaged with two INI files. One that is recommended to be used
; in production environments and one that is recommended to be used in
; development environments.

; php.ini-production contains settings which hold security, performance and
; best practices at its core. But please be aware, these settings may break
; compatibility with older or less security conscience applications. We
; recommending using the production ini in production and testing environments.

; php.ini-development is very similar to its production variant, except it is
; much more verbose when it comes to errors. We recommend using the
; development version only in development environments, as errors shown to
; application users can inadvertently leak otherwise secure information.

; This is the php.ini-development INI file.

;;;;;;;;;;;;;;;;;;;
; Quick Reference ;
;;;;;;;;;;;;;;;;;;;

; The following are all the settings which are different in either the production
; or development versions of the INIs with respect to PHP's default behavior.
; Please see the actual settings later in the document for more details as to why
; we recommend these changes in PHP's behavior.

; display_errors
;   Default Value: On
;   Development Value: On
;   Production Value: Off

; display_startup_errors
;   Default Value: On
;   Development Value: On
;   Production Value: Off

; error_reporting
;   Default Value: E_ALL
;   Development Value: E_ALL
;   Production Value: E_ALL &amp;amp; ~E_DEPRECATED &amp;amp; ~E_STRICT

; log_errors
;   Default Value: Off
;   Development Value: On
;   Production Value: On

; max_input_time
;   Default Value: -1 (Unlimited)
;   Development Value: 60 (60 seconds)
;   Production Value: 60 (60 seconds)

; output_buffering
;   Default Value: Off
;   Development Value: 4096
;   Production Value: 4096

; register_argc_argv
;   Default Value: On
;   Development Value: Off
;   Production Value: Off

; request_order
;   Default Value: None
;   Development Value: &quot;GP&quot;
;   Production Value: &quot;GP&quot;

; session.gc_divisor
;   Default Value: 100
;   Development Value: 1000
;   Production Value: 1000

; session.sid_bits_per_character
;   Default Value: 4
;   Development Value: 5
;   Production Value: 5

; short_open_tag
;   Default Value: On
;   Development Value: Off
;   Production Value: Off

; variables_order
;   Default Value: &quot;EGPCS&quot;
;   Development Value: &quot;GPCS&quot;
;   Production Value: &quot;GPCS&quot;

; zend.exception_ignore_args
;   Default Value: Off
;   Development Value: Off
;   Production Value: On

; zend.exception_string_param_max_len
;   Default Value: 15
;   Development Value: 15
;   Production Value: 0

;;;;;;;;;;;;;;;;;;;;
; php.ini Options  ;
;;;;;;;;;;;;;;;;;;;;
; Name for user-defined php.ini (.htaccess) files. Default is &quot;.user.ini&quot;
;user_ini.filename = &quot;.user.ini&quot;

; To disable this feature set this option to an empty value
;user_ini.filename =

; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes)
;user_ini.cache_ttl = 300

;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;

; Enable the PHP scripting language engine under Apache.
; https://php.net/engine
engine = On

; This directive determines whether or not PHP will recognize code between
; &amp;lt;? and ?&amp;gt; tags as PHP source which should be processed as such. It is
; generally recommended that &amp;lt;?php and ?&amp;gt; should be used and that this feature
; should be disabled, as enabling it may result in issues when generating XML
; documents, however this remains supported for backward compatibility reasons.
; Note that this directive does not control the &amp;lt;?= shorthand tag, which can be
; used regardless of this directive.
; Default Value: On
; Development Value: Off
; Production Value: Off
; https://php.net/short-open-tag
short_open_tag = Off

; The number of significant digits displayed in floating point numbers.
; https://php.net/precision
precision = 14

; Output buffering is a mechanism for controlling how much output data
; (excluding headers and cookies) PHP should keep internally before pushing that
; data to the client. If your application's output exceeds this setting, PHP
; will send that data in chunks of roughly the size you specify.
; Turning on this setting and managing its maximum buffer size can yield some
; interesting side-effects depending on your application and web server.
; You may be able to send headers and cookies after you've already sent output
; through print or echo. You also may see performance benefits if your server is
; emitting less packets due to buffered output versus PHP streaming the output
; as it gets it. On production servers, 4096 bytes is a good setting for performance
; reasons.
; Note: Output buffering can also be controlled via Output Buffering Control
;   functions.
; Possible Values:
;   On = Enabled and buffer is unlimited. (Use with caution)
;   Off = Disabled
;   Integer = Enables the buffer and sets its maximum size in bytes.
; Note: This directive is hardcoded to Off for the CLI SAPI
; Default Value: Off
; Development Value: 4096
; Production Value: 4096
; https://php.net/output-buffering
output_buffering = 4096

; You can redirect all of the output of your scripts to a function.  For
; example, if you set output_handler to &quot;mb_output_handler&quot;, character
; encoding will be transparently converted to the specified encoding.
; Setting any output handler automatically turns on output buffering.
; Note: People who wrote portable scripts should not depend on this ini
;   directive. Instead, explicitly set the output handler using ob_start().
;   Using this ini directive may cause problems unless you know what script
;   is doing.
; Note: You cannot use both &quot;mb_output_handler&quot; with &quot;ob_iconv_handler&quot;
;   and you cannot use both &quot;ob_gzhandler&quot; and &quot;zlib.output_compression&quot;.
; Note: output_handler must be empty if this is set 'On' !!!!
;   Instead you must use zlib.output_handler.
; https://php.net/output-handler
;output_handler =

; URL rewriter function rewrites URL on the fly by using
; output buffer. You can set target tags by this configuration.
; &quot;form&quot; tag is special tag. It will add hidden input tag to pass values.
; Refer to session.trans_sid_tags for usage.
; Default Value: &quot;form=&quot;
; Development Value: &quot;form=&quot;
; Production Value: &quot;form=&quot;
;url_rewriter.tags

; URL rewriter will not rewrite absolute URL nor form by default. To enable
; absolute URL rewrite, allowed hosts must be defined at RUNTIME.
; Refer to session.trans_sid_hosts for more details.
; Default Value: &quot;&quot;
; Development Value: &quot;&quot;
; Production Value: &quot;&quot;
;url_rewriter.hosts

; Transparent output compression using the zlib library
; Valid values for this option are 'off', 'on', or a specific buffer size
; to be used for compression (default is 4KB)
; Note: Resulting chunk size may vary due to nature of compression. PHP
;   outputs chunks that are few hundreds bytes each as a result of
;   compression. If you prefer a larger chunk size for better
;   performance, enable output_buffering in addition.
; Note: You need to use zlib.output_handler instead of the standard
;   output_handler, or otherwise the output will be corrupted.
; https://php.net/zlib.output-compression
zlib.output_compression = Off

; https://php.net/zlib.output-compression-level
;zlib.output_compression_level = -1

; You cannot specify additional output handlers if zlib.output_compression
; is activated here. This setting does the same as output_handler but in
; a different order.
; https://php.net/zlib.output-handler
;zlib.output_handler =

; Implicit flush tells PHP to tell the output layer to flush itself
; automatically after every output block.  This is equivalent to calling the
; PHP function flush() after each and every call to print() or echo() and each
; and every HTML block.  Turning this option on has serious performance
; implications and is generally recommended for debugging purposes only.
; https://php.net/implicit-flush
; Note: This directive is hardcoded to On for the CLI SAPI
implicit_flush = Off

; The unserialize callback function will be called (with the undefined class'
; name as parameter), if the unserializer finds an undefined class
; which should be instantiated. A warning appears if the specified function is
; not defined, or if the function doesn't include/implement the missing class.
; So only set this entry, if you really want to implement such a
; callback-function.
unserialize_callback_func =

; The unserialize_max_depth specifies the default depth limit for unserialized
; structures. Setting the depth limit too high may result in stack overflows
; during unserialization. The unserialize_max_depth ini setting can be
; overridden by the max_depth option on individual unserialize() calls.
; A value of 0 disables the depth limit.
;unserialize_max_depth = 4096

; When floats &amp;amp; doubles are serialized, store serialize_precision significant
; digits after the floating point. The default value ensures that when floats
; are decoded with unserialize, the data will remain the same.
; The value is also used for json_encode when encoding double values.
; If -1 is used, then dtoa mode 0 is used which automatically select the best
; precision.
serialize_precision = -1

; open_basedir, if set, limits all file operations to the defined directory
; and below.  This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file.
; Note: disables the realpath cache
; https://php.net/open-basedir
;open_basedir =

; This directive allows you to disable certain functions.
; It receives a comma-delimited list of function names.
; https://php.net/disable-functions
disable_functions =

; This directive allows you to disable certain classes.
; It receives a comma-delimited list of class names.
; https://php.net/disable-classes
disable_classes =

; Colors for Syntax Highlighting mode.  Anything that's acceptable in
; &amp;lt;span style=&quot;color: ???????&quot;&amp;gt; would work.
; https://php.net/syntax-highlighting
;highlight.string  = #DD0000
;highlight.comment = #FF9900
;highlight.keyword = #007700
;highlight.default = #0000BB
;highlight.html    = #000000

; If enabled, the request will be allowed to complete even if the user aborts
; the request. Consider enabling it if executing long requests, which may end up
; being interrupted by the user or a browser timing out. PHP's default behavior
; is to disable this feature.
; https://php.net/ignore-user-abort
;ignore_user_abort = On

; Determines the size of the realpath cache to be used by PHP. This value should
; be increased on systems where PHP opens many files to reflect the quantity of
; the file operations performed.
; Note: if open_basedir is set, the cache is disabled
; https://php.net/realpath-cache-size
;realpath_cache_size = 4096k

; Duration of time, in seconds for which to cache realpath information for a given
; file or directory. For systems with rarely changing files, consider increasing this
; value.
; https://php.net/realpath-cache-ttl
;realpath_cache_ttl = 120

; Enables or disables the circular reference collector.
; https://php.net/zend.enable-gc
zend.enable_gc = On

; If enabled, scripts may be written in encodings that are incompatible with
; the scanner.  CP936, Big5, CP949 and Shift_JIS are the examples of such
; encodings.  To use this feature, mbstring extension must be enabled.
;zend.multibyte = Off

; Allows to set the default encoding for the scripts.  This value will be used
; unless &quot;declare(encoding=...)&quot; directive appears at the top of the script.
; Only affects if zend.multibyte is set.
;zend.script_encoding =

; Allows to include or exclude arguments from stack traces generated for exceptions.
; In production, it is recommended to turn this setting on to prohibit the output
; of sensitive information in stack traces
; Default Value: Off
; Development Value: Off
; Production Value: On
zend.exception_ignore_args = Off

; Allows setting the maximum string length in an argument of a stringified stack trace
; to a value between 0 and 1000000.
; This has no effect when zend.exception_ignore_args is enabled.
; Default Value: 15
; Development Value: 15
; Production Value: 0
zend.exception_string_param_max_len = 15

;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;

; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; https://php.net/expose-php
expose_php = On

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

; Maximum execution time of each script, in seconds
; https://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 300

; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; https://php.net/max-input-time
max_input_time = 300

; Maximum input variable nesting level
; https://php.net/max-input-nesting-level
;max_input_nesting_level = 64

; How many GET/POST/COOKIE input variables may be accepted
;max_input_vars = 1000

; Maximum amount of memory a script may consume
; https://php.net/memory-limit
memory_limit = 256M

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; This directive informs PHP of which errors, warnings and notices you would like
; it to take action for. The recommended way of setting values for this
; directive is through the use of the error level constants and bitwise
; operators. The error level constants are below here for convenience as well as
; some common settings and their meanings.
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
; those related to E_NOTICE and E_STRICT, which together cover best practices and
; recommended coding standards in PHP. For performance reasons, this is the
; recommend error reporting setting. Your production server shouldn't be wasting
; resources complaining about best practices and coding standards. That's what
; development servers and development settings are for.
; Note: The php.ini-development file has this setting as E_ALL. This
; means it pretty much reports everything which is exactly what you want during
; development and early testing.
;
; Error Level Constants:
; E_ALL             - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
; E_ERROR           - fatal run-time errors
; E_RECOVERABLE_ERROR  - almost fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it is automatically initialized to an
;                     empty string)
; E_STRICT          - run-time notices, enable to have PHP suggest changes
;                     to your code which will ensure the best interoperability
;                     and forward compatibility of your code
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
; E_DEPRECATED      - warn about code that will not work in future versions
;                     of PHP
; E_USER_DEPRECATED - user-generated deprecation warnings
;
; Common Values:
;   E_ALL (Show all errors, warnings and notices including coding standards.)
;   E_ALL &amp;amp; ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL &amp;amp; ~E_NOTICE &amp;amp; ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
; Default Value: E_ALL
; Development Value: E_ALL
; Production Value: E_ALL &amp;amp; ~E_DEPRECATED &amp;amp; ~E_STRICT
; https://php.net/error-reporting
error_reporting = E_ALL

; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but
; it could be very dangerous in production environments. Depending on the code
; which is triggering the error, sensitive information could potentially leak
; out of your application such as database usernames and passwords or worse.
; For production environments, we recommend logging errors rather than
; sending them to STDOUT.
; Possible Values:
;   Off = Do not display any errors
;   stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
;   On or stdout = Display errors to STDOUT
; Default Value: On
; Development Value: On
; Production Value: Off
; https://php.net/display-errors
display_errors = On

; The display of errors which occur during PHP's startup sequence are handled
; separately from display_errors. We strongly recommend you set this to 'off'
; for production servers to avoid leaking configuration details.
; Default Value: On
; Development Value: On
; Production Value: Off
; https://php.net/display-startup-errors
display_startup_errors = On

; Besides displaying errors, PHP can also log errors to locations such as a
; server-specific log, STDERR, or a location specified by the error_log
; directive found below. While errors should not be displayed on productions
; servers they should still be monitored and logging is a great way to do that.
; Default Value: Off
; Development Value: On
; Production Value: On
; https://php.net/log-errors
log_errors = On

; Do not log repeated messages. Repeated errors must occur in same file on same
; line unless ignore_repeated_source is set true.
; https://php.net/ignore-repeated-errors
ignore_repeated_errors = Off

; Ignore source of message when ignoring repeated messages. When this setting
; is On you will not log errors with repeated messages from different files or
; source lines.
; https://php.net/ignore-repeated-source
ignore_repeated_source = Off

; If this parameter is set to Off, then memory leaks will not be shown (on
; stdout or in the log). This is only effective in a debug compile, and if
; error reporting includes E_WARNING in the allowed list
; https://php.net/report-memleaks
report_memleaks = On

; This setting is off by default.
;report_zend_debug = 0

; Turn off normal error reporting and emit XML-RPC error XML
; https://php.net/xmlrpc-errors
;xmlrpc_errors = 0

; An XML-RPC faultCode
;xmlrpc_error_number = 0

; When PHP displays or logs an error, it has the capability of formatting the
; error message as HTML for easier reading. This directive controls whether
; the error message is formatted as HTML or not.
; Note: This directive is hardcoded to Off for the CLI SAPI
; https://php.net/html-errors
;html_errors = On

; If html_errors is set to On *and* docref_root is not empty, then PHP
; produces clickable error messages that direct to a page describing the error
; or function causing the error in detail.
; You can download a copy of the PHP manual from https://php.net/docs
; and change docref_root to the base URL of your local copy including the
; leading '/'. You must also specify the file extension being used including
; the dot. PHP's default behavior is to leave these settings empty, in which
; case no links to documentation are generated.
; Note: Never use this feature for production boxes.
; https://php.net/docref-root
; Examples
;docref_root = &quot;/phpmanual/&quot;

; https://php.net/docref-ext
;docref_ext = .html

; String to output before an error message. PHP's default behavior is to leave
; this setting blank.
; https://php.net/error-prepend-string
; Example:
;error_prepend_string = &quot;&amp;lt;span style='color: #ff0000'&amp;gt;&quot;

; String to output after an error message. PHP's default behavior is to leave
; this setting blank.
; https://php.net/error-append-string
; Example:
;error_append_string = &quot;&amp;lt;/span&amp;gt;&quot;

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; https://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog

; The syslog ident is a string which is prepended to every message logged
; to syslog. Only used when error_log is set to syslog.
;syslog.ident = php

; The syslog facility is used to specify what type of program is logging
; the message. Only used when error_log is set to syslog.
;syslog.facility = user

; Set this to disable filtering control characters (the default).
; Some loggers only accept NVT-ASCII, others accept anything that's not
; control characters. If your logger accepts everything, then no filtering
; is needed at all.
; Allowed values are:
;   ascii (all printable ASCII characters and NL)
;   no-ctrl (all characters except control characters)
;   all (all characters)
;   raw (like &quot;all&quot;, but messages are not split at newlines)
; https://php.net/syslog.filter
;syslog.filter = ascii

;windows.show_crt_warning
; Default value: 0
; Development value: 0
; Production value: 0

;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;

; The separator used in PHP generated URLs to separate arguments.
; PHP's default setting is &quot;&amp;amp;&quot;.
; https://php.net/arg-separator.output
; Example:
;arg_separator.output = &quot;&amp;amp;amp;&quot;

; List of separator(s) used by PHP to parse input URLs into variables.
; PHP's default setting is &quot;&amp;amp;&quot;.
; NOTE: Every character in this directive is considered as separator!
; https://php.net/arg-separator.input
; Example:
;arg_separator.input = &quot;;&amp;amp;&quot;

; This directive determines which super global arrays are registered when PHP
; starts up. G,P,C,E &amp;amp; S are abbreviations for the following respective super
; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty
; paid for the registration of these arrays and because ENV is not as commonly
; used as the others, ENV is not recommended on productions servers. You
; can still get access to the environment variables through getenv() should you
; need to.
; Default Value: &quot;EGPCS&quot;
; Development Value: &quot;GPCS&quot;
; Production Value: &quot;GPCS&quot;;
; https://php.net/variables-order
variables_order = &quot;GPCS&quot;

; This directive determines which super global data (G,P &amp;amp; C) should be
; registered into the super global array REQUEST. If so, it also determines
; the order in which that data is registered. The values for this directive
; are specified in the same manner as the variables_order directive,
; EXCEPT one. Leaving this value empty will cause PHP to use the value set
; in the variables_order directive. It does not mean it will leave the super
; globals array REQUEST empty.
; Default Value: None
; Development Value: &quot;GP&quot;
; Production Value: &quot;GP&quot;
; https://php.net/request-order
request_order = &quot;GP&quot;

; This directive determines whether PHP registers $argv &amp;amp; $argc each time it
; runs. $argv contains an array of all the arguments passed to PHP when a script
; is invoked. $argc contains an integer representing the number of arguments
; that were passed when the script was invoked. These arrays are extremely
; useful when running scripts from the command line. When this directive is
; enabled, registering these variables consumes CPU cycles and memory each time
; a script is executed. For performance reasons, this feature should be disabled
; on production servers.
; Note: This directive is hardcoded to On for the CLI SAPI
; Default Value: On
; Development Value: Off
; Production Value: Off
; https://php.net/register-argc-argv
register_argc_argv = Off

; When enabled, the ENV, REQUEST and SERVER variables are created when they're
; first used (Just In Time) instead of when the script starts. If these
; variables are not used within a script, having this directive on will result
; in a performance gain. The PHP directive register_argc_argv must be disabled
; for this directive to have any effect.
; https://php.net/auto-globals-jit
auto_globals_jit = On

; Whether PHP will read the POST data.
; This option is enabled by default.
; Most likely, you won't want to disable this option globally. It causes $_POST
; and $_FILES to always be empty; the only way you will be able to read the
; POST data will be through the php://input stream wrapper. This can be useful
; to proxy requests or to process the POST data in a memory efficient fashion.
; https://php.net/enable-post-data-reading
;enable_post_data_reading = Off

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; https://php.net/post-max-size
post_max_size = 512M

; Automatically add files before PHP document.
; https://php.net/auto-prepend-file
auto_prepend_file =

; Automatically add files after PHP document.
; https://php.net/auto-append-file
auto_append_file =

; By default, PHP will output a media type using the Content-Type header. To
; disable this, simply set it to be empty.
;
; PHP's built-in default media type is set to text/html.
; https://php.net/default-mimetype
default_mimetype = &quot;text/html&quot;

; PHP's default character set is set to UTF-8.
; https://php.net/default-charset
default_charset = &quot;UTF-8&quot;

; PHP internal character encoding is set to empty.
; If empty, default_charset is used.
; https://php.net/internal-encoding
;internal_encoding =

; PHP input character encoding is set to empty.
; If empty, default_charset is used.
; https://php.net/input-encoding
;input_encoding =

; PHP output character encoding is set to empty.
; If empty, default_charset is used.
; See also output_buffer.
; https://php.net/output-encoding
;output_encoding =

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: &quot;/path1:/path2&quot;
;include_path = &quot;.:/php/includes&quot;
;
; Windows: &quot;\path1;\path2&quot;
;include_path = &quot;.;c:\php\includes&quot;
;
; PHP's default setting for include_path is &quot;.;/path/to/php/pear&quot;
; https://php.net/include-path

; The root of the PHP pages, used only if nonempty.
; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
; if you are running php as a CGI under any web server (other than IIS)
; see documentation for security issues.  The alternate is to use the
; cgi.force_redirect configuration below
; https://php.net/doc-root
doc_root =

; The directory under which PHP opens the script using /~username used only
; if nonempty.
; https://php.net/user-dir
user_dir =

; Directory in which the loadable extensions (modules) reside.
; https://php.net/extension-dir
;extension_dir = &quot;./&quot;
; On windows:
;extension_dir = &quot;ext&quot;

; Directory where the temporary files should be placed.
; Defaults to the system default (see sys_get_temp_dir)
;sys_temp_dir = &quot;/tmp&quot;

; Whether or not to enable the dl() function.  The dl() function does NOT work
; properly in multithreaded servers, such as IIS or Zeus, and is automatically
; disabled on them.
; https://php.net/enable-dl
enable_dl = Off

; cgi.force_redirect is necessary to provide security running PHP as a CGI under
; most web servers.  Left undefined, PHP turns this on by default.  You can
; turn it off here AT YOUR OWN RISK
; **You CAN safely turn this off for IIS, in fact, you MUST.**
; https://php.net/cgi.force-redirect
;cgi.force_redirect = 1

; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
; every request. PHP's default behavior is to disable this feature.
;cgi.nph = 1

; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
; will look for to know it is OK to continue execution.  Setting this variable MAY
; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
; https://php.net/cgi.redirect-status-env
;cgi.redirect_status_env =

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; https://php.net/cgi.fix-pathinfo
;cgi.fix_pathinfo=1

; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside
; of the web tree and people will not be able to circumvent .htaccess security.
;cgi.discard_path=1

; FastCGI under IIS supports the ability to impersonate
; security tokens of the calling client.  This allows IIS to define the
; security context that the request runs under.  mod_fastcgi under Apache
; does not currently support this feature (03/17/2002)
; Set to 1 if running under IIS.  Default is zero.
; https://php.net/fastcgi.impersonate
;fastcgi.impersonate = 1

; Disable logging through FastCGI connection. PHP's default behavior is to enable
; this feature.
;fastcgi.logging = 0

; cgi.rfc2616_headers configuration option tells PHP what type of headers to
; use when sending HTTP response code. If set to 0, PHP sends Status: header that
; is supported by Apache. When this option is set to 1, PHP will send
; RFC2616 compliant header.
; Default is zero.
; https://php.net/cgi.rfc2616-headers
;cgi.rfc2616_headers = 0

; cgi.check_shebang_line controls whether CGI PHP checks for line starting with #!
; (shebang) at the top of the running script. This line might be needed if the
; script support running both as stand-alone script and via PHP CGI&amp;lt;. PHP in CGI
; mode skips this line and ignores its content if this directive is turned on.
; https://php.net/cgi.check-shebang-line
;cgi.check_shebang_line=1

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
; https://php.net/file-uploads
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; https://php.net/upload-tmp-dir
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
; https://php.net/upload-max-filesize
upload_max_filesize = 512M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; https://php.net/allow-url-fopen
allow_url_fopen = On

; Whether to allow include/require to open URLs (like https:// or ftp://) as files.
; https://php.net/allow-url-include
allow_url_include = Off

; Define the anonymous ftp password (your email address). PHP's default setting
; for this is empty.
; https://php.net/from
;from=&quot;john@doe.com&quot;

; Define the User-Agent string. PHP's default setting for this is empty.
; https://php.net/user-agent
;user_agent=&quot;PHP&quot;

; Default timeout for socket based streams (seconds)
; https://php.net/default-socket-timeout
default_socket_timeout = 60

; If your scripts have to deal with files from Macintosh systems,
; or you are running on a Mac and need to deal with files from
; unix or win32 systems, setting this flag will cause PHP to
; automatically detect the EOL character in those files so that
; fgets() and file() will work regardless of the source of the file.
; https://php.net/auto-detect-line-endings
;auto_detect_line_endings = Off

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

; If you wish to have an extension loaded automatically, use the following
; syntax:
;
;   extension=modulename
;
; For example:
;
;   extension=mysqli
;
; When the extension library to load is not located in the default extension
; directory, You may specify an absolute path to the library file:
;
;   extension=/path/to/extension/mysqli.so
;
; Note : The syntax used in previous PHP versions ('extension=&amp;lt;ext&amp;gt;.so' and
; 'extension='php_&amp;lt;ext&amp;gt;.dll') is supported for legacy reasons and may be
; deprecated in a future PHP major version. So, when it is possible, please
; move to the new ('extension=&amp;lt;ext&amp;gt;) syntax.
;
; Notes for Windows environments :
;
; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+)
;   extension folders as well as the separate PECL DLL download (PHP 5+).
;   Be sure to appropriately set the extension_dir directive.
;
;extension=bz2
;extension=curl
;extension=ffi
;extension=ftp
;extension=fileinfo
;extension=gd
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=ldap
;extension=mbstring
;extension=exif      ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=oci8_19  ; Use with Oracle Database 19 Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
; extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
;extension=pdo_sqlite
;extension=pgsql
;extension=shmop

; The MIBS data available in the PHP distribution must be installed.
; See https://www.php.net/manual/en/snmp.installation.php
;extension=snmp

;extension=soap
;extension=sockets
;extension=sodium
;extension=sqlite3
;extension=tidy
;extension=xsl

;zend_extension=opcache

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[CLI Server]
; Whether the CLI web server uses ANSI color coding in its terminal output.
cli_server.color = On

[Date]
; Defines the default timezone used by the date functions
; https://php.net/date.timezone
;date.timezone =

; https://php.net/date.default-latitude
;date.default_latitude = 31.7667

; https://php.net/date.default-longitude
;date.default_longitude = 35.2333

; https://php.net/date.sunrise-zenith
;date.sunrise_zenith = 90.833333

; https://php.net/date.sunset-zenith
;date.sunset_zenith = 90.833333

[filter]
; https://php.net/filter.default
;filter.default = unsafe_raw

; https://php.net/filter.default-flags
;filter.default_flags =

[iconv]
; Use of this INI entry is deprecated, use global input_encoding instead.
; If empty, default_charset or input_encoding or iconv.input_encoding is used.
; The precedence is: default_charset &amp;lt; input_encoding &amp;lt; iconv.input_encoding
;iconv.input_encoding =

; Use of this INI entry is deprecated, use global internal_encoding instead.
; If empty, default_charset or internal_encoding or iconv.internal_encoding is used.
; The precedence is: default_charset &amp;lt; internal_encoding &amp;lt; iconv.internal_encoding
;iconv.internal_encoding =

; Use of this INI entry is deprecated, use global output_encoding instead.
; If empty, default_charset or output_encoding or iconv.output_encoding is used.
; The precedence is: default_charset &amp;lt; output_encoding &amp;lt; iconv.output_encoding
; To use an output encoding conversion, iconv's output handler must be set
; otherwise output encoding conversion cannot be performed.
;iconv.output_encoding =

[imap]
; rsh/ssh logins are disabled by default. Use this INI entry if you want to
; enable them. Note that the IMAP library does not filter mailbox names before
; passing them to rsh/ssh command, thus passing untrusted data to this function
; with rsh/ssh enabled is insecure.
;imap.enable_insecure_rsh=0

[intl]
;intl.default_locale =
; This directive allows you to produce PHP errors when some error
; happens within intl functions. The value is the level of the error produced.
; Default is 0, which does not produce any errors.
;intl.error_level = E_WARNING
;intl.use_exceptions = 0

[sqlite3]
; Directory pointing to SQLite3 extensions
; https://php.net/sqlite3.extension-dir
;sqlite3.extension_dir =

; SQLite defensive mode flag (only available from SQLite 3.26+)
; When the defensive flag is enabled, language features that allow ordinary
; SQL to deliberately corrupt the database file are disabled. This forbids
; writing directly to the schema, shadow tables (eg. FTS data tables), or
; the sqlite_dbpage virtual table.
; https://www.sqlite.org/c3ref/c_dbconfig_defensive.html
; (for older SQLite versions, this flag has no use)
;sqlite3.defensive = 1

[Pcre]
; PCRE library backtracking limit.
; https://php.net/pcre.backtrack-limit
;pcre.backtrack_limit=100000

; PCRE library recursion limit.
; Please note that if you set this value to a high number you may consume all
; the available process stack and eventually crash PHP (due to reaching the
; stack size limit imposed by the Operating System).
; https://php.net/pcre.recursion-limit
;pcre.recursion_limit=100000

; Enables or disables JIT compilation of patterns. This requires the PCRE
; library to be compiled with JIT support.
;pcre.jit=1

[Pdo]
; Whether to pool ODBC connections. Can be one of &quot;strict&quot;, &quot;relaxed&quot; or &quot;off&quot;
; https://php.net/pdo-odbc.connection-pooling
;pdo_odbc.connection_pooling=strict

[Pdo_mysql]
; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
pdo_mysql.default_socket=

[Phar]
; https://php.net/phar.readonly
;phar.readonly = On

; https://php.net/phar.require-hash
;phar.require_hash = On

;phar.cache_list =

[mail function]
; For Win32 only.
; https://php.net/smtp
SMTP = localhost
; https://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; https://php.net/sendmail-from
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: &quot;sendmail -t -i&quot;).
; https://php.net/sendmail-path
;sendmail_path =

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail().
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off

; The path to a log file that will log all mail() calls. Log entries include
; the full path of the script, line number, To address and headers.
;mail.log =
; Log mail to syslog (Event Log on Windows).
;mail.log = syslog

[ODBC]
; https://php.net/odbc.default-db
;odbc.default_db    =  Not yet implemented

; https://php.net/odbc.default-user
;odbc.default_user  =  Not yet implemented

; https://php.net/odbc.default-pw
;odbc.default_pw    =  Not yet implemented

; Controls the ODBC cursor model.
; Default: SQL_CURSOR_STATIC (default).
;odbc.default_cursortype

; Allow or prevent persistent links.
; https://php.net/odbc.allow-persistent
odbc.allow_persistent = On

; Check that a connection is still valid before reuse.
; https://php.net/odbc.check-persistent
odbc.check_persistent = On

; Maximum number of persistent links.  -1 means no limit.
; https://php.net/odbc.max-persistent
odbc.max_persistent = -1

; Maximum number of links (persistent + non-persistent).  -1 means no limit.
; https://php.net/odbc.max-links
odbc.max_links = -1

; Handling of LONG fields.  Returns number of bytes to variables.  0 means
; passthru.
; https://php.net/odbc.defaultlrl
odbc.defaultlrl = 4096

; Handling of binary data.  0 means passthru, 1 return as is, 2 convert to char.
; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
; of odbc.defaultlrl and odbc.defaultbinmode
; https://php.net/odbc.defaultbinmode
odbc.defaultbinmode = 1

[MySQLi]

; Maximum number of persistent links.  -1 means no limit.
; https://php.net/mysqli.max-persistent
mysqli.max_persistent = -1

; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
; https://php.net/mysqli.allow_local_infile
;mysqli.allow_local_infile = On

; It allows the user to specify a folder where files that can be sent via LOAD DATA
; LOCAL can exist. It is ignored if mysqli.allow_local_infile is enabled.
;mysqli.local_infile_directory =

; Allow or prevent persistent links.
; https://php.net/mysqli.allow-persistent
mysqli.allow_persistent = On

; Maximum number of links.  -1 means no limit.
; https://php.net/mysqli.max-links
mysqli.max_links = -1

; Default port number for mysqli_connect().  If unset, mysqli_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order).  Win32 will only look
; at MYSQL_PORT.
; https://php.net/mysqli.default-port
mysqli.default_port = 3306

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
; https://php.net/mysqli.default-socket
mysqli.default_socket =

; Default host for mysqli_connect() (doesn't apply in safe mode).
; https://php.net/mysqli.default-host
mysqli.default_host =

; Default user for mysqli_connect() (doesn't apply in safe mode).
; https://php.net/mysqli.default-user
mysqli.default_user =

; Default password for mysqli_connect() (doesn't apply in safe mode).
; Note that this is generally a *bad* idea to store passwords in this file.
; *Any* user with PHP access can run 'echo get_cfg_var(&quot;mysqli.default_pw&quot;)
; and reveal this password!  And of course, any users with read access to this
; file will be able to reveal the password as well.
; https://php.net/mysqli.default-pw
mysqli.default_pw =

; Allow or prevent reconnect
mysqli.reconnect = Off

; If this option is enabled, closing a persistent connection will rollback
; any pending transactions of this connection, before it is put back
; into the persistent connection pool.
;mysqli.rollback_on_cached_plink = Off

[mysqlnd]
; Enable / Disable collection of general statistics by mysqlnd which can be
; used to tune and monitor MySQL operations.
mysqlnd.collect_statistics = On

; Enable / Disable collection of memory usage statistics by mysqlnd which can be
; used to tune and monitor MySQL operations.
mysqlnd.collect_memory_statistics = On

; Records communication from all extensions using mysqlnd to the specified log
; file.
; https://php.net/mysqlnd.debug
;mysqlnd.debug =

; Defines which queries will be logged.
;mysqlnd.log_mask = 0

; Default size of the mysqlnd memory pool, which is used by result sets.
;mysqlnd.mempool_default_size = 16000

; Size of a pre-allocated buffer used when sending commands to MySQL in bytes.
;mysqlnd.net_cmd_buffer_size = 2048

; Size of a pre-allocated buffer used for reading data sent by the server in
; bytes.
;mysqlnd.net_read_buffer_size = 32768

; Timeout for network requests in seconds.
;mysqlnd.net_read_timeout = 31536000

; SHA-256 Authentication Plugin related. File with the MySQL server public RSA
; key.
;mysqlnd.sha256_server_public_key =

[OCI8]

; Connection: Enables privileged connections using external
; credentials (OCI_SYSOPER, OCI_SYSDBA)
; https://php.net/oci8.privileged-connect
;oci8.privileged_connect = Off

; Connection: The maximum number of persistent OCI8 connections per
; process. Using -1 means no limit.
; https://php.net/oci8.max-persistent
;oci8.max_persistent = -1

; Connection: The maximum number of seconds a process is allowed to
; maintain an idle persistent connection. Using -1 means idle
; persistent connections will be maintained forever.
; https://php.net/oci8.persistent-timeout
;oci8.persistent_timeout = -1

; Connection: The number of seconds that must pass before issuing a
; ping during oci_pconnect() to check the connection validity. When
; set to 0, each oci_pconnect() will cause a ping. Using -1 disables
; pings completely.
; https://php.net/oci8.ping-interval
;oci8.ping_interval = 60

; Connection: Set this to a user chosen connection class to be used
; for all pooled server requests with Oracle 11g Database Resident
; Connection Pooling (DRCP).  To use DRCP, this value should be set to
; the same string for all web servers running the same application,
; the database pool must be configured, and the connection string must
; specify to use a pooled server.
;oci8.connection_class =

; High Availability: Using On lets PHP receive Fast Application
; Notification (FAN) events generated when a database node fails. The
; database must also be configured to post FAN events.
;oci8.events = Off

; Tuning: This option enables statement caching, and specifies how
; many statements to cache. Using 0 disables statement caching.
; https://php.net/oci8.statement-cache-size
;oci8.statement_cache_size = 20

; Tuning: Enables statement prefetching and sets the default number of
; rows that will be fetched automatically after statement execution.
; https://php.net/oci8.default-prefetch
;oci8.default_prefetch = 100

; Compatibility. Using On means oci_close() will not close
; oci_connect() and oci_new_connect() connections.
; https://php.net/oci8.old-oci-close-semantics
;oci8.old_oci_close_semantics = Off

[PostgreSQL]
; Allow or prevent persistent links.
; https://php.net/pgsql.allow-persistent
pgsql.allow_persistent = On

; Detect broken persistent links always with pg_pconnect().
; Auto reset feature requires a little overheads.
; https://php.net/pgsql.auto-reset-persistent
pgsql.auto_reset_persistent = Off

; Maximum number of persistent links.  -1 means no limit.
; https://php.net/pgsql.max-persistent
pgsql.max_persistent = -1

; Maximum number of links (persistent+non persistent).  -1 means no limit.
; https://php.net/pgsql.max-links
pgsql.max_links = -1

; Ignore PostgreSQL backends Notice message or not.
; Notice message logging require a little overheads.
; https://php.net/pgsql.ignore-notice
pgsql.ignore_notice = 0

; Log PostgreSQL backends Notice message or not.
; Unless pgsql.ignore_notice=0, module cannot log notice message.
; https://php.net/pgsql.log-notice
pgsql.log_notice = 0

[bcmath]
; Number of decimal digits for all bcmath functions.
; https://php.net/bcmath.scale
bcmath.scale = 0

[browscap]
; https://php.net/browscap
;browscap = extra/browscap.ini

[Session]
; Handler used to store/retrieve data.
; https://php.net/session.save-handler
session.save_handler = files

; Argument passed to save_handler.  In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; The path can be defined as:
;
;     session.save_path = &quot;N;/path&quot;
;
; where N is an integer.  Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories.  This is useful if
; your OS has problems with many files in one directory, and is
; a more efficient layout for servers that handle many sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
;         You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
;         use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
;     session.save_path = &quot;N;MODE;/path&quot;
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
; https://php.net/session.save-path
;session.save_path = &quot;/tmp&quot;

; Whether to use strict session mode.
; Strict session mode does not accept an uninitialized session ID, and
; regenerates the session ID if the browser sends an uninitialized session ID.
; Strict mode protects applications from session fixation via a session adoption
; vulnerability. It is disabled by default for maximum compatibility, but
; enabling it is encouraged.
; https://wiki.php.net/rfc/strict_sessions
session.use_strict_mode = 0

; Whether to use cookies.
; https://php.net/session.use-cookies
session.use_cookies = 1

; https://php.net/session.cookie-secure
;session.cookie_secure =

; This option forces PHP to fetch and use a cookie for storing and maintaining
; the session id. We encourage this operation as it's very helpful in combating
; session hijacking when not specifying and managing your own session id. It is
; not the be-all and end-all of session hijacking defense, but it's a good start.
; https://php.net/session.use-only-cookies
session.use_only_cookies = 1

; Name of the session (used as cookie name).
; https://php.net/session.name
session.name = PHPSESSID

; Initialize session on request startup.
; https://php.net/session.auto-start
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; https://php.net/session.cookie-lifetime
session.cookie_lifetime = 0

; The path for which the cookie is valid.
; https://php.net/session.cookie-path
session.cookie_path = /

; The domain for which the cookie is valid.
; https://php.net/session.cookie-domain
session.cookie_domain =

; Whether or not to add the httpOnly flag to the cookie, which makes it
; inaccessible to browser scripting languages such as JavaScript.
; https://php.net/session.cookie-httponly
session.cookie_httponly =

; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF)
; Current valid values are &quot;Strict&quot;, &quot;Lax&quot; or &quot;None&quot;. When using &quot;None&quot;,
; make sure to include the quotes, as `none` is interpreted like `false` in ini files.
; https://tools.ietf.org/html/draft-west-first-party-cookies-07
session.cookie_samesite =

; Handler used to serialize data. php is the standard serializer of PHP.
; https://php.net/session.serialize-handler
session.serialize_handler = php

; Defines the probability that the 'garbage collection' process is started on every
; session initialization. The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts on each request.
; Default Value: 1
; Development Value: 1
; Production Value: 1
; https://php.net/session.gc-probability
session.gc_probability = 1

; Defines the probability that the 'garbage collection' process is started on every
; session initialization. The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts on each request.
; For high volume production servers, using a value of 1000 is a more efficient approach.
; Default Value: 100
; Development Value: 1000
; Production Value: 1000
; https://php.net/session.gc-divisor
session.gc_divisor = 1000

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
; https://php.net/session.gc-maxlifetime
session.gc_maxlifetime = 1440

; NOTE: If you are using the subdirectory option for storing session files
;       (see session.save_path above), then garbage collection does *not*
;       happen automatically.  You will need to do your own garbage
;       collection through a shell script, cron entry, or some other method.
;       For example, the following script is the equivalent of setting
;       session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
;          find /path/to/sessions -cmin +24 -type f | xargs rm

; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
; https://php.net/session.referer-check
session.referer_check =

; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
; https://php.net/session.cache-limiter
session.cache_limiter = nocache

; Document expires after n minutes.
; https://php.net/session.cache-expire
session.cache_expire = 180

; trans sid support is disabled by default.
; Use of trans sid may risk your users' security.
; Use this option with caution.
; - User may send URL contains active session ID
;   to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
;   in publicly accessible computer.
; - User may access your site with the same session ID
;   always using URL stored in browser's history or bookmarks.
; https://php.net/session.use-trans-sid
session.use_trans_sid = 0

; Set session ID character length. This value could be between 22 to 256.
; Shorter length than default is supported only for compatibility reason.
; Users should use 32 or more chars.
; https://php.net/session.sid-length
; Default Value: 32
; Development Value: 26
; Production Value: 26
session.sid_length = 26

; The URL rewriter will look for URLs in a defined set of HTML tags.
; &amp;lt;form&amp;gt; is special; if you include them here, the rewriter will
; add a hidden &amp;lt;input&amp;gt; field with the info which is otherwise appended
; to URLs. &amp;lt;form&amp;gt; tag's action attribute URL will not be modified
; unless it is specified.
; Note that all valid entries require a &quot;=&quot;, even if no value follows.
; Default Value: &quot;a=href,area=href,frame=src,form=&quot;
; Development Value: &quot;a=href,area=href,frame=src,form=&quot;
; Production Value: &quot;a=href,area=href,frame=src,form=&quot;
; https://php.net/url-rewriter.tags
session.trans_sid_tags = &quot;a=href,area=href,frame=src,form=&quot;

; URL rewriter does not rewrite absolute URLs by default.
; To enable rewrites for absolute paths, target hosts must be specified
; at RUNTIME. i.e. use ini_set()
; &amp;lt;form&amp;gt; tags is special. PHP will check action attribute's URL regardless
; of session.trans_sid_tags setting.
; If no host is defined, HTTP_HOST will be used for allowed host.
; Example value: php.net,www.php.net,wiki.php.net
; Use &quot;,&quot; for multiple hosts. No spaces are allowed.
; Default Value: &quot;&quot;
; Development Value: &quot;&quot;
; Production Value: &quot;&quot;
;session.trans_sid_hosts=&quot;&quot;

; Define how many bits are stored in each character when converting
; the binary hash data to something readable.
; Possible values:
;   4  (4 bits: 0-9, a-f)
;   5  (5 bits: 0-9, a-v)
;   6  (6 bits: 0-9, a-z, A-Z, &quot;-&quot;, &quot;,&quot;)
; Default Value: 4
; Development Value: 5
; Production Value: 5
; https://php.net/session.hash-bits-per-character
session.sid_bits_per_character = 5

; Enable upload progress tracking in $_SESSION
; Default Value: On
; Development Value: On
; Production Value: On
; https://php.net/session.upload-progress.enabled
;session.upload_progress.enabled = On

; Cleanup the progress information as soon as all POST data has been read
; (i.e. upload completed).
; Default Value: On
; Development Value: On
; Production Value: On
; https://php.net/session.upload-progress.cleanup
;session.upload_progress.cleanup = On

; A prefix used for the upload progress key in $_SESSION
; Default Value: &quot;upload_progress_&quot;
; Development Value: &quot;upload_progress_&quot;
; Production Value: &quot;upload_progress_&quot;
; https://php.net/session.upload-progress.prefix
;session.upload_progress.prefix = &quot;upload_progress_&quot;

; The index name (concatenated with the prefix) in $_SESSION
; containing the upload progress information
; Default Value: &quot;PHP_SESSION_UPLOAD_PROGRESS&quot;
; Development Value: &quot;PHP_SESSION_UPLOAD_PROGRESS&quot;
; Production Value: &quot;PHP_SESSION_UPLOAD_PROGRESS&quot;
; https://php.net/session.upload-progress.name
;session.upload_progress.name = &quot;PHP_SESSION_UPLOAD_PROGRESS&quot;

; How frequently the upload progress should be updated.
; Given either in percentages (per-file), or in bytes
; Default Value: &quot;1%&quot;
; Development Value: &quot;1%&quot;
; Production Value: &quot;1%&quot;
; https://php.net/session.upload-progress.freq
;session.upload_progress.freq =  &quot;1%&quot;

; The minimum delay between updates, in seconds
; Default Value: 1
; Development Value: 1
; Production Value: 1
; https://php.net/session.upload-progress.min-freq
;session.upload_progress.min_freq = &quot;1&quot;

; Only write session data when session data is changed. Enabled by default.
; https://php.net/session.lazy-write
;session.lazy_write = On

[Assertion]
; Switch whether to compile assertions at all (to have no overhead at run-time)
; -1: Do not compile at all
;  0: Jump over assertion at run-time
;  1: Execute assertions
; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1)
; Default Value: 1
; Development Value: 1
; Production Value: -1
; https://php.net/zend.assertions
zend.assertions = 1

; Assert(expr); active by default.
; https://php.net/assert.active
;assert.active = On

; Throw an AssertionError on failed assertions
; https://php.net/assert.exception
;assert.exception = On

; Issue a PHP warning for each failed assertion. (Overridden by assert.exception if active)
; https://php.net/assert.warning
;assert.warning = On

; Don't bail out by default.
; https://php.net/assert.bail
;assert.bail = Off

; User-function to be called if an assertion fails.
; https://php.net/assert.callback
;assert.callback = 0

[COM]
; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
; https://php.net/com.typelib-file
;com.typelib_file =

; allow Distributed-COM calls
; https://php.net/com.allow-dcom
;com.allow_dcom = true

; autoregister constants of a component's typelib on com_load()
; https://php.net/com.autoregister-typelib
;com.autoregister_typelib = true

; register constants casesensitive
; https://php.net/com.autoregister-casesensitive
;com.autoregister_casesensitive = false

; show warnings on duplicate constant registrations
; https://php.net/com.autoregister-verbose
;com.autoregister_verbose = true

; The default character set code-page to use when passing strings to and from COM objects.
; Default: system ANSI code page
;com.code_page=

; The version of the .NET framework to use. The value of the setting are the first three parts
; of the framework's version number, separated by dots, and prefixed with &quot;v&quot;, e.g. &quot;v4.0.30319&quot;.
;com.dotnet_version=

[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; https://php.net/mbstring.language
;mbstring.language = Japanese

; Use of this INI entry is deprecated, use global internal_encoding instead.
; internal/script encoding.
; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*)
; If empty, default_charset or internal_encoding or iconv.internal_encoding is used.
; The precedence is: default_charset &amp;lt; internal_encoding &amp;lt; iconv.internal_encoding
;mbstring.internal_encoding =

; Use of this INI entry is deprecated, use global input_encoding instead.
; http input encoding.
; mbstring.encoding_translation = On is needed to use this setting.
; If empty, default_charset or input_encoding or mbstring.input is used.
; The precedence is: default_charset &amp;lt; input_encoding &amp;lt; mbstring.http_input
; https://php.net/mbstring.http-input
;mbstring.http_input =

; Use of this INI entry is deprecated, use global output_encoding instead.
; http output encoding.
; mb_output_handler must be registered as output buffer to function.
; If empty, default_charset or output_encoding or mbstring.http_output is used.
; The precedence is: default_charset &amp;lt; output_encoding &amp;lt; mbstring.http_output
; To use an output encoding conversion, mbstring's output handler must be set
; otherwise output encoding conversion cannot be performed.
; https://php.net/mbstring.http-output
;mbstring.http_output =

; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
; https://php.net/mbstring.encoding-translation
;mbstring.encoding_translation = Off

; automatic encoding detection order.
; &quot;auto&quot; detect order is changed according to mbstring.language
; https://php.net/mbstring.detect-order
;mbstring.detect_order = auto

; substitute_character used when character cannot be converted
; one from another
; https://php.net/mbstring.substitute-character
;mbstring.substitute_character = none

; Enable strict encoding detection.
;mbstring.strict_detection = Off

; This directive specifies the regex pattern of content types for which mb_output_handler()
; is activated.
; Default: mbstring.http_output_conv_mimetypes=^(text/|application/xhtml\+xml)
;mbstring.http_output_conv_mimetypes=

; This directive specifies maximum stack depth for mbstring regular expressions. It is similar
; to the pcre.recursion_limit for PCRE.
;mbstring.regex_stack_limit=100000

; This directive specifies maximum retry count for mbstring regular expressions. It is similar
; to the pcre.backtrack_limit for PCRE.
;mbstring.regex_retry_limit=1000000

[gd]
; Tell the jpeg decode to ignore warnings and try to create
; a gd image. The warning will then be displayed as notices
; disabled by default
; https://php.net/gd.jpeg-ignore-warning
;gd.jpeg_ignore_warning = 1

[exif]
; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
; With mbstring support this will automatically be converted into the encoding
; given by corresponding encode setting. When empty mbstring.internal_encoding
; is used. For the decode settings you can distinguish between motorola and
; intel byte order. A decode setting cannot be empty.
; https://php.net/exif.encode-unicode
;exif.encode_unicode = ISO-8859-15

; https://php.net/exif.decode-unicode-motorola
;exif.decode_unicode_motorola = UCS-2BE

; https://php.net/exif.decode-unicode-intel
;exif.decode_unicode_intel    = UCS-2LE

; https://php.net/exif.encode-jis
;exif.encode_jis =

; https://php.net/exif.decode-jis-motorola
;exif.decode_jis_motorola = JIS

; https://php.net/exif.decode-jis-intel
;exif.decode_jis_intel    = JIS

[Tidy]
; The path to a default tidy configuration file to use when using tidy
; https://php.net/tidy.default-config
;tidy.default_config = /usr/local/lib/php/default.tcfg

; Should tidy clean and repair output automatically?
; WARNING: Do not use this option if you are generating non-html content
; such as dynamic images
; https://php.net/tidy.clean-output
tidy.clean_output = Off

[soap]
; Enables or disables WSDL caching feature.
; https://php.net/soap.wsdl-cache-enabled
soap.wsdl_cache_enabled=1

; Sets the directory name where SOAP extension will put cache files.
; https://php.net/soap.wsdl-cache-dir
soap.wsdl_cache_dir=&quot;/tmp&quot;

; (time to live) Sets the number of second while cached file will be used
; instead of original one.
; https://php.net/soap.wsdl-cache-ttl
soap.wsdl_cache_ttl=86400

; Sets the size of the cache limit. (Max. number of WSDL files to cache)
soap.wsdl_cache_limit = 5

[sysvshm]
; A default size of the shared memory segment
;sysvshm.init_mem = 10000

[ldap]
; Sets the maximum number of open links or -1 for unlimited.
ldap.max_links = -1

[dba]
;dba.default_handler=

[opcache]
; Determines if Zend OPCache is enabled
;opcache.enable=1

; Determines if Zend OPCache is enabled for the CLI version of PHP
;opcache.enable_cli=0

; The OPcache shared memory storage size.
;opcache.memory_consumption=128

; The amount of memory for interned strings in Mbytes.
;opcache.interned_strings_buffer=8

; The maximum number of keys (scripts) in the OPcache hash table.
; Only numbers between 200 and 1000000 are allowed.
;opcache.max_accelerated_files=10000

; The maximum percentage of &quot;wasted&quot; memory until a restart is scheduled.
;opcache.max_wasted_percentage=5

; When this directive is enabled, the OPcache appends the current working
; directory to the script key, thus eliminating possible collisions between
; files with the same name (basename). Disabling the directive improves
; performance, but may break existing applications.
;opcache.use_cwd=1

; When disabled, you must reset the OPcache manually or restart the
; webserver for changes to the filesystem to take effect.
;opcache.validate_timestamps=1

; How often (in seconds) to check file timestamps for changes to the shared
; memory storage allocation. (&quot;1&quot; means validate once per second, but only
; once per request. &quot;0&quot; means always validate)
;opcache.revalidate_freq=2

; Enables or disables file search in include_path optimization
;opcache.revalidate_path=0

; If disabled, all PHPDoc comments are dropped from the code to reduce the
; size of the optimized code.
;opcache.save_comments=1

; If enabled, compilation warnings (including notices and deprecations) will
; be recorded and replayed each time a file is included. Otherwise, compilation
; warnings will only be emitted when the file is first cached.
;opcache.record_warnings=0

; Allow file existence override (file_exists, etc.) performance feature.
;opcache.enable_file_override=0

; A bitmask, where each bit enables or disables the appropriate OPcache
; passes
;opcache.optimization_level=0x7FFFBFFF

;opcache.dups_fix=0

; The location of the OPcache blacklist file (wildcards allowed).
; Each OPcache blacklist file is a text file that holds the names of files
; that should not be accelerated. The file format is to add each filename
; to a new line. The filename may be a full path or just a file prefix
; (i.e., /var/www/x  blacklists all the files and directories in /var/www
; that start with 'x'). Line starting with a ; are ignored (comments).
;opcache.blacklist_filename=

; Allows exclusion of large files from being cached. By default all files
; are cached.
;opcache.max_file_size=0

; Check the cache checksum each N requests.
; The default value of &quot;0&quot; means that the checks are disabled.
;opcache.consistency_checks=0

; How long to wait (in seconds) for a scheduled restart to begin if the cache
; is not being accessed.
;opcache.force_restart_timeout=180

; OPcache error_log file name. Empty string assumes &quot;stderr&quot;.
;opcache.error_log=

; All OPcache errors go to the Web server log.
; By default, only fatal errors (level 0) or errors (level 1) are logged.
; You can also enable warnings (level 2), info messages (level 3) or
; debug messages (level 4).
;opcache.log_verbosity_level=1

; Preferred Shared Memory back-end. Leave empty and let the system decide.
;opcache.preferred_memory_model=

; Protect the shared memory from unexpected writing during script execution.
; Useful for internal debugging only.
;opcache.protect_memory=0

; Allows calling OPcache API functions only from PHP scripts which path is
; started from specified string. The default &quot;&quot; means no restriction
;opcache.restrict_api=

; Mapping base of shared memory segments (for Windows only). All the PHP
; processes have to map shared memory into the same address space. This
; directive allows to manually fix the &quot;Unable to reattach to base address&quot;
; errors.
;opcache.mmap_base=

; Facilitates multiple OPcache instances per user (for Windows only). All PHP
; processes with the same cache ID and user share an OPcache instance.
;opcache.cache_id=

; Enables and sets the second level cache directory.
; It should improve performance when SHM memory is full, at server restart or
; SHM reset. The default &quot;&quot; disables file based caching.
;opcache.file_cache=

; Enables or disables opcode caching in shared memory.
;opcache.file_cache_only=0

; Enables or disables checksum validation when script loaded from file cache.
;opcache.file_cache_consistency_checks=1

; Implies opcache.file_cache_only=1 for a certain process that failed to
; reattach to the shared memory (for Windows only). Explicitly enabled file
; cache is required.
;opcache.file_cache_fallback=1

; Enables or disables copying of PHP code (text segment) into HUGE PAGES.
; This should improve performance, but requires appropriate OS configuration.
;opcache.huge_code_pages=0

; Validate cached file permissions.
;opcache.validate_permission=0

; Prevent name collisions in chroot'ed environment.
;opcache.validate_root=0

; If specified, it produces opcode dumps for debugging different stages of
; optimizations.
;opcache.opt_debug_level=0

; Specifies a PHP script that is going to be compiled and executed at server
; start-up.
; https://php.net/opcache.preload
;opcache.preload=

; Preloading code as root is not allowed for security reasons. This directive
; facilitates to let the preloading to be run as another user.
; https://php.net/opcache.preload_user
;opcache.preload_user=

; Prevents caching files that are less than this number of seconds old. It
; protects from caching of incompletely updated files. In case all file updates
; on your site are atomic, you may increase performance by setting it to &quot;0&quot;.
;opcache.file_update_protection=2

; Absolute path used to store shared lockfiles (for *nix only).
;opcache.lockfile_path=/tmp

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
;curl.cainfo =

[openssl]
; The location of a Certificate Authority (CA) file on the local filesystem
; to use when verifying the identity of SSL/TLS peers. Most users should
; not specify a value for this directive as PHP will attempt to use the
; OS-managed cert stores in its absence. If specified, this value may still
; be overridden on a per-stream basis via the &quot;cafile&quot; SSL stream context
; option.
;openssl.cafile=

; If openssl.cafile is not specified or if the CA file is not found, the
; directory pointed to by openssl.capath is searched for a suitable
; certificate. This value must be a correctly hashed certificate directory.
; Most users should not specify a value for this directive as PHP will
; attempt to use the OS-managed cert stores in its absence. If specified,
; this value may still be overridden on a per-stream basis via the &quot;capath&quot;
; SSL stream context option.
;openssl.capath=

[ffi]
; FFI API restriction. Possible values:
; &quot;preload&quot; - enabled in CLI scripts and preloaded files (default)
; &quot;false&quot;   - always disabled
; &quot;true&quot;    - always enabled
;ffi.enable=preload

; List of headers files to preload, wildcard patterns allowed.
;ffi.preload=

; zend_extension=xdebug&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;php.ini 파일은 원본 php.ini파일에서 업로드 파일 사이즈가 변경되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;디렉토리 구성&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1721730420448&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker-compose.yml
nginx-proxy/
　conf.d/
　　custom_proxy_settings.conf
Php/
 　Dockerfile
 　php.ini&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;docker-compose.yaml 파일이 위치한 workdpress를 설치할 경로에 위와 같은 구조로 파일을 배포해 주시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;서버에 해당 파일을 업로드 한 후 &amp;lsquo;docker compose up -d&amp;rsquo; 명령으로 docker를 실행한 후 &lt;a href=&quot;https://example.com으로&quot;&gt;https://example.com으로&lt;/a&gt; 접속하면 wordpress 초기 설정 화면이 보이실 겁니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;관련하여 컨테이너 내부에서 에러가 발생하는 경우 &amp;lsquo;wordpress/log&amp;rsquo;와 &amp;lsquo;nginx-proxy/logs&amp;rsquo;에 각각의 로그가 기록되어 있으니 확인 및 조치가 가능합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;여기까지 SSL을 지원하는 wordpress docker-compose.yaml에 대한 포스팅을 마치겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;서버설치 및 구성의 불편함이 없는 docker를 많이 활용하는 추세인데 https통신을 위해 SSL인증서 등록을 하는데 애를 먹는 분들이 많이 있을 것 같습니다. (저도 그랬고, 인터넷 검색을 통해 관련 내용을 찾아 일부 오류가 있는 부분을 수정하여 올려 드리는 부분입니다.) &amp;lsquo;nginx-proxy&amp;rsquo;와 &amp;lsquo;letsencrypt&amp;rsquo; 컨테이너를 추가하여 SSL등록을 가능하게 하는 좋은 방법인 것 같아 기록을 남겨 봅니다.&lt;/p&gt;</description>
      <category>WordPress</category>
      <category>compose</category>
      <category>docker</category>
      <category>https</category>
      <category>ssl</category>
      <category>wordpress</category>
      <author>수상한 김토끼</author>
      <guid isPermaLink="true">https://with-kami.tistory.com/1534867</guid>
      <comments>https://with-kami.tistory.com/1534867#entry1534867comment</comments>
      <pubDate>Tue, 23 Jul 2024 19:28:11 +0900</pubDate>
    </item>
  </channel>
</rss>