<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>ORAganism</title>
	<atom:link href="http://oraganism.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://oraganism.wordpress.com</link>
	<description></description>
	<lastBuildDate>Thu, 16 May 2013 20:55:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='oraganism.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>ORAganism</title>
		<link>http://oraganism.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://oraganism.wordpress.com/osd.xml" title="ORAganism" />
	<atom:link rel='hub' href='http://oraganism.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Oracle Dictionary fragmentation</title>
		<link>http://oraganism.wordpress.com/2013/05/16/oracle-dictionary-fragmentation/</link>
		<comments>http://oraganism.wordpress.com/2013/05/16/oracle-dictionary-fragmentation/#comments</comments>
		<pubDate>Thu, 16 May 2013 20:55:49 +0000</pubDate>
		<dc:creator>Eter Pani</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://oraganism.wordpress.com/?p=2984</guid>
		<description><![CDATA[The purpose of this post is mainly to highlight the performance degradation due to dictionary index fragmentation. It is something that oracle not widely announce but it came from the physical structure of the database. Oracle databases have the AGE and the age mainly came from the number of DDL operations done on the database. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2984&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The purpose of this post is mainly to highlight the performance degradation due to dictionary index fragmentation. It is something that oracle not widely announce but it came from the physical structure of the database.</p>
<p>Oracle databases have the AGE and the age mainly came from the number of DDL operations done on the database. The DDL operations modify the dictionary and introduce fragmentation to the indexes and tables.</p>
<p>I have made the small test case</p>
<pre class="brush: plain; light: true; title: ; notranslate">
-- CREATE TABLE
DROP TABLE list_customers
/
CREATE TABLE list_customers
   ( customer_id             NUMBER(6)
   , cust_first_name         VARCHAR2(20)
   , cust_last_name          VARCHAR2(20)
   , nls_territory           VARCHAR2(30)
   , cust_email              VARCHAR2(30))
   PARTITION BY LIST (nls_territory) (
   PARTITION asia VALUES ('CHINA', 'THAILAND'),
   PARTITION europe VALUES ('GERMANY', 'ITALY', 'SWITZERLAND'),
   PARTITION west VALUES ('AMERICA'),
   PARTITION east VALUES ('INDIA'))
/
-- ADD partitions
ALTER SESSION SET EVENTS '10046 trace name context forever, level 4'
/
ALTER TABLE list_customers ADD PARTITION south VALUES ('ANTARCTICA')
/
EXIT
-- DROP partition
ALTER SESSION SET EVENTS '10046 trace name context forever, level 4'
/
ALTER TABLE list_customers DROP PARTITION south
/
EXIT
</pre>
<p>It is oversimplified method without dependancies to the object and object statistics. But it already create two massive traces.<br />
In summary during the INSERT command we insert to tables<br />
OBJ$, DEFERRED_STG$ and TABPART$<br />
During delete operation we remove rows from this tables<br />
As you all know insert-delete tables have high level of fragmentation on the indexed columns</p>
<p>We run the standard report for indexes on 3 mentioned tables and it shows that estimated number of leaf blocks for some of them dramatically smaller then the actual one.</p>
<table style="width:2500px;border:8px;">
<tr>
<td WIDTH="45%"><strong>INDEX</strong></td>
<td><strong>Estimated Size</strong></td>
<td><strong>Actual Size</strong></td>
</tr>
<tr>
<td>SYS.TABPART$.I_TABPART_OBJ$</td>
<td>47</td>
<td>279</td>
</tr>
<tr>
<td>SYS.OBJ$.I_OBJ3</td>
<td>4</td>
<td>20</td>
</tr>
<tr>
<td>SYS.OBJ$.I_OBJ4</td>
<td>422</td>
<td>1475</td>
</tr>
<tr>
<td>SYS.OBJ$.I_OBJ1</td>
<td>422</td>
<td>969</td>
</tr>
<tr>
<td>SYS.TABPART$.I_TABPART_BOPART$</td>
<td>68</td>
<td>125</td>
</tr>
<tr>
<td>SYS.DEFERRED_STG$.I_DEFERRED_STG1</td>
<td>30</td>
<td>53</td>
</tr>
<tr>
<td>SYS.OBJ$.I_OBJ5</td>
<td>1269</td>
<td>1728</td>
</tr>
<tr>
<td>SYS.OBJ$.I_OBJ2</td>
<td>1269</td>
<td>1726</td>
</tr>
</table>
<p>In case you would try to rebuild this indexes in usual way, you would get the oracle error</p>
<pre class="brush: plain; light: true; title: ; notranslate">ORA-00701: object necessary for warmstarting database cannot be altered
</pre>
<p>that actually block all attempts to fix the fragmentation.</p>
<p>Index fragmentation primarelly affect index FULL and RANGE scans operation but not UNIQUE index scan. UNIQUE scan would be affected only when INDEX would grow for additional level.</p>
<p>The number in a table does not show something dramatic but it looks like we already have mensurable performance impact on common database operations, like name resolution.</p>
<p>In long term I think every database with high number of structure modifications has to go through process of APPLICATION DATA migration regularly once in 5-15 years. </p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2984&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraganism.wordpress.com/2013/05/16/oracle-dictionary-fragmentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/86cd31c275ead197c6278bc0980689ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eterpani</media:title>
		</media:content>
	</item>
		<item>
		<title>UKOUG Database Server SIG (Leeds 2013)</title>
		<link>http://oraganism.wordpress.com/2013/05/10/ukoug-database-server-sig-leeds-2013/</link>
		<comments>http://oraganism.wordpress.com/2013/05/10/ukoug-database-server-sig-leeds-2013/#comments</comments>
		<pubDate>Fri, 10 May 2013 21:00:59 +0000</pubDate>
		<dc:creator>Neil Johnson</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[UKOUG]]></category>

		<guid isPermaLink="false">http://oraganism.wordpress.com/?p=2976</guid>
		<description><![CDATA[On Thursday I attended the UKOUG Database Server SIG in Leeds. All slides have been uploaded to the UKOUG website. https://www.ukoug.org/events/ukoug-database-server-sig-meeting-may-2013/ It&#8217;s the first SIG I&#8217;ve attended this year and after enjoying it so much I ought to try harder to get to other events. We had Oak Table presence from David Kurtz talking all [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2976&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>On Thursday I attended the UKOUG Database Server SIG in Leeds. All slides have been uploaded to the UKOUG website.</p>
<p><a href="https://www.ukoug.org/events/ukoug-database-server-sig-meeting-may-2013/" title="UKOUG Database Server SIG" target="_blank">https://www.ukoug.org/events/ukoug-database-server-sig-meeting-may-2013/</a></p>
<p>It&#8217;s the first SIG I&#8217;ve attended this year and after enjoying it so much I ought to try harder to get to other events. We had Oak Table presence from <a href="http://www.go-faster.co.uk/" title="David Kurtz" target="_blank">David Kurtz</a> talking all things partitioning/compression and purging, two Oracle employees discussing first support and then ZFS/NetApp (I particularly enjoyed this one) and then <a href="erudans.blogspot.co.uk" title="Edgars Rudans" target="_blank">Edgars Rudans</a> on his evolution of the Exadata Minimal Patching process. All of these presentations are well worth downloading and checking out.</p>
<p>The last presentation of the day was me. I&#8217;ve never presented before and it took a big step out of my comfort zone to get up there but I&#8217;m so glad I did. I would recommend it to anyone currently spending time in the audience thinking &#8220;I wish I had the confidence to do that&#8221;. It&#8217;s nerve racking beforehand but exhilarating afterwards.</p>
<p>When blogging in the past I&#8217;ve liked how it makes you think a little bit harder before pressing the publish button. I think the best thing I got out of the whole presentation process was that it made me dig even deeper to make sure I&#8217;d done my homework.</p>
<p>After the SIG there was a good group headed out for Leeds Oracle Beers #3 which involved local beer, good burgers and Morris Dancing, all good fun.</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2976&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraganism.wordpress.com/2013/05/10/ukoug-database-server-sig-leeds-2013/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/55ea924d6d316a670e89006c04d6a0b6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil</media:title>
		</media:content>
	</item>
		<item>
		<title>Monitoring real-time apply progress</title>
		<link>http://oraganism.wordpress.com/2013/04/28/monitoring-real-time-apply-progress/</link>
		<comments>http://oraganism.wordpress.com/2013/04/28/monitoring-real-time-apply-progress/#comments</comments>
		<pubDate>Sun, 28 Apr 2013 14:14:56 +0000</pubDate>
		<dc:creator>Pawel Krol</dc:creator>
				<category><![CDATA[Data Guard]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[standby redo logs]]></category>

		<guid isPermaLink="false">http://oraganism.wordpress.com/?p=2853</guid>
		<description><![CDATA[In many cases monitoring Data Guard, at least in Maximum Performance mode, is down to checking transport and apply lag to make sure standby database is not &#8220;too far&#8221; behind primary, and quite often it is sufficient in a day to day operation. By checking v$archived_log we can easily get information about the last archived [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2853&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>
In many cases monitoring Data Guard, at least in Maximum Performance mode, is down to checking transport and apply lag to make sure standby database is not &#8220;too far&#8221; behind primary, and quite often it is sufficient in a day to day operation. By checking v$archived_log we can easily get information about the last archived and applied log sequence number:</p>
<pre class="brush: plain; highlight: [12]; light: true; title: ; notranslate">
SQL&gt; select sequence#,ARCHIVED,APPLIED from v$archived_log order by sequence#;
SEQUENCE# ARCHIVED  APPLIED
---------- --------- ---------
… output truncated …
       208 YES       YES
       209 YES       YES
       210 YES       YES
       211 YES       IN-MEMORY
</pre>
<p>If we use real-time apply changes are applied to the standby database as soon as they are written to the standby redo logs, which should keep standby database as up to date as possibly without going to Maximum Availability or Maximum Protection.</p>
<p>However, if our primary database fails, how can we check what is the last change transmitted from the primary, or that all changes transmitted were actually applied before we activate standby?<br />
Of course we can trust that Oracle will apply all the transmitted redo, when standby is activated, but without knowing what was the last transmitted change we have no way of verifying it. It is also possible that the failover decision depends on how far behind the primary the standby was at the time of failure or how much data can potentially be lost.
</p>
<p>
One way of finding the information we need is by checking v$standby_log and v$recovery_progress views.<br />
v$standby_log displays information about standby redo logs. Columns LAST_CHANGE# and LAST_TIME can be used to find last changes transmitted from primary.</p>
<pre class="brush: plain; highlight: [12]; light: true; title: ; notranslate">
SQL&gt; select GROUP#,THREAD#,SEQUENCE#,STATUS,LAST_CHANGE#,LAST_TIME from v$standby_log;

    GROUP#    THREAD#  SEQUENCE# STATUS           LAST_CHANGE# LAST_TIME
---------- ---------- ---------- ---------- ------------------ -------------------
         4          1        213 ACTIVE                1699715 2013-04-18 20:26:15
         5          1          0 UNASSIGNED
         6          1          0 UNASSIGNED
         7          1          0 UNASSIGNED

SQL&gt;
</pre>
<p>v$recovery_progress can be used to monitoring database recovery operations, and gives us access to information like: Last Applied Redo, Active Apply Rate, Average Apply Rate, Apply Time per Log and a few more. The item we are interested in is &#8220;Last Applied Redo&#8221; and the value of the &#8220;TIMESTAMP&#8221; column. The value should be very close to or match the value of LAST_TIME column from v$standby_log view.</p>
<pre class="brush: plain; highlight: [12]; light: true; title: ; notranslate">
SQL&gt; select START_TIME,TYPE, ITEM,UNITS,SOFAR,TIMESTAMP 
  2  from v$recovery_progress where ITEM='Last Applied Redo';
START_TIME          TYPE             ITEM                UNITS     TIMESTAMP
------------------- ---------------- ------------------- --------- -------------------
2013-04-17 22:46:26 Media Recovery   Last Applied Redo   SCN+Time  2013-04-18 20:26:16

SQL&gt;
</pre></p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2853&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraganism.wordpress.com/2013/04/28/monitoring-real-time-apply-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/2f67d737162f793108d4eca2234120d2?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pawelkrol</media:title>
		</media:content>
	</item>
		<item>
		<title>NOLOGGING in numbers</title>
		<link>http://oraganism.wordpress.com/2013/04/28/nologging-in-numbers/</link>
		<comments>http://oraganism.wordpress.com/2013/04/28/nologging-in-numbers/#comments</comments>
		<pubDate>Sat, 27 Apr 2013 23:16:26 +0000</pubDate>
		<dc:creator>Eter Pani</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[11.2]]></category>
		<category><![CDATA[undo]]></category>

		<guid isPermaLink="false">http://oraganism.wordpress.com/?p=2951</guid>
		<description><![CDATA[Hi All I have made small investigation about redo generation. From early days of my career I was remember that nologging operation is very performance effective but never try to quantify this very. Every application can theoretically be split into 4 groups of tables (I use my personal names but hopefully it has sense): 1) [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2951&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Hi All<br />
I have made small investigation about redo generation. From early days of my career I was remember that nologging operation is very performance effective but never try to quantify this very.<br />
Every application can theoretically be split into  4 groups of tables (I use my personal names but hopefully it has sense):<br />
1) Regular tables – contain valuable information need to be stored for legal and functional purposes. Stored as normal tables.<br />
2) Staging tables – contain process lifetime specific information, easily re-creatable. Used for transferring information between sessions and report generation. Stored as regular tables or materialized views.<br />
3) Session Temporary tables– contain process lifetime specific information, easily re-creatable. Used for reporting stored as GLOBAL TEMPORARY tables ON COMMIT PRESERVE.<br />
4) Transaction Temporary tables– contain process lifetime specific information, easily re-creatable. Used for processing optimisation stored as GLOBAL TEMPORARY tables ON COMMIT DELETE.<br />
By default all 4 groups generate REDO logs records that can be significant amount of resources. The redo information is valuable if we:<br />
1) Support StandBy database<br />
2) Information inside tables is valuable and have to be safe in case of database crush.<br />
To make the standby or backup completely usable after a nologging statement is run, a mechanism other than database recovery must be used to get or create current copies of the affected blocks. You have to drop and recreate the object with the invalidated blocks or truncate it, using the program that maintains the object. Thus extra step to manage switchover/failover to standby database process have to be introduced.<br />
Again based on my understanding the only business requirements for logging is to keep data from “Regular tables”. The safety of the data from other groups is not such important.<br />
The only DML operation that can be optimised in terms of REDO log generation is INSERT with APPEND hint. (MERGE is actually presentation layer above INSERT thus can be treated together) . Hint APPEND if it works have one negative issue. The data in new table is not actually available until end of transaction.Due to the following error.<br />
ORA-12838: cannot read/modify an object after modifying it in parallel<br />
It linked to the fact that oracle could not make consistent model of block if there is no UNDO information. This actually makes using this hint on Global Temporary tables with ON COMMIT DELETE rows unreasonable. You can insert data but never be able to use it until it would be deleted.<br />
Another fact that I have to highlight UPDATE and DELETE always generate REDO information. Thus if the table intensively update the gains would be minimal. Avoiding this operation on a temporary tables is another skills that developers have to be used to for optimal performance of your application.<br />
There are 5 parameters that actually affect SEGMENT logging: Database LOGGING, Database FORCE LOGGING, Tablespace LOGGING, Tablespace FORCE LOGGING (Can be switched on tablespaces with “Regular tables” and switched off on tablespaces with “Staging tables” , Table LOGGIN. Global Temporary tables actually always in NOLOGGING mode thus we can assume for table groups “Session Temporary tables” and “Transaction Temporary tables” always have all parameters equal to NO. Production databases should always be in protected mode thus the value DATABASE LOGGING should always be in YES, it takes value NO outside of investigation.<br />
To test I have created the table TEST.BIGTABLE (column1 NUMBER) with 39999960 rows and few tables to generate INSERT as SELECT statement from BIGTABLE dataset. The results are below. </p>
<div style="white-space:pre;overflow:auto;width:800px;padding:10px;">
<p style="text-align:center;">Regular table</p>
<table style="width:2500px;border:8px;">
<col width="400">
<col width="80">
<col width="80">
<col width="80">
<col width="80">
<col width="80">
<col width="80">
<col width="80">
<col width="80">
<tr>
<td>TABLE LOGGING</td>
<td>*</td>
<td>*</td>
<td>N</td>
<td>Y</td>
<td>N</td>
<td>Y</td>
<td>Y</td>
</tr>
<tr>
<td>TABLESPACE LOGGING</td>
<td>*</td>
<td>*</td>
<td>Y</td>
<td>N</td>
<td>N</td>
<td>Y</td>
<td>Y</td>
</tr>
<tr>
<td>TABLESPACE FORCE LOGGING</td>
<td>*</td>
<td>Y</td>
<td>N</td>
<td>N</td>
<td>N</td>
<td>N</td>
<td>N</td>
</tr>
<tr>
<td>DATABASE LOGGING</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
</tr>
<tr>
<td>DATABASE FORCE LOGGING</td>
<td>Y</td>
<td>N</td>
<td>N</td>
<td>N</td>
<td>N</td>
<td>N</td>
<td>N</td>
</tr>
<tr>
<td>Amount of redo for INSERT APPEND</td>
<td>501000K</td>
<td>501000K</td>
<td>457K</td>
<td>501000K</td>
<td>456K</td>
<td>501000K</td>
<td>501000K</td>
</tr>
<tr>
<td>Amount of redo for Standard INSERT AS SELECT</td>
<td>501000K</td>
<td>501000K</td>
<td>501000K</td>
<td>501000K</td>
<td>501000K</td>
<td>501000K</td>
<td>501000K</td>
</tr>
</table>
</div>
<p style="text-align:center;">Amount of redo for temporary tables</p>
<table border="3" rules="all" width="2000">
<col width="50%">
<col width="25%">
<col width="25%">
<tr>
<td></td>
<td>Standard INSERT AS SELECT</td>
<td>INSERT APPEND value</td>
</tr>
<tr>
<td>Transaction Temp Table</td>
<td>110K</td>
<td>0.3K</td>
</tr>
<tr>
<td>Session Temp Table</td>
<td>110K</td>
<td>0.3K</td>
</tr>
</table>
<p>Hope all above have sense and can be used for good </p>
<p>P.S. The &#8220;redo size&#8221; values has been got from AUTOTRACE statistics.</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2951&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraganism.wordpress.com/2013/04/28/nologging-in-numbers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/86cd31c275ead197c6278bc0980689ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eterpani</media:title>
		</media:content>
	</item>
		<item>
		<title>OUGN Spring Seminar 2013</title>
		<link>http://oraganism.wordpress.com/2013/04/21/ougn-spring-seminar-2013/</link>
		<comments>http://oraganism.wordpress.com/2013/04/21/ougn-spring-seminar-2013/#comments</comments>
		<pubDate>Sun, 21 Apr 2013 11:49:11 +0000</pubDate>
		<dc:creator>Martin Nash</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[OUGN]]></category>

		<guid isPermaLink="false">http://oraganism.wordpress.com/?p=2763</guid>
		<description><![CDATA[I arrived back in the UK yesterday after my second time at the Oracle User Group Norway&#8217;s Spring Seminar. I had a great time and even those that suffered with sea-sickness enjoyed themselves when they weren&#8217;t praying to the porcelain god. It was definitely a rougher sea on the first night this year compared to [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2763&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I arrived back in the UK yesterday after my second time at the <a href="http://ougnvarseminar2013.sched.org/">Oracle User Group Norway&#8217;s Spring Seminar</a>. I had a great time and even those that suffered with sea-sickness enjoyed themselves when they weren&#8217;t praying to the porcelain god. It was definitely a rougher sea on the first night this year compared to last, but lucky for me I was pretty much unaffected. However, the &#8220;<a href="http://mwidlake.wordpress.com/2013/04/05/re-forming-the-martin-cluster-in-norway/">Martin Cluster</a>&#8221; suffered some major node failures with outages from <a href="http://martincarstenbach.wordpress.com/">Bach</a> and <a href="http://mwidlake.wordpress.com/">Widlake</a>.</p>
<p>The first day of the conference is on land in Oslo and some guy called Justin Bieber did a really good job of making sure that hotels in Oslo were in demand. I heard reports that his guys has fans that booked rooms in multiple hotels in the hope of one of them being the same hotel that Justin was staying in&#8230; Madness and an inconvenience of some of the conference attendees.</p>
<p>On day 1 <a href="http://martincarstenbach.wordpress.com/">Martin Bach</a> and I ran a workshop on client connectivity to RAC databases under the banner of &#8220;RAC Attack II&#8221;. We covered Fast Connection Failover (FCF) for both Java and C# clients with particular focus on the bugs and gotcha that await those attempting to use the feature. On day 2 I did a presentation entitled &#8220;How Virtualisation Changed My Life&#8221; that aims to encourage attendees to make active use free virtualisation products on their own hardware in order to increase their knowledge and hands-on experience with the technology they work with or want to work with.</p>
<p>Outside of my speaking commitments I attended some great sessions and the following is a selection of my notes:</p>
<p>&#8220;Happiness is a state change&#8221; &#8211; <a href="http://carymillsap.blogspot.co.uk/">Cary Millsap</a>. Without the context of the rest of the keynote presentation (&#8220;Learning about Life through Business and Software&#8221;) this quotation might not make much sense. The point that Cary is making is that it is development and progression that we humans find rewarding rather than our state at specific point.</p>
<p>e-Vita employees <a href="http://www.evita.no/ikbViewer/evita-ny/menneskene/personkort?p_document_id=40456">Cato Aune</a> and <a href="http://www.evita.no/ikbViewer/evita-ny/menneskene/personkort?p_document_id=8284">Jon Petter Hjulstad</a> co-presented a session on &#8220;Weblogic 12c &#8211; experiences&#8221;. My only exposure Weblogic is when installing or managing Oracle Enterprise Manager and Oracle Identity Management products, neither of which use/support Weblogic 12c at this time, but I wanted to hear about what the latest Weblogic will surely bring my way in due course.</p>
<p><a href="http://dbatrain.wordpress.com/">Joel Goodman</a> gave a very good presentation on &#8220;RAC Global Resource Management Concepts&#8221; revealing the complexity of what goes on under the covers of your RAC database. Unfortunately the slides are not available even to conference attendees.</p>
<p><a href="http://connormcdonald.wordpress.com/">Connor McDonald</a>&#8216;s &#8220;Odds &amp; Ends&#8221; was very enjoyable and it&#8217;s definitely worth grabbing the slides. My notes include:</p>
<ol>
<li>Use of oradebug suspend/resume as an alternative to killing a resource hungry session is an appealing idea</li>
<li>I wasn&#8217;t aware of the use of &#8220;#&#8221; to run SQL*Plus command mid way through typing a SQL statement in SQL*Plus</li>
<li>Making use of &#8220;set errorlogging on&#8221; isn&#8217;t something I currently do, but will look at</li>
<li>The unsupported, but interesting &#8220;overlaps&#8221; clause in SQL is worth being aware of and Connor provides an associated MOS note ID in the slides</li>
</ol>
<p><a href="http://fritshoogland.wordpress.com/">Frits Hoogland</a> gave 3 presentations during the conference. Unfortunately the first (&#8220;Exadata OLTP&#8221;) was at the same time as mine. Fortunately I saw the other 2: &#8220;About multiblock reads&#8221; and &#8220;Advanced Profiling of Oracle Using Function Calls—A Hacking Session&#8221;. These work very well together and the hacking session was the highlight of the conference for me. There were no slides, so you can&#8217;t download them, but Frits and documented what he covers in &#8220;<a href="http://fritshoogland.files.wordpress.com/2013/03/profiling_of_oracle_using_function_calls.pdf">Profile of Oracle Using Function Calls (PDF)</a>&#8220;. Notes from the sessions include:</p>
<ol>
<li>Frits prefers to set db_file_multiblock_read_count manually rather than unset or setting to zero</li>
<li>The &#8220;physical reads&#8221; in autotrace output is number of blocks read not number IOs, which is a mistake he sees others making</li>
<li>Direct path reads don&#8217;t stop at extent boundaries and a single request can read multiple [contiguous] extents</li>
<li>Use perf to break out what CPU is being used for</li>
</ol>
<p><a href="http://kyuoracleblog.wordpress.com/">Kai Yu</a> presented &#8220;Optimizing OLTP Oracle Database Performance using PCIe SSD&#8221;. He shared his experiences and covered the use cases for this type of storage in an Oracle database infrastructure. Very significant performance improvements are available, but as always it depends on your implementation/workload.</p>
<p><a href="http://portrix-systems.de/blog/brost/">Bjoern Rost</a>&#8216;s &#8220;The ins and outs of Total Recall&#8221; covered his experiences using Total Recall aka Flashback Data Archive (FBA). Does it really need 2 names? He showed how it had been used for what I understood to be a <a href="http://en.wikipedia.org/wiki/Slowly_changing_dimension">slowly changing dimension</a> use case without the need to change existing parts of the application. They had been bitten by the change covered by MOS Note &#8220;Initial Extent Size of a Partition Changed To 8MB From 64KB [ID 1295484.1]&#8220;. The most interesting part of presentation was detailed coverage of DISSOCIATE_FBA so grab the slides if you use FBA. It&#8217;s also worth noting that Total Recall/Flashback Data Archive is included in Advanced Compression so you might find you have the option of using it without specifically purchasing it.</p>
<p><a href="http://carymillsap.blogspot.co.uk/">Cary Millsap</a>&#8216;s &#8220;Millsap&#8217;s Grand Unified Theory of ʺTuningʺ&#8221; emphasised the point that end user experience is what really matters and covered what tools are appropriate in specific phases of performance analysis.</p>
<p>If the agenda for next year is anything like this year then it&#8217;s definitely worth considering a trip to Oslo for a boat ride to Kiel and back.</p>
<p>A massive thank you to <a href="http://ougn.no/oracle-brukergruppe">OUGN</a> for putting on the seminar, accepting my presentations, excellent organisation and fantastic hospitality.</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2763&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraganism.wordpress.com/2013/04/21/ougn-spring-seminar-2013/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7622f90e733399a783530d01fe3a9bb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">martinpaulnash</media:title>
		</media:content>
	</item>
		<item>
		<title>OSWatcher Startup/Restart On Exadata</title>
		<link>http://oraganism.wordpress.com/2013/03/17/oswatcher-startuprestart-on-exadata/</link>
		<comments>http://oraganism.wordpress.com/2013/03/17/oswatcher-startuprestart-on-exadata/#comments</comments>
		<pubDate>Sun, 17 Mar 2013 10:46:32 +0000</pubDate>
		<dc:creator>Martin Nash</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Exadata]]></category>
		<category><![CDATA[osw]]></category>
		<category><![CDATA[OSWatcher]]></category>
		<category><![CDATA[Startup]]></category>

		<guid isPermaLink="false">http://oraganism.wordpress.com/?p=2758</guid>
		<description><![CDATA[When the question of what starts OSWatcher (OSW) on Exadata was raised at a client site I thought I&#8217;d take a quick look. It took me a little longer than I expected to work out the detail and therefore it seems worth sharing. If you&#8217;re simply looking to change the &#8220;snapshot interval&#8221;, &#8220;archive retention&#8221; or [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2758&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>When the question of what starts OSWatcher (OSW) on Exadata was raised at a client site I thought I&#8217;d take a quick look. It took me a little longer than I expected to work out the detail and therefore it seems worth sharing.</p>
<p>If you&#8217;re simply looking to change the &#8220;snapshot interval&#8221;, &#8220;archive retention&#8221; or &#8220;compression command&#8221; then <strong>/opt/oracle.cellos/validations/init.d/oswatcher</strong> is what you need to modify and you&#8217;ll find a line with <strong>./startOSW.sh X Y Z</strong>. Where X is the snapshot interval, Y is the archive retention and Z is the compression command used to compress the output files.</p>
<p>If you&#8217;re curious to know the details of what starts and restarts OSWatcher than read on.</p>
<p>The following is applicable to the X2-2 I regularly get my hands on which is running 11.2.2.4.2 and I don&#8217;t know if things change with later versions, so apologies if this isn&#8217;t applicable to your Exadata environment.</p>
<p>Startup of OSWatcher on boot is indirectly handled by <strong>/etc/init.d/rc.local</strong>, which includes:</p>
<pre class="brush: plain; highlight: [3]; light: true; title: ; notranslate">
########### BEGIN DO NOT REMOVE Added by Oracle Exadata ###########
if [ -x /etc/rc.d/rc.Oracle.Exadata ]; then
  . /etc/rc.d/rc.Oracle.Exadata
fi
########### END DO NOT REMOVE Added by Oracle Exadata ###########
</pre>
<p><strong>/etc/rc.d/rc.Oracle.Exadata</strong> includes:</p>
<pre class="brush: plain; highlight: [2]; light: true; title: ; notranslate">
# Perform validations step
/opt/oracle.cellos/vldrun -all
</pre>
<p>The main purpose of <strong>/opt/oracle.cellos/vldrun</strong> and the Perl script <strong>/opt/oracle.cellos/validations/bin/vldrun.pl</strong> appears to be ensuring configuration changes are made on initial boot and after upgrades, although I haven&#8217;t looked into all the detail yet. The part of <strong>/opt/oracle.cellos/vldrun</strong> that is relevant in the context of starting OSWatcher on every boot is:</p>
<pre class="brush: plain; highlight: [1]; light: true; title: ; notranslate">
$VLDRUN_PL -quiet &quot;$@&quot;
</pre>
<p>This executes <strong>/opt/oracle.cellos/validations/bin/vldrun.pl</strong> with the <strong>-quiet</strong> and <strong>-all</strong> arguments (as that was passed to /opt/oracle.cellos/vldrun)</p>
<p>The &#8220;quiet&#8221; argument is pretty obvious and a little reading reveals that &#8220;all&#8221; simply means that all scripts in <strong>/opt/oracle.cellos/validations/init.d/</strong> should be executed.</p>
<p>So off to <strong>/opt/oracle.cellos/validations/init.d/</strong> we go:</p>
<pre class="brush: plain; highlight: [12]; light: true; title: ; notranslate">
root@my-host ~]# ls -1 /opt/oracle.cellos/validations/init.d/
beginfirstboot
biosbootorder
cellpreconfig
checkconfigs
checkdeveachboot
checklsi
diskhealth
ipmisettings
misceachboot
misczeroboot
oswatcher
postinstall
sosreport
syscheck
[root@my-host ~]#
</pre>
<p>&#8230; and in <strong>oswatcher</strong>, as already mentioned in the second paragraph of the post, you&#8217;ll find <strong>./startOSW.sh X Y Z</strong>, where X is the snapshot interval, Y is the archive retention and Z is the compression command used to compress the output files.</p>
<p>OK, so that&#8217;s what starts OSWatcher on boot, but you should also know that OSWatcher is restarted daily by <strong>/etc/cron.daily/cellos</strong>, which includes:</p>
<pre class="brush: plain; highlight: [1]; light: true; title: ; notranslate">
/opt/oracle.cellos/validations/bin/vldrun.pl -script oswatcher &gt; /dev/null 2&gt;&amp;1
</pre>
<p>The only bit of all this that doesn&#8217;t really sit right with me is that OSWatcher is included with &#8220;validations&#8221;. That doesn&#8217;t seem like an appropriate description to me.</p>
<p>Trivial as it may be, I hope that later version of the Exadata software move from what is described above to the &#8220;service&#8221; based approach used on non-Exadata platforms and documented in <strong>How To Start OSWatcher Black Box Every System Boot [ID 580513.1]</strong>. This feel like a much more standard approach and allows control of the service using the <strong>/sbin/service</strong> and <strong>/sbin/chkconfig</strong> commands.</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2758&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraganism.wordpress.com/2013/03/17/oswatcher-startuprestart-on-exadata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7622f90e733399a783530d01fe3a9bb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">martinpaulnash</media:title>
		</media:content>
	</item>
		<item>
		<title>Rename LVM Volume Group Holding Root File System Volume</title>
		<link>http://oraganism.wordpress.com/2013/03/09/rename-lvm-vg-for-root-fs-lv/</link>
		<comments>http://oraganism.wordpress.com/2013/03/09/rename-lvm-vg-for-root-fs-lv/#comments</comments>
		<pubDate>Sat, 09 Mar 2013 08:53:02 +0000</pubDate>
		<dc:creator>Martin Nash</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[LVM]]></category>
		<category><![CDATA[rename]]></category>
		<category><![CDATA[Root VG]]></category>

		<guid isPermaLink="false">http://oraganism.wordpress.com/?p=2749</guid>
		<description><![CDATA[I&#8217;m not sure exactly when this change happened, but in Oracle [Enterprise] Linux 5 days a default installation would result in the root file system being created as a LVM logical volume (LV) named LogVol00 in a volume group (VG) named VolGroup00. I must confess that I wasn&#8217;t paying too much attention to LV and VG [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2749&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m not sure exactly when this change happened, but in Oracle [Enterprise] Linux 5 days a default installation would result in the root file system being created as a LVM logical volume (LV) named <strong>LogVol00</strong> in a volume group (VG) named <strong>VolGroup00</strong>. I must confess that I wasn&#8217;t paying too much attention to LV and VG default names in the days I was playing with OL5 a lot, but that&#8217;s partly because there was nothing to drag my attention to them.</p>
<p>Along comes Oracle Linux 6 and off I go creating VMs, cloning them and then really not liking the fact that the default VG created during the installation, and holding the LV for the root file system, is named vg_&lt;hostname&gt; where &lt;hostname&gt; is the hostname of the original VM I installed. If I clone a VM the next thing I do is change the hostname, which means that I&#8217;m left with an inconsistent and somewhat confusing VG name. I think I screwed up one VM before realising that it wasn&#8217;t just simply a case of renaming the VG and updating /etc/fstab. I asked a friend who does much more Linux admin how to achieve what I wanted and didn&#8217;t take it any further when he said words to the effect of, &#8220;Yeah, it&#8217;s more complicated than that.&#8221;</p>
<p>Fairly recently I walked into the same situation again, only this time I decided that I wasn&#8217;t going to take &#8220;more complicated&#8221; for an answer <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . I searched, found a few articles that seemed to have logic in their approach and figured I had nothing to lose. I also thought there were some redundant steps in the posts I was following, hence feeling it&#8217;s worth blogging my slimmed down approach.</p>
<p>Well, that&#8217;s enough preamble. Here&#8217;s the details:</p>
<p><strong>1) Boot Into Rescue Mode</strong></p>
<p>For me booting from CD/iso was the easiest way to get into &#8220;rescue mode&#8221;. To do this select &#8220;Rescue installed system&#8221; when the welcome screen is presented during the boot process. You will then be prompted with:</p>
<p>Choose a Language &#8211; You know better than I what&#8217;s the best choice for you. Select it and then OK.</p>
<p>Keyboard Type &#8211; Again, pick what you think best matches your keyboard. Then select OK.</p>
<p>Rescue Method &#8211; Select &#8220;Local CD/DVD&#8221;, then OK.</p>
<p>Setup Networking &#8211; Select &#8220;No&#8221;</p>
<p>Rescue &#8211; Select &#8220;Continue&#8221;</p>
<p>Rescue (message about your system being mounted under /mnt/sysimage and use of chroot) &#8211; OK.</p>
<p>Rescue (another message about having mounted your system under /mnt/sysimage) &#8211; OK.</p>
<p>First Aid Kit quickstart menu &#8211; Select &#8220;shell  Start shell&#8221;, then OK.</p>
<p>The above will get you to a prompt so you can actually do what you came here for!</p>
<p><strong>2) Rename Volume Group</strong></p>
<p>The LVM commands you issue are the same as usual, only they need to be prefixed with <strong>lvm</strong>. I suggest listing the VGs to be sure the state of the system is as you expect, and using <strong>more</strong> is a good idea as you don&#8217;t have a scrollbar, i.e.:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
lvm vgdisplay | more
</pre>
<p>Once you&#8217;re happy, rename the VG as below:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
lvm vgrename &lt;original&gt; &lt;desired&gt;
</pre>
<p>You should get a success message after this command.</p>
<p><strong>3) Update All References</strong></p>
<p>Change the root directory to that of your installed system using chroot:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
chroot /mnt/sysimage
</pre>
<p>The following files need to be modified to replace references to the old VG name with the new VG name:</p>
<ul>
<li>/etc/fstab</li>
<li>/boot/grub/grub.conf</li>
</ul>
<p>There will be multiple references per line in grub.conf, so a bit of &#8220;global replace&#8221; is in order.</p>
<p><strong>4) Create New Ramdisk Image</strong></p>
<p>Run the following command to <strong>m</strong>a<strong>k</strong>e a new <strong>init</strong>ial <strong>r</strong>am<strong>d</strong>isk image</p>
<pre class="brush: plain; light: true; title: ; notranslate">
mkinitrd --force /boot/initramfs-&lt;kernel version&gt;.img &lt;kernel version&gt;
</pre>
<p><em>Note that the force option is only required because there is already an existing image with the same name. You could use a different name if you want, but you&#8217;d need to add an appropriate entry to the grub.conf to reflect this.</em></p>
<p>If the above command completes without error messages and you didn&#8217;t make any errors in the editing of the files earlier then you should be all set&#8230; Only one way to find out!</p>
<p><strong>5) Reboot Machine</strong></p>
<p>Exit out of the chroot environment (type &#8220;exit&#8221;).</p>
<p>Exit out of the shell to return to the &#8220;First Aid Kit quickstart menu&#8221; (type &#8220;exit&#8221;).</p>
<p>First Aid Kit quickstart menu &#8211; Select &#8220;reboot Reboot&#8221;, then OK.</p>
<p>At the welcome screen select &#8220;Boot from local drive&#8221;.</p>
<p>If all goes well then remember to remove the CD/iso from your [virtual] CD drive.</p>
<p><strong>References</strong></p>
<p>The 2 articles that helped me with this are the following, so thanks to the authors:</p>
<p><a href="http://technoconfessions.blogspot.co.uk/2010/05/renaming-volume-group-that-your-root.html">http://technoconfessions.blogspot.co.uk/2010/05/renaming-volume-group-that-your-root.html</a><br />
<a href="https://we.riseup.net/debian/renaming-a-lvm-root-volume-group">https://we.riseup.net/debian/renaming-a-lvm-root-volume-group</a></p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2749&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraganism.wordpress.com/2013/03/09/rename-lvm-vg-for-root-fs-lv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7622f90e733399a783530d01fe3a9bb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">martinpaulnash</media:title>
		</media:content>
	</item>
		<item>
		<title>Local Yum Repos for Oracle Linux</title>
		<link>http://oraganism.wordpress.com/2013/03/05/local-yum-repos-for-ol/</link>
		<comments>http://oraganism.wordpress.com/2013/03/05/local-yum-repos-for-ol/#comments</comments>
		<pubDate>Tue, 05 Mar 2013 09:04:54 +0000</pubDate>
		<dc:creator>Martin Nash</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[mirror]]></category>
		<category><![CDATA[Oracle Linux]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[YUM]]></category>

		<guid isPermaLink="false">http://oraganism.wordpress.com/?p=2704</guid>
		<description><![CDATA[At least one person asked me why I did this, so I&#8217;ll start by explaining the motivation for setting up my own mirror of Yum repositories freely available on public-yum.oracle.com. It comes down to 5 main reasons: Wanting my Oracle Linux 6 installation can take advantage of the &#8220;latest&#8221; repositories Wanting the ability to update [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2704&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>At least one person asked me why I did this, so I&#8217;ll start by explaining the motivation for setting up my own mirror of Yum repositories freely available on public-yum.oracle.com.</p>
<p>It comes down to 5 main reasons:</p>
<ol>
<li>Wanting my Oracle Linux 6 installation can take advantage of the &#8220;latest&#8221; repositories
<li>Wanting the ability to update to a consistent version by using repositories I control</li>
<li>Reducing the amount of data I download over the internet</li>
<li>A desire to learn how to set up a Yum repository [mirror]</li>
<li>Making my updates faster as they only have to retrieve packages from the LAN</li>
</ol>
<p>When I first looked into setting up a Yum mirror I found a number of articles covering how to do so via <strong><a href="http://rsync.samba.org/">rsync</a></strong> and I then found this <a href="https://blogs.oracle.com/linux/entry/free_updates_and_errata_for">post</a> where one of the comments suggests that allowing rsync access to public-yum.oracle.com would be nice. This made me realised that the rsync approach wasn&#8217;t going to work for the Oracle Linux repositories (it seems the suggestion was well received so this may change in the future). I also found a OTN article covering &#8220;<a href="http://www.oracle.com/technetwork/articles/servers-storage-admin/yum-repo-setup-1659167.html">How to Create a Local Yum Repository for Oracle Linux</a>&#8220;. I eagerly started to read and quickly hit a snag for me in the prerequisites section:</p>
<blockquote><p><strong>Have valid customer support identifier (CSI)</strong></p></blockquote>
<p>I don&#8217;t have a CSI. My customers all have CSIs, because they run Oracle in production. I don&#8217;t have a CSI as I only run the OTN versions of Oracle software in my lab so that I can test out things I don&#8217;t have opportunity, access or time to test on client sites.</p>
<p>Anyway, with a little bit of reading around I found a way to create local mirrors of the Oracle Linux 6 Latest and Oracle UEK Latest repositories.</p>
<p>What follows was carried out on a VM, but there is no reason why any of this won&#8217;t work equally on a physical host. If you encounter any problem replicating what I&#8217;ve done here then please comment and I&#8217;ll gladly try to help.</p>
<p><strong>1) Allocating Storage</strong></p>
<p>You&#8217;re going to need a reasonable amount of storage for this. My &#8220;repos&#8221; file system currently holds 24G of data and that is just for Oracle Linux 6 Latest and Oracle UEK Latest. I created a dedicated file system for my repositories on a LVM volume, but won&#8217;t cover that here. Allocate the storage as you see fit, but you&#8217;re going to want at least the 24G quoted.</p>
<p><strong>2) Create Directory For Repos</strong></p>
<p>As mentioned above, I have a dedicated file system for my repositories. It&#8217;s mounted under /repos and I&#8217;ll include that in all the code listings that follow. If you chose to use a different directory structure then clearly you&#8217;ll need to make the required changes.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
# mkdir -p /repos/x86_64/
</pre>
<p><strong>3) Install yum-utils</strong></p>
<p>yum-utils includes a couple of commands you&#8217;re going to need for this, <strong>reposync</strong> and <strong>createrepo</strong>.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
# yum -y install yum-utils
</pre>
<p><strong>4) Setup Repositories</strong></p>
<p>Follow the instructions on <a href="http://public-yum.oracle.com/">public-yum.oracle.com</a> in order to set up the Oracle repositories. </p>
<p>By default reposync will create a local copy of all your enabled repositories, but it is also possible to specify the name of the repo[s] you want to sync on the command line using the &#8220;r&#8221; or &#8220;repoid&#8221; flag. I use this option as I want to have my local repositories enabled on all my Oracle Linux 6 hosts, including the repository machine, but only want reposync to run for the public-yum.oracle.com repositories I want to mirror locally. This means that I do not enable any of the repositories in the <a href="http://public-yum.oracle.com/public-yum-ol6.repo">public-yum-ol6.repo</a> file downloaded from Oracle and create a new .repo file for my local repositories that I can distribute to all machines.</p>
<p><strong>5) Run reposync</strong></p>
<p>Running reposync is as simple as the command below:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
# /usr/bin/reposync --repoid=ol6_UEK_latest --repoid=ol6_latest -p /repos/x86_64
</pre>
<p><strong>6) Run createrepo</strong></p>
<p>Once the repositories are downloaded to the local file system you need to run createrepo in order to create the repository metadata:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
# createrepo /repos/x86_64/ol6_UEK_latest/getPackage/
# createrepo /repos/x86_64/ol6_latest/getPackage/
</pre>
<p>The &#8220;update&#8221; option for createrepo looked attractive in the man page, but whenever I used it the process was killed by the <a href="http://linux-mm.org/OOM_Killer">OOM Killer</a> and I haven&#8217;t investigated in detail.</p>
<p><strong>7) Allowing Web Access</strong></p>
<p>In order to make use of the repositories they need to be exposed to the machines requiring access. HTTP is as good a way as any for my purposes, so I installed Apache (yum -y install httpd), ensured it would restart on reboot (chkconfig httpd on) and created symbolic links to my repositories:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
# cd /var/www/html/repo/OracleLinux/OL6
# ln -s /repos/x86_64/ol6_UEK_latest/getPackage/ ./UEK/latest/x86_64
# ln -s /repos/x86_64/ol6_latest/getPackage/ ./latest/x86_64
</pre>
<p><strong>8) Script for Updating Mirrors</strong></p>
<p>Once I&#8217;d got it working I created a very simple shell script to allow me update whenever I appropriate:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
#!/bin/bash
LOG_FILE=/repos/logs/repo_cron_$(date +%Y.%m.%d).log
/usr/bin/reposync --repoid=ol6_UEK_latest --repoid=ol6_latest -p /repos/x86_64 &gt;&gt; $LOG_FILE 2&gt;&amp;1
/usr/bin/createrepo /repos/x86_64/ol6_UEK_latest/getPackage/ &gt;&gt; $LOG_FILE 2&gt;&amp;1
/usr/bin/createrepo /repos/x86_64/ol6_latest/getPackage/ &gt;&gt; $LOG_FILE 2&gt;&amp;1
</pre>
<p>It&#8217;s then just a matter of pointing my Oracle Linux 6 installations at my local repository.</p>
<p>For reference my repo file is as follows (with hostnames removed)</p>
<pre class="brush: plain; light: true; title: ; notranslate">
[ol6_latest_local]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=http://&lt;hostname removed&gt;/repo/OracleLinux/OL6/latest/$basearch/
gpgkey=http://&lt;hostname removed&gt;/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
enabled=1

