<?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/"
	>

<channel>
	<title>Pythian - Data Experts Blog</title>
	<atom:link href="http://www.pythian.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pythian.com/blog</link>
	<description>Official Pythian Blog - Love Your Data</description>
	<lastBuildDate>Tue, 21 May 2013 15:46:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>ODA re-imaging could take anything between 20 and 120 mins</title>
		<link>http://www.pythian.com/blog/oda-re-imaging-could-take-anything-between-20-and-120-mins/</link>
		<comments>http://www.pythian.com/blog/oda-re-imaging-could-take-anything-between-20-and-120-mins/#comments</comments>
		<pubDate>Tue, 21 May 2013 15:46:47 +0000</pubDate>
		<dc:creator>Yury Velikanov</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Pythian]]></category>
		<category><![CDATA[Technical Blog]]></category>
		<category><![CDATA[DBA Lounge]]></category>
		<category><![CDATA[ODA]]></category>
		<category><![CDATA[Oracle Database Appliance]]></category>
		<category><![CDATA[Oracle Engineered Systems]]></category>
		<category><![CDATA[re-imaging]]></category>

		<guid isPermaLink="false">http://www.pythian.com/blog/?p=55177</guid>
		<description><![CDATA[This blog posts explains why Oracle Database Appliances re-imaging process timing may vary from 20 to 120 minutes. There are a check in the ISO:/Extras/setupodaovm.sh script that have an issue. Until the bug is fixed a) you may face different ODA nodes' re-imaging times b) to be on the safe side check if md devices' re-synchronization process  is finished by running "cat /proc/mdstat" command before running any business critical processes on your ODA.]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><h3>20 mins vs 2 hours</h3>
<p>Recently I have noticed that re-imaging process on the second Oracle Database Appliance node took significantly shorter time comparing with the first node. The difference was so significant that I started to suspect that there were something wrong with either particular set of hardware or some of the re-imaging process steps have failed on the second node. On the first node the process has completed  in 120 minutes, but  on the second it took just 20 around minutes.</p>
<p>I spent quite a bit of time to understand that exactly has been happening. But before I tell you, can I ask you what theoretical options would you come with given the behavior I just described? Please share those with me in the comment section below, please :)</p>
<h3>Any mystery can be solved</h3>
<p>Question is if we are ready to pay for it. Sometimes it takes quite a bit of effort to get to the truth and very often we don&#8217;t have time or interest or budget to find it. In this particular case I was so curious that I have spent good part of my my weekend looking for a clue. On the way I had  to learn a bit of &#8220;<a href="http://en.wikipedia.org/wiki/Anaconda_(installer)">Anaconda (installer)</a>&#8220;, <a href="http://en.wikipedia.org/wiki/Squashfs">SquashFS</a> file system, how to <a href="http://linux.about.com/library/cmd/blcmdl8_mkisofs.htm">rebuild ISO</a> image and the way ODA re-imaging process works. The purpose of this paragraph is to encourage you to be curious and don&#8217;t leave mysteries unresolved. Invest  some time and you will learn a lot on the way :)</p>
<p>NOTE: I will try to share the way I have troubleshot this problem in my future blog posts.</p>
<h3>Bug in the &#8220;post-install&#8221; script</h3>
<p>It appears that the problem is in the way the <em>ISO:/Extras/setupodaovm.sh</em> post install script checks if software RAID have completed re-synchronization of 4 internal HDD partitions (md devices) in between 2 physical disks. There are the following check at the very end of the script:<br />
<code>mdadm --wait /dev/md1<br />
mdadm --wait /dev/md2<br />
mdadm --wait /dev/md3</code><br />
Each of the lines designed to check if the software RAID completed synchronizing an md device (partition). The following is part of man page for <em>mdadm</em> utility</p>
<blockquote style="background-color: beige;">
<pre style="white-space: pre-wrap;">       -W, --wait
              For  each  md  device  given, wait for any resync, recovery, or reshape activity to finish before returning.  mdadm will return with success if it actually waited for
              every device listed, otherwise it will return failure.</pre>
