<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Site-Server v@build.version@ (http://www.squarespace.com) on Sun, 10 Aug 2025 10:21:30 GMT
--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://www.rssboard.org/media-rss" version="2.0"><channel><title>Blog - MAEK</title><link>http://www.maekgarden.com/blog/</link><lastBuildDate>Sat, 12 Dec 2015 04:29:53 +0000</lastBuildDate><language>en-US</language><generator>Site-Server v@build.version@ (http://www.squarespace.com)</generator><description><![CDATA[<p><strong>Just a Story</strong></p>
<p>Thoughts about Replication &amp; Database</p>]]></description><item><title>What is Oracle VIP?</title><category>Architecture</category><dc:creator>changwon lee</dc:creator><pubDate>Sat, 12 Dec 2015 04:06:37 +0000</pubDate><link>http://www.maekgarden.com/blog/2015/12/12/what-is-oracle-vip</link><guid isPermaLink="false">562332aae4b055379f468fa4:562c880fe4b094a157a1be10:566b9aee40667a1cc167badd</guid><description><![CDATA[Let’s go over Oracle VIP.
At times, in the cluster configuration, SharePlex uses Oracle VIP instead 
of host clustering VIP.]]></description><content:encoded><![CDATA[<figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892999934-BLAA6TIFK331MJ9I2CGE/image-asset.png" data-image-dimensions="518x346" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892999934-BLAA6TIFK331MJ9I2CGE/image-asset.png?format=1000w" width="518" height="346" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892999934-BLAA6TIFK331MJ9I2CGE/image-asset.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892999934-BLAA6TIFK331MJ9I2CGE/image-asset.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892999934-BLAA6TIFK331MJ9I2CGE/image-asset.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892999934-BLAA6TIFK331MJ9I2CGE/image-asset.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892999934-BLAA6TIFK331MJ9I2CGE/image-asset.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892999934-BLAA6TIFK331MJ9I2CGE/image-asset.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892999934-BLAA6TIFK331MJ9I2CGE/image-asset.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  






  <p>Let’s go over Oracle VIP.<br />At times, in the cluster configuration, SharePlex uses Oracle VIP instead of host clustering VIP.</p><p>Why is the Virtual IP necessary in Oracle RAC Environment?<br />That is because of client(Application) <strong>TCP timeouts.</strong></p><p>Let’s have a look on diagram.</p>

































































 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449893154953-F6Q2K1BSW4NSJWSSO8ID/image-asset.gif" data-image-dimensions="1140x484" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449893154953-F6Q2K1BSW4NSJWSSO8ID/image-asset.gif?format=1000w" width="1140" height="484" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449893154953-F6Q2K1BSW4NSJWSSO8ID/image-asset.gif?format=100w 100w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449893154953-F6Q2K1BSW4NSJWSSO8ID/image-asset.gif?format=300w 300w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449893154953-F6Q2K1BSW4NSJWSSO8ID/image-asset.gif?format=500w 500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449893154953-F6Q2K1BSW4NSJWSSO8ID/image-asset.gif?format=750w 750w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449893154953-F6Q2K1BSW4NSJWSSO8ID/image-asset.gif?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449893154953-F6Q2K1BSW4NSJWSSO8ID/image-asset.gif?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449893154953-F6Q2K1BSW4NSJWSSO8ID/image-asset.gif?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  






  <p id="yui_3_17_2_1_1449888283004_55765"><br>Here, VIP#1 is up in Node1 and VIP#2 is up in Node2. And, each VIP is mapped to the Ethernet device eth0.<br>Client is connected through the Listener.<br></p><p>In case of Node1 is shutdown for some reason, VIP#1 moved to Node2 and mapped to eth0:1.<br>Here, the thing is that VIP#1 is not linked to LISTENER, it is just UP in Node2.</p><p>At this point, Client got acknowledged that the connection to VIP#1 is disconnected.<br>Without this kind of acknowledgement from VIP#1, client should wait until TCP timeout value, it is normally 200s.<br>It means that for 200s, Client should be stuck.</p><p>However, now Client knows that connection is lost, so it can try to reconnect to available node, finally it is connected to VIP#2.<br>This is how Oracle VIP works and the reason we need it in the cluster environment.<br></p>]]></content:encoded></item><item><title>SP_SYS_HOST_NAME</title><category>Parameter</category><dc:creator>changwon lee</dc:creator><pubDate>Sat, 12 Dec 2015 03:53:27 +0000</pubDate><link>http://www.maekgarden.com/blog/2015/12/12/spsyshostname</link><guid isPermaLink="false">562332aae4b055379f468fa4:562c880fe4b094a157a1be10:566b8d037086d7e2aac17103</guid><description><![CDATA[This parameter forces SharePlex to use the defined hostname(IP) wherever it 
stays…
So, if the hostname can be resolved in the server, SharePlex will be fine.]]></description><content:encoded><![CDATA[<figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892290121-4LP0ST27NVRUXH7GJQKC/primary.GIF" data-image-dimensions="929x190" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892290121-4LP0ST27NVRUXH7GJQKC/primary.GIF?format=1000w" width="929" height="190" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892290121-4LP0ST27NVRUXH7GJQKC/primary.GIF?format=100w 100w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892290121-4LP0ST27NVRUXH7GJQKC/primary.GIF?format=300w 300w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892290121-4LP0ST27NVRUXH7GJQKC/primary.GIF?format=500w 500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892290121-4LP0ST27NVRUXH7GJQKC/primary.GIF?format=750w 750w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892290121-4LP0ST27NVRUXH7GJQKC/primary.GIF?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892290121-4LP0ST27NVRUXH7GJQKC/primary.GIF?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892290121-4LP0ST27NVRUXH7GJQKC/primary.GIF?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  






  <p>This parameter forces SharePlex to use the defined hostname(IP) wherever it stays…<br />So, if the hostname can be resolved in the server, SharePlex will be fine.</p><p>Another thing is that: If there are multiple network interfaces in the system, normally, SharePlex will use just the "primary" network card to communicate to the target system unless the SP_SYS_HOST_NAME is set.<br />For this reason, if you want to use the other network interface instead of Primary network, you should set this parameter.</p><p>We can think of it as a global hostname.</p><p> </p>

































































 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892207295-1CQXVHG7MIME2P1GU73J/p1.GIF" data-image-dimensions="1402x615" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892207295-1CQXVHG7MIME2P1GU73J/p1.GIF?format=1000w" width="1402" height="615" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892207295-1CQXVHG7MIME2P1GU73J/p1.GIF?format=100w 100w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892207295-1CQXVHG7MIME2P1GU73J/p1.GIF?format=300w 300w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892207295-1CQXVHG7MIME2P1GU73J/p1.GIF?format=500w 500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892207295-1CQXVHG7MIME2P1GU73J/p1.GIF?format=750w 750w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892207295-1CQXVHG7MIME2P1GU73J/p1.GIF?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892207295-1CQXVHG7MIME2P1GU73J/p1.GIF?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892207295-1CQXVHG7MIME2P1GU73J/p1.GIF?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  






  <p>For example,<br />Node1’s IP is 12, and Node2’s IP is 13. Global VIP is 15 and its hostname is PRINCE.</p><p>If we set SP_SYS_HOST_NAME=PRINCE,<br />On Node1, SharePlex is mapped with PRINCE, there is no issue to start SharePlex in Node1.<br />Does it make sense?</p><p> </p>

































































 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892356495-GGMWG7F09HC21LDYEWNF/image-asset.png" data-image-dimensions="1413x610" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892356495-GGMWG7F09HC21LDYEWNF/image-asset.png?format=1000w" width="1413" height="610" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892356495-GGMWG7F09HC21LDYEWNF/image-asset.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892356495-GGMWG7F09HC21LDYEWNF/image-asset.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892356495-GGMWG7F09HC21LDYEWNF/image-asset.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892356495-GGMWG7F09HC21LDYEWNF/image-asset.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892356495-GGMWG7F09HC21LDYEWNF/image-asset.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892356495-GGMWG7F09HC21LDYEWNF/image-asset.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449892356495-GGMWG7F09HC21LDYEWNF/image-asset.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  






  <p>Although the Global VIP moved to Node2, as the Global VIP hostname can be resolved in the Node2 and<br />SharePlex is mapped with PRINCE, there is no issue to start SharePlex in Node2 as well.</p><p>This is how the parameter works.</p>]]></content:encoded></item><item><title>ASM Connection</title><category>Architecture</category><dc:creator>changwon lee</dc:creator><pubDate>Sat, 12 Dec 2015 02:50:32 +0000</pubDate><link>http://www.maekgarden.com/blog/2015/12/12/asm-connection</link><guid isPermaLink="false">562332aae4b055379f468fa4:562c880fe4b094a157a1be10:566b8a3fb204d55a82d09622</guid><description><![CDATA[ASM is just a file system Oracle made.
