<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5732889</id><updated>2012-01-26T11:57:15.041-06:00</updated><category term='print.css'/><category term='asp.net-css'/><category term='pl/sql packages'/><category term='web'/><category term='Outlook'/><category term='sqlplus'/><category term='firefox'/><category term='oracle monitoring'/><category term='css'/><category term='rails'/><category term='3117'/><category term='pl/sql developer'/><category term='range extender'/><category term='ruby-code.snippet'/><category term='motorcycle'/><category term='helloworld'/><category term='iis'/><category term='windowsmobile'/><category term='arrays'/><category term='commit'/><category term='vmware'/><category term='httpcompression'/><category term='security'/><category term='oracle security'/><category term='example'/><category term='pl/sql'/><category term='models'/><category term='firefox-extension'/><category term='cingular 8125'/><category term='pl/sql tuning'/><category term='networking'/><category term='oracle'/><category term='web security'/><category term='code snippet'/><category term='oracle replication'/><category term='erb9250'/><category term='transparency'/><category term='environment.rb'/><category term='sysdate'/><category term='view'/><category term='html'/><category term='graphic-design'/><category term='pl/sql debugging'/><category term='asp.net'/><category term='katana'/><category term='change password'/><category term='syntax highlighter'/><category term='http compression'/><category term='google'/><category term='ruby'/><category term='SameTime'/><category term='javascript'/><category term='apple'/><category term='pl/sql array'/><category term='instantclient'/><category term='transparent'/><category term='gzip'/><category term='oracle user'/><category term='airport'/><category term='airport extreme'/><category term='firefox-tweaks'/><category term='prototyping'/><category term='oracle performance tuning'/><category term='fieldset'/><category term='rad'/><category term='pl/sql performance tuning'/><category term='rounded corners'/><category term='suzuki katana'/><category term='oracode'/><category term='explain plan'/><category term='merge'/><category term='tnsping'/><category term='assert'/><category term='t-mobile mda'/><category term='suzuki'/><category term='php'/><category term='ajax'/><category term='unix performance'/><category term='jsp'/><category term='multiple column values'/><category term='html-forms'/><category term='activesync'/><category term='oracle sequences'/><category term='seo'/><category term='upsert'/><category term='dbms_output'/><category term='tags'/><category term='blogger'/><category term='outliner'/><category term='sql'/><category term='wireless'/><category term='unix'/><category term='dates'/><category term='partials'/><category term='search'/><category term='pl/sql varray'/><category term='Redirect'/><category term='bulk collect'/><title type='text'>Blog</title><subtitle type='html'>Jason's Rant...I mean Blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5732889.post-6644831194707182088</id><published>2012-01-09T13:33:00.000-06:00</published><updated>2012-01-09T13:36:49.076-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle user'/><category scheme='http://www.blogger.com/atom/ns#' term='change password'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle - Change Password</title><content type='html'>&lt;pre class="brush: sql" name="code"&gt;alter user jvogel identified by "jason.123" replace "jason.456"&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-6644831194707182088?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/6644831194707182088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=6644831194707182088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6644831194707182088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6644831194707182088'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2012/01/oracle-change-password.html' title='Oracle - Change Password'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-767335447841063882</id><published>2012-01-05T11:26:00.001-06:00</published><updated>2012-01-05T11:27:29.198-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle - SQL - Evenly dividing a range of Data using NTILE, MIN, and MAX</title><content type='html'>&lt;b&gt;Problem:&lt;/b&gt;

Over a widely dispersed set of IDs, create 10 evenly divided ranges each in terms of count per group. Determine the ID range for each group.  
 
&lt;br /&gt;
&lt;b&gt;Practical:&lt;/b&gt; We needed to scrub a bunch of data in parallel streams.  The easist answer was to create 10 simultaneous &lt;code&gt;UPDATE&lt;/code&gt;s, but we didn't want the updates stepping on each other.

&lt;br /&gt;
&lt;b&gt;Solution:&lt;/b&gt;

Use &lt;code&gt;NTILE&lt;/code&gt; to create 10 evenly "divided" temporary groups [from a 'rowcount' standpoint].  Use &lt;code&gt;MIN&lt;/code&gt; and &lt;code&gt;MAX&lt;/code&gt; against each temporary group to determine the starting and ending points.

&lt;b&gt;Query:&lt;/b&gt;
&lt;pre class="brush: sql" name="code"&gt;SELECT 
   Quartile,
   MIN("ID") "StartingID",
   MAX("ID") "EndingID",
   COUNT(*) "CountPerGroup"
FROM
   ( 
      SELECT 
         a.contract_payment_id "ID",
         NTILE(10) OVER(ORDER BY a.contract_payment_id) AS quartile
      FROM   
         contract_payment a 
      WHERE
         a.transaction_type_code = 'CC' and 
         a.credit_card_type_code = 'VISA'
         and rownum &lt;= 10000  -- Reduce resultset
 ) 
GROUP BY 
   quartile
ORDER BY 
   1;&lt;/pre&gt;
 
&lt;b&gt;Results:&lt;/b&gt;

&lt;pre&gt;QUARTILE  StartingID  EndingID  CountPerGroup
    1        59261      93271       1000
    2        93281     110492       1000
    3       110512     122382       1000
    4       122391     134062       1000
    5       134072     144371       1000
    6       144372     154481       1000
    7       154482     162741       1000
    8       162752     169163       1000
    9       169173     176913       1000
   10       176921     183833       1000&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-767335447841063882?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/767335447841063882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=767335447841063882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/767335447841063882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/767335447841063882'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2012/01/oracle-sql-evenly-dividing-range-of.html' title='Oracle - SQL - Evenly dividing a range of Data using NTILE, MIN, and MAX'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-55367363846984644</id><published>2011-12-12T11:56:00.000-06:00</published><updated>2011-12-12T11:56:09.651-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SameTime'/><title type='text'>SameTime - Recovering your SameTime BuddyList</title><content type='html'>&lt;b&gt;Under Windows XP... &lt;/b&gt;&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
C:\...\&lt;i&gt;&lt;username&gt;&lt;/username&gt;&lt;/i&gt;\My Documents\SametimeFileTransfers\buddylist.xml&amp;nbsp;&lt;/blockquote&gt;
&lt;b&gt;Under Windows 7...&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
C:\Users\&lt;i&gt;&lt;username&gt;&lt;/username&gt;&lt;/i&gt;\AppData\Roaming\Lotus\Sametime\.metadata\.plugins\com.ibm.collaboration.realtime.imhub\buddylist.xml&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-55367363846984644?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/55367363846984644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=55367363846984644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/55367363846984644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/55367363846984644'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/12/sametime-recovering-your-sametime.html' title='SameTime - Recovering your SameTime BuddyList'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-7804773495009220964</id><published>2011-09-07T14:29:00.002-05:00</published><updated>2011-09-07T15:25:10.338-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle performance tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle - Performance - Timing a Statement</title><content type='html'>Always, start with a fresh database session to remove any caching from previous runs.

&lt;br /&gt;
&lt;pre class="brush: sql" name="code"&gt;connect user/password@database;

set timing on;

select 
	PKG_ACCT_DECRYPTION_FUNCTIONS.f_secure_decrypt(PKG_ACCT_ENCRYPTION_FUNCTIONS.f_secure_encrypt(to_char(sysdate,'mm/dd/yyyy hh24:mi:ss')))
from dual;&lt;/pre&gt;

Also see &lt;a href="/2011/05/oracle-explain-plan.html"&gt;Explain Plan&lt;/a&gt; and &lt;a href="/2006/11/example-using-systimestamp-milliseconds.html"&gt;SysTimeStamp with Milliseconds&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-7804773495009220964?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/7804773495009220964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=7804773495009220964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/7804773495009220964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/7804773495009220964'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/09/oracle-performance-timing-statement.html' title='Oracle - Performance - Timing a Statement'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-6206741659581772873</id><published>2011-09-01T17:27:00.003-05:00</published><updated>2011-09-01T17:29:27.772-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle - Sessions</title><content type='html'>&lt;pre name="code" class="brush: sql"&gt;SELECT
  'Currently, ' 
  || (SELECT COUNT(*) FROM V$SESSION)
  || ' out of ' 
  || VP.VALUE 
  || ' connections are used.' AS "Session Usage"
FROM 
  V$PARAMETER VP
WHERE VP.NAME = 'sessions'
&lt;/pre&gt;

&lt;pre&gt;Currently, 1552 out of 6000 connections are used.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-6206741659581772873?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/6206741659581772873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=6206741659581772873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6206741659581772873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6206741659581772873'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/09/oracle-sessions.html' title='Oracle - Sessions'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-8035853618397384760</id><published>2011-09-01T17:20:00.002-05:00</published><updated>2011-09-01T17:26:18.758-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix performance'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix Notes - System / Kernel Parameters</title><content type='html'>&lt;pre class="brush: shell" name="code"&gt;sysdef -i&lt;/pre&gt;

&lt;pre&gt;pending&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-8035853618397384760?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/8035853618397384760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=8035853618397384760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8035853618397384760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8035853618397384760'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/09/unix-notes-system-kernel-parameters.html' title='Unix Notes - System / Kernel Parameters'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-1170385032071068144</id><published>2011-08-31T12:58:00.001-05:00</published><updated>2011-08-31T12:58:43.265-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix performance'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix Notes - iostat</title><content type='html'>&lt;pre class="brush: shell" name="code"&gt;iostat -x 5 100&lt;/pre&gt;

&lt;pre&gt;                 extended device statistics
device    r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b
md10      1.2   15.2    9.6   19.7  0.1  0.5   &lt;span class="Apple-style-span" style="color: red;"&gt;35.9&lt;/span&gt;   8   8
md11      0.6   15.2    4.8   19.7  0.0  0.5   &lt;span class="Apple-style-span" style="color: red;"&gt;29.9&lt;/span&gt;   0   7
md12      0.6   15.2    4.8   19.7  0.0  0.4   &lt;span class="Apple-style-span" style="color: red;"&gt;28.1&lt;/span&gt;   0   7
md20      0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
md21      0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0&lt;/pre&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-1170385032071068144?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/1170385032071068144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=1170385032071068144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1170385032071068144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1170385032071068144'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/08/unix-notes-iostat.html' title='Unix Notes - iostat'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-1828265978921722158</id><published>2011-08-17T07:24:00.001-05:00</published><updated>2011-08-17T07:25:09.265-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Compiling PL/SQL and Recompiling Dependent Objects</title><content type='html'>&lt;pre class="brush: sql" name="code"&gt;set echo on;
SELECT * FROM user_objects WHERE status = 'INVALID';
set echo off;

Prompt 
Prompt Compiling c:\dispatch_data_obj_body.sql
@c:\dispatch_data_obj_body.sql

Prompt 
Prompt Attempting to recompile any invalid objects 
exec sys.UTL_RECOMP.recomp_serial(schema =&gt; user);

set echo on;
Prompt 
SELECT * FROM user_objects WHERE status = 'INVALID';
set echo off;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-1828265978921722158?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/1828265978921722158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=1828265978921722158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1828265978921722158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1828265978921722158'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/08/compiling-plsql-and-recompiling.html' title='Compiling PL/SQL and Recompiling Dependent Objects'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-7929968827128278402</id><published>2011-08-16T11:03:00.003-05:00</published><updated>2011-08-31T12:58:54.049-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix performance'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix Notes - Server Performance Monitoring with TOP</title><content type='html'>&lt;pre class="brush: shell" name="code"&gt;/usr/local/bin/top&lt;/pre&gt;

&lt;pre&gt;load averages:  1.49,  1.43,  1.52;                    up 0+03:4211:08:29
344 processes: 341 sleeping, 3 on cpu
CPU: 93.9% idle,  5.6% user,  0.5% kernel,  0.0% iowait,  0.0% swap
Memory: 128G phys mem, 33G free mem, 63G swap, 63G free swap

   PID USERNAME LWP PRI NICE  SIZE   RES STATE    TIME    CPU COMMAND
 26167 oracle     1   0    0   64G   64G cpu      0:02 52.42% oracle
 26175 oracle     1   0    0   64G   64G cpu      0:01 24.22% oracle
  4884 oracle     1  59    0 1157M 1153M sleep    4:56 17.69% oracle
 14457 oracle    11  59    0   64G   64G sleep    0:06  7.65% oracle
 14329 oracle    11  59    0   64G   64G sleep    0:12  6.31% oracle
 12036 oracle     1  59    0   64G   64G sleep    0:24  2.34% oracle
  4093 oracle     1  59    0   64G   64G sleep    2:20  1.47% oracle
 12034 oracle    11  59    0   64G   64G sleep    0:05  1.24% oracle
 24352 oracle     1  59    0   64G   64G sleep    0:00  1.08% oracle
 10318 oracle     1  59    0   64G   64G sleep    0:12  1.06% oracle
  4995 oracle     3  43    0   46M   34M sleep    0:33  0.71% tnslsnr
  4527 oracle     1  59    0   64G   64G sleep    0:21  0.55% oracle
  5939 oracle     1  59    0   64G   64G sleep    0:00  0.47% oracle
  8863 oracle     1  59    0   64G   64G sleep    0:07  0.42% oracle
 23943 jvogel     1  59    0 3816K 2832K cpu      0:02  0.38% top
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-7929968827128278402?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/7929968827128278402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=7929968827128278402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/7929968827128278402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/7929968827128278402'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/08/unix-server-performance-monitoring-with.html' title='Unix Notes - Server Performance Monitoring with TOP'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-7865381619390609598</id><published>2011-08-02T10:56:00.000-05:00</published><updated>2011-08-31T12:59:01.546-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix performance'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unit Notes - vmstat (virtual memory statistics)</title><content type='html'>Reference: &lt;a href="http://en.wikipedia.org/wiki/Vmstat"&gt;http://en.wikipedia.org/wiki/Vmstat&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I've formatted the following example to make it a little easier to read.&lt;br /&gt;
&lt;pre&gt;$ vmstat 5
  kthr      memory            page             disk            faults        cpu
 r  b w   swap    free   re   mf   pi  po fr de sr m0 m2 m3 m4  in    sy     cs  us sy id
 3  &lt;span class="Apple-style-span" style="color: red;"&gt;6&lt;/span&gt; 0 9901864 4988152 1312 1293 2295 22 47  0  9  1  0  9  1  831    877    90 49 11 40
 0 &lt;span class="Apple-style-span" style="color: red;"&gt;10&lt;/span&gt; 0 6819504 2078880 1153 5777 4383  5  3  0  0  0  0  1  1 4642 188881 18478 32 12 57
 0  &lt;span class="Apple-style-span" style="color: red;"&gt;9&lt;/span&gt; 0 6813976 2075208 1350 7623 4380  6  6  0  0  0  0  2 18 5293 171861 18412 32 15 53
 0 &lt;span class="Apple-style-span" style="color: red;"&gt;10&lt;/span&gt; 0 6793096 2060464 1587 5025 4361 16 14  0  0  0  0  2  0 5773 192402 19898 31  9 59
 0 &lt;span class="Apple-style-span" style="color: red;"&gt;12&lt;/span&gt; 0 6781504 2046376 1865 8465 4436 16 16  0  0  0  0  7  0 6014 185604 17696 48 11 41
 0 &lt;span class="Apple-style-span" style="color: red;"&gt; 6&lt;/span&gt; 0 6786576 2049600 1269 5981 4369  8  8  0  0  2  0  2  0 5592 203470 21790 35 10 55 
&lt;/pre&gt;In this specific example, we are having issues with &lt;b&gt;&lt;i&gt;blocking&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-7865381619390609598?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/7865381619390609598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=7865381619390609598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/7865381619390609598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/7865381619390609598'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/08/unit-notes-vmstat-virtual-memory.html' title='Unit Notes - vmstat (virtual memory statistics)'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4659036388594487166</id><published>2011-06-23T11:40:00.002-05:00</published><updated>2011-06-23T11:40:43.686-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix Notes - Find a File</title><content type='html'>&lt;b&gt;Related Posting:&lt;/b&gt; To find a string &lt;i&gt;within&lt;/i&gt; a file list, see this &lt;a href="http://jasonvogel.blogspot.com/2011/06/unix-notes-find-string-in-files.html"&gt;post&lt;/a&gt;.
&lt;p /&gt;
Find all the SQL (*.sql) files in the current directory:
&lt;p /&gt;
&lt;pre class="brush: shell" name="code"&gt;
find . -name '*.sql'
&lt;/pre&gt;
&lt;p /&gt;
To hide any [access] errors, include &lt;code&gt;2&gt;/dev/null&lt;/code&gt; at the end of the line.
&lt;p /&gt;
&lt;pre class="brush: shell" name="code"&gt;
find . -name '*.sql' 2&gt;/dev/null
&lt;/pre&gt;
&lt;p /&gt;
To list only files and avoid all directories:
&lt;pre class="brush: shell" name="code"&gt;
find . -type f -name '*.sql' 2&gt;/dev/null
&lt;/pre&gt;
&lt;p /&gt;
Search all directories ('/' is the top level directory reference):
&lt;pre class="brush: shell" name="code"&gt;
find / -type f -name '*.sql' 2&gt;/dev/null
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4659036388594487166?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4659036388594487166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4659036388594487166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4659036388594487166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4659036388594487166'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/06/unix-notes-find-file.html' title='Unix Notes - Find a File'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-8878059855796633919</id><published>2011-06-23T11:31:00.003-05:00</published><updated>2011-06-23T11:33:15.120-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix Notes - Find Text / String in Files</title><content type='html'>From the current directory and down, search for "&lt;code&gt;ldapDelete&lt;/code&gt;" explicitly.  Hide any read/access errors &lt;code&gt;(2&gt;/dev/null)&lt;/code&gt;.

&lt;pre class="brush: shell" name="code"&gt;
find . -exec grep "ldapDelete" '{}' \; -print 2&gt;/dev/null
&lt;/pre&gt;

From the current directory and down, search for "ldapdelete" WITHOUT case sensitivity.

&lt;pre class="brush: shell" name="code"&gt;
find . -exec grep -i "ldapdelete" '{}' \; -print 2&gt;/dev/null
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-8878059855796633919?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/8878059855796633919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=8878059855796633919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8878059855796633919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8878059855796633919'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/06/unix-notes-find-string-in-files.html' title='Unix Notes - Find Text / String in Files'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-8520487699608090064</id><published>2011-06-09T15:23:00.002-05:00</published><updated>2012-01-09T13:36:59.569-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle user'/><category scheme='http://www.blogger.com/atom/ns#' term='change password'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Resetting / unexpiring an Oracle user</title><content type='html'>If you need to reset a user's password, here is a simple sample.&lt;br /&gt;
&lt;br /&gt;
Please note the double quotes around the password.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;It also requires the user to change their password on first login.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: sql" name="code"&gt;select username,account_status from dba_users where username = 'JOEUSER';

alter user JOEUSER identified by "expired.567";
alter user JOEUSER password expire;
alter user JOEUSER account unlock;