</blockquote>
<p>During the re-imaging process all 4 volumes got to be rebuild and need to be synchronized by the software RAID. It worth mentioning that software RAID on ODA configured to re-synchronise  one device at the time. Other devices just seating and waiting they turn in the status DELAYED.  The problem is that if a device is in the state <em>resync=DELAYED</em> the &#8220;mdadm &#8211;wait&#8221; check will not stop and wait for it. Therefore just one of the <em>mdadm </em>checks will wait until re-synchronization process finishes others successfully pass even if a device isn&#8217;t synchronized yet (<em>resync=DELAYED</em>). Now let&#8217;s have a look on the devices&#8217; sizes and associated synchronization times:</p>
<table width="288" border="0" cellspacing="0" cellpadding="0">
<colgroup>
<col span="2" width="64" />
<col width="76" />
<col width="84" /> </colgroup>
<tbody>
<tr>
<td width="64" height="20"><span style="color: #3366ff;"><strong>Name</strong></span></td>
<td width="64"><span style="color: #3366ff;"><strong>Size </strong></span></td>
<td width="76"><span style="color: #3366ff;"><strong>Function</strong></span></td>
<td width="84"><span style="color: #3366ff;"><strong>Sych-time</strong></span></td>
</tr>
<tr>
<td height="20">md0</td>
<td>60M</td>
<td>/boot</td>
<td>few seconds</td>
</tr>
<tr>
<td height="20">md1</td>
<td>17G</td>
<td>/</td>
<td>10 mins</td>
</tr>
<tr>
<td height="20">md2</td>
<td>217G</td>
<td>/OVS</td>
<td>90 mins</td>
</tr>
<tr>
<td height="20">md3</td>
<td>4G</td>
<td>swap</td>
<td>~2min</td>
</tr>
</tbody>
</table>
<p>Just to make life a bit more interesting the software RAID picks up a device to be re-synchronized next randomly. That means it is just matter of luck what device will get processed next. If it is md1 device (17GB) then the whole re-imaging process takes 20 minutes. However if the software RAID synchronises md2 device (217GB) during the execution of the <em>mdadm</em> check then the re-imaging process takes ~120 minutes.</p>
<h3>A way to fix the problem</h3>
<p>I am not a great expert in the Linux System Administration area (I am an Oracle DBA after all) and would rather let Oracle folks make the final call, but it seems to me that in order to make sure that all 4 devices got re-synchronized before the re-imaging process finishes the check should look like the following.</p>
<blockquote style="background-color: beige;">
<pre style="white-space: pre-wrap;">mdadm --wait /dev/md0 /dev/md1 /dev/md2 /dev/md3</pre>
</blockquote>
<h3>Conclusion</h3>
<p>To conclude until the issue is fixed know that</p>
<ol>
<li>you may face different ODA nodes&#8217; re-imaging times</li>
<li>to be on the safe side check if <em>md</em> devices&#8217; re-synchronization process  is finished by running &#8220;<em>cat /proc/mdstat</em>&#8221; command before running any business critical processes on your ODA.</li>
</ol>
<p>Yury</p>
<p><em>PS &#8220;<a href="http://www.youtube.com/watch?v=PQtZIcodQAk">Stay Hungry Stay Foolish</a>&#8221; - Steve Jobs</em></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/blog/oda-re-imaging-could-take-anything-between-20-and-120-mins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log Buffer #320, A Carnival of the Vanities for DBAs</title>
		<link>http://www.pythian.com/blog/log-buffer-320-a-carnival-of-the-vanities-for-dbas/</link>
		<comments>http://www.pythian.com/blog/log-buffer-320-a-carnival-of-the-vanities-for-dbas/#comments</comments>
		<pubDate>Fri, 17 May 2013 12:23:12 +0000</pubDate>
		<dc:creator>Fahd Mirza</dc:creator>
				<category><![CDATA[Log Buffer]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.pythian.com/blog/?p=55171</guid>
		<description><![CDATA[The red carpet has been laid down at this Log Buffer Edition, and you can witness and cheer the cat-walking blog posts from Oracle, SQL Server and MySQL. Every one of them is chic, elegant, sensual in its own right. Enjoy. Oracle: Create colored heat maps in SQL*Plus with Kyle Hailey. Here’s a quick and...]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p>The red carpet has been laid down at this Log Buffer Edition, and you can witness and cheer the cat-walking blog posts from Oracle, SQL Server and MySQL. Every one of them is chic, elegant, sensual in its own right. Enjoy.<br />
<span id="more-55171"></span><strong>Oracle:</strong></p>
<p>Create colored heat maps in SQL*Plus with <a href="http://dboptimizer.com/2013/05/10/colored-heat-maps-in-sqlplus/">Kyle Hailey.</a></p>
<p>Here’s a quick and dirty script to create a procedure (in the SYS schema – so be careful) to check the <a href="http://jonathanlewis.wordpress.com/2013/05/10/hakan-factor/">Hakan</a> Factor for an object.</p>
<p><a href="http://connormcdonald.wordpress.com/2013/05/13/default-null-for-collection-parameter/">Connor</a> has a good post about default null for collection parameter.</p>
<p>This is yet another blogpost on <a href="http://fritshoogland.wordpress.com/2013/05/09/direct-path-read-and-fast-full-index-scans/">Oracle</a>’s direct path read feature which was introduced for non-parallel query processes in Oracle version 11.</p>
<p>Owen Allen has seen some questions about provisioning Oracle Solaris 11. They boil down to <a href="https://blogs.oracle.com/opscenter/entry/provisioning_oracle_solaris_111">this</a>.</p>
<p><strong>SQL Server:</strong></p>
<p><a href="http://www.sqlservercentral.com/articles/Administration/98346/">Shashank Srivastava</a> tells us as how to Change the SQL Server Instance Name after Renaming the Windows Host.</p>
<p><a href="http://www.mssqltips.com/sqlservertip/2938/how-to-synchronize-two-ssas-servers/">Daniel Calbimonte</a> shares as how to synchronize two SSAS Servers.</p>
<p><a href="http://dataarch.sqlpass.org/">Data</a> Architecture underpins just about everything we do in IT.  Without a clear understanding of how data is structured, there is no reliable way to derive meaning from it.</p>
<p><a href="http://www.sqlservercentral.com/articles/Security/98202/">Orlando Colamatteo</a> is login-less in Seattle.</p>
<p>Lets get started testing database with tSQLt with <a href="https://www.simple-talk.com/sql/t-sql-programming/getting-started-testing-databases-with-tsqlt/">Robert Sheldon</a>.</p>
<p><strong>MySQL:</strong></p>
<p>After a lot of fuzz, Anders Karlsson is now releasing <a href="http://karlssonondatabases.blogspot.com/2013/05/myquery-351-beta-released.html">MyQuery</a> version 3.5.1.</p>
<p>Nothing like reestablishing a tradition and Dave Stokes is doing just that for <a href="http://opensourcedba.wordpress.com/2013/05/16/reestablishing-a-mysql-tradition/">MySQL</a>.</p>
<p><a href="http://marcalff.blogspot.com/2013/05/spreading-word-about-performance-schema.html">Mare Alff</a> is spreading the word about the performance schema.</p>
<p><a href="http://rethinkdb.com/blog/1.5-release">Slava Akhmechet</a> talks about secondary indexes, batched inserts performance improvements, soft durability mode.</p>
<p>It is a central part of the <a href="http://optimize-this.blogspot.com/2013/05/the-outer-join-to-inner-join-coversion.html">MySQL</a> philosophy to try and help you as much as you can. There are many occasions when it could tell you that what you are asking for is utterly stupid or give you a bad execution plan because &#8220;you asked for it&#8221;.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/blog/log-buffer-320-a-carnival-of-the-vanities-for-dbas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to collect cluster Information using TSQL</title>
		<link>http://www.pythian.com/blog/how-to-collect-cluster-information-using-tsql/</link>
		<comments>http://www.pythian.com/blog/how-to-collect-cluster-information-using-tsql/#comments</comments>
		<pubDate>Fri, 17 May 2013 12:20:00 +0000</pubDate>
		<dc:creator>Hemantgiri S. Goswami</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technical Blog]]></category>
		<category><![CDATA[Microsoft SQL Server]]></category>
		<category><![CDATA[TSQL Script]]></category>

		<guid isPermaLink="false">http://www.pythian.com/blog/?p=55079</guid>
		<description><![CDATA[Sometime back I was involved in a project which was to collect information for the servers we are supporting – creating inventory of servers. Logging into each server and collecting information is bit tedious when you have hundreds of server in your environment.  I have spent sometime and created a script that does this work...]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><div dir="ltr">
<a href="http://www.pythian.com/blog/how-to-collect-cluster-information-using-tsql/clusterdetails/" rel="attachment wp-att-55085"><img class="alignnone size-medium wp-image-55085" alt="How to collect cluster information using TSQL" src="http://www.pythian.com/blog/wp-content/uploads/ClusterDetails-300x225.jpg" width="300" height="225" /></a>
<p>Sometime back I was involved in a project which was to collect information for the servers we are supporting – creating inventory of servers. Logging into each server and collecting information is bit tedious when you have hundreds of server in your environment.  I have spent sometime and created a script that does this work for me, however, I still need to connect to the server – but using SSMS/Query Window and execute the script. And then the script will provide me the details I needed.</p>
<p>This inventory should have details like below for cluster and stand alone instances:</p>
<p>Server Name</p>
<p>OS Name</p>
<p>OS Edition</p>
<p>OS Patch Level</p>
<p>SQL Server IP</p>
<p>Is Clustered</p>
<p>Node1_Name</p>
<p>Node1_IP</p>
<p>Node2_Name</p>
<p>Node2_IP</p>
<p>SQL Server Edition</p>
<p>SQL Server Patch Level</p>
<p>Server Time Zone</p>
<p>SQL Server Version</p>
<p>SQL Server Platform</p>
<p>Processor Core</p>
<p>Physical Memory</p>
<p>Service Account Name</p>
<p>Domain</p>
<p>Looks good ?  Below is the version 1 of this script.<br />
<code></p>
<pre class="brush: sql; title: ; notranslate">

/*
IP address portion using : http://www.sqlservercentral.com/Forums/Topic150196-8-1.aspx
REMOVE sp_configure parameters if you are executing this script on SQL Server 2000

Created By : Hemantgiri S. Goswami | http://www.sql-server-citation.com
Date : 24th March 2013
Version : 1.0

Tested ON:
Windows Server: 2003, 2008, 2008 R2
SQL Server:2000, 2005, 2008, 2008 R2, 2012

*/
sp_configure 'show advanced options',1
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'xp_cmdshell',1
RECONFIGURE WITH OVERRIDE
GO
DECLARE @TimeZone NVARCHAR(100)
 ,@ProductVersion SYSNAME
 ,@PlatForm SYSNAME
 ,@Windows_Version SYSNAME
 ,@Processors SYSNAME
 ,@PhysicalMemory SYSNAME
 ,@ServiceAccount SYSNAME
 ,@IPAddress SYSNAME
 ,@DOMAIN SYSNAME
 ,@MachineType SYSNAME
 ,@SQLServerIP VARCHAR(255)
 ,@CMD VARCHAR(100)
 ,@Node1 VARCHAR(100)
 ,@Node2 VARCHAR(100)
 ,@Node1IP VARCHAR(100)
 ,@Node2IP VARCHAR(100)
 ,@OSEdition VARCHAR(100)
 ,@OSVersion VARCHAR(100)
 ,@OSName VARCHAR(100)
 ,@OSPatchLevel VARCHAR(100)

CREATE TABLE #TempTable
 (
 [Index] VARCHAR(2000),
 [Name] VARCHAR(2000),
 [Internal_Value] VARCHAR(2000),
 [Character_Value] VARCHAR(2000)
 ) ;

INSERT INTO #TempTable
EXEC xp_msver;

-- Replace @Value_Name to N'TimeZoneKeyName' when running on Windows 2008
EXEC master.dbo.xp_regread
 @rootkey = N'HKEY_LOCAL_MACHINE',
 @key = N'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
 @value_name = N'StandardName',
 @value = @TimeZone output

EXEC master.dbo.xp_regread
 @rootkey = N'HKEY_LOCAL_MACHINE',
 @key = N'SYSTEM\CurrentControlSet\Services\MSSQLServer',
 @value_name = N'ObjectName',
 @value = @ServiceAccount output

EXEC master.dbo.xp_regread
 @rootkey = N'HKEY_LOCAL_MACHINE',
 @key = N'SYSTEM\CurrentControlSet\Control\ProductOptions',
 @value_name = N'ProductType',
 @value = @MachineType output

EXEC master.dbo.xp_regread
 @rootkey = N'HKEY_LOCAL_MACHINE',
 @key = N'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters',
 @value_name = N'Domain',
 @value = @DOMAIN output

EXEC master.dbo.xp_regread
 @rootkey = N'HKEY_LOCAL_MACHINE',
 @key = N'CLUSTER\NODES\1',
 @value_name = N'NodeName',
 @value = @Node1 output

EXEC master.dbo.xp_regread
 @rootkey = N'HKEY_LOCAL_MACHINE',
 @key = N'CLUSTER\NODES\2',
 @value_name = N'NodeName',
 @value = @Node2 output

EXEC master.dbo.xp_regread
 @rootkey = N'HKEY_LOCAL_MACHINE',
 @key = N'SOFTWARE\Microsoft\Windows NT\CurrentVersion',
 @value_name = N'ProductName',
 @value = @OSName output

create table #OSEdition (VALUe varchar(255),OSEdition varchar(255), data varchar(100))
insert into #OSEdition
EXEC master.dbo.xp_regread
 @rootkey = N'HKEY_LOCAL_MACHINE',
 @key = N'SYSTEM\CurrentControlSet\Control\ProductOptions',
 @value_name = N'ProductSuite'
SET @OSEdition = (SELECT TOP 1 OSedition FROM #OsEdition)

EXEC master.dbo.xp_regread
 @rootkey = N'HKEY_LOCAL_MACHINE',
 @key = N'SOFTWARE\Microsoft\Windows NT\CurrentVersion',
 @value_name = N'CSDVersion',
 @value = @OSPatchLevel output

set @cmd = 'ping ' + @Node1
create table #Node1IP (grabfield varchar(255))
insert into #Node1IP exec master.dbo.xp_cmdshell @cmd
set @cmd = 'ping ' + @Node2
create table #Node2IP (grabfield varchar(255))
insert into #Node2IP exec master.dbo.xp_cmdshell @cmd

set @cmd = 'ping ' + @@servername
create table #SQLServerIP (grabfield varchar(255))
insert into #SQLServerIP exec master.dbo.xp_cmdshell @cmd

SET @SQLServerIP=(
 SELECT substring(grabfield, charindex('[',grabfield)+1, charindex(']',grabfield)-charindex('[',grabfield)-1)
 from #SQLServerIP where left(grabfield,7) = 'Pinging'
 )
SET @Node1IP =(
 SELECT substring(grabfield, charindex('[',grabfield)+1, charindex(']',grabfield)-charindex('[',grabfield)-1)
 from #Node1IP where left(grabfield,7) = 'Pinging'
 )

SET @Node2IP =(
 SELECT substring(grabfield, charindex('[',grabfield)+1, charindex(']',grabfield)-charindex('[',grabfield)-1)
 from #Node2IP where left(grabfield,7) = 'Pinging'
 )

SET @ProductVersion = (SELECT Character_Value from #TempTable where [INDEX]=2)
SET @Platform = (SELECT Character_Value from #TempTable where [INDEX]=4)
SET @Windows_Version= (SELECT Character_Value from #TempTable where [INDEX]=15)
SET @Processors = (SELECT Character_Value from #TempTable where [INDEX]=16)
SET @PhysicalMemory = (SELECT Character_Value from #TempTable where [INDEX]=19)
SELECT
 ServerName = @@SERVERNAME
 ,OSName = @OSName
 ,OSEdition = @OSEdition
 ,OSPatchLevel = @OSPatchLevel
 ,SQLServerIP = @SQLServerIP
 ,IsClustered = SERVERPROPERTY('IsClustered')
 ,Node1_Name = @Node1
 ,Node1_IP = @Node1IP
 ,Node2_Name = @Node2
 ,Node2_IP = @Node2IP
 ,SQLServerEdition = SERVERPROPERTY('Edition')
 ,SQLServerLevel = SERVERPROPERTY('ProductLevel')
 ,ServerTimeZone = @TimeZone
 ,SQLServerVersion = @ProductVersion
 ,SQLServerPlatform = @PlatForm
 ,ProcessorCore = @Processors
 ,PhysicalMemory = @PhysicalMemory
 ,ServiceAccountName = @ServiceAccount
 ,WKS_Server = @MachineType
 ,Domain = @DOMAIN

GO
DROP TABLE #Node1IP
DROP TABLE #NODE2IP
DROP TABLE #SQLServerIP
DROP TABLE #TempTable
DROP TABLE #OSEdition
GO
sp_configure 'xp_cmdshell',0
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'show advanced options',0
RECONFIGURE WITH OVERRIDE
GO

</pre>
<p></code><br />
Please do post back your feed back for this script, I will try my best to update and post back new version for this script.</p>
<p>- Hemantgiri S. Goswami (Cross posting from http://www.sql-server-citation.com/)</p>
</div>
<p>photo credit: <a href="http://www.flickr.com/photos/skimaniac/100490646/">Skimaniac</a> via <a href="http://photopin.com">photopin</a> <a href="http://creativecommons.org/licenses/by-nc/2.0/">cc</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/blog/how-to-collect-cluster-information-using-tsql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Importance of an Action Plan</title>
		<link>http://www.pythian.com/blog/the-importance-of-an-action-plan/</link>
		<comments>http://www.pythian.com/blog/the-importance-of-an-action-plan/#comments</comments>
		<pubDate>Mon, 13 May 2013 12:28:15 +0000</pubDate>
		<dc:creator>Rene Antunez</dc:creator>
				<category><![CDATA[Pythian]]></category>
		<category><![CDATA[DBA Lounge]]></category>

		<guid isPermaLink="false">http://www.pythian.com/blog/?p=55047</guid>
		<description><![CDATA[When I started my work in IT, I used to be in a very small shop, and even though we had people in several places in the same state, everything used to be very centralized and from 9 to 5, and because we were basically only 2 people , our action plan used to be...]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p>When I started my work in IT, I used to be in a very small shop, and even though we had people in several places in the same state, everything used to be very centralized and from 9 to 5, and because we were basically only 2 people , our action plan used to be a talk over the lunch table and that would be it, we would go ahead and execute it after 5 PM, and I won&#8217;t lie sometimes before 5 :) .</p>
<p>Over the years I have understood that even if you are a 2 guy shop or a team of 15 separated by oceans and being miles apart, communication is the most important thing to have on your team, and one of the means of communication is having an action plan in place for any major/medium change you do in your organization. First this will generate discussions amongst your teammates and it will reduce the possibility of errors when you are faced with time and pressure constraints when implementing it.</p>
<p>This might sometimes feel like a mundane and boring task, as it will take an effort to come up with it and it will take time to verify it, but when game day comes along you will see the great benefit of having an action plan.</p>
<p>Another great benefit of having an action plan is that you also have a road map if you need to rollback your change, and that is also critical, because normally any major change or rollback is not done only by one person, take for example a change that takes about 7 or 8 hours to be done, and at the end when the UAT (User Application Testing) is done, 1 or 2 more hours ,the application team decides that a rollback is needed, you are probably not in a good state of mind to do the rollback after 8 hours of continuous work, if you have an action plan, one of your teammates can step in and you can have a rest, even if it is to go to the kitchen and have a sandwich and a coke and forget 10 minutes about that pressure.</p>
<p>As with life and with us being human, having an action plan doesn&#8217;t mean that everything will go smoothly or you won&#8217;t have an error in there, but believe me, it will reduce in a big way the possibility of an error if you execute it by memory or by doing one yourself without revision.</p>
<p>I do hope that you already have an action plan as part of your major/medium changes, but if you don&#8217;t, it is time to get <a title="FIT-ACER" href="http://www.pythian.com/resources/dba-resources/fit-acer-dba-checklist/" target="_blank">FIT-ACER</a>, here is an example of one (Kudos to Cesar Sanchez as it is his Action Plan Template), use it and modify it to your needs, it is a good start.</p>
<p><a href="http://www.pythian.com/blog/wp-content/uploads/ACTION_PLAN_TEMPLATE.html">Action Plan Template</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/blog/the-importance-of-an-action-plan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log Buffer #319, A Carnival of the Vanities for DBAs</title>
		<link>http://www.pythian.com/blog/log-buffer-319-a-carnival-of-the-vanities-for-dbas/</link>
		<comments>http://www.pythian.com/blog/log-buffer-319-a-carnival-of-the-vanities-for-dbas/#comments</comments>
		<pubDate>Fri, 10 May 2013 12:52:27 +0000</pubDate>
		<dc:creator>Fahd Mirza</dc:creator>
				<category><![CDATA[Log Buffer]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.pythian.com/blog/?p=55035</guid>
		<description><![CDATA[This week again, the Log Buffer Edition covers the exciting and ever-evolving galaxies of Oracle, MySQL and SQL Server. Oracle: When does an Oracle process know it’s on Exadata? MobaXterm 6.3 has been released. You can find the download and changelog in the usual place. A new major release (version 3.0) of Randolf&#8217;s XPLAN_ASH tool...]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p>This week again, the Log Buffer Edition covers the exciting and ever-evolving galaxies of Oracle, MySQL and SQL Server.</p>
<p><span id="more-55035"></span><strong>Oracle:</strong></p>
<p>When does an Oracle process know it’s on <a href="http://fritshoogland.wordpress.com/2013/05/04/when-does-an-oracle-process-know-its-on-exadata/">Exadata</a>?</p>
<p><a href="http://www.oracle-base.com/blog/2013/05/09/mobaxterm-6-3/">MobaXterm</a> 6.3 has been released. You can find the download and changelog in the usual place.</p>
<p>A <a href="http://oracle-randolf.blogspot.com/2013/05/new-version-of-xplanash-tool-video.html">new</a> major release (version 3.0) of Randolf&#8217;s XPLAN_ASH tool is available for download.</p>
<p>Important !! <a href="http://richardfoote.wordpress.com/2013/05/08/important-clustering-factor-calculation-improvement-fix-you/">Clustering</a> Factor Calculation Improvement</p>
<p><a href="http://hoopercharles.wordpress.com/2013/05/01/grouping-data-sets-by-week-number-in-the-month/">Grouping</a> Data Sets by Week Number of the Month</p>
<p><strong>SQL Server:</strong></p>
<p><a href="http://sqlserverpedia.com/blog/">Jason Crider</a> asks to put some Windows update in his basket.</p>
<p>Data cleansing can be done via SSIS as well as Data Quality Services (DQS) and Master Data Services (MDS).  The lines are a bit blurred when talking about data cleansing using SSIS, DQS and <a href="http://www.jamesserra.com/archive/2012/06/microsoft-data-quality-services-in-sql-server-2012/">MDS</a>.</p>
<p>How To: Migrate Encrypted Procedures To Windows Azure SQL Database (<a href="http://thomaslarock.com/">WASD</a>).</p>
<p>It’s a best <a href="http://littlekendra.com/">practice</a> to keep your index keys as narrow as possible, and SQL Server enforces a maximum key length of 900 bytes on most “normal” clustered and non-clustered indexes.</p>
<p>Webcast Presentation <a href="http://www.jasonstrate.com/">Materials</a>: Introduction to SQL Server Security</p>
<p><strong>MySQL:</strong></p>
<p>This is the start of the heavy travel season for the MySQL Community Team. So if you are attending<a href="http://opensourcedba.wordpress.com/2013/05/09/mysql-community-team-at-phptek-drupalcon-texas-linux-fest-self-redhat-summit-and-lonestar-php/"> PHPTek</a>, Drupalcon, Texas LinuxFest, SELF, Redhat Summit, or Lonestar PHP please make sure to say ‘hi’ while you are in Chicago, Portland, Austin, Charlotte, Boston, or Addison.</p>
<p>Your databases in a glance with <a href="http://www.mysqlplus.net/2013/05/09/databases-glance-glimpsee/">Glimpsee</a></p>
<p><a href="http://continuent-tungsten.blogspot.com/2013/05/tungsten-university-introduction-to.html">Continuent</a> Tungsten 2.0 is a major step forward that includes key feature improvements to help you manage very large datasets on MySQL.</p>
<p>How to create a new (or repair a broken) GTID based slave with Percona <a href="http://www.mysqlperformanceblog.com/2013/05/09/how-to-create-a-new-or-repair-a-broken-gtid-based-slave-with-percona-xtrabackup/">XtraBackup</a></p>
<p>Disk I/O is frequently the performance bottleneck with relational databases. With AWS recently releasing 4,000 PIOPs EBS volumes, <a href="http://palominodb.com/blog/2013/05/08/benchmarking-postgres-aws-4000-piops-ebs-instances">Laine Campbell</a> wanted to do some benchmarking with pgbench and PostgreSQL 9.2.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/blog/log-buffer-319-a-carnival-of-the-vanities-for-dbas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Online retailers have 3 seconds to make mom happy.</title>
		<link>http://www.pythian.com/blog/online-retailers-have-3-seconds-to-make-mom-happy/</link>
		<comments>http://www.pythian.com/blog/online-retailers-have-3-seconds-to-make-mom-happy/#comments</comments>
		<pubDate>Wed, 08 May 2013 19:56:21 +0000</pubDate>
		<dc:creator>Samer Forzley</dc:creator>
				<category><![CDATA[Pythian]]></category>
		<category><![CDATA[Datafication]]></category>

		<guid isPermaLink="false">http://www.pythian.com/blog/?p=55017</guid>
		<description><![CDATA[Mothers day is coming up fast. May 12th 2013 is just around the corner and If you have not already done so, make sure you go out and get mom a special gift as soon as possible. If you need a hand picking something great, take a look at this mothers day gift guide by...]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p>Mothers day is coming up fast. May 12th 2013 is just around the corner and If you have not already done so, make sure you go out and get mom a special gift as soon as possible. If you need a hand picking something great, take a look at this mothers day gift guide by the <a href="http://live.huffingtonpost.com/r/segment/the-best-gift-ideas/5189a9d578c90a52530001a0">HuffingtonPost</a></p>
<p>Many this year like they have in previous years shopped online and bought mom that special gift from an online retailer, a simple, easy and fun process. But is it always? Unfortunately for many, the experience did not live up to expectation due to site performance and both customers and merchants end up losing.</p>
<p>Is this a big deal? We put together this infograph on mothers day shopping. Take a look.</p>
<p>&nbsp;</p>
<img class="alignnone" alt="Mother day online shopping infograph" src="http://www.pythian.com/wp-content/uploads/2013/04/MothersDayPerformance_Infographic_Pythian1.png" width="656" height="2080" />
</div>]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/blog/online-retailers-have-3-seconds-to-make-mom-happy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log Buffer #318, A Carnival of the Vanities for DBAs</title>
		<link>http://www.pythian.com/blog/log-buffer-318-a-carnival-of-the-vanities-for-dbas/</link>
		<comments>http://www.pythian.com/blog/log-buffer-318-a-carnival-of-the-vanities-for-dbas/#comments</comments>
		<pubDate>Fri, 03 May 2013 11:50:57 +0000</pubDate>
		<dc:creator>Fahd Mirza</dc:creator>
				<category><![CDATA[Log Buffer]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.pythian.com/blog/?p=54997</guid>
		<description><![CDATA[News and views are an integral part of our modern daily life. When it comes to the information-hungry roles such as database professionals, such need becomes more pressing. Log Buffer is one way to keep abreast of news and views from the world of Oracle, SQL Server, and MySQL. Oracle: There is a significant update...]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p>News and views are an integral part of our modern daily life. When it comes to the information-hungry roles such as database professionals, such need becomes more pressing. Log Buffer is one way to keep abreast of news and views from the world of Oracle, SQL Server, and MySQL.</p>
<p><span id="more-54997"></span><strong>Oracle:</strong></p>
<p>There is a significant update SLOB 2, <a href="https://kevinclosson.wordpress.com/2013/05/02/slob-2-a-significant-update-links-are-here/">Kevin Closson</a> informs.</p>
<p><a href="http://hoopercharles.wordpress.com/2013/05/01/grouping-data-sets-by-week-number-in-the-month/">Charles Hooper</a> is grouping Data Sets by Week Number of the Month.</p>
<p><a href="http://www.antognini.ch/2013/05/itl-deadlocks-script/">Chris Antognini</a> has shared a script that is used to demo ITL deadlocks.</p>
<p>As <a href="http://richardfoote.wordpress.com/2013/05/01/storage-indexes-vs-database-indexes-iv-8-column-limit-eight-line-poem/">Exadata</a> Storage Indexes (SI) are purely memory only structures located on the Exadata storage servers, care needs to be taken in how much memory they can potentially consume.</p>
<p><a href="http://connormcdonald.wordpress.com/2013/04/29/its-not-about-the-outage/">Connon McDonald</a> says that its not about the outage, but&#8230;.</p>
<p><strong>SQL Server:</strong></p>
<p><a href="http://sql.richarddouglas.co.uk/">Richard Douglas </a>is giving information about SQL Server events in UK.</p>
<p><a href="http://thomaslarock.com/">Thomas LaRock</a> has been involved in a virtualization projects for almost ten years now.</p>
<p><a href="http://littlekendra.com/">Kendra Little</a> has five things about Fillfactor.</p>
<p><a href="http://kevinekline.com/">Kevin Kline</a> suggests to use TPC database benchmarks to save money.</p>
<p>Here’s a quick mystery. You have a <a href="http://midnightdba.itbookworm.com/midnightdba/blog/">SQL Server</a> with several jobs that appear to be running properly and on schedule, but many of them show no history.</p>
<p><strong>MySQL:</strong></p>
<p>How does <a href="http://blog.jcole.us/2013/05/02/how-does-innodb-behave-without-a-primary-key/">InnoDB</a> behave without a Primary Key? Jeremy Cole asks.</p>
<p>The <a href="http://blog.mariadb.org/mariadb-java-client-1-1-2-released/">MariaDB</a> project is pleased to announce the immediate availability of the MariaDB Java Client 1.1.2.</p>
<p>Normal 0 false <a href="http://scaledb.blogspot.com/2013/05/thoughts-on-xeround-and-free.html">false</a> false EN-US X-NONE X-NONE Everybody loves free. It is the best marketing term one could use.</p>
<p><a href="http://www.clusterdb.com/mysql-cluster/mysql-cluster-manager-1-2-3-released/">MySQL</a> Cluster Manager 1.2.3 is now available to download from My Oracle Support.</p>
<p>When is a Subquery Executed?  <a href="http://oysteing.blogspot.com/2013/05/when-is-subquery-executed.html">Øystein Grøvlen</a> writes.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/blog/log-buffer-318-a-carnival-of-the-vanities-for-dbas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My first 6 months @ Pythian</title>
		<link>http://www.pythian.com/blog/my-first-6-months-pythian/</link>
		<comments>http://www.pythian.com/blog/my-first-6-months-pythian/#comments</comments>
		<pubDate>Wed, 01 May 2013 13:07:51 +0000</pubDate>
		<dc:creator>Tin Thinn</dc:creator>
				<category><![CDATA[Pythian]]></category>
		<category><![CDATA[Inside Pythian]]></category>

		<guid isPermaLink="false">http://www.pythian.com/blog/?p=54987</guid>
		<description><![CDATA[“What have I gotten myself into” ran through my head during the first week of training at Pythian. The environment was great, the people were great, the work was great, but many doubts ran through my head as I ran from training meeting to training meeting – how am I going to retain all this...]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p>“What have I gotten myself into” ran through my head during the first week of training at Pythian. The environment was great, the people were great, the work was great, but many doubts ran through my head as I ran from training meeting to training meeting – how am I going to retain all this information (my memory skills are bad as it is), am I going to meet their expectations, am I too junior for this, I can’t seem to catch up on anything, is this the right career choice.<br />
6 months later and I’m still here! I feel more comfortable with the work, I know I am meeting expectations, I have confidence in my skills, my organizational skills have improved, I know I’ve made the right career choice, even my memory has gotten much better! What changed over the past 6 months you ask? Well, here is how it started.</p>
<p>I was happy and content at my previous employer. I knew what I was doing, I had the skills and knowledge, and I was regarded as one of their senior employees. Although it was mainly recruiting work I was performing, it was under a Sales umbrella. I had always wanted to follow the path of an HR professional, may it be recruiting, organizational design, compensation, employee relations, training – all of which fell under the umbrella of HR. I arrived at Pythian because I was contacted by a previous colleague with an opportunity that I could not resist. Finally, I will get a chance to get my hands dirty and work on my true passion – Human Resourcing (HR). Contrary to some beliefs, HR professionals are not “paper pushers”, administrators or strictly recruiters but in fact we are pieces of the strategic puzzle in any organization. The harsh reality though is that much of the world still believes that we are administrators. So, for me I really wanted to join an organization that leverages HR as a strategic partner for the organization.</p>
<p>What Pythian offered me was the “3 Pillars of Growth” – Sales, Service Delivery and HR. These 3 ‘pillars’ are crucial in helping grow a business. This was further solidified for me by the people I met, the new/ existing plans and programs within HR, and the focus on culture Pythian provided for the growth of the business. This was a great opportunity for me to grow as a person and my career, and be part of a strategic team.</p>
<p>So I arrive at Pythian and was excited to learn the things I have always wanted to learn while providing the expertise I already possessed. In fact, I was delegated as the lead on a major, high profile project within the first week. However, shortly after doubt crept in as I found myself feeling like I could barely tread water (ask my wife, I’m not a very strong swimmer). Here I was absorbing so much information about the company, policies, procedures and now I have to figure out how to role out a project while I was still learning about the internal processes (and performing my main responsibility of recruiting). I rapidly felt like I was taking on too much water and started drowning. I started to loose confidence in my abilities and doubted the decision to take on this roll. I had several discussions with my work colleagues and my peers about my concerns. However, the one discussion that really changed my mind set was a conversation with my wife, she told me – “You worked too hard for this, don’t let yourself be your worst enemy.” There it was, clear as day! It was all my own insecurities, my own self-doubts, myself talking me out of this equation. So, I worked hard to observe and utilize the tools I had been provided throughout my career and at Pythian.</p>
<p>Once I was more open, I quickly noticed that Pythian really believes in their employees. They really empower their employees to do well and have a company culture to nurture their growth. They are always to open to new ideas and are always willing to take on risks with you. In the event that your new idea does not work, they still support you and move on to other ideas without pointing fingers or seeing you as a failure. Pythian’s unwritten culture is to make sure their employees don’t fail. Being in HR here, I was able to observe these facts are not just in our department but it is well exemplified in all business units across Pythian, starting from the CEO and Founder, to the Senior Executive team, to the Leadership team, and so on. I also had the opportunity to address my concerns to my own colleagues and manager and they were nothing but supportive. They provided immediate feedback and were able to provide relatable experiences with me.</p>
<p>Today, I feel like I am a much better swimmer. With the support I was provided by my colleagues, my managers, and the company my confidence in my abilities have grown and I know I have and will continue to add value to the organization. I feel I have met the expectations of the people who hired me, and I know I have made the right decision in joining this team.</p>
<p>This was my own experience of the first 6 months at Pythian. I hope that others have had similar or will have similar experiences as I have had (although I hope they are better swimmers). It has been tough but I’ve enjoyed every second of it. Life is a journey after all!</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/blog/my-first-6-months-pythian/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Log Buffer #317, A Carnival of the Vanities for DBAs</title>
		<link>http://www.pythian.com/blog/log-buffer-317-a-carnival-of-the-vanities-for-dbas/</link>
		<comments>http://www.pythian.com/blog/log-buffer-317-a-carnival-of-the-vanities-for-dbas/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 12:06:10 +0000</pubDate>
		<dc:creator>Fahd Mirza</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Log Buffer]]></category>

		<guid isPermaLink="false">http://www.pythian.com/blog/?p=54967</guid>
		<description><![CDATA[Reminders are an inevitable part of our personal and professional lives. Keep reminding of oneself about goals, priorities, and milestones is key to stay on top of things. This Log Buffer Edition is a reminder about all those not-to-be-missed blogs out there. Oracle: One of the developers was performing a delete using a nested subquery,...]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p>Reminders are an inevitable part of our personal and professional lives. Keep reminding of oneself about goals, priorities, and milestones is key to stay on top of things. This Log Buffer Edition is a reminder about all those not-to-be-missed blogs out there.</p>
<p><span id="more-54967"></span></p>
<p><strong>Oracle:</strong></p>
<p>One of the developers was performing a delete using a nested subquery, which was throwing out ORA-00600 errors. The ORA-00600 Lookup Tool on MOS suggested it was caused by a bug, <a href="http://www.oracle-base.com/blog/2013/04/25/opt_param-hint-saves-the-day/">Tim Hall</a> reports.</p>
<p>The healthcare sector has a clear opportunity to modernize care delivery by adopting new data interchange standards and EHR systems. <a href="http://dboptimizer.com/2013/04/24/database-virtualization-data-as-a-service-in-healthcare/">Kyle </a>opines.</p>
<p><a href="http://martincarstenbach.wordpress.com/2013/04/23/limiting-the-degree-of-parallelism-via-resource-manager-and-a-gotcha/">This</a> might be something very obvious for the reader but Martin had an interesting revelation recently when implementing parallel_degree_limit_p1 in a resource consumer group.</p>
<p><a href="http://www.adellera.it/blog/2013/04/22/fast-refresh-of-outer-join-only-materialized-views-algorithm-part-1/">Alberto</a> has a good post on fast refresh of outer-join-only materialized views.</p>
<p><a href="http://hoopercharles.wordpress.com/2013/04/19/unexpected-timer-resolution-unexpected-parked-cpus-unexpected-power-consumption/">Charles Hooper</a> is discussing Unexpected Timer Resolution, Unexpected Parked CPUs, Unexpected Power Consumption.</p>
<p><strong>SQL Server:</strong></p>
<p>There are five SQL Server white papers which every <a href="http://www.jasonstrate.com/">DBA</a> should read.</p>
<p><a href="http://www.jamesserra.com/">James</a> gets into an interesting discussion about consultants.</p>
<p><a href="http://littlekendra.com/">Kendra Little</a> wonders as why most people don&#8217;t follow best practices.</p>
<p><a href="http://kendalvandyke.blogspot.com">Kendal Van Dyke</a> writes a quick note to let you know that SQL Power Doc version 1.0.1.0 is now live.</p>
<p>Let’s talk about database application benchmarking with <a href="http://kevinekline.com/">Kevin Kline</a>.</p>
<p><strong>MySQL:</strong></p>
<p><a href="http://www.flamingspork.com/blog/2013/04/26/a-few-notes-on-innodb-in-mysql-5-7-1/">Stewart Smith</a> is sharing a few notes on InnoDB in MySQL 5.7.1.</p>
<p><a href="http://www.mysqlperformanceblog.com/2013/04/25/more-on-transactions-descriptors-optimization/">Alexey Kopytov</a> has blogged more on transaction descriptors optimization.</p>
<p>MySQL Cluster gets a Community Award, <a href="http://insidemysql.com/mysql-cluster-gets-a-community-award/">Tomas</a> tells us.</p>
<p>Oracle&#8217;s VP of MySQL Engineering Tomas Ulin delivered on Tuesday a keynote entitled &#8220;Driving <a href="https://blogs.oracle.com/MySQL/entry/driving_mysql_innovation">MySQL</a> Innovation for Next Generation Applications&#8221; at the Percona Live Conference.</p>
<p><a href="http://blog.mariadb.org/mariadb-introduces-atomic-writes/">MariaDB</a> Introduces Atomic Writes, Arel Schwenke reveals.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/blog/log-buffer-317-a-carnival-of-the-vanities-for-dbas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opening the Door without the Keys</title>
		<link>http://www.pythian.com/blog/opening-the-door-without-the-keys/</link>
		<comments>http://www.pythian.com/blog/opening-the-door-without-the-keys/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 14:36:16 +0000</pubDate>
		<dc:creator>Christine Kivi</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Pythian]]></category>
		<category><![CDATA[DBA Lounge]]></category>

		<guid isPermaLink="false">http://www.pythian.com/blog/?p=54921</guid>
		<description><![CDATA[This week my DBA team satisfied a request to restore 1 month old lost data.  A review of the RMAN backups showed that we indeed had a valid level 0 from the requested day which was 33 days ago.  However, upon recovery, the necessary archive logs to bring the database to a consistent point, were...]]></description>
				<content:encoded><![CDATA[<div itemscope itemtype="http://schema.org/BlogPosting"><p>This week my DBA team satisfied a request to restore 1 month old lost data.  A review of the RMAN backups showed that we indeed had a valid level 0 from the requested day which was 33 days ago.  However, upon recovery, the necessary archive logs to bring the database to a consistent point, were not available.  With a 28 day retention policy, running level 0 backups every 15 days, and level 1s each night, we did have the necessary level 0 backup, but the archive logs had been deleted.  How to retrieve a copy of a user schema from a database that you cannot open?  With the hidden “_allow_resetlogs_corruption” parameter.</p>
<p>To make matters more difficult, we were also doing just a partial database restore – we only required 1 schema, located in its own tablespace but this tablespace was encrypted.</p>
<p>The partial database restore was simple enough.  The team began the restore and recovery on another server.  The server where recovery is to be performed should have the same path/location of files as the old server, if not then update the path of the datafiles using set newname command in rman recovery, update the logfiles using alter database rename commands and update the tempfile by re-creating it.</p>
<pre>RMAN&gt; run
{
ALLOCATE CHANNEL C1 DEVICE TYPE DISK;
ALLOCATE CHANNEL C2 DEVICE TYPE DISK;
ALLOCATE CHANNEL C3 DEVICE TYPE DISK;
set until time "to_date('16-03-2013 07:00:00','dd-mm-yyyy hh24:mi:ss')";
restore database skip forever tablespace 'USERS1','USERS2',' USERS3',' USERS4';
recover database skip forever tablespace 'USERS1','USERS2',' USERS3',' USERS4';
RELEASE  CHANNEL C1;
RELEASE  CHANNEL C3;
RELEASE  CHANNEL C3;
}</pre>
<p>RMAN completed the restore of the SYSTEM, SYSAUX, UNDO and our USERS tablespace without issue, but sadly during the recovery we received the Oracle Error:</p>
<pre>ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
RMAN-03002: failure of recover command at 04/19/2013 17:24:34
RMAN-06053: unable to perform media recovery because of missing log</pre>
<p>You know at this point that your data is right there – so close to grab and provide for your customer and become the DBA hero you long to be – but Oracle won’t open the door and let you in.  What to do?  All we need is to get the data and get out.  We are not going to allow users into this half-way house we call an Oracle database.  So, we allow for the corruption with the hidden parameter “_allow_resetlogs_corruption”.  This should not be used lightly – your database will be a mess – but it will allow you to open it, and hopefully get the data you need.</p>
<pre>SQL&gt; shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL&gt; startup mount
ORACLE instance started.

Total System Global Area  530288640 bytes
Fixed Size                  2131120 bytes
Variable Size             310381392 bytes
Database Buffers          209715200 bytes
Redo Buffers                8060928 bytes
Database mounted.

SQL&gt; ALTER SYSTEM SET "_allow_resetlogs_corruption"= TRUE SCOPE = SPFILE;
SQL&gt; ALTER SYSTEM SET undo_management=MANUAL SCOPE = SPFILE;
SQL&gt; shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL&gt; startup mount
ORACLE instance started.

Total System Global Area  530288640 bytes
Fixed Size                  2131120 bytes
Variable Size             310381392 bytes
Database Buffers          209715200 bytes
Redo Buffers                8060928 bytes
Database mounted.

SQL&gt; alter database open resetlogs;

Database altered.</pre>
<p>Halleluiah! As a DBA, these are words you long to see on your screen “Database opened”.  At this point, I am certain my team has super human DBA talent.  The data is there for the taking!  But wait, still not able to grab it.  The database continues to crash with ORA-600 errors.  The team realizes that the errors are related to Oracle jobs that are failing, we set job_queue_processes=0; and restart the instance.  The database seems to be stable now, but the expdp needs a job process in order to run.  If we modify the job_queue_processes parameter, then the instance will crash.  We go back to our roots and try the old export utility “exp”.  This works great, except if you remember our tablespaces are encrypted.  Exp cannot export the data from them.  Painstakingly, the team moves each object into a new non-encrypted tablespace.  Many ORA-00600 errors are hit along the way.  The road is not smooth, but, with perseverance all objects get moved.  We then create a new UNDO tablespace:</p>
<pre>SQL&gt; CREATE UNDO TABLESPACE undo1 datafile '&lt;ora_data_path&gt;\undo1_1.dbf' size 200m autoextend on maxsize unlimited;
Tablespace created.
SQL&gt; ALTER SYSTEM SET undo_tablespace = undo1 SCOPE=spfile;
System altered.
SQL&gt; alter system set undo_management=auto scope=spfile;
System altered.

SQL&gt; shutdown immediate
SQL&gt; startup</pre>
<p>Finally the team is able to generate a successful export dump using exp:</p>
<pre>exp file=&lt;path_to_exportlocation&gt;\tran.dmp indexes=n direct=y feedback=100000 statistics=none owner=('&lt;schema_owner&gt;')</pre>
<p>The team members are now experts at both partial recoveries and getting the front door to an Oracle database open when you fail to have the right keys.  The lesson here?  Keep all your keys to the front door, but remember back doors do exist.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/blog/opening-the-door-without-the-keys/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