Its configuration is very complex, but DBA is responsible for that and they 
do everything about ASM configuration.]]></description><content:encoded><![CDATA[<figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449888404393-GS6PD9S9AHJYF0IZD82R/image-asset.gif" data-image-dimensions="798x506" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449888404393-GS6PD9S9AHJYF0IZD82R/image-asset.gif?format=1000w" width="798" height="506" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449888404393-GS6PD9S9AHJYF0IZD82R/image-asset.gif?format=100w 100w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449888404393-GS6PD9S9AHJYF0IZD82R/image-asset.gif?format=300w 300w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449888404393-GS6PD9S9AHJYF0IZD82R/image-asset.gif?format=500w 500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449888404393-GS6PD9S9AHJYF0IZD82R/image-asset.gif?format=750w 750w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449888404393-GS6PD9S9AHJYF0IZD82R/image-asset.gif?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449888404393-GS6PD9S9AHJYF0IZD82R/image-asset.gif?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449888404393-GS6PD9S9AHJYF0IZD82R/image-asset.gif?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  






  <p>ASM is just a file system Oracle made.<br />Its configuration is very complex, but DBA is responsible for that and they do everything about ASM configuration.</p><p>For SharePlex, ASM is just one of the file systems.<br />The good thing is that ASM is a cluster file system, so customer can keep archived logs in ASM area, and SharePlex can access the archived log files from other servers easily.</p><p>On the normal file system, SharePlex just needs to get the redolog location and access it directly. That’s it.<br />But, we should consider more on ASM area.</p><p><strong>ASM authentication</strong></p><p>SharePlex should consider about ASM authentication.<br />Simply, there are 2 methods, one is OS authentication, and the other is TNS.</p><p>You can think of OS authentication as a BEQ method.<br />TNS connection is the same as database TNS connection.<br />OSASM group(normally asmdba group) provides OS authentication for the SYSASM system privilege<br />Members of the OSASM group are authorized to connect using the SYSASM privilege and have full access to Oracle ASM</p><p>The point is that to use OS authentication instead of <strong>TNS</strong>, <strong>SharePlex installation owner should be in OSASM group</strong>.<br />Otherwise, you will run into the issues in terms of access denied.</p><p>On the other hand, if you want to use TNS method for ASM connection, SharePlex owner doesn’t need to be in OSASM group.</p>]]></content:encoded></item><item><title>Deadlock due to HCC(Exadata)</title><category>Troubleshoot</category><dc:creator>changwon lee</dc:creator><pubDate>Mon, 07 Dec 2015 11:43:29 +0000</pubDate><link>http://www.maekgarden.com/blog/2015/12/7/deadlock-due-to-hccexadata</link><guid isPermaLink="false">562332aae4b055379f468fa4:562c880fe4b094a157a1be10:56656e8de4b05b2617d446a6</guid><description><![CDATA[Block level deaklock issue could happen when HCC is enabled.