select username,account_status from dba_users where username = 'JOEUSER';
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-8520487699608090064?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/8520487699608090064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=8520487699608090064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8520487699608090064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8520487699608090064'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/06/resetting-unexpiring-oracle-user.html' title='Resetting / unexpiring an Oracle user'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4536837895436625317</id><published>2011-06-09T11:47:00.006-05:00</published><updated>2011-06-09T13:04:08.419-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle sequences'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Burning an Oracle Sequence value to raise it above Table Max</title><content type='html'>We have a log table that we use to track miscellaneous behaviors via some triggers for "audit" purposes. The design is fairly simple... on the occurrence of a "monitoring" behavior, &lt;code&gt;INSERT&lt;/code&gt; a row into the &lt;code&gt;AUDIT_LOG&lt;/code&gt; table. The &lt;code&gt;INSERT&lt;/code&gt; grabs a new sequence value and poof, we're good.&lt;br /&gt;
&lt;br /&gt;
Well, not always. Periodically, the &lt;code&gt;MAX&lt;/code&gt; table value exceeds the sequence value. I don't know why/how it happens, but it causes our applications to start throwing errors [as expected]. I wrote a simple query to get the sequence value back above the table ID maximum.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Note:&lt;/i&gt;&lt;/b&gt; you may need to establish the "currval" of the session by burning a "nextval".&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="brush: sql"&gt;select
	-- audit_seq.nextval "Sequence NextVal",
	audit_seq.currval "Sequence CurrVal",
	(select max(AUDIT_LOG.SEQ_NO) from AUDIT_LOG) "Table Max ID",
	case
		when audit_seq.currval &amp;gt;= (select max(AUDIT_LOG.SEQ_NO) from AUDIT_LOG)
			then 'Sequence good'

		when audit_seq.currval &amp;lt; (select max(AUDIT_LOG.SEQ_NO) from AUDIT_LOG)
			then 'Sequence bad, Table Higher by '||( (select max(AUDIT_LOG.SEQ_NO) from AUDIT_LOG) - audit_seq.nextval)
		else
			'wtf'
	end "Sequence Status"
from
	dual
&lt;/pre&gt;&lt;br /&gt;
You may want to reference: &lt;a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/pseudocolumns002.htm#sthref806"&gt;http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/pseudocolumns002.htm#sthref806&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ORA-02287: sequence number not allowed here&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4536837895436625317?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4536837895436625317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4536837895436625317' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4536837895436625317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4536837895436625317'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/06/burning-oracle-sequence-value-to-raise.html' title='Burning an Oracle Sequence value to raise it above Table Max'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-2983196863518687361</id><published>2011-06-07T13:00:00.003-05:00</published><updated>2011-06-07T13:01:57.006-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle replication'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Replication - Disabling it a for a session</title><content type='html'>&lt;pre name="code" class="brush: sql"&gt;
DBMS_REPUTIL.REPLICATION_OFF;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-2983196863518687361?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/2983196863518687361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=2983196863518687361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/2983196863518687361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/2983196863518687361'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/06/oracle-replication-disabling-it-for.html' title='Oracle Replication - Disabling it a for a session'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-1588190969343918382</id><published>2011-05-25T12:48:00.000-05:00</published><updated>2011-09-07T14:34:11.744-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle performance tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='explain plan'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Explain Plan</title><content type='html'>&lt;pre name="code" class="brush: sql"&gt;
set serveroutput on;
clear;

explain plan for
   select
   d.id,
   --d.xml,
   extractValue(d.xml,'/Account/StarId')"StarID",
   extractValue(d.xml,'/Account/Name') "DistributorName",
   NVL(extractValue(d.xml,'/Account/FranchiseCode'),'&lt; Null &gt;') "FranchiseCode"
   from
   genesis_dist_to_ent d
   where
   -- rownum &lt;= 5
   extractValue(d.xml,'/Account/StarId') = '16534' ;

SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());
&lt;/pre&gt;
&lt;p&gt;
&lt;b&gt;Results:&lt;/b&gt;
&lt;/p&gt;
&lt;pre name="code"&gt;
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
| Id  | Operation                    | Name                          | Rows  | B
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |                               | 29002 |
|*  1 |  TABLE ACCESS BY INDEX ROWID | GENESIS_XMLINDEX_PATHTABLE    |   371 |
|*  2 |   INDEX RANGE SCAN           | SYS3119198_GENESIS__PATHID_IX |     4 |
|*  3 |  TABLE ACCESS BY INDEX ROWID | GENESIS_XMLINDEX_PATHTABLE    |   371 |
|*  4 |   INDEX RANGE SCAN           | SYS3119198_GENESIS__PATHID_IX |     4 |
|*  5 |  TABLE ACCESS BY INDEX ROWID | GENESIS_XMLINDEX_PATHTABLE    |   371 |
|*  6 |   INDEX RANGE SCAN           | SYS3119198_GENESIS__PATHID_IX |     4 |
|*  7 |  FILTER                      |                               |       |
|   8 |   INDEX FAST FULL SCAN       | PK_GENESIS_DIST_TO_ENT        | 29002 |
|*  9 |   TABLE ACCESS BY INDEX ROWID| GENESIS_XMLINDEX_PATHTABLE    |   371 |
|* 10 |    INDEX RANGE SCAN          | SYS3119198_GENESIS__PATHID_IX |     4 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
 
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
   1 - filter(SYS_XMLI_LOC_ISNODE("SYS_P0"."LOCATOR")=1)
   2 - access("SYS_P0"."PATHID"=HEXTORAW('4B1D')  AND "SYS_P0"."RID"=:B1)
   3 - filter(SYS_XMLI_LOC_ISNODE("SYS_P2"."LOCATOR")=1)
   4 - access("SYS_P2"."PATHID"=HEXTORAW('7F13')  AND "SYS_P2"."RID"=:B1)
   5 - filter(SYS_XMLI_LOC_ISNODE("SYS_P4"."LOCATOR")=1)
   6 - access("SYS_P4"."PATHID"=HEXTORAW('35BE')  AND "SYS_P4"."RID"=:B1)
   7 - filter( (SELECT "SYS_P6"."VALUE" FROM "PROD"."GENESIS_XMLINDEX_PATHTABLE"
              WHERE "SYS_P6"."RID"=:B1 AND "SYS_P6"."PATHID"=HEXTORAW('4B1D')  A
              SYS_XMLI_LOC_ISNODE("SYS_P6"."LOCATOR")=1)='16534')
   9 - filter(SYS_XMLI_LOC_ISNODE("SYS_P6"."LOCATOR")=1)
  10 - access("SYS_P6"."PATHID"=HEXTORAW('4B1D')  AND "SYS_P6"."RID"=:B1)
Note
-----
   - 'PLAN_TABLE' is old version
 
