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

<channel>
	<title>Database Specialists</title>
	<atom:link href="http://www.dbspecialists.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dbspecialists.com/blog</link>
	<description>Remote Oracle Database Administration Specialists</description>
	<pubDate>Tue, 07 Sep 2010 23:20:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Understanding Oracle Redo</title>
		<link>http://www.dbspecialists.com/blog/database-backups/understanding-oracle-redo/</link>
		<comments>http://www.dbspecialists.com/blog/database-backups/understanding-oracle-redo/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 23:20:26 +0000</pubDate>
		<dc:creator>Jay Stanley, Sr. Staff Consultant</dc:creator>
		
		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[Database Backups]]></category>

		<category><![CDATA[Database Tuning]]></category>

		<category><![CDATA[High Availability]]></category>

		<category><![CDATA[concepts]]></category>

		<category><![CDATA[Oracle RDBMS]]></category>

		<category><![CDATA[redo]]></category>

		<guid isPermaLink="false">http://www.dbspecialists.com/blog/?p=208</guid>
		<description><![CDATA[In the Oracle RDBMS, one of the most frequently misunderstood concepts I see in doing remote database administration, is the role and importance of redo.]]></description>
			<content:encoded><![CDATA[<p>In the Oracle RDBMS, one of the most frequently misunderstood concepts I see in doing remote database administration, is the role and importance of redo. From the Oracle 10G Concepts manual, the definition of redo is:</p>
<div class="outline-2">
<div class="outline-text-2">
<p><em>The primary function of the redo log is to record all changes made to data. If a failure prevents modified data from being permanently written to the datafiles, then the changes can be obtained from the redo log, so work is never lost.</em></p>
<p>To me, that&#8217;s not an entirely good explanation.</p>
<p>It&#8217;s easier to understand redo if we look at the history of a transaction. A transaction here refers to a session that issues a set of SQL statements that do SQL inserts, updates and/or deletes, and then issues a &#8216;commit&#8217; statement.</p>
<p>The first thing that happens while the inserts/updates/deletes are happening, is that there is a record of every datafile block change made, and these are inserted into a memory structure called the &#8216;redo log buffer&#8217;. When the session does a &#8216;commit&#8217;, a process (LGWR) flushes the redo log buffer information to the online redo log files. Every transaction that Oracle completes is written to these online redo log files; under normal circumstances, when a session commits changes to the database, the session does not regain control until information about those changes have been written to the online redo log file(s).</p>
<p>These online redo log files are of a fixed size; when they fill up, LGWR switches the online redo log file it is writing to, to the next redo log. What happens next depends on how the Oracle database is configured.</p>
<p>Oracle can be run in two different ways.  The first is called <em>archivelog</em> mode, in which online redo log files are copied to a new destination when LGWR is done writing to them; these are called <em>archived redo log files</em>.  Or, Oracle can run in <em>noarchivelog</em> mode, in which case these copies do not take place, and there is no ARCH process. As these file copies do take resources, running a database in <em>noarchivelog</em> mode can make it run faster; however, this also means that it will be impossible to recover a database in the future, so almost all databases run in <em>archivelog</em> mode. The copy of online redo log files to archived redo log files is done by a process called &#8216;ARCH&#8217;, the redo archiver. ARCH only copies files that LGWR has finished writing to.</p>
<p>The main advantage of running a database in <em>archivelog</em> mode, is that if you have a cold backup of the database (or a valid hot backup, available only in archivelog mode), you can <em>recover</em> the database, replaying the transactions in the archived (and online) redo logs, so that these transactions are not lost, and a full recovery is possible. Without them, you can only recover to the time that the backup took place, so transactions will very likely be lost.</p>
<p>Since ARCH only copies completed online redo logs if the database is in <em>archivelog</em> mode, the LGWR process will refuse to write to an online redo log file that has not yet completed archiving. If the LGWR process ends up waiting on the ARCH process, every session in the database that issues a &#8216;commit&#8217; statement will need to wait; control will not be returned to the client program; no new commits are accepted. Sessions just wait for Oracle to return control to them, and this basically means that transaction througput goes to 0. No session is able to continue (after their commit), until this is ARCH completes, which then enables LGWR to work again.</p>
<p>Over time, these archived redo log files will eventually fill up whatever target directory they are being written to, so some process (there are several ways to do this) needs to remove them before that happens. If this is not accomplished, the target directory fills up. You can see from the model above, that the ARCH program won&#8217;t be able to complete archiving an online redo log file, the LGWR fills up all other available online redo log files, until finally LGWR ends up waiting on ARCH to complete, until disk space is available again.</p>
<p>There are a few interesting facts about this setup, which is virtually identical with every disk-based modern relational database:</p>
<ul>
<li> Redo is only generated by database changes (commonly inserts/updates/deletes).  A read-only database will generate no redo.</li>
<li>If the disk containing the online redo logs can&#8217;t keep up in pure bandwidth (Mb/second), transactions will slow down; there will be a pause after every client &#8216;commit&#8217;.</li>
<li>If the disks can&#8217;t keep up in latency (if they take a long time for each write to complete), again, transactions will slow down. This is different than than bandwidth; if there are 1000 sessions committing every second, then there will likely be a demand of 1000 writes/second to the online redo log files. Most modern magnetic disks can only do about 100-200 operations per second, so this is a very common problem, usually solved by using RAID.</li>
<li>If archiving is overall slower than the redo rate, then eventually LGWR will need to wait for ARCH to finish as explained above. Again, sessions end up waiting on the &#8216;commit&#8217; statement.</li>
<li>If a client application issues a lot of small transactions with frequent commits, LGWR will need to do more separate writes to the online redo log files. Doing fewer commits means that the IOPS of the online redo log files is reduced, improving throughput if this is a bottleneck.</li>
<li>This has very little to do with the writes that happen to the datafiles themselves; this is a completely separate process (DBWR), and this happens using asychronous operating system calls. LGWR uses operating system calls which are synchronous; they will not return until it is confirmed that the data really is on disk.</li>
<li>When ARCH copies an online redo log file and archives it, it does it continuously, so the target archivelog directory typically doesn&#8217;t require the IOPS that online redo log files do.</li>
<li>If online redo log files are too small, since LGWR has to pause a bit when it switches log groups, this also causes sessions to wait on &#8216;commits&#8217;.</li>
</ul>
<p>There are a lot of considerations about redo; I have not touched on the topics of standby databases, supplemental logging, or duplexed online redo log files, and there are many others.</p>
<p>To see if your database is suffering because of a slow redo stream, look for the &#8216;log file sync&#8217; wait event in the Database Specialists DBRX portal if you are a customer, or you can use Enterprise Manager, AWR reports, statspack reports, or other tools to find this.</p></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.dbspecialists.com/blog/database-backups/understanding-oracle-redo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Simplifying storage management; using fewer tablespaces</title>
		<link>http://www.dbspecialists.com/blog/uncategorized/simplifying-storage-management-using-fewer-tablespaces/</link>
		<comments>http://www.dbspecialists.com/blog/uncategorized/simplifying-storage-management-using-fewer-tablespaces/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 17:21:19 +0000</pubDate>
		<dc:creator>Jay Stanley, Sr. Staff Consultant</dc:creator>
		
		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[Database Maintenance]]></category>

		<category><![CDATA[Database Monitoring]]></category>

		<category><![CDATA[High Availability]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.dbspecialists.com/blog/?p=203</guid>
		<description><![CDATA[Sooner or later, every DBA will need to address how to manage storage capacity in their databases. Nearly every database needs more storage as time goes on, and without attention, the database will fill up, and new data/inserts can&#8217;t happen. It&#8217;s been my experience that bad space mangement is the root cause of a high [...]]]></description>
			<content:encoded><![CDATA[<p>Sooner or later, every DBA will need to address how to manage storage capacity in their databases. Nearly every database needs more storage as time goes on, and without attention, the database will fill up, and new data/inserts can&#8217;t happen. It&#8217;s been my experience that bad space mangement is the root cause of a high percentage of database downtime incidents.</p>
<p>In the Oracle RDBMS, every <em>segment</em> (table/table partition, index/index partition, queue) must be assigned to a particular tablespace. Each tablespace is composed of one or more datafiles. Datafiles do have a maximum size, depending on the blocksize for traditional <em>smallfile</em> tablespaces; for a tablespace with a block size of 8k, the maximum size of a datafile is just under 32Gb. So, each tablespace is typically comprised of many datafiles. Oracle has several tablespaces that are built-in; these include the SYSTEM, SYSAUX, TEMP, and UNDO/ROLLBACK tablespaces.</p>
<p>Let&#8217;s say that you wanted to make the work of the next DBA who manages a database you control as hard as possible. One of the easiest ways to do this is to create a database with LOTS of tablespaces; you could even create 1 tablespace per segment. This means that instead of worrying about one &#8216;pool&#8217; of storage, the next DBA will need to manage dozens, or hundreds, of storage pools. Because this management is mission-critical (if ANY tablespace fills up, your application may not work), it is far more likely that one will be overlooked, and fill up. Using lots of tablespaces will also make it far more likely that a lot of space is wasted in each tablespace, because every tablespace will need to maintain a certain amt of free space to be &#8217;safe&#8217; from future increases in growth.  If a segment is dropped or shrunk, the space released will be only in that one tablespace, and won&#8217;t be able to be used by segments assigned to all of the other tablespaces.</p>
<p>If you wanted to make the the work of the next DBA who manages a database you control the easiest, you&#8217;d create just one tablespace (which could be a BIGFILE tablespace, which can use larger files than SMALLFILE tablespaces), and stick all of your segments into there. There would only be one tablespace to manage; when segments are shrunk or removed in the course of business, that space can immediately be used by any other segment. To manage extent sizes, you could simply use the EXTENT MANAGEMENT LOCAL AUTOALLOCATE feature, which automatically gives you near-to-optimimum sizes.</p>
<p>Prior to Oracle 10g, there were many legitimate reasons to use multiple tablespaces and there still are good reasons to segregate your segments into separate tablespaces. Some of these reasons are:</p>
<ul>
<li>You may need different block sizes for different segments for best performance; since each tablespace has one block size, to use different ones you need different tablespaces.</li>
<li>If you aren&#8217;t using a SAN, or ASM, or similar storage solution, you may wish to segregate segments on differnet LUNs/drives for better performance. Given the size of today&#8217;s databases, and the need for high IOPS storage solutions, most non-trivial databases are using SANs/ASM/other storage solutions these days. Using these, it doesn&#8217;t give you better performance by segregating tablespaces.</li>
<li> If you need to use the &#8216;transportable tablespaces&#8217; feature to move large quantities of data between Oracle databases,</li>
<li>If you use Oracle&#8217;s direct-path load feature, which loads data above the high-water mark of each datafile directly for faster data loading (by bypassing the internal SQL engine), then you may wish to continually create new tablespaces for this purpose.</li>
<li>If you have several separate users in your database, and wish to &#8217;split&#8217; the database in the future so that you have one databases each for each user, then you may wish to create a dedicated tablespace for each user. This would allow you to clone half of the database using RMAN on a new machine, and OFFLINE DROP the datafiles you do not want.</li>
</ul>
<p>In conclusion, one easy way to make your oracle database use space more efficiently, be easier to manage, and therefore be less likely to fill up, is to use fewer, larger application tablespaces, rather than more.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbspecialists.com/blog/uncategorized/simplifying-storage-management-using-fewer-tablespaces/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Need uptime?  Use an Oracle Physical Standby database</title>
		<link>http://www.dbspecialists.com/blog/database-backups/need-uptime-use-and-oracle-physical-standby-database/</link>
		<comments>http://www.dbspecialists.com/blog/database-backups/need-uptime-use-and-oracle-physical-standby-database/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 22:56:55 +0000</pubDate>
		<dc:creator>Jay Stanley, Sr. Staff Consultant</dc:creator>
		
		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[Database Backups]]></category>

		<category><![CDATA[High Availability]]></category>

		<category><![CDATA[remote dba]]></category>

		<category><![CDATA[Remote DBA services]]></category>

		<guid isPermaLink="false">http://www.dbspecialists.com/blog/?p=196</guid>
		<description><![CDATA[Over the years of experience with Oracle databases, there is one feature, far more than any others, that has proved itself again and again in the real world; I speak of course, of the Oracle Physical Standby feature.]]></description>
			<content:encoded><![CDATA[<p>Oracle over the years has come out with a bewildering array of features to minimise downtime for databases.  In fact, the number of methods to accomplish this goal is at least a dozen.  Over the years of experience with Oracle databases, there is one feature, far more than any others, that has proved itself again and again in the real world; I speak of course, of the Oracle Physical Standby feature.</p>
<p>The Oracle Physical Standby feature is not new at all; I was using it back in 1995 when I first started working as an Oracle DBA with version 7; perhaps that&#8217;s why it&#8217;s as reliable as it is.  Although there have been cases where standby databases do encounter bugs, with proper monitoring (for example, with the monitoring done by <a title="Database Rx" href="http://www.dbspecialists.com/remotedba.html">Database Rx</a>) this is not an issue.</p>
<p>So, why am I recommending Oracle Physical Standby databases over the other methods you can use to insure uptime?  What makes it so special?</p>
<ul>
<li>An Oracle Physical Standby database has nothing shared with the primary database; it (typically) runs on a separate server, using its own storage, it&#8217;s own memory, and it&#8217;s own network interface; machines/disks/memory/network cards all break sooner or later (it&#8217;s not &#8220;if&#8221;, it&#8217;s &#8220;when&#8221;).  Some folks say that RAC serves this purpose, but in fact it does not; all nodes in a RAC cluster read and write to the same storage subsystem, so that is a potential single point of failure.</li>
<li>If you can afford the network connection necessary, you can physically place your physical standby database in a separate data center, so even if your primary data center burns up, your data is safe.</li>
<li>This feature is available in all versions of Oracle, though for Standard Edition and lower, you will need to come up with scripts to move archivelogs and apply them on the standby, as we do for our<a title="Remote DBA" href="http://www.dbspecialists.com/remotedba.html"> Remote DBA</a> clients.</li>
<li>For Standard Edition, you can tune it so that you will lose a maximum of one archived redo log worth of data worst-case, if your primary database disappears.</li>
<li>If using the Enterprise Edition, you can have Oracle itself manage it, and in fact use advanced automatic failover methods using a feature called Dataguard, that can switch primary/standby database roles very quickly and easily.</li>
<li>If using the Enterprise Edition, you can set parameters to delay the application of data from the primary to the standby by a certain amount of time.  This would be useful if you suffered logical corruption on the primary database (ie someone dropping a table) and could catch it fast enough.</li>
<li>If using the Enterprise Edition, you can use the Flashback Database feature to allow the standby to recover from logical errors on the primary database even easier,</li>
<li>Also, if using the Enterprise Edition, you can actually make the standby stay up-to-date with the primary database in near-real-time, by making the log-writer (LGWR) process on the primary, ship redo directly to the standby, even before that redo is archived.</li>
<li>Although there are restrictions, you can actually open up a standby database in read-only mode for reporting.  In versions before Oracle 11g, the standby cannot apply changes from the primary while it is open this way; however, there is a new feature in 11G called &#8216;Active Data Guard&#8217; that allows this.</li>
<li>In my experience, Oracle Logical standby databases are not as reliable as compared with Physical Standbys.</li>
<li>Another advantage; you can use your physical standby database to do RMAN backups from, which can dramatically reduce the load on your primary database.</li>
</ul>
<p>The main disadvantage to setting up a standby database, is that you will double your hardware cost; you will need a server/disk able to handle your peak production loads.  It will also cost you an extra Oracle license for that instance.  This will double the amount of space in your datacenter used, and also double the amount of electricity/heat produced.  For many businesses though, this cost is far less then the cost incurred by a lengthy database recovery.</p>
<p>There is nothing more relieving than when a primary database malfunctions, and you are able to continue production with failover times usually measured in under 10 minutes, rather than potentially waiting days/weeks for new hardware and a full restore from backup.  There is no other feature that as dramatically improves the potential uptime of an Oracle Database as much, as using a Physical Standby database.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbspecialists.com/blog/database-backups/need-uptime-use-and-oracle-physical-standby-database/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Index Usage Monitoring and Keeping the Horses Out Front</title>
		<link>http://www.dbspecialists.com/blog/uncategorized/index-usage-monitoring-and-keeping-the-horses-out-front/</link>
		<comments>http://www.dbspecialists.com/blog/uncategorized/index-usage-monitoring-and-keeping-the-horses-out-front/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 18:33:00 +0000</pubDate>
		<dc:creator>Gary Sadler, Sr. Staff Consultant</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Database Monitoring]]></category>

		<category><![CDATA[index monitoring]]></category>

		<category><![CDATA[remote dba]]></category>

		<category><![CDATA[remote oracle dba]]></category>

		<guid isPermaLink="false">http://www.dbspecialists.com/blog/?p=185</guid>
		<description><![CDATA[When you happen across a table with lots of indexes, what’s the first thought that crosses your mind?  
 
Okay, having gotten that bit of venting out of the way, what’s the second thought?  Are all of these indexes actually used?  That’s a legitimate question and one that comes up from time to time in our remote [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;">When you happen across a table with lots of indexes, what’s the first thought that crosses your mind?<span style="mso-spacerun: yes;">  </span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;"> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;">Okay, having gotten that bit of venting out of the way, what’s the second thought?<span style="mso-spacerun: yes;">  </span></span></span><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;">Are all of these indexes actually used?<span style="mso-spacerun: yes;">  </span>That’s a legitimate question and one that comes up from time to time in our remote Oracle DBA practice.<span style="mso-spacerun: yes;">  </span>Unneeded indexes not only waste space but also introduce unnecessary overhead to table updates.<span style="mso-spacerun: yes;">  </span>So let’s talk about what can and should be done about it.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;"> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;">Index usage monitoring is a fairly common subject of chatter in the various Oracle-related discussion boards and blogs.<span style="mso-spacerun: yes;">  </span>There are scripts available, some free and some for a price, which boast the ability to identify unused indexes easily enough and allow you to just drop them, thereby releasing tons of space and cutting update overhead dramatically.<span style="mso-spacerun: yes;">  </span>Our take on the matter – not so fast!</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;"> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;">Determining whether an index is a necessary part of the database is not as easy as turning on monitoring and running a few scripts.<span style="mso-spacerun: yes;">  </span>Sure, turning on monitoring is easily done with the ALTER INDEX statement and then checking the V$OBJECT_USAGE view will tell you whether the index has been accessed since monitoring was turned on.<span style="mso-spacerun: yes;">  </span>But there are a couple of gotchas with that approach:</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;"> </span></span></p>
<ul style="margin-top: 0in;" type="disc">
<li class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;">In versions of 10g prior to 10.2.0.5 and 11gR1 gathering stats on a table with the CASCADE option set will mark an index as “used” in the V$OBJECT_USAGE table if monitoring is on.<span style="mso-spacerun: yes;">  </span>See Bug # 430034.1 in Metalink.</span></span></li>
<li class="MsoNormal"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;">Indexes which support foreign keys are not flagged as used when a relevant update occurs even though the index was indeed used behind the scenes to avoid a table lock.</span></span></li>
</ul>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;"> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;">Thus indexes might be flagged as used even though they are not necessary and may not be flagged when they are indeed a vital part of the database.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;"> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;">Some alternatives exist to the V$OBJECT_USAGE view, such as querying AWR or Statspack data to determine whether an index was part of an execution plan.<span style="mso-spacerun: yes;">  </span>But this approach has a separate downfall in that an index might have been incorrectly used by the optimizer.<span style="mso-spacerun: yes;">  </span>Perhaps the index was used but is its existence justified?<span style="mso-spacerun: yes;">  </span>Is it really necessary?<span style="mso-spacerun: yes;">  </span>You might end up dropping an index that <em>should</em> have been used in favor of one that <em>should not</em> have been.</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;"> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Trebuchet MS&quot;; mso-bidi-font-family: 'Microsoft Sans Serif';"><span style="font-size: small;">So what’s the point?<span style="mso-spacerun: yes;">  </span>The point is that sometimes there is no good shortcut for diligence.<span style="mso-spacerun: yes;">  </span>Let us keep the cart behind the horses and talk to the data modelers and application developers about whether indexes are necessary.<span style="mso-spacerun: yes;">  </span>It is easy enough to identify redundant indexes such as those which are subsets of others on the same table so we could certainly make recommendations, but throwing the application into a tizzy by dropping indexes we declared useless through the running of our scripts is a good way to insure taking up residence in the proverbial dog house.</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbspecialists.com/blog/uncategorized/index-usage-monitoring-and-keeping-the-horses-out-front/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sometimes it&#8217;s the little things.</title>
		<link>http://www.dbspecialists.com/blog/uncategorized/sometimes-its-the-little-things/</link>
		<comments>http://www.dbspecialists.com/blog/uncategorized/sometimes-its-the-little-things/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 21:11:47 +0000</pubDate>
		<dc:creator>Terry Sutton, Director of Managed Services</dc:creator>
		
		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[Database Maintenance]]></category>

		<category><![CDATA[Real Application Clusters]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[best practice]]></category>

		<category><![CDATA[pfile]]></category>

		<category><![CDATA[spfile]]></category>

		<guid isPermaLink="false">http://www.dbspecialists.com/blog/?p=176</guid>
		<description><![CDATA[As Oracle consultants we often get caught up in the esoteric areas of performance, such as contention, complex execution plans, and obscure parameters.  But we forget that sometimes it&#8217;s the little things that count, many of which we learned in the DBA101 phase of our careers.
I was reminded of this recently at one of our [...]]]></description>
			<content:encoded><![CDATA[<p>As Oracle consultants we often get caught up in the esoteric areas of performance, such as contention, complex execution plans, and obscure parameters.  But we forget that sometimes it&#8217;s the little things that count, many of which we learned in the DBA101 phase of our careers.</p>
<p>I was reminded of this recently at one of our remote DBA clients.  The customer was having issues with flashback queries in a RAC cluster.  We discovered that the undo_retention setting on one instance was much less than on the others.  At first we couldn&#8217;t figure out how this was happening; the settings were correct in the spfile.  Then we looked in the $ORACLE_HOME/dbs directory of the instance and saw that there was a pfile (aka, an init.ora file) in the directory, with different settings for undo_retention.</p>
<p>As is typical in RAC installations, there was supposed to be a pfile whose only contents were a pointer to the spfile (because the spfile was in ASM).  But what had happened was that someone had executed the command &#8220;create pfile from spfile&#8221; in order to read or copy the spfile settings.  Of course, this overwrote the pfile which pointed to the spfile.  It didn&#8217;t cause an issue until the next time the instance was restarted; when that was done the instance then had a setting for undo_retention from an earlier time.</p>
<p>For this reason, my personal best practice for creating an editable pfile from an spfile is to put it into the /tmp directory&#8211;</p>
<pre> create pfile='/tmp/something.ora' from spfile;</pre>
<p>That way I can read it, edit it for whetever use (such as making a clone), or whatever I want without risking having it used unexpectedly at some time in the future.  Others use</p>
<pre> create pfile='?/dbs/init_&lt;not_the_sid&gt;.ora' from spfile; </pre>
<p>There are many options, but the point is to not use the default which results when you don&#8217;t specify a pfile name.</p>
<p>Of course, one could say &#8220;the DBA should always check and clean up everything after their tasks&#8221;, which is true.  But avoiding the need for the cleanup by following a standard practice is a more thorough solution, in my opinion.</p>
<p>Not everything we do as DBAs is complex, convoluted, or esoteric.  Taking care of the little things can be as important as being able to optimize a 300 line query.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbspecialists.com/blog/uncategorized/sometimes-its-the-little-things/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DatabaseRX - Initial Impressions Part 2</title>
		<link>http://www.dbspecialists.com/blog/database-monitoring/databaserx-initial-impressions-part-2/</link>
		<comments>http://www.dbspecialists.com/blog/database-monitoring/databaserx-initial-impressions-part-2/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 18:06:06 +0000</pubDate>
		<dc:creator>Eric Keen</dc:creator>
		
		<category><![CDATA[Database Monitoring]]></category>

		<category><![CDATA[Database Tools]]></category>

		<category><![CDATA[Troubleshooting Methodology]]></category>

		<guid isPermaLink="false">http://www.dbspecialists.com/blog/?p=164</guid>
		<description><![CDATA[As an implementer of commercial and open source database monitoring tools I find DatabaseRX has capabilities that clearly differentiate it from the rest of the market:

Scalability - hundreds of databases and instances can be added with trivial monitoring overhead, due in part to a highly normalized data model, message based architecture and modular design (loader,analyzer,notifier).
Security [...]]]></description>
			<content:encoded><![CDATA[<p>As an implementer of commercial and open source database monitoring tools I find DatabaseRX has capabilities that clearly differentiate it from the rest of the market:</p>
<ul>
<li><strong>Scalability</strong> - hundreds of databases and instances can be added with trivial monitoring overhead, due in part to a highly normalized data model, message based architecture and modular design (loader,analyzer,notifier).</li>
<li><strong>Security</strong> - DatabaseRX agents don&#8217;t require root/oracle or DBA privileges to fully report operational and trending issues.</li>
<li><strong>Network Access Control</strong> -  DatababaseRX does not expose databases externally - it only requires a periodic encrypted SMTP push from the database or proxy host.</li>
<li><strong>Documentation</strong> <strong>and Global Search </strong>- Delaying  problem resolution for lack of information is inexcusable - the DatabaseRX monitoring portal includes everything related to escalation contacts, vendor support, access control, prior events and reports.</li>
</ul>
<p>The last point - &#8220;one place to go&#8221; for problem identification, resource engagement, resolution and root cause documentation has proven to me during live events that there can be significant reductions in unexpected downtime simply based on that efficiency.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbspecialists.com/blog/database-monitoring/databaserx-initial-impressions-part-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pictures from the NoCOUG Spring Conference</title>
		<link>http://www.dbspecialists.com/blog/uncategorized/pictures-from-the-nocoug-spring-conference/</link>
		<comments>http://www.dbspecialists.com/blog/uncategorized/pictures-from-the-nocoug-spring-conference/#comments</comments>
		<pubDate>Sun, 23 May 2010 05:01:36 +0000</pubDate>
		<dc:creator>Iggy Fernandez</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.dbspecialists.com/blog/?p=160</guid>
		<description><![CDATA[There was education—everything from RAC and Exadata to SQL Developer and Java Server Faces.
There was food—everything from Prosciutto and Salmon to Biscotti and Chocolate-Dipped Strawberries.
There were prizes and giveaways—books from Oracle Press, duffel bags, Iron Man 2 posters, DVDs of the Oracle Database Appliance, and more.
There was networking—an opportunity to meet and greet Oracle luminaries [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">There was <strong>education</strong>—everything from RAC and Exadata to SQL Developer and Java Server Faces.</p>
<p style="text-align: left;">There was <strong>food</strong>—everything from Prosciutto and Salmon to Biscotti and Chocolate-Dipped Strawberries.</p>
<p style="text-align: left;">There were <strong>prizes and giveaways</strong>—books from Oracle Press, duffel bags, Iron Man 2 posters, DVDs of the Oracle Database Appliance, and more.</p>
<p style="text-align: left;">There was <strong>networking</strong>—an opportunity to meet and greet Oracle luminaries such as Graham Wood, one of the key players in the creation of Statspack, and Kris Rice, the architect of SQL Developer.</p>
<p style="text-align: left;">A great time was had by all. We hope to see everybody again at the summer conference on August 19 at Chevron in San Ramon.</p>
<p style="text-align: left;"><strong><em><span style="color: #ff0000;"><a href="http://www.flickr.com/photos/9223421@N06/sets/72157623990117837/" target="_blank"><span style="color: #ff0000;">See the pictures</span></a></span></em></strong></p>
<p style="text-align: left;"><strong><span style="color: #ff0000;"><a href="http://www.nocoug.org/Journal/NoCOUG_Journal_201005.pdf" target="_blank"><span style="color: #ff0000;"><em>Download the NoCOUG Journal</em></span></a></span></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbspecialists.com/blog/uncategorized/pictures-from-the-nocoug-spring-conference/feed/</wfw:commentRss>
		</item>
		<item>
		<title>April CPU 2010 updated 12-May due to 239 invalid OLAP objects.</title>
		<link>http://www.dbspecialists.com/blog/uncategorized/april-cpu-2010-updated-12-may-because-of-239-invalid-olap-objects/</link>
		<comments>http://www.dbspecialists.com/blog/uncategorized/april-cpu-2010-updated-12-may-because-of-239-invalid-olap-objects/#comments</comments>
		<pubDate>Mon, 17 May 2010 23:10:01 +0000</pubDate>
		<dc:creator>Ian Jones, Sr. Staff Consultant</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.dbspecialists.com/blog/?p=149</guid>
		<description><![CDATA[On 12th May Oracle updated the 11.1.0.7 April CPU 2010 security patch (9369783) on all platforms.  The original April 13th patch causes 239 invalid objects in the database if the OLAP option is NOT installed.  So, if you were planning to apply this patch you should download the 12th May version.  You can find out the details in metalink [...]]]></description>
			<content:encoded><![CDATA[<p>On 12th May Oracle updated the 11.1.0.7 April CPU 2010 security patch (9369783) on all platforms.  The original April 13th patch causes 239 invalid objects in the database if the OLAP option is NOT installed.  So, if you were planning to apply this patch you should download the 12th May version.  You can find out the details in metalink note 1060969.1 &#8220;Critical Patch Update April 2010 Known Issues&#8221;</p>
<p>The presence of the invalid objects does not cause problems however ending up with an extra 239 invalids at the end of the patch that are not discussed in the patch notes would be a concern.  Of course, that is why Oracle have  document 1060969.1 to catch these things. </p>
<p>If you applied the patch between its original release on April 13th and the update of the known issues on 12th May you should check for the presence of these invalids.  Metalink note 1091952.1 lists them and says &#8221;As long as OLAP was not in use it is safe to drop all of the above objects&#8221;. </p>
<p>I have not tested the April PSU patch (9352179), at the moment it has no similar update in its known issue document, which is note 1061315.1.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbspecialists.com/blog/uncategorized/april-cpu-2010-updated-12-may-because-of-239-invalid-olap-objects/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DatabaseRX - Initial Impression Part 1</title>
		<link>http://www.dbspecialists.com/blog/database-monitoring/databaserx-initial-impression-part-1/</link>
		<comments>http://www.dbspecialists.com/blog/database-monitoring/databaserx-initial-impression-part-1/#comments</comments>
		<pubDate>Tue, 04 May 2010 16:55:42 +0000</pubDate>
		<dc:creator>Eric Keen</dc:creator>
		
		<category><![CDATA[Database Monitoring]]></category>

		<category><![CDATA[Database Tools]]></category>

		<guid isPermaLink="false">http://www.dbspecialists.com/blog/?p=126</guid>
		<description><![CDATA[Alert Log Monitoring DatabaseRX]]></description>
			<content:encoded><![CDATA[<p>It hasn&#8217;t been easy trying to classify DatabaseRX.   Is it a monitoring, capacity planning, analysis, reporting, forensics, dashboard, KPIs, delta comparison tool - yes.  Is it a database management console or query tool - no.  As such I&#8217;d like to start with a simple area but one that&#8217;s easy to get wrong.</p>
<p><strong>Alert Log Scanning</strong></p>
<p>Very few tools do this well out of the box - and those that attempt to perform the task require significant setup or proprietary transport agents.  And to my knowledge with 11gR2 ADR  you still can&#8217;t add a syslog host destination for an instance alert log (talk to the folks at TimesTen for this enhancement Oracle).</p>
<p>DatabaseRX has some impressive features for alert log monitoring:</p>
<ul>
<li>Transport and consolidation are built in to a periodic passive e-mail send framework.</li>
<li>Events of interest are rated for severity.</li>
<li>Pre and post lines are displayed around the alert.</li>
<li>RegEx style strings can exclude events on an instance-by-instance basis.</li>
</ul>
<p>To the last point all events are monitored and you add exceptions over time.  While there could be more noise-to-signal in the beginning, you will not miss an unusual but critical new event.</p>
<p>I&#8217;ve setup various alert log monitoring systems in the past for RAC/non-RAC databases and what DatabaseRX does exceeds those tools - with far fewer resources.  One personal metric? I log into production hosts fewer times to investigate events and that not only saves time but helps keep the auditors happy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbspecialists.com/blog/database-monitoring/databaserx-initial-impression-part-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The importance of testing recovery</title>
		<link>http://www.dbspecialists.com/blog/database-backups/the-importance-of-testing-recovery/</link>
		<comments>http://www.dbspecialists.com/blog/database-backups/the-importance-of-testing-recovery/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 23:19:18 +0000</pubDate>
		<dc:creator>Jay Stanley, Sr. Staff Consultant</dc:creator>
		
		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[Database Backups]]></category>

		<category><![CDATA[Database Recovery]]></category>

		<guid isPermaLink="false">http://www.dbspecialists.com/blog/?p=123</guid>
		<description><![CDATA[As a database administer, it&#8217;s very important not to forget one of our main responsibilities; that being insuring that the database(s) we&#8217;re responsible for, can be recovered in the case of an emergency.  Read my short presentation here, for thoughts on this important topic.
The Importance of Testing Database Recovery, by Jay Stanley
]]></description>
			<content:encoded><![CDATA[<p>As a database administer, it&#8217;s very important not to forget one of our main responsibilities; that being insuring that the database(s) we&#8217;re responsible for, can be recovered in the case of an emergency.  Read my short presentation here, for thoughts on this important topic.</p>
<p><a title="The Importance of Testing Database Recovery" href="http://www.dbspecialists.com/files/presentations/the_importance_of_testing_recovery.html">The Importance of Testing Database Recovery, by Jay Stanley</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbspecialists.com/blog/database-backups/the-importance-of-testing-recovery/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