Hybrid Columnar Compression(HCC) is the way Exadata compresses the data. 
HCC utilizes a combination of both row and columnar methods for storing 
data.
A logical construct, called the Compression Unit (CU), is used to store a 
set of compressed data.]]></description><content:encoded><![CDATA[<figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449488351178-OA3KKJWN9JICAVQ5082R/image-asset.png" data-image-dimensions="473x333" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449488351178-OA3KKJWN9JICAVQ5082R/image-asset.png?format=1000w" width="473" height="333" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449488351178-OA3KKJWN9JICAVQ5082R/image-asset.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449488351178-OA3KKJWN9JICAVQ5082R/image-asset.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449488351178-OA3KKJWN9JICAVQ5082R/image-asset.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449488351178-OA3KKJWN9JICAVQ5082R/image-asset.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449488351178-OA3KKJWN9JICAVQ5082R/image-asset.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449488351178-OA3KKJWN9JICAVQ5082R/image-asset.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449488351178-OA3KKJWN9JICAVQ5082R/image-asset.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  






  <p>Block level deaklock issue could happen when HCC is enabled.</p><p>Hybrid Columnar Compression(HCC) is the way Exadata compresses the data. HCC utilizes a combination of both row and columnar methods for storing data.<br />A logical construct, called the Compression Unit (CU), is used to store a set of compressed data.</p><p>HCC uses one lock per Compression Unit… instead of per row.<br /><strong>That is the reason we could see so many block contention in replication software.</strong></p><p>As you can imagine, user could get endless deadlock issues even though they increased NI_TRANS &amp; PCT_FREE a lot.<br />Actually, as this issue is not from ITL shortage issue.</p><p><strong>As a workaround</strong>, you could disable HCC on the table in Oracle11g in case most operations were UPDATE and the UPDATE operation decompresses the existing data.<br />That is an expected behavior on HCC.<br />You should realize that you don’t need to keep the table with HCC for that reason.</p><p>Fortunately,<br /><strong>In Oracle 12c</strong>, user can choose a “Row level locking” instead of “Compression Unit Locking”</p><p> </p><p><strong>Query: How many rows are in the Oracle block</strong></p><p>You may want to use the query below to check the degree of data contention.</p>























<pre class="source-code"><span class="cm-tag">SELECT</span> <span class="cm-tag">dbms_rowid</span><span class="cm-qualifier">.rowid_block_number</span>(<span class="cm-tag">rowid</span>) <span class="cm-tag">blockno</span>, <span class="cm-tag">count</span>(*) <span class="cm-tag">cnt</span>
<span class="cm-tag">FROM</span> <span class="cm-tag">compress_test_table</span>
<span class="cm-tag">GROUP</span> <span class="cm-tag">BY</span> <span class="cm-tag">dbms_rowid</span><span class="cm-qualifier">.rowid_block_number</span>(<span class="cm-tag">rowid</span>);</pre>]]></content:encoded></item><item><title>Deadlock due to ITL</title><category>Troubleshoot</category><dc:creator>changwon lee</dc:creator><pubDate>Mon, 07 Dec 2015 10:43:24 +0000</pubDate><link>http://www.maekgarden.com/blog/2015/12/7/deadlock-due-to-itl</link><guid isPermaLink="false">562332aae4b055379f468fa4:562c880fe4b094a157a1be10:56656065e4b08333d20574a5</guid><description><![CDATA[Apparently, a deadlock issue is related to resource contention between 2 
actions.
Then, what could be the resources in this case?