[ol6_UEK_latest_local]
name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
baseurl=http://&lt;hostname removed&gt;/repo/OracleLinux/OL6/UEK/latest/$basearch/
gpgkey=http://&lt;hostname removed&gt;/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
enabled=1
</pre>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2704&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraganism.wordpress.com/2013/03/05/local-yum-repos-for-ol/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7622f90e733399a783530d01fe3a9bb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">martinpaulnash</media:title>
		</media:content>
	</item>
		<item>
		<title>Column Encryption tricks</title>
		<link>http://oraganism.wordpress.com/2013/02/23/column-encryption-tricks/</link>
		<comments>http://oraganism.wordpress.com/2013/02/23/column-encryption-tricks/#comments</comments>
		<pubDate>Sat, 23 Feb 2013 22:42:02 +0000</pubDate>
		<dc:creator>Eter Pani</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[TDE]]></category>

		<guid isPermaLink="false">http://oraganism.wordpress.com/?p=2797</guid>
		<description><![CDATA[This story starts when someone ask me to Look on Transparent Data Encryption issue. We discover that we could not do Partition Exchange due to the difference in encryption keys on the involved table columns. It have clear common sense to bring them in sync thus we happy trying to implement Oracle Recommendation (Unable To [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2797&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This story starts when someone ask me to Look on Transparent Data Encryption issue. We discover that we could not do Partition Exchange due to the difference in encryption keys on the involved table columns. It have clear common sense to bring them in sync thus we happy trying to implement Oracle Recommendation (Unable To exchange A Partition With A Table If It Has An Encrypted Column <strong>[ID 958728.1]</strong>) using the following scripts.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
ALTER TABLE TESTTBL MODIFY (COL1 decrypt);
ALTER TABLE TESTTBL MODIFY (COL1 encrypt using '3DES168' identified by &quot;MyKey2013&quot;);
ALTER TABLE TESTTBL MODIFY (COL2 decrypt);
ALTER TABLE TESTTBL MODIFY (COL2 encrypt using '3DES168' identified by &quot;MyKey2013&quot;);
</pre>
<p>But it does not change the situation. Why keys are different and how to check it. Officially oracle does not provide any information about encrypting keys but&#8230; the following query returns it to me.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
SELECT u.name OWNER, o.name TABLE_NAME, c.name COLUMN_NAME,
          case e.ENCALG when 1 then '3 Key Triple DES 168 bits key'
                        when 2 then 'AES 128 bits key'
                        when 3 then 'AES 192 bits key'
                        when 4 then 'AES 256 bits key'
                        else 'Internal Err'
          end KEY_TYPE,
          decode(bitand(c.property, 536870912), 0, 'YES', 'NO'),
          case e.INTALG when 1 then 'SHA-1'
                        when 2 then 'NOMAC'
                        else 'Internal Err'
          end KEY_ALG,
          e.COLKLC as KEY_VAL
   from sys.user$ u, sys.obj$ o, sys.col$ c, sys.enc$ e
   where e.obj#=o.obj# and o.owner#=u.user# and bitand(flags, 128)=0 and
         e.obj#=c.obj# and bitand(c.property, 67108864) = 67108864
ORDER BY 1,2,3;
</pre>
<p>Actually it is not THE KEYS but the keys encrypted by master key that I do not know, but for our purpose when we just compare the keys it provide required information.</p>
<table border="1">
<tbody>
<tr>
<th>EPANI</th>
<th>TESTTBL</th>
<th>COL1</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141462F5955334D6532392B54453450566747626F4F7570635A51454162786335394A4A524D4E30576335366370344F6D5A364A37515365544F7A6C4B4C534C77633D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>TESTTBL</th>
<th>COL2</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141462F5955334D6532392B54453450566747626F4F7570635A51454162786335394A4A524D4E30576335366370344F6D5A364A37515365544F7A6C4B4C534C77633D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>ARCHTESTTBL</th>
<th>COL1</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141536576676A5A79514B544B50592F3257762F3359726A6D6A63525747634A6F4B53754645665A7139376677336C394E306D3071706C6667306B6564586233524D3D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>ARCHTESTTBL</th>
<th>COL2</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141536576676A5A79514B544B50592F3257762F3359726A6D6A63525747634A6F4B53754645665A7139376677336C394E306D3071706C6667306B6564586233524D3D</strong></th>
</tr>
</tbody>
</table>
<p>Now we see that encryption keys are still different. Lets do it one more time running one command at the time.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
ALTER TABLE TESTTBL MODIFY (COL1 decrypt);
</pre>
<table border="1">
<tbody>
<tr>
<th>EPANI</th>
<th>TESTTBL</th>
<th>COL2</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141462F5955334D6532392B54453450566747626F4F7570635A51454162786335394A4A524D4E30576335366370344F6D5A364A37515365544F7A6C4B4C534C77633D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>ARCHTESTTBL</th>
<th>COL1</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141536576676A5A79514B544B50592F3257762F3359726A6D6A63525747634A6F4B53754645665A7139376677336C394E306D3071706C6667306B6564586233524D3D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>ARCHTESTTBL</th>
<th>COL2</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141536576676A5A79514B544B50592F3257762F3359726A6D6A63525747634A6F4B53754645665A7139376677336C394E306D3071706C6667306B6564586233524D3D</strong></th>
</tr>
</tbody>
</table>
<p>We got 3 rows. The column was decrypted successfully.<br />
Lets run the second command from our script.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
ALTER TABLE TESTTBL MODIFY (COL1 encrypt using '3DES168' identified by &quot;MyKey2013&quot;);
</pre>
<p>The command has run successfully but what we have in a key table?</p>
<table border="1">
<tbody>
<tr>
<th>EPANI</th>
<th>TESTTBL</th>
<th>COL1</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141462F5955334D6532392B54453450566747626F4F7570635A51454162786335394A4A524D4E30576335366370344F6D5A364A37515365544F7A6C4B4C534C77633D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>TESTTBL</th>
<th>COL2</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141462F5955334D6532392B54453450566747626F4F7570635A51454162786335394A4A524D4E30576335366370344F6D5A364A37515365544F7A6C4B4C534C77633D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>ARCHTESTTBL</th>
<th>COL1</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141536576676A5A79514B544B50592F3257762F3359726A6D6A63525747634A6F4B53754645665A7139376677336C394E306D3071706C6667306B6564586233524D3D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>ARCHTESTTBL</th>
<th>COL2</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141536576676A5A79514B544B50592F3257762F3359726A6D6A63525747634A6F4B53754645665A7139376677336C394E306D3071706C6667306B6564586233524D3D</strong></th>
</tr>
</tbody>
</table>
<p>We got 4 rows but the encryption key has not changed. At this point we can put our attention that for all columns in the same table the encryption key is the same, even for those which was encrypted without “identified by” clause.</p>
<p>Now we try to decrypt both columns at once and then encrypt both columns back.</p>
<pre class="brush: plain; light: true; title: ; notranslate">
ALTER TABLE TESTTBL MODIFY (COL1 decrypt);
ALTER TABLE TESTTBL MODIFY (COL2 decrypt);
ALTER TABLE TESTTBL MODIFY (COL1 encrypt using '3DES168' identified by &quot;MyKey2013&quot;);
ALTER TABLE TESTTBL MODIFY (COL2 encrypt using '3DES168' identified by &quot;MyKey2013&quot;);
</pre>
<p>And check the status of encrypt keys in a storage.</p>
<table border="1">
<tbody>
<tr>
<th>EPANI</th>
<th>TESTTBL</th>
<th>COL1</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414142622B726E53615843627A437379797646783333745031517833496542486D514D55765138724A4E4967525A7248534B706C735148756D454C745243597A6C6B6B3D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>TESTTBL</th>
<th>COL2</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414142622B726E53615843627A437379797646783333745031517833496542486D514D55765138724A4E4967525A7248534B706C735148756D454C745243597A6C6B6B3D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>ARCHTESTTBL</th>
<th>COL1</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141536576676A5A79514B544B50592F3257762F3359726A6D6A63525747634A6F4B53754645665A7139376677336C394E306D3071706C6667306B6564586233524D3D</strong></th>
</tr>
<tr>
<th>EPANI</th>
<th>ARCHTESTTBL</th>
<th>COL2</th>
<th>3 Key Triple DES 168 bits key</th>
<th>YES</th>
<th>SHA-1</th>
</tr>
<tr>
<th colspan="6"><strong>4177414141414141414141414141414141414141414141536576676A5A79514B544B50592F3257762F3359726A6D6A63525747634A6F4B53754645665A7139376677336C394E306D3071706C6667306B6564586233524D3D</strong></th>
</tr>
</tbody>
</table>
<p>As you see in resultset,  the columns reencrypted using new key.</p>
<p>Explanation.Oracle use single key to encrypt all columns in a single table and until you fully decrypt all columns in a table the newly encrypted columns would still use the old keys. I fully understand logic behind it, but it would have more sense get raise an error when you try to encrypt column using specific derivation key but could not do it, rather silently encrypt column using different key.</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2797&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraganism.wordpress.com/2013/02/23/column-encryption-tricks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/86cd31c275ead197c6278bc0980689ed?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">eterpani</media:title>
		</media:content>
	</item>
		<item>
		<title>DNS Slave Setup Doh!</title>
		<link>http://oraganism.wordpress.com/2013/02/23/dns-slave-setup-doh/</link>
		<comments>http://oraganism.wordpress.com/2013/02/23/dns-slave-setup-doh/#comments</comments>
		<pubDate>Sat, 23 Feb 2013 11:05:36 +0000</pubDate>
		<dc:creator>Martin Nash</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[skipping zone transfer]]></category>
		<category><![CDATA[slave]]></category>
		<category><![CDATA[unreachable (cached)]]></category>

		<guid isPermaLink="false">http://oraganism.wordpress.com/?p=2706</guid>
		<description><![CDATA[I recently found myself wanting to set up a DNS slave for the DNS server I run in my lab environment; and taking the view that it can&#8217;t be that hard I jumped into achieving that goal. It was pretty straightforward and this post is just a few references and hopefully enough information on the error [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2706&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I recently found myself wanting to set up a DNS slave for the DNS server I run in my lab environment; and taking the view that it can&#8217;t be that hard I jumped into achieving that goal. It was pretty straightforward and this post is just a few references and hopefully enough information on the error messages I encountered (due to misconfiguration) to bring someone here that has made the same mistake. The existing DNS (master) server runs on Oracle Linux 6 and I wanted to setup a slave on Ubuntu 12.04. The site that I found most useful as a reference for someone that hadn&#8217;t done this before was <a href="http://www.server-world.info/en/note?os=Ubuntu_12.04&amp;p=dns&amp;f=5">www.server-world.info</a>. Not a site I&#8217;m aware of visiting before, but it seems like a great reference from what I&#8217;ve looked at so far.</p>
<p>After setting things up I found I was getting the following messages in /var/log/syslog on the Ubuntu (slave) machine:</p>
<pre class="brush: plain; light: true; title: ; wrap-lines: false; notranslate">
Feb 10 10:36:26 &lt;hostname&gt; named[4035]: running
Feb 10 10:36:26 &lt;hostname&gt; named[4035]: zone &lt;zone file 1&gt;/IN: Transfer started.
Feb 10 10:36:26 &lt;hostname&gt; named[4035]: transfer of '&lt;zone file 1&gt;/IN' from 192.168.1.3#53: failed to connect: host unreachable
Feb 10 10:36:26 &lt;hostname&gt; named[4035]: transfer of '&lt;zone file 1&gt;/IN' from 192.168.1.3#53: Transfer completed: 0 messages, 0 records, 0 bytes, 0.001 secs (0 bytes/sec)
Feb 10 10:36:27 &lt;hostname&gt; named[4035]: zone &lt;zone file 2&gt;/IN: refresh: skipping zone transfer as master 192.168.1.3#53 (source 0.0.0.0#0) is unreachable (cached)
Feb 10 10:36:27 &lt;hostname&gt; named[4035]: zone &lt;zone file 3&gt;/IN: refresh: skipping zone transfer as master 192.168.1.3#53 (source 0.0.0.0#0) is unreachable (cached)
Feb 10 10:36:27 &lt;hostname&gt; named[4035]: zone &lt;zone file 4&gt;/IN: refresh: skipping zone transfer as master 192.168.1.3#53 (source 0.0.0.0#0) is unreachable (cached)
Feb 10 10:36:27 &lt;hostname&gt; named[4035]: zone &lt;zone file 5&gt;/IN: refresh: skipping zone transfer as master 192.168.1.3#53 (source 0.0.0.0#0) is unreachable (cached)
Feb 10 10:36:27 &lt;hostname&gt; named[4035]: zone &lt;zone file 6&gt;/IN: refresh: skipping zone transfer as master 192.168.1.3#53 (source 0.0.0.0#0) is unreachable (cached)
</pre>
<p>While investigating I found myself reading the following articles:</p>
<ul>
<li><a style="font-size:16px;" href="http://ubuntuforums.org/showthread.php?t=1805880">http://ubuntuforums.org/showthread.php?t=1805880</a><span style="font-size:16px;"> &#8211; Very similar errors apparently caused by missing reverse DNS for the slave name server</span></li>
<li><a style="font-size:16px;" href="http://ubuntuforums.org/showthread.php?t=767138">http://ubuntuforums.org/showthread.php?t=767138</a><span style="font-size:16px;"> &#8211; Different errors, but one I hit along the way as a result of attempting to mix and match Red Hat configuration with Ubuntu configuration</span></li>
</ul>
<p>I&#8217;ve included them here in case they are applicable to anyone else&#8217;s issues.</p>
<p>The last thing I read on the subject was <a href="http://www.mail-archive.com/bind-users@lists.isc.org/msg03151.html">http://www.mail-archive.com/bind-users@lists.isc.org/msg03151.html</a>. The letters <strong>TCP</strong> jumped out at me. I run iptables on the Oracle Linux 6 host (DNS master) and it was fresh in my mind that I had port 53 open for <strong>UDP</strong> traffic for DNS lookup. I knew DNS lookups worked against that host as I&#8217;d been testing from various locations minutes before. It had to be worth a quick try to see if it was something so simple. It was! I&#8217;d been able to do DNS lookup on the master DNS from the slave as port 53 was open for UDP traffic, but as I&#8217;d just learnt: <strong>zone transfers are carried out using TCP</strong> as covered on <a href="http://en.wikipedia.org/wiki/DNS_zone_transfer">Wikipedia</a>.</p>
<br />  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraganism.wordpress.com&#038;blog=6580652&#038;post=2706&#038;subd=oraganism&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraganism.wordpress.com/2013/02/23/dns-slave-setup-doh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7622f90e733399a783530d01fe3a9bb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">martinpaulnash</media:title>
		</media:content>
	</item>
	</channel>
</rss>