35 rows selected
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-1588190969343918382?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/1588190969343918382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=1588190969343918382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1588190969343918382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1588190969343918382'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/05/oracle-explain-plan.html' title='Oracle Explain Plan'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4930309759258943982</id><published>2011-05-13T15:40:00.005-05:00</published><updated>2011-08-02T10:24:17.701-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dbms_output'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle - Tracking Progress without DBMS_OUTPUT buffering issues</title><content type='html'>Oracle's &lt;code&gt;dbms_output.put_line(...)&lt;/code&gt; functionality works fine &lt;i&gt;unless you actually want to see output while a script is running&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: orange;"&gt;Disclaimer:&lt;/span&gt;&lt;/b&gt; This "solution" requires access to &lt;code&gt;V$SESSION&lt;/code&gt;. Confirm before preceeding.&lt;br /&gt;
&lt;br /&gt;
For some reason known only to the Oracle gods [pun intended], this output is buffered until the block / script completes.  My preferred workaround is to use &lt;code&gt;DBMS_APPLICATION_INFO.SET_CLIENT_INFO(&lt;i&gt;text&lt;/i&gt;)&lt;/code&gt; and then to query &lt;code&gt;v$session&lt;/code&gt; for column &lt;code&gt;CLIENT_INFO&lt;/code&gt; by the appropriate criteria (&lt;i&gt;e.g.&lt;/i&gt; &lt;code&gt;SID&lt;/code&gt;, &lt;code&gt;Serial#&lt;/code&gt;, &lt;code&gt;USERNAME&lt;/code&gt;,...).&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: sql" name="code"&gt;select
   s.client_info,
   s.program, 
   s.status,
   s.SID||' - '||s.SERIAL#
from 
   v$session s
where
   s.username = 'JVOGEL';&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: orange;"&gt;Disclaimer:&lt;/span&gt;&lt;/b&gt; I'm sure there is a performance penalty of some sort.  The real-time feedback is critical so I'm willing to accept the trade-off.  In a loop you could choose to only invoke the routine every "&lt;i&gt;x&lt;/i&gt;" number of occurrences.&lt;br /&gt;
&lt;br /&gt;
I've encapsulated this into a "common" routine that I use called &lt;code&gt;SetRunStatus&lt;/code&gt;.  &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: sql" name="code"&gt;/**
SetRunStatus('Evaluating Record Status',n_index =&amp;gt; i,n_count =&amp;gt; ln_count,n_id =&amp;gt; lnt_remit_queue_id_list(i));
*/
PROCEDURE SetRunStatus(
 s_msg          IN   VARCHAR2,
 n_count        IN   NUMBER := Null,
 n_index        IN   NUMBER := Null,
 n_id           IN   NUMBER := Null )
IS
 ls_msg     VARCHAR2(64) := Null;

BEGIN
 
 IF (n_index &amp;gt; 0) THEN 
  ls_msg := ls_msg||' '||n_index;
 END IF;
 IF (n_count &amp;gt; 0) THEN
  ls_msg := ls_msg||' of '||n_count;
 END IF;
 IF (n_id &amp;gt; 0) THEN
  ls_msg := ls_msg||' [ID:'||n_id||']';
 END IF;
 ls_msg := SUBSTR('[Remit] '||TRIM(s_msg||ls_msg),1,64);

 DBMS_APPLICATION_INFO.SET_CLIENT_INFO(ls_msg);

 EXCEPTION
  WHEN OTHERS THEN 
   Null; -- Swallow any exceptions caused by SetRunStatus 

END SetRunStatus;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4930309759258943982?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4930309759258943982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4930309759258943982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4930309759258943982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4930309759258943982'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/05/oracle-tracking-progress-without.html' title='Oracle - Tracking Progress without DBMS_OUTPUT buffering issues'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-5826779313477530838</id><published>2011-04-28T14:36:00.000-05:00</published><updated>2011-04-28T14:36:46.241-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='web security'/><title type='text'>Bad Characters to Use in Web-based Filenames</title><content type='html'>&lt;a href="http://rfcweb/rfc/rfc2396.txt"&gt;RFC 2396&lt;/a&gt; is the governing document for "Uniform Resource Identifiers (URI): Generic Syntax." This RFC defines what can and can't be used in a URI, as well as what shouldn't be used.
&lt;br /&gt;
&lt;br /&gt;
First, section "2.2. Reserved Characters" contains the following list of reserved characters:
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;reserved = ";" | "/" | "?" | ":" | "@" |
           "&amp;amp;" | "=" | "+" | "$" | ","&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Second, section "2.4.3. Excluded US-ASCII Characters" contains the following lists of delimiter and unwise characters:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;delims = "&amp;lt;" | "&amp;gt;" | "#" | "%" | &amp;lt;"&amp;gt;

unwise = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"&lt;/code&gt;
&lt;br /&gt;
&lt;b&gt;ToDo:&lt;i&gt;&lt;/i&gt;&lt;/b&gt; Add a Regular Expression to explicitly exclude these characters in &lt;code&gt;SanitizeText&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-5826779313477530838?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.iis.net/robert_mcmurray/archive/2011/04/27/bad-characters-to-use-in-web-based-filenames.aspx' title='Bad Characters to Use in Web-based Filenames'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/5826779313477530838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=5826779313477530838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5826779313477530838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5826779313477530838'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2011/04/bad-characters-to-use-in-web-based.html' title='Bad Characters to Use in Web-based Filenames'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4690420021580481268</id><published>2010-09-02T17:26:00.001-05:00</published><updated>2010-10-28T14:35:34.267-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dates'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>PL/SQL Date Calculations</title><content type='html'>Recently, I needed to do some Oracle PL/SQL / SQL Date range manipulation.  I thought that I would share what I used after a quick web search returns some overly verbose results based on conversions using &lt;code&gt;TO_CHAR&lt;/code&gt;.&lt;br /&gt;
&lt;b&gt;Queries:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="brush: sql"&gt;SELECT 
   SYSDATE "Today",
   TRUNC(SYSDATE) "Start of Day",
   TRUNC(SYSDATE+1) - 1/(24*60*60) "End of Day (EOD)",
   TRUNC(SYSDATE,'MM') "First Day of the Month",
   TRUNC(SYSDATE,'YEAR') "First Day of the Year"
FROM 
   DUAL
&lt;/pre&gt;&lt;b&gt;Results:&lt;/b&gt; (Formated for readability)&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Today                   9/2/2010 5:17:51 PM
Start of Day            9/2/2010
End of Day              9/2/2010 11:59:59 PM
First Day of the Month  9/1/2010
First Day of the Year   1/1/2010
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4690420021580481268?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4690420021580481268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4690420021580481268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4690420021580481268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4690420021580481268'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/09/plsql-data-calculations.html' title='PL/SQL Date Calculations'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-3442588264212094272</id><published>2010-08-20T14:52:00.003-05:00</published><updated>2010-09-09T10:58:19.907-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='airport extreme'/><category scheme='http://www.blogger.com/atom/ns#' term='airport'/><category scheme='http://www.blogger.com/atom/ns#' term='erb9250'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><category scheme='http://www.blogger.com/atom/ns#' term='range extender'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>EnGenius ERB9250 Wireless Range Extender (Repeater)</title><content type='html'>I recently bought a &lt;a href="http://www.engeniustech.com/index.php?option=com_content&amp;amp;id=3384"&gt;EnGenius ERB9250 Wireless Range Extender&lt;/a&gt; and coupled it with my &lt;b&gt;&lt;a href="http://store.apple.com/us/product/MC340LL/A/AirPort-Extreme"&gt;Apple AirPort Extreme&lt;/a&gt;&lt;/b&gt; (which support A, B, G, and N wireless networks) after configuring it from my &lt;b&gt;Windows XP&lt;/b&gt; client.
&lt;p /&gt;
It works amazingly well.
&lt;p /&gt;
I bought it from &lt;a href="http://www.newegg.com/"&gt;NewEgg&lt;/a&gt;.  There were your standard complaints about the manual.  There was indeed a picture missing from the Windows XP installation steps [which is what my laptop runs].
&lt;p /&gt;
I followed the "manual" instructions.
&lt;p /&gt;
There are a couple of additional details that I would like to add.
&lt;p /&gt;
After you "configure" the repeater as per the instructions and you are &lt;i&gt;preparing&lt;/i&gt; to connect... &lt;b&gt;stop&lt;/b&gt;.  Until the repeater displays the same name as the original router, it's not ready for connections.  &lt;span class="Apple-style-span" style="background-color: #ffe599;"&gt;The repeater is ready when it shows up as a second access point with the same name as the original.&lt;/span&gt;
&lt;p /&gt;
Again, an amazing product hampered by a poor manual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-3442588264212094272?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/3442588264212094272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=3442588264212094272' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3442588264212094272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3442588264212094272'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/08/engenius-erb9250-wireless-range.html' title='EnGenius ERB9250 Wireless Range Extender (Repeater)'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-5153398204412747643</id><published>2010-06-25T11:35:00.002-05:00</published><updated>2010-09-09T10:57:38.930-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Execute Shell Commands from Oracle</title><content type='html'>Excellent article on executing command line functionality from within Oracle.
&lt;p&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;Be aware!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Requires special permissions to execute&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="background-color: #fff2cc;"&gt;Security risk&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;a href="http://www.oracle-base.com/articles/8i/ShellCommandsFromPLSQL.php"&gt;http://www.oracle-base.com/articles/8i/ShellCommandsFromPLSQL.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-5153398204412747643?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.oracle-base.com/articles/8i/ShellCommandsFromPLSQL.php' title='Execute Shell Commands from Oracle'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/5153398204412747643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=5153398204412747643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5153398204412747643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5153398204412747643'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/06/execute-shell-commands-from-oracle.html' title='Execute Shell Commands from Oracle'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-8825566537350337562</id><published>2010-06-21T13:23:00.003-05:00</published><updated>2010-06-21T13:24:52.170-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix Notes - CRON</title><content type='html'>&lt;pre name="code" class="brush: sql"&gt;-- Location of cron jobs
/var/spool/cron/crontabs
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-8825566537350337562?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/8825566537350337562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=8825566537350337562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8825566537350337562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8825566537350337562'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/06/unix-notes-cron.html' title='Unix Notes - CRON'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-6966785809850446291</id><published>2010-06-07T15:53:00.002-05:00</published><updated>2010-06-07T15:54:44.264-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix Notes - Root and sudo access</title><content type='html'>&lt;pre name="code" class="brush: sql"&gt;-- sudo access
/usr/local/bin/sudo su -
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-6966785809850446291?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/6966785809850446291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=6966785809850446291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6966785809850446291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6966785809850446291'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/06/unix-notes-root-and-sudo-access.html' title='Unix Notes - Root and sudo access'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-2090375189181365592</id><published>2010-06-02T10:41:00.007-05:00</published><updated>2010-06-02T11:34:06.707-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle SQL Query Formatting - Using the FORMAT command</title><content type='html'>&lt;h3&gt;Query&lt;/h3&gt;
&lt;pre name="code" class="brush: sql"&gt;column "User Counts as of" FORMAT a19;
column "Site 1" FORMAT 99999999;
column "Site 2" FORMAT a10;

select 
 TO_CHAR(SYSDATe,'MM/DD/YYYY HH24:MI:SS') "User Counts as of",
 (select count(*) from v$session) "Site 1",
 (select count(*) from v$session@orcl_site2) "Site 2"
from dual;
&lt;/pre&gt;

&lt;h3&gt;Results&lt;/h3&gt;
&lt;pre&gt;User Counts as of       Site 1     Site 2
------------------- ---------- ----------
06/02/2010 10:43:20        600        581&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-2090375189181365592?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/2090375189181365592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=2090375189181365592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/2090375189181365592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/2090375189181365592'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/06/oracle-sql-query-formatting-using.html' title='Oracle SQL Query Formatting - Using the FORMAT command'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4912554563867784901</id><published>2010-05-21T08:48:00.004-05:00</published><updated>2010-09-09T10:59:35.512-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outliner'/><title type='text'>Check out thinklinkr.com! Create and share outlines in your browser.</title><content type='html'>Check out &lt;a href="http://www.thinklinkr.com/"&gt;thinklinkr.com&lt;/a&gt;! Create and share outlines in your browser.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4912554563867784901?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.thinklinkr.com' title='Check out thinklinkr.com! Create and share outlines in your browser.'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4912554563867784901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4912554563867784901' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4912554563867784901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4912554563867784901'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/05/check-out-thinklinkrcom-create-and.html' title='Check out thinklinkr.com! Create and share outlines in your browser.'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-8621250879368702760</id><published>2010-05-05T17:19:00.005-05:00</published><updated>2010-05-05T17:22:00.578-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix Notes - Change Password</title><content type='html'>&lt;pre name="code" class="brush: sql"&gt;-- Change Password
passwd &amp;lt;username&amp;gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-8621250879368702760?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/8621250879368702760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=8621250879368702760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8621250879368702760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8621250879368702760'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/05/unix-notes-change-password.html' title='Unix Notes - Change Password'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-6142737629889443595</id><published>2010-05-05T17:14:00.006-05:00</published><updated>2011-09-09T10:18:17.274-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix Notes - Disk Utilization</title><content type='html'>&lt;pre name="code" class="brush: sql"&gt; 
-- Show Disk Space Utilization by Directory 
du -sk * | sort -rn | more

-- Show Disk Space Free for the current directory
df -h

-- Show Disk Space Free for /export/home
df -h /export/home
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-6142737629889443595?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/6142737629889443595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=6142737629889443595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6142737629889443595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6142737629889443595'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/05/unix-notes-disk-utilization.html' title='Unix Notes - Disk Utilization'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-6230724444045982098</id><published>2010-04-29T15:56:00.001-05:00</published><updated>2010-06-07T15:53:09.341-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix Notes - Wide display for ps</title><content type='html'>/usr/ucb/ps auxw&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-6230724444045982098?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/6230724444045982098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=6230724444045982098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6230724444045982098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6230724444045982098'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/04/unix-notes-wide-display-for-ps.html' title='Unix Notes - Wide display for ps'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-2751335037300133305</id><published>2010-03-16T13:33:00.015-05:00</published><updated>2010-03-16T13:58:07.144-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle replication'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle: Determining if a Table is Replicated</title><content type='html'>&lt;b&gt;Query:&lt;/b&gt;
&lt;pre name="code" class="sql"&gt;
Select Oname, Sname 
from dba_repobject 
where Oname IN ('DISPATCH_QUEUE','CONTRACT');
&lt;/pre&gt;
&lt;b&gt;Results:&lt;/b&gt;
&lt;table cellpadding="2px" style="margin-left: 15px; margin-top: 10px; margin-bottom: 10px; text-align: center; border: black solid 1px; left-margin: 8px; border-collapse: collapse;"&gt;
&lt;tr bgcolor="#CCFFFF" style="font-weight: bold;"&gt;&lt;td&gt;ONAME&lt;/td&gt;&lt;td&gt;SNAME&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="width:50%;"&gt;CONTRACT&lt;/td&gt;&lt;td&gt;PROD&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
The &lt;code&gt;CONTRACT&lt;/code&gt; table is replicated, but the &lt;code&gt;DISPATCH_QUEUE&lt;/code&gt; table is not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-2751335037300133305?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/2751335037300133305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=2751335037300133305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/2751335037300133305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/2751335037300133305'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2010/03/oracle-determining-if-table-is.html' title='Oracle: Determining if a Table is Replicated'/><author><name>Jason Vogel</name><uri>http://www.blogger.com/profile/12539856508013785897</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-721810870596872665</id><published>2009-04-14T10:21:00.004-05:00</published><updated>2009-04-14T10:29:30.058-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql performance tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><title type='text'>PL/SQL Cursor For Loop with Bulk Collect and Limit</title><content type='html'>Here is an cursor example of how to use a &lt;code&gt;BULK COLLECT&lt;/code&gt; with a &lt;code&gt;LIMIT&lt;/code&gt; clause.

&lt;span style="font-weight:bold;"&gt;DevNote:&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt; &lt;code&gt;%NOTFOUND&lt;/code&gt; check must be at the end of the loop 
&lt;pre name="code" class="sql"&gt;declare

   PROCEDURE bulk_with_limit (
      n_start_in     IN    CONTRACT.CONTRACT_ID%TYPE,
      n_end_in       IN    CONTRACT.CONTRACT_ID%TYPE,
      limit_in       IN    PLS_INTEGER := 100
   )
   IS
      CURSOR contracts_cur
      IS
         SELECT *
         FROM contract
         WHERE contract_id between n_start_in and n_end_in;

      TYPE contract_trec IS TABLE OF contracts_cur%ROWTYPE INDEX BY PLS_INTEGER;

      l_contracts   contract_trec;

   BEGIN
      OPEN contracts_cur;

      LOOP
         FETCH contracts_cur
            BULK COLLECT 
            INTO l_contracts 
            LIMIT limit_in;

         -- Perform business logic ... 
         FOR i IN 1 .. l_contracts.COUNT LOOP
            dbms_output.put_line(lpad(' ',5 - length(i))||i||' : '||l_contracts(i).contract_id);
         END LOOP;

         -- DevNote: %NOTFOUND check must be at the end of the loop 
         EXIT WHEN contracts_cur%NOTFOUND;

      END LOOP;

      CLOSE contracts_cur;
   END bulk_with_limit;

begin
   bulk_with_limit(n_start_in =&gt; 10, n_end_in =&gt; 100000, limit_in =&gt; 100);
end;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-721810870596872665?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/721810870596872665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=721810870596872665' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/721810870596872665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/721810870596872665'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2009/04/plsql-cursor-for-loop-with-bulk-collect.html' title='PL/SQL Cursor For Loop with Bulk Collect and Limit'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4494434204911476991</id><published>2009-03-30T10:57:00.010-05:00</published><updated>2011-09-22T14:48:46.174-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Count occurences of a character in a string (Oracle)</title><content type='html'>Recently, I needed to see how many times the "@" [at sign] was in a particular column more than once.
&lt;p /&gt;
So Abhijit noticed an interesting detail, if you are counting characters where the input string is nothing but the same repeating search character, then the resulting count is incorrect.  I concatenated in a "random" character to prevent this scenario.  This only affects the "pure Oracle solution".
&lt;p /&gt;
&lt;b&gt;Pure Oracle Solution (Updated)&lt;/b&gt;
&lt;br /&gt;
&lt;pre class="brush: sql" name="code"&gt;select
   :str as "string",
   :chr as "character",
   length(:str||chr(1)) - length(translate(:str||chr(1),chr(0)||:chr,chr(0))) as "count"
from dual;
&lt;/pre&gt;
&lt;pre class="brush: sql" name="code"&gt;select *
from 
(
   select
      ia.internet_address_id as "InternetAddressID",
      ia.internet_address as "string",
      '@' as "character",
      length(ia.internet_address||chr(1)) - length(translate(ia.internet_address||chr(1),chr(0)||'@',chr(0))) as "occurences"
   from internet_address ia
)
where "occurences" &amp;gt; 1;
&lt;/pre&gt;
&lt;b&gt;Regular Expression Based Solution&lt;/b&gt; (Thanks Jan Leers) 
&lt;br /&gt;
&lt;pre class="brush: sql" name="code"&gt;SELECT *
FROM
(
 SELECT 
  ia.internet_address_id as "InternetAddressID",
      ia.internet_address as "InternetAddress",
  LENGTH(REGEXP_REPLACE(ia.internet_address,'[^@]')) as "Occurences"
 FROM 
  internet_address ia
)
WHERE "Occurences" &amp;gt; 1;
&lt;/pre&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4494434204911476991?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4494434204911476991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4494434204911476991' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4494434204911476991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4494434204911476991'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2009/03/count-occurences-of-character-in-string.html' title='Count occurences of a character in a string (Oracle)'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-3097627239749229819</id><published>2009-01-21T14:22:00.021-06:00</published><updated>2010-01-18T13:28:21.285-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syntax highlighter'/><category scheme='http://www.blogger.com/atom/ns#' term='code snippet'/><title type='text'>Syntax Highlighting Posted Code Snippets</title><content type='html'>For years, I have struggled with how to share my code snippets on the web.  I wanted the "fancy" look, but I didn't want to waste a bunch of time converting my code to html/css.
&lt;p /&gt;
I'd see some sites that had a nice look, but when I looked under the covers, they were invoking proprietary server side engines to generate the the "pretty print code".
&lt;p /&gt;
Today, I found the answer on GoogleCode: &lt;a href="http://code.google.com/p/syntaxhighlighter/"&gt;Syntaxhighlighter&lt;/a&gt;, a free &lt;span style="font-weight: bold; font-style: italic;"&gt;DYNAMIC&lt;/span&gt;&lt;span style="font-style: italic;"&gt; Javascript&lt;/span&gt;-based syntax highlighter. 
&lt;p /&gt;
The custom CSS for &lt;code&gt;sourcecodetable&lt;/code&gt; is mine.  The only change that I made was to go...
&lt;p /&gt;
&lt;span style="font-weight:bold;"&gt;From:&lt;/span&gt;
&lt;pre name="code"&gt;
&amp;lt;pre class="sourcecodetable"&amp;gt;
... some C# code here ...
&amp;lt;/pre&amp;gt;
&lt;/pre&gt;
&lt;span style="font-weight:bold;"&gt;To:&lt;/span&gt;
&lt;pre name="code" class="html"&gt;
&amp;lt;pre name="code" class="C#"&amp;gt;
... some C# code here ...
&amp;lt;/pre&amp;gt;
&lt;/pre&gt;

It supports:
&lt;ul&gt;&lt;li&gt;C#&lt;/li&gt;&lt;li&gt;Java&lt;/li&gt;&lt;li&gt;XML
&lt;/li&gt;&lt;li&gt;PHP&lt;/li&gt;&lt;li&gt;Python&lt;/li&gt;&lt;li&gt;SQL&lt;/li&gt;&lt;li&gt;VB&lt;/li&gt;&lt;li&gt;C++&lt;/li&gt;&lt;li&gt;CSS&lt;/li&gt;&lt;li&gt;Html&lt;/li&gt;&lt;li&gt;Delphi&lt;/li&gt;&lt;/ul&gt;I'm really impressed with how well it looks.
&lt;p /&gt;
Link: &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;http://alexgorbatchev.com/wiki/SyntaxHighlighter&lt;/a&gt;
&lt;p /&gt;
Link: &lt;a href="http://geektalkin.blogspot.com/2009/11/embed-code-syntax-highlighting-in-blog.html"&gt;http://geektalkin.blogspot.com/2009/11/embed-code-syntax-highlighting-in-blog.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-3097627239749229819?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/3097627239749229819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=3097627239749229819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3097627239749229819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3097627239749229819'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2009/01/syntax-highlighting-posted-code.html' title='Syntax Highlighting Posted Code Snippets'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-5636469707932794363</id><published>2009-01-20T12:23:00.020-06:00</published><updated>2009-01-21T14:00:24.931-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Redirect'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Redirects (Html, ASP.Net, JSP, ...)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Html&lt;/span&gt; (&lt;span style="font-style: italic;"&gt;not generally recommended&lt;/span&gt;)
&lt;pre name="code" class="html"&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;META HTTP-EQUIV="Refresh"CONTENT="0; URL=http://www.new-url.com"&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
This page is redirecting your browser to www.new-url.com&amp;lt;br&amp;gt;
Please, click &amp;lt;a href="http://www.new-url.com"&amp;gt;here&amp;lt;/a&amp;gt; if redirection doesn't work.
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;

&lt;span style="font-weight: bold;"&gt;ASP.Net&lt;/span&gt;
&lt;pre name="code" class="csharp"&gt;&amp;lt;script runat="server"&amp;gt;
private void Page_Load(object sender, System.EventArgs e)
{   
   Response.Status = "301 Moved Permanently";
   Response.AddHeader("Location","http://www.new-url.com/");
}
&amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;span style="font-weight: bold;"&gt;JSP&lt;/span&gt;
&lt;pre name="code" class="java"&gt;
&amp;lt;%
response.setStatus(301);
response.setHeader("Location", "http://www.new-url.com/" );
response.setHeader("Connection", "close" );
%&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-5636469707932794363?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.stevenhargrove.com/redirect-web-pages/' title='Redirects (Html, ASP.Net, JSP, ...)'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/5636469707932794363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=5636469707932794363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5636469707932794363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5636469707932794363'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2009/01/redirects-html-aspnet-jsp.html' title='Redirects (Html, ASP.Net, JSP, ...)'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4129227907987749872</id><published>2008-12-02T11:08:00.009-06:00</published><updated>2009-01-21T14:13:17.175-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outlook'/><title type='text'>Outlook - Red "X" on Image Paste</title><content type='html'>Delete the contents of the folder that is at "&lt;span style="font-style: italic;"&gt;string value&lt;/span&gt;"

&lt;span style="font-weight: bold;"&gt;RegEdit&lt;/span&gt;&lt;br&gt;
&lt;span style="font-weight: bold; margin-left: 10pt;"&gt;Path : &lt;/span&gt;&lt;code&gt;My Computer\HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\Service&lt;/code&gt;&lt;br&gt;
&lt;span style="font-weight: bold; margin-left: 15pt;"&gt;String Name :&lt;/span&gt; &lt;code&gt;OutlookSecureTempFolder&lt;/code&gt;&lt;br&gt;
&lt;span style="font-weight: bold; margin-left: 15pt;"&gt;String Value :&lt;/span&gt; &lt;code&gt;D:\Documents and Settings\JVogel\Local Settings\Temporary Internet Files\OLK41\&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4129227907987749872?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://forums.techguy.org/business-applications/564506-outlook-2003-red-x-missing.html' title='Outlook - Red &quot;X&quot; on Image Paste'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4129227907987749872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4129227907987749872' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4129227907987749872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4129227907987749872'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2008/12/outlook-red-x-on-image-paste.html' title='Outlook - Red &quot;X&quot; on Image Paste'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4371863295844333976</id><published>2008-11-25T14:56:00.023-06:00</published><updated>2010-01-18T09:39:34.799-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fieldset'/><category scheme='http://www.blogger.com/atom/ns#' term='rounded corners'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Html Fieldset Rounded Corners - Updated (1/18/2010)</title><content type='html'>I don't usually prefer anything about Internet Explorer. However, IE's default presentation for the Html &lt;code&gt;fieldset&lt;/code&gt; tag just looks nicer. Firefox, on the otherhand, defaults to an ugly square box presentation.

So, to try to get Firefox to look more like IE (something I never thought that I would say) ... &lt;pre name="code" class="css"&gt;fieldset { 
   -moz-border-radius-bottomleft: 7px;
   -moz-border-radius-bottomright: 7px;
   -moz-border-radius-topleft: 5px;
   -moz-border-radius-topright: 7px;
   -webkit-border-radius: 7px;
   border-radius: 3px;
}&lt;/pre&gt;

This works for IE, Firefox, and now Chrome.  It still doesn't look "nice" in Safari.
&lt;p&gt;
If you absolutely must have rounded corners: &lt;a href="http://www.spiffycorners.com"&gt;http://www.spiffycorners.com&lt;/a&gt;.  However, I caution you against the author's approach because it requires too much Html for an effect that will be cleanly implemented in CSS3.  Again, this is only a nice to have.
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Example:&lt;/span&gt;
&lt;fieldset style="border-radius: 3px; -moz-border-radius-bottomleft:7px; -moz-border-radius-bottomright:7px; -moz-border-radius-topleft:5px; -moz-border-radius-topright:7px;"&gt;
&lt;legend&gt;Title&lt;/legend&gt;
contents
&lt;/fieldset&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4371863295844333976?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4371863295844333976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4371863295844333976' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4371863295844333976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4371863295844333976'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2008/11/internet-explorer-ie-and-firefox.html' title='Html Fieldset Rounded Corners - Updated (1/18/2010)'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4957283746856323070</id><published>2008-11-05T11:15:00.006-06:00</published><updated>2009-02-09T16:13:24.761-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net-css'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>ASP.Net - Dynamically Adding a CSS/StyleSheet Reference at run-time</title><content type='html'>Per Michael, I have removed a technique that was only available in Beta 1.

&lt;pre name="code" class="csharp"&gt;protected void Page_Init(object sender, EventArgs e)
{
   HtmlLink link = new HtmlLink();
   link.Href = "~/StyleSheet.css";
   link.Attributes.Add("rel", "stylesheet");
   link.Attributes.Add("type", "text/css");
   Page.Header.Controls.Add(link);
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4957283746856323070?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4957283746856323070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4957283746856323070' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4957283746856323070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4957283746856323070'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2008/11/aspnet-dynamically-adding-cssstylesheet.html' title='ASP.Net - Dynamically Adding a CSS/StyleSheet Reference at run-time'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-6424148909897428382</id><published>2008-10-07T13:57:00.006-05:00</published><updated>2009-01-21T14:33:44.360-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='print.css'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Print.css</title><content type='html'>&lt;p&gt;Recently, I ran into a case where a user's printout of an order confirmation was cropping a portion along the rights side of the page.
&lt;/p&gt;&lt;p&gt;By default, almost all browers print in "Scale-to-Fit" mode.  This particular user happened to be using Print at "100%".&lt;/p&gt;&lt;p&gt;Changed our html/aspx page to the following...&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Html&lt;/span&gt;&lt;/p&gt;&lt;pre name="code" class="html"&gt;&amp;lt;head id="head" runat="server"&amp;gt;
   &amp;lt;link href="/shared/css/style.css" type="text/css" rel="stylesheet"&amp;gt;
   &amp;lt;link href="/shared/css/print.css" type="text/css" rel="stylesheet" media="print"&amp;gt;
&amp;lt;head&amp;gt;
&lt;/pre&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;CSS&lt;/span&gt;&lt;/p&gt;&lt;pre name="code" class="css"&gt;body
{
background: white;
margin: 0;
font-size: 0.75em;
width: 660px;
}

#PageContainer
{
width:640px;
}

a:link, a:visited
{
color: #520;
background: transparent;
font-weight: bold;
text-decoration: underline;
}

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-6424148909897428382?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/6424148909897428382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=6424148909897428382' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6424148909897428382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6424148909897428382'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2008/10/printcss.html' title='Print.css'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-6355915127805081274</id><published>2008-08-12T13:57:00.007-05:00</published><updated>2009-01-21T14:06:53.797-06:00</updated><title type='text'>Getting the current Oracle version (SQL Select)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Queries :&lt;/span&gt;
&lt;pre name="code" class="sql"&gt;select *
from v$version;

select *
from product_component_version;&lt;/pre&gt;
&lt;span style="font-weight: bold;"&gt;Results :&lt;/span&gt;

&lt;table style="border: thin solid ;" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Solaris: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;table style="border: thin solid ;" cellpadding="1" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;
&lt;td&gt;PRODUCT&lt;/td&gt;&lt;td style="text-align: center;"&gt;VERSION&lt;/td&gt;&lt;td&gt;STATUS&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;NLSRTL&lt;/td&gt;&lt;td style="text-align: center;"&gt;11.1.0.6.0&lt;/td&gt;&lt;td&gt;Production&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Oracle Database 11g Enterprise Edition&lt;/td&gt;&lt;td style="text-align: center;"&gt;11.1.0.6.0&lt;/td&gt;&lt;td&gt;64bit Production&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;PL/SQL&lt;/td&gt;&lt;td style="text-align: center;"&gt;11.1.0.6.0&lt;/td&gt;&lt;td&gt;Production&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;TNS for Solaris:&lt;/td&gt;&lt;td style="text-align: center;"&gt;11.1.0.6.0&lt;/td&gt;&lt;td&gt;Production&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-6355915127805081274?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/6355915127805081274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=6355915127805081274' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6355915127805081274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6355915127805081274'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2008/08/getting-current-oracle-version-sql.html' title='Getting the current Oracle version (SQL Select)'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-1308862101476158310</id><published>2008-08-07T16:54:00.012-05:00</published><updated>2009-01-21T14:07:29.101-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http compression'/><category scheme='http://www.blogger.com/atom/ns#' term='httpcompression'/><category scheme='http://www.blogger.com/atom/ns#' term='gzip'/><category scheme='http://www.blogger.com/atom/ns#' term='iis'/><title type='text'>gzip Http Compression in IIS</title><content type='html'>References URLS:
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000059.html"&gt;http://www.codinghorror.com/blog/archives/000059.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/owscott/archive/2004/01/12/57916.aspx"&gt;http://weblogs.asp.net/owscott/archive/2004/01/12/57916.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;In order  to enable compression (herein &lt;em&gt;gzip&lt;/em&gt;), there are several steps that have  to be completed.
&lt;p&gt;&lt;strong&gt;Enable Compression in IIS&lt;/strong&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;From the IIS snap-in, right-click on the Web Sites node and  click on Properties&lt;/li&gt;&lt;li&gt;Select the Service tab - Enable &lt;em&gt;Compress application  files&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Enable &lt;em&gt;Compress static files&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Change Temporary Directory to the folder that you created  above, or leave it at it's default&lt;/li&gt;&lt;li&gt;Set the max size of the temp folder to something that the hard  drive can handle. &lt;em&gt;e.g.&lt;/em&gt; 1000.&lt;/li&gt;&lt;li&gt;Save and close the Web Site Properties dialog&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Note: The temporary compress directory is only used for static  pages.  Dynamic pages aren't saved to disk and are recreated every time so there  is some CPU overhead used on every page request for dynamic content.
&lt;/p&gt;
&lt;pre name="code" class="xml"&gt;&amp;lt;IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
  HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
  HcCreateFlags="0"
  HcDoDynamicCompression="TRUE"
  HcDoOnDemandCompression="TRUE"
  HcDoStaticCompression="FALSE"
  HcDynamicCompressionLevel="0"
  HcFileExtensions="htm
    html
    txt
    css"
  HcOnDemandCompLevel="10"
  HcPriority="1"
  HcScriptFileExtensions="asp
    dll
    exe
    aspx
    asmx
    js"
&amp;gt;
&amp;lt;/IIsCompressionScheme&amp;gt;
&amp;lt;IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
  HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
  HcCreateFlags="1"
  HcDoDynamicCompression="TRUE"
  HcDoOnDemandCompression="TRUE"
  HcDoStaticCompression="TRUE"
  HcDynamicCompressionLevel="0"
  HcFileExtensions="htm
    html
    txt
    css"
  HcOnDemandCompLevel="10"
  HcPriority="1"
  HcScriptFileExtensions="asp
    dll
    exe
    aspx
    asmx
    js"
&amp;gt;
&amp;lt;/IIsCompressionScheme&amp;gt;
&lt;/pre&gt;
&lt;p&gt;From a &lt;code&gt;CMD&lt;/code&gt; prompt, &lt;code&gt;iisreset stop&lt;/code&gt;
&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Now save&lt;/span&gt; &lt;code&gt;metabase.xml&lt;/code&gt;
&lt;/p&gt;From a &lt;code&gt;CMD&lt;/code&gt; prompt, &lt;code&gt;iisreset&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-1308862101476158310?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/1308862101476158310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=1308862101476158310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1308862101476158310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1308862101476158310'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2008/08/gzip-http-compression-in-iis.html' title='gzip Http Compression in IIS'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-8655333282951056093</id><published>2008-04-16T11:32:00.012-05:00</published><updated>2009-01-21T14:14:26.468-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='rad'/><category scheme='http://www.blogger.com/atom/ns#' term='prototyping'/><title type='text'>Prototyping in ASP.Net - asp:SqlDataSource Example</title><content type='html'>&lt;p&gt;Recently, I've been doing a bunch of ASP.Net.  One of ASP.Net's best features is its ability to be used for &lt;span style="font-weight: bold; font-style: italic;"&gt;realistic&lt;/span&gt; rapid prototyping.&lt;/p&gt;
&lt;p&gt;Here is a simple example that executes a SQL query and displays the results.&lt;/p&gt;
&lt;p&gt;In the aspx... (be sure and notice the "$" in the connection string)&lt;/p&gt;

&lt;pre name="code" class="xml"&gt;&amp;lt;asp:sqldatasource id="SqlDSCoreCoverages" runat="server" connectionstring="&amp;lt;%$ ConnectionStrings:ConnectionString_DEV %&amp;gt;" &amp;gt;"
       ProviderName="Oracle.DataAccess.Client"
       SelectCommand="
             select coverage_description, display_order
             from prod_cov
        whereid = :argProductVersionId
             order by display_order
       "
       EnableCaching="True"&amp;gt;
    &amp;lt;/asp:SqlDataSource&amp;gt;

&amp;lt;table cellpadding="3" style="border: 1px #333333 solid;"&amp;gt;
                &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;
                   &amp;lt;asp:gridview id="GridView1" runat="server" datasourceid="SqlDSCoreCoverages" autogeneratecolumns="False" gridlines="None"&amp;gt;
                      &amp;lt;headerstyle cssclass="SectionHeader"&amp;gt;
                      &amp;lt;columns&amp;gt;
                         &amp;lt;asp:BoundField DataField="coverage_description"  HeaderText="Included Core Coverages"
                            ReadOnly="True" SortExpression="coverage_description" /&amp;gt;
                      &amp;lt;/columns&amp;gt;
                   &amp;lt;/asp:GridView&amp;gt;
                &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
             &amp;lt;/table&amp;gt;&lt;/pre&gt;

&lt;p&gt;In the aspx.cs [codebehind] ...&lt;/p&gt;
&lt;pre name="code" class="csharp"&gt;this.SqlDSCoreCoverages.SelectParameters.Add("argProductVersionId", productVersionId.ToString());

this.SqlDSCoreCoverages.DataBind();
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-8655333282951056093?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/8655333282951056093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=8655333282951056093' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8655333282951056093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8655333282951056093'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2008/04/prototyping-in-aspnet-aspsqldatasource.html' title='Prototyping in ASP.Net - asp:SqlDataSource Example'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-3277762501936890066</id><published>2008-04-10T15:40:00.012-05:00</published><updated>2010-11-03T12:53:31.166-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='commit'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='bulk collect'/><title type='text'>Feuerstein's article on BULK COLLECT and %NOTFOUND</title><content type='html'>Steven Feuerstien wrote an informative article (&lt;a href="http://www.oracle.com/technology/oramag/oracle/08-mar/o28plsql.html"&gt;http://www.oracle.com/technology/oramag/oracle/08-mar/o28plsql.html&lt;/a&gt;) on using &lt;code&gt;BULK COLLECT with &lt;span style="font-weight: bold; font-style: italic;"&gt;LIMIT&lt;/span&gt;&lt;/code&gt; in a &lt;span style="font-style: italic;"&gt;"reasonable"&lt;/span&gt; manner.

Much of this content is drawn from that article.

Basically, the use the &lt;code&gt;LIMIT&lt;/code&gt; construct requires a secondary loop to process the smaller "&lt;span style="font-style: italic;"&gt;batch&lt;/span&gt;". 

Our DBAs require us to do this kind of "batching" to put less strain on Replication.  Smaller &lt;code&gt;COMMIT&lt;/code&gt;s going across the pipe rather than a 100,000 &lt;code&gt;COMMIT&lt;/code&gt;.  In otherwords, "commit every x number of rows." [Search engine fodder]

&lt;pre name="code" class="brush: sql"&gt;PROCEDURE process_all_rows (limit_in IN PLS_INTEGER DEFAULT 100)
IS
   CURSOR employees_cur
   IS
       SELECT * FROM employees;

   TYPE employees_aat IS TABLE OF employees_cur%ROWTYPE
       INDEX BY PLS_INTEGER;

   l_employees employees_aat;
BEGIN  
   OPEN employees_cur;
   LOOP
       FETCH employees_cur
           BULK COLLECT INTO l_employees LIMIT limit_in;

       FOR indx IN 1 .. l_employees.COUNT LOOP
           update_compensation (l_employees(indx));
       END LOOP;

       COMMIT; &lt;span style="color: rgb(0, 102, 0);"&gt;-- Commit batch of size LIMIT &lt;/span&gt;

       EXIT WHEN l_employees.COUNT &amp;lt; limit_in;

   END LOOP;

   CLOSE employees_cur;
END process_all_rows;
&lt;/pre&gt;

To summarize his second article, don't use &lt;code&gt;%NOTFOUND&lt;/code&gt; with &lt;code&gt;BULK COLLECT&lt;/code&gt; and &lt;code&gt;LIMIT&lt;/code&gt;.  Use &lt;code&gt;.COUNT&lt;/code&gt;.

&lt;span style="font-weight:bold;"&gt;Secondary Example&lt;/span&gt;
&lt;pre name="code" class="brush: sql"&gt;set serveroutput on;
clear;

declare
  CURSOR contracts_cur
   IS
       SELECT * FROM contract where rownum &lt;= 50;

   TYPE t_contract IS TABLE OF contracts_cur%ROWTYPE
       INDEX BY PLS_INTEGER;

   l_contract t_contract;
   
BEGIN  
   OPEN contracts_cur;
   LOOP
       FETCH contracts_cur
           BULK COLLECT INTO l_contract LIMIT 10;

       FOR indx IN 1 .. l_contract.COUNT LOOP
        common_func.display_output(indx||' : '||l_contract(indx).contract_id);
       END LOOP;

       EXIT WHEN l_contract.COUNT = 0;

   END LOOP;

   CLOSE contracts_cur;
   
   EXCEPTION 
    WHEN OTHERS THEN 
       common_func.display_output(SQLERRM);
   
END;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-3277762501936890066?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.oracle.com/technology/oramag/oracle/08-mar/o28plsql.html' title='Feuerstein&apos;s article on BULK COLLECT and %NOTFOUND'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/3277762501936890066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=3277762501936890066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3277762501936890066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3277762501936890066'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2008/04/feuersteins-article-on-bulk-collect-and.html' title='Feuerstein&apos;s article on BULK COLLECT and %NOTFOUND'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-7560240455456600122</id><published>2008-03-20T13:31:00.016-05:00</published><updated>2010-06-21T10:10:21.051-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql developer'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql packages'/><title type='text'>Handling ORA-04068: Existing state of packages has been discarded</title><content type='html'>How to deal with the frustrating &lt;code&gt;ORA-04068: existing state of packages has been discarded&lt;/code&gt; error that crops up while in the circular cycle of "code..execute..debug".

&lt;pre&gt;ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package "PKG.PROC" has been invalidated
ORA-04065: not executed, altered or dropped package "PKG.PROC"
ORA-06508: PL/SQL: could not find program unit being called&lt;/pre&gt;

Previously, the only thing I knew to do was logout and then log back in.  This works, but it is kind of a waste of time.  I knew there had to be a better way because my PL/SQL Editor (PL/SQL Developer) doesn't require this step.  I probably could have asked the guys at AllAround, but I think that I found the answer:

&lt;pre name="code" class="sql"&gt;begin
   DBMS_SESSION.RESET_PACKAGE;
   -- execute routine... 
end;&lt;/pre&gt;

&lt;span style="font-weight:bold;"&gt;Addendum:&lt;/span&gt;&lt;br&gt;
To respond to Abida's comment, you can run into this issue &lt;i&gt;even if all the packages under your ID are &lt;b&gt;valid&lt;/b&gt;&lt;/i&gt;.  Your debug/test session however may not "see" the valid state of these packages.  The snippet above fixes the issue with our debug/test session.


Thanks,
Jason&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-7560240455456600122?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/7560240455456600122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=7560240455456600122' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/7560240455456600122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/7560240455456600122'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2008/03/how-to-deal-with-frustrating-ora-04068.html' title='Handling ORA-04068: Existing state of packages has been discarded'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-9008402951551441446</id><published>2008-01-15T09:50:00.007-06:00</published><updated>2011-03-01T09:48:28.047-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='merge'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql packages'/><category scheme='http://www.blogger.com/atom/ns#' term='upsert'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Upsert / Merge within the Same Table (Oracle)</title><content type='html'>Okay, I'm a huge fan of using Oracle's &lt;code&gt;%ROWTYPE&lt;/code&gt; to define records structures.  I love writing code like the following:

&lt;pre name="code" class="brush: sql"&gt;DECLARE

   rec_contract  CONTRACT%ROWTYPE := Null;

BEGIN

   -- ... retrieval logic and business logic ...

   -- "Set" logic
   UPDATE CONTRACT
   SET ROW = rec_contract
   WHERE CONTRACT_ID = rec_contract.CONTRACT_ID;

   IF (SQL%ROWCOUNT = 0) THEN
      INSERT INTO CONTRACT
      VALUES rec_contract;
   END IF;
END;
&lt;/pre&gt;

Code like the above is really convenient for writing "setters".  It can easily be extended to handle &lt;code&gt;DELETE&lt;/code&gt; logic too.

Now, recently I needed to copy a bunch of data &lt;i&gt;within the &lt;b&gt;same&lt;/b&gt; table&lt;/i&gt; but with a different primary key.  I started to write a bunch of code like the above, but I just needed some of code.  

To cut to the chase, the code below is an example of how to do an "&lt;span style="font-weight:bold; color: red;"&gt;UPSERT&lt;/span&gt;" (like a &lt;span style="font-weight:bold; color: red;"&gt;MERGE&lt;/span&gt;) but &lt;span style="font-weight:bold; color: red; font-style:italic; "&gt;within the same table&lt;/span&gt; [which is impossible with the &lt;code&gt;MERGE&lt;/code&gt; command].

&lt;span style="font-weight:bold;"&gt;Source:&lt;/span&gt;
&lt;pre name="code" class="brush: sql"&gt;drop table test;
clear;

create table test(
   id number(10),
 name varchar2(50)
);

insert into test(id,name) values (1,'First row');

insert into test
   using select 2,'Row two' from dual;

insert into test
   using select 3,'Row three - unmodified' from dual;

commit;

select * from test;

update test set (id,name) = (select 3,'Row three - modified' from test where id = 3) where id = 3;

commit;

select * from test;
&lt;/pre&gt;

&lt;span style="font-weight:bold;"&gt;Results:&lt;/span&gt;
&lt;pre&gt;Table created
 
1 row inserted
 
1 row inserted
 
1 row inserted
 
Commit complete
 
         ID NAME
----------- --------------------------------------------------
          1 First row
          2 Row two
          3 Row three - unmodified
 
1 row updated
 
Commit complete
 
         ID NAME
----------- --------------------------------------------------
          1 First row
          2 Row two
          3 Row three - modified
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-9008402951551441446?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/9008402951551441446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=9008402951551441446' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/9008402951551441446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/9008402951551441446'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2008/01/upsert-merge-within-same-table-oracle.html' title='Upsert / Merge within the Same Table (Oracle)'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-3736321970423972598</id><published>2007-10-17T12:52:00.000-05:00</published><updated>2008-01-15T10:17:17.638-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='suzuki katana'/><category scheme='http://www.blogger.com/atom/ns#' term='motorcycle'/><category scheme='http://www.blogger.com/atom/ns#' term='katana'/><category scheme='http://www.blogger.com/atom/ns#' term='suzuki'/><title type='text'>Suzuki Katana - Tire Pressure</title><content type='html'>I kept misplacing my notes about the tire pressure for my 2001 Katana 750... so I'm putting them here.

220 35/38
250 36.5/39.5

Per &lt;a href="http://www.drivegreen.com/Motorcycle_Tire_Pressure/SUZUKI.shtml"&gt;http://www.drivegreen.com/Motorcycle_Tire_Pressure/SUZUKI.shtml&lt;/a&gt;,

GSX750 Katana (1989-2002)
 
34 36&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-3736321970423972598?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/3736321970423972598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=3736321970423972598' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3736321970423972598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3736321970423972598'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2007/10/suzuki-katana-tire-pressure.html' title='Suzuki Katana - Tire Pressure'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-1513029339429498070</id><published>2007-10-12T00:03:00.000-05:00</published><updated>2012-01-26T11:55:40.227-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql developer'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlplus'/><category scheme='http://www.blogger.com/atom/ns#' term='instantclient'/><category scheme='http://www.blogger.com/atom/ns#' term='tnsping'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle: InstantClient, TNSPING, and PL/SQL Developer</title><content type='html'>Well, anyone that has tried to use &lt;code&gt;tnsping&lt;/code&gt; with Oracle's InstantClient (&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;a href="http://www.oracle.com/technology/tech/oci/instantclient/index.html"&gt;http://www.oracle.com/technology/tech/oci/instantclient/index.html&lt;/a&gt;&lt;/span&gt;) was in for a big nasty surprise... it's not included.  Not only is not included, you can't download a version that is compatible with InstantClient.

I've been a fan of &lt;code&gt;tnsping&lt;/code&gt; for some time.  It has always been valuable as a quick way to test the "reachability" factor of a particular database.  I now have to admit that it's not required since SQLPlus &lt;span style="font-style: italic;"&gt;technically&lt;/span&gt; can perform this functionality.  Well, habits die hard.

&lt;p /&gt;
&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;Goal:&lt;/span&gt; Get InstantClient working with &lt;code&gt;tnsping&lt;/code&gt; &lt;span style="font-style: italic;"&gt;and &lt;/span&gt;AllAroundAutomation's PL/SQL Developer (&lt;a href="http://www.allroundautomations.nl/plsqldev.html"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;http://www.allroundautomations.nl/plsqldev.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;).

&lt;p /&gt;
&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;Solution:

&lt;p /&gt;
&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Disclaimer:&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;ol&gt;&lt;li&gt;I don't want to tell you how long it took me to figure this all out, but it was way too long.&lt;/li&gt;&lt;li&gt;It's an &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;unacceptable&lt;/span&gt; solution from a long-term maintenance, support standpoint.
&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Steps:&lt;/span&gt;
&lt;ol&gt;&lt;li&gt;Download the appropriate InstantClient "base" (in other words, English-only or International).&lt;/li&gt;&lt;li&gt;Download the InstantClient SQL-Plus "add-on".&lt;/li&gt;&lt;li&gt;Extract both Zip files into the same directory [for this example, "&lt;span style="font-style: italic;"&gt;c:\oracle\instantclient&lt;/span&gt;"].&lt;/li&gt;&lt;li&gt;At this point, we haven't done anything special.&lt;/li&gt;&lt;li&gt;Define an environment variable &lt;code&gt;oracle_home&lt;/code&gt; that points to the location of your InstantClient directory (&lt;span style="font-style: italic;"&gt;e.g.:&lt;/span&gt; "&lt;span style="font-style: italic;"&gt;c:\oracle\instantclient&lt;/span&gt;").&lt;/li&gt;&lt;li&gt;Create a subdirectory called "&lt;code&gt;network&lt;/code&gt;" (&lt;span style="font-style: italic;"&gt;c:\oracle\instantclient\&lt;span style="font-weight: bold;"&gt;network&lt;/span&gt;&lt;/span&gt;).&lt;/li&gt;&lt;li&gt;In "&lt;code&gt;network&lt;/code&gt;", create a subdirectory called "&lt;code&gt;admin&lt;/code&gt;".&lt;/li&gt;&lt;li&gt;If desired, put your &lt;code&gt;tnsnames.ora&lt;/code&gt; and &lt;code&gt;sqlnet.ora&lt;/code&gt; in &lt;span style="font-style: italic;"&gt;c:\oracle\instantclient\&lt;span style="font-weight: bold;"&gt;network\admin&lt;/span&gt;&lt;/span&gt; [technically, this isn't required but it follows Oracle's "standards"].&lt;/li&gt;&lt;li&gt;Define an environment variable &lt;code&gt;tns_admin&lt;/code&gt; that points to the location of your &lt;code&gt;tnsnames.ora&lt;/code&gt; (if you are using one).&lt;/li&gt;&lt;li&gt;In "&lt;code&gt;network&lt;/code&gt;", create a subdirectory called "&lt;code&gt;mesg&lt;/code&gt;".&lt;/li&gt;&lt;li&gt;From an Oracle 10.x Fat client installation, copy &lt;code&gt;tnsus.msb&lt;/code&gt; into &lt;span style="font-style: italic;"&gt;c:\oracle\instantclient\&lt;span style="font-weight: bold;"&gt;network\mesg&lt;/span&gt;&lt;/span&gt;.  This is the file that tnsping uses to "lookup" the message text while running.&lt;/li&gt;&lt;li&gt;At this point, you should be able to fire up PL/SQL Dev and still have things work.&lt;/li&gt;
&lt;span style="font-style: italic; color: rgb(204, 51, 204);"&gt;Okay, now the weird part starts&lt;/span&gt;.

&lt;li&gt;Create a subdirectory called "&lt;code&gt;bin&lt;/code&gt;" (&lt;span style="font-style: italic;"&gt;c:\oracle\instantclient&lt;span style="font-weight: bold;"&gt;\bin&lt;/span&gt;&lt;/span&gt;), and yes, it must be called &lt;code&gt;bin&lt;/code&gt;.
&lt;/li&gt;&lt;li&gt;From an Oracle 10.x Fat client installation the following files into &lt;span style="font-style: italic;"&gt;c:\oracle\instantclient\&lt;span style="font-weight: bold;"&gt;bin&lt;/span&gt;&lt;/span&gt;:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;heteroxa10.dll&lt;/li&gt;&lt;li&gt;oci.dll&lt;/li&gt;&lt;li&gt;ocijdbc10.dll&lt;/li&gt;&lt;li&gt;ociw32.dll&lt;/li&gt;&lt;li&gt;oraclient10.dll
&lt;/li&gt;&lt;li&gt;oracommon10.dll
&lt;/li&gt;&lt;li&gt;oracore10.dll
&lt;/li&gt;&lt;li&gt;orageneric10.dll
&lt;/li&gt;&lt;li&gt;orahasgen10.dll
&lt;/li&gt;&lt;li&gt;oraldapclnt10.dll
&lt;/li&gt;&lt;li&gt;oran10.dll
&lt;/li&gt;&lt;li&gt;orancds10.dll
&lt;/li&gt;&lt;li&gt;orancrypt10.dll
&lt;/li&gt;&lt;li&gt;oranhost10.dll
&lt;/li&gt;&lt;li&gt;oranl10.dll
&lt;/li&gt;&lt;li&gt;oranldap10.dll
&lt;/li&gt;&lt;li&gt;oranls10.dll
&lt;/li&gt;&lt;li&gt;orannzsbb10.dll
&lt;/li&gt;&lt;li&gt;oranro10.dll
&lt;/li&gt;&lt;li&gt;orantcp10.dll
&lt;/li&gt;&lt;li&gt;orantns10.dll
&lt;/li&gt;&lt;li&gt;oraocci10.dll
&lt;/li&gt;&lt;li&gt;oraociicus10.dll
&lt;/li&gt;&lt;li&gt;oraocr10.dll
&lt;/li&gt;&lt;li&gt;oraocrb10.dll
&lt;/li&gt;&lt;li&gt;oraplp10.dll
&lt;/li&gt;&lt;li&gt;orapls10.dll
&lt;/li&gt;&lt;li&gt;ORASLAX10.DLL
&lt;/li&gt;&lt;li&gt;orasnls10.dll
&lt;/li&gt;&lt;li&gt;orasql10.dll
&lt;/li&gt;&lt;li&gt;Orasqlplusic10.dll
&lt;/li&gt;&lt;li&gt;oraunls10.dll
&lt;/li&gt;&lt;li&gt;orauts.dll
&lt;/li&gt;&lt;li&gt;orauts_imp.dll
&lt;/li&gt;&lt;li&gt;oravsn10.dll
&lt;/li&gt;&lt;li&gt;oraxml10.dll
&lt;/li&gt;&lt;li&gt;sqora32.dll
&lt;/li&gt;&lt;li&gt;sqoras32.dll
&lt;/li&gt;&lt;li&gt;sqresja.dll
&lt;/li&gt;&lt;li&gt;sqresus.dll
&lt;/li&gt;&lt;li&gt;tnsping.exe
&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;Now, copy all the files from &lt;span style="font-style: italic;"&gt;c:\oracle\instantclient&lt;/span&gt; into &lt;span style="font-style: italic;"&gt;c:\oracle\instantclient&lt;span style="font-weight: bold;"&gt;\bin&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);"&gt;except those that already exist.&lt;/span&gt;
&lt;/li&gt;&lt;/ol&gt;At this point, InstantClient is "valid", PL/SQL Developer works [but it's actually using &lt;span style="font-style: italic;"&gt;c:\oracle\instantclient\bin&lt;/span&gt;, and &lt;code&gt;tnsping&lt;/code&gt; should work from &lt;span style="font-style: italic;"&gt;c:\oracle\instantclient\bin&lt;/span&gt;.

Talk about smells bad.

So if you want &lt;code&gt;tnsping&lt;/code&gt; for InstantClient, create this nightmare-ish drink from this recipe or complain to Oracle and ask for a InstantClient-compatible version of &lt;code&gt;tnsping&lt;/code&gt;.

Jason&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-1513029339429498070?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/1513029339429498070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=1513029339429498070' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1513029339429498070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1513029339429498070'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2007/10/oracle-instantclient-tnsping-and-plsql.html' title='Oracle: InstantClient, TNSPING, and PL/SQL Developer'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-3706958164658714128</id><published>2007-08-09T12:40:00.000-05:00</published><updated>2007-08-09T12:42:08.868-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google Search</title><content type='html'>I recently discovered that my Blog wasn't being picked up correctly by Google.  A little odd since Blogger/Blogspot is owned by Google.  I hoping that it is just an issue with bad keywords/meta-tags.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-3706958164658714128?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/3706958164658714128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=3706958164658714128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3706958164658714128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3706958164658714128'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2007/08/google-search.html' title='Google Search'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-5335218404647319155</id><published>2007-02-19T10:14:00.001-06:00</published><updated>2009-01-21T14:31:27.194-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Rails : Maintaining an Oracle connection (preventing a timeout)</title><content type='html'>Kubo posted a good note about how to maintain an "active" connection to Oracle from Rails.

Add the following code at the end of '&lt;code&gt;config/environment.rb&lt;/code&gt;' as a workaround.
&lt;pre name="code" class="ruby"&gt;Thread.new(ActiveRecord::Base.connection.raw_connection) do |conn|
  # run a SQL every one hour.
  while true
    sleep(3600)
    conn.exec('select 1 from dual') {}
  end
end
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-5335218404647319155?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://rubyforge.org/forum/message.php?msg_id=18186' title='Rails : Maintaining an Oracle connection (preventing a timeout)'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/5335218404647319155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=5335218404647319155' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5335218404647319155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5335218404647319155'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2007/02/rails-maintaining-oracle-connection.html' title='Rails : Maintaining an Oracle connection (preventing a timeout)'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-5261078882038975803</id><published>2007-02-02T01:01:00.001-06:00</published><updated>2009-01-21T14:31:39.101-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby-code.snippet'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Ruby : WebService - GetQuote</title><content type='html'>&lt;pre name="code" class="ruby"&gt;require 'soap/wsdlDriver'

wsdl = "http://www.webservicex.net/stockquote.asmx?wsdl"

params = {:symbol =&gt; "IBM"}

drv = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
drv.wiredump_dev = STDOUT if $DEBUG
result = drv.GetQuote(params)

puts "\n\nGetQuote : "+result.inspect+"\n\n"

if (result != nil)

 puts "\n\Result.getQuoteResult.methods : "+result.getQuoteResult.methods.sort.join("\n").to_s+"\n\n"
#   puts "Symbol : "+result.getQuoteResult.stockQuotes.Stock.Symbol

end
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-5261078882038975803?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/5261078882038975803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=5261078882038975803' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5261078882038975803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5261078882038975803'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2007/02/ruby-webservice-getquote.html' title='Ruby : WebService - GetQuote'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-6876467431566431707</id><published>2007-01-31T10:35:00.001-06:00</published><updated>2009-01-21T14:34:35.667-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby-code.snippet'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Ruby - Code Snippet - Methods List</title><content type='html'>Just a snippet how to print out a sorted list of an object's methods.
 
&lt;pre name="code" class="ruby"&gt;puts "\n\object.methods : "+ object.methods.sort.join("\n").to_s+"\n\n"&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-6876467431566431707?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/6876467431566431707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=6876467431566431707' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6876467431566431707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6876467431566431707'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2007/01/ruby-code-snippet-methods-list.html' title='Ruby - Code Snippet - Methods List'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-3972591371312992351</id><published>2006-12-13T09:42:00.001-06:00</published><updated>2009-01-21T14:34:58.077-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Ruby - Default Values for Method Arguments</title><content type='html'>&lt;pre name="code" class="ruby"&gt;&gt;&gt; def test(args)
&gt;  &gt;&gt;   puts args.values_at(:a, :b, :c)
&gt;  &gt;&gt; end
&gt; =&gt; nil
&gt;  &gt;&gt; test :a =&gt; 1, :c =&gt; 2

def test(args)
&gt;&gt;   args = { "a" =&gt; "default a",
?&gt;            "b" =&gt; "default b",
?&gt;            "c" =&gt; "default c" }.merge(args)
&gt;&gt;   puts args.values_at("a", "b", "c")
&gt;&gt; end
=&gt; nil
&gt;&gt; test "a" =&gt; "some a", "c" =&gt; "some c"
some a
default b
some c
=&gt; nil
&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Source :&lt;/span&gt;
&lt;pre name="code" class="ruby"&gt;def test(args)
  args[:a] ||= 'defaultA'
  args[:b] ||= 'defaultB'
  args[:c] ||= 'defaultC'
  puts args.indexes(:a, :b, :c)
end
&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Result:&lt;/span&gt;

Breaks when...
&lt;pre name="code" class="ruby"&gt;test :a =&gt; false
test :a =&gt; nil
test 'a' =&gt; true
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-3972591371312992351?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://groups-beta.google.com/group/comp.lang.ruby/browse_frm/thread/728ed1aa36935f2e/#' title='Ruby - Default Values for Method Arguments'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/3972591371312992351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=3972591371312992351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3972591371312992351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/3972591371312992351'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/12/ruby-default-values-for-method.html' title='Ruby - Default Values for Method Arguments'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-7191978271933713141</id><published>2006-12-13T09:38:00.001-06:00</published><updated>2009-01-21T14:41:08.293-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Ruby - How do I catch a missing method on a passed block</title><content type='html'>J.Vogel - Copied... from Erik V. - http://www.erikveen.dds.nl/

&lt;pre name="code" class="ruby"&gt;
module Kernel
  def block_with_method_missing(block1, &amp;block2)
    class &lt;&lt; block1
      self
    end.module_eval do
      define_method(:method_missing, &amp;block2)
      define_method(:call){block1.instance_eval(&amp;block1)}
    end

    block1
  end
end

class Foo
  def bar(&amp;block)
    block = method_missing_inspect(block)

    block.call
  end

  def method_missing_inspect(block)
    block_with_method_missing(block) do |method_name, *args|
      p [:mm, method_name, args]
    end
  end
end

Foo.new.bar{baz(1, 2, 3)}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-7191978271933713141?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://groups-beta.google.com/group/comp.lang.ruby/browse_frm/thread/cc5c6e8bb05fb31a/0e5b4a722ab6a9a3#0e5b4a722ab6a9a3' title='Ruby - How do I catch a missing method on a passed block'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/7191978271933713141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=7191978271933713141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/7191978271933713141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/7191978271933713141'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/12/ruby-how-do-i-catch-missing-method-on.html' title='Ruby - How do I catch a missing method on a passed block'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-6636240811716402483</id><published>2006-12-06T23:52:00.001-06:00</published><updated>2009-01-21T14:36:48.049-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='partials'/><category scheme='http://www.blogger.com/atom/ns#' term='view'/><title type='text'>Rails : View - Partials</title><content type='html'>Partials are awesome...
&lt;pre name="code" class="ruby"&gt;&lt;%= render :partial =&gt; "coverages"  unless @base_coverages.blank? %&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-6636240811716402483?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/6636240811716402483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=6636240811716402483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6636240811716402483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6636240811716402483'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/12/rails-view-partials.html' title='Rails : View - Partials'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-1297653060529573248</id><published>2006-12-06T22:31:00.001-06:00</published><updated>2011-08-17T07:22:25.360-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='environment.rb'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='models'/><title type='text'>Rails - Automatic Reloading and Models</title><content type='html'>I'm fairly new to RoR.  I have to admit that I'm pretty excited about exiting the Code-Compile-Deploy-Run cycle because of &lt;code&gt;config.cache_classes = false&lt;/code&gt; in &lt;code&gt;\environments\development.rb&lt;/code&gt;.  However, I've discovered that doesn't apply to Models.  Models are loaded at server startup.  Therefore, we're back to the stop..start to pickup Models changes.  &lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;I haven't tried either of these yet!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Two options:&lt;/span&gt; &lt;ul&gt;&lt;li&gt;Reload the models through &lt;span style="font-style: italic;"&gt;console&lt;/span&gt; &lt;pre&gt;ruby script\console
Dispatcher.reset_application!
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.wejn.org/stuff/rails-reloadable-custom-models.html"&gt;http://www.wejn.org/stuff/rails-reloadable-custom-models.html&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-1297653060529573248?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.wejn.org/stuff/rails-reloadable-custom-models.html' title='Rails - Automatic Reloading and Models'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/1297653060529573248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=1297653060529573248' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1297653060529573248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/1297653060529573248'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/12/rails-automatic-reloading-and-models.html' title='Rails - Automatic Reloading and Models'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-8092535301110972667</id><published>2006-12-06T21:56:00.001-06:00</published><updated>2009-01-21T14:36:56.878-06:00</updated><title type='text'>Ruby: View - Inserting Text</title><content type='html'>&lt;pre name="code" class="ruby"&gt;&lt;%= "hello" %&gt;&lt;/pre&gt;
or
&lt;pre name="code" class="ruby"&gt;&lt;%= concat("hello", binding) %&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-8092535301110972667?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/8092535301110972667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=8092535301110972667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8092535301110972667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/8092535301110972667'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/12/ruby-view-inserting-text.html' title='Ruby: View - Inserting Text'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4603990873558259189</id><published>2006-12-06T13:31:00.001-06:00</published><updated>2009-01-21T14:41:26.659-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Rails: Snippet - View - Render a Object into a Table</title><content type='html'>Please don't get all bent out of shape.

My Rails code isn't perfect, but I wanted to post some of my snippets that do work!
&lt;pre name="code" class="ruby"&gt;&lt;% if (@base_coverages != nil) &amp;amp;&amp;amp; (@base_coverages.length &gt; 0) %&gt;
&lt;&gt;
&lt;% @base_coverages.each do |i| %&gt;
&lt;&gt;"&gt;
  &lt;&gt;&lt;%= i.coverage_id %&gt;&lt; /td&gt;
  &lt;&gt;&lt;%= i.external_description %&gt;&lt; /td&gt;
&lt; /tr&gt;
&lt;% end %&gt;
&lt; /tbody&gt;&lt; /table&gt;
&lt;% end %&gt;

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4603990873558259189?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4603990873558259189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4603990873558259189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4603990873558259189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4603990873558259189'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/12/rails-snippet-view-render-object-into.html' title='Rails: Snippet - View - Render a Object into a Table'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-4842744925428063075</id><published>2006-12-06T00:24:00.001-06:00</published><updated>2009-01-21T14:37:39.966-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Ruby : Defaulted optional arguments</title><content type='html'>I'd seen this technique, but I'd lost it.

&lt;pre name="code" class="ruby"&gt;def placeholder(requiredarg, options = {})
  # set default options
  o = { :class =&gt; 'placeholder', :tag =&gt; 'p' }.merge(options)

  ...
end&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-4842744925428063075?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.bigbold.com/snippets/tag/helper' title='Ruby : Defaulted optional arguments'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/4842744925428063075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=4842744925428063075' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4842744925428063075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/4842744925428063075'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/12/ruby-defaulted-optional-arguments.html' title='Ruby : Defaulted optional arguments'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-5434058721755867711</id><published>2006-12-05T09:21:00.000-06:00</published><updated>2006-12-05T09:28:16.579-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='assert'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Rails - Value Checking</title><content type='html'>These are all options posted to me:

&lt;ul&gt;&lt;li&gt; return [] unless myvalue  &lt;/li&gt;&lt;li&gt;&lt;p&gt;return unless arguments.all?
&lt;/p&gt;&lt;p&gt;'arguments.all?' will return true if and only if none of the 
collection members is false or nil.
&lt;/p&gt;&lt;p&gt;If an argument can be false, you could do this:
&lt;/p&gt;return unless arguments.all? { |arg| !arg.nil? }&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;raise ArgumentError, "Parameter X is required" if x.blank? &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-5434058721755867711?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://groups-beta.google.com/group/rubyonrails-talk/browse_frm/thread/6b75d4825d25e39a' title='Rails - Value Checking'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/5434058721755867711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=5434058721755867711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5434058721755867711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5434058721755867711'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/12/rails-value-checking.html' title='Rails - Value Checking'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-6293241463754993476</id><published>2006-11-29T16:14:00.000-06:00</published><updated>2006-11-29T16:24:01.164-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Enterprise Ruby / Rails : Links to Review</title><content type='html'>This is just a blog note to myself to review :

&lt;ul&gt;&lt;li&gt;&lt;a href="http://mongrel.rubyforge.org/docs/how_many_mongrels.html"&gt;http://mongrel.rubyforge.org/docs/how_many_mongrels.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://poocs.net/2006/3/13/the-adventures-of-scaling-stage-1"&gt;http://poocs.net/2006/3/13/the-adventures-of-scaling-stage-1&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://defendem.com/read/book/1"&gt;http://defendem.com/read/book/1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.rubygarden.org/Ruby/page/show/ObjectPoolingAndThreading"&gt;http://wiki.rubygarden.org/Ruby/page/show/ObjectPoolingAndThreading&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://railstips.org/2006/11/13/building-a-multi-site-supported-application"&gt;http://railstips.org/2006/11/13/building-a-multi-site-supported-application&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://robertrevans.com/article/rails-caching"&gt;http://robertrevans.com/article/rails-caching&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
&lt;/li&gt;&lt;/ul&gt;Jason&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-6293241463754993476?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/6293241463754993476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=6293241463754993476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6293241463754993476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/6293241463754993476'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/11/enterprise-ruby-rails-links-to-review.html' title='Enterprise Ruby / Rails : Links to Review'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-266411639207543144</id><published>2006-11-27T13:05:00.005-06:00</published><updated>2009-07-21T08:41:51.713-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sysdate'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle performance tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>PL/SQL : Example using SysTimeStamp (milliseconds for SysDate)</title><content type='html'>Oracle's &lt;code&gt;SYSDATE&lt;/code&gt; only goes to the second.  If you want more precision, then you need to use the new &lt;code&gt;SYSTIMESTAMP&lt;/code&gt; (available starting in Oracle 9).

&lt;span style="font-weight: bold;"&gt;Source : &lt;/span&gt;
&lt;pre name="code" class="sql"&gt;declare

ltimestamp_start       timestamp;
ltimestamp_stop        timestamp;
linterval_diff         interval day to second;

ldt_temp               date;

begin

ltimestamp_start := systimestamp;
dbms_output.put_line(ltimestamp_start);

  -- Routine to performance test... 
  for i in 1 .. 10000 loop
    select sysdate into ldt_temp from dual;
  end loop;

ltimestamp_stop := systimestamp;
dbms_output.put_line(ltimestamp_stop);

linterval_diff := ltimestamp_stop - ltimestamp_start;

dbms_output.put_line(CHR(10)||LPAD('=',22,'=')||CHR(10));
dbms_output.put_line('  Runtime Difference'||CHR(10)||LPAD('=',22,'='));
dbms_output.put_line(
     '     Days : '||EXTRACT(DAY FROM linterval_diff)||CHR(10)||
     '    Hours : '||EXTRACT(HOUR FROM linterval_diff)||CHR(10)||
     '  Minutes : '||EXTRACT(MINUTE FROM linterval_diff)||CHR(10)||
     '  Seconds : '||EXTRACT(SECOND FROM linterval_diff) );
end;&lt;/pre&gt;

&lt;span style="font-weight: bold;"&gt;Results :&lt;/span&gt;
&lt;pre&gt;27-NOV-06 01.26.50.118424 PM
27-NOV-06 01.26.51.125141 PM

======================
Runtime Difference
======================
Days : 0
Hours : 0
Minutes : 0
Seconds : 1.006717

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-266411639207543144?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jasonvogel.blogspot.com/2006/09/oracle-and-getting-milliseconds-from.html' title='PL/SQL : Example using SysTimeStamp (milliseconds for SysDate)'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/266411639207543144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=266411639207543144' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/266411639207543144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/266411639207543144'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/11/example-using-systimestamp-milliseconds.html' title='PL/SQL : Example using SysTimeStamp (milliseconds for SysDate)'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-541611375772401260</id><published>2006-11-27T10:24:00.006-06:00</published><updated>2010-11-03T12:53:55.073-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><title type='text'>PL/SQL: Joinrows - Convert multiple [returned cursor] rows into one row</title><content type='html'>This routine converts multiple rows into a single row.  The trick is to pass the data via a &lt;code&gt;SYS_REFCURSOR&lt;/code&gt; (see the &lt;code style="font-weight: bold; font-style: italic; color: rgb(0, 153, 0);"&gt;CURSOR&lt;/code&gt; call in the example).

&lt;span style="font-weight: bold;"&gt;Example Usage :&lt;/span&gt;&lt;br /&gt;

&lt;pre name="code" class="brush: sql"&gt;select joinrows(cursor(select contract_id from contract where rownum &lt; 10 )) from dual;
&lt;/pre&gt;

&lt;pre name="code" class="brush: sql"&gt;CREATE OR REPLACE FUNCTION joinrows(
 sysref_cursor_in      sys_refcursor,
 s_delimiter_in        VARCHAR2 := ',' )
RETURN VARCHAR2
IS
   s_value            VARCHAR2(32767) := Null;
   s_result           VARCHAR2(32767) := Null;
   s_delimiter        VARCHAR2(100) := NVL(s_delimiter_in,',');
BEGIN

   LOOP
      FETCH sysref_cursor_in
         INTO s_value;

      EXIT WHEN sysref_cursor_in%NOTFOUND;

      IF (s_result IS NOT NULL) THEN
       s_result := s_result||s_delimiter;
      END IF;

      s_result := s_result||s_value;

   END LOOP;

   RETURN s_result;

END joinrows;&lt;/pre&gt;

&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Results:&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;0,2,3,9,37,404,818,991,1178&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-541611375772401260?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/541611375772401260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=541611375772401260' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/541611375772401260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/541611375772401260'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/11/plsql-join-convert-multiple-returned.html' title='PL/SQL: Joinrows - Convert multiple [returned cursor] rows into one row'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-5398647295291291696</id><published>2006-11-21T10:57:00.008-06:00</published><updated>2009-02-09T11:39:13.784-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql packages'/><category scheme='http://www.blogger.com/atom/ns#' term='arrays'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Ruby: Invoking a PL/SQL Package with Array args</title><content type='html'>I'm fairly new to Ruby (and subsequently to Rails).  I would be normally be labeled an "Enterprise Developer"... yada, yada.   Anyway, I'm trying to invoke a Oracle PL/SQL Package from Ruby that has &lt;code&gt;IN&lt;/code&gt; and &lt;code&gt;OUT&lt;/code&gt; arguments that are &lt;span style="font-weight: bold; font-style: italic;"&gt;arrays&lt;/span&gt; (&lt;code&gt;TABLE OF VARCHAR2 INDEX BY BINARY-INTEGER&lt;/code&gt;, in Oracle PL/SQL terms).

We have a fairly extensive library of PL/SQL that I want to reuse.  This technique also works with Oracle Types (&lt;code&gt;CREATE OR REPLACE TYPE PROD_TYPES.TYPE_STRING_ARRAY AS TABLE OF VARCHAR2(2000);&lt;/code&gt;).

&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;Related Posts :&lt;/span&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://rubyforge.org/projects/ruby-oci8/"&gt;http://rubyforge.org/projects/ruby-oci8/&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.rubyonrails.org/rails/pages/OracleStoredProceduresAsDataSource"&gt;http://wiki.rubyonrails.org/rails/pages/OracleStoredProceduresAsDataSource
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/technology/pub/articles/haefel-oracle-ruby.html"&gt;http://www.oracle.com/technology/pub/articles/haefel-oracle-ruby.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I've spent several weeks trying to come up with a solution.

First, the best solution would be for Oracle to write the OCI driver for Ruby.  &lt;a href="http://rubyforge.org/projects/ruby-oci8/"&gt;&lt;span style="font-weight: bold;"&gt;OCI8&lt;/span&gt;&lt;/a&gt; [&lt;a href="http://rubyforge.org/projects/ruby-oci8/"&gt;http://rubyforge.org/projects/ruby-oci8/&lt;/a&gt;] (by Kubo Takehiro) is wonderful, but he is still a person.  For companies to adopt and support Ruby/Rails, the support needs to be more robust.  Upper Management and Operations resist open source.  Single person supported software is easier for them to dismiss.  I would prefer that Oracle had an OCI expert write and maintain the library (along the lines of their support for PHP).  If this were the case, then the driver could support returning arrays &lt;span style="font-style: italic;"&gt;natively&lt;/span&gt;.

&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;My PL/SQL Packages :&lt;/span&gt;
&lt;pre name="code" class="sql"&gt;CREATE OR REPLACE PACKAGE common_func IS
TYPE string_table IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
END common_func;
/
CREATE OR REPLACE PACKAGE BODY common_func
IS
BEGIN
   NULL;
END common_func;
/
create or replace package ruby_test is

function f_ruby(s in number,t out varchar2,st out common_func.string_table)

end ruby_test;
/
create or replace package body ruby_test is

function f_ruby(s in number,t out varchar2,st out common_func.string_table)
return varchar2
is
begin
   t := 'outta here';
   st(1) := 'array 1';
   st(2) := 'array 2';
   return 'Ruby rocks '||TO_CHAR(NVL(s,5))||' times!';
end;

begin
   null;
end ruby_test;
&lt;/pre&gt;

&lt;span style="font-weight: bold;"&gt;Desired Ruby :&lt;/span&gt;

&lt;pre name="code" class="ruby"&gt;cursor = conn.parse("BEGIN :result := ruby_test.f_ruby(s =&gt; :in,t =&gt; :out,st =&gt; st); END;")

cursor.bind_param(':result', nil, String, 100)
cursor.bind_param(':in', 10)
cursor.bind_param(':out', nil, String, 100)
# cursor.bind_param(':out_array', Array, 100) &lt;= I tried this too!
cursor.bind_param(':out_array', String[], 100)

cursor.exec()

p cursor[':result'] # =&gt; 'Ruby rocks 10 times!'
p cursor[':out'] # =&gt; 'outta here'
p cursor[':out_array'] # =&gt; 'st(1) = array 1, st(2) = array 2' !!! Fails
&lt;/pre&gt;

&lt;span style="font-weight: bold;"&gt;First Solution : &lt;/span&gt;

Convert the array to a string, bind to that string, and then split the delimited string apart on the Ruby side.  I don't care for this solution for a couple of reasons :
&lt;ul&gt;&lt;li&gt;Size issue at 32K&lt;/li&gt;&lt;li&gt;What delimiter should I use?  How do I know that it will be the "&lt;span style="font-style: italic;"&gt;right&lt;/span&gt;" delimiter?
&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;First Solution (Revised) :&lt;/span&gt;

I could switch from a string bind argument to a &lt;code&gt;CLOB&lt;/code&gt;.  OCI8 supports CLOBs, but I couldn't get it to work.  The documentation is incomplete, and I'm not fluent enough in Ruby.  Hints back to my issue with the library being solely maintained.

&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;Current Solution :&lt;/span&gt;

Convert the string array to a &lt;span style="font-style: italic;"&gt;reference cursor&lt;/span&gt; (&lt;code&gt;SYS_REFCURSOR&lt;/code&gt;) and use OCI8's bind to &lt;code&gt;OCI::CURSOR&lt;/code&gt; support.

&lt;span style="font-weight: bold;"&gt;Type : &lt;/span&gt;

&lt;pre name="code" class="sql"&gt;CREATE OR REPLACE TYPE PROD_TYPES.TYPE_STRING_ARRAY AS TABLE OF VARCHAR2(2000)
&lt;/pre&gt;

&lt;span style="font-weight: bold;"&gt;Cursor Package :&lt;/span&gt;
&lt;pre name="code" class="sql"&gt;CREATE OR REPLACE PACKAGE cursor_func IS
/**
Converts an array into a SYS_REFCURSOR (System Reference Cursor)

@Return
{*} SysRefCursor Success
{*} Exception Error
*/
FUNCTION f_array_to_SYSREFCURSOR(
   st_array_in       IN   common_func.STRING_TABLE )
RETURN SYS_REFCURSOR;
PRAGMA RESTRICT_REFERENCES(f_array_to_sysrefcursor,WNDS,TRUST);

END cursor_func;
/
CREATE OR REPLACE PACKAGE BODY cursor_func IS

/**
Converts an array into a SYS_REFCURSOR (System Reference Cursor)

@Return
{*} SysRefCursor Success
{*} Exception Error
*/
FUNCTION f_array_to_SYSREFCURSOR(
   st_array_in       IN   common_func.STRING_TABLE )
RETURN SYS_REFCURSOR
IS
   lsysrefcursor_array  SYS_REFCURSOR;
   le_error      EXCEPTION;

   lst_prodtypes    prod_types.type_string_array;

BEGIN

   lst_prodtypes := common_func.convert_table(st_array_in);

  OPEN lsysrefcursor_array FOR
     SELECT column_value FROM TABLE(cast(lst_prodtypes AS prod_types.type_string_array));

   RETURN lsysrefcursor_array;

END f_array_to_SYSREFCURSOR;

BEGIN
   Null;
END cursor_func;
&lt;/pre&gt;

&lt;span style="font-weight: bold;"&gt;Ruby Source :&lt;/span&gt;
&lt;pre name="code" class="ruby"&gt;plsql = conn.parse(
"DECLARE "+
"   st common_func.string_table; " +
"BEGIN "+
"   :result := ruby_test.f_ruby(s =&gt; :in,t =&gt; :out, st =&gt; st); " +
"   :cst := cursor_func.f_array_to_SYSREFCURSOR(st_array_in =&gt; st); " +
"END;")

plsql.bind_param(':result', nil, String, 100)
plsql.bind_param(':in', 10)
plsql.bind_param(':out', nil, String, 100)
plsql.bind_param(':cst', OCI8::Cursor)

plsql.exec()

puts "\nResults from returning a SysRefCursor\n"

p plsql[':result'] # =&gt; 'Ruby rocks 10 times!'
p plsql[':out'] # =&gt; 'outta here'

cursor = plsql[':cst']

plsql.close

x = ''
while r = cursor.fetch()
x = x + r.join(', ') + "\n"
end
cursor.close() &lt;span style="font-style: italic; color: rgb(255, 0, 0); font-weight: bold;"&gt;# &lt;= Don't forgot this&lt;/span&gt;

puts x
&lt;/pre&gt;

&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;And success, finally!&lt;/span&gt;
&lt;pre&gt;Results from returning a SysRefCursor
"Ruby rocks 10 times"
"outta here"
array 1
array 2
&lt;/pre&gt;

&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Warning :&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;There are two potential gotchas to this solution :&lt;/span&gt;
&lt;ul&gt;&lt;li&gt;If the developer forgets the cursor.close statement, the transaction could be jeopardized if there are too many cursors opened.  I don't remember which &lt;code&gt;ORA-#####&lt;/code&gt; this is.&lt;/li&gt;&lt;li&gt;A single database session could run into issues with just having too many reference cursors open at any one instant.
&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Native support for arrays would be a blessing.&lt;/span&gt;

&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;Posts of Interest :&lt;/span&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://sqlrelay.sourceforge.net/sqlrelay/programming/rubydbi.html"&gt;http://sqlrelay.sourceforge.net/sqlrelay/programming/rubydbi.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-5398647295291291696?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/5398647295291291696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=5398647295291291696' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5398647295291291696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/5398647295291291696'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/11/invoking-plsql-package-routine-with.html' title='Ruby: Invoking a PL/SQL Package with Array args'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116344759154213457</id><published>2006-11-13T13:53:00.002-06:00</published><updated>2009-01-22T12:58:43.596-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='helloworld'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Rails: Hello World / HelloWorld</title><content type='html'>&lt;p&gt;Assuming that Ruby and Rails are already installed...&lt;/p&gt;Go to the appropriate top level directory [where you want to create your new application].  For me, &lt;em&gt;c:\develop\rubysrc&lt;/em&gt;.
 &lt;ol&gt;&lt;li&gt;&lt;code&gt;rails helloworld&lt;/code&gt;&lt;/li&gt;   &lt;li&gt;&lt;code&gt;cd helloworld&lt;/code&gt;&lt;/li&gt;       &lt;li&gt;&lt;code&gt;ruby script\generate controller helloworld&lt;/code&gt;&lt;/li&gt;   &lt;li&gt;You can either:
     &lt;ul&gt;
         &lt;li&gt;Use the controller &lt;strong&gt;DIRECTLY&lt;/strong&gt;...&lt;/li&gt;      &lt;/ul&gt;
&lt;pre name="code" class="ruby"&gt;class HelloController &lt; ApplicationController
def index
render_text &amp;lt;&amp;lt; EOF
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;Rails HelloWorld from Controller&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
HelloWorld from Controller
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
EOF
end
end
&lt;/pre&gt;

&lt;ul&gt;&lt;li&gt;Use a view... Create a file called &lt;em&gt;&lt;strong&gt;index.rhtml&lt;/strong&gt;&lt;/em&gt; in &lt;em&gt;app/views/helloworld&lt;/em&gt;, containing "Hello World"&lt;/li&gt;       &lt;/ul&gt;       &lt;pre name="code" class="ruby"&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;Rails HelloWorld from View&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
HelloWorld from View
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;   &lt;/li&gt;   &lt;li&gt;&lt;code&gt;ruby script\server&lt;/code&gt;&lt;/li&gt;
 &lt;li&gt;Navigate to &lt;a href="http://localhost:3000/helloworld"&gt;http://localhost:3000/helloworld&lt;/a&gt; in your browser and be greeted with your friendly application: "Hello World"&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116344759154213457?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116344759154213457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116344759154213457' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116344759154213457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116344759154213457'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/11/rails-hello-world-helloworld.html' title='Rails: Hello World / HelloWorld'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116293880616916782</id><published>2006-11-07T16:33:00.000-06:00</published><updated>2007-10-15T14:05:27.917-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='html-forms'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP: Autofilled Forms</title><content type='html'>&lt;p&gt;Source URL : &lt;a href="http://www.onlamp.com/pub/a/php/2006/03/16/autofill-forms.html"&gt;http://www.onlamp.com/pub/a/php/2006/03/16/autofill-forms.html&lt;/a&gt;&lt;/p&gt;This looks like a clever way to design PHP forms (be sure and check out the forums for issues).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116293880616916782?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116293880616916782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116293880616916782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116293880616916782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116293880616916782'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/11/autofilled-php-forms.html' title='PHP: Autofilled Forms'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116259328256931503</id><published>2006-11-03T16:34:00.013-06:00</published><updated>2010-11-03T12:54:59.854-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle: SQL - Converting one row into two rows [multiple rows]</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Problem : &lt;/span&gt;

A single row needs to be converted into two rows.

&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;Solution 1 :&lt;/span&gt;
&lt;p&gt;
Prerequite : 
&lt;pre name="code" class="brush: sql"&gt;CREATE OR REPLACE TYPE PROD_TYPES.TYPE_STRING_ARRAY AS TABLE OF VARCHAR2(2000)
&lt;/pre&gt;

Function : This routine handles an unlimited number of desired rows as opposed to Solution 2.
&lt;pre name="code" class="brush: sql"&gt;CREATE OR REPLACE FUNCTION split (
 s_delimited_list_in     VARCHAR2,
 s_delimiter_in          VARCHAR2 := ',')
RETURN prod_types.type_string_array PIPELINED
IS
/*
@Usage Example:
select * from table(split('one,two,three'));
*/
 l_idx               PLS_INTEGER;
 l_list              VARCHAR2(32767) := s_delimited_list_in;
 l_value             VARCHAR2(32767);
 ls_delimiter        VARCHAR2(100) := NVL(s_delimiter_in,',');
BEGIN
LOOP
 l_idx := INSTR(l_list,ls_delimiter);

 IF (l_idx &gt; 0) THEN

    PIPE ROW(SUBSTR(l_list,1,l_idx-1));
    l_list := SUBSTR(l_list,l_idx+LENGTH(ls_delimiter));
  
 ELSE

    PIPE ROW(l_list);
    EXIT;
  
 END IF;
END LOOP;

RETURN;

END SPLIT;&lt;/pre&gt;

&lt;p&gt;
&lt;span style="font-weight:bold; color: red;"&gt;Sorry, there was a typo in the above script.  It was fixed on 2/9/2009. Jason&lt;/span&gt;

&lt;p&gt;
The reverse of "split" is "&lt;a href="http://jasonvogel.blogspot.com/2006/11/plsql-join-convert-multiple-returned.html"&gt;joinrows&lt;/a&gt;".
&lt;/p&gt;

&lt;p&gt;
&lt;span style="font-weight: bold;"&gt;Solution 2 :&lt;/span&gt;

&lt;p&gt;Here is a simple example of converting one row into multiple rows.  "atomic_contract" is returning a single row, but we need two columns from it to be returned as two rows.&lt;/p&gt;

&lt;pre name="code" class="brush: sql"&gt;select *
from (
select ac.*,
decode(t.row_count,1,ac.sk_seller,
                  2,ac.sk_buyer, null) sk_customer
from atomic_contract ac,
( select 1 row_count from dual
union all
select 2 row_count from dual) t
where contract_id = 3562777)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116259328256931503?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116259328256931503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116259328256931503' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116259328256931503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116259328256931503'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/11/oracle-sql-converting-one-row-into-two.html' title='Oracle: SQL - Converting one row into two rows [multiple rows]'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116196154199216330</id><published>2006-10-27T10:05:00.000-05:00</published><updated>2006-11-22T13:47:45.224-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>JavaScript and AJAX</title><content type='html'>&lt;ul&gt;
   &lt;li&gt;&lt;a href="http://www.codecoffee.com/articles/9tips.html"&gt;http://www.codecoffee.com/articles/9tips.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ajaxian.com/archives/ajaxitagging"&gt;Ajaxitagging [Ajax and Tagging] (http://ajaxian.com/archives/ajaxitagging)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ajaxian.com/archives/really-easy-field-validation-with-prototype"&gt;http://ajaxian.com/archives/really-easy-field-validation-with-prototype&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116196154199216330?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116196154199216330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116196154199216330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116196154199216330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116196154199216330'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/javascript-and-ajax_27.html' title='JavaScript and AJAX'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116187241162200273</id><published>2006-10-26T09:20:00.001-05:00</published><updated>2009-01-22T13:02:25.176-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox-extension'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox-tweaks'/><title type='text'>Tweaking Firefox via userChrome.css</title><content type='html'>&lt;p&gt;&lt;strong&gt;My Changes :&lt;/strong&gt;&lt;/p&gt;

&lt;pre name="code" class="css"&gt;/*
* Edit this file and copy it as userChrome.css into your
* profile-directory/chrome/
*/

/*
* Do not remove the @namespace line -- it's required for correct functioning
*/
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */

/* Make the Search box flex wider */
#search-container, #searchbar {
width: 280px !important;
}

/* Unread tabs */
#content tab:not([selected]) {
font-style: italic !important;
color: #008001 !important;
}

/* Normalise the title of read, but unselected tabs */
#content tab[selected="false"] {
font-style: normal !important;
color: Black !important;
}

/* Active Tab... */
tab[selected="true"] {
background-color: rgb(222,218,210) !important;
color: black !important;
font-weight: bold !important;
background-image: url(gradient_sunorange_top.gif) !important;
}

/* Remove the 'Go' button */
#go-button {
display: none !important; }