At first, you can think of the real row-level contention.
Normally, it results from the abnormal Application design or replication 
product defects.

At this time, I would like to focus on other resource-related deadlock 
issues(block-level contention).]]></description><content:encoded><![CDATA[<figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449484948561-P0LJF7G972ELB64F6GUL/image-asset.png" data-image-dimensions="690x677" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449484948561-P0LJF7G972ELB64F6GUL/image-asset.png?format=1000w" width="690" height="677" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449484948561-P0LJF7G972ELB64F6GUL/image-asset.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449484948561-P0LJF7G972ELB64F6GUL/image-asset.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449484948561-P0LJF7G972ELB64F6GUL/image-asset.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449484948561-P0LJF7G972ELB64F6GUL/image-asset.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449484948561-P0LJF7G972ELB64F6GUL/image-asset.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449484948561-P0LJF7G972ELB64F6GUL/image-asset.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449484948561-P0LJF7G972ELB64F6GUL/image-asset.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
      
        </figure>
      

    
  






  <p>Apparently, a deadlock issue is related to resource contention between 2 actions.<br />Then, what could be the resources in this case?</p><p>At first, you can think of the real row-level contention.<br />Normally, it results from the abnormal Application design or replication product defects.</p><p>At this time, I would like to focus on other resource-related deadlock issues(<strong>block-level contention</strong>).</p><p><strong>One of those reasons is ITL shortage issue</strong></p><p><strong><em>What is Interested Transaction List (ITL) ?</em></strong><br />It is a simple data structure called "Interested Transaction List" (ITL), a list that maintains information on transaction.<br />The transaction identifier will be stored as an entry in the ITL in the header of the data block.<br />The ITL contains several placeholders (or slots) for transactions.<br />ITL slots are required for every transaction.</p><p><strong><em>How many slots are typically available in ITL ?</em></strong><br />During the table creation, the INITRANS parameter defines how many slots are initially created in the ITL.<br />The ITL can grow up to the number defined by the MAXTRANS parameter of the table, provided there is space in the block.<br />Nevertheless, if there is no more room in the block, even if the MAXTRANS is high enough, the ITL cannot grow.</p><p>If there is available space in the block, the number of ITL should increase to the MAXTRANS. Right?<br />If that is the case, why the short of ITL issue happens?</p><p>Normally the speed of growing up <strong>is not fast enough</strong> to avoid ITL shortage issue.<br />Eventually, it ends up post slow issue OR blocking issues. To make it worse, deadlock issue could happen.</p><p>Ok. let's look at the diagram below for easy understanding about Oracle dead lock and ITL.</p>

































































 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="true" data-image="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449486637612-TPIPVR1O9D2Y7ITSMRW7/deadlock_diagram.PNG" data-image-dimensions="1639x797" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" src="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449486637612-TPIPVR1O9D2Y7ITSMRW7/deadlock_diagram.PNG?format=1000w" width="1639" height="797" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449486637612-TPIPVR1O9D2Y7ITSMRW7/deadlock_diagram.PNG?format=100w 100w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449486637612-TPIPVR1O9D2Y7ITSMRW7/deadlock_diagram.PNG?format=300w 300w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449486637612-TPIPVR1O9D2Y7ITSMRW7/deadlock_diagram.PNG?format=500w 500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449486637612-TPIPVR1O9D2Y7ITSMRW7/deadlock_diagram.PNG?format=750w 750w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449486637612-TPIPVR1O9D2Y7ITSMRW7/deadlock_diagram.PNG?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449486637612-TPIPVR1O9D2Y7ITSMRW7/deadlock_diagram.PNG?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/562332aae4b055379f468fa4/1449486637612-TPIPVR1O9D2Y7ITSMRW7/deadlock_diagram.PNG?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption class="image-caption-wrapper">
            <p>Oracle data block diagram describing a dead lock issue</p>
          </figcaption>
        
      
        </figure>
      

    
  






  <p>Initially, there are 3 SQL Threads. You can think of it as a Transaction. And, we have 2 data blocks. After the step #4, all ITL slots are consumed.<br />Eventually, when SQL Thread#2 is going to modify the block 2, it must wait until ITL is available to acquire.<br />SQL Thread#3 will encounter ORA-60 error as it is a holder of block 2 and waiter of block 1.</p><p>This explains that we could have a deadlock issue because there is no available ITL slot.<br />It is different from the row level locking.</p><p><strong>What should I do to avoid this issue?</strong></p><p>At least, for heavy tables, please keep higher value of INI_TRANS at the first stage of your implementation. Apparently, that would save your day. If you couldn't reorganize all of tables and indexes, please make sure that you should do <strong>for the unique index</strong> which should be the first place you consider to change(It has a higher chance of much more contention.).<br /> </p><p><strong>Then, How to increase INI_TRANS?</strong></p><p>There are 2 ways to accomplish it.<br />You can change the value by running ALTER command, but only newly inserted rows are affected.<br />The other method is Reorganization of TALBLE or INDEX, in this case all rows are affected with new INIT_TRANS value.</p><p>What about SHAREPLEX_TRANS internal table in SharePlex?<br />This table saves transaction information of each session, and usually there are lots of block contention.<br />So, SharePlex development specified the INI_TRANS value with 20 by default.</p><p> </p>]]></content:encoded></item><item><title>First thing in the morning</title><category>Rest</category><dc:creator>changwon lee</dc:creator><pubDate>Sat, 21 Nov 2015 13:31:46 +0000</pubDate><link>http://www.maekgarden.com/blog/2015/11/20/blog-first</link><guid isPermaLink="false">562332aae4b055379f468fa4:562c880fe4b094a157a1be10:564f2628e4b0829bc1c82560</guid><description><![CDATA[<figure >
  <blockquote data-animation-role="quote" data-animation-override>
    <span>“</span>First thing in the morning, work on your most important task. Don’t do anything else until this is done.<span>”</span>
  </blockquote>
  <figcaption class="source">&mdash; Leo Babauta</figcaption>
</figure>



  <p> </p><p>What is your first thing in the morning?</p>]]></description></item></channel></rss>