<?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>Devon Hillard&#039;s Digital Sanctuary &#187; oracle</title>
	<atom:link href="http://www.digitalsanctuary.com/tech-blog/tag/oracle/feed" rel="self" type="application/rss+xml" />
	<link>http://www.digitalsanctuary.com/tech-blog</link>
	<description>Java, ATG, Seam, and related Technologies</description>
	<lastBuildDate>Mon, 30 Jan 2012 23:04:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Spark::red 2011 Review and 2012 Preview</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/sparkred-2011-review-and-2012-preview.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/sparkred-2011-review-and-2012-preview.html#comments</comments>
		<pubDate>Tue, 27 Dec 2011 06:14:19 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[commerce]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Spark::red]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=910</guid>
		<description><![CDATA[2011 has been an amazing year for Spark::red ATG Oracle Commerce Hosting. We&#8217;ve added several new clients (including a well known member of the Fortune 1000!) We&#8217;ve added 101 new dedicated servers and over 20 cloud computing instances We&#8217;ve opened &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/atg/sparkred-2011-review-and-2012-preview.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>2011 has been an amazing year for <a title="Sparkred ATG Hosting" href="https://www.sparkred.com" target="_blank">Spark::red ATG Oracle Commerce Hosting</a>.</p>
<ul>
<li>We&#8217;ve added several new clients (including a well known member of the Fortune 1000!)</li>
<li>We&#8217;ve added 101 new dedicated servers and over 20 cloud computing instances</li>
<li>We&#8217;ve opened an office in Boston</li>
<li>We&#8217;ve earned our PCI Level 1 MSP Certification</li>
<li>We&#8217;ve hired several employees, a large number of contractors, and even picked up an intern!</li>
<li>We&#8217;ve gone from 3 data centers in the USA to 13 data centers and 16 points-of-presence including several international facilities</li>
<li>While our competitors have raised prices, we&#8217;ve managed to keep prices the same or actually reduce them in many places.  All this while providing newer more powerful hardware across the board</li>
<li>We&#8217;ve introduced a new <a href="https://www.sparkred.com/solutions/Oracle_ATG_Commerce_Standard_Hosting_Package.xhtml?cid=10160" target="_blank">Oracle ATG Commerce Standard Hosting Package</a> which provides excellent performance, stability, and security, for a very affordable package price</li>
<li>Served well over 200 TB of content</li>
<li>Partnered with JBoss/Redhat, Oracle, Akamai, Keynote, Knowledge Path, and many other industry leaders in order to provide the absolute best hosting, support, and related services</li>
<li>More more!</li>
</ul>
<div>We&#8217;ve grown a lot in 2011 in every measurable dimension.  Clients, revenue, employees, contractors, servers, bandwidth, offices, processes, every aspect of the business has been growing nicely.</div>
<div></div>
<div>2012 is looking like it will be even bigger!  We have lots of prospective clients, two new international data centers opening in Australia and South America, international clients, new hires, a site redesign, a big sales and marketing push, new free ATG modules and open source code, and lots more!</div>
<div></div>
<div>I&#8217;m very excited about the upcoming year and what it will bring.  If you&#8217;d like to talk to us about what we can do to help you in 2012 give us a <a href="https://www.sparkred.com/about/contact.xhtml" target="_blank">call or email us about your ATG Hosting needs</a>!</div>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/sparkred-2011-review-and-2012-preview.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JBoss JMS Doesn&#8217;t Create Tables with XA Datasource</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/jboss/jboss-jms-doesnt-create-tables-with-xa-datasource.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/jboss/jboss-jms-doesnt-create-tables-with-xa-datasource.html#comments</comments>
		<pubDate>Thu, 01 Jul 2010 20:21:08 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JMS]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=657</guid>
		<description><![CDATA[The JBoss Messaging service (at least on JBoss 4.3 EAP) defaults to using a local Hypersonic database. For production use you&#8217;ll want to switch away from Hypersonic to a real database, such as Oracle (in this example). If you&#8217;re using &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/jboss/jboss-jms-doesnt-create-tables-with-xa-datasource.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The JBoss Messaging service (at least on JBoss 4.3 EAP) defaults to using a local Hypersonic database.  For production use you&#8217;ll want to switch away from Hypersonic to a real database, such as Oracle (in this example).</p>
<p>If you&#8217;re using XA datasources in general, it&#8217;s tempting to go ahead and create the new DefaultDS datasource definition as an XA datasource (like the example one jboss-eap-4.3/docs/examples/jca/oracle-xa-ds.xml ).  However, I&#8217;ve just discovered that if you do that the JMS startup service won&#8217;t successfully create the tables it needs.  The HILOSEQUENCES and TIMERS tables get created by the UUID key generator service, but the JMS table creation silently fails and then you get errors like this:</p>
<pre class="brush: plain; title: ; notranslate">
11:16:32,161 ERROR [ExceptionUtil] ServerPeer[0] startService
java.sql.SQLException: ORA-00942: table or view does not exist
</pre>
<p>Switch the DefaultDS definition to a non-XA version, and it will create all of the JBM_* tables successfully.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/jboss/jboss-jms-doesnt-create-tables-with-xa-datasource.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rant About Core-Based Licensing</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/rant-about-core-based-licensing.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/rant-about-core-based-licensing.html#comments</comments>
		<pubDate>Fri, 23 May 2008 19:43:04 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/?p=118</guid>
		<description><![CDATA[This is a copy of a small rant I just posted on the ATG_Tech Google Group. Please note that ATG isn&#8217;t the only company doing this, Oracle does it, as do many others. I just think that it&#8217;s wrong:) If &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/atg/rant-about-core-based-licensing.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is a copy of a small rant I just posted on the <a href="http://groups.google.com/group/atg_tech/" target="_new">ATG_Tech Google Group</a>.  </p>
<p>Please note that ATG isn&#8217;t the only company doing this, Oracle does it, as do many others.  I just think that it&#8217;s wrong:)</p>
<p>If you draw a graph showing processing power against software license cost for the same software module, over time, you&#8217;d see a steady increase of processing power, a pretty flat cost line for years and years, and then once multi-core hit the server market, you&#8217;d see a huge jump in cost, without a significant change in the climb of performance.</p>
<p>&#8212;&#8212;&#8211;<br />
I think this licensing model is a huge mistake for the customers. </p>
<p>CPU manufacturers changed course from developing faster and faster chips, to developing more and more cores on a given chip at lower clock speeds.  The reason is that it&#8217;s easier, cost-wise and silicon<br />
manufacturing yield-wise, to add cores, and rely on the OS and applications to make use of the multi-cores.  So ideally, the end user sitting in front of their computer will see a similar level of<br />
performance increase as chips go wider, as they would have had chip manufacturer continued the megahertz wars.  While at the same time, the cost of that increased performance to the chip manufacturers is less.  (also there was an approaching barrier of how low you can shrink the die size without moving to a whole other base material, and power dissipation issues). </p>
<p>Intel released their 2.2 GHz Pentium in January of 2002.  Current Intel dual and quad core processors don&#8217;t really exceed 3.0 GHz, and many new chips are still being released in 2.2, 2.4, 2.6 GHz core<br />
speeds.  So in 6 years, based on an 18-month Moore&#8217;s Law cycle (yes, I know Moore&#8217;s Law is about transistor density not computation speed, but for the sake of estimation, it&#8217;s pretty close to how the industry was progressing with clock speed before the shift to multi-cores), in the alternate universe of single core chips, we&#8217;d expect to see 35.2 GHz chips.  With a 24 months cycle it would be 17.6 GHz.  At least I think that&#8217;s how the math works.  At any rate, our current multi-core processors don&#8217;t provide any additional performance based on the performance per CPU we should expect at the current time, based on the history of CPU performance increases. </p>
<p>The problem here is that now ATG (and other per-core licensing products) customer are paying up to 2X more money in licensing cost for very similar (if not the same) levels of performance than if they CPUs had just gotten faster. </p>
<p>You could make the case that for the work of handing request threads, two 3.0 GHz cores perform a bit better than a single 6.0 GHz (or 17.4 GHz) core, but honestly it&#8217;s really hard to say, since we don&#8217;t have 6.0 GHz cores readily available to test ATG on.  I&#8217;d be VERY surprised if the performance was more than 10% different.  And yet we have to pay far more for it. </p>
<p>Customers of ATG/Oracle/etc&#8230; are being penalized for the (legitimate) decisions of Intel and AMD.<br />
&#8212;&#8212;-</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/rant-about-core-based-licensing.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Oracle Export (exp) and Initial Extent Size Issues</title>
		<link>http://www.digitalsanctuary.com/tech-blog/database/oracle-export-exp-and-initial-extent-size-issues.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/database/oracle-export-exp-and-initial-extent-size-issues.html#comments</comments>
		<pubDate>Sat, 08 Mar 2008 11:18:58 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[exp]]></category>
		<category><![CDATA[extent]]></category>
		<category><![CDATA[imp]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/database/oracle-export-exp-and-initial-extent-size-issues.html</guid>
		<description><![CDATA[If you have a large database in Oracle, with a tablespace with say 2 gigabytes worth of data in it, and you then go in a delete a large number of rows from a large number of tables, and shrink &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/database/oracle-export-exp-and-initial-extent-size-issues.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you have a large database in Oracle, with a tablespace with say 2 gigabytes worth of data in it, and you then go in a delete a large number of rows from a large number of tables, and shrink it down to about 300 megabytes worth of data, and then you create an Oracle export using exp, you might expect you could then import this Oracle dump file, into another database, and have it take up 300 MB.  </p>
<p>You&#8217;d be wrong.</p>
<p>The dump file ends up with all of the create table and create index commands using an INITIAL extent storage setting based on the size of the old table at its fullest.  So when you run the import of the dump file, it basically eats up 2 gigabytes of tablespace for 300 MB of data.  You can&#8217;t edit the INITIAL values in the dump file, since it&#8217;s binary, and if you edit it, you corrupt it.  Oracle doesn&#8217;t seem to have any great ways to fix this, so here&#8217;s my hack:</p>
<ol>
<li>Do the full export, with compress=n (this is useful regardless).</li>
<li>Generate a create tables script (I used my SQLDeveloper GUI client) that just creates the tables (no INITIAL settings)</li>
<li>Generate a create constraints script (I used my SQLDeveloper GUI client) that just creates constraints/indexes</li>
<li>Run the create tables script on the new database</li>
<li>Run the import with these options: ignore=yes constraints=no indexes=no</li>
<li>Run the create constraints script</li>
</ol>
<p>Now you have a 300 MB database.  If you export from this, you end up with an export file that will create other 300 MB databases and you can share it with your friends.</p>
<p>Good luck!</p>
<p>P.S.  Oracle DBAs might have a better way of doing this.  I don&#8217;t know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/database/oracle-export-exp-and-initial-extent-size-issues.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>An Easy Way to Drop All of the Tables in Your Tablespace in Oracle</title>
		<link>http://www.digitalsanctuary.com/tech-blog/database/an-easy-way-to-drop-all-of-the-tables-in-your-tablespace-in-oracle.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/database/an-easy-way-to-drop-all-of-the-tables-in-your-tablespace-in-oracle.html#comments</comments>
		<pubDate>Sat, 08 Mar 2008 11:11:34 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[drop]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tables]]></category>
		<category><![CDATA[tablespace]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/general/an-easy-way-to-drop-all-of-the-tables-in-your-tablespace-in-oracle.html</guid>
		<description><![CDATA[run this command: select 'drop table ', table_name, 'cascade constraints;' from user_tables; Then copy the output and run that as a sql script.]]></description>
			<content:encoded><![CDATA[<p>run this command:</p>
<pre lang="sql">select 'drop table ', table_name, 'cascade constraints;' from user_tables;</pre>
<p>Then copy the output and run that as a sql script.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/database/an-easy-way-to-drop-all-of-the-tables-in-your-tablespace-in-oracle.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle PL/SQL Loop to Update Fields with Periodic Commits</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/atg/oracle-plsql-loop-to-update-fields-with-periodic-commits.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/atg/oracle-plsql-loop-to-update-fields-with-periodic-commits.html#comments</comments>
		<pubDate>Wed, 06 Feb 2008 00:38:01 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/general/oracle-plsql-loop-to-update-fields-with-periodic-commits.html</guid>
		<description><![CDATA[Have you ever had one of those moments where you&#8217;ve just completed importing 1.7 million user records from flat files into an normalized set of ATG Personalization tables, plus some custom tables, and you only then realize that the passwords &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/atg/oracle-plsql-loop-to-update-fields-with-periodic-commits.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Have you ever had one of those moments where you&#8217;ve just completed importing 1.7 million user records from flat files into an normalized set of ATG Personalization tables, plus some custom tables, and you only then realize that the passwords from the old system, while in the compatible md5sum format, are all UPPERCASE, while ATG uses all lowercase hashes?</p>
<p>It&#8217;s not a great moment.</p>
<p>Initially I was stuck in an ATG specific mind-set.  I figured the two possible solutions were as follows:</p>
<ol>
<li>Use the already sub-classed ProfileFormHandler to override the out of the box password comparison and do an uppercase on the hash value before checking it against the database.  Also update the create and update related methods as well to uppercase the hash.</li>
<li>Drop the 1.7 million records.  Update the importer tool to lowercase the incoming md5 hash before persisting it.</li>
</ol>
<p>The issue with option 1 is that it means overriding the perfectly good out of the box behavior of ATG Profiles for the life of the application due to a set of awkward initial data.  I&#8217;m happy to override ATG behavior when I should, but this just felt wrong.</p>
<p>The issue with option 2 is that it would take approx 2-3 days.  The import process was slow and had to be done in small chunks for reasons I won&#8217;t get into now.</p>
<p>It wasn&#8217;t until after sleeping on it that I realized I had put myself into the ATG box unnecessarily.  Let&#8217;s just fix the data in situ.  I didn&#8217;t know much PL/SQL but some Googling (I love how that&#8217;s a common verb now, btw) led me to write up this:</p>
<pre lang="sql">
declare i number := 0;
begin
  for r in (select id from dps_user)
  loop
    update dps_user
       set password = lower(password)
     where id = r.id;
  	i := i+1;
	if mod(i, 10000) = 0 THEN    -- Commit every 10000 records
	      COMMIT;
	end if;
  end loop;
commit;
end;
</pre>
<p>I&#8217;m no Oracle DBA, but it works!  </p>
<p>Essentially it loops through every row in the dps_user table, and replaces the password with an all-lowercase version of itself.  Every 10,000 records it does a commit as the full 1.7 million records would overwhelm the undo tablespace.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/atg/oracle-plsql-loop-to-update-fields-with-periodic-commits.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Why Oracle makes me nuts</title>
		<link>http://www.digitalsanctuary.com/tech-blog/java/why-oracle-makes-me-nuts.html</link>
		<comments>http://www.digitalsanctuary.com/tech-blog/java/why-oracle-makes-me-nuts.html#comments</comments>
		<pubDate>Wed, 18 Jul 2007 15:33:58 +0000</pubDate>
		<dc:creator>Devon</dc:creator>
				<category><![CDATA[ATG]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://www.digitalsanctuary.com/tech-blog/archives/21</guid>
		<description><![CDATA[When left to my own devices I tend to use PostgreSQL or MySQL. They&#8217;re both free, open source, run on every platform I use, and I understand how to use them, tune them, etc&#8230;. However, when I&#8217;m building an application &#8230; <a href="http://www.digitalsanctuary.com/tech-blog/java/why-oracle-makes-me-nuts.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When left to my own devices I tend to use PostgreSQL or MySQL.  They&#8217;re both free, open source, run on every platform I use, and I understand how to use them, tune them, etc&#8230;.  However, when I&#8217;m building an application and database scripts that will be deployed on Oracle, and using an application which doesn&#8217;t really support PostgreSQL or MySQL for production anyhow, I will use Oracle.  I don&#8217;t have much against Oracle really, mostly I just don&#8217;t understand it&#8217;s inner workings very well, and usually I only deal with it when it breaks.</p>
<p>Installing Oracle on Mac OS X has been possible for a while, but has been FAR from easy.  More often than not the installers would throw fatal errors and die horrible deaths.  However, you can now get a pre-packaged Oracle 10 XE installation running on Linux as a downloadable Parallels image.</p>
<p><a href="http://ptn.parallels.com/en/ptn/desc/?VA_id=169" target="_blank">http://ptn.parallels.com/en/ptn/desc/?VA_id=169</a></p>
<p>Which takes a lot of the pain away.  Just download, run, and poof you have a running Oracle 10 instance with a web admin, and you can plug your SQLDeveloper, JBoss, ATG, etc&#8230; into it.</p>
<p>Until it starts throwing errors.   Not Oracle.  Oracle just sits there happily, but  your applications start blowing up.  Not at first, but when you start trying to DO stuff.  Like say running a bunch of install scripts, and it starts failing 1/2 way through.  I finally tracked it down as a known issue, mentioned on a few blogs like this one:</p>
<p><a href="http://it.newinstance.it/2007/06/01/ora-12519-tnsno-appropriate-service-handler-found/" target="_blank">http://it.newinstance.it/2007/06/01/ora-12519-tnsno-appropriate-service-handler-found/</a></p>
<p>So there&#8217;s a hack/fix at least, but come on Oracle!  When your database falls over faster than any open source database you have issues.</p>
<p>This isn&#8217;t an &#8220;I hate Oracle&#8221; rant.  When it comes to huge production systems I&#8217;m not 100% sure I&#8217;d pick anything other than Oracle on Veritas.  But I just wish they made it easier to use all around.  Has anyone seen a very serious production system using PostgreSQL?  I&#8217;m sure they exist, but I haven&#8217;t seen one.   By serious I mean 8,000+ simultaneous jdbc connection, tens thousands of transactions/minutes, tables with 10+ million rows, and queries that do multi table joins across tables of that size, and tested disk, hardware, and server failover.  I&#8217;m not doubting that it can be done, but who&#8217;s doing it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digitalsanctuary.com/tech-blog/java/why-oracle-makes-me-nuts.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/33 queries in 0.007 seconds using disk: basic
Object Caching 627/701 objects using disk: basic

Served from: www.digitalsanctuary.com @ 2012-02-04 12:07:50 -->