/* Show tab favicon only on selected tab */
tab:not([selected="true"]) .tab-icon {
display: none !important; }

/*
 * Adjust font and size of Bookmarks Toolbar items : http://userstyles.org/style/show/901
 */
#bookmarks-ptf .toolbarbutton-text {
 /* font-size: 10px !important;*/
 font-size: 8pt !important;
}


/* Make inactive tabs hardly visible 
#content tab:not([selected="true"]) {
  -moz-opacity: 0.5 !important; }
*/


/* Change color of tabs NOT currently selected... regardless of read or not
tab:not([selected="true"]) {
  font-style: italic !important;
  color: Fuchsia !important;
}
*/

/* Slightly rounded address and search bar corners 
#urlbar {
-moz-appearance: none !important;
-moz-border-radius: 3px !important;
  padding-right: 1px !important; }

*/
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116187241162200273?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116187241162200273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116187241162200273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116187241162200273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116187241162200273'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/tweaking-firefox-via-userchromecss.html' title='Tweaking Firefox via userChrome.css'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116171745822184054</id><published>2006-10-24T14:17:00.000-05:00</published><updated>2006-11-21T10:41:44.232-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><title type='text'>VMWare...</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://johnbokma.com/mexit/2005/10/26/vmware-player-windows-xp.html"&gt;http://johnbokma.com/mexit/2005/10/26/vmware-player-windows-xp.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://johnbokma.com/mexit/2005/11/07/vmware-player-ubuntu-installation.html"&gt;http://johnbokma.com/mexit/2005/11/07/vmware-player-ubuntu-installation.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116171745822184054?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116171745822184054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116171745822184054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116171745822184054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116171745822184054'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/vmware.html' title='VMWare...'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116171717536821727</id><published>2006-10-24T14:12:00.001-05:00</published><updated>2006-11-21T10:41:04.260-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='html-forms'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>CSS and Html Resources</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.alvit.de/handbook/"&gt;http://www.alvit.de/handbook/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116171717536821727?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116171717536821727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116171717536821727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116171717536821727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116171717536821727'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/css-and-html-resources.html' title='CSS and Html Resources'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116171714310751136</id><published>2006-10-24T14:12:00.000-05:00</published><updated>2006-11-21T10:42:17.701-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>JavaScript and AJAX</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.codecoffee.com/articles/9tips.html"&gt;http://www.codecoffee.com/articles/9tips.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116171714310751136?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116171714310751136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116171714310751136' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116171714310751136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116171714310751136'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/javascript-and-ajax.html' title='JavaScript and AJAX'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116166430609366073</id><published>2006-10-23T23:31:00.000-05:00</published><updated>2006-11-21T10:40:11.928-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Rails and Ruby Links to Review</title><content type='html'>&lt;ul&gt;
   &lt;li&gt;&lt;a href="http://wiki.rubyonrails.org/rails"&gt;http://wiki.rubyonrails.org/rails&lt;/a&gt;
   &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.realityforge.org/articles/2006/03/20/rails-plugin-to-help-debug-views"&gt;http://www.realityforge.org/articles/2006/03/20/rails-plugin-to-help-debug-views&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://wiki.rubyonrails.org/rails/pages/Plugins"&gt;http://wiki.rubyonrails.org/rails/pages/Plugins&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.agilewebdevelopment.com/"&gt;http://www.agilewebdevelopment.com/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://xprogramming.com/xpmag/RubyFitnesse.htm"&gt;http://xprogramming.com/xpmag/RubyFitnesse.htm&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.artima.com/rubycs"&gt;http://www.artima.com/rubycs&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://rannotate.rubyforge.org/"&gt;http://rannotate.rubyforge.org/&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://jayfields.blogspot.com/"&gt;http://jayfields.blogspot.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.rubyinside.com/"&gt;http://www.rubyinside.com/&lt;/a&gt;
           &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.rubyinside.com/16-rjs-resources-and-tutorials-for-rails-programmers-5.html"&gt;http://www.rubyinside.com/16-rjs-resources-and-tutorials-for-rails-programmers-5.html&lt;/a&gt;&lt;/li&gt;        &lt;/ul&gt;    &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.garrettdimon.com/archives/great-rails-feature-1-activerecord-callbacks"&gt;http://www.garrettdimon.com/archives/great-rails-feature-1-activerecord-callbacks&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.lukeredpath.co.uk/2006/9/28/introduction-to-activespec"&gt;http://www.lukeredpath.co.uk/2006/9/28/introduction-to-activespec&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.realityforge.org/articles/2006/03/01/removing-stale-rails-sessions"&gt;http://www.realityforge.org/articles/2006/03/01/removing-stale-rails-sessions&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.realityforge.org/articles/page/3"&gt;http://www.realityforge.org/articles/page/3&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/flex2_rails.html"&gt;http://www.adobe.com/devnet/flex/articles/flex2_rails.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;WebServices&lt;/strong&gt;&lt;/p&gt;    &lt;ul&gt;&lt;li&gt;&lt;a href="http://manuals.rubyonrails.com/read/book/10"&gt;ActionWebService: WebServices on Rails (http://manuals.rubyonrails.com/read/book/10)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;User Interface&lt;/strong&gt;
   &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://datebocks.inimit.com/"&gt;Intuitive Date Input Selection (http://datebocks.inimit.com/)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;SingleTableInheritance (STI)&lt;/strong&gt;
   &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ruby-forum.com/topic/71496"&gt;Generic STI (http://www.ruby-forum.com/topic/71496)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.ruby-forum.com/topic/71005"&gt;Hibernate multi-table inheritance with ActiveRecord (http://www.ruby-forum.com/topic/71005)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Debugging&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.bigbold.com/snippets/posts/show/2427"&gt;Full Information for Ruby Errors (http://www.bigbold.com/snippets/posts/show/2427)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Deployment&lt;/strong&gt;
   &lt;ul&gt;&lt;li&gt;&lt;a href="http://manuals.rubyonrails.com/read/book/17"&gt;Capistrano: Automating Application Deployment (http://manuals.rubyonrails.com/read/book/17)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Translation&lt;/strong&gt;
   &lt;ul&gt;&lt;li&gt;&lt;a href="http://manuals.rubyonrails.com/read/book/16"&gt;Using GetText to Translate your Rails Application (http://manuals.rubyonrails.com/read/book/16)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116166430609366073?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116166430609366073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116166430609366073' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116166430609366073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116166430609366073'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/rails-and-ruby-links-to-review.html' title='Rails and Ruby Links to Review'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116109428796393361</id><published>2006-10-17T09:11:00.000-05:00</published><updated>2006-11-13T14:05:05.927-06:00</updated><title type='text'>CSS Example: Table Design Control </title><content type='html'>&lt;!-- Code Begin --&gt;CSS Example &lt;br /&gt;&lt;pre style="font-family: Courier New; font-size: 9pt;"&gt;&lt;br /&gt;&lt;font color="#800080"&gt;&amp;lt;style&lt;/font&gt; &lt;font color="#ff00ff"&gt;type&lt;/font&gt;="&lt;font color="#ff00ff"&gt;text&lt;/font&gt;/&lt;font color="#ff00ff"&gt;css&lt;/font&gt;"&amp;gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;table&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff00ff"&gt;sample&lt;/font&gt; &lt;font color="#000080"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;width&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;spacing&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;2&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;style&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;outset&lt;/font&gt; &lt;font color="#ff0000"&gt;outset&lt;/font&gt; &lt;font color="#ff0000"&gt;outset&lt;/font&gt; &lt;font color="#ff0000"&gt;outset&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;color&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;collapse&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;separate&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;background&lt;/font&gt;-&lt;font color="#000080"&gt;color&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;white&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;table&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff00ff"&gt;sample&lt;/font&gt; &lt;font color="#ff00ff"&gt;th&lt;/font&gt; &lt;font color="#000080"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;width&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;padding&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;style&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;inset&lt;/font&gt; &lt;font color="#ff0000"&gt;inset&lt;/font&gt; &lt;font color="#ff0000"&gt;inset&lt;/font&gt; &lt;font color="#ff0000"&gt;inset&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;color&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;background&lt;/font&gt;-&lt;font color="#000080"&gt;color&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;white&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    -&lt;font color="#000080"&gt;moz&lt;/font&gt;-&lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;radius&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;0&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;0&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;0&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;0&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;table&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff00ff"&gt;sample&lt;/font&gt; &lt;font color="#ff00ff"&gt;td&lt;/font&gt; &lt;font color="#000080"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;width&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;padding&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;1&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;style&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;inset&lt;/font&gt; &lt;font color="#ff0000"&gt;inset&lt;/font&gt; &lt;font color="#ff0000"&gt;inset&lt;/font&gt; &lt;font color="#ff0000"&gt;inset&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;color&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt; &lt;font color="#ff0000"&gt;gray&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#000080"&gt;background&lt;/font&gt;-&lt;font color="#000080"&gt;color&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff0000"&gt;white&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;    -&lt;font color="#000080"&gt;moz&lt;/font&gt;-&lt;font color="#000080"&gt;border&lt;/font&gt;-&lt;font color="#000080"&gt;radius&lt;b&gt;:&lt;/b&gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;0&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;0&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;0&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt; &lt;font color="#0000ff"&gt;0&lt;/font&gt;&lt;font color="#ff0000"&gt;px&lt;/font&gt;&lt;font color="#000080"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#000080"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#800080"&gt;&amp;lt;/style&lt;/font&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#008080"&gt;&amp;lt;table&lt;/font&gt; &lt;font color="#008080"&gt;class&lt;/font&gt;=&lt;font color="#0000ff"&gt;"sample"&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#008080"&gt;&amp;lt;tr&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#008080"&gt;&amp;lt;th&amp;gt;&lt;/font&gt;Header&lt;font color="#008080"&gt;&amp;lt;/th&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#008080"&gt;&amp;lt;td&amp;gt;&lt;/font&gt;Content&lt;font color="#008080"&gt;&amp;lt;/td&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#008080"&gt;&amp;lt;/tr&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#008080"&gt;&amp;lt;/table&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!-- Code End --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116109428796393361?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116109428796393361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116109428796393361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116109428796393361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116109428796393361'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/css-example-table-design-control.html' title='CSS Example: Table Design Control '/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116051399569262951</id><published>2006-10-10T15:59:00.000-05:00</published><updated>2006-11-13T14:05:05.479-06:00</updated><title type='text'>Blogger Items To Review</title><content type='html'>&lt;a href="http://help.blogger.com/bin/answer.py?answer=42215&amp;amp;query=how%20do%20I%20add%20tags&amp;amp;topic=&amp;amp;type=f"&gt;http://help.blogger.com/bin/answer.py?answer=42215&amp;amp;query=how%20do%20I%20add%20tags&amp;amp;topic=&amp;amp;type=f&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=41447&amp;amp;query=how%20do%20I%20add%20tags&amp;amp;topic=&amp;amp;type=f"&gt;http://help.blogger.com/bin/answer.py?answer=41447&amp;amp;query=how%20do%20I%20add%20tags&amp;amp;topic=&amp;amp;type=f&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=42528&amp;amp;query=how%20do%20I%20add%20tags&amp;amp;topic=&amp;amp;type=f"&gt;http://help.blogger.com/bin/answer.py?answer=42528&amp;amp;query=how%20do%20I%20add%20tags&amp;amp;topic=&amp;amp;type=f&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=46995&amp;amp;query=how%20do%20I%20add%20tags&amp;amp;topic=&amp;amp;type=f"&gt;http://help.blogger.com/bin/answer.py?answer=46995&amp;amp;query=how%20do%20I%20add%20tags&amp;amp;topic=&amp;amp;type=f&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=41641"&gt;http://help.blogger.com/bin/answer.py?answer=41641&lt;/a&gt;&lt;br /&gt;&lt;a href="http://userscripts.org/scripts/source/1989.user.js"&gt;http://userscripts.org/scripts/source/1989.user.js&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=42095"&gt;http://help.blogger.com/bin/answer.py?answer=42095&lt;/a&gt;&lt;br /&gt;&lt;a href="http://userscripts.org/scripts/show/2182"&gt;http://userscripts.org/scripts/show/2182&lt;/a&gt;&lt;br /&gt;&lt;a href="http://userscripts.org/scripts/show/4712"&gt;http://userscripts.org/scripts/show/4712&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogfresh.blogspot.com/2005/08/blogger-hacks-series.html"&gt;http://blogfresh.blogspot.com/2005/08/blogger-hacks-series.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.jackslocum.com/yui/2006/10/09/my-wordpress-comments-system-built-with-yahoo-ui-and-yahooext/"&gt;http://www.jackslocum.com/yui/2006/10/09/my-wordpress-comments-system-built-with-yahoo-ui-and-yahooext/&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116051399569262951?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116051399569262951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116051399569262951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116051399569262951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116051399569262951'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/blogger-items-to-review.html' title='Blogger Items To Review'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-116051308029370878</id><published>2006-10-10T15:44:00.008-05:00</published><updated>2011-03-23T11:07:50.647-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tags'/><category scheme='http://www.blogger.com/atom/ns#' term='multiple column values'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql packages'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql varray'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql array'/><title type='text'>Oracle VARRAY Example</title><content type='html'>(Revised 09/20/2010, I've revised this example to be more pertinent.)
&lt;br /&gt;
VARRAYs provide the &lt;i&gt;interesting&lt;/i&gt; ability to store multiple values in a single column. &lt;i&gt;Note,&lt;/i&gt; "interesting" doesn't mean I'm necessarily encouraging its use.  I expect there are some potentially significant performance penalties using VARRAYs.
&lt;br&gt;
&lt;pre name="code" class="brush: sql"&gt;set serveroutput on;

column id FORMAT A5;
column url FORMAT A20;
column Tag(s) FORMAT A20;

clear;

-- Create a VARRAY that can hold 10 "objects" [cells] of type VARCHAR2 (i.e. 10 Tags of up to 50 characters)
create or replace type vcarray_tags as VARRAY(10) OF VARCHAR2(50);
/

-- Each URL is stored in a single row regardless of the number of tags
create table site_tags (id number, url varchar2(100), tag_list vcarray_tags);

insert into site_tags values (1, 'www.bing.com', vcarray_tags('search', 'microsoft'));
insert into site_tags values (2, 'www.google.com', vcarray_tags('search', 'google'));
commit;

set echo on;

-- Note, The VARRAY column is of type "object"
select 
   *
from
   site_tags;

-- Display each tag on a separate row 
select 
   site_tags.id, 
   site_tags.url,
   tags.column_value "Tag(s)"
from
   site_tags,
   table(site_tags.tag_list) tags;

-- Show all the URLs "tagged" with 'search'
select 
   site_tags.id, 
   site_tags.url,
   tags.column_value "Tag(s)"
from
   site_tags,
   table(site_tags.tag_list) tags
where
   tags.column_value = 'search';
/
-- PL/SQL Example 
begin
   for c in (select * from site_tags) loop
      dbms_output.put_line(c.id||' : '||c.url);
      for i in c.tag_list.first .. c.tag_list.last loop
         dbms_output.put_line('      Tag: '||c.tag_list(i));
      end loop;
   end loop;
end;
&lt;/pre&gt;
&lt;b&gt;Results:&lt;/b&gt;
&lt;pre&gt;
create or replace type vcarray_tags as VARRAY(10) OF VARCHAR2(50);
/
Type created
create table site_tags (id number, url varchar2(100), tag_list vcarray_tags);
 
Table created
insert into site_tags values (1, 'www.bing.com', vcarray_tags('search', 'microsoft'));
 
1 row inserted
insert into site_tags values (2, 'www.google.com', vcarray_tags('search', 'google'));
 
1 row inserted
commit;
 
Commit complete
set echo on;

select
 *
from
 site_tags;
 
   ID URL                  TAG_LIST
----- -------------------- --------
    1 www.bing.com         &amp;lt;Object&amp;gt;
    2 www.google.com       &amp;lt;Object&amp;gt;

select
 site_tags.id,
 site_tags.url,
 tags.column_value "Tag(s)"
from
 site_tags,
 table(site_tags.tag_list) tags;
 
   ID URL                  Tag(s)
----- -------------------- --------------------
    1 www.bing.com         search
    1 www.bing.com         microsoft
    2 www.google.com       search
    2 www.google.com       google

select
 site_tags.id,
 site_tags.url,
 tags.column_value "Tag(s)"
from
 site_tags,
 table(site_tags.tag_list) tags
where
 tags.column_value = 'search';
 
   ID URL                  Tag(s)
----- -------------------- --------------------
    1 www.bing.com         search
    2 www.google.com       search

begin
 for c in (select * from site_tags) loop
  dbms_output.put_line(c.id||' : '||c.url);
  for i in c.tag_list.first .. c.tag_list.last loop
   dbms_output.put_line('      Tag: '||c.tag_list(i));
  end loop;
 end loop;
end;
/
 
1 : www.bing.com
      Tag: search
      Tag: microsoft
2 : www.google.com
      Tag: search
      Tag: google
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-116051308029370878?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/116051308029370878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=116051308029370878' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116051308029370878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/116051308029370878'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/oracle-varray-example.html' title='Oracle VARRAY Example'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115989502768694635</id><published>2006-10-03T12:03:00.002-05:00</published><updated>2011-06-23T11:21:56.506-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle security'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>How to compile PL/SQL with a reference to DBA_ROLE_PRIVS when you don't have rights to it...</title><content type='html'>I have some PL/SQL [&lt;code&gt;Function userHasRole(...) Return Boolean&lt;/code&gt;] which references &lt;code&gt;DBA_ROLE_PRIVS&lt;/code&gt;. This package function normally is compiled under a schema which &lt;b&gt;does&lt;/b&gt; have rights.
&lt;p /&gt;
&lt;b&gt;Issue:&lt;/b&gt; What do you do if you, t&lt;i&gt;he lowly Developer&lt;/i&gt;, &lt;b&gt;DOES NOT&lt;/b&gt; have rights to the [&lt;i&gt;generally DBA-only&lt;/i&gt;] &lt;code&gt;DBA_ROLE_PRIVS&lt;/code&gt; view?
&lt;p /&gt;
&lt;span style="font-weight: bold;"&gt;Fix:&lt;/span&gt; Under your user, create a view named &lt;code&gt;DBA_ROLE_PRIVS&lt;/code&gt; that references &lt;code&gt;USER_ROLE_PRIVS&lt;/code&gt; instead...

&lt;br /&gt;
&lt;pre class="brush: sql" name="code"&gt;CREATE OR REPLACE VIEW dba_role_privs AS
SELECT
  GRANTED_ROLE,
  USER "GRANTEE"
FROM
  USER_ROLE_PRIVS
&lt;/pre&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115989502768694635?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115989502768694635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115989502768694635' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115989502768694635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115989502768694635'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/how-to-compile-plsql-with-reference-to.html' title='How to compile PL/SQL with a reference to DBA_ROLE_PRIVS when you don&apos;t have rights to it...'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115980639567302728</id><published>2006-10-02T11:26:00.000-05:00</published><updated>2011-12-12T12:31:59.075-06:00</updated><title type='text'>Simple Performance Tuning for Oracle PL/SQL using SYSTIMESTAMP</title><content type='html'>Starting in Oracle 9.x, there is a more precise version of &lt;code&gt;SYSDATE&lt;/code&gt; that goes to the millisecond.  Previously, the only way to get to milliseconds was to use &lt;code&gt;dbms_utility.get_time&lt;/code&gt; (which didn't really return a real time but a counter position within a time loop that recycled itself).&lt;br /&gt;
&lt;hr /&gt;
&lt;span style="font-weight: bold;"&gt;Code :&lt;/span&gt;
&lt;br /&gt;
&lt;pre class="brush: sql" name="code"&gt;declare

   ltimestamp_start  timestamp;
   ltimestamp_stop   timestamp;
   linterval_diff    interval day to second;

   ldt_temp     date;

begin

   ltimestamp_start := systimestamp;
   dbms_output.put_line(ltimestamp_start);

   -- Routine to performance test...
   for i in 1 .. 10000 loop
      select sysdate into ldt_temp from dual;
   end loop;

   ltimestamp_stop := systimestamp;
   dbms_output.put_line(ltimestamp_stop);

   linterval_diff := ltimestamp_stop - ltimestamp_start;

   dbms_output.put_line(CHR(10)||LPAD('=',22,'=')||CHR(10)||'  Runtime Difference'||CHR(10)||LPAD('=',22,'='));
   dbms_output.put_line(
   '     Days : '||EXTRACT(DAY FROM linterval_diff)||CHR(10)||
   '    Hours : '||EXTRACT(HOUR FROM linterval_diff)||CHR(10)||
   '  Minutes : '||EXTRACT(MINUTE FROM linterval_diff)||CHR(10)||
   '  Seconds : '||EXTRACT(SECOND FROM linterval_diff) );
end;
&lt;/pre&gt;
&lt;hr /&gt;
&lt;span style="font-weight: bold;"&gt;Results:&lt;/span&gt;
&lt;br /&gt;
&lt;pre&gt;02-OCT-06 11.17.00.863610 AM
02-OCT-06 11.17.01.878845 AM

======================
Runtime Difference
======================
   Days : 0
  Hours : 0
Minutes : 0
Seconds : 1.015235
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115980639567302728?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115980639567302728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115980639567302728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115980639567302728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115980639567302728'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/10/simple-performance-tuning-for-oracle.html' title='Simple Performance Tuning for Oracle PL/SQL using SYSTIMESTAMP'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928626542568790</id><published>2006-09-26T10:57:00.001-05:00</published><updated>2010-09-20T16:08:07.588-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='transparent'/><category scheme='http://www.blogger.com/atom/ns#' term='graphic-design'/><category scheme='http://www.blogger.com/atom/ns#' term='transparency'/><title type='text'>Create a logo image with a transparent background</title><content type='html'>&lt;p style="font-weight: bold;"&gt;&lt;bold&gt;Image :&lt;/bold&gt;&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;Use GIMP or Paint.NET to create a &lt;span style="color:Fuchsia;"&gt;&lt;bold&gt;GIF&lt;/bold&gt;&lt;/span&gt; image (&lt;span style="color:Red;"&gt;&lt;em&gt;I can't get it to correctly work with any other image format&lt;/em&gt;&lt;/span&gt;).&lt;/li&gt;  &lt;li&gt;Create a new GIF image of the desired width and height&lt;/li&gt;  &lt;li&gt;Make the background layer... NOT visible&lt;/li&gt;  &lt;li&gt;Insert a new layer&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;bold&gt;&lt;span style="font-weight: bold;"&gt;CSS (Style Sheet) :&lt;/span&gt;
&lt;/bold&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;I had to manually set the width and height&lt;/li&gt;     &lt;li&gt;For some reason, the cursor wasn't changing to URL "pointer", so I forced it&lt;/li&gt; &lt;/ul&gt;
&lt;pre name="code" class="brush: css"&gt;#company_logo {
 background-image: url(images/company_logo1.gif);
 background-repeat: no-repeat;
 width: 189pt;
 height: 76pt;
 cursor: pointer;
}&lt;/pre&gt;
&lt;bold style="font-weight: bold;"&gt;Html :&lt;/bold&gt;
&lt;pre name="code" class="brush: html"&gt;&amp;lt;a href="http://www.mycompany.com"&amp;gt;&amp;lt;div id="#company_logo"&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/a&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928626542568790?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928626542568790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928626542568790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928626542568790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928626542568790'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/create-logo-image-with-transparent.html' title='Create a logo image with a transparent background'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928624165268932</id><published>2006-09-21T10:57:00.005-05:00</published><updated>2011-05-23T08:58:34.496-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arrays'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql array'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle SELECT with an array using an IN</title><content type='html'>&lt;pre name="code" class="brush: sql"&gt;declare

   -- CREATE OR REPLACE TYPE PROD_TYPES.TYPE_NUMBER_ARRAY AS TABLE OF NUMBER
  nt_src      prod_types.type_number_array := PROD_TYPES.TYPE_NUMBER_ARRAY();    -- Constructor     
  nt_dest     prod_types.type_number_array := PROD_TYPES.TYPE_NUMBER_ARRAY();    -- Constructor     

begin

  -- Test data (no order)
  select
    product_version_id
  bulk collect
    into
      nt_src
  from product_version v
  where v.product_version_id between 138120 and 140000;

  -- select * from table(sys.dbms_debug_vc2coll(1,2,'a')) order by 1 desc
 
  -- Data ordered
  select
    product_version_id
  bulk collect
    into 
      nt_dest
  from
    product_version
  where
    product_version.product_version_id in (select column_value from table(cast(nt_src AS prod_types.type_number_array)))
  order by
    product_version.expiration_date2 desc,
    product_version.base_price desc,
    product_version.expiration_date2 desc;

  for i in nt_dest.first .. nt_dest.last loop
    dbms_output.put_line(to_char(nt_dest(i)));
  end loop;

  exception
    when others then
      dbms_output.put_line('sqlerrm : '||sqlerrm);
end;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928624165268932?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928624165268932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928624165268932' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928624165268932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928624165268932'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/oracle-select-with-array-using-in.html' title='Oracle SELECT with an array using an IN'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928615692761658</id><published>2006-09-20T10:55:00.000-05:00</published><updated>2006-11-21T10:45:35.031-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><title type='text'>Determine IP address of a VM Ware Player sessions running a Linux distribution</title><content type='html'>&lt;p&gt;Recently, I started playing with VMWare Player (&lt;a href="http://www.vmware.com/products/player/"&gt;http://www.vmware.com/products/player/&lt;/a&gt;).  I do some work in Unix/Linux, but not a lot.  I've always been able to do what I needed, however I couldn't remember what it took to determine what the IP address of machine was.  The documentation said : "&lt;em&gt;http://your.vm.ip.address/&lt;/em&gt;".  Damn, how?&lt;/p&gt;&lt;p&gt;Hence this post,&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Command line:&lt;/strong&gt; &lt;code&gt;ifconfig eth0&lt;/code&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928615692761658?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928615692761658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928615692761658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928615692761658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928615692761658'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/determine-ip-address-of-vm-ware-player.html' title='Determine IP address of a VM Ware Player sessions running a Linux distribution'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928622450369656</id><published>2006-09-12T10:57:00.000-05:00</published><updated>2006-11-21T10:50:59.422-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activesync'/><category scheme='http://www.blogger.com/atom/ns#' term='t-mobile mda'/><title type='text'>ActiveSync Issues</title><content type='html'>&lt;p&gt;Well, I ran into some ActiveSync issues last night.&lt;/p&gt;Basically, I was working with MicroTorrent, and wanted to see what my Windows Firewall settings were.  I had the firewall off, but when Windows realized that I "looked" at the settings it decided to turn on the Firewall.  Basically, after turning the Firewall off and several reboots later I finally started syncing again.  What's weird is that the Firewall has the entries to allow

ActiveSync.&lt;strong&gt;ErrorCode :&lt;/strong&gt; 80070008
 &lt;blockquote&gt;&lt;p&gt;&lt;a href="http://www.mtekk.com.au/Forums/tabid/56/forumid/17/postid/48412/view/topic/tpage/3/Default.aspx"&gt;http://www.mtekk.com.au/Forums/tabid/56/forumid/17/postid/48412/view/topic/tpage/3/Default.aspx&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p align="left"&gt;If you are using a software firewall on your PC, you need to allow ActiveSync to use TCP/IP.
ActiveSync uses the programs WCESCOMM.EXE, WCESMGR.EXE, RAPIMGR.EXE, and CEAPPMGR.EXE.&lt;/p&gt;&lt;strong&gt;TCP/IP ports:&lt;/strong&gt;      
&lt;ul&gt;&lt;li&gt; 990 (RAPI)&lt;/li&gt;   &lt;li&gt;999 (Status)&lt;/li&gt;&lt;li&gt;5678 (Legacy Replication)&lt;/li&gt;   &lt;li&gt;5679 (Legacy Replication)&lt;/li&gt;&lt;li&gt;5721 (Desktop Passthrough)&lt;/li&gt;&lt;li&gt;26675 (AirSync)&lt;/li&gt;   &lt;/ul&gt;   &lt;p align="left"&gt;The WM5 ‘Device’ is the DHCP server, thus the device has the IP address of 169.254.2.1 (Default) and the PC obtains the IP address of 169.254.2.2 (Default) [thanks to Brian for the update].&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928622450369656?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928622450369656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928622450369656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928622450369656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928622450369656'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/activesync-issues.html' title='ActiveSync Issues'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928620223711319</id><published>2006-09-11T10:56:00.000-05:00</published><updated>2006-11-21T10:52:07.830-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='t-mobile mda'/><category scheme='http://www.blogger.com/atom/ns#' term='windowsmobile'/><title type='text'>WindowsMobile Links to Review</title><content type='html'>&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.pocketthinker.com/ptppc.html"&gt;http://www.pocketthinker.com/ptppc.html&lt;/a&gt; Outliner (WindowsMobile and Desktop)&lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.softtrends.com/products/livepvr/livepvrwmsp.htm"&gt;http://www.softtrends.com/products/livepvr/livepvrwmsp.htm&lt;/a&gt; Personal Voice Recorder...&lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.jetwaremobile.com/index.htm"&gt;http://www.jetwaremobile.com/index.htm&lt;/a&gt; The JETware Hands-free Extension provides additional functionality to the built-in Windows Mobile support for the Bluetooth Hands-Free Profile.&lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.softwareandson.com/SuperTasks/screenshots.php"&gt;http://www.softwareandson.com/SuperTasks/screenshots.php&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928620223711319?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928620223711319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928620223711319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928620223711319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928620223711319'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/windowsmobile-links-to-review.html' title='WindowsMobile Links to Review'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928618015289965</id><published>2006-09-10T10:56:00.000-05:00</published><updated>2006-11-22T13:48:27.083-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windowsmobile'/><title type='text'>WindowsMobile Links of Relevance</title><content type='html'>&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jasonlan/default.aspx"&gt;Jason Langridge's WebLog - MR Mobile! (http://blogs.msdn.com/jasonlan/default.aspx)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928618015289965?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928618015289965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928618015289965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928618015289965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928618015289965'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/windowsmobile-links-of-relevance.html' title='WindowsMobile Links of Relevance'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928614116848381</id><published>2006-09-09T10:55:00.000-05:00</published><updated>2006-11-21T10:52:19.123-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='t-mobile mda'/><title type='text'>T-Mobile Accessories</title><content type='html'>&lt;p&gt;Well, I can say that I am very disappointed that I can't find anyone that carries a silicon case for US version of the MDA.  If anybody finds one, leave me a post / comment.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928614116848381?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928614116848381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928614116848381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928614116848381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928614116848381'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/t-mobile-accessories.html' title='T-Mobile Accessories'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928612173126120</id><published>2006-09-08T10:55:00.000-05:00</published><updated>2006-11-13T14:05:01.443-06:00</updated><title type='text'>T-Mobile MDA Program Installation and CAB Files</title><content type='html'>&lt;p&gt;It took me a minute to understand how to install CAB files on the MDA.  I found the answer here : &lt;a href="http://www.microsoft.com/windowsmobile/articles/findapps.mspx#3"&gt;http://www.microsoft.com/windowsmobile/articles/findapps.mspx#3&lt;/a&gt;.&lt;/p&gt;
&lt;p style="color: rgb(0, 0, 136); text-align: right;"&gt;&lt;small&gt;&lt;em&gt;Powered by&lt;/em&gt; &lt;a href="http://www.qumana.com/"&gt;Qumana&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928612173126120?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928612173126120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928612173126120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928612173126120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928612173126120'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/t-mobile-mda-program-installation-and.html' title='T-Mobile MDA Program Installation and CAB Files'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928610635945863</id><published>2006-09-07T10:55:00.000-05:00</published><updated>2006-11-21T10:52:39.715-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activesync'/><category scheme='http://www.blogger.com/atom/ns#' term='t-mobile mda'/><title type='text'>T-Mobile MDA Saga... Part 3 of aahhhh...</title><content type='html'>&lt;p&gt;Okay, as a software developer it pains me to have to give in and call tech support. ...but I did.  And, well, I can happily say my MDA is working like a charm.&lt;/p&gt;&lt;p&gt;First, if you have just bought an MDA or are thinking about it... install the upgrade ROM [&lt;em&gt;&lt;strong&gt;it wipes out all data... you've been warned!&lt;/strong&gt;&lt;/em&gt;].  I haven't used it, but SpriteBackup claims to be able to move data between ROM upgrades &lt;a href="http://www.spritesoftware.com/backup.php"&gt;http://www.spritesoftware.com/backup.php&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; I couldn't sync, and the ROM upgrade fixed all my problems.  URL : &lt;a href="http://www.t-mobile.com/wmupgrade/"&gt;http://www.t-mobile.com/wmupgrade/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Detail&lt;/strong&gt; : ActiveSync 4.1 would just sit and say "Connecting..." and then finally come back and say device not connected, but there were no errors.  Somewhere in the guts of the ActiveSync &lt;strong&gt;&lt;em&gt;network code&lt;/em&gt;&lt;/strong&gt;, it was not working.  Why they chose those model as the default rather than simple USB, I don't know.  Anyway, I quickly got transfer up the support chain to someone that knew the magic buttons to press to force simple USB connectivity to install the ROM.  Exactly, I need to patch, but I couldn't connect to patch, but I needed to patch to connect.&lt;/p&gt;&lt;p&gt;Hardcode Reset : If your MDA wont budge, try this: Enter Bootloader, - hold the "camera" (bottom right) and briefly press the reset button, don't release "camera" until you can see colour screen, connect USB cable, see "USB" on the bottom of the screen, and start to re-flash the ROM.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928610635945863?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928610635945863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928610635945863' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928610635945863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928610635945863'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/t-mobile-mda-saga-part-3-of-aahhhh.html' title='T-Mobile MDA Saga... Part 3 of aahhhh...'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928607552313037</id><published>2006-09-06T10:54:00.000-05:00</published><updated>2006-11-21T10:53:44.249-06:00</updated><title type='text'>Figuring out what a machine is on your network...</title><content type='html'>&lt;p&gt;I use ZoneAlarm (free verson), and its log shows some entries of a machine talking to mine.  So what's the best way to figure out what that other machine is?&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier;"&gt;nbtstat&lt;/span&gt; can at least get me the DHCP "name" &lt;span style="font-family:Courier;"&gt;nbtstat -A &lt;em&gt;&amp;lt;ip_address&amp;gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Other suggestions?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928607552313037?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928607552313037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928607552313037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928607552313037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928607552313037'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/figuring-out-what-machine-is-on-your.html' title='Figuring out what a machine is on your network...'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928601455734154</id><published>2006-09-05T10:53:00.026-05:00</published><updated>2010-01-18T13:22:00.093-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracode'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql packages'/><category scheme='http://www.blogger.com/atom/ns#' term='3117'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle ORA-03117: two-task save area overflow</title><content type='html'>&lt;p&gt;
&lt;span style="font-style:italic; color: green;"&gt;Feel free to skip to the bottom and read the "Update"...&lt;/span&gt; 
&lt;/p&gt;
&lt;p&gt;
Recently, I made some changes in Development to an Oracle Package. The package compiled cleanly and all the unit tests passed successfully.&lt;/p&gt;
&lt;p&gt;
However upon testing in one of our client applications, we started getting an "&lt;code&gt;ORA-03117: two-task save area overflow&lt;/code&gt;" error. It is similar to an &lt;code&gt;ORA-00600&lt;/code&gt; error, useless to us, and usually results in Oracle saying "upgrade to x" [Oracle 10g, in this case].&lt;/p&gt;
&lt;p&gt;
What is particularly distressing about this particular case is that the Powerbuilder code errors at the &lt;b&gt;&lt;i&gt;package&lt;/i&gt;&lt;/b&gt; level. The changes were not even being referenced directly by PowerBuilder application.
&lt;/p&gt;
&lt;hr size="1" /&gt;
&lt;p&gt;
&lt;span style="font-weight:bold;"&gt;Update&lt;/span&gt;

I've discovered that I could recreate this error solely within SQL-Plus by "&lt;code&gt;desc &amp;lt;&lt;span style="font-style:italic;"&gt;complex packagename&lt;/span&gt;&amp;gt;&lt;/code&gt;".  If the "complex" package has a reasonable number of nested records/types, you can get this error.
&lt;pre name="code" class="sql"&gt;DESC DBMS_METADATA;&lt;/pre&gt;

We were using either Oracle 8 or Oracle 9 SQL-Net clients for the communication layer.

&lt;span style="color: red;"&gt;If you are using the 10.2.x SQL-Net client, you don't encounter an error.  &lt;span style="font-weight:bold;"&gt;Upgrading to a newer version of SQL-Net fixes this problem.  It is NOT an application code issue.&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928601455734154?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928601455734154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928601455734154' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928601455734154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928601455734154'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/oracle-ora-03117.html' title='Oracle ORA-03117: two-task save area overflow'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928599392223254</id><published>2006-09-04T10:53:00.004-05:00</published><updated>2009-07-21T08:50:44.442-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sysdate'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle and getting Milliseconds from Sysdate... [Systimestamp]</title><content type='html'>&lt;p&gt;First, you can't.&lt;/p&gt;Sysdate doesn't support going to milliseconds.  However, starting with Oracle 9, you can getting milliseconds from another system source : SYSTIMESTAMP.
&lt;pre name="code" class="sql"&gt;SELECT to_char(sysdate, 'HH24:MI:SS'), to_char(systimestamp, 'HH24:MI:SS.FF6') FROM dual;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928599392223254?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jasonvogel.blogspot.com/2006/11/example-using-systimestamp-milliseconds.html' title='Oracle and getting Milliseconds from Sysdate... [Systimestamp]'/><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928599392223254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928599392223254' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928599392223254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928599392223254'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/oracle-and-getting-milliseconds-from.html' title='Oracle and getting Milliseconds from Sysdate... [Systimestamp]'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928609054336015</id><published>2006-09-03T10:54:00.000-05:00</published><updated>2006-11-21T10:56:19.862-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activesync'/><category scheme='http://www.blogger.com/atom/ns#' term='t-mobile mda'/><title type='text'>T-Mobile MDA Saga... Part 2 of #*$%!</title><content type='html'>&lt;p&gt;Well, I'm officially annoyed.  I can't get ActiveSync 4.2 to work.  And, now I've discovered that there is a ROM upgrade.&lt;/p&gt;&lt;p&gt;With hindsight,
  &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Set a system restore point in Windows XP.&lt;/li&gt;   &lt;li&gt;Use the ActiveSync that comes with your phone... 4.1 in my case.  There are way too many news postings about &lt;strong&gt;&lt;em&gt;not&lt;/em&gt;&lt;/strong&gt; upgrading because of issues with the latest and greatest..&lt;/li&gt;   &lt;li&gt;Install the latest ROM for the phone.  This wipes out the phone, so you don't want to do this later.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928609054336015?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928609054336015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928609054336015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928609054336015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928609054336015'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/t-mobile-mda-saga-part-2-of.html' title='T-Mobile MDA Saga... Part 2 of #*$%!'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115928605898203252</id><published>2006-09-02T10:54:00.000-05:00</published><updated>2006-11-21T10:57:26.182-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cingular 8125'/><category scheme='http://www.blogger.com/atom/ns#' term='t-mobile mda'/><title type='text'>T-Mobile MDA</title><content type='html'>&lt;p&gt;Well, I just switched to T-Mobile from Cingular.  I've been a Cingular customer for years, but their silly (nicest word I can use right now) policy of treating existing customers &lt;em&gt;with expired contracts&lt;/em&gt; as worthless is too much.  The phone I wanted was a Cingular 8125, but T-Mobile has the same phone as the MDA.  If I had upgraded with Cingular it would have cost me about $200 bucks [after rebates, and being force to buy a $20 more expensive plan] or ~$0 [after rebates] for switching (no hassle and &lt;em&gt;mild plan change for $5 with more minutes&lt;/em&gt;).&lt;/p&gt;&lt;p&gt;See my "&lt;span style="font-style: italic;"&gt;t-mobile mda&lt;/span&gt;" labels (categories)
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115928605898203252?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115928605898203252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115928605898203252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928605898203252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115928605898203252'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/t-mobile-mda.html' title='T-Mobile MDA'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5732889.post-115921076466293490</id><published>2006-09-01T13:59:00.000-05:00</published><updated>2006-11-13T14:05:00.629-06:00</updated><title type='text'>Test</title><content type='html'>&lt;p&gt;&lt;/p&gt;I've moved my Blog from &lt;a href="http://www.wordpress.com"&gt;WordPress&lt;/a&gt; because I wanted to have my own style sheet (CSS) without having to pay for it.  Wordpress has been very nice otherwise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5732889-115921076466293490?l=jasonvogel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonvogel.blogspot.com/feeds/115921076466293490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5732889&amp;postID=115921076466293490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115921076466293490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5732889/posts/default/115921076466293490'/><link rel='alternate' type='text/html' href='http://jasonvogel.blogspot.com/2006/09/test.html' title='Test'/><author><name>Jason</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
