<?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>Only Four Left... &#187; Oracle RDBMS</title>
	<atom:link href="http://only4left.jpiwowar.com/category/oracle-rdbms/feed/" rel="self" type="application/rss+xml" />
	<link>http://only4left.jpiwowar.com</link>
	<description>Oracle stuff.  Some Linux and Mac stuff.  ALTER TABLE blog DISABLE UNIQUE (content_type);</description>
	<lastBuildDate>Thu, 02 Sep 2010 07:00:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Logging for non-existent listeners</title>
		<link>http://only4left.jpiwowar.com/2010/05/logging-for-non-existent-listeners/</link>
		<comments>http://only4left.jpiwowar.com/2010/05/logging-for-non-existent-listeners/#comments</comments>
		<pubDate>Mon, 17 May 2010 03:32:16 +0000</pubDate>
		<dc:creator>jpiwowar</dc:creator>
				<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[11g]]></category>
		<category><![CDATA[WowThatWasDumb]]></category>

		<guid isPermaLink="false">http://only4left.jpiwowar.com/2010/05/logging-for-non-existent-listeners/</guid>
		<description><![CDATA[Trying to start a database listener that doesn't exist generates log files.  In older versions of the database, it's just one file, but what about in 11g, with its fancy Automatic DIagnostic Repository?]]></description>
			<content:encoded><![CDATA[<p>While working on an 11gR1 database server today, I fat-fingered the name of a secondary listener (you know, practicing my stock-trading skills), and in the process I noticed something that I hadn't considered before.  Here's the setup:</p>
<pre class="brush: plain;">[oracle@11gr1srv ~]$ cd $DIAG_DIR/tnslsnr/11gr1srv
[oracle@11gr1srv 11gr1srv]$ ls
listener  listener_old
[oracle@11gr1srv 11gr1srv]$ lsnrctl start LISTENER_ODL

LSNRCTL for Linux: Version 11.1.0.7.0 - Production on 16-MAY-2010 13:09:10

Copyright (c) 1991, 2008, Oracle.  All rights reserved.

Starting /opt/oracle/app/oracle/product/11.1.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.1.0.7.0 - Production
System parameter file is /opt/oracle/app/oracle/product/11.1.0/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/app/oracle/diag/tnslsnr/11gr1srv/listener_odl/alert/log.xml
TNS-01151: Missing listener name, LISTENER_ODL, in LISTENER.ORA

Listener failed to start. See the error message(s) above...</pre>
<p>It looks like there are more consequences than brief embarrassment for that typo, though.  My failed attempt to start the listener created a full Automatic Diagnostic Repository (ADR) directory structure for the non-existent listener: </p>
<pre class="brush: plain;">[oracle@11gr1srv 11gr1srv]$ ls
listener  listener_odl  listener_old
[oracle@11gr1srv 11gr1srv]$ ls -R listener_odl
listener_odl:
alert  cdump  incident  incpkg  lck  metadata  stage  sweep  trace

listener_odl/alert:
log.xml

listener_odl/cdump:

listener_odl/incident:

listener_odl/incpkg:

listener_odl/lck:
AM_1096102193_3488045378.lck  AM_1744845641_3861997533.lck
AM_1096102262_3454819329.lck  AM_3216668543_3129272988.lck

listener_odl/metadata:
ADR_CONTROL.ams       INC_METER_IMPT_DEF.ams
ADR_INVALIDATION.ams  INC_METER_PK_IMPTS.ams

listener_odl/stage:

listener_odl/sweep:

listener_odl/trace:
listener_odl.log</pre>
<p>I looked through the <a href="http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/toc.htm">Net Services docs</a>, but wasn't able to find a way to disable this behavior, and my Google-fu failed me as well.  This only seems to be happening for the 'start' command; other lsnrctl commands (reload, status, stop, etc) just return the expected "TNS-01101: Could not find service name" response.</p>
<p>This sort of thing happens in 10g, too (and probably in older versions, I'm just too lazy to fire up my 9i test system), but the impact is much smaller: a single log file, not all of the ADR stuff that comes with 11g.  Even in 11g, it's not a big deal; this just generates some light housecleaning work.  At the extreme, I suppose it could be possible to launch the lamest DOS attack ever by chewing up lots of inodes, but there have to be more entertaining (and faster) ways to do that.</p>
]]></content:encoded>
			<wfw:commentRss>http://only4left.jpiwowar.com/2010/05/logging-for-non-existent-listeners/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resolving ORA-4023 during a 10gR2-&gt;11gR1 upgrade</title>
		<link>http://only4left.jpiwowar.com/2010/05/resolving-ora-4023/</link>
		<comments>http://only4left.jpiwowar.com/2010/05/resolving-ora-4023/#comments</comments>
		<pubDate>Thu, 13 May 2010 08:08:52 +0000</pubDate>
		<dc:creator>jpiwowar</dc:creator>
				<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[11g]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[WowThatWasDumb]]></category>

		<guid isPermaLink="false">http://only4left.jpiwowar.com/2010/05/resolving-ora-4023/</guid>
		<description><![CDATA[<p>Sometimes, even on the 3rd or 4th run-through of a database upgrade test, it's possible to miss something. Practice makes perfect.</p>
]]></description>
			<content:encoded><![CDATA[<p>Here's one for a hypothetical frustrated Googler. I just had something goofy happen to me while testing preparations for a database upgrade from 10gR2 to 11gR1. I'd already been through the process a few times on this server, so I wasn't expecting any problems. Since production upgrades usually happen during time windows that guarantee reduced mental capacity, however, I'd decided to perform one last dry run to verify my documentation and to test my "upgrade day" checklist. I cleaned out the database files and related configurations from the previous successful upgrade, and started over from step 0.</p>
<p>Everything was going as expected until I actually ran DBUA. The first step after selecting the database to upgrade, "Gathering database information," was failing with the message:</p>
<blockquote><p>
  ORA-04023: Object SYS.STANDARD could not be validated or authorized
</p></blockquote>
<p>At first, I thought I might have fallen prey to the conditions described in <a href="https://supporthtml.oracle.com/ep/faces/secure/km/DocumentDisplay.jspx?id=729909.1" title="Upgrading to 11.1.0 and DBUA reports ORA-4023 On SYS.STANDARD ">My Oracle Support Note 729909.1: Upgrading to 11.1.0 and DBUA reports ORA-4023 On SYS.STANDARD</a>, but the diagnostic steps in the note did not match what I was seeing. Next stop: the DBUA logs in <code>$ORACLE_BASE/cfgtoollogs/dbua/logs</code>. The answer became obvious when I saw the following lines in the trace.log from the failed dbua session (some lines omitted for brevity):</p>
<pre class="brush: plain; highlight: [6];">
[main] [2:35:45:170] [DatabasesPage.initializePage:351]  Loading databases instance found in OraTab/Registry
[main] [2:35:45:170] [OsUtilsUnix.enumerateSIDs:350]  checking sid: xxxx
[main] [2:35:45:179] [Database.getStepSQLInterface:690]  OH in database: /opt/oracle/app/oracle/product/11.1.0/dbhome_1
[main] [2:35:45:186] [Database.getStepSQLInterface:718]  sqlplus created with home:=/opt/oracle/app/oracle/product/11.1.0/dbhome_1 and sid:=xxxx
[Thread-4] [2:35:49:44] [CompManager.setSelectedDatabase:1339]  setSelectedDatabase::oracleHome=/opt/oracle/app/oracle/product/11.1.0/dbhome_1 sid=xxxx
[Thread-4] [2:35:49:45] [CompManager.setSelectedDatabase:1424]  Old home=/opt/oracle/app/oracle/product/11.1.0/dbhome_1
[Thread-4] [2:35:49:47] [CompManager.setSelectedDatabase:1425]  New home=/opt/oracle/app/oracle/product/11.1.0/dbhome_1</pre>
<p>Sure enough, when I checked the same log file from a previous successful upgrade, the corresponding lines in the trace.log file all referred to the old (10.2.0) ORACLE_HOME. Despite all my careful cleanup, I had somehow forgotten to reset the value of the ORACLE_HOME for the database in /etc/oratab:</p>
<pre class="brush: plain; highlight: [2];">[oracle@testsrv logs]$ grep product /etc/oratab
xxxx:/opt/oracle/app/oracle/product/11.1.0/dbhome_1:N
</pre>
</p>
<p>To make matters worse, I had also failed to notice that the ORACLE_HOME value was wrong in the DBUA interface. This, I suppose, is why we test. <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p>After setting the ORACLE_HOME in /etc/oratab back to the 10gR2 value, I was able to complete the upgrade successfully.</p>
]]></content:encoded>
			<wfw:commentRss>http://only4left.jpiwowar.com/2010/05/resolving-ora-4023/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Friday mumblings: VanOUG, 11gR2, and EBS</title>
		<link>http://only4left.jpiwowar.com/2010/03/friday-mumblings-vanoug-11gr2-and-ebs/</link>
		<comments>http://only4left.jpiwowar.com/2010/03/friday-mumblings-vanoug-11gr2-and-ebs/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 20:29:13 +0000</pubDate>
		<dc:creator>jpiwowar</dc:creator>
				<category><![CDATA[EBS]]></category>
		<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[11g]]></category>
		<category><![CDATA[R12]]></category>
		<category><![CDATA[vanoug]]></category>

		<guid isPermaLink="false">http://only4left.jpiwowar.com/2010/03/friday-mumblings-vanoug-11gr2-and-ebs/</guid>
		<description><![CDATA[<p>Random notes about the March 2010 VanOUG meeting presentations</p>
]]></description>
			<content:encoded><![CDATA[<p>At the first meeting of the newly-reconstituted <a href="http://vanoug.org" title="Vancouver Oracle Users Group">Vancouver Oracle Users Group</a> this past week, we were treated to three great presentations by <a href="http://caleb.com/" title="Caleb Small">Caleb Small</a> and <a href="http://morganslibrary.org/" title="Morgan's Library">Dan Morgan</a>. They've made the content of their presentations available on the VanOUG web site (these links go to PDFs, if that sort of thing bugs you, consider yourself warned):</p>
<ul>
<li><a href="http://vanoug.org/caleb_RAC11gR2_ha.pdf" title="11gR2 HA Best Practices">11gR2 High Availability Best Practices</a> (Caleb Small)</li>
<li><a href="http://vanoug.org/morgan_2010_11gR2nf.pdf" title="11g New features, Dan Morgan">11g New Features You Won't Hear About From Oracle</a> (Dan Morgan)</li>
<li><a href="http://vanoug.org/morgan_2010_ebr.pdf" title="EBR demo slides, Dan Morgan">Edition Based Redefinition Presentation Slides</a> (Dan Morgan)</li>
</ul>
<p>I'm not going to go into a full recap of the presentations, but they were all full of really cool information. This post is an attempt to collect some of my mental notes, mostly cast in the context of one of my favorite topics, Oracle Applications.</p>
<h3 id="HA">11gR2 HA Best Practices</h3>
<p>Caleb's presentation was very thorough and well-constructed. Dan gave him grief for boring the audience, but I think there was just so much new content to absorb that people were too busy processing to ask many questions on the fly. <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Here are some one-liners from my notebook (anything that looks like an opinion is my commentary/interpretation, not Caleb's):</p>
<ul>
<li>Lots more "moving parts" in 11gR2 Grid Infrastructure, clear "separation of duties" across three privileged OS accounts.</li>
<li>Service startup order is a little different now</li>
<li>Cluster status utilities show a lot more information, but need to learn to not rely upon crsstat as much</li>
<li>Proper networking configuration of 11gR2 GI not for the faint of heart. <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
<li>Increased memory requirements will make this tougher to virtualize; I'm going to need a bigger laptop.</li>
<li>ACFS looks interesting; I wonder if it will be a valid option for an (shared application tier filesystem) for Oracle Applications. (Turns out the answer is "not currently planned," based on <a href="http://blogs.oracle.com/stevenChan/2010/03/ocfs2_linux_certified_ebs12.html#comment-297368" title="Question">this</a> <a href="http://blogs.oracle.com/stevenChan/2010/03/ocfs2_linux_certified_ebs12.html#comment-297506" title="Answer. Oh well.">exchange</a> I had w/ Steven Chan on his blog later in the week).</li>
</ul>
<h3 id="new">11g New Features</h3>
<p>There's a <b>lot</b> of really neat stuff going on in this presentation. I'd like to call out small nugget that, while far from the most important, is still pretty interesting on the surface: "deferred segment creation." When a table is created, no extents are actually allocated until rows are inserted. Seems like an odd feature, but one touted benefit is for large ERP systems like SAP and Oracle Applications, where lots of tables are created that may never be used, depending on what products are implemented. Those thousands of initial extents can certainly add up to real storage, and a more cluttered data dictionary. I can't speak to SAP implementations, but I don't see it as a huge win for EBS customers, given that:</p>
<ol>
<li>This feature is available only when tables are created, which means the benefit will only really be available when Oracle starts shipping Oracle Applications install media with an 11gR2 database. Anyone upgrading to the 11gR2 database will still be stuck with those empty extents.</li>
<li>Given the overall footprint of an EBS database, the storage savings isn't such a big deal. For example, here's the potential savings from eliminating "empty" tables from an R12 Vision database:
<pre class="brush: sql;">
  SYSTEM@R12VIS(11.1.0.7)&gt;select sum(bytes)/1024/1024 potential_savings
2  from dba_segments s
3  where exists (select table_name
4                  from dba_tables
5                 where num_rows = 0
6                   and table_name = s.segment_name
7               )
8  /

POTENTIAL_SAVINGS
-----------------
3850.36719
</pre>
<p>
    3.5(ish) GB out of 200GB is okay, I guess, but not a huge deal for a system that's only going to keep growing. FWIW, I'm going to wave my hands and pretend that the fact that a Vision database has way more populated tables than a "fresh-install" EBS database is balanced by the fact that my quick query doesn't account for the possibility that table stats are stale and some of those tables are actually populated. <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />
  </li>
</ol>
<p>Of course, it's possible that I'm missing the point. It wouldn't be the first time! Maybe it really comes down more to a less-cluttered data dictionary. I mean, it can't be about tablespace fragmentation, since we're not supposed to care about that anymore, right?</p>
<h3 id="EBR">Edition Based Redefinition (EBR)</h3>
<p>This seemed like an interesting feature when I first heard about it last autumn, but I'll confess that I didn't quite comprehend the power of EBR until seeing Dan's demo (parts <a href="http://morganslibrary.org/reference/ebr_demo1.html" title="EBR demo, part 4">1</a>, <a href="http://morganslibrary.org/reference/ebr_demo2.html" title="EBR demo, part 2">2</a>, and <a href="http://morganslibrary.org/reference/ebr_demo3.html" title="EBR demo, part 3">3</a> are on his Morgan's Library site, with part 4 still in the works). Setting aside the obvious benefits for home-grown applications, the potential benefits in an Oracle Applications environment are huge. Consider:</p>
<ol>
<li>There's already an option to create a <a href="https://supporthtml.oracle.com/ep/faces/secure/km/DocumentDisplay.jspx?id=734025.1" title="Using a Staged Applications System to Reduce Patching Downtime in Oracle Applications Release 12 ">staged Applications System</a> to shorten patch downtime windows, allowing administrators to run the "copy" and "generate" portions of large EBS patches prior to applying the patch to production. With EBR, it could be possible to stage the "database" portion of a patch as well, and switch to a new default edition at patch time. You'd probably still want to do the database staging at a quiet time in the database, of course, but daring souls could accomplish "almost-no-downtime" patching if EBR were worked into the Oracle Applications patching framework. Wicked.</li>
<li>EBR might even make it possible to truly have EBS patches that could be rolled back. The current patching process already backs up files that are replaced. Thoughtful application of cross-edition triggers might make it possible to revert to a previous edition without loss of data if a patch needs to be backed out. Granted, the process would have to be demonstrated to be pretty bullet-proof before I'd try it in production, but it could save restoring test and dev systems from backup in the event that a patch doesn't work out as expected.</li>
</ol>
<p>Just as I might be missing the point about deferred segment creation's advantages in EBS, I might be guilty of over-extended enthusiasm with respect to edition based redefinition. Or maybe I've decided to turn this into a science fiction blog. <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  It's sure to be far more complicated to implement EBR in an Oracle Applications context than I'm implying above, and this is only speculation on my part, <b>not</b> anything that's actually promised by Oracle. Still, a nerd can dream...</p>
<p>Thanks again to Caleb and Dan for the great presentations, and for your continued support in getting the user group launched!</p>
]]></content:encoded>
			<wfw:commentRss>http://only4left.jpiwowar.com/2010/03/friday-mumblings-vanoug-11gr2-and-ebs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>32-bit to 64-bit database migration tips: OLAP upgrade</title>
		<link>http://only4left.jpiwowar.com/2010/02/32-bit-to-64-bit-olap-migration-tips/</link>
		<comments>http://only4left.jpiwowar.com/2010/02/32-bit-to-64-bit-olap-migration-tips/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 23:33:18 +0000</pubDate>
		<dc:creator>jpiwowar</dc:creator>
				<category><![CDATA[EBS]]></category>
		<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[10g]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[R12]]></category>

		<guid isPermaLink="false">http://only4left.jpiwowar.com/2010/02/32-bit-to-64-bit-database-migration-tips-olap-upgrade/</guid>
		<description><![CDATA[Notes on upgrading OLAP workspaces when migrating a database from 32-bit to 64-bit Linux.
]]></description>
			<content:encoded><![CDATA[<p>A while ago, I had the opportunity to migrate an E-Business Suite database (Apps version 12.0.4, database version 10.2.0.4) from 32-bit Linux to 64-bit Linux. It's a straightforward process, outlined in <a href="https://supporthtml.oracle.com/ep/faces/secure/km/DocumentDisplay.jspx?id=471566.1" title="Migrating Oracle E-Business Suite R12 from Linux 32-bit to Linux 64-bit ">My Oracle Support Note 471566.1: Migrating Oracle E-Business Suite R12 from Linux 32-bit to Linux 64-bit</a>. Performing one of the critical migration steps, upgrading OLAP analytical workspaces (AWs), requires some careful reading, starting with the primary migration document for the database tier: <a href="https://supporthtml.oracle.com/ep/faces/secure/km/DocumentDisplay.jspx?id=456197.1" title="Using Oracle E-Business Suite Release 12 with a Database Tier Only Platform on Oracle 10g Release 2 ">Note 456197.1: Using Oracle E-Business Suite Release 12 with a Database Tier Only Platform on Oracle 10g Release 2</a>. This document directs you to <a href="https://supporthtml.oracle.com/ep/faces/secure/km/DocumentDisplay.jspx?id=352306.1" title="Upgrading OLAP from 32 to 64 bits ">Note 352306.1: Upgrading OLAP from 32 to 64 bits</a>, which covers the migration process for OLAP workspaces: export and delete from the the 32-bit system, then recreate on the 64-bit system and import the contents. The remainder of this blog post includes some embellishment of those four steps, from my migration notes.  Examples were recreated on my test database; please don't look for these workspace names in an actual EBS database.</p>
<p>Please note that I'm by no means an OLAP expert; if you have your own observations or experiences to share, including corrections to any errors I might have made, please leave a comment. The last thing I want to do is spread misinformation! And, as always, remember: test systems exist for a reason, and instructions from Oracle Support should trump anything you read in this blog entry <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3 id="exp">"No objects to export" error when exporting AWs</h3>
<p>The export process is explained thoroughly in Note 352306.1. You may encounter the following error, however, when attempting to export an empty workspace:</p>
<pre class="brush: sql;">
BEGIN dbms_aw.execute('export all to eif file ''EXPORT_DIR/AWTEST.eif'''); END;
*
ERROR at line 1:
ORA-33390: There are no objects to export.
ORA-06512: at &quot;SYS.DBMS_AW&quot;, line 93
ORA-06512: at &quot;SYS.DBMS_AW&quot;, line 122
ORA-06512: at line 1
</pre>
<p>An export file will not be created, since there's no data in the workspace. Nonetheless, you will still need to recreate the AW in the 64-bit database, which leads us to the next section...</p>
<h3 id="del">Before deleting AWs</h3>
<p>In addition to gathering the OLAP workspace's name, schema, and tablespace, make sure that you make a note of how the AW is partitioned. This will allow you to more faithfully reconstruct the AW in the 64-bit database. Again, the basics can be found in Note 352306.1, except for a discussion of workspace partitioning. According to the <a href="http://download.oracle.com/docs/cd/B19306_01/olap.102/b14350/dbms_aw.htm#BABGAHEG" title="DBMS_AW.AW_CREATE description (10gR2)">documentation for DBMS_AW.AW_CREATE</a>, by default, analytic workspaces are created with 8 partitions. Querying dba_segments seemed to tell a different story:</p>
<pre class="brush: sql;">
SYSTEM@mactest(10.2.0.4)&gt;select segment_name
2    , segment_type
3    , count(*)
4   from dba_segments
5   where segment_name= 'AW$TESTDEFAULT'
6   group by segment_name
7   , segment_type;

SEGMENT_NAME                   SEGMENT_TYPE           COUNT(*)
------------------------------ -------------------- ----------
AW$TESTDEFAULT                 TABLE SUBPARTITION           16
</pre>
<p>This initially confused me, until I found that the table created for the default workspace is actually comprised of two partitions, each comprised of 8 subpartitions. Apparently, "partition" means different things to different people:</p>
<pre class="brush: sql;">
SYSTEM@mactest(10.2.0.4)&gt;select table_name
2  , partition_name
3  , subpartition_count sub
4  from all_tab_partitions
5  where table_name = 'AW$TESTDEFAULT';

TABLE_NAME           PARTITION_NAME        SUB
-------------------- -------------- ----------
AW$TESTDEFAULT       PTN1                    8
AW$TESTDEFAULT       PTNN                    8
</pre>
<p>So, before you delete the AWs in the 32-bit database, be sure to consult the data dictionary. In most cases, you'll probably see segment count of 16 in dba_segments (implying a default partitioning scheme). But there are exceptions...</p>
<h3 id="crt">There's always one goofball</h3>
<p>One of those exceptions came when my query to get a count of AW segments returned a 1. Naturally, I was expecting an even number, so this came as a surprise. At first, I thought this might be a special case when specifying partnum=&gt;1 when creating the workspace:</p>
<pre class="brush: sql;">
SYSTEM@mactest(10.2.0.4)&gt;exec dbms_aw.aw_create('JPTEST.TEST1PART','USERS',1);
PL/SQL procedure successfully completed.

SYSTEM@mactest(10.2.0.4)&gt;select segment_name
2  , segment_type
3  ,count(*)
4  from dba_segments
5  where segment_name = 'AW$TEST1PART'
6  group by segment_name
7  , segment_type
8  /

SEGMENT_NAME                   SEGMENT_TYPE           COUNT(*)
------------------------------ -------------------- ----------
AW$TEST1PART                   TABLE SUBPARTITION            2
</pre>
<p>Then it occurred to me that zero is also a number... <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<pre class="brush: sql;">
SYSTEM@mactest(10.2.0.4)&gt;exec dbms_aw.aw_create('JPTEST.TEST0PART','USERS',0);
PL/SQL procedure successfully completed.

SYSTEM@mactest(10.2.0.4)&gt;select segment_name
2  , segment_type
3  ,count(*)
4  from dba_segments
5  where segment_name = 'AW$TEST0PART'
6  group by segment_type
7  , segment_name
8  /

SEGMENT_NAME                   SEGMENT_TYPE           COUNT(*)
------------------------------ -------------------- ----------
AW$TEST0PART                   TABLE                         1
</pre>
<p>Please recall: Note 352306.1 recommends using the Analytic Workspace Manager (AWM) tool to recreate the AWs in the 64-bit database. If you want to create the AWs manually, I suggest engaging with Oracle Support to get their approval. The preceding examples are provided only for illustration of what's going on when the AW is created.</p>
<h3 id="import">Importing AWs</h3>
<p>I don't really have much to add here, other than:</p>
<ol>
<li>If you had any empty AWs in the 32-bit system, you won't have anything to import for those workspaces, though hopefully you recreated them in the 64-bit system</li>
<li>Isn't this process the sort of thing that cries out to be scripted? Would I really resort to such cheap, obvious devices to foreshadow my next post? I would indeed!</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://only4left.jpiwowar.com/2010/02/32-bit-to-64-bit-olap-migration-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keeping OPatch up-to-date: an object lesson</title>
		<link>http://only4left.jpiwowar.com/2010/01/keeping-opatch-up-to-date-an-object-lesson/</link>
		<comments>http://only4left.jpiwowar.com/2010/01/keeping-opatch-up-to-date-an-object-lesson/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 18:17:51 +0000</pubDate>
		<dc:creator>jpiwowar</dc:creator>
				<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[11g]]></category>
		<category><![CDATA[patching]]></category>
		<category><![CDATA[WowThatWasDumb]]></category>

		<guid isPermaLink="false">http://only4left.jpiwowar.com/2010/01/keeping-opatch-up-to-date-an-object-lesson/</guid>
		<description><![CDATA[<p>Is opatch failing with the message "ApplySession failed: Patch ID is null."? Might want to verify your opatch version...</p>
]]></description>
			<content:encoded><![CDATA[<p>I just did something silly while applying the January 2010 PSU to an 11gR1 ORACLE_HOME, and thought I'd share, in case someone else is Googling for the error message.</p>
<pre class="brush: plain;">
[oracle@dbserv patches]$ cd 9209238
[oracle@dbserv 9209238]$ opatch apply

Invoking OPatch 11.1.0.6.2
Oracle Interim Patch Installer version 11.1.0.6.2
Copyright (c) 2007, Oracle Corporation. All rights reserved.

(some OPatch output snipped)

ApplySession failed: Patch ID is null.
System intact, OPatch will not attempt to restore the system

OPatch failed with error code 73
</pre>
<p>A closer look at the installation prereqs reveals the following statement: "You must use the OPatch utility version 11.1.0.6.7 or later," which I confess that I missed the first time around. D'oh. After installing the latest version of OPatch, the "opatch apply" command worked as expected.</p>
<p>Lessons reinforced:</p>
<ol>
<li>Even if you think you're up-to-date on prerequisites, triple-checking is a good idea</li>
<li>Even humble tools like the OPatch utility can change pretty frequently</li>
<li>Test systems are useful for testing your patching process, not just patches themselves</li>
</ol>
<p>(Everyone join in, now: "Thanks, Mr. Obvious, you're a life saver!") <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://only4left.jpiwowar.com/2010/01/keeping-opatch-up-to-date-an-object-lesson/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle 10gR2 RDBMS for Mac OS X (Intel) has arrived!</title>
		<link>http://only4left.jpiwowar.com/2009/04/os-x-intel-native-10gr2-rdbms-is-here/</link>
		<comments>http://only4left.jpiwowar.com/2009/04/os-x-intel-native-10gr2-rdbms-is-here/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 21:22:34 +0000</pubDate>
		<dc:creator>jpiwowar</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Oracle RDBMS]]></category>

		<guid isPermaLink="false">http://only4left.jpiwowar.com/2009/04/os-x-intel-native-10gr2-rdbms-is-here/</guid>
		<description><![CDATA[<p>Oracle has, at long last, released a version of the RDBMS for Mac OS X Intel. Not all features are supported, but on the other hand, it will run natively even on a non-Server version of Leopard. Woohoo!</p>]]></description>
			<content:encoded><![CDATA[<p><i>This post was written before Snow Leopard (OS X 10.6) shipped.  If you're interested in an installation guide for Oracle 10gR2 on Snow Leopard, Raimonds Simanovskis has <a href="http://blog.rayapps.com/2009/09/14/how-to-install-oracle-database-10g-on-mac-os-x-snow-leopard/" title="10gR2 RDBMS on Snow Leopard, by @rsim">provided instructions</a> on his blog</i>.
</p>
</p>
<p>In the wake of a <a href="http://twitter.com/oracletechnet/status/1492024522" title="Justin's tweet">small</a> flurry of <a href="http://blogs.oracle.com/otn/2009/04/mac_daddy_oracle_database_10g.html" title="Justin's blog post">announcements</a> yesterday about the release of <a href="http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10204macsoft_x86-64.html" title="OTN download for Oracle 10gR2 on Mac OS X Intel">Oracle 10gR2 for Mac OS X Intel</a> (almost two weeks after April Fools' Day, so knock it off with the jokes already <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ), I decided to try a test installation on my Macbook Pro. The good news is that it works, even if you aren't running OS X Server 10.5.4 as specified in the release notes:</p>
<p><a href="http://only4left.jpiwowar.com/wp-content/uploads/2009/04/oradbcasuccess.jpg"><img src="http://only4left.jpiwowar.com/wp-content/uploads/2009/04/oradbcasuccess-tm.jpg" width="480" height="300" alt="OraDBCASuccess.jpg" title="OraDBCASuccess.jpg" /></a></p>
<p>For the record, this is Mac OS X Leopard, desktop version 10.5.6. I'm still considering whether or not to post an "install guide," since everything more or less worked as advertised. And really, does the Internet need another dozen screenshots of OUI and DBCA doing their usual thing? I feel guilty enough for the screenshot above. </p>
<p><em>Install guide updates, 12-13 April 2009:
<ul>
<li><a href="http://ronr.blogspot.com/2009/04/how-to-install-oracle-10204-on-intel.html" title="how to install oracle 10.2.0.4 on intel (client) macs - quick">Ronald Rood</a> has posted a quick installation guide.
</li>
<li><a href="http://blog.rayapps.com/2009/04/12/how-to-install-oracle-database-10g-on-mac-os-x-intel/" title="How to install Oracle Database 10g on Mac OS X Intel">So has Raimonds Simanovskis</a>, with additional instructions on how to auto-start oracle on boot.  </li>
<li><a href="http://www.pythian.com/news/1937/quick-install-guide-for-oracle-10g-release-2-on-mac-os-x-leopard-intel" title="Quick Install Guide for Oracle 10g Release 2 on Mac OS X Leopard (Intel)">Alex Gorbachev</a> also has posted his install guide, so you now have a wide variety of options.</li>
</ul>
<p></em></p>
<h3>So now what?</h3>
<p>Apart from the novelty of it all, is this a worthwhile exercise? I'm not sure yet. I've been using the "Oracle in a VM" approach for a really long time, and I really like the flexibility of being able to play around with system configurations, etc. without worrying about doing any damage to my host system. With snapshots enabled, I don't even have to worry very much about permanently damaging the VM itself. Also, as stated in the <a href="http://download.oracle.com/docs/cd/B19306_01/relnotes.102/b25285/toc.htm#BABIJEFG" title="Release notes">release notes</a>&nbsp;&nbsp;(and called out in <a href="http://forums.oracle.com/forums/thread.jspa?threadID=654233&amp;tstart=0&amp;messageID=3395164#3395164" title="OTN Apple thread">this thread on the OTN Apple forum</a>, where hope springs eternal and no one is ever bitter or cranky), the list of supported features for the OS X version is a bit shorter than one might expect. On the other hand, "unsupported" doesn't always mean "won't work," and the memory footprint of a native database is a bit less than that of a full OS + database running in a virtualized environment. My expectation is that for quick testing and tinkering, the native database install could fit a niche, but VM still rules for more advanced stuff like RAC, ASM, 11g, etc.</p>
<p>What's encouraging is that it appears that Oracle hasn't abandoned OS X as a platform. Feature set aside, I suspect they'll need to do more frequent releases before many people would be very comfortable using this in an enterprise setting. But this also opens the possibility of different licensing options...Express Edition for OS X, anyone? OSXXE? <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>If someone manages to port this to iPhone, though, let me know. That would rock.</p>
]]></content:encoded>
			<wfw:commentRss>http://only4left.jpiwowar.com/2009/04/os-x-intel-native-10gr2-rdbms-is-here/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fixing file permission problems on Grid Control targets</title>
		<link>http://only4left.jpiwowar.com/2009/01/fix-gc-file-perms/</link>
		<comments>http://only4left.jpiwowar.com/2009/01/fix-gc-file-perms/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 21:33:33 +0000</pubDate>
		<dc:creator>jpiwowar</dc:creator>
				<category><![CDATA[EBS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[Oracle misc]]></category>
		<category><![CDATA[Grid Control]]></category>
		<category><![CDATA[monitoring]]></category>

		<guid isPermaLink="false">http://only4left.jpiwowar.com/?p=64</guid>
		<description><![CDATA[When installing Grid Control on a Linux or Unix platform, a recommended practice is to install the monitoring agent software as a user that doesn’t own the ORACLE_HOMEs to be monitored. This poses a challenge when configuring monitoring for some targets, particularly those based on Oracle Application Server 10g. This post lists some changes you can make to work around a variety of target discovery and metric collection errors.]]></description>
			<content:encoded><![CDATA[<p>When installing Grid Control agents on a Linux or Unix platform, a <a href="http://www.oracle.com/technology/products/oem/pdf/Security_Paper_OOW_06.pdf" title="Grid Control Security Best Practices">recommended practice</a> is to install as a user that doesn't own the ORACLE_HOMEs to be monitored.  This poses a challenge when configuring monitoring for some targets, particularly those based on Oracle Application Server 10g.  For security purposes, file and directory permissions on some ORACLE_HOMEs are fairly restrictive, and the Grid Control agent can't read all of the files necessary for target discovery and metric collection.  The Grid Control release notes <a href="http://download.oracle.com/docs/cd/B16240_01/doc/doc.102/e10552/toc.htm#sthref81" title="Grid Control 10gR4 Release notes for Linux and Windows">mention this complication</a>, and <a href="https://metalink2.oracle.com/metalink/plsql/showdoc?db=NOT&#038;id=437078.1" title="Metalink Note 437078.1">Metalink Note 437078.1</a> provides additional suggestions for resolving discovery and metric collection errors related to file permission restrictions on a target ORACLE_HOME.  I can't reveal the content of the <del>Metalink</del> My Oracle Support Note, and the information in the publicly-available Release Notes provides inadequate coverage, but the overall problem-solving method reduces to:</p>
<ol>
<li>Make sure that the owner of the agent software is in the same group as the owner of the monitored target software</li>
<li>Check the agent log files for file permission errors, and fix them.</li>
</ol>
<p>My experience so far indicates that fixing some errors tends to reveal others.  Who doesn't love a rousing game of log file <a href="http://en.wikipedia.org/wiki/Whac-A-Mole#Colloquial_usage" title="Wikipedia: Whac-a-mole">whack-a-mole? </a>  In the interest of saving others a few rounds of this, I'm offering up a few additional permission change steps that could make your lives easier.  For ease of navigation, I've broken things into the following sections:</p>
<ul>
<li><a href="#10gAS">Oracle Application Server</a></li>
<li><a href="#db">Database targets</a></li>
<li><a href="#ocs">Oracle Collaboration Suite Calendar Server</a></li>
<li><a href="#ebs">E-Business Suite</a></li>
</ul>
<p>Disclaimer: When considering making the changes I describe below, please consider the trade-off you are making:  more robust monitoring at the expense of <i>some</i> level of security.  The perceived degree of sacrifice will vary from person to person and organization to organization.  I would argue that the benefits outweigh the risks, and since Oracle itself suggests similar changes, this is clearly not a cut-and-dried issue.  Hey, if doing the right thing were always easy, this job wouldn't be any fun, right? <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Please feel free to leave any similar tips (or links to your own posts about this topic) in the comments.</p>
<h3 id="10gAS">Oracle Application Server</h3>
<p>Note 437078.1 is a good start, but there are a few additional items I found to ease metric collection and discovery errors for Oracle 10g App Server.  ORACLE_HOME refers to the location of the 10gAS software.  Depending on the application server components installed on your system, you may need to change more or fewer permissions. </p>
<pre class="brush: bash; toolbar: true;">chmod g+rx $ORACLE_HOME/webcache
chmod g+r $ORACLE_HOME/webcache/*.xml
chmod g+rx $ORACLE_HOME/portal
chmod g+rx $ORACLE_HOME/portal/conf
chmod g+rx $ORACLE_HOME/discoverer
chmod g+rx $ORACLE_HOME/discoverer/config
chmod g+rx $ORACLE_HOME/forms
chmod g+rx $ORACLE_HOME/forms/server
chmod g+rx $ORACLE_HOME/ldap
chmod g+rx $ORACLE_HOME/ldap/das
chmod g+rx $ORACLE_HOME/uix
chmod g+rx $ORACLE_HOME/ultrasearch
chmod g+rx $ORACLE_HOME/ultrasearch/webapp
chmod g+rx $ORACLE_HOME/ultrasearch/webapp/config
chmod g+rx $ORACLE_HOME/jpi
chmod g+rx $ORACLE_HOME/jpi/doc
chmod g+rx $ORACLE_HOME/Apache/oradav
chmod g+rx $ORACLE_HOME/Apache/oradav/conf
chmod g+rx $ORACLE_HOME/Apache/jsp
chmod g+rx $ORACLE_HOME/Apache/jsp/conf
chmod g+rx $ORACLE_HOME/Apache/modplsql
chmod g+rx $ORACLE_HOME/Apache/modplsql/conf
chmod g+rx $ORACLE_HOME/sso
chmod g+rx $ORACLE_HOME/sso/conf</pre>
<h3 id="db">Database targets</h3>
<p>Some environments (for example, the 10gAS infrastructure database) will require permission changes to effectively monitor database and listener targets.  You may find the scope of these changes to be a bit broad; at some point I got tired of chasing down individual files and just hit them all with the same hammer. <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   In this case, ORACLE_HOME refers to the ORACLE_HOME of the RDBMS software.</p>
<pre class="brush: bash; toolbar: true;">find $ORACLE_HOME/admin -type d -exec chmod g+rx {} \;
find $ORACLE_HOME/admin -type f -exec chmod g+r {} \;

find $ORACLE_HOME/network -type d -exec chmod g+rx {} \;
find $ORACLE_HOME/network -type f -exec chmod g+r {} \;

find $ORACLE_HOME/rdbms -type d -exec chmod g+rx {} \;
find $ORACLE_HOME/rdbms -type f -exec chmod g+r {} \;

## The following are needed for database health checks to work properly...
chmod g+rx $ORACLE_HOME/dbs
chmod g+rw $ORACLE_HOME/dbs/hc*
</pre>
<p>Another general configuration note for the database listener, which I stumbled upon when setting up monitoring for a Secure Enterprise Search repository database:  If sqlnet.ora is configured with <code>TCP.VALIDNODE_CHECKING=yes</code>, then the server that hosts the Grid Control OMS needs to be added to the list of hosts defined by <code>TCP.INVITED_NODES</code>.  Otherwise, you'll get messages like this when attempting to add the database target, even if all monitoring credentials are correct:</p>
<pre class="brush: bash;">Failed to connect to the database: Io exception: Got minus one from a read call
The Connect Descriptor was (description=(address=(host=ses.myorg.com)(protocol=tcp)(port=xxxx))
(connect_data=(service_name=SESdb)(instance_name=SESdb)(UR=A)))&lt;/pre&gt;
And corresponding messages in the listener log:
&lt;pre&gt;TNS-12546: TNS:permission denied
 TNS-12560: TNS:protocol adapter error
  TNS-00516: Permission denied
</pre>
<p>Of course, after adding the OMS host to <code>TCP.INVITED_NODES</code> in sqlnet.ora, you need to tell the listener that you've made a change before the OMS will be able to connect to the database and add it as a target:</p>
<pre class="brush: bash;">oracle@ses:~&gt; lsnrctl  reload

LSNRCTL for Linux: Version 10.1.0.5.0 - Production on 05-DEC-2008 10:58:45

Copyright (c) 1991, 2004, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ses.myorg.com)(PORT=xxxx)))
The command completed successfully</pre>
<h3 id="ocs">Oracle Collaboration Suite Calendar Server</h3>
<p>These commands will resolve some issues with metric collection for OCS Calendar Server.  I suspect that the intersection of Collaboration Suite administrators (a small set) and readers of this blog (a vanishingly small set) is probably zero, but Google works in mysterious ways.  ORACLE_HOME refers to the OCS software location, not the Grid Control agent home.</p>
<pre class="brush: bash; toolbar: true;">chmod g+rx $ORACLE_HOME/ocal/bin
chmod g+rx $ORACLE_HOME/ocal/bin/uniwho
chmod g+rx $ORACLE_HOME/ocal/bin/unireqdump
chmod g+rx $ORACLE_HOME/ocal/bin/uniping
chmod g+rx $ORACLE_HOME/ocal/bin/unistatus
chmod g+rx $ORACLE_HOME/ocal/sbin
chmod g+rx $ORACLE_HOME/ocal/sbin/who
chmod g+rx $ORACLE_HOME/ocal/sbin/reqdump
chmod g+rx $ORACLE_HOME/ocal/sbin/ping
chmod g+rx $ORACLE_HOME/ocal/sbin/status
chmod g+rx $ORACLE_HOME/ocal/oem
chmod g+rx $ORACLE_HOME/ocal/oem/scripts
chmod g+rx $ORACLE_HOME/ocal/oem/scripts/ocal_ps.pl
chmod g+rx $ORACLE_HOME/ocal/oem/scripts/ocal_dbsize.pl
chmod g+rx $ORACLE_HOME/ocas
chmod g+rx $ORACLE_HOME/ocas/linkdb
chmod g+rx $ORACLE_HOME/ocas/sessiondb
chmod g+rx $ORACLE_HOME/lib
chmod g+rx $ORACLE_HOME/ocal/lib
chmod g+r $ORACLE_HOME/ocal/lib/*.so
chmod g+rx $ORACLE_HOME/ocal/db
chmod g+rx $ORACLE_HOME/ocal/db/nodes
find $ORACLE_HOME/ocal/db/nodes -type d -exec chmod g+rx {} \;
find $ORACLE_HOME/ocal/db/nodes -type f -exec chmod g+r {} \;
</pre>
<h3 id="ebs">E-Business Suite</h3>
<p>Setting these permissions in an E-Business Suite R12 instance resolved some metric collection errors of the form
<pre>Couldn't open INST_TOP/ora/10.1.3/j2ee/oafm/application-deployments/oafm/orion-application.xml: Permission denied at AGENT_HOME/sysman/admin/scripts/ias/simpleXPath.pm line 116</pre>
<p>  These errors may not manifest in 11i, since that version's tech stack is not based on 10gAS.  INST_TOP is the "Instance TOP" environment variable for the R12 Apps installation, and serves as a reminder to connect as the Apps owner (not database software owner) to run these commands.</p>
<pre class="brush: bash; toolbar: true;">chmod g+r $INST_TOP/ora/10.1.3/j2ee/forms/config/jms.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/forms/application-deployments/forms/orion-application.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/forms/application-deployments/forms/formsweb/orion-web.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/oacore/config/jms.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/oacore/application-deployments/oacore/orion-application.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/oacore/application-deployments/oacore/html/orion-web.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/oafm/config/jms.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/oafm/application-deployments/oafm/orion-application.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/oafm/application-deployments/oafm/webservices/orion-web.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/oafm/application-deployments/mapviewer/orion-application.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/oafm/application-deployments/mapviewer/web/orion-web.xml
chmod g+r $INST_TOP/ora/10.1.3/j2ee/oafm/application-deployments/ascontrol/orion-application.xml
</pre>
]]></content:encoded>
			<wfw:commentRss>http://only4left.jpiwowar.com/2009/01/fix-gc-file-perms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Two OCP exam mini-reviews:  1Z0-040 (10g DBA New Features) and 1Z0-238 (R12 Install, Patch and Maintain)</title>
		<link>http://only4left.jpiwowar.com/2008/10/ocp-exam-reviews-1z0-040-and-1z0-238/</link>
		<comments>http://only4left.jpiwowar.com/2008/10/ocp-exam-reviews-1z0-040-and-1z0-238/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 06:18:30 +0000</pubDate>
		<dc:creator>jpiwowar</dc:creator>
				<category><![CDATA[EBS]]></category>
		<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[10g]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[R12]]></category>

		<guid isPermaLink="false">http://only4left.jpiwowar.com/?p=48</guid>
		<description><![CDATA[Here are my impressions of two Oracle certification exams I've had the opportunity to take in the past few months:  <a href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=41&#038;p_exam_id=1Z0_040" title="1Z0-040">1Z0-040 (Oracle Database 10g: New Features for Administrators)</a>, and the beta version of <a href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=41&#038;p_exam_id=1Z0_238" title="1Z0-238">1Z0-238 (Oracle EBS R12: Install, Patch and Maintain Applications)</a>]]></description>
			<content:encoded><![CDATA[<p>Here are my impressions of two Oracle certification exams I've had the opportunity to take in the past few months:  <a href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=41&#038;p_exam_id=1Z0_040" title="1Z0-040">1Z0-040 (Oracle Database 10g: New Features for Administrators)</a>, and the beta version of <a href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=41&#038;p_exam_id=1Z0_238" title="1Z0-238">1Z0-238 (Oracle EBS R12: Install, Patch and Maintain Applications)</a>.  </p>
<h3>1Z0-040: Less painful than upgrading to Vista (cheaper, too)</h3>
<p>For the most part, the upgrade path to 10g DBA OCP seems easier than starting from scratch.  Compared to the two (<a href="http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=231" title="New 10g OCA/OCP exam requirement">soon to be three</a>) exams and shelling out for classroom instruction required for the regular certification path, a single exam with no classroom instruction requirement seems like a piece of cake.  Of course, to take the upgrade exam, you have to have a prior OCP DBA certification, which means you've already been down that "class plus several exams" road.</p>
<p>What evens out the effort even further is this:  It's an upgrade exam.  You aren't going to be tested on just "standard DBA material" as you would be in the regular exam track.  You have to care about the new stuff, and you have to care a lot.  Don't use VPD or audit features?  Still using normal filesystems and regular files to store your data, instead of ASM?  Doesn't matter!  For this exam, you need to concentrate on new features.  You also need to care about the differences between versions of features you might not have been using in 9i <i>or</i> 10g.</p>
<p>There's nothing wrong with that.  It's only fair that reinforcing and testing knowledge of new features is the primary purpose of an upgrade exam.  If you're already a 9i OCP DBA, the upgrade exam is an opportunity to demonstrate your skills as a 10g DBA, not a 9i DBA who uses 10g as if it were 9i.  Otherwise, you're not using all the tools at your disposal, or, even worse, you could be using them wrong.  </p>
<p>Although the exam only covers new features, it's not a trivia quiz.  You're much more likely to see questions about ASM, new RMAN features, and install/upgrade procedures than questions about obscure initialization parameters and system catalog views.  There <i>is</i> a little bit of everything on the exam, though, so it's still useful to be prepared.  Besides, there's a benefit to preparing for an exam that tests you exclusively on new features: you're more likely to learn new things.  I even learned a thing or two about RMAN during my exam prep, a tool I thought I already knew pretty well.  Speaking of prep material, here's what I used to get ready for the exam:  </p>
<ul>
<li><a href="http://www.amazon.com/OCP-Features-Administrators-1Z0-040-Certification/dp/0782143555/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1225259341&#038;sr=1-1" title="Oracle 10g New Features study guide">The Sybex Oracle 10g New Features for Administrators Study Guide</a></li>
<li>Tim Hall's <a href="http://www.oracle-base.com/articles/10g/Articles10g.php#ocp" title="That was a *lot* of work">great collection</a> of 10g OCP upgrade material</li>
<li>A test database to play with those features I didn't otherwise use very often. </li>
</ul>
<h3 id="beta">1Z1-238: Oh, hey, just one more question...</h3>
<p>In a few days, the beta period for this exam expires, and 1Z1-238 becomes 1Z0-238.  Some of the following commentary may therefore have a very short "relevance half-life."  <i>Update:  As of 21 January 2009, the production version of this exam is now live.  The Oracle Certification blog <a href="http://blogs.oracle.com/certification/2009/01/now_live_oracle_ebs_r12_instal.html" title="Oracle Certification blog 1Z0-238 announcement">has more details</a>.</i></p>
<p>In some television game shows, there's the concept of a "<a href="http://en.wikipedia.org/wiki/Lightning_round">lightning round</a>": answer as many questions/perform as many tasks as rapidly as you can in a short period of time, with lots of dramatic buildup.  Not much time to think, and the more correct completions you get, the greater the reward.</p>
<p>Imagine a "lightning round" that goes on for three hours, and you have a rough idea of what it's like to take an Oracle Certification Beta Exam.  Non-beta exams have a smaller time allotment, but also substantially fewer questions, such that one usually has an average of 1.3-1.5 minutes to spend on each question.  Beta exams allow an average of less than a minute per question, and even though many of the questions can be answered very quickly, even a few "slow questions" can make the experience feel a bit rushed.  Since the point of a beta exam is to "test the test," it's not surprising that there were a handful of questions that would rate as fiendishly difficult.  There were also a few that were not difficult, just genuinely incomprehensible.  In those cases, I used the comment feature to point out where a question could benefit from some editing.</p>
<p>In contrast to the 10g Database New Features exam, the R12 Install, Patch, and Maintain exam is not an upgrade exam.  If you've taken the 11i version of this exam, a lot of the material will be familiar.  The twist, of course, is that there *are* differences between R12 and 11i.  Naturally, some of the questions covered material that was new in R12, and others of the questions were clearly crafted to highlight the differences between the versions.  There were a few times that I had to change my answers when I realized that I'd answered a question in a way that was correct for 11i, but not for R12.  As the title of the exam suggests, you can expect lots of questions about patching procedures, Apps directory structures, and using the various AD utilities.  </p>
<p>One last odd thing about taking a beta exam is the <a href="http://blogs.oracle.com/certification/2008/10/beta_exams_why_dont_i_get_the.html" title="We don't know your score either">lack of instant feedback on the exam</a>.  Though I feel pretty confident about my performance, I have no idea if I passed this exam.  I certainly have less experience with R12 than with 11i, and with 200+ questions I quickly lost track of any "gut feel" for how many questions I was getting wrong.  Regardless, with a 10-week wait after the close of the beta period, it's looking like I won't know the verdict until sometime next year.  Ah well, good experience either way.</p>
<h3>That's a wrap</h3>
<p>If you have questions about these exams, please ask in the comments.  Also, here are some excellent resources for those interested in a broader range of Oracle certification topics:</p>
<ul>
<li>Oracle's official <a href="http://blogs.oracle.com/certification/" title="">Certification blog</a></li>
<li>Mohan Dutt's <a href="http://ebizocp.blogspot.com/" title="OCP Advisor">OCP Advisor blog</a></li>
<li>The <a href="http://forums.oracle.com/forums/forum.jspa?forumID=459&#038;start=0" title="Oracle Technet Forums">OTN Certification Forum</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://only4left.jpiwowar.com/2008/10/ocp-exam-reviews-1z0-040-and-1z0-238/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Unravelling TNS-03505 with database lookups in Oracle Internet Directory</title>
		<link>http://only4left.jpiwowar.com/2008/10/unravelling-tns-0350-in-oid/</link>
		<comments>http://only4left.jpiwowar.com/2008/10/unravelling-tns-0350-in-oid/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 04:07:30 +0000</pubDate>
		<dc:creator>jpiwowar</dc:creator>
				<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[OID]]></category>
		<category><![CDATA[WowThatWasDumb]]></category>

		<guid isPermaLink="false">http://only4left.jpiwowar.com/?p=38</guid>
		<description><![CDATA[I was playing around with using Oracle Internet Directory to resolve database service names recently, and it turned into an adventure.  Not exactly a memoir-inspiring adventure, but at least one worth blogging about.  Maybe my little voyage of discovery here will help someone else who gets a TNS-03505 when using LDAP to look [...]]]></description>
			<content:encoded><![CDATA[<p>I was playing around with using Oracle Internet Directory to resolve database service names recently, and it turned into an adventure.  Not exactly a memoir-inspiring adventure, but at least one worth blogging about.  Maybe my little voyage of discovery here will help someone else who gets a TNS-03505 when using LDAP to look up database service names.</p>
<h3 id="setup">The Setup</h3>
<p>My "lab" in this case consisted of two VM servers, running Oracle Enterprise Linux 5.  Both Oracle installations are "plain vanilla," no additional patching other than what was required to get the non-OID database server from 10.2.0.1 to 10.2.0.4. </p>
<table>
<tr style="font-weight:bold">
<td></td>
<td>OID server </td>
<td>"normal" database server</td>
</tr>
<tr>
<td style="font-weight:bold">Hostname </td>
<td>garibaldi</td>
<td>vir</td>
</tr>
<tr>
<td style="font-weight:bold">Software &amp; version</td>
<td>10gAS 10.1.2.0.2 (OIM 10.1.4)</td>
<td>RDBMS 10.2.0.4</td>
</tr>
<tr>
<td style="font-weight:bold">SID</td>
<td>OIM</td>
<td>JPTEST</td>
</tr>
</table>
<h3 id="tests">The tests</h3>
<p>First, I registered the JPTEST database with OID in the custom Oracle Context dc=jep,dc=com.  Based on that statement alone, you may already know where this is going.  <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   In order to test the registration, I confirmed that that the client software on the database server was set up to consult OID first for name resolution.  Then, I confirmed that I could ping the JPTEST database from its own host:</p>
<pre class="brush: bash;">oracle@vir ~]$ grep NAMES $TNS_ADMIN/sqlnet.ora
NAMES.DIRECTORY_PATH= (LDAP,TNSNAMES,EZCONNECT)
[oracle@vir ~]$ tnsping JPTEST

TNS Ping Utility for Linux: Version 10.2.0.4.0 - Production on 05-OCT-2008 15:12:11

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/rdbms/10gR2/network/admin/sqlnet.ora

Used LDAP adapter to resolve the alias
Attempting to contact (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=vir.local)(PORT=1563))(CONNECT_DATA=(SERVICE_NAME=JPTEST.dbdomain)))
OK (0 msec)</pre>
<p>So far, so good.  Next, I checked to see if I could resolve other database service names.  I only had 1 other database server running, the OID repository, so:</p>
<pre class="brush: bash;">[oracle@vir ~]$ tnsping OIM

TNS Ping Utility for Linux: Version 10.2.0.4.0 - Production on 05-OCT-2008 15:14:02

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/rdbms/10gR2/network/admin/sqlnet.ora

TNS-03505: Failed to resolve name</pre>
<p>...Huh.</p>
<p>Hopping over to the OID server, I saw the following:</p>
<pre class="brush: bash;">[oracle@garibaldi ~]$ tnsping OIM

TNS Ping Utility for Linux: Version 10.1.0.5.0 - Production on 05-OCT-2008 15:28:22

Copyright (c) 1997, 2003, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/OIM/network/admin/sqlnet.ora

Used LDAP adapter to resolve the alias
Attempting to contact (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=garibaldi.local)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OIM.local)))
OK (10 msec)</pre>
<p>Okay, that looks good, but:</p>
<pre class="brush: bash;">[oracle@garibaldi ~]$ tnsping JPTEST

TNS Ping Utility for Linux: Version 10.1.0.5.0 - Production on 05-OCT-2008 15:28:29

Copyright (c) 1997, 2003, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/OIM/network/admin/sqlnet.ora

TNS-03505: Failed to resolve name</pre>
<p>Okay, so these servers can see themselves, but not each other. Neato!</p>
<h3 id="explanation">The explanation</h3>
<p>The error message implies a lookup problem, not a connectivity problem. Clearly, both clients can connect to the OID server...they're just not finding their targets.  That suggests the targets are not defined similarly in the LDAP directory.  What does ldapsearch say?</p>
<pre class="brush: bash;">[oracle@vir ~]$ ldapsearch -h garibaldi.local -p 389 -s sub  orclservicetype=DB | egrep ^cn
cn=OIM,cn=OracleContext
cn=OIM
cn=JPTEST,cn=OracleContext,dc=jep,dc=com
cn=JPTEST
</pre>
<p>Aha.  The entries are in different Oracle contexts.  Had I not decided to create a custom Oracle context, and just registered my JPTEST database in the default context, I wouldn't have this situation (or this blog post).  Just for fun, let's confirm that the clients on the two servers are configured to look in different places.</p>
<p>On the database server:</p>
<pre class="brush: bash;">[oracle@vir ~]$ grep CONTEXT $TNS_ADMIN/ldap.ora
DEFAULT_ADMIN_CONTEXT = &quot;dc=jep,dc=com&quot;</pre>
<p>And the OID server:</p>
<pre class="brush: bash;">[oracle@garibaldi ~]$ grep CONTEXT $TNS_ADMIN/ldap.ora
grep: /u01/app/oracle/product/OIM/network/admin/ldap.ora: No such file or directory</pre>
<p>Oops.  That's not where ldap.ora lives in the default OID install...</p>
<pre class="brush: bash;">[oracle@garibaldi ~]$ grep CONTEXT $ORACLE_HOME/ldap/admin/ldap.ora
DEFAULT_ADMIN_CONTEXT = &quot;&quot;
</pre>
<p>There we go.  The client on the database server is searching in my custom context, and lookups on the OID server start at the root context.</p>
<h3 id="resolutions">Solutions and closing rambling</h3>
<p>Here's my quick and dirty solution to my problem.  Note that I'm working in a test system, and this may be too dirty for use in a production configuration. <img src='http://only4left.jpiwowar.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   </p>
<p>Since I plan to register the rest of my databases in the custom context, rather than dumping them in the root context, an easy way to make it possible to connect to the OIM database via LDAP naming from non-local clients is to create an alias to the OIM entry in my custom context:</p>
<pre class="brush: bash;">[oracle@garibaldi ~]$ ldapadd -p 389 -h garibaldi.local -f OIM_alias.ldif -q -v -D cn=orcladmin
Please enter bind password:
add objectclass:
	alias
add aliasedObjectName:
	cn=OIM, cn=OracleContext
adding new entry cn=OIM, cn=OracleContext, dc=jep, dc=com
modify complete</pre>
<p>Now, from my database server: </p>
<pre class="brush: bash;">[oracle@vir ~]$ tnsping OIM

TNS Ping Utility for Linux: Version 10.2.0.4.0 - Production on 06-OCT-2008 10:36:57

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/rdbms/10gR2/network/admin/sqlnet.ora

Used LDAP adapter to resolve the alias
Attempting to contact (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=garibaldi.local)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OIM.local)))
OK (0 msec)
</pre>
<p>Yay, half a problem solved!  Still, I'm more or less stuck when performing searches from the OID server.  One option is to use the full DN to access the server:  </p>
<pre class="brush: bash;">[oracle@garibaldi ~]$ tnsping cn=JPTEST,cn=OracleContext,dc=jep,dc=com

TNS Ping Utility for Linux: Version 10.1.0.5.0 - Production on 07-OCT-2008 14:33:52

Copyright (c) 1997, 2003, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/OIM/network/admin/sqlnet.ora

Used LDAP adapter to resolve the alias
Attempting to contact (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=vir.local)(PORT=1563))(CONNECT_DATA=(SERVICE_NAME=JPTEST.dbdomain)))
OK (20 msec)</pre>
<p>That works, but if I wanted to type that much, I'd just use EZConnect.    I could also create a second ldap.ora in $ORACLE_HOME/network/admin on the OID server, with a non-root value (dc=jep,dc=com) for DEFAULT_ADMIN_CONTEXT, and set the LDAP_ADMIN environment variable to point to the alternate file as needed.  That would be okay (barely) for a one-user test setup like this, but in the real world it's a recipe for unacceptable levels of confusion.</p>
<p>It seemed reasonable to expect (to me, anyway...maybe I just expect too much) that specifying the root context as the default for LDAP searches would make it possible to find a database further down the tree, but apparently not.  After some looking around on <del>Metalink</del> My Oracle Support, I found that I may be hitting a <a href="https://metalink.oracle.com/metalink/plsql/showdoc?db=NOT&#038;id=5725069.8" title="Metalink Note 5725069.8">bug</a> that's fixed in <a href="https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=6890831" title="11gR1 database server patchset 1">the 11.1.0.7 RDBMS patchset</a>.  But either I'm reading the note wrong, or I don't have the problem as described.  Here's lookup attempt from a different server with a patched 11gR1 client...still no joy:</p>
<pre class="brush: bash;">
[oracle@lyta ~]$ grep CONTEXT $TNS_ADMIN/ldap.ora
DEFAULT_ADMIN_CONTEXT = &quot;&quot;
[oracle@lyta ~]$ tnsping JPTEST

TNS Ping Utility for Linux: Version 11.1.0.7.0 - Production on 07-OCT-2008 14:55:18

Copyright (c) 1997, 2008, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/client/11gR1/network/admin/sqlnet.ora

TNS-03505: Failed to resolve name
</pre>
<p>I'd welcome any comments with alternate solutions, explanations, or a gentle "Hey, idiot, you're doing it wrong!" for what's going on here.  I can live with the setup I have now in my test environment, but I'm always ready to learn something new. </p>
]]></content:encoded>
			<wfw:commentRss>http://only4left.jpiwowar.com/2008/10/unravelling-tns-0350-in-oid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
