<?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-8206834</id><updated>2012-01-23T10:14:34.660-08:00</updated><category term='black friday'/><category term='friday'/><category term='TomTom'/><category term='oracle lob bfile blob securefile rdbms database tips performance clob'/><category term='Garmin'/><category term='oracle siebel CRM SCBroker load+balancing'/><category term='best'/><category term='Magellan'/><category term='oracle database flashback FDA'/><category term='buy'/><category term='how-to solaris mmap'/><category term='oracle solaris rpc statd RPC troubleshooting'/><category term='GPS'/><category term='generic+discussion software installer'/><category term='oracle database solaris resource manager virtualization consolidation'/><category term='Navigation'/><category term='thanksgiving sale'/><category term='OATS Oracle'/><category term='sale'/><category term='deal'/><title type='text'>Mandalika's scratchpad</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default?start-index=101&amp;max-results=100'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>276</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8206834.post-8046204653298054808</id><published>2012-01-17T18:46:00.000-08:00</published><updated>2012-01-17T18:46:00.252-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how-to solaris mmap'/><title type='text'>Solaris Tip: How-To Identify Memory Mapped Files</title><content type='html'>&lt;p&gt;A memory mapped (mmap'd) file is a shared memory object, or a file with some portion or the whole file was mapped to virtual memory segments in the address space of an OS process. Here is one way to figure out if a given object (file or shared memory object) was memory mapped in a process or not.&lt;/p&gt;&lt;ol&gt;&lt;li&gt; find the file system inode number of the object&lt;li&gt; look for that inode number in the address space of a given process&lt;/ol&gt;&lt;p&gt;And here is an example. We are about to check a log file and a shared memory segment in a Siebel object manager's process address space.&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;# pfiles 8251&lt;br /&gt;8251:   siebmtshmw /siebel/siebsrvr/admin/Siebel81.isve02.s&lt;br /&gt;..&lt;br /&gt;   1: S_IFREG mode:0744 dev:256,65539 ino:&lt;i&gt;&lt;b&gt;246660&lt;/b&gt;&lt;/i&gt; uid:1234 gid:30 size:0&lt;br /&gt;      O_WRONLY|O_APPEND|O_CREAT&lt;br /&gt;      /siebel/siebsrvr/enterprises/Siebel81/isve02/log/StdErrOut/stderrout_8251_23311913.log&lt;br /&gt;...&lt;br /&gt;   9: S_IFREG mode:0700 dev:256,65539 ino:&lt;i&gt;&lt;b&gt;246640&lt;/b&gt;&lt;/i&gt; uid:1234 gid:30 size:6889472&lt;br /&gt;      O_RDWR|O_CREAT|O_EXCL&lt;br /&gt;      /siebel/siebsrvr/admin/Siebel81.isve02.shm&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;# pmap -sx 8251 | grep &lt;i&gt;246660&lt;/i&gt;    &lt;br /&gt;#               &lt;== &lt;i&gt;&lt;font color="blue"&gt;stderrout_8251_23311913.log file was not a memory mapped file&lt;/font&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;# pmap -sx 8251 | grep &lt;i&gt;246640&lt;/i&gt;&lt;br /&gt;F6400000      64      64       -       -   8K r--s-  dev:256,65539 ino:246640   &lt;br /&gt;F6410000     136     136       -       -    - r--s-  dev:256,65539 ino:246640&lt;br /&gt;F6432000     128     128       -       -   8K r--s-  dev:256,65539 ino:246640&lt;br /&gt;...&lt;br /&gt;                &lt;== &lt;i&gt;&lt;font color="blue"&gt;Siebel81.isve02.shm was a memory mapped object&lt;/font&gt;&lt;/i&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-8046204653298054808?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/8046204653298054808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=8046204653298054808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8046204653298054808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8046204653298054808'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2012/01/solaris-tip-how-to-identify-memory.html' title='Solaris Tip: How-To Identify Memory Mapped Files'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-7181462402292802117</id><published>2012-01-04T23:43:00.001-08:00</published><updated>2012-01-04T23:43:44.850-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='generic+discussion software installer'/><title type='text'>Unwanted Software Installers</title><content type='html'>&lt;p&gt;After all these years of software evolution, it is odd to see not much improvement in the area of software installation. Customers do not seem to mind dealing with different, complex installers. Nevertheless this whole process can be simplified to save time, effort and energy.&lt;/p&gt;&lt;p&gt;In an ideal world, a software installer is supposed to have just one function - copying the software bits to a designated location and nothing else. However today we interact with different installers that does variety of things -- some install the pre-compiled binaries, few come in ready-to-extract zip archives, few others compile the binary on-the-fly and install the binary. Most of the enterprise software installers configure the software as part of the installation process where as few installers install the software and simply quit leaving the configuration step for the experts. Some of the installers hard-code the hostname, IP address, absolute paths of certain files etc., into some of the files on target system, which makes it hard to re-use the software home directory on a different server. Few installers do sensible job by not tying anything to the host system where the software is being installed.&lt;/p&gt;&lt;p&gt;Here is my partial &lt;i&gt;wish&lt;/i&gt; list of features for a software installer. I think it is enough to make a point.&lt;/p&gt;&lt;p&gt;&amp;#8212 &lt;i&gt;Idempotent&lt;/i&gt; installations : install the software once, run anywhere.  Customers should be able to move the resulting home directories from one host to any location on another host without worrying about the underlying changes to the location of the home directory, hostname, IP address etc., One example is the Oracle RDBMS installation. Once installed, the ORACLE_HOME can be zipped up, moved to another host, extracted and used right away. ORACLE_HOME usually contains the binaries. Installation specific configuration is stored outside of ORACLE_HOME. Optional Oracle Grid Control configuration appears to be saved under ORACLE_HOME, which is an aberration though it can be easily reconfigured once moved to another host.&lt;/p&gt;&lt;p&gt;&amp;#8212 &lt;i&gt;Simplicity&lt;/i&gt; : providing the entire directory structure in an extractable compressed archive file will remove one or more layers of dependency that the software installer has. For example, some of the installers require Java run-time to show the graphical interface for the installer. I recently encountered an installer executable that has private/unsupported symbols statically linked to it. When those private interfaces were removed in a later version of the operating environment, installer crashed and failed to make any progress. Had the software been provided in an extractable archive, software would have been readily available in the latter case. It appears that Oracle Corporation is moving in the right direction by releasing WebLogic 12&lt;i&gt;c&lt;/i&gt; software as a zip file.&lt;/p&gt;&lt;p&gt;&amp;#8212 &lt;i&gt;De-couple&lt;/i&gt; software installation from configuration : there should be clear separation between the installation and configuration. Once the software is in place, relevant folks can always configure the software as directed and needed. The customer just needs a simple tool or script to configure the software.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&gt; Off-topic: providing a web interface is even better. It gives the flexibility to configure the software from anywhere in the same network.&lt;/p&gt;&lt;p&gt;&amp;#8212 &lt;i&gt;Contain&lt;/i&gt; everything in a single top-level directory : it makes patching easier even if the top-level directory was moved to a different location or host. No point in spreading the pieces of software into multiple locations anyway. Going back to the example of ORACLE_HOME, one shortcoming in Oracle RDBMS installation is that few directories/files such as oraInventory reside outside of ORACLE_HOME - so, when moving ORACLE_HOME to another host, it is necessary to move all relevant files that are outside of ORACLE_HOME as well for successful database software patching.&lt;/p&gt;&lt;p&gt;With careful planning/design, Release Engineering can be as creative and innovative as the rest of the teams in delivering a software product out of the door --- but I guess it is up to the customers to demand that attitude.&lt;/p&gt;&lt;p&gt;PS:&lt;/br&gt;This blog post can be improved a lot. However since it is mostly about an opinion and a wish list, there is not much motivation to put more effort into it. And of course it is a generic discussion - nothing specific to a particular software or corporation.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-7181462402292802117?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/7181462402292802117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=7181462402292802117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7181462402292802117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7181462402292802117'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2012/01/unwanted-software-installers.html' title='Unwanted Software Installers'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-1505124649134485156</id><published>2011-12-27T15:14:00.001-08:00</published><updated>2012-01-19T03:15:25.458-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OATS Oracle'/><title type='text'>Oracle Application Testing Suite (OATS): Few Tips &amp; Tricks</title><content type='html'>&lt;p&gt;OATS is a suite of applications that can be used for performance and scalability testing, functional and regression testing. It is a thin client application that runs within a web browser - so, it is easy to use the tool from anywhere as long as the web server running on the host node is accessible. Hopefully the following tips and tricks will benefit some of the users of the Oracle Application Testing Suite.&lt;/p&gt;&lt;p&gt;Few technical details first - OATS is a 32-bit Java application that runs in a WebLogic container (WLS) with Oracle XE database being the backend store for test session data.&lt;/p&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;BR&gt;&lt;p&gt;&lt;i&gt;[Trick]&lt;/i&gt; Issue : &lt;b&gt;OATS software fails to install on 64-bit Windows systems&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Resolution:&lt;br&gt;Download and install 64-bit .NET framework manually before installing the OATS software. Look for .NET framework on Microsoft's downloads website.&lt;/p&gt;&lt;BR&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;BR&gt;&lt;p&gt;&lt;i&gt;[Trick]&lt;/i&gt; Issue : &lt;b&gt;OATS software fails to install on systems with large number of [virtual] CPUs&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Resolution:&lt;br&gt;On systems with many cores/vCPUs, Oracle database in general requires large amounts of memory to be configured for SGA - so, one solution would be to allocate as much memory as required. However Oracle XE limits the memory utilization within the database to 1 GB. Besides, XE uses only one CPU even if there are multiple CPUs available on a system. Hence one workaround is to limit the number of vCPUs that the system exposes during the installation of OATS software. The steps are shown below.&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt; Start button -&gt; Run -&gt; type "msconfig"&lt;li&gt; Click on Boot tab -&gt; Advanced Options&lt;li&gt; Check "Number of processors" and set appropriate value &lt;i&gt;(I believe we can go up to 16)&lt;/i&gt;&lt;li&gt; Reboot Windows&lt;li&gt; Uninstall failed OATS installation and try installing again&lt;li&gt; Undo the above made changes after the successful installation of OATS&lt;li&gt; Reboot Windows one final time&lt;/ul&gt;&lt;p&gt;Thanks to my colleague Bao Doan for providing this workaround.&lt;/p&gt;&lt;BR&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;BR&gt;&lt;p&gt;&lt;i&gt;[Trick]&lt;/i&gt; Issue : &lt;b&gt;During runtime, OATS drive the load and executes the test as expected but fails to collect runtime statistics&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Resolution:&lt;br&gt;This is another limitation of Oracle XE database. Until 10&lt;i&gt;g&lt;/i&gt;, XE limits the maximum amount of user data in the database to 4 GB. This limit was raised to 11 GB in release Oracle 11&lt;i&gt;g&lt;/i&gt; XE. OATS 9.x releases bundle Oracle 10&lt;i&gt;g&lt;/i&gt; XE. To take advantage of the larger limit for data, install Oracle 11&lt;i&gt;g&lt;/i&gt; XE manually before installing OATS software. OATS installer gives the option to use an existing installation of Oracle XE. Besides, it is not possible to have multiple Oracle XE installations on a single box anyway (that's another XE limitation).&lt;/p&gt;&lt;p&gt;For existing installations, one workaround is to remove old and unwanted sessions to make room for new sessions in the database. Listed below are the steps.&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt; Connect to the Oracle Load Testing (OLT) tool&lt;li&gt; Click on "Manage" top-level menu (upper right corner) -&gt; Sessions&lt;li&gt; Click on any unwanted session and press "Delete" button &lt;i&gt;(I recommend deleting one session at a time)&lt;/i&gt;&lt;/ul&gt;&lt;BR&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;BR&gt;&lt;p&gt;&lt;i&gt;[Trick]&lt;/i&gt; Issue : &lt;b&gt;Under load, there are many network timeouts with ton of sockets in TIME_WAIT state on OATS agent systems including the OATS Controller node&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Resolution:&lt;br&gt;Tune TCP/IP parameters on Windows as shown below.&lt;ul type="disc"&gt;&lt;li&gt; Launch Windows registry&lt;li&gt; Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIP\parameters&lt;li&gt; Configure the following two parameters. If not found, create those parameters by selecting Edit -&gt; New -&gt; DWORD Value from the menu bar. Select "Decimal" under Base.&lt;ul type="none"&gt;TcpTimedWaitDelay : 30 &lt;i&gt;[seconds]&lt;/i&gt;&lt;BR&gt;MaxUserPort : 65534&lt;/ul&gt;&lt;li&gt; Reboot Windows&lt;/ul&gt;&lt;p&gt;Thanks to my colleagues Dino and Vishnu for sharing this workaround.&lt;/p&gt;&lt;BR&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;BR&gt;&lt;p&gt;&lt;i&gt;[Trick]&lt;/i&gt; Issue : &lt;b&gt;OATS Controller does not show any graphs or analysis reports&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Resolution:&lt;br&gt;Install Adobe Flash Plugin and try again.&lt;/p&gt;&lt;BR&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;BR&gt;&lt;p&gt;&lt;i&gt;[Trick]&lt;/i&gt; Issue : &lt;b&gt;Under load, OATS Controller stops collecting runtime statistics at some random point&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Resolution:&lt;br&gt;Check Oracle database alert log for some clue(s). If there is an error message such as "&lt;code&gt;ORA-12516: TNS:listener could not find available handler with matching protocol stack&lt;/code&gt;", connect to the database, query v$resource_limit view and compare the values reported under &lt;code&gt;CURRENT_UTILIZATION&lt;/code&gt; and &lt;code&gt;MAX_UTILIZATION&lt;/code&gt; for the resource "&lt;code&gt;processes&lt;/code&gt;". If the current utilization is pretty close to the configured maximum value, raise the value for &lt;code&gt;processes&lt;/code&gt; parameter in [S]PFILE.&lt;/p&gt;&lt;BR&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;BR&gt;&lt;p&gt;&lt;i&gt;[Tip]&lt;/i&gt; &lt;b&gt;Balancing the load among multiple OATS agent systems&lt;/b&gt;&lt;/p&gt;&lt;p&gt;One simple way is to create a VU Agent System Group based on the available agent systems. Steps listed below.&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li&gt; Connect to the Oracle Load Testing (OLT) tool&lt;li&gt; Click on "Manage" top-level menu (upper right corner) -&gt; Systems&lt;li&gt; Click on "VU Agent System Group" in the left hand side&lt;li&gt; On the right hand side, click on "New" option&lt;li&gt; Select all the agent systems that you want to be part of the "VU Agent System Group"&lt;li&gt; Finally name the newly created system group and save&lt;/ul&gt;&lt;p&gt;Note that it is not possible to attach weights to the agent systems - so, it is suggested to have agent systems with similar hardware configurations in the VU Agent System Group.&lt;/p&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;BR&gt;&lt;p&gt;&lt;i&gt;[Tip]&lt;/i&gt; &lt;b&gt;Balancing the load among multiple web servers using OATS Controller&lt;/b&gt;&lt;/p&gt;&lt;p&gt;If there are multiple web server instances running in a enterprise application deployment; and OATS software is being used to test the performance and scalability of the application, parameterizing the web server hostname and port number in OATS test script will take care of the web server load balancing problem. Of course there are many alternatives to this approach such as using a hardware load balancer, using web server Reverse Proxy etc.,&lt;/p&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;BR&gt;&lt;p&gt;[Added on 01/19/2012]&lt;/p&gt;&lt;p&gt;&lt;i&gt;[Tip]&lt;/i&gt; &lt;b&gt;How-To check the available space in USERS tablespace?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Run the following on OATS Controller node:&lt;/p&gt;&lt;p&gt;Start -&gt; All Programs -&gt; Oracle Database XX Express Edition -&gt; Run SQL Command Line&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;SQL&gt; connect / as sysdba&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT /* + RULE */  df.tablespace_name "Tablespace",&lt;br /&gt;       df.bytes / (1024 * 1024) "Size (MB)",&lt;br /&gt;       SUM(fs.bytes) / (1024 * 1024) "Free (MB)",&lt;br /&gt;       Nvl(Round(SUM(fs.bytes) * 100 / df.bytes),1) "% Free",&lt;br /&gt;       Round((df.bytes - SUM(fs.bytes)) * 100 / df.bytes) "% Used"&lt;br /&gt;  FROM dba_free_space fs,&lt;br /&gt;       (SELECT tablespace_name,SUM(bytes) bytes&lt;br /&gt;          FROM dba_data_files&lt;br /&gt;         GROUP BY tablespace_name) df&lt;br /&gt; WHERE fs.tablespace_name (+)  = df.tablespace_name&lt;br /&gt; GROUP BY df.tablespace_name,df.bytes&lt;br /&gt;UNION ALL&lt;br /&gt;SELECT /* + RULE */ df.tablespace_name tspace,&lt;br /&gt;       fs.bytes / (1024 * 1024),&lt;br /&gt;       SUM(df.bytes_free) / (1024 * 1024),&lt;br /&gt;       Nvl(Round((SUM(fs.bytes) - df.bytes_used) * 100 / fs.bytes), 1),&lt;br /&gt;       Round((SUM(fs.bytes) - df.bytes_free) * 100 / fs.bytes)&lt;br /&gt;  FROM dba_temp_files fs,&lt;br /&gt;       (SELECT tablespace_name,bytes_free,bytes_used&lt;br /&gt;          FROM v$temp_space_header&lt;br /&gt;         GROUP BY tablespace_name,bytes_free,bytes_used) df&lt;br /&gt; WHERE fs.tablespace_name (+)  = df.tablespace_name&lt;br /&gt; GROUP BY df.tablespace_name,fs.bytes,df.bytes_free,df.bytes_used&lt;br /&gt; ORDER BY 4 DESC;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Copy/paste the above SQL code in a text file with sql extension and execute that SQL statement by calling the SQL script from SQL&gt; command prompt. eg., assuming the above code was saved in a plain text file called chktblspcusg.sql under C:\ drive, execute the SQL script as shown below:&lt;/p&gt;&lt;p&gt;&lt;code&gt;SQL&gt; @C:\chktblspcusg.sql&lt;/code&gt;&lt;/p&gt;&lt;BR&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;BR&gt;&lt;p&gt;See Also:&lt;BR&gt;&lt;ul type="none"&gt;&lt;li&gt; &lt;a href="http://www.oracle.com/technetwork/oem/app-test/index.html"&gt;Oracle Application Testing Suite&lt;/a&gt;&lt;li&gt; &lt;a href="http://docs.oracle.com/cd/E17781_01/install.112/e18803/toc.htm#BABIECJA"&gt;Oracle Database XE Licensing Restrictions&lt;/a&gt;&lt;li&gt; Check the documentation that is available as part of OATS installation&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-1505124649134485156?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/1505124649134485156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=1505124649134485156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1505124649134485156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1505124649134485156'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/12/oracle-application-testing-suite-oats.html' title='Oracle Application Testing Suite (OATS): Few Tips &amp; Tricks'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-8469443167660801566</id><published>2011-12-13T19:45:00.000-08:00</published><updated>2011-12-13T19:45:45.598-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle solaris rpc statd RPC troubleshooting'/><title type='text'>Solaris Tip: Resolving "statd: cannot talk to statd at &lt;target_host&gt;, RPC: Timed out(5)"</title><content type='html'>&lt;p&gt;&lt;b&gt;Symptom&lt;/b&gt;:&lt;/p&gt;&lt;p&gt;System log shows a bunch of RPC timed out messages such as the following:&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;Dec 13 09:23:23 gil08 last message repeated 1 time&lt;br /&gt;Dec 13 09:29:14 gil08 statd[19858]: [ID 766906 daemon.warning] statd: cannot talk to statd at ssc23, RPC: Timed out(5)&lt;br /&gt;Dec 13 09:35:05 gil08 last message repeated 1 time&lt;br /&gt;Dec 13 09:40:56 gil08 statd[19858]: [ID 766906 daemon.warning] statd: cannot talk to statd at ssc23, RPC: Timed out(5)&lt;br /&gt;..&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Those messages are the result of an apparent communication failure between the status daemons (statd) of both local and remote hosts using RPC calls.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Workaround/Solution&lt;/b&gt;:&lt;/p&gt;&lt;p&gt;If the &lt;i&gt;target_host&lt;/i&gt; is reachable, execute the following to stop the system from generating those warning messages --- stop the network status monitor, remove the target host entry from /var/statmon/sm.bak file and start the network status monitor process. Removing the target host entry from sm.bak file keeps that machine from being aware that it may have to participate in locking recovery.&lt;/p&gt;&lt;p&gt;eg.,&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;# ps -eaf | fgrep statd &lt;br /&gt;  daemon 14304 19622   0 09:47:16 ?           0:00 &lt;b&gt;/usr/lib/nfs/statd&lt;/b&gt;&lt;br /&gt;    root 14314 14297   0 09:48:03 pts/15      0:00 fgrep statd&lt;br /&gt;&lt;br /&gt;# svcs -a | grep "nfs/status"&lt;br /&gt;online          9:52:41 svc:/network/nfs/status:default&lt;br /&gt;&lt;br /&gt;# &lt;b&gt;svcadm -v disable nfs/status&lt;/b&gt;&lt;br /&gt;svc:/network/nfs/status:default disabled.&lt;br /&gt;&lt;br /&gt;# ls /var/statmon/sm.bak&lt;br /&gt;ssc23&lt;br /&gt;&lt;br /&gt;# &lt;b&gt;rm /var/statmon/sm.bak/ssc23&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;# &lt;b&gt;svcadm -v enable nfs/status&lt;/b&gt;&lt;br /&gt;svc:/network/nfs/status:default enabled.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-8469443167660801566?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/8469443167660801566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=8469443167660801566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8469443167660801566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8469443167660801566'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/12/solaris-tip-resolving-statd-cannot-talk.html' title='Solaris Tip: Resolving &quot;statd: cannot talk to statd at &amp;lt;&lt;i&gt;target_host&lt;/i&gt;&gt;, RPC: Timed out(5)&quot;'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-5899705679647288261</id><published>2011-11-18T15:37:00.001-08:00</published><updated>2011-11-18T15:38:03.928-08:00</updated><title type='text'>Siebel Troubleshooting : An ODBC error occurred; SBL-GEN-03006: Error calling function: DICFindTable m_pReqTbl</title><content type='html'>&lt;p&gt;&lt;b&gt;Symptom&lt;/b&gt;:&lt;/p&gt;&lt;p&gt;A newly installed Siebel application server fails to start despite successful ODBC connectivity to the database. SRProc process logs ODBC error messages similar to the following:&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;Message: GEN-13,&lt;br /&gt; Additional Message: dict-ERR-1109: &lt;br /&gt;       Unable to read value from export file (Data length (32) &gt; Column definition (3)).&lt;br /&gt;&lt;br /&gt;Message: GEN-13,&lt;br /&gt; Additional Message: dict-ERR-1107: Unable to read row 0 from export file (UTLDataValRead pBuf, col 4 ).&lt;br /&gt;&lt;br /&gt;GenericLog  GenericError  1     0002157..  11-11-18 13:28  Message: Generated SQL statement:,&lt;br /&gt; Additional Message: SQLFetch:&lt;br /&gt;   SELECT RDOBJ.DOCK_ID, RDOBJ.RELATED_DOCK_ID, RDOBJ.SQL_STATEMENT, RDOBJ.CHECK_VISIBILITY,&lt;br /&gt;          'N', RDOBJ.COMMENTS, RDOBJ.ACTIVE, RDOBJ.SEQUENCE, RDOBJ.VIS_STRENGTH,&lt;br /&gt;          RDOBJ.REL_VIS_STRENGTH, RDOBJ.VIS_EVT_COLS&lt;br /&gt;     FROM ORAPERF.S_DOCK_REL_DOBJ RDOBJ, ORAPERF.S_DOCK_OBJECT DOBJ&lt;br /&gt;    WHERE RDOBJ.REPOSITORY_ID = (SELECT ROW_ID FROM ORAPERF.S_REPOSITORY WHERE NAME = ?)&lt;br /&gt;      AND DOBJ.ROW_ID = RDOBJ.DOCK_ID&lt;br /&gt;      AND (DOBJ.INACTIVE_FLG = 'N' OR DOBJ.INACTIVE_FLG IS NULL)&lt;br /&gt;      AND (RDOBJ.INACTIVE_FLG = 'N' OR RDOBJ.INACTIVE_FLG IS NULL)&lt;br /&gt;&lt;br /&gt;Message: Error: An ODBC error occurred,&lt;br /&gt; Additional Message: Function: DICGetRDObjects; ODBC operation: SQLFetch&lt;br /&gt;&lt;br /&gt;Message: GEN-13,&lt;br /&gt; Additional Message: dict-ERR-1109: Unable to read value from export file (UTLCompressFRead (fseek)).&lt;br /&gt;&lt;br /&gt;Message: GEN-13,&lt;br /&gt; Additional Message: dict-ERR-1107: Unable to read row 0 from export file (UTLDataValRead pBuf, col 0 ).&lt;br /&gt;&lt;br /&gt;Message: GEN-10,&lt;br /&gt; Additional Message: Calling Function: DICLoadDObjectInfo; Called Function: Calling DICGetRDObjects&lt;br /&gt;&lt;br /&gt;Message: GEN-10,&lt;br /&gt; Additional Message: Calling Function: DICLoadDict; Called Function: DICLoadDObjectInfo&lt;br /&gt;&lt;br /&gt;GenericError&lt;br /&gt;(srpdb.cpp (860) err=3006 sys=2) SBL-GEN-03006: Error calling function: DICFindTable m_pReqTbl&lt;br /&gt;(srpsmech.cpp (74) err=3006 sys=0) SBL-GEN-03006: Error calling function: DICFindTable m_pReqTbl&lt;br /&gt;(srpmtsrv.cpp (107) err=3006 sys=0) SBL-GEN-03006: Error calling function: DICFindTable m_pReqTbl&lt;br /&gt;(smimtsrv.cpp (1203) err=3006 sys=0) SBL-GEN-03006: Error calling function: DICFindTable m_pReqTbl&lt;br /&gt;SmiLayerLog Error       Terminate process due to unrecoverable error: 3006. (Main Thread)&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;An inconsistent or corrupted dictionary file "diccache.dat" is likely the cause.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Solution&lt;/b&gt;:&lt;/p&gt;&lt;ul type="circle"&gt;&lt;li&gt; Stop the application server and manually kill the remaining Siebel application specific processes&lt;p&gt;eg.,&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;stop_server all&lt;br /&gt;&lt;br /&gt;pkill siebmtsh&lt;br /&gt;pkill siebproc&lt;br /&gt;..&lt;br /&gt;&lt;/pre&gt;&lt;li&gt; &lt;p&gt;Remove &lt;code&gt;$SIEBEL_HOME/bin/diccache.dat&lt;/code&gt; file. It will be re-generated during the application server startup&lt;/p&gt;&lt;li&gt; Start the application server&lt;pre class="programlisting"&gt;&lt;br /&gt;start_server all&lt;br /&gt;&lt;/pre&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-5899705679647288261?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/5899705679647288261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=5899705679647288261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5899705679647288261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5899705679647288261'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/11/siebel-troubleshooting-odbc-error.html' title='Siebel Troubleshooting : An ODBC error occurred; SBL-GEN-03006: Error calling function: DICFindTable m_pReqTbl'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-3809512473201121369</id><published>2011-10-10T17:45:00.000-07:00</published><updated>2011-10-10T17:45:05.794-07:00</updated><title type='text'>Oracle Database on NFS : Resolving "ORA-27086: unable to lock file - already in use" Error</title><content type='html'>&lt;head&gt;&lt;link rel="stylesheet" type="text/css" href="http://blogs.oracle.com/mandalika/resource/format.css" /&gt;&lt;/head&gt;&lt;p&gt;&lt;b&gt;Some Context&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Oracle database was hosted on ZFS Storage Appliance (NAS). The database files are accessible from the database server node via NFS mounted filesystems. Solaris 10 is the operating system on DB node.&lt;/p&gt;&lt;p&gt;Someone forgets to shutdown the database instance and unmount the remote filesystems before rebooting the database server node. After the system boots up, Oracle RDBMS fails to bring up the database due to locked-out data files.&lt;/p&gt;&lt;p&gt;eg.,&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;SQL&gt; startup&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area 1.7108E+10 bytes&lt;br /&gt;Fixed Size      2165208 bytes&lt;br /&gt;Variable Size   9965671976 bytes&lt;br /&gt;Database Buffers  6845104128 bytes&lt;br /&gt;Redo Buffers    295329792 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;&lt;b&gt;ORA-01157: cannot identify/lock data file 1 - see DBWR trace file&lt;br /&gt;ORA-01110: data file 1: '/orclvol4/entDB/system01.dbf'&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;======================&lt;br /&gt;&lt;i&gt;Extract from alert log:&lt;/i&gt;&lt;br /&gt;======================&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;ALTER DATABASE OPEN&lt;br /&gt;Fri Aug 05 21:30:54 2011&lt;br /&gt;Errors in file /oracle112/diag/rdbms/entdb/entDB/trace/entDB_dbw0_7235.trc:&lt;br /&gt;&lt;b&gt;ORA-01157: cannot identify/lock data file 1 - see DBWR trace file&lt;br /&gt;ORA-01110: data file 1: '/orclvol4/entDB/system01.dbf'&lt;br /&gt;ORA-27086: unable to lock file - already in use&lt;br /&gt;SVR4 Error: 11: Resource temporarily unavailable&lt;br /&gt;Additional information: 8&lt;br /&gt;Additional information: 21364&lt;/b&gt;&lt;br /&gt;Errors in file /oracle112/diag/rdbms/entdb/entDB/trace/entDB_dbw0_7235.trc:&lt;br /&gt;ORA-01157: cannot identify/lock data file 2 - see DBWR trace file&lt;br /&gt;ORA-01110: data file 2: '/orclvol4/entDB/sysaux01.dbf'&lt;br /&gt;ORA-27086: unable to lock file - already in use&lt;br /&gt;SVR4 Error: 11: Resource temporarily unavailable&lt;br /&gt;Additional information: 8&lt;br /&gt;Additional information: 21364&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Reason for the lock failure:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Because of the sudden ungraceful shutdown of the database, file locks on data files were not released by the NFS server (ZFS SA in this case). NFS server held on to the file locks even after the NFS client (DB server node in this example) was restarted. Due to this, Oracle RDBMS is not able to lock those data files residing on NFS server (ZFS SA). As a result, database instance was failed to start up in exclusive mode.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Workaround&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Manually clear the NFS locks as outlined below.&lt;/p&gt;&lt;p&gt;On NFS Client (database server node):&lt;/p&gt;&lt;ol&gt;&lt;li&gt; Shutdown the mounted database&lt;li&gt; Unmount remote (NFS) filesystems&lt;li&gt; &lt;p&gt;Execute: &lt;code&gt;clear_locks -s &amp;lt;nfs_server_host&gt;&lt;/code&gt;&lt;p&gt;eg.,&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;# clear_locks -s sup16&lt;br /&gt;Clearing locks held for NFS client ipsedb1 on server sup16&lt;br /&gt;clear of locks held for ipsedb1 on sup16 returned success&lt;br /&gt;&lt;/pre&gt;&lt;/ol&gt;&lt;p&gt;On NFS Server (ZFS SA):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;i&gt;(this step may not be necessary but wouldn't hurt to perform)&lt;/i&gt;&lt;/p&gt;&lt;ol start="4"&gt;&lt;li&gt; Execute: &lt;code&gt;clear_locks &amp;lt;nfs_client_host&gt;&lt;/code&gt;&lt;p&gt;eg.,&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;sup16# clear_locks 10.129.207.93&lt;br /&gt;Clearing locks held for NFS client 10.129.207.93 on server sup16&lt;br /&gt;clear of locks held for 10.129.207.93 on sup16 returned success&lt;br /&gt;&lt;/pre&gt;&lt;/ol&gt;&lt;p&gt;Again back on NFS Client (database server node):&lt;/p&gt;&lt;ol start="5"&gt;&lt;li&gt;Restart NFS client&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;i&gt;(this step may not be necessary but wouldn't hurt to perform)&lt;/i&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;# svcadm -v disable nfs/client&lt;br /&gt;# svcadm -v enable nfs/client&lt;br /&gt;&lt;/pre&gt;&lt;li&gt; Mount remote/NFS filesystems&lt;li&gt; Finally start the database&lt;/ol&gt;&lt;p&gt;Also see:&lt;BR /&gt;&lt;a href="http://utcc.utoronto.ca/~cks/space/blog/solaris/ListingFileLocks"&gt;Listing file locks on Solaris 10&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-3809512473201121369?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/3809512473201121369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=3809512473201121369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3809512473201121369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3809512473201121369'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/10/oracle-database-on-nfs-resolving-ora.html' title='Oracle Database on NFS : Resolving &quot;ORA-27086: unable to lock file - already in use&quot; Error'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-4538409596981338253</id><published>2011-10-06T12:38:00.000-07:00</published><updated>2011-10-06T12:38:54.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle siebel CRM SCBroker load+balancing'/><title type='text'>Siebel Connection Broker Load Balancing Algorithm</title><content type='html'>&lt;p&gt;Siebel server architecture supports spawning multiple application object manager processes. The Siebel Connection Broker, SCBroker, tries to balance the load (incoming requests) across different object manager processes running in a single Siebel server.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Least Loaded or Round Robin?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;By default, SCBroker forwards the incoming request to any object manager process that is least loaded - meaning the process with the least number of running tasks. In Siebel terminology, this behavior is referred as "least-loaded" or "LL" connection forwarding algorithm. While the default LL algorithm provides the optimal behavior in the best case scenarios, it may lead to serious availability problems if one of several object manager prcesses running in a Siebel server stops responding in a timely fashion [for some reason]. Such an object manager may still accept requests though it may timeout. At some point, the unresponsive/hung or erroneous object manager will have the least number of tasks that may prompt SCBroker component to forward new incoming requests to that object manager process - which in turn leads to a stalemate. To avoid such situations, it is recommended to configure "round-robin" or "RR" algorithm in SCBroker component. When round-robin algorithm is configured, SCBroker ignores the number of running tasks per object manager process and routes all requests to all object managers in a round robin fashion.&lt;/p&gt; &lt;p&gt;While both algorithms have their strengths and weaknesses, customers must weigh both options and choose the one that fits best in their deployment.&lt;/p&gt;&lt;p&gt;eg.,&lt;/p&gt;&lt;p&gt;Find the current load balancing algorithm:&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;srvrmgr&gt;  list advanced param ConnForwardAlgorithm for comp SCBroker show PA_ALIAS, PA_VALUE, PA_NAME&lt;br /&gt;&lt;br /&gt;PA_ALIAS              PA_VALUE  PA_NAME                                    &lt;br /&gt;--------------------  --------  -----------------------------------------  &lt;br /&gt;ConnForwardAlgorithm  &lt;b&gt;LL&lt;/b&gt;        Connection Forward algorithm for SCBroker&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Configure SCBroker to use round-robin algorithm:&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;srvrmgr&gt; change param ConnForwardAlgorithm=&lt;b&gt;RR&lt;/b&gt; for comp SCBroker server &lt;i&gt;SERVER_NAME&lt;/i&gt;&lt;br /&gt;Command completed successfully.&lt;br /&gt;&lt;br /&gt;srvrmgr&gt; list advanced param ConnForwardAlgorithm for comp SCBroker show PA_ALIAS, PA_VALUE, PA_NAME&lt;br /&gt;&lt;br /&gt;PA_ALIAS              PA_VALUE  PA_NAME                                    &lt;br /&gt;--------------------  --------  -----------------------------------------  &lt;br /&gt;ConnForwardAlgorithm  &lt;b&gt;RR&lt;/b&gt;        Connection Forward algorithm for SCBroker&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Other SCBroker parameters of interest: &lt;code&gt;ConnForwardTimeout&lt;/code&gt; and &lt;code&gt;ConnRequestTimeout&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/8206834-4538409596981338253?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/4538409596981338253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=4538409596981338253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/4538409596981338253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/4538409596981338253'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/10/siebel-connection-broker-load-balancing.html' title='Siebel Connection Broker Load Balancing Algorithm'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-8986719146872620364</id><published>2011-09-10T22:11:00.001-07:00</published><updated>2011-09-10T22:12:41.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle lob bfile blob securefile rdbms database tips performance clob'/><title type='text'>Oracle RDBMS : Generic Large Object (LOB) Performance Guidelines</title><content type='html'>&lt;p&gt;This blog post is generic in nature and based on my recent experience with a content management system where securefile BLOBs are critical in storing and retrieving the checked in content. It is strongly suggested to check the official documentation in addition to these brief guidelines. In general, &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e18294/toc.htm"&gt;Oracle Database SecureFiles and Large Objects Developer's Guide 11&lt;i&gt;g&lt;/i&gt; Release 2 (11.2)&lt;/a&gt; is a good starting point when creating tables involving SecureFiles and LOBs.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Guidelines&lt;/b&gt;&lt;/p&gt;&lt;ul type="circle"&gt;&lt;li&gt;&lt;i&gt;Tablespace&lt;/i&gt;: create the LOB in a different tablespace isolated from the rest of the database&lt;li&gt;&lt;i&gt;Block size&lt;/i&gt;: consider larger block size (default 8 KB) if the expected size of the LOB is big&lt;li&gt;&lt;i&gt;Chunk size&lt;/i&gt;: consider larger chunk size (default 8 KB) if larger LOBs are expected to be stored and retrieved&lt;li&gt;&lt;i&gt;Inline or Out-of-line&lt;/i&gt;: choose "&lt;code&gt;DISABLE STORAGE IN ROW&lt;/code&gt;" (out-of-line) if the average LOB size is expected to be &gt; 4 KB. The default inlining is fine for smaller LOBs&lt;li&gt;&lt;i&gt;CACHE or NOCACHE&lt;/i&gt;: consider bypassing the database buffer cache (&lt;code&gt;NOCACHE&lt;/code&gt;) if large number of LOBs are stored and not expected to be retrieved frequently&lt;li&gt;&lt;i&gt;COMPRESS or NOCOMPRESS&lt;/i&gt;: choose &lt;code&gt;COMPRESS&lt;/code&gt; option if storage capacity is a concern and a constraint. It saves disk space at the expense of some performance overhead. In a RAC database environment, it is recommended to compress the LOBs to reduce the interconnect traffic&lt;li&gt;&lt;i&gt;De-duplication&lt;/i&gt;: by default, duplicate LOBs are stored as a separate copy in the database. Choosing &lt;code&gt;DEDUPLICATE&lt;/code&gt; option enables sharing the same data blocks for similar files thus reducing storage overhead and simplifying storage management&lt;li&gt;&lt;i&gt;Partitioning&lt;/i&gt;: consider partitioning the parent table to maximize application performance. Hash partitioning is one of the options if there is no potential partition key in the table&lt;li&gt;&lt;i&gt;Zero-Copy I/O protocol&lt;/i&gt;: turned on by default. Turning it off in a RAC database environment could be beneficial. Set the initialization parameter &lt;code&gt;_use_zero_copy_io=FALSE&lt;/code&gt; to turn off the Zero-Copy I/O protocol&lt;li&gt;&lt;i&gt;Shared I/O pool&lt;/i&gt;: database uses the shared I/O pool to perform large I/O operations on securefile LOBs. The shared I/O pool uses shared memory segments. If this pool is not large enough or if there is not enough memory available in this pool for a securefile LOB I/O operation, Oracle uses a portion of PGA until there is sufficient memory available in the shared I/O pool. Hence it is recommended to size the shared I/O pool appropriately by monitoring the database during the peak activity. Relevant initialization parameters: &lt;code&gt;_shared_io_pool_size&lt;/code&gt; and &lt;code&gt;_shared_iop_max_size&lt;/code&gt;&lt;/ul&gt;&lt;p&gt;Also see:&lt;BR&gt;Oracle Database Documentation : &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e18294/adlob_performance.htm#i1007089"&gt;LOB Performance Guidelines&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-8986719146872620364?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/8986719146872620364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=8986719146872620364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8986719146872620364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8986719146872620364'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/09/oracle-rdbms-generic-large-object-lob.html' title='Oracle RDBMS : Generic Large Object (LOB) Performance Guidelines'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-2524845487218846769</id><published>2011-08-28T03:42:00.001-07:00</published><updated>2011-08-28T03:42:38.032-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle database flashback FDA'/><title type='text'>Oracle 11g: Travel back in time with the Database Flashback</title><content type='html'>&lt;p&gt;Error recovery, historical reporting, trend analysis, data forensics and fraud detection are just some of the business problems that can be solved by using the Flashback Data Archive feature in Oracle 11&lt;i&gt;g&lt;/i&gt; database. The Flashback option can be enabled for the entire database or for a selected set of tables. It can be enabled in the database with no application changes.&lt;/p&gt;&lt;p&gt;At work I usually run performance tests by starting with a clean copy of the database. I analyze the test results at the end of the test, determine the next course of action (tuning), restore the clean copy of the database from a backup, apply the tuning and re-run the performance test. It goes on in a cycle until I'm happy with the overall test result. In some cases especially with large data sets, restoring the database from a backup becomes one of the time consuming tasks. In such situations, using the database flashback to go back to a previously saved restore point saves quite a bit of time. Rest of this blog post demonstrates how to enable database flashback and to go back to a specified restore point. Check &lt;a href="http://www.oracle.com/technetwork/database/focus-areas/storage/total-recall-whitepaper-171749.pdf"&gt;Oracle Total Recall with Oracle Database 11&lt;i&gt;g&lt;/i&gt; Release 2&lt;/a&gt; white paper for more information on Flashback Data Archive (FDA).&lt;/p&gt;&lt;p&gt;&lt;b&gt;Objective&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Revert the entire database to a previously saved state at will&lt;/p&gt;&lt;p&gt;&lt;b&gt;Steps to perform&lt;/b&gt;&lt;/p&gt;&lt;ul type="circle"&gt;&lt;li&gt; Configure the following initialization parameters: &lt;code&gt;db_recovery_file_dest&lt;/code&gt; &amp; &lt;code&gt;db_recovery_file_dest_size&lt;/code&gt;&lt;li&gt; Enable Archive Log mode&lt;li&gt; Enable database Flashback option&lt;li&gt; Create a restore point. Decide whether to create a &lt;a href="http://download.oracle.com/docs/cd/B19306_01/backup.102/b14192/rpfbdb001.htm#CEGHGEJD"&gt;normal&lt;/a&gt; or a &lt;a href="http://download.oracle.com/docs/cd/B19306_01/backup.102/b14192/rpfbdb001.htm#CEGGCDAE"&gt;guaranteed&lt;/a&gt; restore point&lt;BR&gt;--------------------------------------------------------------------------------------------------------&lt;li&gt; Finally flashback database to the created restore point when required&lt;/ul&gt;&lt;p&gt;Be aware that there will be some performance and storage overhead in using the database flashback. Evaluate all your options carefully before configuring database flashback.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Example&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The following example uses guaranteed restore point to flashback the database in a two-node RAC environment. Most of the example is self-explanatory.&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% &lt;b&gt;srvctl status database -d DEMO&lt;/b&gt;&lt;br /&gt;Instance DEMO1 is running on node racnode01&lt;br /&gt;Instance DEMO2 is running on node racnode02&lt;br /&gt;&lt;br /&gt;/* &lt;i&gt;stop all the database instances except one (anyone) in RAC config&lt;/i&gt; */&lt;br /&gt;&lt;br /&gt;% &lt;b&gt;srvctl stop instance -d DEMO -i DEMO2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;% export ORACLE_SID=DEMO1&lt;br /&gt;&lt;br /&gt;/* &lt;i&gt;put one of the instances in non-cluster mode&lt;/i&gt; */&lt;br /&gt;&lt;br /&gt;% sqlplus / as sysdba&lt;br /&gt;SQL&gt; alter system set &lt;b&gt;cluster_database=false&lt;/b&gt; scope=spfile;&lt;br /&gt;&lt;br /&gt;% &lt;b&gt;srvctl stop instance -d DEMO -i DEMO1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;% sqlplus / as sysdba&lt;br /&gt;SQL&gt; &lt;b&gt;startup mount&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;/* &lt;i&gt;enable archive log mode&lt;/i&gt; */&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;b&gt;alter database archivelog;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; archive log list&lt;br /&gt;Database log mode	       Archive Mode&lt;br /&gt;Automatic archival	       Enabled&lt;br /&gt;Archive destination	       USE_DB_RECOVERY_FILE_DEST&lt;br /&gt;Oldest online log sequence     2&lt;br /&gt;Next log sequence to archive   4&lt;br /&gt;Current log sequence	       4&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter db_recovery_file&lt;br /&gt;&lt;br /&gt;NAME				     TYPE	 VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;db_recovery_file_dest		     string	 +FRA&lt;br /&gt;db_recovery_file_dest_size	     big integer 512G&lt;br /&gt;&lt;br /&gt;/* &lt;i&gt;enable flashback option&lt;/i&gt; */&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;b&gt;alter database flashback on;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; select flashback_on from v$database;&lt;br /&gt;&lt;br /&gt;FLASHBACK_ON&lt;br /&gt;------------------&lt;br /&gt;YES&lt;br /&gt;&lt;br /&gt;/* &lt;i&gt;put the instance back in cluster mode and restart the database&lt;/i&gt; */&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set &lt;b&gt;cluster_database=true&lt;/b&gt; scope=spfile;&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database open;&lt;br /&gt;&lt;br /&gt;% srvctl stop instance -d DEMO -i DEMO1&lt;br /&gt;&lt;br /&gt;% srvctl start database -d DEMO&lt;br /&gt;&lt;br /&gt;/* &lt;i&gt;create a guaranteed restore point&lt;/i&gt; */&lt;br /&gt;&lt;br /&gt;% sqlplus / as sysdba&lt;br /&gt;SQL&gt; &lt;b&gt;create restore point demo_clean_before_test guarantee flashback database;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Restore point created.&lt;br /&gt;&lt;br /&gt;SQL&gt; column NAME format A25&lt;br /&gt;SQL&gt; column TIME format A40&lt;br /&gt;SQL&gt; set lines 120&lt;br /&gt;SQL&gt; select NAME, SCN, TIME, GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE &lt;br /&gt;  2  from V$RESTORE_POINT where GUARANTEE_FLASHBACK_DATABASE='YES';&lt;br /&gt;&lt;br /&gt;NAME				 SCN TIME				      GUA STORAGE_SIZE&lt;br /&gt;------------------------- ---------- ---------------------------------------- --- ------------&lt;br /&gt;DEMO_CLEAN_BEFORE_TEST     17460960 21-AUG-11 01.01.20.000000000 AM	      YES     67125248&lt;br /&gt;&lt;br /&gt;/* &lt;i&gt;flashback database to the saved restore point&lt;/i&gt; */&lt;br /&gt;&lt;br /&gt;% srvctl stop database -d DEMO&lt;br /&gt;&lt;br /&gt;% export ORACLE_SID=DEMO1&lt;br /&gt;&lt;br /&gt;% &lt;b&gt;rman TARGET /&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;RMAN&gt; &lt;b&gt;STARTUP MOUNT;&lt;/b&gt;&lt;br /&gt;RMAN&gt; &lt;b&gt;FLASHBACK DATABASE TO RESTORE POINT 'DEMO_CLEAN_BEFORE_TEST';&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Starting flashback at 21-AUG-11&lt;br /&gt;using channel ORA_DISK_1&lt;br /&gt;&lt;br /&gt;starting media recovery&lt;br /&gt;media recovery complete, elapsed time: 00:00:25&lt;br /&gt;&lt;br /&gt;Finished flashback at 21-AUG-11&lt;br /&gt;&lt;br /&gt;RMAN&gt; &lt;b&gt;ALTER DATABASE OPEN RESETLOGS;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;database opened&lt;br /&gt;&lt;br /&gt;RMAN&gt; &lt;b&gt;SHUTDOWN IMMEDIATE;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;% &lt;b&gt;srvctl start database -d DEMO&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;/* ============================================================================== */&lt;br /&gt;&lt;br /&gt;/* &lt;i&gt;alternatively run the following RMAN script as shown below&lt;/i&gt; */&lt;br /&gt;&lt;br /&gt;% cat restore.rman&lt;br /&gt;RUN {&lt;br /&gt;        STARTUP MOUNT;&lt;br /&gt;        FLASHBACK DATABASE TO RESTORE POINT 'DEMO_CLEAN_BEFORE_TEST';&lt;br /&gt;        ALTER DATABASE OPEN RESETLOGS;&lt;br /&gt;        SHUTDOWN IMMEDIATE;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;EXIT&lt;br /&gt;&lt;br /&gt;% &lt;b&gt;rman TARGET / cmdfile=restore.rman&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-2524845487218846769?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/2524845487218846769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=2524845487218846769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2524845487218846769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2524845487218846769'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/08/oracle-11-g-travel-back-in-time-with.html' title='Oracle 11&lt;i&gt;g&lt;/i&gt;: Travel back in time with the Database Flashback'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-8212480618317283363</id><published>2011-08-09T21:19:00.000-07:00</published><updated>2011-08-09T21:23:26.424-07:00</updated><title type='text'>Gene Kelly, the Man Who Can Dance</title><content type='html'>&lt;p&gt;I'm not a fan of musicals, and it is very unlikely I will ever be. However recently I developed interest in some of the oldies especially the ones starring &lt;a href="http://en.wikipedia.org/wiki/Gene_Kelly"&gt;Gene Kelly&lt;/a&gt; just for the sheer amount of entertainment value he brings to the screen.  Michael Jackson is my only favorite entertainer all these years. Now Gene Kelly joins that élite with his graceful and magical dancing skills that majority of the current generation is unaware of.&lt;/p&gt;&lt;p&gt;Here are my top 3 picks so far from Gene's performances. Sit back, relax and enjoy! (video courtesy: Google|YouTube).&lt;/p&gt;&lt;ol&gt;&lt;li&gt; &lt;p&gt;&lt;b&gt;Singin' In The Rain (1952) - Moses Supposes&lt;/b&gt;&lt;/p&gt;&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/ZFxWkUkUsQA" frameborder="0" allowFullScreen&gt;&lt;/iframe&gt;&lt;li&gt; &lt;p&gt;&lt;b&gt;Anchors Aweigh (1944) - The Worry Song featuring Jerry Mouse&lt;/b&gt;&lt;/p&gt;&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/-kaNiAQyxf4" frameborder="0" allowFullScreen&gt;&lt;/iframe&gt;&lt;li&gt; &lt;p&gt;&lt;b&gt;Summer Stock (1950) - Newspaper Dance&lt;/b&gt;&lt;/p&gt;&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/Vw-qlHuktJs" frameborder="0" allowFullScreen&gt;&lt;/iframe&gt;&lt;/ol&gt;&lt;p&gt;My recommendation to everyone who loves to watch a nice dance routine - get hold of Gene Kelly's musical films, watch all the dance performances involving Gene and skip the rest of the movie if you don't like to sit around watching a musical.&lt;/p&gt;~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-8212480618317283363?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/8212480618317283363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=8212480618317283363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8212480618317283363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8212480618317283363'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/08/gene-kelly-man-who-can-dance.html' title='Gene Kelly, the Man Who Can &lt;i&gt;Dance&lt;/i&gt;'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/ZFxWkUkUsQA/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8206834.post-3355731505528510891</id><published>2011-07-02T00:53:00.000-07:00</published><updated>2011-07-02T00:53:13.648-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle database solaris resource manager virtualization consolidation'/><title type='text'>Be Eco-Responsible. Use Resource Management features in Solaris, Oracle Database and Go Green</title><content type='html'>&lt;p&gt;&lt;i&gt;This blog post is about a white paper that introduces the resource management features in Oracle Solaris and Oracle Database.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Who needs more hardware when under-utilized systems are sitting idle in datacenters consuming valuable space, energy and polluting environment with carbon emissions. These days virtualization and consolidation are more popular than ever before. And then there is Oracle Corporation with great products consisting rich features for resource manageability in consolidated, virtualized and isolated environments. Put together all these pieces what do we get? - a complete green solution that helps make this planet a better place.&lt;/p&gt;&lt;p&gt;In an attempt to increase the awareness of the resource management features available in Oracle Solaris and Oracle Database, we just published a four-part white paper surrounding Oracle Solaris Resource Manager and Oracle Database Resource Manager. Those resource managers are not really a product, process or an add-on to Solaris and Oracle Database. "Resource Manager" is the abstract term for the set of software modules that are integrated into the Solaris operating system and Oracle database management system to facilitate resource management from the OS and RDBMS perspective.&lt;/p&gt;&lt;p&gt;The first part of the series introduces: the concept of resource management, Solaris Resource Manager and Oracle Database Resource Manager; compares and contrasts both of those resource managers andends the discussion with a brief overview of resource management in high-availability (HA) environments. Access this paper from the following URL:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Part 1: &lt;a href="http://www.oracle.com/technetwork/articles/servers-storage-admin/o11-054-intro-rm-419298.pdf"&gt;Introduction to Resource Management in Oracle Solaris and Oracle Database&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The second part is all about the available resource management features in Oracle Solaris. This includes resource management in virtualized environments too. The range of topics vary from the simpleprocess binding to the dynamic reconfiguration of CPU and memory resources in a logical domain (LDom). The value of this paper lies in the volume of examples that follow each of the introduced feature. Access the second part from the following URL:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Part 2: &lt;a href="http://www.oracle.com/technetwork/articles/servers-storage-admin/o11-055-solaris-rm-419384.pdf"&gt;Effective Resource Management Using Oracle Solaris Resource Manager&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Similar to the second part, the third part talks about the available resource management features in Oracle Database Management System. Majority of the discussion revolves around creating resource plans in a Oracle database. This part also contains plenty of examples. Access the third part from the following URL:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Part 3: &lt;a href="http://www.oracle.com/technetwork/articles/servers-storage-admin/o11-056-oracledb-rm-419380.pdf"&gt;Effective Resource Management Using Oracle Database Resource Manager&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The final part briefly introduces various hardware/software products that makes Oracle Corporation the ideal consolidation platform. Also an imaginary case study was presented to demonstrate how to consolidate multiple applications and databases onto a single server using Oracle virtualization technologies and the resource management features found in Oracle Solaris and Oracle Database. Description of the consolidation plan and the implementation of the plan takes up major portion of this final part. Access the fourth and final part of this series from the following URL:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Part 4: &lt;a href="http://www.oracle.com/technetwork/articles/servers-storage-admin/o11-057-mixed-wl-rm-419381.pdf"&gt;Resource Management Case Study for Mixed Workloads and Server Sharing&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Happy reading.&lt;/p&gt;&lt;p&gt;&lt;i&gt;Original blog post is at:&lt;BR&gt;&lt;a href="http://blogs.oracle.com/mandalika/entry/be_eco_responsible_use_resource"&gt;http://blogs.oracle.com/mandalika/entry/be_eco_responsible_use_resource&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-3355731505528510891?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/3355731505528510891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=3355731505528510891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3355731505528510891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3355731505528510891'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/07/be-eco-responsible-use-resource.html' title='Be Eco-Responsible. Use Resource Management features in Solaris, Oracle Database and Go Green'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-251435590636877920</id><published>2011-05-28T01:11:00.000-07:00</published><updated>2011-05-28T02:34:35.901-07:00</updated><title type='text'>PeopleSoft Application Server : Binding JSL Port to Multiple IP Addresses</title><content type='html'>&lt;p&gt;For the impatient:&lt;/p&gt;&lt;div style="padding-left: 10px; border: 1px solid gray; width: 1250px; height: 90px;"&gt;&lt;p&gt;On any multi-homed&lt;sup&gt;&lt;a href=#def&gt;1&lt;/a&gt;&lt;/sup&gt; host, replace %PS_MACH% variable in "Jolt Listener" section of the application server domains' psappsrv.cfg file wih the special IP address "0.0.0.0" to get the desired effect. It enables TCP/IP stack to listen on all available network interfaces on the system. In other words, if JSL is listening on 0.0.0.0 on a multi-homed system, PIA traffic can flow using any of the IP addresses assigned to that system.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;For the rest:&lt;/p&gt;&lt;p&gt;A little background first.&lt;/p&gt;&lt;p&gt;PeopleSoft application server relies on Jolt, a companion product that co-exists with Tuxedo, to handle all web requests. That is, Jolt is the bridge between PeopleSoft application server and the web server (any supported one) that facilitates web communication. Tuxedo helps schedule PeopleSoft application server processes to perform the actual transactions. When the application server is booted up, Jolt server listener (JSL) is bound to a pre-configured port number and is actively monitored for incoming web requests. On the other hand, web server instance(s) are made aware of the existence of all Jolt listeners in a PeopleSoft Enterprise by configuring the hostname:port# pairs in each of the web domain's configuration.properties file.&lt;/p&gt;&lt;p&gt;By default the variable %PS_MACH% in each of the application server domain configuration file, psappsrv.cfg, gets resolved to the hostname of the system during application server boot-up time. The following example demonstrates that.&lt;/p&gt;&lt;p&gt;eg.,&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;/* Application server configuration file */&lt;br /&gt;% cat psappsrv.cfg&lt;br /&gt;..&lt;br /&gt;[JOLT Listener]&lt;br /&gt;Address=&lt;b&gt;%PS_MACH%&lt;/b&gt;&lt;br /&gt;Port=9000&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;/* Boot up the application server domain */&lt;br /&gt;% psadmin -c boot -d HRHX&lt;br /&gt;..&lt;br /&gt;exec JSL -A -- -d /dev/tcp -n //&lt;b&gt;ben01&lt;/b&gt;:9000 -m 100 -M 100 -I 5 -j ANY -x 20 -S 10 -c 1000000 -w JSH :&lt;br /&gt;        process id=20077 ... Started.&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;% hostname&lt;br /&gt;&lt;B&gt;ben01&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;% netstat -a | grep 9000&lt;br /&gt;&lt;b&gt;ben01&lt;/b&gt;.9000                 *.*                0      0 49152      0 LISTEN&lt;br /&gt;&lt;br /&gt;% netstat -an | grep 9000&lt;br /&gt;&lt;b&gt;17.16.221.106&lt;/b&gt;.9000          *.*                0      0 49152      0 LISTEN&lt;br /&gt;&lt;br /&gt;% ifconfig -a&lt;br /&gt;lo0: flags=2001000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL&gt; mtu 8232 index 1&lt;br /&gt; inet 127.0.0.1 netmask ff000000 &lt;br /&gt;&lt;b&gt;bge0&lt;/b&gt;: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 2&lt;br /&gt; inet &lt;b&gt;17.16.221.106&lt;/b&gt; netmask ffffff00 broadcast 17.16.221.255&lt;br /&gt;bge1: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 3&lt;br /&gt; inet 18.1.1.1 netmask ffffff00 broadcast 18.1.1.255&lt;br /&gt;e1000g0: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 4&lt;br /&gt; inet 18.1.1.201 netmask ffffff00 broadcast 18.1.1.255&lt;br /&gt;&lt;br /&gt;% telnet &lt;b&gt;17.16.221.106 9000&lt;/b&gt;&lt;br /&gt;Trying 17.16.221.106...&lt;br /&gt;&lt;font color="green"&gt;Connected to 17.16.221.106.&lt;/font&gt;&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;&lt;br /&gt;% telnet &lt;b&gt;&lt;i&gt;18.1.1.1&lt;/i&gt; 9000&lt;/b&gt;&lt;br /&gt;Trying 18.1.1.1...&lt;br /&gt;&lt;font color="red"&gt;telnet: Unable to connect to remote host: Connection refused&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;% telnet &lt;b&gt;&lt;i&gt;18.1.1.201&lt;/i&gt; 9000&lt;/b&gt;&lt;br /&gt;Trying 18.1.1.201...&lt;br /&gt;&lt;font color="red"&gt;telnet: Unable to connect to remote host: Connection refused&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Notice that %PS_MACH% was replaced by the actual hostname and the Jolt listener created the server socket using the IP address 17.16.221.106 and port number 9000. From the outputs of netstat, ifconfig and telnet, it is apparent that "bge0" is the only network interface that is being used by the Jolt listener. It means web server can communicate to JSL using the IP address 17.16.221.106 over port 9000 but not using any of the other two IP addresses 18.1.1.1 or 18.1.1.201. This is the default behavior.&lt;/p&gt;&lt;p&gt;However some customers may wish to have the ability to connect to the application services from different/multiple networks. This is possible in case of multi-homed systems -- servers with multiple network interfaces that are connected to a single or multiple networks. For example, such a host could be part of a public network, a private network where only those clients that can communicate over private links can connect or an InfiniBand network, a low latency high throughput network. The default behavior of JSL can be changed by using a special IP address "0.0.0.0" in place of the variable %PS_MACH% in application server domains' configuration file. The IP address 0.0.0.0 hints the Jolt listener (JSL) to listen on all available IPv4 network interfaces on the system. (&lt;i&gt;I read somewhere that "::0" is the equivalent for IPv6 interfaces. Didn't get a chance to test it out yet&lt;/i&gt;). The following example demonstrates how the default behavior changes with the IP address 0.0.0.0.&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% cat psappsrv.cfg&lt;br /&gt;..&lt;br /&gt;[JOLT Listener]&lt;br /&gt;Address=&lt;b&gt;0.0.0.0&lt;/b&gt;&lt;br /&gt;Port=9000&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;/* Update the binary configuration by reloading the config file */&lt;br /&gt;% psadmin -c configure -d HRHX&lt;br /&gt;&lt;br /&gt;% psadmin -c boot -d HRHX&lt;br /&gt;..&lt;br /&gt;exec JSL -A -- -d /dev/tcp -n //&lt;b&gt;0.0.0.0&lt;/b&gt;:9000 -m 100 -M 100 -I 5 -j ANY -x 20 -S 10 -c 1000000 -w JSH :&lt;br /&gt; process id=20874 ... Started.&lt;br /&gt;&lt;br /&gt;% netstat -a | grep 9000&lt;br /&gt;      &lt;b&gt;&lt;font color="blue"&gt;*&lt;/font&gt;&lt;/b&gt;.9000               *.*                0      0 49152      0 LISTEN&lt;br /&gt;&lt;br /&gt;% telnet 17.16.221.106 9000&lt;br /&gt;Trying 17.16.221.106...&lt;br /&gt;&lt;font color="green"&gt;Connected to &lt;b&gt;17.16.221.106&lt;/b&gt;.&lt;/font&gt;&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;% telnet 18.1.1.1 9000&lt;br /&gt;Trying 18.1.1.1...&lt;br /&gt;&lt;font color="green"&gt;Connected to &lt;b&gt;18.1.1.1&lt;/b&gt;.&lt;/font&gt;&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;% telnet 18.1.1.201 9000&lt;br /&gt;Trying 18.1.1.201...&lt;br /&gt;&lt;font color="green"&gt;Connected to &lt;b&gt;18.1.1.201&lt;/b&gt;&lt;/font&gt;.&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Footnote:&lt;BR /&gt;&lt;a name="def"&gt;[1] Any system with more than one interface is considered a multi-homed host&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-251435590636877920?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/251435590636877920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=251435590636877920' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/251435590636877920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/251435590636877920'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/05/peoplesoft-application-server-binding.html' title='PeopleSoft Application Server : Binding JSL Port to Multiple IP Addresses'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-4113699466913371819</id><published>2011-05-24T00:52:00.000-07:00</published><updated>2011-05-24T00:58:08.323-07:00</updated><title type='text'>Oracle Database: How to Figure Out if a Tablespace is Empty</title><content type='html'>&lt;p&gt;It is not uncommon for Oracle DBAs to create, drop tablespaces for various reasons throughout the life of a database management system. It is a good practice to double check whether a tablespace is really empty before dropping it. One way is to visually check the "Tablespaces" section in Oracle Enterprise Manager (OEM) database console. However sometimes the graphical interface may return false positives. Another way is to rely on data dictionary views to obtain relevant information as accurately as possible. In the latter case, DBA_SEGMENTS / USER_SEGMENTS views are useful in mapping segments such as table, index, table/index partition etc., to a tablespace.&lt;/p&gt;eg.,&lt;p&gt;The following example queries USER_SEGMENTS view to list the segments and their types stored in a tablespace called "TS_SALES_DATA32K".&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;SQL&gt; COLUMN SEGMENT_NAME FORMAT A30&lt;br /&gt;SQL&gt; COLUMN SEGMENT_TYPE FORMAT A30&lt;br /&gt;SQL&gt; &lt;br /&gt;SQL&gt; &lt;b&gt;SELECT SEGMENT_NAME, SEGMENT_TYPE&lt;/b&gt;&lt;br /&gt;  2  &lt;b&gt;FROM USER_SEGMENTS&lt;/b&gt;&lt;br /&gt;  3  &lt;b&gt;WHERE TABLESPACE_NAME = 'TS_SALES_DATA32K';&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;SEGMENT_NAME                   SEGMENT_TYPE&lt;br /&gt;------------------------------ ------------------------------&lt;br /&gt;SALES_DATA                     TABLE&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;The tablespace "TS_SALES_DATA32K" is holding one table called "SALES_DATA". The following query returns no rows meaning tablespace "TS_SALES_DATA" is empty - hence it can be dropped with no hesitation.&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;SQL&gt; SELECT SEGMENT_NAME, SEGMENT_TYPE         &lt;br /&gt;  2  FROM USER_SEGMENTS       &lt;br /&gt;  3  WHERE TABLESPACE_NAME = 'TS_SALES_DATA';&lt;br /&gt;&lt;br /&gt;no rows selected&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Here is another query that lists out all the tablespaces in a database along with the number of segments/objects stored in each of those tablespaces. Note that it is possible to extract similar information in different ways using more efficient queries.&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;SQL&gt; COLUMN TABLESPACE FORMAT A40&lt;br /&gt;SQL&gt; &lt;br /&gt;SQL&gt; SELECT UT.TABLESPACE_NAME "TABLESPACE", COUNT (US.SEGMENT_NAME) "NUM SEGMENTS"&lt;br /&gt;  2  FROM USER_TABLESPACES UT, USER_SEGMENTS US&lt;br /&gt;  3  WHERE UT.TABLESPACE_NAME = US.TABLESPACE_NAME&lt;br /&gt;  4  GROUP BY (UT.TABLESPACE_NAME)&lt;br /&gt;  5  ORDER BY COUNT (US.SEGMENT_NAME) DESC;&lt;br /&gt;&lt;br /&gt;TABLESPACE                               NUM SEGMENTS&lt;br /&gt;---------------------------------------- -----------&lt;br /&gt;TS_DP                                         114989&lt;br /&gt;TS_DP_X                                          306&lt;br /&gt;..&lt;br /&gt;TS_SALES_DATA32K                                   1&lt;br /&gt;TS_SALES_DATA                                      0&lt;br /&gt;&lt;br /&gt;13 rows selected.&lt;br /&gt;&lt;/pre&gt;&lt;BR /&gt;&lt;p&gt;SEE ALSO:&lt;BR /&gt;&lt;a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/logical.htm"&gt;Oracle Database Concepts : Data Blocks, Extents, and Segments&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-4113699466913371819?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/4113699466913371819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=4113699466913371819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/4113699466913371819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/4113699466913371819'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/05/oracle-database-how-to-figure-out-if.html' title='Oracle Database: How to Figure Out if a Tablespace is Empty'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-112777019074734667</id><published>2011-04-12T00:40:00.001-07:00</published><updated>2011-10-03T15:24:55.010-07:00</updated><title type='text'>Oracle Solaris: Show Me the CPU, vCPU, Core Counts and the Socket-Core-vCPU Mapping</title><content type='html'>&lt;i&gt;[Replaced old code with new code on 10/03/11]&lt;/i&gt;&lt;p&gt;It should be easy to find this information just by running an OS command. However for some reason it ain't the case as of today. The user must know few details about the underlying hardware and run multiple commands to figure out the exact number of physical processors, cores etc.,&lt;/p&gt;&lt;p&gt;For the benefit of our customers, here is a simple shell script that displays the number of physical processors, cores, virtual processors, cores per physical processor, number of hardware threads (vCPUs) per core and the virtual CPU mapping for all physical processors and cores on a Solaris system (SPARC or x86/x64). The script showed valid output on recent T-series, M-series hardware as well as on some older hardware - Sun Fire 4800, x4600. Due to the changes in the output of &lt;code&gt;cpu_info&lt;/code&gt; over the years, it is possible that the script may return incorrect information in some cases. Since it is just a shell script, tweak the code as you like. The script can be executed as any OS user.&lt;/p&gt;&lt;p&gt;Download the script: &lt;a href="https://docs.google.com/leaf?id=0B36un5vvSrXENGVkNmE1YTctYjc0NS00OTExLThkOWEtYTBlMTA0OWE3NjQ3&amp;hl=en_US"&gt;showcpucount&lt;/a&gt;&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;% cat showcpucount&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;--------------------------------------- CUT HERE -------------------------------------------&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;/usr/bin/kstat -m cpu_info | egrep "chip_id|core_id|module: cpu_info" &gt; /var/tmp/cpu_info.log&lt;br /&gt;&lt;br /&gt;nproc=`(grep chip_id /var/tmp/cpu_info.log | awk '{ print $2 }' | sort -u | wc -l | tr -d ' ')`&lt;br /&gt;ncore=`(grep core_id /var/tmp/cpu_info.log | awk '{ print $2 }' | sort -u | wc -l | tr -d ' ')`&lt;br /&gt;vproc=`(grep 'module: cpu_info' /var/tmp/cpu_info.log | awk '{ print $4 }' | sort -u | wc -l | tr -d ' ')`&lt;br /&gt;&lt;br /&gt;nstrandspercore=$(($vproc/$ncore))&lt;br /&gt;ncoresperproc=$(($ncore/$nproc))&lt;br /&gt;&lt;br /&gt;speedinmhz=`(/usr/bin/kstat -m cpu_info | grep clock_MHz | awk '{ print $2 }' | sort -u)`&lt;br /&gt;speedinghz=`echo "scale=2; $speedinmhz/1000" | bc`&lt;br /&gt;&lt;br /&gt;echo "Total number of physical processors: $nproc"&lt;br /&gt;echo "Number of virtual processors: $vproc"&lt;br /&gt;echo "Total number of cores: $ncore"&lt;br /&gt;echo "Number of cores per physical processor: $ncoresperproc"&lt;br /&gt;echo "Number of hardware threads (strands or vCPUs) per core: $nstrandspercore"&lt;br /&gt;echo "Processor speed: $speedinmhz MHz ($speedinghz GHz)"&lt;br /&gt;&lt;br /&gt;# now derive the vcpu-to-core mapping based on above information #&lt;br /&gt;&lt;br /&gt;echo -e "\n** Socket-Core-vCPU mapping **"&lt;br /&gt;let linenum=2&lt;br /&gt;&lt;br /&gt;for ((i = 1; i &lt;= ${nproc}; ++i ))&lt;br /&gt;do&lt;br /&gt;        chipid=`sed -n ${linenum}p /var/tmp/cpu_info.log | awk '{ print $2 }'`&lt;br /&gt;        echo -e "\nPhysical Processor $i (chip id: $chipid):"&lt;br /&gt;&lt;br /&gt;        for ((j = 1; j &lt;= ${ncoresperproc}; ++j ))&lt;br /&gt;        do&lt;br /&gt;                let linenum=($linenum + 1)&lt;br /&gt;                coreid=`sed -n ${linenum}p /var/tmp/cpu_info.log | awk '{ print $2 }'`&lt;br /&gt;                echo -e "\tCore $j (core id: $coreid):"&lt;br /&gt;&lt;br /&gt;                let linenum=($linenum - 2)&lt;br /&gt;                vcpustart=`sed -n ${linenum}p /var/tmp/cpu_info.log | awk '{ print $4 }'`&lt;br /&gt;&lt;br /&gt;                let linenum=(3 * $nstrandspercore + $linenum - 3)&lt;br /&gt;                vcpuend=`sed -n ${linenum}p /var/tmp/cpu_info.log | awk '{ print $4 }'`&lt;br /&gt;&lt;br /&gt;                echo -e "\t\tvCPU ids: $vcpustart - $vcpuend"&lt;br /&gt;                let linenum=($linenum + 4)&lt;br /&gt;        done&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;rm /var/tmp/cpu_info.log&lt;br /&gt;&lt;i&gt;--------------------------------------- CUT HERE -------------------------------------------&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;# prtdiag | head -1&lt;br /&gt;System Configuration:  Sun Microsystems  sun4u SPARC Enterprise M4000 Server&lt;br /&gt;&lt;br /&gt;# ./showcpucount&lt;br /&gt;Total number of physical processors: 4&lt;br /&gt;Number of virtual processors: 32&lt;br /&gt;Total number of cores: 16&lt;br /&gt;Number of cores per physical processor: 4&lt;br /&gt;Number of hardware threads (strands or vCPUs) per core: 2&lt;br /&gt;Processor speed: 2660 MHz (2.66 GHz)&lt;br /&gt;&lt;br /&gt;** Socket-Core-vCPU mapping **&lt;br /&gt;&lt;br /&gt;Physical Processor 1 (chip id: 1024):&lt;br /&gt;        Core 1 (core id: 0):&lt;br /&gt;                vCPU ids: 0 - 1&lt;br /&gt;        Core 2 (core id: 2):&lt;br /&gt;                vCPU ids: 2 - 3&lt;br /&gt;        Core 3 (core id: 4):&lt;br /&gt;                vCPU ids: 4 - 5&lt;br /&gt;        Core 4 (core id: 6):&lt;br /&gt;                vCPU ids: 6 - 7&lt;br /&gt;&lt;br /&gt;Physical Processor 2 (chip id: 1032):&lt;br /&gt;        Core 1 (core id: 8):&lt;br /&gt;                vCPU ids: 8 - 9&lt;br /&gt;        Core 2 (core id: 10):&lt;br /&gt;                vCPU ids: 10 - 11&lt;br /&gt;        Core 3 (core id: 12):&lt;br /&gt;                vCPU ids: 12 - 13&lt;br /&gt;        Core 4 (core id: 14):&lt;br /&gt;                vCPU ids: 14 - 15&lt;br /&gt;&lt;br /&gt;Physical Processor 3 (chip id: 1040):&lt;br /&gt;        Core 1 (core id: 16):&lt;br /&gt;                vCPU ids: 16 - 17&lt;br /&gt;        Core 2 (core id: 18):&lt;br /&gt;                vCPU ids: 18 - 19&lt;br /&gt;        Core 3 (core id: 20):&lt;br /&gt;                vCPU ids: 20 - 21&lt;br /&gt;        Core 4 (core id: 22):&lt;br /&gt;                vCPU ids: 22 - 23&lt;br /&gt;&lt;br /&gt;Physical Processor 4 (chip id: 1048):&lt;br /&gt;        Core 1 (core id: 24):&lt;br /&gt;                vCPU ids: 24 - 25&lt;br /&gt;        Core 2 (core id: 26):&lt;br /&gt;                vCPU ids: 26 - 27&lt;br /&gt;        Core 3 (core id: 28):&lt;br /&gt;                vCPU ids: 28 - 29&lt;br /&gt;        Core 4 (core id: 30):&lt;br /&gt;                vCPU ids: 30 - 31&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-112777019074734667?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/112777019074734667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=112777019074734667' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/112777019074734667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/112777019074734667'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/04/solaris-show-me-cpu-vcpu-core-counts.html' title='Oracle Solaris: Show Me the CPU, vCPU, Core Counts and the Socket-Core-vCPU Mapping'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-7974588949089193989</id><published>2011-03-10T23:27:00.000-08:00</published><updated>2011-04-10T23:44:20.538-07:00</updated><title type='text'>Sri Satyanarayana Vratamu in Telugu Script</title><content type='html'>శ్రీ సత్యనారాయణ వ్రతము తెలుగులో.&lt;br /&gt;&lt;p&gt;&lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B36un5vvSrXEMWQwNGFhMWMtZjg3YS00MzYwLTk1M2UtODg0MmU0YThkYTIz&amp;amp;hl=en&amp;amp;authkey=CO_ttpcK"&gt;Part 1 : Vratakalpamu (వ్రతకల్పము)&lt;/a&gt;&lt;BR /&gt;&lt;a href="https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B36un5vvSrXEYjBkYzIxMGMtZmE4Ni00NDA3LWE0MTctMjE5ZTYyNGI5MWQ3&amp;hl=en&amp;authkey=CMfy0rMD"&gt;Part 2 : Kadha, Vishnu Sahasra Naamaavali (కధ, విష్ణు సహస్ర నామావళి)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Download original documents and rotate counterclockwise for better readability.&lt;/p&gt;&lt;p&gt;Courtesy/Publisher: గొల్లపూడి వీర సామీ సన్, రాజమండ్రి &lt;/p&gt;&lt;p&gt;See Also:&lt;BR /&gt;&lt;a href="http://technopark02.blogspot.com/2006/05/hanuman-chalisa-in-telugu-script.html"&gt;Hanuman Chalisa&lt;/a&gt; (హనుమాన్ చాలీసా) and &lt;a href="http://technopark02.blogspot.com/2007/08/sandhya-vandanamu-in-telugu-script.html"&gt;Sandhya Vandanam&lt;/a&gt; (సంధ్యా వందనము) in Telugu Script&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-7974588949089193989?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/7974588949089193989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=7974588949089193989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7974588949089193989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7974588949089193989'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/04/sri-satyanarayana-vratamu-in-telugu.html' title='Sri Satyanarayana Vratamu in Telugu Script'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-2528879477292016503</id><published>2011-02-01T20:43:00.000-08:00</published><updated>2011-02-01T20:43:03.574-08:00</updated><title type='text'>PeopleSoft Financials 9.0 (Day-in-the-Life) Benchmark on Oracle Sun</title><content type='html'>&lt;p&gt;It is very rare to see any vendor publishing a benchmark on competing products of their own let alone products that are 100% compatible with each other. Well, it happened at Oracle|Sun. M-series and T-series hardware was the subject of two similar / comparable benchmarks; and PeopleSoft Financials 9.0 DIL was the benchmarked workload.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Benchmark report URLs&lt;/b&gt;&lt;/p&gt;&lt;table border="0"&gt;&lt;tr&gt;&lt;td width="10%"&gt;&lt;/td&gt;&lt;td width="90%"&gt;&lt;a href="http://www.oracle.com/us/solutions/benchmark/apps-benchmark/ora-fin-d-i-t-l-oracle-t3-1-286900.pdf"&gt;PeopleSoft Financials 9.0 on Oracle's SPARC T3-1 Server&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="10%"&gt;&lt;/td&gt;&lt;td width="90%"&gt;&lt;a href="http://www.oracle.com/us/solutions/benchmark/apps-benchmark/ora-fin-d-i-t-l-oracle-m4k-286901.pdf"&gt;PeopleSoft Financials 9.0 on Oracle's Sun SPARC Enterprise M4000 Server&lt;/a&gt;&lt;/td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;&lt;b&gt;Brief description of workload&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The benchmark workload simulated Financial Control and Reporting business processes that a customer typically performs when closing their books at period end. "Closing the books" generally involves Journal generation, editing &amp; posting; General Ledger allocations, summary &amp; consolidations and reporting in GL. The applications that were involved in this process are: General Ledger, Asset Management, Cash Management, Expenses, Payables and Receivables.&lt;/p&gt;&lt;p&gt;The benchmark execution simulated the processing required for closing the books (background batch processes) along with some online concurrent transaction activity by 1000 end users.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Summary of Benchmark Test Results&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The following table summarizes the test results of the "close the books" business processes. For the online transaction response times, check the benchmark reports (too many transactions to summarize here). Feel free to draw your own conclusions.&lt;/p&gt;&lt;p&gt;As of this writing no other vendor published any benchmark result with PeopleSoft Financials 9.0 workload.&lt;/p&gt;&lt;p&gt;(If the following table is illegible, click &lt;a href="http://blogs.sun.com/mandalika/resource/fms_results_clean.html"&gt;here&lt;/a&gt; for cleaner copy of test results.)&lt;/p&gt;&lt;table border="1" frame="void" rules="all" width="100%"&gt;&lt;tbody&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th rowspan="2" width="40%"&gt; Hardware Configuration &lt;/th&gt;&lt;th colspan="2" width="24%"&gt; Elapsed Time &lt;/th&gt;&lt;th colspan="2" width="18%"&gt; Journal Lines per Hour &lt;/th&gt;&lt;th colspan="2" width="18%"&gt; Ledger Lines per Hour &lt;/th&gt;&lt;/tr&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th align="center"&gt; Batch only &lt;/th&gt;&lt;th align="center"&gt; Batch + 1K users &lt;/th&gt;&lt;th align="center"&gt; Batch only &lt;/th&gt;&lt;th align="center"&gt; Batch + 1K users &lt;/th&gt;&lt;th align="center"&gt; Batch only &lt;/th&gt;&lt;th align="center"&gt; Batch + 1K users &lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;table border="1" frame="void" rules="all" width="100%"&gt;&lt;tr&gt;&lt;td width="22%"&gt;DB + Proc Sched&lt;/td&gt;&lt;td width="78%"&gt;&amp;nbsp;1 x Sun SPARC Enterprise M5000 Server&lt;BR&gt;&amp;nbsp;&lt;i&gt;&lt;font color="#707070"&gt;8 x 2.53 GHz QC SPARC64 VII processors, 128 GB RAM&lt;/font&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="22%"&gt;App + Web&lt;/td&gt;&lt;td width="78%"&gt;&amp;nbsp;1 x SPARC T3-1 Server&lt;BR&gt;&amp;nbsp;&lt;i&gt;&lt;font color="#707070"&gt;1 x 1.65 GHz 16-Core SPARC T3 processor, 128 GB RAM&lt;/font&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;24.15m&lt;BR&gt;Reporting: 11.67m&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;25.03m&lt;BR&gt;Reporting: 11.98m&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;6,355,093&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;6,141,258&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;6,209,682&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;5,991,382&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#CCCCFF"&gt;&lt;td&gt;&lt;table border="1" frame="void" rules="all" width="100%"&gt;&lt;tr&gt;&lt;td width="22%"&gt;DB + Proc Sched&lt;/td&gt;&lt;td width="78%"&gt;&amp;nbsp;1 x Sun SPARC Enterprise M5000 Server&lt;BR&gt;&amp;nbsp;&lt;i&gt;&lt;font color="#707070"&gt;8 x 2.66 GHz QC SPARC64 VII+ processors, 128 GB RAM&lt;/font&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="22%"&gt;App + Web&lt;/td&gt;&lt;td width="78%"&gt;&amp;nbsp;1 x Sun SPARC Enterprise M4000 Server&lt;BR&gt;&amp;nbsp;&lt;i&gt;&lt;font color="#707070"&gt;4 x 2.66 GHz QC SPARC64 VII+ processors, 128 GB RAM&lt;/font&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;21.74m&lt;BR&gt;Reporting: 11.35m&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;23.30m&lt;BR&gt;Reporting: 11.42m&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;7,059,591&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;6,597,239&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;6,898,060&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;6,436,236&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="6"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;&lt;b&gt;Software Versions&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Oracle’s PeopleSoft Enterprise Financials/SCM 9.00.00.331&lt;BR&gt;Oracle’s PeopleSoft Enterprise (PeopleTools) 8.49.23 64-bit&lt;BR&gt;&lt;i&gt;Oracle’s PeopleSoft Enterprise (PeopleTools) 8.49.23 32-bit on Windows Server 2003 SP2 for generating reports using nVision&lt;/i&gt;&lt;BR&gt;Oracle Database 11&lt;i&gt;g&lt;/i&gt;  Enterprise Edition Release 11.2.0.1.0 64-bit + RDBMS patch &lt;a href="http://blogs.sun.com/mandalika/entry/oracle_11_i_g_i"&gt;9699654&lt;/a&gt;&lt;BR&gt;Oracle Tuxedo 9.1 RP36 Jolt 9.1 64-bit&lt;BR&gt;Oracle WebLogic Server 9.2 MP3 64-bit (Java version "1.5.0_12")&lt;BR&gt;MicroFocus Server Express 4.0 SP4 64-bit&lt;BR&gt;Oracle Solaris 10 10/09 and 09/10&lt;/p&gt;&lt;p&gt;&lt;b&gt;Acknowledgments&lt;/b&gt;&lt;/p&gt;&lt;p&gt;It is one of the complex and stressful benchmarks that I have ever been involved in. It is a collaborative effort from different teams within Oracle Corporation. A sincere thanks to the PeopleSoft benchmark team for providing adequate support throughout the execution of the benchmark and for the swift validation of benchmark results numerous times (yes, "numerous" - it is not a typo.)&lt;/p&gt;&lt;i&gt;(Original post is at:&lt;BR&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_financials_9_0_day"&gt;http://blogs.sun.com/mandalika/entry/peoplesoft_financials_9_0_day&lt;/a&gt;)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-2528879477292016503?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/2528879477292016503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=2528879477292016503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2528879477292016503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2528879477292016503'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/02/peoplesoft-financials-90-day-in-life.html' title='PeopleSoft Financials 9.0 (Day-in-the-Life) Benchmark on Oracle Sun'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-9217646375640121856</id><published>2011-01-10T19:07:00.001-08:00</published><updated>2011-01-10T19:16:16.323-08:00</updated><title type='text'>Oracle 11g : Poor Performance Accessing V$SESSION_FIX_CONTROL</title><content type='html'>&lt;div style="padding-left: 10px; border: 1px solid gray; width: 1250px; height: 50px;"&gt;&lt;p&gt;PeopleSoft HCM, Financials/SCM 9.x customers may have to patch their Oracle database server with RDBMS patch 9699654. Rest of the Oracle customers: read the symptoms and decide.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;In couple of PeopleSoft deployments it is observed that the following SQL is the top query when all queries are sorted by elapsed time or CPU time. 11.2.0.1.0 is the Oracle database server version.&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;SELECT VALUE FROM V$SESSION_FIX_CONTROL WHERE BUGNO = :B1 AND SESSION_ID = USERENV('SID')&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;The target query is being executed thousands of times. The poor performance is due to the lack of a proper index. Here is the explain plan that exhibits the performance issue.&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;| Id  | Operation  | Name       | Starts | E-Rows | A-Rows |   A-Time   |&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;|   0 | SELECT STATEMENT |       |      1 | |      1 |00:00:00.02 |&lt;br /&gt;|*  1 |  &lt;b&gt;FIXED TABLE FULL| X$QKSBGSES |      1 |      1 |      1 |00:00:00.02&lt;/b&gt; |&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Predicate Information (identified by operation id):&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;   1 - filter(("BUGNO_QKSBGSEROW"=:B1 AND&lt;br /&gt;       "SID_QKSBGSEROW"=USERENV('SID') AND "INST_ID"=USERENV('INSTANCE')))&lt;br /&gt;&lt;br /&gt;20 rows selected.&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Oracle Corporation accepted this behavior as a bug and agreed to fix in Oracle RDBMS 12.1. Meanwhile an RDBMS patch was made available to the customers running 11.2.0.1 or later. 9699654 is the bug# (Bad performance of V$SESSION_FIX_CONTROL query) - so, Solaris SPARC customers can download the RDBMS patch 9699654 directly from the &lt;a href="http://support.oracle.com"&gt;support&lt;/a&gt; web site. Customers on other platforms: please search the bug database and support web site with appropriate keywords.&lt;/p&gt;&lt;p&gt;After applying the RDBMS patch 9699654, the optimizer was using an index and the query performance was improved as expected. Also the target SQL query was no longer the top SQL - in fact, no references to this particular query were found in the AWR report. The new explain plan is shown below.&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------&lt;br /&gt;| Id  | Operation               | Name               | Starts | E-Rows | A-Rows |   A-Time   |&lt;br /&gt;----------------------------------------------------------------------------------------------&lt;br /&gt;|   0 | SELECT STATEMENT        |                    |      1 |        |      1 |00:00:00.01 |&lt;br /&gt;|*  1 |  &lt;b&gt;FIXED TABLE FIXED INDEX| X$QKSBGSES (ind:1) |      1 |      1 |      1 |00:00:00.01&lt;/b&gt; |&lt;br /&gt;----------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Predicate Information (identified by operation id):&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;   1 - filter(("BUGNO_QKSBGSEROW"=:B1 AND "SID_QKSBGSEROW"=USERENV('SID') AND&lt;br /&gt;              "INST_ID"=USERENV('INSTANCE')))&lt;br /&gt;&lt;br /&gt;20 rows selected.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-9217646375640121856?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/9217646375640121856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=9217646375640121856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/9217646375640121856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/9217646375640121856'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2011/01/oracle-11-g-poor-performance-accessing.html' title='Oracle 11&lt;i&gt;g&lt;/i&gt; : Poor Performance Accessing V$SESSION_FIX_CONTROL'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-7789553777060979461</id><published>2010-12-11T00:25:00.001-08:00</published><updated>2010-12-11T00:25:41.002-08:00</updated><title type='text'>Oracle's Optimized Solution for Siebel CRM 8.1.1</title><content type='html'>&lt;p&gt;A brief explanation of what an optimized solution is and what it is not can be found in the previous blog entry &lt;a href="http://blogs.sun.com/mandalika/entry/oracle_s_optimized_solution_for"&gt;Oracle's Optimized Solution for PeopleSoft HCM 9.0&lt;/a&gt;. We went through a similar exercise to publish another optimized solution around Siebel CRM 8.1.1.&lt;/p&gt;&lt;p&gt;The Siebel solution implements Oracle Siebel CRM using a unique combination of SPARC servers, Sun storage, Solaris OS virtualization, Oracle application middleware and Oracle database products.&lt;/p&gt;URLs to the Siebel CRM white papers:&lt;ul type="none"&gt;&lt;li&gt; &lt;a href="http://www.oracle.com/technetwork/articles/systems-hardware-architecture/oo-soln-siebel-crm-170240.pdf"&gt;Optimized Solution for Siebel CRM 8.1.1 : A Technical White Paper&lt;/a&gt;&lt;li&gt; &lt;a href="http://www.oracle.com/us/solutions/siebel-crm-bw-172330.pdf"&gt;Optimized Solution for Siebel CRM 8.1.1 : A Business White Paper&lt;/a&gt;&lt;/ul&gt;&lt;p&gt;White you are at it, do not forget to check the &lt;a href="http://blogs.sun.com/mandalika/entry/sparc_t3_reiterates_siebel_s"&gt;13,000 user Siebel CRM benchmark&lt;/a&gt; on the latest SPARC T3 platform.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-7789553777060979461?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/7789553777060979461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=7789553777060979461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7789553777060979461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7789553777060979461'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/12/oracles-optimized-solution-for-siebel.html' title='Oracle&apos;s Optimized Solution for Siebel CRM 8.1.1'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-4346503390327128366</id><published>2010-12-11T00:24:00.000-08:00</published><updated>2010-12-11T00:24:58.955-08:00</updated><title type='text'>Oracle's Optimized Solution for PeopleSoft HCM 9.0</title><content type='html'>&lt;p&gt;According to Oracle Corporation: Oracle's optimized solutions are &lt;i&gt;applications-to-disk solutions that are comprised of Oracle's Sun servers, storage, and networking components, Oracle Solaris, Oracle Enterprise Linux, Oracle Database, Oracle Fusion Middleware and Oracle Applications&lt;/i&gt;.&lt;/p&gt;&lt;p&gt;To be clear, an optimized/optimal solution is neither a software package nor a hardware system bundled with pre-tuned software. It is simply a set of recommendations based on some testing performed in labs. The recommendations typically provide sizing guidelines for small, medium and large configurations, best practices, tuning tips and some performance data. Customers can refer to these guidelines when deploying enterprise applications on Oracle hardware to achieve optimal configuration for better TCO and ROI.&lt;/p&gt;&lt;p&gt;The PeopleSoft solution implements two modules in Oracle PeopleSoft Enterprise Human Capital Management (HCM) 9.0 to demonstrate how Oracleʼs servers, disk storage and advanced flash based storage technology can be used to accelerate database transactions to achieve unprecedented application performance. Workload consolidation is achieved through server consolidation while maintaining the appropriate balance of performance, availability, cost and expected future capacity requirements.&lt;/p&gt;&lt;p&gt;The optimized solution technical white paper can be accessed from the following URL:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.oracle.com/technetwork/articles/systems-hardware-architecture/oo-soln-peoplesoft-hcm-170237.pdf"&gt;Oracleʼs Optimized Solution for PeopleSoft Human Capital Management Consolidation using M-series servers, Flash and Enterprise Storage&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A corresponding solution brief targeting less patient is available at:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.oracle.com/us/solutions/oracle-opt-sol-for-people-soft-bw-172334.pdf"&gt;Oracle's Optimized Solution for PeopleSoft HCM - A Business White paper&lt;/a&gt;&lt;/p&gt;&lt;i&gt;(Original blogpost location:&lt;BR&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/oracle_s_optimized_solution_for"&gt;http://blogs.sun.com/mandalika/entry/oracle_s_optimized_solution_for&lt;/a&gt;)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-4346503390327128366?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/4346503390327128366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=4346503390327128366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/4346503390327128366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/4346503390327128366'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/12/oracles-optimized-solution-for.html' title='Oracle&apos;s Optimized Solution for PeopleSoft HCM 9.0'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-3276790900591424956</id><published>2010-12-02T00:58:00.000-08:00</published><updated>2011-06-17T17:20:12.648-07:00</updated><title type='text'>Instructions to Turn ON/OFF Hardware Prefetch on SPARC64 Systems</title><content type='html'>&lt;p&gt;The hardware prefetch is ON by default on M-series servers such as M8000/M9000, M4000/M5000, M3000&lt;/p&gt;&lt;p&gt;The following excerpt is from a SPARC64 document:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font size="3"&gt;Hardware speculatively issues the prefetch operation based on the prediction that there is high possibility to access to the following continuous address in the future, if there have been load accesses for a consecutive address.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Although this feature is designed to improve the performance of various workloads, due to the speculative nature, not all workloads may benefit with the default behavior. For example, in our experiments, we noticed 10+% improvement in CPU utilization while running some of the PeopleSoft workloads on M-series hardware with hardware prefetch turned off. Hence irrespective of the application/workload, the recommended approach is to conduct few experiments by running representative customer workloads on target M-series hardware with and without the hardware prefetch turned on.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Instructions to Turn On/Off Hardware Prefetch:&lt;/b&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt; &lt;p&gt;Connect to the system Service Processor (XSCF)&lt;/p&gt;&lt;pre class="cmdlisting"&gt;&lt;br /&gt;% ssh -l &amp;lt;userid&gt; &amp;lt;host&gt;&lt;br /&gt;&lt;/pre&gt;&lt;li&gt; &lt;p&gt;Check the current prefetch mode by running the following command at XSCF&gt; prompt&lt;/p&gt;&lt;pre class="cmdlisting"&gt;&lt;br /&gt;XSCF&gt; &lt;b&gt;showprefetchmode&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;li&gt; &lt;p&gt;Find the domain id of all mounted system boards (or skip to next step)&lt;/p&gt;&lt;pre class="cmdlisting"&gt;&lt;br /&gt;XSCF&gt; &lt;b&gt;showboards -a&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;li&gt; &lt;p&gt;Power-off all configured domains&lt;/p&gt;&lt;pre class="cmdlisting"&gt;&lt;br /&gt;XSCF&gt; &lt;b&gt;poweroff -d &amp;lt;domainid&gt;&lt;/b&gt; [OR]&lt;br /&gt;XSCF&gt; &lt;b&gt;poweroff -a&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;From my experience, on larger systems with multiple domains configured, all domains must be powered off before the SP lets changing the prefetch mode. If someone has a correction to this information or better instruction that minimizes disruption, please let me know. I'd be happy to update these instructions.&lt;/p&gt;&lt;li&gt; &lt;p&gt;Wait until the domain(s) are completely powered off. Check the status by running &lt;code&gt;showlogs&lt;/code&gt; command&lt;/p&gt;&lt;pre class="cmdlisting"&gt;&lt;br /&gt;XSCF&gt; &lt;b&gt;showlogs power&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;li&gt; &lt;p&gt;Change the prefetch mode to the desired value&lt;/p&gt;&lt;pre class="cmdlisting"&gt;&lt;br /&gt;XSCF&gt; &lt;b&gt;setprefetchmode -s [on|off]&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;li&gt; &lt;p&gt;Verify the prefetch mode&lt;/p&gt;&lt;pre class="cmdlisting"&gt;&lt;br /&gt;XSCF&gt; &lt;b&gt;showprefetchmode&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;li&gt; &lt;p&gt;Finally power-on all configured domains&lt;/p&gt;&lt;pre class="cmdlisting"&gt;&lt;br /&gt;XSCF&gt; &lt;b&gt;poweron -d &amp;lt;domainid&gt;&lt;/b&gt; [OR]&lt;br /&gt;XSCF&gt; &lt;b&gt;poweron -a&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;li&gt; &lt;p&gt;Disconnect from SP, and wait for the OS to boot up&lt;/p&gt;&lt;/ol&gt;&lt;p&gt;Note to Sun-Oracle customers:&lt;/p&gt;&lt;p&gt;If the default value of hardware prefetch is changed, please make sure to mention this in any service requests, bug reports, etc., that you may file with Oracle Corporation. Unfortunately none of the standard commands on Solaris report the status of hardware prefetch - so, providing this additional piece of information beforehand will help the person who is analyzing/diagnosing the case.&lt;/p&gt;&lt;i&gt;&lt;a href="javascript:divtoggle('origurl');"&gt;+Original blog post URL&lt;/a&gt;&lt;/i&gt;&lt;BR&gt;&lt;div style="width: 90%; background: none repeat scroll 0% 0% rgb(232, 232, 232); display: none;" id="origurl" class="orcl6w3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://blogs.sun.com/mandalika/entry/instructions_to_turn_on_off"&gt;http://blogs.sun.com/mandalika/entry/instructions_to_turn_on_off&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-3276790900591424956?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/3276790900591424956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=3276790900591424956' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3276790900591424956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3276790900591424956'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/12/instructions-to-turn-onoff-hardware.html' title='Instructions to Turn ON/OFF Hardware Prefetch on SPARC64 Systems'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-2209576548062637096</id><published>2010-11-30T03:21:00.000-08:00</published><updated>2010-11-30T03:25:28.947-08:00</updated><title type='text'>Instructions to Restore Files from a Windows Filesystem using Ubuntu Live CD</title><content type='html'>&lt;p&gt;Windows users who have not interacted with any kind of UNIX or Linux distribution before are the target audience of this HOW-TO blog post.&lt;/p&gt;&lt;ol&gt;&lt;li&gt; &lt;p&gt;Download the latest version of Ubuntu 32-bit ISO image from the following location:&lt;/p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.ubuntu.com/getubuntu/download"&gt;http://www.ubuntu.com/getubuntu/download&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;Burn the ISO image onto a CD or DVD so you can try running Ubuntu Linux from the CD (Live CD option)&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;On the target system (running Windows or any other OS but does not recognize the disk drive(s) containing Windows FS) boot Linux from the CD or DVD that you burned&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;Once the OS boots up: launch the partition editor&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3KorT5IZRGk/TPTZ5ioKbvI/AAAAAAAABv4/4TcZosa3SgU/s1600/partition_editor_step1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://3.bp.blogspot.com/_3KorT5IZRGk/TPTZ5ioKbvI/AAAAAAAABv4/4TcZosa3SgU/s640/partition_editor_step1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;Look for NTFS, FAT or FAT32 filesystems and note down the corresponding partition names.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3KorT5IZRGk/TPTZ8cboYzI/AAAAAAAABv8/My7gQfM-Zc8/s1600/chk_partitions_step2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="430" src="http://4.bp.blogspot.com/_3KorT5IZRGk/TPTZ8cboYzI/AAAAAAAABv8/My7gQfM-Zc8/s640/chk_partitions_step2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;In the example, /dev/sda1 and /dev/sda2 are the Windows filesystems.&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;Launch system terminal (command line interface)&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3KorT5IZRGk/TPTZ9Rvi9mI/AAAAAAAABwA/23aMAvzps8g/s1600/launch_terminal_step3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/_3KorT5IZRGk/TPTZ9Rvi9mI/AAAAAAAABwA/23aMAvzps8g/s640/launch_terminal_step3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;Mount the Windows filesystem using the "mount" command.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3KorT5IZRGk/TPTZ-JjDJvI/AAAAAAAABwE/vTKOIVo1FwU/s1600/mount_windows_filesystem_step4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/_3KorT5IZRGk/TPTZ-JjDJvI/AAAAAAAABwE/vTKOIVo1FwU/s640/mount_windows_filesystem_step4.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;Finally navigate to the mounted filesystem using the graphical user interface.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3KorT5IZRGk/TPTZ_HoH1nI/AAAAAAAABwI/G5XdDssSVLM/s1600/Open_GUI_Explorer_Step5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://3.bp.blogspot.com/_3KorT5IZRGk/TPTZ_HoH1nI/AAAAAAAABwI/G5XdDssSVLM/s640/Open_GUI_Explorer_Step5.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3KorT5IZRGk/TPTZ_2LlAcI/AAAAAAAABwM/C-a3YCgNTxo/s1600/Goto_mounted_Windows_filesystem_step6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://3.bp.blogspot.com/_3KorT5IZRGk/TPTZ_2LlAcI/AAAAAAAABwM/C-a3YCgNTxo/s640/Goto_mounted_Windows_filesystem_step6.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;Insert an USB flash device&lt;/p&gt;&lt;p&gt;Ubuntu recognizes the USB drive and mounts it automatically. Type "df -h" on the command line terminal and look for "NO NAME". "NO NAME" filesystem is the USB file system.&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;Backup your files from the Windows filesystem to the USB filesystem&lt;/p&gt;&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/8206834-2209576548062637096?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/2209576548062637096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=2209576548062637096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2209576548062637096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2209576548062637096'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/11/instructions-to-restore-files-from.html' title='Instructions to Restore Files from a Windows Filesystem using Ubuntu Live CD'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3KorT5IZRGk/TPTZ5ioKbvI/AAAAAAAABv4/4TcZosa3SgU/s72-c/partition_editor_step1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8206834.post-4227952528344160708</id><published>2010-10-31T00:17:00.001-07:00</published><updated>2010-10-31T00:18:53.049-07:00</updated><title type='text'>SPARC T3 reiterates Siebel CRM's Supremacy on T-series Hardware</title><content type='html'>&lt;p&gt;It's been mentioned and proved several times that Sun/Oracle's T-series hardware is the best fit to deploy and run Siebel CRM. Feel free to browse through the list of Siebel benchmarks that Sun published in the past on T-series:&lt;/p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://blogs.sun.com/mandalika/entry/2004_2010_a_look_back"&gt;2004-2010 : A Look Back at Sun Published Oracle Benchmarks&lt;/a&gt;&lt;p&gt;Oracle Corporation announced the availability of SPARC T3 servers in Oracle OpenWorld 2010, and sure enough there is a Siebel CRM benchmark on SPARC T3-1 server to support the server launch event. Check the following web page for high level details of the benchmark.&lt;/p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.oracle.com/us/solutions/performance-scalability/t3-1-siebel-crm-92010-bmark-173392.html"&gt;SPARC T3-1 Server Posts a High Score on New Siebel CRM 8.1.1 Benchmark&lt;/a&gt;&lt;p&gt;I intend to provide the missing pieces of information in this blog post.&lt;/p&gt;&lt;p&gt;First of all, it is not a "Platform Sizing and Performance Program" (PSPP) benchmark. Siebel 8.1.1 was used to run the benchmark, and there is no Siebel PSPP benchmark kit available as of today for v8.1.1. Hence the test results from this benchmark exercise are not directly comparable to the Siebel 8.0 PSPP benchmark results.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Workload&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The benchmark workload consists of a mix of Siebel Financial Services Call Center and Siebel Web Services / EAI transactions. The FINS Call Center transactions create a bunch of Opportunities, Quotes and Orders, where as the Web Services / EAI transactions submit new Service Requests (SR), search for and update existing SRs. The transaction mix is 40% FINS Call Center transactions and 60% Web Services / EAI transactions.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Software Versions&lt;/b&gt;&lt;/p&gt;&lt;ul type="none"&gt;&lt;li&gt; Siebel CRM 8.1.1&lt;li&gt; Oracle RDBMS 11&lt;i&gt;g&lt;/i&gt; R2 (11.2.0.1), 64-bit&lt;li&gt; iPlanet Web Server 7.0 Update 8, 32-bit&lt;li&gt; Solaris 10 09/10 in the application-tier and &lt;li&gt; Solaris 10 10/09 in the web- and database-tiers&lt;/ul&gt;&lt;p&gt;&lt;b&gt;Hardware Configuration&lt;/b&gt;&lt;/p&gt;&lt;ul type="none"&gt;&lt;li&gt; Application Server : 1 x SPARC T3-1 Server (2 RU system) &lt;ul type="none"&gt;&lt;li&gt; One socket 16-Core 1.65 GHz SPARC T3 processor, 128 hardware threads, 6 MB L2 Cache, 64 GB RAM&lt;/ul&gt;&lt;li&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt; Web Server + Database Server : 1 x Sun SPARC Enterprise T5240 Server (2 RU system) &lt;ul type="none"&gt;&lt;li&gt; Two socket 16-Core 1.165 GHz UltraSPARC T2 Plus processors, 128 hardware threads, 4 MB L2 Cache, 64 GB RAM&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;Virtualization Technology&lt;/b&gt;&lt;/p&gt;&lt;p&gt;iPlanet Web Server and the Oracle 11&lt;i&gt;g&lt;/i&gt; Database Server were configured on a single Sun SPARC Enterprise T5240 Server. Those software layers were isolated from each other with the help of Oracle Solaris Containers virtualization technology. Resource allocations are shown below.&lt;/p&gt;&lt;center&gt;&lt;table border="1" frame="void" rules="all" width="40%"&gt;&lt;thead&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th align="left" valign="center" width="34%"&gt;Tier&lt;/th&gt;&lt;th valign="center" width="33%"&gt;#vCPU&lt;/th&gt;&lt;th valign="center" width="33%"&gt;Memory (GB)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tr&gt;&lt;td align="left"&gt;Database&lt;/td&gt;&lt;td align="center"&gt;96&lt;/td&gt;&lt;td align="center"&gt;48&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="left"&gt;Web&lt;/td&gt;&lt;td align="center"&gt;32&lt;/td&gt;&lt;td align="center"&gt;16&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/center&gt;&lt;p&gt;&lt;b&gt;Test Results&lt;/b&gt;&lt;/p&gt;&lt;table border="0" cellpadding="7" cellspacing="2" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th rowspan="2" bgcolor="#66CC66" width="5%"&gt;#vUsers&lt;/th&gt;&lt;th colspan="2" bgcolor="#66CC66" width="20%"&gt;Avg Trx Resp Time (sec)&lt;/th&gt;&lt;th colspan="2" bgcolor="#66CC66" width="25%"&gt;Business Trx&lt;BR&gt;Throughput/HR&lt;/th&gt;&lt;th colspan="3" bgcolor="#66CC66" width="30%"&gt;Avg CPU Utilization (%)&lt;/th&gt;&lt;th colspan="2" bgcolor="#66CC66" width="20%"&gt;Avg Memory Footprint (GB)&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th bgcolor="#66CC66"&gt;FINS&lt;/th&gt;&lt;th bgcolor="#66CC66"&gt;EAI&lt;/th&gt;&lt;th bgcolor="#66CC66"&gt;FINS&lt;/th&gt;&lt;th bgcolor="#66CC66"&gt;EAI&lt;/th&gt;&lt;th bgcolor="#66CC66"&gt;App&lt;/th&gt;&lt;th bgcolor="#66CC66"&gt;DB&lt;/th&gt;&lt;th bgcolor="#66CC66"&gt;Web&lt;/th&gt;&lt;th bgcolor="#66CC66"&gt;App&lt;/th&gt;&lt;th bgcolor="#66CC66"&gt;DB + Web&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" bgcolor="#e8e8e8"&gt;13,000&lt;/td&gt;&lt;td align="center" bgcolor="#e8e8e8"&gt;0.43&lt;/td&gt;&lt;td align="center" bgcolor="#e8e8e8"&gt;0.2&lt;/td&gt;&lt;td align="center" bgcolor="#e8e8e8"&gt;48,409&lt;/td&gt;&lt;td align="center" bgcolor="#e8e8e8"&gt;116,449&lt;/td&gt;&lt;td align="center" bgcolor="#e8e8e8"&gt;58&lt;/td&gt;&lt;td align="center" bgcolor="#e8e8e8"&gt;42&lt;/td&gt;&lt;td align="center" bgcolor="#e8e8e8"&gt;37&lt;/td&gt;&lt;td align="center" bgcolor="#e8e8e8"&gt;52&lt;/td&gt;&lt;td align="center" bgcolor="#e8e8e8"&gt;35&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;&lt;b&gt;Why stop at 13K users?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Notice that the average CPU utilization on the application server node (SPARC T3-1) is only ~58%. The application server node has room to accommodate more online vusers - however, there is not enough free memory left on the server to scale beyond 13,000 concurrent users. That is the main reason to stop at 13,000 user count in this benchmark.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Siebel Best Practices&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Check the following presentation:&lt;/p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://blogs.sun.com/mandalika/resource/OOW/Siebel_BestPractices_OOW2010.pdf"&gt;Siebel on Oracle Solaris : Best Practices, Tuning Tips&lt;/a&gt;&lt;p&gt;&lt;b&gt;Acknowledgments&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Credit to all our peers at Oracle Corporation who helped us with the hardware, workload, verification and validation etc., in a timely manner. Also &lt;a href="http://blogs.sun.com/luojiach/"&gt;Jenny&lt;/a&gt; deserves special credit for spending enormous amount of time running the benchmark with patience.&lt;/p&gt;&lt;i&gt;&lt;p&gt;Original blog post URL:&lt;BR&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/sparc_t3_reiterates_siebel_s"&gt;http://blogs.sun.com/mandalika/entry/sparc_t3_reiterates_siebel_s&lt;/a&gt;&lt;/p&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-4227952528344160708?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/4227952528344160708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=4227952528344160708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/4227952528344160708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/4227952528344160708'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/10/sparc-t3-reiterates-siebel-crms.html' title='SPARC T3 reiterates Siebel CRM&apos;s Supremacy on T-series Hardware'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-135439868654359861</id><published>2010-10-08T23:09:00.001-07:00</published><updated>2010-10-08T23:09:10.756-07:00</updated><title type='text'>Is it really Solaris Versus Windows &amp; Linux?</title><content type='html'>&lt;p&gt;&lt;i&gt;(Even though the title explicitly states "Solaris Versus .. ", this blog entry is equally applicable to all the operating systems in the world with few changes.)&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Lately I have seen quite a few e-mails and heard few customer representatives talking about the performance of their application(s) on Solaris, Windows and Linux. Typically they go like the following with a bunch of supporting data (all numbers) and no hardware configuration specified whatsoever.&lt;/p&gt;&lt;ul type="none"&gt;&lt;li&gt; "Transaction X is nearly twice as slow on Solaris compared to the same transaction running on Windows or Linux"&lt;li&gt; "Transaction X runs much faster on my Windows laptop than on a Solaris box"&lt;/ul&gt;&lt;p&gt;Lack of awareness and taking the hardware completely out of the discussions and context are the biggest problems with complaints like these. Those claims make sense only when the underlying hardware is the same in all test cases. For example, comparing a single user, single threaded transaction running on Windows, Linux and Solaris on x86 hardware is appropriate (as long as the type and speed of the processor are identical), but not against Solaris running on SPARC hardware. This is mainly because the processor architecture is completely different for x86 and SPARC platforms.&lt;/p&gt;&lt;p&gt;Besides, these days Oracle offers two types of SPARC hardware - 1. T-series and 2. M-series, which serve different purposes though they are compatible with each other. It is hard to compare and analyze the performance discrimination between different SPARC offerings (T- and M-series) too with no proper understanding of the characteristics of the CPUs in use. Choosing the right hardware for the right job is the key.&lt;/p&gt;&lt;p&gt;It is improper to compare the business transactions running on x86 with SPARC systems or even between different types of SPARC systems, and to incorrectly attribute the hardware strength or weakness to the operating system that runs on top of the bare metal. If there is so much of discrepancy among different operating environments, it is recommended to spend some time understanding the nuances in testing hardware before spending enormous amounts of time trying to tune the application and the operating system.&lt;/p&gt;&lt;p&gt;The bottomline: in addition to the software (application + OS), hardware plays an important role in the performance and scalability of an application - so, unless the testing hardware is the same for all test cases on different operating systems, don't you just focus on the operating system alone and make hasty decisions to switch to other operating platforms. Carefully choose appropriate hardware for the task in hand.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-135439868654359861?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/135439868654359861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=135439868654359861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/135439868654359861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/135439868654359861'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/10/is-it-really-solaris-versus-windows.html' title='Is it really Solaris Versus Windows &amp; Linux?'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-412199443487001430</id><published>2010-09-23T20:48:00.001-07:00</published><updated>2010-09-23T20:48:23.877-07:00</updated><title type='text'>OOW 2010 : Accelerate and Bullet-Proof Your Siebel CRM Deployment with Oracle's Sun Servers</title><content type='html'>&lt;p&gt;The best practices slides from today's OpenWorld presentation can be downloaded from the following location.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://blogs.sun.com/mandalika/resource/OOW/Siebel_BestPractices_OOW2010.pdf"&gt;Siebel on Oracle Solaris : Best Practices, Tuning Tips&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The entire presentation with proper disclaimers and Oracle Solaris Cluster specific slides will be posted on Oracle's web site soon. Stay tuned.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-412199443487001430?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/412199443487001430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=412199443487001430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/412199443487001430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/412199443487001430'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/09/oow-2010-accelerate-and-bullet-proof.html' title='OOW 2010 : Accelerate and Bullet-Proof Your Siebel CRM Deployment with Oracle&apos;s Sun Servers'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-61048972132345861</id><published>2010-08-09T03:04:00.000-07:00</published><updated>2010-08-09T03:05:53.831-07:00</updated><title type='text'>Identifying Ideal Oracle Database Objects for Flash Storage and Accelerators</title><content type='html'>&lt;p&gt;&lt;i&gt;(Originally posted on blogs.sun.com at:&lt;br&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/identifying_ideal_oracle_database_objects"&gt;http://blogs.sun.com/mandalika/entry/identifying_ideal_oracle_database_objects&lt;/a&gt;)&lt;/i&gt;&lt;BR&gt;&lt;p&gt;The Sun Storage F5100 Flash Array and Sun Flash Accelerator F20 PCIe Card help accelerate I/O bound applications such as databases. The following are some of the guidelines to identify Oracle database objects that can benefit by using the flash storage. Even though the title explicitly states "Oracle", some of these guidelines are applicable to other databases and non-database products. Exercise discretion, evaluate and experiment before implementing these recommendations as they are.&lt;/p&gt;&lt;ul type="circle"&gt;&lt;li&gt; &lt;p&gt;Heavily used database tables and indexes are ideal for flash storage&lt;/p&gt; &lt;ul type="none"&gt; &lt;li&gt; - The database workloads with no I/O bottlenecks may not show significant performance gains &lt;li&gt; &lt;p&gt;&lt;/p&gt; &lt;li&gt; &lt;p&gt;- The database workloads with severe I/O bottlenecks can fully realize the benefits of flash devices&lt;/p&gt;  &lt;ul type="none"&gt;  &lt;li&gt; &lt;p&gt;&lt;code&gt;&lt;font size="3"&gt;Top 5 Timed Foreground Events&lt;/font&gt;&lt;/code&gt; section in any AWR report that was collected on the target database system is useful in finding whether disk I/O is a bottleneck&lt;/p&gt;   &lt;ul type="none"&gt;   &lt;li&gt; Large number of Waits and the large amount of time in DB spent waiting for some blocked resource under &lt;code&gt;&lt;font size="3"&gt;User I/O&lt;/font&gt;&lt;/code&gt; Wait Class is an indication of I/O contention on the system   &lt;/ul&gt;  &lt;/ul&gt; &lt;/ul&gt;&lt;li&gt; &lt;p&gt;Identify the I/O intensive tables and indexes in a database with the help of Oracle Enterprise Manager Database Control, a web-based tool for managing Oracle database(s)&lt;/p&gt; &lt;ul type="none"&gt; &lt;li&gt; - The "Performance" page in OEM Database Control helps you quickly identify and analyze performance problems &lt;li&gt; &lt;p&gt;&lt;/p&gt; &lt;li&gt; - Historical and the real-time database activity can be viewed from the "performance" page.  &lt;ul type="none"&gt;  &lt;li&gt; The same page also provides information about the top resource consuming database objects  &lt;/ul&gt; &lt;/ul&gt;&lt;li&gt;  &lt;p&gt;An alternate way to identify the I/O intensive objects in a database is to analyze the AWR reports that are generated over a period of time especially when the database is busy&lt;/p&gt; &lt;ul type="none"&gt; &lt;li&gt; - Scan through the &lt;code&gt;&lt;font size="3"&gt;SQL ordered by ..&lt;/font&gt;&lt;/code&gt; tables in each AWR report &lt;li&gt; &lt;p&gt;&lt;/p&gt; &lt;li&gt; - Look for the top &lt;code&gt;&lt;font size="3"&gt;INSERT&lt;/font&gt;&lt;/code&gt; &amp; &lt;code&gt;&lt;font size="3"&gt;UPDATE&lt;/font&gt;&lt;/code&gt; statements with more elapsed and DB times  &lt;ul type="none"&gt;  &lt;li&gt; &lt;p&gt;The database tables that are updated frequently &amp; repeatedly, along with the indexes created on such tables are good candidates for the flash devices&lt;/p&gt;  &lt;/ul&gt; &lt;li&gt; &lt;p&gt;&lt;/p&gt; &lt;li&gt; - &lt;code&gt;&lt;font size="3"&gt;SQL ordered by Reads&lt;/font&gt;&lt;/code&gt; is useful in identifying the database tables with large number of physical reads  &lt;ul type="none"&gt;  &lt;li&gt; &lt;p&gt;The database table(s) from which large amounts of data is read/fetched from physical disk(s) are also good candidates for the flash devices&lt;/p&gt;   &lt;ul type="none"&gt;   &lt;li&gt; &lt;p&gt;To identify I/O intensive indexes, look through the explain plans of the top SQLs that are sorted by &lt;code&gt;&lt;font size="3"&gt;Physical Reads&lt;/font&gt;&lt;/code&gt;&lt;/p&gt;   &lt;/ul&gt;  &lt;/ul&gt; &lt;/ul&gt;&lt;li&gt; &lt;p&gt;Examine the &lt;code&gt;&lt;font size="3"&gt;File IO Stats&lt;/font&gt;&lt;/code&gt; section in any AWR report that was collected on the target database system&lt;/p&gt; &lt;ul type="none"&gt; &lt;li&gt; - Consider moving the database files with heavy reads, writes and relatively high average buffer wait time to flash volumes &lt;/ul&gt;&lt;li&gt; &lt;p&gt;Examine &lt;code&gt;&lt;font size="3"&gt;Segments by Physical Reads, Segments by Physical Writes&lt;/font&gt;&lt;/code&gt; and &lt;code&gt;&lt;font size="3"&gt;Segments by Buffer Busy Waits&lt;/font&gt;&lt;/code&gt; sections in AWR report&lt;/p&gt; &lt;ul type="none"&gt; &lt;li&gt; - The database tables and indexes with large number of physical reads, physical writes and buffer busy waits may benefit from the flash acceleration &lt;/ul&gt;&lt;li&gt; &lt;p&gt;Sun flash storage may not be ideal for storing Oracle &lt;i&gt;redo&lt;/i&gt; logs&lt;/p&gt; &lt;ul type="none"&gt; &lt;li&gt; - Sun Flash Modules (FMOD) in F5100 array and F20 Flash Accelerator Card are optimized for 4K sector size  &lt;ul type="none"&gt;  &lt;p&gt;A redo log write that is not aligned with the beginning of the 4K physical sector results in a significant performance degradation&lt;/p&gt;  &lt;/ul&gt; &lt;li&gt; &lt;p&gt;&lt;/p&gt; &lt;li&gt; &lt;p&gt;- In general, Oracle redo log files default to a block size that is equal to the physical sector size of the disk, which is typically 512 bytes&lt;/p&gt;  &lt;ul type="none"&gt;  &lt;li&gt; Majority of the recent Oracle Database platforms detect the 4K sector size on Sun flash devices  &lt;li&gt; &lt;p&gt;&lt;/p&gt;  &lt;li&gt; Oracle database automatically creates redo log files with a 4K block size on file systems created on Sun flash devices   &lt;ul type="none"&gt;   &lt;li&gt; &lt;p&gt;However with a block size of 4K for the redo logs, there will be significant increase in redo wastage that may offset expected performance gains&lt;/p&gt;   &lt;/ul&gt;  &lt;/ul&gt; &lt;/ul&gt;&lt;/ul&gt;&lt;H3&gt;F5100 Flash Storage and F20 PCIe Flash Accelerator Card as Oracle Database Smart Flash Cache&lt;/H3&gt;&lt;p&gt;In addition to the I/O intensive database objects, customers running Oracle 11&lt;i&gt;g&lt;/i&gt; Release 2 or later versions have the flexibility of using flash devices to turn on the "Database Smart Flash Cache" feature to reduce physical disk I/O. The Database Smart Flash Cache is a transparent extension of the database buffer cache using flash storage technology. The flash storage acts as a Level 2 cache to the (Level 1) SGA. Database Smart Flash Cache can significantly improve the performance of Oracle databases by reducing the amount of disk I/O at a much lower cost than adding an equivalent amount of RAM.&lt;/p&gt;&lt;p&gt;F20 Flash Accelerator offers an additional benefit - since it is a PCIe card, the I/O operations bypass disk controller overhead.&lt;/p&gt;&lt;p&gt;The database flash cache can be enabled by setting appropriate values to the following Oracle database parameters.&lt;/p&gt;&lt;pre class="programlisting"&gt;&lt;font size="3"&gt;&lt;br /&gt; db_flash_cache_file&lt;br /&gt; db_flash_cache_size&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Check &lt;a href="http://download.oracle.com/docs/cd/E11882_01/server.112/e10595/memory005.htm#BABHEDBH"&gt;Oracle Database Administrator's Guide 11&lt;i&gt;g&lt;/i&gt; Release 2 (11.2) : Configuring Database Smart Flash Cache&lt;/a&gt; documentation for the step-by-step instructions to configure Database Smart Flash Cache on flash devices.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-61048972132345861?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/61048972132345861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=61048972132345861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/61048972132345861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/61048972132345861'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/08/identifying-ideal-oracle-database.html' title='Identifying Ideal Oracle Database Objects for Flash Storage and Accelerators'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-757573806425308629</id><published>2010-07-07T19:41:00.000-07:00</published><updated>2010-07-07T19:43:11.727-07:00</updated><title type='text'>PeopleSoft NA Payroll 500K EE Benchmark on Solaris : The Saga Continues ..</title><content type='html'>(&lt;i&gt;Original post is at:&lt;BR&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_na_payroll_500k_ee"&gt;http://blogs.sun.com/mandalika/entry/peoplesoft_na_payroll_500k_ee&lt;/a&gt;&lt;/i&gt;)&lt;p&gt;Few clarifications before we start.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Difference between 240K and 500K EE PeopleSoft NA Payroll benchmarks&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Not too long ago Sun published PeopleSoft NA Payroll 240K EE benchmark results with &lt;a href="http://www.oracle.com/apps_benchmark/doc/ps9-na-pay-9_16_ora_sun_m4000.pdf"&gt;16 job streams&lt;/a&gt; and &lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS9-NA-PAY-9_ORA_Sun_M4000.pdf"&gt;8 job streams&lt;/a&gt;. First of all, I want to make sure everyone understands the fact that PeopleSoft NA Payroll 240K and 500K EE benchmarks are two completely different benchmarks. The 240K database model represents a large sized organization where as 500K database model represents an extra-large sized organization. Vendors [who benchmark] have the flexibility of configuring 8, 16, 24 or 32 parallel job streams (or threads) in those two benchmarks to parallellize the work being done.&lt;/p&gt;&lt;p&gt;Now that the clarifications are out of the way, here is the direct URL for the 500K Payroll benchmark results that Oracle|Sun published last week. (&lt;i&gt;document will be updated shortly to fix the branding issues&lt;/i&gt;)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.oracle.com/ocom/groups/public/@ocom/documents/webcontent/078501.pdf"&gt;PeopleSoft Enterprise Payroll 9.0 using Oracle for Solaris on a Sun SPARC Enterprise M5000&lt;/a&gt; (500K EE 32 job streams)&lt;/p&gt;&lt;p&gt;&lt;b&gt;What's changed at Sun &amp; Oracle?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The 500K payroll benchmark work was started few months ago when Sun is an independent entity. By the time the benchmark work is complete, Sun was part of Oracle Corporation. However it has no impact whatsoever on the way we have been operating and interacting with the PeopleSoft benchmark team for the past few years. We (Sun) still have to package all the benchmark results and submit for validation just like any other vendor. It is still the same laborious process that we have to go through from both ends of Oracle (&lt;i&gt;that is, PeopleSoft &amp; Sun&lt;/i&gt;). I just mentioned this to highlight Oracle's non-compromising nature on anything at any level in publishing quality benchmarks.&lt;/p&gt;&lt;p&gt;&lt;b&gt;SUMMARY OF 500K NA PAYROLL BENCHMARK RESULTS&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The following bar chart summarizes all the published benchmark results by different vendors. Each 3D bar on X-axis represent one vendor, and the Y-axis shows the throughput (#payments/hour) achieved by corresponding vendor. Actual throughput and the vendor name is also shown in each of the 3D bar for clarity. Common sense dictates that higher the throughput, the better it is.&lt;/p&gt;&lt;p&gt;&lt;center&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/PSFT_NA_Payroll_500K_EE_Throughput.png" /&gt;&lt;/center&gt;&lt;/p&gt;&lt;p&gt;The numbers in the following table were extracted from the very first page of the benchmark results white papers where Oracle|PeopleSoft highlights the significance of the results and the actual numbers that are of interest to the customers. The results in the following table are sorted by the hourly throughput (payments/hour) in the descending order. The goal of this benchmark is to achieve as much hourly throughput as possible. Click on the link that is underneath the hourly throughput values to open corresponding benchmark result.&lt;/p&gt;&lt;table border="0" cellpadding="7" cellspacing="2" width="100%"&gt;&lt;caption&gt;Oracle PeopleSoft North American Payroll 9.0 - Number of employees: &lt;b&gt;500,480&lt;/b&gt; &amp; Number of payments: &lt;b&gt;750,720&lt;/b&gt;&lt;/caption&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th bgcolor="#c7c7f9" width="5%"&gt;Vendor&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="10%"&gt;OS&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="45%"&gt;Hardware Config&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="10%"&gt;#Job Streams&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="15%"&gt;Elapsed Time (min)&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="15%"&gt;Hourly Throughput&lt;BR&gt;Payments per Hour&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;Sun&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;Solaris 10 10/09&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;1x Sun SPARC Enterprise M5000 with 8 x 2.53 GHz SPARC64 VII Quad-Core CPUs &amp; 64G RAM&lt;BR&gt;1 x Sun Storage F5100 Flash Array with 40 Flash Modules for data, indexes. Capacity: 960 GB&lt;BR&gt;1 x Sun Storage 2510 Array for redo logs. Capacity: 272 GB. Total storage capacity: 1.2 TB&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;32&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;50.11&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;&lt;a href="http://www.oracle.com/ocom/groups/public/@ocom/documents/webcontent/078501.pdf"&gt;898,886&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;IBM&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;z/OS 1.10&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;1 x IBM System z10 Enterprise Class Model 2097-709 with 8 x 4.4 GHz IBM System z10 Gen1 CPUs &amp; 32G RAM&lt;BR&gt;1 x IBM TotalStorage DS8300. Total capacity: 9 TB&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;8&lt;sup&gt;&lt;a href="#ibm8"&gt;*&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;58.96&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS9-NA-PAY-9_DB2_IBM_z10_EC_709_go.pdf"&gt;763,962&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;HP&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;HP-UX B.11.31&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;1 x HP Integrity rx7640 with 8 x 1.6 GHz Intel Itanium2 9150 Dual-Core CPUs &amp; 64G RAM&lt;BR&gt;1 x HP StorageWorks EVA 8100. Total capacity: 8 TB&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;32&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;96.17&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps9-na-pay-9_ora_hp_rx7640-500K.pdf"&gt;468,370&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;This is all public information. Feel free to compare the hardware configurations and the data presented in all three rows and draw your own conclusions. Since all vendors used the same benchmark toolkit, comparisons should be pretty straight forward.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Sun Storage F5100 Flash Array, the differentiator&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Of all these benchmark results, clearly the F5100 storage array is the key differentiator. The payroll workload is I/O intensive, and requires low latency storage for better throughput (&lt;i&gt;it is implicit that less latency means less I/O waits&lt;/i&gt;).&lt;/p&gt;&lt;p&gt;There is a lot of noise from some of the outside blog readers (&lt;i&gt;I do not know who those readers are or who they work for&lt;/i&gt;) when Sun published the very first NA Payroll 240K EE benchmark with eight job streams using an F5100 array that has 40 flash modules (FMOD). Few people thought it is necessary to have those many flash modules to get that kind of performance that Sun demonstrated in the benchmark. Now that we have the 500K benchmark result as well, I want to highlight another fact that it is the same F5100 that was used in all the three NA Payroll benchmarks that Sun published in the last 10 months. Even though other vendors increased the number of disk drives when moved from 240K to 500K EE benchmark environment, Sun hasn't increased the flash modules in F5100 -- the number of FMODs remained at 40 even in 500K EE benchmark. This fact implicitly suggests at least two things -- 1. F5100 array is resilient, scales and performs consistently even with increased load. 2. May be 40 flash modules are not needed in 240K EE Payroll benchmark.  Hopefully this will silence those naysayers and critics now.&lt;/p&gt;&lt;p&gt;While we are on the same topic, the storage capacity in the other array that was used to store the redo logs was in fact reduced from 5.3 TB in a J4200 array that was used in 240K EE/16 job stream benchmark to 272 GB in a 2510 array that was used in 500K EE/32 job stream benchmark. Of course, in both cases, the redo logs consumed only 20 GB on disk - but since the arrays were connected to the database server, we have to report the total capacity of the array(s) whether it is being used or not.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Notes on CPU utilization and IBM's #job streams&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Even though I highlighted the I/O factor in the above paragraph, it is hard to ignore the fact that the NA Payroll workload is CPU intensive too. Even when multiple job streams are configured, each stream runs as a single-thread process -- hence it is vital to have a server with powerful processors for better [overall] performance.&lt;/p&gt;&lt;p&gt;Observant readers might have noticed couple of interesting things.&lt;/p&gt;&lt;ol&gt;&lt;li&gt; &lt;p&gt;&lt;i&gt;The maximum average CPU usage that Sun reported in 500K EE benchmark in any scenario by any process is only 43.99% (less than half of the total processing capacity)&lt;/i&gt;&lt;/p&gt;&lt;p&gt;The reason is simple. The SUT, M5000, has eight quad-core processors and each core is capable of running two hardware threads in parallel. Hence there are 64 virtual CPUs on the system, and since we ran only 32 job streams, only half of the total available CPU power was in use.&lt;/p&gt;&lt;p&gt;Customers in a similar situation have the flexibility to consolidate another workload onto the same system to take advantage of the available/remaining CPU cycles.&lt;/p&gt;&lt;li&gt; &lt;p&gt;&lt;a name="ibm8"&gt;&lt;i&gt;IBM's 500K EE benchmark result is only with 8 job streams&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I do not know the exact reason - but if I have to speculate, it is as good as anyone's guess. Based on the benchmark results white paper, it appears that the z10 system (mainframe) has eight single core processors, and perhaps that is why they ran the whole benchmark with only eight job streams.&lt;/p&gt;&lt;/ol&gt;&lt;p&gt;&lt;b&gt;Also See:&lt;/b&gt;&lt;/p&gt;&lt;ul type="circle"&gt;&lt;p&gt;&lt;b&gt;Benchmark Results White Papers&lt;/b&gt;&lt;/p&gt;&lt;li&gt; &lt;a href="http://www.oracle.com/apps_benchmark/doc/ps9-na-pay-9_16_ora_sun_m4000.pdf"&gt;PeopleSoft Enterprise Payroll 9.0 using Oracle for Solaris on a Sun SPARC Enterprise M4000 -- 240K EE 16 stream benchmark&lt;/a&gt;&lt;li&gt; &lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS9-NA-PAY-9_ORA_Sun_M4000.pdf"&gt;PeopleSoft Enterprise Payroll 9.0 using Oracle for Solaris on a Sun SPARC Enterprise M4000 -- 240K EE 8 stream benchmark&lt;/a&gt;&lt;BR&gt;&lt;p&gt;&lt;b&gt;Best Practices White Paper&lt;/b&gt;&lt;/p&gt;&lt;li&gt; &lt;a href="https://www.sun.com/offers/details/peoplesoft_enterprise_payroll.xml"&gt;Best Practices for Oracle PeopleSoft Enterprise Payroll for North America using the Sun Storage F5100 Flash Array or Sun Flash Accelerator F20 PCIe Card&lt;/a&gt;&lt;BR&gt;&lt;p&gt;&lt;b&gt;Blogs&lt;/b&gt;&lt;/p&gt;&lt;li&gt; &lt;a href="http://www.c0t0d0s0.org/archives/6624-Expensive-non-performance.html"&gt;Expensive non-performance&lt;/a&gt; by Joerg Moellenkamp&lt;li&gt; &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_na_payroll_240k_ee"&gt;PeopleSoft NA Payroll 240K EE Benchmark with 16 Job Streams : Another Home Run for Sun&lt;/a&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_north_american_payroll_on"&gt;PeopleSoft North American Payroll on Sun Solaris with F5100 Flash Array : A blog Reprise&lt;/a&gt;&lt;li&gt; &lt;a href="http://www.c0t0d0s0.org/archives/6021-App-benchmarks,-incorrect-conclusions-and-the-Sun-Storage-F5100.html"&gt;App benchmarks, incorrect conclusions and the Sun Storage F5100&lt;/a&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/BestPerf/entry/oracle_peoplesoft_payroll_sun_sparc"&gt;Oracle PeopleSoft Payroll (NA) Sun SPARC Enterprise M4000 and Sun Storage F5100 World Record Performance&lt;/a&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-757573806425308629?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/757573806425308629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=757573806425308629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/757573806425308629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/757573806425308629'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/07/peoplesoft-na-payroll-500k-ee-benchmark.html' title='PeopleSoft NA Payroll 500K EE Benchmark on Solaris : The Saga Continues ..'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-6908326934643840833</id><published>2010-06-15T21:20:00.000-07:00</published><updated>2010-06-15T21:24:55.395-07:00</updated><title type='text'>Book Review: Oracle Database 11g – Underground Advice for Database Administrators</title><content type='html'>(&lt;i&gt;06/15/2010: This blog post will be edited multiple times to add reviews for the remaining chapters in the book.&lt;/i&gt;)&lt;BR /&gt;&lt;BR /&gt;Author: &lt;a href="https://www.packtpub.com/authors/profiles/april-sims"&gt;April C. Sims&lt;/a&gt;&lt;BR /&gt;Publisher: &lt;a href="https://www.packtpub.com/about"&gt;Packt&lt;/a&gt;&lt;BR /&gt;Target Audience: Oracle Database Administrators&lt;BR /&gt;&lt;BR /&gt;Chapter #1 "&lt;b&gt;When to step away from the keyboard&lt;/b&gt;" starts off with an interesting example, cautions the DBAs to be self-restraint but encourages to do the right thing at the end of the day. I liked the idea of listing out a whole bunch of graphical and command line Oracle tools [with brief descriptions] that an Oracle DBA may need in performing some of the day-to-day activities. Also couple of pages were dedicated to list out various tasks performed by Oracle DBAs on a daily, weekly, monthly, quarterly &amp; yearly basis. It was interesting. And finally the chapter concludes with a bunch of useful tips for the administrators to avoid making unwanted errors.&lt;br /&gt;&lt;br /&gt;The only thing that probably didn't fit in this chapter is the very brief discussion on &lt;i&gt;staying away from dinosaurs&lt;/i&gt;. In my opinion, it is completely off-topic.&lt;br /&gt;&lt;br /&gt;Chapter #2 "&lt;b&gt;Maintaining Oracle Standards&lt;/b&gt;" is available for download. Get it from this &lt;a href="https://www.packtpub.com/sites/default/files/0004_Oracle11g%20Novice%20DBA%20Survival%20Guide_SampleChapter.pdf"&gt;location&lt;/a&gt; and read it yourself. You be the judge.&lt;br /&gt;&lt;br /&gt;Chapter #3 "&lt;b&gt;Tracking the Bits and Bytes&lt;/b&gt;". The first half of the chapter talks about Oracle &lt;i&gt;Data Block&lt;/i&gt; and the methods to view the data at the block level, the finest level of granularity that contains the actual data. The author tried and succeeded with a decent follow up that briefly explains how transaction integrity is maintained in Oracle database. The hands on exercise makes the reader sweat a little, but may help understand the material that was presented earlier, better. The key is to focus and try to understand what is happening when running all those scripts and commands. I would like a much simpler example though. Admittedly this is not something that Oracle administrators do everyday, but it does not hurt to gain some insight into Oracle internal workings and to be prepared to leverage this knowledge when disaster strikes.&lt;br /&gt;&lt;br /&gt;The second half of the chapter was dedicated for &lt;i&gt;Log Miner&lt;/i&gt;, a PL/SQL package utility that can be used to extract the database transactions that have been executed over a period of time. April did a nice job briefly explaining why protecting the [physical] redo, undo and the archive log files is very important -- to keep the data &amp; database transactions from falling into the wrong hands. An example using "Flashback Transaction Blackout" method was shown to demonstrate how to use log miner utility to retrieve the changes that were done to the database few minutes ago.&lt;br /&gt;&lt;BR /&gt;I am not impressed with the example in page 92 in section &lt;i&gt;Identifying data in undo segments by flashing back to timestamp&lt;/i&gt;. There are a bunch of SQL statements in the example with no output from a test environment. I strongly believe that showing the actual output keeps the material interesting and easy to follow.&lt;br /&gt;&lt;BR /&gt;Also I did not like the idea of pointing to blogs and random web sites, as they may disappear any time without a warning.&lt;BR /&gt;&lt;BR /&gt;&lt;i&gt;To be continued ..&lt;/i&gt;&lt;BR /&gt;________________&lt;BR /&gt;Technorati Tags:&lt;BR /&gt;&lt;a href="http://technorati.com/tag/oracle"&gt;Oracle&lt;/a&gt; | &lt;a href="http://technorati.com/tag/database"&gt;Database&lt;/a&gt; | &lt;a href="http://technorati.com/tag/rdbms"&gt;RDBMS&lt;/a&gt; | &lt;a href="http://technorati.com/tag/dba"&gt;DBA&lt;/a&gt; | &lt;a href="http://technorati.com/tag/book"&gt;Book&lt;/a&gt; | &lt;a href="http://technorati.com/tag/review"&gt;Review&lt;/a&gt; | &lt;a href="http://technorati.com/tag/packt"&gt;Packt&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-6908326934643840833?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/6908326934643840833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=6908326934643840833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6908326934643840833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6908326934643840833'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/06/book-review-oracle-database-11-g.html' title='Book Review: Oracle Database 11&lt;i&gt;g&lt;/i&gt; – Underground Advice for Database Administrators'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-3430791160373589831</id><published>2010-05-31T20:27:00.000-07:00</published><updated>2010-05-31T20:29:45.795-07:00</updated><title type='text'>Oracle RDBMS : Flushing a Single SQL Statement out of the Object Library Cache</title><content type='html'>&lt;p&gt;It is well known that the entire shared pool can be flushed with a simple &lt;code&gt;ALTER SYSTEM&lt;/code&gt; statement.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL&gt; &lt;b&gt;ALTER SYSTEM FLUSH SHARED_POOL;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;What if the execution plan of a single SQL statement has to be invalidated or flushed out of the shared pool so the subsequent query execution forces a hard parse on that SQL statement. Oracle 11&lt;i&gt;g&lt;/i&gt; introduced a new procedure called &lt;code&gt;PURGE&lt;/code&gt; in the &lt;code&gt;DBMS_SHARED_POOL&lt;/code&gt; package to flush a specific object such as a cursor, package, sequence, trigger, .. out of the object library cache.&lt;/p&gt;&lt;p&gt;The syntax for the &lt;code&gt;PURGE&lt;/code&gt; procedure is shown below.&lt;/p&gt;&lt;pre class="programlisting"&gt;procedure PURGE (&lt;br /&gt;        name VARCHAR2, &lt;br /&gt;        flag CHAR DEFAULT 'P', &lt;br /&gt;        heaps NUMBER DEFAULT 1)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Explanation for each of the arguments is documented in detail in $ORACLE_HOME/rdbms/admin/dbmspool.sql file.&lt;/p&gt;&lt;p&gt;If a single SQL statement has to be flushed out of the object library cache, the first step is to find the address of the handle and the hash value of the cursor that has to go away. &lt;i&gt;Name&lt;/i&gt; of the object [to be purged] is the concatenation of the &lt;code&gt;ADDRESS&lt;/code&gt; and &lt;code&gt;HASH_VALUE&lt;/code&gt; columns from the &lt;code&gt;V$SQLAREA&lt;/code&gt; view. Here is an example:&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL&gt; select ADDRESS, HASH_VALUE from V$SQLAREA where SQL_ID like '7yc%';&lt;br /&gt;&lt;br /&gt;ADDRESS   HASH_VALUE&lt;br /&gt;---------------- ----------&lt;br /&gt;&lt;b&gt;000000085FD77CF0  808321886&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; exec DBMS_SHARED_POOL.PURGE ('&lt;b&gt;000000085FD77CF0, 808321886&lt;/b&gt;', '&lt;b&gt;C&lt;/b&gt;');&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select ADDRESS, HASH_VALUE from V$SQLAREA where SQL_ID like '7yc%';&lt;br /&gt;&lt;br /&gt;&lt;b&gt;no rows selected&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Note to Oracle 10&lt;i&gt;g&lt;/i&gt; R2 Customers&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The enhanced &lt;code&gt;DBMS_SHARED_POOL&lt;/code&gt; package with the &lt;code&gt;PURGE&lt;/code&gt; procedure is included in the 10.2.0.4 patchset release.&lt;/p&gt;&lt;p&gt;10.2.0.2 and 10.2.0.3 customers can download and install RDBMS patch 5614566 to get access to these enhancements in &lt;code&gt;DBMS_SHARED_POOL&lt;/code&gt; package.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Also see:&lt;/b&gt;&lt;/p&gt;&lt;ul type="circle"&gt;&lt;li&gt; Oracle Support Document ID 457309.1 "How To Flush an Object out the Library Cache [SGA]"&lt;li&gt; Oracle Support Document ID 751876.1 "DBMS_SHARED_POOL.PURGE Is Not Working On 10.2.0.4"&lt;li&gt; &lt;a href="http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_shared_pool.htm#sthref7227"&gt;DBMS_SHARED_POOL.PURGE() procedure documentation&lt;/a&gt;&lt;/ul&gt;(&lt;i&gt;Original post is at: &lt;BR&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/oracle_rdbms_flushing_a_single"&gt;http://blogs.sun.com/mandalika/entry/oracle_rdbms_flushing_a_single&lt;/a&gt;&lt;/i&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-3430791160373589831?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/3430791160373589831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=3430791160373589831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3430791160373589831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3430791160373589831'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/05/oracle-rdbms-flushing-single-sql.html' title='Oracle RDBMS : Flushing a Single SQL Statement out of the Object Library Cache'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-5134240860308124332</id><published>2010-05-23T11:02:00.000-07:00</published><updated>2010-05-23T11:07:48.208-07:00</updated><title type='text'>Oracle Database: Say No Thanks! to a New Index</title><content type='html'>(&lt;i&gt;Original post is at blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/oracle_database_say_i_no"&gt;http://blogs.sun.com/mandalika/entry/oracle_database_say_i_no&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;&lt;p&gt;&lt;i&gt; .. unless you are working with a database that is largely read-only or if the new index is supposed to be fixing a critical performance issue with no side effect(s).&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Two topics covered in this blog entry with plenty of simple examples:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Why creating new indexes on a heavily modified table may not be a good idea? and&lt;br /&gt;&lt;li&gt; How to identify unused indexes?&lt;/ol&gt;Read on.&lt;/p&gt;&lt;p&gt;Indexes are double-edged swords that may improve the performance of targeted queries, but in some cases they may accidentally degrade the performance of other queries that are not targeted. In any case, exercise caution while adding a new index to the database. After adding a new index, monitor the overall performance of the database, not just the targeted query.&lt;/p&gt;&lt;p&gt;If DML statements that modify data (INSERT, UPDATE, or DELETE) are being executed large number of times on a table, make sure that the addition of a new index on the same table does not negatively affect the performance of those DML operations. Usually this is not a problem if the SQLs being executed are simply retrieving but not adding or modifying the existing data. In all other cases, there is some performance overhead induced by the addition of each new index. For example, if there are 10 indexes created on a table &lt;code&gt;DUMMY&lt;/code&gt;, adding a new row of data to the table &lt;code&gt;DUMMY&lt;/code&gt; may require updating all 10 indexes behind the scenes by the database management system.&lt;/p&gt;&lt;p&gt;Here is an example demonstrating the performance overhead of a new index on a table.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL&gt; CREATE TABLE VIDEO&lt;br /&gt;  2  (BARCODE VARCHAR(10) NOT NULL,&lt;br /&gt;  3  TITLE VARCHAR2(25) NOT NULL,&lt;br /&gt;  4  FORMAT VARCHAR2(10),&lt;br /&gt;  5  PRICE NUMBER,&lt;br /&gt;  6  DATA_OF_RELEASE DATE)&lt;br /&gt;  7  /&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into VIDEO values ('9301224321', 'AVATAR', 'BLU-RAY', 19.99, '22-APR-2010');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into VIDEO values ('3782460017', 'THE SIMPSONS - SEASON 20', 'BLU-RAY', 29.99, '04-JUL-2009');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from VIDEO;&lt;br /&gt;&lt;br /&gt;BARCODE  TITLE        FORMAT   PRICE DATA_OF_RELEASE&lt;br /&gt;--------------- ----------------------------------- --------------- ---------- ---------------&lt;br /&gt;9301224321 AVATAR        BLU-RAY   19.99 22-APR-10&lt;br /&gt;7619203043 BEN-HUR        VHS     9.79 12-MAR-63&lt;br /&gt;7305832093 THE MATRIX       DVD    12.29 03-DEC-99&lt;br /&gt;4810218795 MEMENTO        DVD     8.49 02-FEB-02&lt;br /&gt;3782460017 THE SIMPSONS - SEASON 20     BLU-RAY   29.99 04-JUL-09&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from USER_INDEXES where TABLE_NAME = 'VIDEO';&lt;br /&gt;&lt;br /&gt;no rows selected&lt;br /&gt;&lt;br /&gt;SQL&gt; alter session set events '10046 trace name context forever, level 8';&lt;br /&gt;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from VIDEO where FORMAT = 'BLU-RAY';&lt;br /&gt;&lt;br /&gt;BARCODE  TITLE        FORMAT   PRICE DATA_OF_RELEASE&lt;br /&gt;--------------- ----------------------------------- --------------- ---------- ---------------&lt;br /&gt;9301224321 AVATAR        BLU-RAY   19.99 22-APR-10&lt;br /&gt;3782460017 THE SIMPSONS - SEASON 20     BLU-RAY   29.99 04-JUL-09&lt;br /&gt;&lt;br /&gt;SQL&gt; alter session set events '10046 trace name context off';&lt;br /&gt;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;SQL trace file has the following contents.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL ID: 0pu5s70nsdnzv&lt;br /&gt;Plan Hash: 3846322456&lt;br /&gt;SELECT * &lt;br /&gt;FROM&lt;br /&gt; VIDEO WHERE FORMAT = :"SYS_B_0"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;Parse        1      0.00       0.00          0          0          0           0&lt;br /&gt;Execute      1      0.00       0.00          0          0          0           0&lt;br /&gt;Fetch        2      0.00       0.00          0         &lt;b&gt;16&lt;/b&gt;          0           2&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;total        4      0.00       0.00          0         16          0           2&lt;br /&gt;&lt;br /&gt;Misses in library cache during parse: 0&lt;br /&gt;Optimizer mode: ALL_ROWS&lt;br /&gt;Parsing user id: 28  &lt;br /&gt;&lt;br /&gt;Rows     Row Source Operation&lt;br /&gt;-------  ---------------------------------------------------&lt;br /&gt;      2  TABLE ACCESS FULL VIDEO (cr=16 pr=0 pw=0 time=3 us cost=4 size=100 card=2)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Let's create an index and see what happens.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL&gt; create index VIDEO_IDX1 on VIDEO (FORMAT);&lt;br /&gt;&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;SQL&gt;  alter session set events '10046 trace name context forever, level 8';&lt;br /&gt;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from VIDEO where FORMAT = 'BLU-RAY';&lt;br /&gt;&lt;br /&gt;BARCODE  TITLE        FORMAT   PRICE DATA_OF_RELEASE&lt;br /&gt;--------------- ----------------------------------- --------------- ---------- ---------------&lt;br /&gt;9301224321 AVATAR        BLU-RAY   19.99 22-APR-10&lt;br /&gt;3782460017 THE SIMPSONS - SEASON 20     BLU-RAY   29.99 04-JUL-09&lt;br /&gt;&lt;br /&gt;SQL&gt; alter session set events '10046 trace name context off';&lt;br /&gt;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;The latest contents of the trace file are as follows. Notice the reduction in buffer gets from 16 to 4. That is, the new index improved the query performance by 75%.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL ID: 0pu5s70nsdnzv&lt;br /&gt;Plan Hash: 2773508764&lt;br /&gt;SELECT * &lt;br /&gt;FROM&lt;br /&gt; VIDEO WHERE FORMAT = :"SYS_B_0"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;Parse        1      0.00       0.00          0          0          0           0&lt;br /&gt;Execute      1      0.00       0.00          0          0          0           0&lt;br /&gt;Fetch        2      0.00       0.00          0          &lt;b&gt;4&lt;/b&gt;          0           2&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;total        4      0.00       0.00          0          4          0           2&lt;br /&gt;&lt;br /&gt;Misses in library cache during parse: 0&lt;br /&gt;Optimizer mode: ALL_ROWS&lt;br /&gt;Parsing user id: 28  (CS90)&lt;br /&gt;&lt;br /&gt;Rows     Row Source Operation&lt;br /&gt;-------  ---------------------------------------------------&lt;br /&gt;      2  TABLE ACCESS BY INDEX ROWID VIDEO (cr=4 pr=0 pw=0 time=12 us cost=2 size=100 card=2)&lt;br /&gt;      2   INDEX RANGE SCAN VIDEO_IDX1 (cr=2 pr=0 pw=0 time=10 us cost=1 size=0 card=2)(object id 76899)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rows     Execution Plan&lt;br /&gt;-------  ---------------------------------------------------&lt;br /&gt;      0  SELECT STATEMENT   MODE: ALL_ROWS&lt;br /&gt;      2   TABLE ACCESS (BY INDEX ROWID) OF 'VIDEO' (TABLE)&lt;br /&gt;      2    INDEX   MODE: ANALYZED (RANGE SCAN) OF 'VIDEO_IDX1' (INDEX)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;So far so good. Let's add a new row of data and examine the trace file one more time. From hereafter, keep an eye on the "current" column (&lt;i&gt;logical IOs performed due to an INSERT, UPDATE or DELETE&lt;/i&gt;) and notice how it changes with different actions -- adding and removing: indexes, new row(s) of data etc.,&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL ID: dnb2d8cpdj56p&lt;br /&gt;Plan Hash: 0&lt;br /&gt;INSERT INTO VIDEO &lt;br /&gt;VALUES&lt;br /&gt; (:"SYS_B_0", :"SYS_B_1", :"SYS_B_2", :"SYS_B_3", :"SYS_B_4")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;Parse        1      0.00       0.00          0          0          0           0&lt;br /&gt;Execute      1      0.00       0.00          0          1          &lt;b&gt;7&lt;/b&gt;           1&lt;br /&gt;Fetch        0      0.00       0.00          0          0          0           0&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;total        2      0.00       0.00          0          1          7           1&lt;br /&gt;&lt;br /&gt;Misses in library cache during parse: 0&lt;br /&gt;Optimizer mode: ALL_ROWS&lt;br /&gt;Parsing user id: 28  (CS90)&lt;br /&gt;&lt;br /&gt;Rows     Row Source Operation&lt;br /&gt;-------  ---------------------------------------------------&lt;br /&gt;      0  LOAD TABLE CONVENTIONAL  (cr=1 pr=0 pw=0 time=0 us)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rows     Execution Plan&lt;br /&gt;-------  ---------------------------------------------------&lt;br /&gt;      0  INSERT STATEMENT   MODE: ALL_ROWS&lt;br /&gt;      0   LOAD TABLE CONVENTIONAL OF 'VIDEO'&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Now drop the index, re-insert the last row and get the tracing data again.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL&gt; drop index VIDEO_IDX1;&lt;br /&gt;&lt;br /&gt;Index dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; delete from VIDEO where BARCODE ='4457332907';&lt;br /&gt;&lt;br /&gt;1 row deleted.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter session set events '10046 trace name context forever, level 8';&lt;br /&gt;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into VIDEO values ('4457332907', 'KING OF THE HILL - ALL', 'DVD', 90.00, '01-JAN-2011');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter session set events '10046 trace name context off';&lt;br /&gt;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;The contents of the latest trace file are shown below.&lt;/p&gt;&lt;pre class="programlisting"&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;Parse        1      0.00       0.00          0          0          0           0&lt;br /&gt;Execute      1      0.01       0.00          0          2          &lt;b&gt;5&lt;/b&gt;          1&lt;br /&gt;Fetch        0      0.00       0.00          0          0          0           0&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;total        2      0.01       0.00          0          2          5           1&lt;br /&gt;&lt;br /&gt;Misses in library cache during parse: 1&lt;br /&gt;Misses in library cache during execute: 1&lt;br /&gt;Optimizer mode: ALL_ROWS&lt;br /&gt;Parsing user id: 28  (CS90)&lt;br /&gt;&lt;br /&gt;Rows     Row Source Operation&lt;br /&gt;-------  ---------------------------------------------------&lt;br /&gt;      0  LOAD TABLE CONVENTIONAL  (cr=1 pr=0 pw=0 time=0 us)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rows     Execution Plan&lt;br /&gt;-------  ---------------------------------------------------&lt;br /&gt;      0  INSERT STATEMENT   MODE: ALL_ROWS&lt;br /&gt;      0   LOAD TABLE CONVENTIONAL OF 'VIDEO'&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;This time create two indexes and see what happens.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL&gt; CREATE INDEX VIDEO_IDX1 ON VIDEO (FORMAT);&lt;br /&gt;&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE INDEX VIDEO_IDX2 ON VIDEO (TITLE);&lt;br /&gt;&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;Trace file contents:&lt;br /&gt;&lt;br /&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;Parse        1      0.00       0.00          0          0          0           0&lt;br /&gt;Execute      1      0.00       0.00          0          1          &lt;b&gt;9&lt;/b&gt;           1&lt;br /&gt;Fetch        0      0.00       0.00          0          0          0           0&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;total        2      0.00       0.00          0          1          9           1&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Notice the two additional logical IOs (look under "current" column). Those additional logical input/output operations are the result of the new indexes. The number goes up as we add more indexes and data to the table &lt;code&gt;VIDEO&lt;/code&gt;.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL&gt; delete from VIDEO where BARCODE ='4457332907';&lt;br /&gt;&lt;br /&gt;1 row deleted.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; create index VIDEO_IDX3 on VIDEO (PRICE, DATA_OF_RELEASE);&lt;br /&gt;&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;SQL&gt;  alter session set events '10046 trace name context forever, level 8';&lt;br /&gt;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into VIDEO values ('4457332907', 'KING OF THE HILL - ALL', 'DVD', 90.00, '01-JAN-2011');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter session set events '10046 trace name context off';&lt;br /&gt;&lt;br /&gt;Session altered.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL trace:&lt;br /&gt;&lt;br /&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;Parse        1      0.00       0.00          0          0          0           0&lt;br /&gt;Execute      1      0.00       0.00          0          1         &lt;b&gt;11&lt;/b&gt;           1&lt;br /&gt;Fetch        0      0.00       0.00          0          0          0           0&lt;br /&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;br /&gt;total        2      0.00       0.00          0          1         11           1&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;You can try other operations such as UPDATE, DELETE on your own.&lt;/p&gt;&lt;p&gt;Since there are only few rows of data in the table &lt;code&gt;VIDEO&lt;/code&gt;, it is hard to notice the real performance impact in these examples. If you really want to see the negative performance impact due to the large number of indexes on a heavily updated table, try adding thousands or millions of rows of data and few more indexes.&lt;/p&gt;&lt;p&gt;Moral of the story: Indexes aren't always cheap - they may have some overhead associated with them. Be aware of those overheads and ensure that the index maintenance overhead do not offset the performance gains resulting from the indexes created on a particular table.&lt;/p&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;p&gt;&lt;h3&gt;&lt;font color="#990000"&gt;Monitoring Index Usage&lt;/font&gt;&lt;/H3&gt;&lt;/p&gt;&lt;p&gt;Now we know the possible disadvantage of having too many indexes on a heavily updated table. One way to reduce the index maintenance overhead is to instrument the indexes so we can monitor their usage from time to time and remove the unused indexes. To start monitoring the index usage, alter the index by specifying the keywords &lt;code&gt;MONITORING USAGE&lt;/code&gt;.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL&gt; select index_name from user_indexes where table_name = 'VIDEO';&lt;br /&gt;&lt;br /&gt;INDEX_NAME&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;VIDEO_IDX3&lt;br /&gt;VIDEO_IDX1&lt;br /&gt;VIDEO_IDX2&lt;br /&gt;&lt;br /&gt;SQL&gt; alter index VIDEO_IDX1 &lt;b&gt;MONITORING USAGE&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;Index altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter index VIDEO_IDX2 &lt;b&gt;MONITORING USAGE&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;Index altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter index VIDEO_IDX3 &lt;b&gt;MONITORING USAGE&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;Index altered.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Once the indexes are instrumented, query the &lt;code&gt;V$OBJECT_USAGE&lt;/code&gt; view occasionally to see if the instrumented indexes are being used in executing SQL queries.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL&gt; select * from VIDEO where BARCODE LIKE '%22%';&lt;br /&gt;&lt;br /&gt;BARCODE  TITLE        FORMAT   PRICE DATA_OF_RELEASE&lt;br /&gt;--------------- ----------------------------------- --------------- ---------- ---------------&lt;br /&gt;9301224321 AVATAR        BLU-RAY   19.99 22-APR-10&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from VIDEO where FORMAT = 'VHS';&lt;br /&gt;&lt;br /&gt;BARCODE  TITLE        FORMAT   PRICE DATA_OF_RELEASE&lt;br /&gt;--------------- ----------------------------------- --------------- ---------- ---------------&lt;br /&gt;7619203043 BEN-HUR        VHS     9.79 12-MAR-63&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from VIDEO where PRICE &lt; 20;&lt;br /&gt;&lt;br /&gt;BARCODE  TITLE        FORMAT   PRICE DATA_OF_RELEASE&lt;br /&gt;--------------- ----------------------------------- --------------- ---------- ---------------&lt;br /&gt;4810218795 MEMENTO        DVD     8.49 02-FEB-02&lt;br /&gt;7619203043 BEN-HUR        VHS     9.79 12-MAR-63&lt;br /&gt;7305832093 THE MATRIX       DVD    12.29 03-DEC-99&lt;br /&gt;9301224321 AVATAR        BLU-RAY   19.99 22-APR-10&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from VIDEO where FORMAT = 'BLU-RAY' AND DATA_OF_RELEASE &lt; '01-JAN-2010';&lt;br /&gt;&lt;br /&gt;BARCODE  TITLE        FORMAT   PRICE DATA_OF_RELEASE&lt;br /&gt;--------------- ----------------------------------- --------------- ---------- ---------------&lt;br /&gt;3782460017 THE SIMPSONS - SEASON 20     BLU-RAY   29.99 04-JUL-09&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; column INDEX_NAME format A25&lt;br /&gt;SQL&gt; column START_MONITORING format A30&lt;br /&gt;&lt;br /&gt;SQL&gt; select INDEX_NAME, USED, START_MONITORING &lt;br /&gt;  2  from V$OBJECT_USAGE &lt;br /&gt;  3  where INDEX_NAME LIKE 'VIDEO_IDX%'&lt;br /&gt;  4  /&lt;br /&gt;&lt;br /&gt;INDEX_NAME    USED     START_MONITORING&lt;br /&gt;------------------------- --------- ------------------------------&lt;br /&gt;&lt;font color="green"&gt;VIDEO_IDX1    YES     04/27/2010 01:10:20&lt;/font&gt;&lt;br /&gt;&lt;font color="red"&gt;VIDEO_IDX2    NO     04/27/2010 01:10:25&lt;/font&gt;&lt;br /&gt;&lt;font color="green"&gt;VIDEO_IDX3    YES     04/27/2010 01:10:31&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;In the above example, the index &lt;code&gt;VIDEO_IDX2&lt;/code&gt; was not in use during the period of index monitoring. If we are convinced that the queries that will be executed are similar to the ones that were executed during the index monitoring period, we can go ahead and remove the index &lt;code&gt;VIDEO_IDX2&lt;/code&gt; to reduce the performance overhead during updates on table &lt;code&gt;VIDEO&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;To stop monitoring the index usage, alter the index with the keywords &lt;code&gt;NOMONITORING USAGE&lt;/code&gt;.&lt;/p&gt;&lt;pre class="programlisting"&gt;SQL&gt; alter index VIDEO_IDX1 &lt;b&gt;NOMONITORING USAGE&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;Index altered.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-5134240860308124332?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/5134240860308124332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=5134240860308124332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5134240860308124332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5134240860308124332'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/05/oracle-database-say-no-thanks-to-new.html' title='Oracle Database: Say &lt;i&gt;No Thanks!&lt;/i&gt; to a New Index'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-614775257984217440</id><published>2010-05-10T02:07:00.000-07:00</published><updated>2010-05-10T02:35:57.190-07:00</updated><title type='text'>Music : Few Mixed Tunes with GarageBand</title><content type='html'>(&lt;i&gt;Originally posted on 12/09/2009. This blog posted will be updated as new compositions come along.&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;For the past couple of weeks I have had fun playing with Apple's &lt;a href="http://www.apple.com/ilife/garageband/"&gt;GarageBand&lt;/a&gt;. It is a nice piece of software with intuitive user interface and tons of free &amp; ready-to-use music loops. It only took a couple of tries and about 6 hours to produce my first ever mixed tune with software of any kind. The second one just took two hours as my main focus was on only two loops. I'm happy with the output and decided to share it with my family and friends. Hence I uploaded those two tracks to &lt;a href="http://www.icompositions.com"&gt;iCompositions&lt;/a&gt;, an internet community web site that facilitates sharing each individuals' creative work with the rest of the community at free of cost. Click on the following music player images to listen to those instrumental tracks.&lt;br /&gt;&lt;center&gt;&lt;table width=50% border=0&gt;&lt;tr&gt;&lt;td width="39%" align="right"&gt;[12/09/09] Track #1 &lt;i&gt;Hokum&lt;/i&gt;&lt;/td&gt;&lt;td width=1%&gt;&amp;nbsp;&lt;/td&gt;&lt;td width=60%&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.icompositions.com/music/song.php?sid=128835"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 254px; height: 19px;" src="http://3.bp.blogspot.com/_3KorT5IZRGk/Sx9rTIu5-pI/AAAAAAAABjI/xXwHOvPWPMk/s400/musicplayer.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413163253628533394" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=2&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="39%" align="right"&gt;[12/09/09] Track #2 &lt;i&gt;Thrum&lt;/i&gt;&lt;/td&gt;&lt;td width=1%&gt;&amp;nbsp;&lt;/td&gt;&lt;td width=60%&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.icompositions.com/music/song.php?sid=129001"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 254px; height: 19px;" src="http://3.bp.blogspot.com/_3KorT5IZRGk/Sx9rTIu5-pI/AAAAAAAABjI/xXwHOvPWPMk/s400/musicplayer.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413163253628533394" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=2&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="39%" align="right"&gt;[12/18/09] Track #3 &lt;i&gt;Kabuki Dance&lt;/i&gt;&lt;/td&gt;&lt;td width=1%&gt;&amp;nbsp;&lt;/td&gt;&lt;td width=60%&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.icompositions.com/music/song.php?sid=129681"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 254px; height: 19px;" src="http://3.bp.blogspot.com/_3KorT5IZRGk/Sx9rTIu5-pI/AAAAAAAABjI/xXwHOvPWPMk/s400/musicplayer.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413163253628533394" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=2&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="39%" align="right"&gt;[01/05/10] Track #4 &lt;i&gt;Phantasm&lt;/i&gt;&lt;/td&gt;&lt;td width=1%&gt;&amp;nbsp;&lt;/td&gt;&lt;td width=60%&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.icompositions.com/music/song.php?sid=130928"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 254px; height: 19px;" src="http://3.bp.blogspot.com/_3KorT5IZRGk/Sx9rTIu5-pI/AAAAAAAABjI/xXwHOvPWPMk/s400/musicplayer.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413163253628533394" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=2&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="39%" align="right"&gt;[05/10/10] Track #5 &lt;i&gt;Transgression&lt;/i&gt;&lt;/td&gt;&lt;td width=1%&gt;&amp;nbsp;&lt;/td&gt;&lt;td width=60%&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.icompositions.com/music/song.php?sid=140344"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 254px; height: 19px;" src="http://3.bp.blogspot.com/_3KorT5IZRGk/Sx9rTIu5-pI/AAAAAAAABjI/xXwHOvPWPMk/s400/musicplayer.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413163253628533394" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Now if only I knew how to play a real instrument ..&lt;br /&gt;________________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/music" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=music" alt=" " /&gt;Music&lt;/a&gt; | &lt;a href="http://technorati.com/tag/GarageBand" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=GarageBand" alt=" " /&gt;GarageBand&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-614775257984217440?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/614775257984217440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=614775257984217440' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/614775257984217440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/614775257984217440'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/12/music-mixed-tunes-instrumental-with.html' title='Music : Few Mixed Tunes with GarageBand'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3KorT5IZRGk/Sx9rTIu5-pI/AAAAAAAABjI/xXwHOvPWPMk/s72-c/musicplayer.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8206834.post-5079416683229947891</id><published>2010-05-07T22:24:00.000-07:00</published><updated>2010-05-07T22:24:05.372-07:00</updated><title type='text'>Oracle Database 11g – Underground Advice for Database Administrators</title><content type='html'>&lt;img src="https://www.packtpub.com/sites/default/files/0004_MockupCover.jpg" border=0 width=250 height=300/&gt;&lt;br /&gt;&lt;br /&gt;.. review coming soon ..&lt;br /&gt;&lt;br /&gt;Meanwhile feel free to explore the &lt;a href="https://www.packtpub.com/oracle-database-11g-underground-advice-database-administrators-table-of-contents"&gt;Table of Contents&lt;/a&gt; and check the freely download-able chapter &lt;a href="https://www.packtpub.com/sites/default/files/0004_Oracle11g%20Novice%20DBA%20Survival%20Guide_SampleChapter.pdf"&gt;Chapter 2: Maintaining Oracle Standards&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-5079416683229947891?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/5079416683229947891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=5079416683229947891' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5079416683229947891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5079416683229947891'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/05/oracle-database-11g-underground-advice.html' title='Oracle Database 11g – Underground Advice for Database Administrators'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-3721368172052473112</id><published>2010-05-03T00:12:00.000-07:00</published><updated>2010-05-03T00:14:32.678-07:00</updated><title type='text'>Oracle 11g R1: Poor Data Pump Performance when Exporting a Partitioned Table</title><content type='html'>(&lt;i&gt;Originally posted on blogs.sun.com at &lt;a href="http://blogs.sun.com/mandalika/entry/oracle_11g_r1_poor_data"&gt;http://blogs.sun.com/mandalika/entry/oracle_11g_r1_poor_data&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Symptom(s)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Data Pump Export utility, expdp, performs well with non-partitioned tables, but exhibits extreme poor performance when exporting objects from a partitioned table of similar size. In some cases the degradation can be as high as 3X or worse.&lt;br /&gt;&lt;br /&gt;SQL traces may show that much of the time is being spent in a SQL statement that is similar to:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;UPDATE "schema"."TABLE" mtu &lt;br /&gt;SET mtu.base_process_order = NVL((SELECT mts1.process_order FROM "schema"."TABLE" mts1 &lt;br /&gt;WHERE ..&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is an example data export session:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;Export: Release 11.1.0.7.0 - 64bit Production on &lt;b&gt;Wednesday, 31 March, 2010 6:56:50&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Copyright (c) 2003, 2007, Oracle.  All rights reserved.&lt;br /&gt;;;; &lt;br /&gt;Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production&lt;br /&gt;With the Partitioning, OLAP, Data Mining and Real Application Testing options&lt;br /&gt;Starting "SCHMA"."SYS_EXPORT_TABLE_01":  SCHMA/******** DIRECTORY=exp_dir DUMPFILE=SOME_DUMMY_PART_FULL.DMP TABLES=SOME_DUMMY_PART&lt;br /&gt;Estimate in progress using BLOCKS method...&lt;br /&gt;Processing object type TABLE_EXPORT/TABLE/TABLE_DATA&lt;br /&gt;Total estimation using BLOCKS method: &lt;b&gt;20.56 GB&lt;/b&gt;&lt;br /&gt;Processing object type TABLE_EXPORT/TABLE/TABLE&lt;br /&gt;Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX&lt;br /&gt;Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS&lt;br /&gt;Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS&lt;br /&gt;. . exported "SCHMA"."SOME_DUMMY_PART":"DUMMY_PART_P01"  1.143 GB 13788224 rows&lt;br /&gt;. . exported "SCHMA"."SOME_DUMMY_PART":"DUMMY_PART_P02"  1.143 GB 13788224 rows&lt;br /&gt;. . exported "SCHMA"."SOME_DUMMY_PART":"DUMMY_PART_P03"  1.143 GB 13788224 rows&lt;br /&gt;...&lt;br /&gt;. . exported "SCHMA"."SOME_DUMMY_PART":"DUMMY_PART_P32"  151.1 MB 1789216 rows&lt;br /&gt;. . exported "SCHMA"."SOME_DUMMY_PART":"DUMMY_PART_P33"  11.37 MB  136046 rows&lt;br /&gt;. . exported "SCHMA"."SOME_DUMMY_PART":"DUMMY_PART_P00"      0 KB       0 rows&lt;br /&gt;Master table "SCHMA"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded&lt;br /&gt;******************************************************************************&lt;br /&gt;Dump file set for SCHMA.SYS_EXPORT_TABLE_01 is:&lt;br /&gt;  /DBDUMP/SOME_DUMMY_PART_FULL.DMP&lt;br /&gt;Job "SCHMA"."SYS_EXPORT_TABLE_01" successfully completed at &lt;b&gt;11:22:36&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Solution(s) / Workaround&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is a known issue (that is, a &lt;i&gt;bug&lt;/i&gt;) and a solution is readily available. Try any of the following to resolve the issue:&lt;br /&gt;&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; Apply the 11&lt;i&gt;g&lt;/i&gt; database patch 8845859&lt;br /&gt;&lt;li&gt; Upgrade to 11.2.0.2 patchset when it is available, or&lt;br /&gt;&lt;li&gt; Specify "VERSION=10.2.0.3" expdp option as a workaround &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I ran into this issue and I chose the workaround to make some quick progress. With the string "VERSION=10.2.0.3" appended, export time went down from 265 minutes to 60+ minutes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-3721368172052473112?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/3721368172052473112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=3721368172052473112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3721368172052473112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3721368172052473112'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/05/oracle-11-g-r1-poor-data-pump.html' title='Oracle 11&lt;i&gt;g&lt;/i&gt; R1: Poor Data Pump Performance when Exporting a Partitioned Table'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-3443648824626043931</id><published>2010-04-21T01:25:00.000-07:00</published><updated>2010-04-21T01:41:24.859-07:00</updated><title type='text'>2004-2010 : A Look Back at Sun Published Oracle Benchmarks</title><content type='html'>(&lt;i&gt;Originally published on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/2004_2010_a_look_back"&gt;http://blogs.sun.com/mandalika/entry/2004_2010_a_look_back&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;&lt;style type="text/css"&gt;tr.year td { color: #008000;font-family: georgia;font-size: 125%;}tr.even td {background-color: #E0E0E0;color: black;font-family: arial;font-size: 90%;}tr.odd td {background-color: #E6E6FA;color: black;font-family: sans-serif;font-size: 90%;}p, ul {font-family: georgia,garamond,sans-serif;}&lt;/style&gt;&lt;br /&gt;Since Sun Microsystems became a legacy, I got this idea of a reminiscent [farewell] blog post for the company that gave me the much needed break when I was a graduate student back in 2002. As I spend more than 50% of my time benchmarking different Oracle products on Sun hardware, it'd be fitting to fill this blog entry with a recollection of the benchmarks I was actively involved in over the past 6+ years. Without further ado, the list follows.&lt;table border="0" cellspacing="5"&gt;&lt;tbody&gt;&lt;tr class="year"&gt;&lt;td&gt;&lt;h3&gt;2004&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="even"&gt;&lt;td&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;1.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 10,000 user Siebel 7.5.2 PSPP benchmark on a combination of SunFire v440, v890 and E2900 servers. Database: Oracle 9&lt;i&gt;i&lt;/i&gt;&lt;ul type="none"&gt;&lt;li&gt; &lt;a href="http://www.oracle.com/apps_benchmark/doc/sun-siebel-10000-benchmark-white-paper.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Blog: &lt;a href="http://technopark02.blogspot.com/2004/10/sun-achieves-winning-siebel-benchmark.html"&gt;Sun achieves winning Siebel benchmark&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Blog: &lt;a href="http://blogs.sun.com/drapeau/date/20041003#sun_and_siebel_kick_some"&gt;Sun and Siebel Kick Some Benchmark Butt&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Blog: &lt;a href="http://blogs.sun.com/drapeau/date/20041005#when_good_benchmarks_go_bad"&gt;When Good Benchmarks Go Bad&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="year"&gt;&lt;td&gt;&lt;h3&gt;2005&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd"&gt;&lt;td&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;2.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 8,000 user Siebel 7.7 PSPP benchmark on a combination of SunFire v490, v890, T2000 and E2900 servers. Database: Oracle 9&lt;i&gt;i&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/sun-siebel-8000-benchmark-white-paper.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="even"&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;3.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 12,500 user Siebel 7.7 PSPP benchmark on a combination of SunFire v490, v890, T2000 and E2900 servers. Database: Oracle 9&lt;i&gt;i&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/sun-siebel-12500_benchmark-white-paper.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="year"&gt;&lt;td&gt;&lt;h3&gt;2006&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd"&gt;&lt;td&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;4.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 10,000 user Siebel Analytics 7.8.4 benchmark on multiple SunFire T2000 servers. Database: Oracle 10&lt;i&gt;g&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oracle-bi-ee-10k-benchmark-sunt2000.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="year"&gt;&lt;td&gt;&lt;h3&gt;2007&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="even"&gt;&lt;td&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;5.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 10,000 user Siebel 8.0 PSPP benchmark on two T5220 servers. Database: Oracle 10&lt;i&gt;g&lt;/i&gt; R2&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/Sun_Siebel8_10000_PSPP_On_Solaris.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/sun_publishes_10_000_user"&gt;Sun publishes 10,000 user Siebel 8.0 PSPP benchmark on Niagara 2 systems&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="year"&gt;&lt;td&gt;&lt;h3&gt;2008&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd"&gt;&lt;td&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;6.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; Oracle E-Business Suite 11&lt;i&gt;i&lt;/i&gt; Payroll benchmark for 5,000 employees. Database: Oracle 10&lt;i&gt;g&lt;/i&gt; R1&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/E-Bus-11i-PAY_ORA_SUN-T5220.pdf"&gt;White Paper&lt;/a&gt; (&lt;i&gt;didn't qualify as a benchmark since we configured more than 4 payroll threads&lt;/i&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/running_batch_workloads_on_sun"&gt;Running Batch Workloads on Sun's CMT Servers&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="even"&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;7.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 14,000 user Siebel 8.0 PSPP benchmark on a single T5440 server. Database: Oracle 10&lt;i&gt;g&lt;/i&gt; R2&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/sun-siebel-8-14000-pspp-on-solaris-benchmark-white-paper.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/siebel_8_0_on_sun"&gt;Siebel 8.0 on Sun SPARC Enterprise T5440 - More Bang for the Buck!!&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/siebel_on_sun_cmt_hardware"&gt;Siebel on Sun CMT hardware : Best Practices&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blueprint: &lt;a href="http://wikis.sun.com/display/BluePrints/Consolidating+Oracle+Siebel+CRM+8+on+a+Single+Sun+SPARC+Enterprise+Server"&gt;Consolidating Oracle Siebel CRM 8 on a Single Sun SPARC Enterprise Server&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd"&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;8.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 10,000 user Siebel 8.0 PSPP benchmark on a single T5240 server. Database: Oracle 10&lt;i&gt;g&lt;/i&gt; R2&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/sun-siebel8-10000-pspp-on-solaris-t52401.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/yet_another_siebel_8_0"&gt;Yet Another Siebel 8.0 PSPP Benchmark on Sun CMT Hardware ..&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="year"&gt;&lt;td&gt;&lt;h3&gt;2009&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="even"&gt;&lt;td&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;9.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 4,000 user PeopleSoft HR Self-Service 8.9 benchmark on a combination of M3000 and T5120 servers. Database: Oracle 10&lt;i&gt;g&lt;/i&gt; R2&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS8-HR-89_ORA_SUN_Ent_M3000.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_hrms_8_9_self"&gt;PeopleSoft HRMS 8.9 Self-Service Benchmark on M3000 &amp;amp; T5120 Servers&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd"&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;10.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 28,000 user Oracle Business Intelligence Enterprise Edition (OBIEE) 10.1.3.4 benchmark on a single T5440 server. Database: Oracle 11&lt;i&gt;g&lt;/i&gt; R1&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oraclebiee_28000user_benchmark_on_solaris_t5440.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/t5440_rocks_again_with_1"&gt;T5440 Rocks [again] with Oracle Business Intelligence Enterprise Edition Workload&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/oracle_business_intelligence_on_sun"&gt;Oracle Business Intelligence on Sun : Few Best Practices&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="even"&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;11.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 50,000 user Oracle Business Intelligence Enterprise Edition (OBIEE) 10.1.3.4 benchmark on two T5440 servers. Database: Oracle 11&lt;i&gt;g&lt;/i&gt; R1&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oraclebiee_50000user_benchmark_on_solaris_t5440.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/oracle_business_intelligence_10_1"&gt;Sun achieves the Magic Number 50,000 on T5440 with Oracle Business Intelligence EE 10.1.3.4&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blueprint: &lt;a href="http://wikis.sun.com/display/BluePrints/Deploying+Oracle+Business+Intelligence+Enterprise+Edition"&gt;Deploying Oracle Business Intelligence Enterprise Edition&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd"&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;12.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; PeopleSoft North American Payroll 9.0 240K EE 8-stream benchmark on a single M4000 server with F5100 Flash Array storage. Database: Oracle 11&lt;i&gt;g&lt;/i&gt; R1&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS9-NA-PAY-9_ORA_Sun_M4000.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_north_american_payroll_on"&gt;PeopleSoft North American Payroll on Sun Solaris with F5100 Flash Array : A blog Reprise&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/BestPerf/entry/oracle_peoplesoft_payroll_sun_sparc"&gt;Oracle PeopleSoft Payroll (NA) Sun SPARC Enterprise M4000 and Sun Storage F5100 World Record Performance&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://www.c0t0d0s0.org/archives/6021-App-benchmarks,-incorrect-conclusions-and-the-Sun-Storage-F5100.html"&gt;App benchmarks, incorrect conclusions and the Sun Storage F5100&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blueprint: &lt;a href="https://www.sun.com/offers/details/peoplesoft_enterprise_payroll.xml"&gt;Best Practices for Oracle PeopleSoft Enterprise Payroll for North America using the Sun Storage F5100 Flash Array or Sun Flash Accelerator F20 PCIe Card&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="year"&gt;&lt;td&gt;&lt;h3&gt;2010&lt;/h3&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="even"&gt;&lt;td&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;13.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; PeopleSoft North American Payroll 9.0 240K EE 16-stream benchmark on a single M4000 server with F5100 Flash Array storage. Database: Oracle 11&lt;i&gt;g&lt;/i&gt; R1&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/ps9-na-pay-9_16_ora_sun_m4000.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_na_payroll_240k_ee"&gt;PeopleSoft NA Payroll 240K EE Benchmark with 16 Job Streams : Another Home Run for Sun&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="odd"&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="background-color: blue; color: white; font-family: georgia; font-size: large;"&gt;&lt;i&gt;&amp;nbsp;14.&amp;nbsp;&lt;/i&gt;&lt;/span&gt; 6,000 user PeopleSoft Campus Solutions 9.0 benchmark on a combination of X6270 blades and M4000 server. Database: Oracle 11&lt;i&gt;g&lt;/i&gt; R1&lt;br /&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps9-campus-9_ora_sun_sparc_solaris.pdf"&gt;Benchmark Report&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_campus_solutions_9_0"&gt;PeopleSoft Campus Solutions 9.0 benchmark on Sun SPARC Enterprise M4000 and X6270 blades&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;div&gt;&lt;br /&gt;Although challenging and exhilarating, benchmarks aren't always pleasant to work on, and really not for people with weak hearts. While running most of these benchmarks, my blood pressure shot up several times leaving me wonder why do I keep working on time sensitive and/or politically, strategically incorrect benchmarks (apparently not every benchmark finds a home somewhere on the public network). Nevertheless in the best interest of my employer, the show&lt;i&gt;down&lt;/i&gt; must go on.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-3443648824626043931?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/3443648824626043931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=3443648824626043931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3443648824626043931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3443648824626043931'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/04/2004-2010-look-back-at-sun-published.html' title='2004-2010 : A Look Back at Sun Published Oracle Benchmarks'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-8939314094891556285</id><published>2010-03-01T00:54:00.000-08:00</published><updated>2010-03-01T01:15:53.693-08:00</updated><title type='text'>PeopleSoft Campus Solutions 9.0 benchmark on Sun SPARC Enterprise M4000 and X6270 blades</title><content type='html'>&lt;style&gt;tbody.itable { font-family: verdana,times,georgia,garamond,arial; font-size: small}&lt;/style&gt;&lt;br /&gt;Oracle|Sun published PeopleSoft Campus Solutions 9.0 benchmark results on February 18, 2010. Here is the direct URL to the benchmark results white paper:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps9-campus-9_ora_sun_sparc_solaris.pdf"&gt;PeopleSoft Enterprise Campus Solutions 9.0 using Oracle 11&lt;i&gt;g&lt;/i&gt; on a Sun SPARC Enterprise M4000 &amp; Sun Blade X6270 Modules&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sun published three PeopleSoft benchmarks on SPARC platform over the last 12 month period -- one OLTP and two batch benchmarks&lt;sup&gt;[&lt;a href="#sunpsftbenchmarks"&gt;1&lt;/a&gt;]&lt;/sup&gt;. The latest benchmark is somewhat special for at least couple of reasons:&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; Campus Solutions 9.0 workload has both online transactions and batch processes, and&lt;br /&gt;&lt;li&gt; This is the very first time ever Sun published a PeopleSoft benchmark on x64 hardware running Oracle Enterprise Linux&lt;/ul&gt;&lt;br /&gt;The summary of the benchmark test results is shown below. These numbers were extracted from the very first page of the benchmark results white papers where Oracle|PeopleSoft highlights the significance of the test results and the actual numbers that are of interest to the customers. Test results are sorted by the hourly throughput (invoices &amp; transcripts per hour) in the descending order. Click on the link that is underneath the vendor name to open corresponding benchmark result.&lt;br /&gt;&lt;br /&gt;While analyzing these test results, remember that the higher the throughput, the better. In the case of online transactions, it is desirable to keep the response times as low as possible.&lt;br /&gt;&lt;table border="1" frame="void" rules="all" width="100%"&gt;&lt;caption&gt;&lt;h3&gt;Oracle PeopleSoft Campus Solutions 9.0 Benchmark Test Results&lt;/h3&gt;&lt;/caption&gt;&lt;thead&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th width="4%" rowspan="3" valign="center"&gt;Vendor&lt;/th&gt;&lt;th width="40%" rowspan="3" colspan="2" valign="center"&gt;Hardware Configuration&lt;/th&gt;&lt;th width="6%" rowspan="3" valign="center"&gt;OS&lt;/th&gt;&lt;th width="14%" rowspan="2" colspan="2"&gt;Resource Utilization&lt;/th&gt;&lt;th width="36%" colspan="6"&gt;Response/Elapsed Times at Peak Load (6,000 users)&lt;/th&gt;&lt;/tr&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th colspan="4"&gt;Online Transactions: Avg Response Times (sec)&lt;/th&gt;&lt;th colspan="2"&gt;Batch Throughput/hr&lt;/th&gt;&lt;/tr&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th width="7%"&gt;CPU%&lt;/th&gt;&lt;th width="7%"&gt;Mem (GB)&lt;/th&gt;&lt;th width="6%"&gt;Logon&lt;/th&gt;&lt;th width="6%"&gt;LSC&lt;/th&gt;&lt;th width="6%"&gt;Page Load&lt;/th&gt;&lt;th width="6%"&gt;Page Save&lt;/th&gt;&lt;th width="6%"&gt;Invoice&lt;/th&gt;&lt;th width="6%"&gt;Transcripts&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody class="itable"&gt;&lt;tr&gt;&lt;td rowspan="3" valign="middle" align="center"&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps9-campus-9_ora_sun_sparc_solaris.pdf"&gt;Sun&lt;/a&gt;&lt;/td&gt;&lt;td align="center" width="5%"&gt;DB&lt;/td&gt;&lt;td width="35%"&gt;1 x M4000 with 2 x 2.53GHz SPARC64 VII QC processors, 32GB RAM&lt;BR&gt;1 x Sun Storage Flash Accelerator F20 with 4 x 24GB FMODs&lt;BR&gt;1 x ST2540 array with  11 × 136.7GB SAS 15K RPM drives&lt;/td&gt;&lt;td align="center"&gt;Solaris 10&lt;/td&gt;&lt;td align="center"&gt;37.29&lt;/td&gt;&lt;td align="center"&gt;20.94&lt;/td&gt;&lt;td rowspan="3" valign="middle" align="center"&gt;0.64&lt;/td&gt;&lt;td rowspan="3" valign="middle" align="center"&gt;0.78&lt;/td&gt;&lt;td rowspan="3" valign="middle" align="center"&gt;0.82&lt;/td&gt;&lt;td rowspan="3" valign="middle" align="center"&gt;1.57&lt;/td&gt;&lt;td rowspan="3" valign="middle" align="center"&gt;31,797&lt;/td&gt;&lt;td rowspan="3" valign="middle" align="center"&gt;36,652&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="5%" align="center"&gt;APP&lt;/td&gt;&lt;td width="35%"&gt;2 x X6270 blades with 2 x 2.93GHz Xeon 5570 QC processors, 24GB RAM&lt;/td&gt;&lt;td align="center"&gt;OEL4 U8&lt;/td&gt;&lt;td align="center"&gt;41.69&lt;sup&gt;&lt;a href="#suncpunote"&gt;*&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;&lt;td align="center"&gt;4.99&lt;sup&gt;&lt;a href="#suncpunote"&gt;*&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="5%" align="center"&gt;WEB+PS&lt;/td&gt;&lt;td width="35%"&gt;1 x X6270 blade with 2 x 2.8GHz Xeon 5560 QC processors, 24GB RAM&lt;/td&gt;&lt;td align="center"&gt;OEL4 U8&lt;/td&gt;&lt;td align="center"&gt;33.08&lt;/td&gt;&lt;td align="center"&gt;6.03&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="12"&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps9-campus-9_ora_hp_integrity_linux3.pdf"&gt;HP&lt;/a&gt;&lt;/td&gt;&lt;td width="5%" align="center"&gt;DB&lt;/td&gt;&lt;td width="35%"&gt;1 x Integrity rx6600 with 4 x 1.6GHz Itanium 9050 DC procs, 32G RAM&lt;BR&gt;1 x HP StorageWorks EVA8100 array with 58 x 146GB drives&lt;/td&gt;&lt;td align="center"&gt;HP-UX 11iv3&lt;/td&gt;&lt;td align="center"&gt;61&lt;/td&gt;&lt;td align="center"&gt;30&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;0.71&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;0.91&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;0.83&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;1.63&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;22,753&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;30,257&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="5%" align="center"&gt;APP&lt;/td&gt;&lt;td width="35%"&gt;2 x BL460c blade with 2 x 3.16GHz Xeon 5460 QC procs, 16GB RAM&lt;/td&gt;&lt;td align="center"&gt;RHEL4U5&lt;/td&gt;&lt;td align="center"&gt;61.81&lt;/td&gt;&lt;td align="center"&gt;3.6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="5%" align="center"&gt;WEB&lt;/td&gt;&lt;td width="35%"&gt;1 x BL460c blade with 2 x 3GHz Xeon 5160 DC procs, 8GB RAM&lt;/td&gt;&lt;td align="center"&gt;RHEL4U5&lt;/td&gt;&lt;td align="center"&gt;44.36&lt;/td&gt;&lt;td align="center"&gt;3.77&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="5%" align="center"&gt;PS&lt;/td&gt;&lt;td width="35%"&gt;1 x BL460c blade with 2 x 3GHz Xeon 5160 DC procs, 8GB RAM&lt;/td&gt;&lt;td align="center"&gt;RHEL4U5&lt;/td&gt;&lt;td align="center"&gt;21.90&lt;/td&gt;&lt;td align="center"&gt;1.48&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="12"&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps9-campus-9_sql_hp_blades1.pdf"&gt;HP&lt;/a&gt;&lt;/td&gt;&lt;td width="5%" align="center"&gt;DB&lt;/td&gt;&lt;td width="35%"&gt;1 x ProLiant DL580 G4 w/ 4 x 3.4GHz Xeon 7140M DC procs, 32G RAM&lt;BR&gt;1 x HP StorageWorks XP128 array with 28 x 73GB drives&lt;/td&gt;&lt;td align="center"&gt;Win2003R2&lt;/td&gt;&lt;td align="center"&gt;70.37&lt;/td&gt;&lt;td align="center"&gt;21.26&lt;/td&gt;&lt;br /&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;0.72&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;1.17&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;0.94&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;1.80&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;17,621&lt;/td&gt;&lt;td rowspan="4" valign="middle" align="center"&gt;25,423&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="5%" align="center"&gt;APP&lt;/td&gt;&lt;td width="35%"&gt;4 x BL480c G1 blades with 2 x 3GHz Xeon 5160 DC procs, 12GB RAM&lt;/td&gt;&lt;td align="center"&gt;Win2003R2&lt;/td&gt;&lt;td align="center"&gt;65.61&lt;/td&gt;&lt;td align="center"&gt;2.17&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="5%" align="center"&gt;WEB&lt;/td&gt;&lt;td width="35%"&gt;1 x BL460c G1 blades with 2 x 3GHz Xeon 5160 DC procs, 12GB RAM&lt;/td&gt;&lt;td align="center"&gt;Win2003R2&lt;/td&gt;&lt;td align="center"&gt;54.11&lt;/td&gt;&lt;td align="center"&gt;3.13&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="5%" align="center"&gt;PS&lt;/td&gt;&lt;td width="35%"&gt;1 x BL460c G1 blades with 2 x 3GHz Xeon 5160 DC procs, 12GB RAM&lt;/td&gt;&lt;td align="center"&gt;Win2003R2&lt;/td&gt;&lt;td align="center"&gt;32.44&lt;/td&gt;&lt;td align="center"&gt;1.40&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="12"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This is all public information. Feel free to compare the hardware configurations &amp; the data presented in the table and draw your own conclusions. Since both Sun and HP used the same benchmark workload, toolkit and ran the benchmark with the same number of concurrent users and job streams for the batch processes, comparison should be pretty straight forward.&lt;br /&gt;&lt;br /&gt;Hopefully the following paragraphs will provide relevant insights into the benchmark and the application.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Caution in interpreting the Online Transaction Response Times&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Average response times for the online transactions were measured using HP's QuickTest Pro (QTP) tool. This is a benchmark requirement. QTP test scripts have a dependency on the web browser (IE in particular) -- hence it is extremely sensitive to the web browser latencies, &lt;a href="http://technopark02.blogspot.com/2008/06/quicktest-pro-performance-vnc-or-remote.html"&gt;remote desktop/VNC latencies&lt;/a&gt; and other latencies induced by the operating system. Be aware that all these latencies will be factored into the transaction response times and due to this, the final average transaction response times might be skewed a little. In other words, the reported average transaction response times may not necessarily be very accurate. In most of the cases we might be looking at the approximate values and the actual values might be far better than the ones reported in the benchmark report. (&lt;i&gt;I really wish Oracle|PeopleSoft would throw away some of the skewed samples to make the data more accurate and reliable.&lt;/i&gt;). Please keep this in mind when looking at the response times of the online transactions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quick note about Consolidation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In our benchmark environment, we had the PeopleSoft Process Scheduler (batch server) set up on the same node as that of the web server node. In general, Oracle recommends setting up the process scheduler either on the database server node or on a dedicated system. However in the benchmark environment, we chose not to run the process scheduler on the database server node as it would hurt the performance of the online transactions. At the same time, we noticed plenty of idle CPU cycles on the web server node even at the peak load of 6,000 concurrent users, so we decided to run the PS on the web server node. In case if customers are not comfortable with this kind of setup, they can use any supported virtualization technology (eg., Logical Domains, Containers on Solaris, Oracle VM on OEL) to separate the process scheduler from the web server by allocating the system resources as they like. It is just a matter of choice.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PeopleSoft Load Balancing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;PeopleSoft has load balancing mechanism built into the web server to forward the incoming requests to appropriate application server in the enterprise, and within the application server to send the request to an appropriate application server process, PSAPPSRV. (&lt;i&gt;I'm not 100% sure but I think application server balances the load among application server processes in a round robin fashion on *nix platforms whereas on Windows, it forwards all the requests to a single application server process until it reaches the configured limit before moving on to the next available application server process.&lt;/i&gt;). However this in-built load balancing is not perfect. Most of the times, the number of requests processed by each of the identically configured application server processes [running on different application server nodes in the enterprise] may not be even. This minor shortcoming could lead to uneven resource usage across different nodes in the PeopleSoft deployment. You can notice this in the CPU and memory usage reported for the two app server nodes in the benchmark environment (check the benchmark results &lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps9-campus-9_ora_sun_sparc_solaris.pdf"&gt;white paper&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sun Flash Accelerator F20 PCIe Card&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To reduce I/O latency, hot tables and hot indexes were placed on a &lt;a href="http://www.sun.com/storage/disk_systems/sss/f20/"&gt;Sun Flash Accelerator F20 PCIe Card&lt;/a&gt; in this benchmark. The F20 card has a total capacity of 96 GB with 4 x 24GB Flash Modules (FMODs). Although this workload is moderately I/O intensive, the batch processes in this benchmark generate a lot of I/O for few minutes in the steady state of the benchmark. The flash accelerator handled the burst of I/O activity pretty well, and as a result the performance of the batch processesing was improved.&lt;br /&gt;&lt;br /&gt;Check the white paper &lt;a href="https://www.sun.com/offers/details/peoplesoft_enterprise_payroll.xml"&gt;Best Practices for Oracle PeopleSoft Enterprise Payroll for North America using the Sun Storage F5100 Flash Array or Sun Flash Accelerator F20 PCIe Card&lt;/a&gt; to know more about the top flash products offered by Oracle|Sun and how they can be deployed in a PeopleSoft environment for maximum benefit.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solaris specific Tuning&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Almost on all versions of Solaris 10, the kernel uses 4M as the maximum page size despite the fact that the underlying hardware supports as high as 256M pages. However large pages may &lt;a href="http://technopark02.blogspot.com/2005/02/solaris-9-or-later-more-performance.html"&gt;improve the performance&lt;/a&gt; of some of the memory intensive workloads such as Oracle database by reducing the number of virtual &lt;=&gt; physical translations there by reducing the expensive dTLB/iTLB misses. In the benchmark environment, the following values were set in the /etc/system configuration file of the database server node to enable 256MB pages for the process heap and ISM.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;* 256M pages for process heap&lt;br /&gt;set max_uheap_lpsize=0x10000000&lt;br /&gt;&lt;br /&gt;* 256M pages for ISM&lt;br /&gt;set mmu_ism_pagesize=0x10000000&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;While we are on the same topic, Linux configuration is out-of-the-box. No OS tuning was performed in this benchmark.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tuning Tip for Solaris Customers&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Even though we did not set up the middle-tier on a Solaris box in this benchmark, this particular tuning tip is still valid and may help all those customers running the application server on Solaris. Consider lowering the shell limit for the file descriptors to a value of 512 or less if it was set to any value greater than 512. As of today (until the release of PeopleTools 8.50), there are certain parts of code in PeopleSoft calls the file control routine, &lt;code&gt;fcntl()&lt;/code&gt;, and the file close routine, &lt;code&gt;fclose()&lt;/code&gt;, in a loop "&lt;code&gt;ulimit -n&lt;/code&gt;" number of times to close a bunch of files which were opened to perform a specific task. In general, PeopleSoft processes won't open hundreds of files. Hence the above mentioned behavior results in ton of dummy calls that error out. Besides, those system calls are not cheap -- they consume CPU cycles. It gets worse when there are a number of PeopleSoft processes that exhibit this kind of behavior simultaneously. (&lt;i&gt;high system CPU% is one of the symptoms that helps identifying this behavior&lt;/i&gt;). Oracle|PeopleSoft is currently trying to address this performance issue. Meanwhile customers can lower the file descriptors shell limit to reduce its intensity and impact.&lt;br /&gt;&lt;br /&gt;We have not observed this behavior on OEL when running the benchmark. But be sure to trace the system calls and figure out if the shell limit for the file descriptors need be lowered even on Linux or other supported platforms.&lt;br /&gt;&lt;br /&gt;______________________________________&lt;H3&gt;Footnotes:&lt;/H3&gt;&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;PeopleSoft benchmarks on Sun platform in year 2009-2010&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="sunpsftbenchmarks"&gt;&lt;ol&gt;&lt;li&gt; &lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS8-HR-89_ORA_SUN_Ent_M3000.pdf"&gt;PeopleSoft HRMS 8.9 SELF-SERVICE Using ORACLE on Sun SPARC Enterprise M3000 and Enterprise T5120 Servers&lt;/a&gt; -- online transactions (OLTP)&lt;br /&gt;&lt;li&gt; &lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS9-NA-PAY-9_ORA_Sun_M4000.pdf"&gt;PeopleSoft Enterprise Payroll 9.0 using Oracle for Solaris on a Sun SPARC Enterprise M4000 (8 streams)&lt;/a&gt; -- batch workload&lt;br /&gt;&lt;li&gt; &lt;a href="http://www.oracle.com/apps_benchmark/doc/ps9-na-pay-9_16_ora_sun_m4000.pdf"&gt;PeopleSoft Enterprise Payroll 9.0 using Oracle for Solaris on a Sun SPARC Enterprise M4000 (16 streams)&lt;/a&gt; -- batch workload&lt;/a&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;a name="suncpunote"&gt;&lt;sup&gt;&lt;b&gt;&lt;font size="4"&gt;*&lt;/b&gt;&lt;/font&gt;&lt;/sup&gt;HP's benchmark results white paper did not show the CPU and memory breakdown numbers separately for each of the application server nodes. It only shows the average of average CPU and memory utilization for all app server nodes under "App Servers". Sun's average CPU, memory numbers [shown in the above table] were calculated in the same way for consistency.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Copied from the original post at Oracle|Sun blogs @&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_campus_solutions_9_0"&gt;http://blogs.sun.com/mandalika/entry/peoplesoft_campus_solutions_9_0&lt;/a&gt;&lt;/i&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-8939314094891556285?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/8939314094891556285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=8939314094891556285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8939314094891556285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8939314094891556285'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/03/peoplesoft-campus-solutions-90.html' title='PeopleSoft Campus Solutions 9.0 benchmark on Sun SPARC Enterprise M4000 and X6270 blades'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-8644130344016306784</id><published>2010-02-11T01:07:00.000-08:00</published><updated>2010-02-11T01:10:32.067-08:00</updated><title type='text'>Extracting DDL Statements from a PeopleSoft Data Mover exported DAT file</title><content type='html'>Case in hand: Given a PeopleSoft Data Mover exported data file (&lt;i&gt;db&lt;/i&gt; or &lt;i&gt;dat&lt;/i&gt; file), how to extract the DDL statements [from that data file] which gets executed as part of the Data Mover's data import process?&lt;br /&gt;&lt;br /&gt;Here is a quick way to do it:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt; &lt;li&gt; Insert the &lt;code&gt;SET EXTRACT&lt;/code&gt; statements in the Data Mover script (DMS) before the &lt;code&gt;IMPORT ..&lt;/code&gt; statement.&lt;br /&gt;&lt;br /&gt;eg.,&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% cat /tmp/retrieveddl.dms&lt;br /&gt;&lt;br /&gt;..&lt;br /&gt;&lt;font color="blue"&gt;&lt;b&gt;SET EXTRACT OUTPUT /tmp/ddl_stmts.log;&lt;br /&gt;SET EXTRACT DDL;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;IMPORT *;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It is mandatory that the &lt;code&gt;SET EXTRACT OUPUT&lt;/code&gt; statement must appear before any &lt;code&gt;SET EXTRACT&lt;/code&gt; statements.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Run the Data Mover utility with the modified DMS script as an argument.&lt;br /&gt;&lt;br /&gt;eg., OS: Solaris&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% psdmtx -CT ORACLE -CD NAP11 -CO NAP11 -CP NAP11 -CI people -CW peop1e -FP /tmp/retrieveddl.dms&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;On successful completion, you will find the DDL statements in /tmp/retrieveddl.dms file.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Check chapter #2 "Using PeopleSoft Data Mover" in &lt;a href="http://download.oracle.com/docs/cd/E05317_01/psft/acrobat/pt849adm-b0307.pdf"&gt;Enterprise PeopleTools x.xx PeopleBook: Data Management&lt;/a&gt; document for more ideas.&lt;br /&gt;&lt;br /&gt;______&lt;br /&gt;(&lt;i&gt;Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/extracting_ddl_statements_from_a"&gt;http://blogs.sun.com/mandalika/entry/extracting_ddl_statements_from_a&lt;/a&gt;&lt;/i&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-8644130344016306784?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/8644130344016306784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=8644130344016306784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8644130344016306784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8644130344016306784'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/02/extracting-ddl-statements-from.html' title='Extracting DDL Statements from a PeopleSoft Data Mover exported DAT file'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-4737373503701481239</id><published>2010-01-31T20:44:00.000-08:00</published><updated>2010-02-02T20:52:10.089-08:00</updated><title type='text'>PeopleSoft NA Payroll 240K EE Benchmark with 16 Job Streams : Another Home Run for Sun</title><content type='html'>(&lt;i&gt;Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_na_payroll_240k_ee"&gt;http://blogs.sun.com/mandalika/entry/peoplesoft_na_payroll_240k_ee&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;Poor &lt;i&gt;Steve A.&lt;/i&gt;&lt;sup&gt;[&lt;a href="#stevea"&gt;1&lt;/a&gt;]&lt;/sup&gt; &lt;i&gt;...&lt;/i&gt;  This entry is not about Steve A. though. It is about the new PeopleSoft NA Payroll benchmark result that Sun published today.&lt;br /&gt;&lt;br /&gt;First things first. Here is the direct URL to our latest benchmark results:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.oracle.com/apps_benchmark/doc/ps9-na-pay-9_16_ora_sun_m4000.pdf"&gt;PeopleSoft Enterprise Payroll 9.0 using Oracle for Solaris on a Sun SPARC Enterprise M4000&lt;/a&gt; (16 job streams&lt;sup&gt;[&lt;a href="#notes2"&gt;2&lt;/a&gt;]&lt;/sup&gt; -- &lt;i&gt;simply referred as 'stream' hereonwards&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;The summary of the benchmark test results is shown below only for the 16 stream benchmarks. These numbers were extracted from the very first page of the benchmark results white papers where Oracle|PeopleSoft highlights the significance of the results and the actual numbers that are of interest to the customers. The results in the following table are sorted by the hourly throughput (payments/hour) in the descending order. The goal is to achieve as much hourly throughput as possible. Click on the link that is underneath the hourly throughput values to open corresponding benchmark result.&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="7" cellspacing="2" width="100%"&gt;&lt;caption&gt;Oracle PeopleSoft North American Payroll 9.0 - Number of employees: &lt;b&gt;240,000&lt;/b&gt; &amp; Number of payments: &lt;b&gt;360,000&lt;/b&gt;&lt;/caption&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th bgcolor="#c7c7f9" width="5%"&gt;Vendor&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="10%"&gt;OS&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="45%"&gt;Hardware Config&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="10%"&gt;#Job Streams&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="15%"&gt;Elapsed Time (min)&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="15%"&gt;Hourly Throughput&lt;BR&gt;Payments per Hour&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;Sun&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;Solaris 10 5/09&lt;/td&gt;&lt;br /&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;1x Sun SPARC Enterprise M4000 with 4 x 2.53 GHz SPARC64-VII Quad-Core processors and 32 GB memory&lt;BR&gt;1 x Sun Storage F5100 Flash Array with 40 Flash Modules for data, indexes&lt;BR&gt;1 x Sun Storage J4200 Array for redo logs&lt;br /&gt;&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;16&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;43.78&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/ps9-na-pay-9_16_ora_sun_m4000.pdf"&gt;493,376&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;HP&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;HP-UX&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;1 x HP Integrity rx6600 with 4 x 1.6 GHz Intel Itanium2 9000 Dual-Core processors and 32 GB memory&lt;BR&gt;1 x HP StorageWorks EVA 8100&lt;br /&gt;&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;16&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;68.07&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps9-na-pay-9_ora_hp_rx6600.pdf"&gt;317,320&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This is all public information. Feel free to compare the hardware configurations and the data presented in both of the rows and draw your own conclusions. Since both Sun and HP used the same benchmark toolkit, workload and ran the benchmark with the same number of job streams, comparison should be pretty straight forward.&lt;br /&gt;&lt;br /&gt;If you want to compare the 8 stream results, check the other blog entry: &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_north_american_payroll_on"&gt;PeopleSoft North American Payroll on Sun Solaris with F5100 Flash Array : A blog Reprise&lt;/a&gt;. Sun used the same hardware to run both benchmark tests with 8 and 16 streams respectively. We could have gotten away with 20+ Flash Modules (FMODs), but we want to keep the benchmark environment consistent with our prior benchmark effort around the same benchmark workload with 8 job streams. Due to the same hardware setup, now we can easily demonstrate the advantage of parallelism (&lt;i&gt;simply by comparing the test results from 8 and 16 stream benchmarks&lt;/i&gt;) and how resilient and scalable the F5100 Flash array is.&lt;br /&gt;&lt;br /&gt;Our benchmarks showed an improvement of ~55% in overall throughput when the number of job streams were increased from 8 to 16. Also our 16 stream results showed ~55% improvement in overall throughput over HP's published results with the same number of streams at a maximum average CPU utilization of 45% compared to HP's maximum average CPU utilization of 89%. The half populated Sun Storage F5100 Flash Array played the key role in both of those benchmark efforts by demonstrating superior I/O performance over the traditional disk based arrays.&lt;br /&gt;&lt;br /&gt;Before concluding, I would like to highlight a few known facts (just for the benefit of those people who may fall for the PR trickery):&lt;br /&gt;&lt;ol&gt;&lt;li&gt; 8 job streams != 16 job streams. In other words, the results from an 8 stream effort is not comparable to that of a 16 stream result.&lt;br /&gt;&lt;li&gt; The throughput should go up with increased number of job streams [ only up to some extent -- do not forget that there will be a saturation point for everything ]. For example, the throughput with 16 streams might be higher compared to the 8 stream throughput.&lt;br /&gt;&lt;li&gt; The &lt;a href="http://en.wikipedia.org/wiki/Diminishing_returns"&gt;Law of Diminishing Returns&lt;/a&gt; applies to the software world too, not just for the economics. So, there is no guarantee that the throughput will be much better with 24 or 32 job streams.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Other blog posts and documents of interest:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; &lt;a href="https://www.sun.com/offers/details/peoplesoft_enterprise_payroll.xml"&gt;Best Practices for Oracle PeopleSoft Enterprise Payroll for North America using the Sun Storage F5100 Flash Array or Sun Flash Accelerator F20 PCIe Card&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS9-NA-PAY-9_ORA_Sun_M4000.pdf"&gt; PeopleSoft Enterprise Payroll 9.0 using Oracle for Solaris on a Sun SPARC Enterprise M4000&lt;/a&gt; (8 streams benchmark white paper)&lt;br /&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_north_american_payroll_on"&gt;PeopleSoft North American Payroll on Sun Solaris with F5100 Flash Array : A blog Reprise&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://www.c0t0d0s0.org/archives/6021-App-benchmarks,-incorrect-conclusions-and-the-Sun-Storage-F5100.html"&gt;App benchmarks, incorrect conclusions and the Sun Storage F5100&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/BestPerf/entry/oracle_peoplesoft_payroll_sun_sparc"&gt;Oracle PeopleSoft Payroll (NA) Sun SPARC Enterprise M4000 and Sun Storage F5100 World Record Performance&lt;/a&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Notes:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="stevea"&gt;[1]&lt;/a&gt; Steve A. tried so hard and his best to make everyone else believe that HP's 16 job stream NA Payroll 240K EE benchmark results are on par with Sun's 8 stream benchmark results. Apparently Steve A. failed and gave up after we showed the world a few screenshots from a published and eventually withdrawn benchmark [ &lt;i&gt;by HP&lt;/i&gt; ]. You can read all his arguments, comparisons etc., in the comments section of my other blog entry &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_north_american_payroll_on"&gt;PeopleSoft North American Payroll on Sun Solaris with F5100 Flash Array : A blog Reprise&lt;/a&gt; as well as in &lt;a href="http://www.c0t0d0s0.org/archives/6021-App-benchmarks,-incorrect-conclusions-and-the-Sun-Storage-F5100.html"&gt;Joerg Moellenkamp&lt;/a&gt;'s blog entries around the same topic.&lt;br /&gt;&lt;br /&gt;&lt;a name="notes2"&gt;[2]&lt;/a&gt; In PeopleSoft terminology, a job stream is something that is equivalent to a thread.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-4737373503701481239?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/4737373503701481239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=4737373503701481239' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/4737373503701481239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/4737373503701481239'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2010/01/peoplesoft-na-payroll-240k-ee-benchmark.html' title='PeopleSoft NA Payroll 240K EE Benchmark with 16 Job Streams : Another Home Run for Sun'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-6732429067707542215</id><published>2009-12-30T08:37:00.000-08:00</published><updated>2009-12-30T09:07:52.904-08:00</updated><title type='text'>Accessing MySQL Database(s) from StarOffice / OpenOffice.org Suite of Applications</title><content type='html'>This blog post is organized into two major sections and several sub-sections. The major sections focus on the tasks to be performed at the MySQL server and the *Office client while the sub-sections talk about the steps to be performed in detail.&lt;br /&gt;&lt;br /&gt;To show the examples in this exercise, we will be creating a new MySQL database user with user ID &lt;b&gt;SOUSER&lt;/b&gt;. This new user will be granted read-only access to couple of tables in a MySQL database called &lt;b&gt;ISVe&lt;/b&gt;. The database can be accessed from any host in the network. &lt;i&gt;ben10.sfbay&lt;/i&gt; is the hostname of the MySQL server.&lt;br /&gt;&lt;H3&gt;&lt;font color="#660033"&gt;Tasks to be Performed at the MySQL Server&lt;/font&gt;&lt;/H3&gt;&lt;br /&gt;This section is intended only for the MySQL Server Administrators. If you are an end-user, skip ahead to &lt;a href="#clientsteps"&gt;Tasks to be Performed at the Client side&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Create a new MySQL user and grant required privileges.&lt;br /&gt;&lt;br /&gt;eg.,&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% &lt;b&gt;mysql -u root -p&lt;/b&gt;&lt;br /&gt;Enter password: *****&lt;br /&gt;Server version: 5.1.25-rc-standard Source distribution&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;mysql&gt; &lt;b&gt;CREATE USER SOUSER IDENTIFIED BY 'SOUSER';&lt;/b&gt;&lt;br /&gt;Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; show grants for SOUSER;&lt;br /&gt;+-------------------------------------------------------------------------------------------------------+&lt;br /&gt;| Grants for SOUSER@%                                                                                   |&lt;br /&gt;+-------------------------------------------------------------------------------------------------------+&lt;br /&gt;| GRANT USAGE ON *.* TO 'SOUSER'@'%' IDENTIFIED BY PASSWORD '*8370607DA2602E52F463FF3B2FFEA53E81B9314C' | &lt;br /&gt;+-------------------------------------------------------------------------------------------------------+&lt;br /&gt;1 row in set (0.00 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; &lt;b&gt;USE ISVe;&lt;/b&gt;&lt;br /&gt;Database changed&lt;br /&gt;&lt;br /&gt;mysql&gt; show tables;&lt;br /&gt;+--------------------------+&lt;br /&gt;| Tables_in_ISVe           |&lt;br /&gt;+--------------------------+&lt;br /&gt;| CustomReport             | &lt;br /&gt;| CustomSQL                | &lt;br /&gt;| &lt;i&gt;ISVeOldProjects&lt;/i&gt;          | &lt;br /&gt;| ISVeOrg                  | &lt;br /&gt;| ISVeProject              | &lt;br /&gt;| ISVeProjectExecution     | &lt;br /&gt;| ISVeProjectGoalAlignment | &lt;br /&gt;| ISVeProjectMiscInfo      | &lt;br /&gt;| ISVeProjectScoping       | &lt;br /&gt;| ISVeProjectStatus        | &lt;br /&gt;| &lt;i&gt;ISVeProjects&lt;/i&gt;             | &lt;br /&gt;| ISVeProjectsVW           | &lt;br /&gt;| ISVeSearchLog            | &lt;br /&gt;| LastRefreshed            | &lt;br /&gt;+--------------------------+&lt;br /&gt;14 rows in set (0.00 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; &lt;b&gt;GRANT SELECT ON ISVe.ISVeOldProjects TO 'SOUSER'@'%';&lt;/b&gt;&lt;br /&gt;Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; &lt;b&gt;GRANT SELECT ON ISVe.ISVeProjects TO 'SOUSER'@'%';&lt;/b&gt;&lt;br /&gt;Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; show grants for SOUSER;&lt;br /&gt;+-------------------------------------------------------------------------------------------------------+&lt;br /&gt;| Grants for SOUSER@%                                                                                   |&lt;br /&gt;+-------------------------------------------------------------------------------------------------------+&lt;br /&gt;| GRANT USAGE ON *.* TO 'SOUSER'@'%' IDENTIFIED BY PASSWORD '*8370607DA2602E52F463FF3B2FFEA53E81B9314C' | &lt;br /&gt;| GRANT SELECT ON `ISVe`.`ISVeOldProjects` TO 'SOUSER'@'%'                                              | &lt;br /&gt;| GRANT SELECT ON `ISVe`.`ISVeProjects` TO 'SOUSER'@'%'                                                 | &lt;br /&gt;+-------------------------------------------------------------------------------------------------------+&lt;br /&gt;3 rows in set (0.00 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; quit&lt;br /&gt;Bye&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Check the database connectivity and the accessibility from a remote location.&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% &lt;b&gt;mysql -h ben10.sfbay -D ISVe -u SOUSER -pSOUSER&lt;/b&gt;&lt;br /&gt;Server version: 5.1.25-rc-standard Source distribution&lt;br /&gt;&lt;br /&gt;mysql&gt; &lt;b&gt;show tables;&lt;/b&gt;&lt;br /&gt;+-----------------+&lt;br /&gt;| Tables_in_ISVe  |&lt;br /&gt;+-----------------+&lt;br /&gt;| ISVeOldProjects |&lt;br /&gt;| ISVeProjects    |&lt;br /&gt;+-----------------+&lt;br /&gt;2 rows in set (0.03 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; select count(*) from ISVeOldProjects;&lt;br /&gt;+----------+&lt;br /&gt;| count(*) |&lt;br /&gt;+----------+&lt;br /&gt;|     2880 |&lt;br /&gt;+----------+&lt;br /&gt;1 row in set (0.04 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; select count(*) from ISVeProjects;&lt;br /&gt;+----------+&lt;br /&gt;| count(*) |&lt;br /&gt;+----------+&lt;br /&gt;|     4967 |&lt;br /&gt;+----------+&lt;br /&gt;1 row in set (0.33 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; delete from ISVeOldProjects;&lt;br /&gt;&lt;font color="red"&gt;ERROR 1142 (42000): DELETE command denied to user 'SOUSER'@'vpn-192-155-222-19.SFBay.Sun.COM' for table 'ISVeOldProjects'&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;mysql&gt; delete from ISVeProjects;&lt;br /&gt;&lt;font color="red"&gt;ERROR 1142 (42000): DELETE command denied to user 'SOUSER'@'vpn-192-155-222-19.SFBay.Sun.COM' for table 'ISVeProjects'&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;mysql&gt; quit&lt;br /&gt;Bye&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;H3&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;a name="clientsteps"&gt;&lt;font color="#660033"&gt;Tasks to be Performed at the Client side (&lt;i&gt;End-User's Workstation&lt;/i&gt;)&lt;/font&gt;&lt;/a&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;/H3&gt;&lt;br /&gt;StarOffice and OpenOffice suite of applications can access the MySQL Server using JDBC or native drivers.&lt;br /&gt;&lt;br /&gt;MySQL &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/connector-j.html"&gt;Connector/J&lt;/a&gt; is a platform independent JDBC Type 4 driver that is developed specifically to connect to a MySQL database. Using Connector/J, it is possible to connect to &lt;i&gt;almost&lt;/i&gt; any version of MySQL Server from any version of StarOffice or OpenOffice.org&lt;br /&gt;&lt;br /&gt;Sun|MySQL recently developed a native MySQL driver to facilitate connecting from StarOffice / OpenOffice.org suite of applications to a MySQL database. The new native driver is called MySQL &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/connector-ooo.html"&gt;Connector/OpenOffice.org&lt;/a&gt;. However the current version of the MySQL Connector for OO.o is compatible only with OpenOffice 3.1, StarOffice 9.1 or newer and it can connect only to MySQL Server 5.1 or later versions. This native connector is supposed to be faster in comparison with the Java connector.&lt;br /&gt;&lt;br /&gt;We will explore both MySQL connectors in this section.&lt;br /&gt;&lt;br /&gt;Note:&lt;BR&gt;&lt;br /&gt;As an end user, you need not be concerned about the internal workings of these MySQL connectors. You just need to worry about installing and configuring the drivers so the *Office applications can connect to the MySQL database in a seamless fashion.&lt;br /&gt;&lt;br /&gt;&lt;a name="connectorj"&gt;&lt;H4&gt;&lt;font color="#006666"&gt;I. Connector/J approach&lt;/font&gt;&lt;/H4&gt;&lt;/a&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; &lt;b&gt;Installation steps for MySQL Connector/J&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Using the following navigation, find the location of the JRE that is being used by StarOffice / OpenOffice.org&lt;br /&gt;&lt;br /&gt;&lt;ul type="circle"&gt;&lt;br /&gt;&lt;li&gt; Launch StarOffice / OpenOffice.org&lt;br /&gt;&lt;li&gt; Tools Menu -&gt; Options&lt;br /&gt;&lt;li&gt; In the 'Options' window, StarOffice / OpenOffice.org -&gt; Java&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Here is a sample screen capture from a Mac running StarOffice 9.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/JRE_Location_SO.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;In the above example, /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home is the location of the JRE. Here onwards, this location will be referred as JRE_HOME.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; Download the connector from the following web page:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://dev.mysql.com/downloads/connector/j/"&gt;http://dev.mysql.com/downloads/connector/j/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As of this writing, 5.1.10 is the current version for Connector/J&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Extract the driver and the rest of the files from the compressed [downloaded] archive&lt;br /&gt;&lt;br /&gt;eg.,&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% &lt;b&gt;gunzip -c mysql-connector-java-5.1.10.tar.gz | tar -xvf -&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Locate the jar file that contains the driver --- mysql-connector-java-5.1.10-bin.jar, and copy it into the &amp;lt;JRE_HOME&gt;/lib/ext directory with 'root' privileges.&lt;br /&gt;&lt;br /&gt;eg.,&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% &lt;b&gt;sudo cp mysql-connector-java-5.1.10-bin.jar /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;% ls -l /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/*connector*jar&lt;br /&gt;/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/mysql-connector-java-5.1.10-bin.jar&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Restart StarOffice / OpenOffice.org&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;This concludes the installation of MySQL Connector/J.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Configuration steps for Connector/J&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; Launch StarOffice / OpenOffice.org&lt;br /&gt;&lt;br /&gt;&lt;li&gt; In the Welcome screen, click on "Database". A database wizard pops up to help us create, open or connect to an existing database from StarOffice / OpenOffice.org.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Since our main interest is only to connect to an existing database in this exercise, click on "Connect to an existing database" radio button and select "MySQL" from the drop-down menu that is underneath the selected radio button.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/StarOffice_MySQL_SelectDB.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Click on "Next &gt;&gt;" button&lt;br /&gt;&lt;br /&gt;&lt;li&gt; In the next screen, select JDBC by clicking on "Connect using JDBC (Java Database Connectivity)" radio button&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/StarOffice_MySQL_JDBCconnectivity.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Click on "Next &gt;&gt;" button&lt;br /&gt;&lt;br /&gt;&lt;li&gt; In "Set up connection to a MySQL database using JDBC" screen, provide the name of the database, hostname or IP address of the MySQL database server (&lt;i&gt;server URL&lt;/i&gt;) that you want to connect to along with the port# on which the MySQL server is actively listening for new database connections.&lt;br /&gt;&lt;br /&gt;MySQL JDBC driver class text field will be automatically filled with the string &lt;code&gt;&lt;font size="4"&gt;com.mysql.jdbc.Driver&lt;/font&gt;&lt;/code&gt;. Leave that string intact, and click on "Test Class" button to make sure that the relevant class can be loaded with no issues. Unless the driver class is loaded successfully, you will not be able to connect to the MySQL database. In case of unsuccessful class loading, double check the installation steps for MySQL Connector/J.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/StarOffice_MySQL_SettingUpJDBCconn.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Click on "Next &gt;&gt;" button&lt;br /&gt;&lt;br /&gt;Note:&lt;BR&gt;&lt;br /&gt;In the above screenshot, notice that the "Name of the database" was filled with &lt;code&gt;&lt;font size="3"&gt;ISVe?zeroDateTimeBehavior=convertToNull&lt;/font&gt;&lt;/code&gt; (&lt;i&gt;It is not completely visible in the above screen capture, but you just have to believe me&lt;/i&gt;). In this example, &lt;code&gt;&lt;font size="4"&gt;ISVe&lt;/font&gt;&lt;/code&gt; is the database name and &lt;code&gt;&lt;font size="4"&gt;zeroDateTimeBehavior&lt;/font&gt;&lt;/code&gt; is the configuration property which was set to a value of &lt;code&gt;&lt;font size="4"&gt;convertToNull&lt;/font&gt;&lt;/code&gt;. Without this configuration property, Connector/J throws an exception when it encounters date values such as &lt;code&gt;0000-00-00&lt;/code&gt;. In such cases, the error message will be something similar to &lt;code&gt;&lt;font color="red" size="4"&gt;java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date&lt;/font&gt;&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Configuration properties define how Connector/J will make a connection to a MySQL server. The list of Connector/J configuration properties are documented in the following web page:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html"&gt;http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you have more than one configuration property, you can define all of those properties in the "Name of the database" field. The syntax would be:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;MySQL_DB_Name&gt;?&amp;lt;Config_Property1=Value&gt;&amp;&amp;lt;Config_Property2=Value&gt;&amp;..&amp;&amp;lt;Config_Property&lt;i&gt;n&lt;/i&gt;=Value&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Provide the database user name and the password details in "Set up the user authentication" screen. Click on "Password required" check box if there is a password setup for the database user.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/StarOffice_ConnectorJ_Authentication.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Click on "Test Connection" button to ensure a successful connection to the MySQL database using the credentials provided in this window.&lt;br /&gt;&lt;br /&gt;Click on "Next &gt;&gt;" button&lt;br /&gt;&lt;br /&gt;&lt;li&gt; In the final screen, simply accept the default values and click on 'Finish' button.&lt;br /&gt;&lt;br /&gt;"Yes, register the database for me" and "Open the database for edition" are the defaults selected in this screen.&lt;br /&gt;&lt;br /&gt;When you click on the 'Finish' button, you will be prompted to provide a name to the database to save it as a file on your local machine. The saved file contains information about the database including the queries, reports and forms that are linked to the MySQL database. The actual data remain in the MySQL database. Hence you need not worry about the size of the file that is being saved on your local machine. It will be small in size.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/StarOffice_MySQL_FinalScreen.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Ultimately the Database area of the Base main window appears as shown in the following screen capture.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/StarOffice_MySQL_Tables.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Notice the RDBMS name, Type of Connectivity, MySQL Database Name along with the configuration properties, Database user name and the Database server hostname at the bottom of the window.&lt;br /&gt;&lt;br /&gt;You will be able to query the database, create new forms/reports etc., from this window. Unfortunately discussion around those topics is beyond the scope of this blog post - so, we will stop here.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/ol&gt;&lt;hr color="#cccccc" noshade="noshade" size="0"&gt;&lt;H4&gt;&lt;font color="#003333"&gt;II Connector/OpenOffice.org approach&lt;/font&gt;&lt;/H4&gt;&lt;br /&gt;MySQL Connector for OpenOffice.org is a MySQL driver for OpenOffice suite of applications. Even though it appears to be a native driver, MySQL Connector/OpenOffice.org has no implementation for the MySQL Client Server protocol. It is in reality a proxy on the top of MySQL Connector for C++ aka &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/connector-cpp.html"&gt;MySQL Connector/C++&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Unlike MySQL Connector/J, Connector/OpenOffice.org has no dependency on JRE, and it can easily be installed using the OpenOffice.org Extension Manager. Due to the underlying native code, Connector/OpenOffice.org &lt;i&gt;may&lt;/i&gt; outperform Connector/J in performance.&lt;br /&gt;&lt;br /&gt;1. Installation steps for MySQL Connector/OpenOffice.org&lt;br /&gt;&lt;br /&gt;Before installing the connector, make sure that you have OpenOffice.org 3.1 [or later] -OR- StarOffice 9.1 [or later] suite installed, and the version of the MySQL server on which the database is hosted is at least 5.1. If any of these requirements are not met, skip this entire section and check the &lt;a href="#connectorj"&gt;I. Connector/J approach&lt;/a&gt; for the instructions that may work with your current versions of StarOffice / OpenOffice and MySQL server.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; Download the connector for your platform from the following location:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://extensions.services.openoffice.org/project/mysql_connector"&gt;http://extensions.services.openoffice.org/project/mysql_connector&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Launch StarOffice / OpenOffice.org&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Bring up the "Extension Manager" by clicking on Tools Menu -&gt; Extension Manager ...&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Click on "Add" button, then locate the OpenOffice connector that you downloaded in step #1 (see two steps above). Click on "Open" button. The name of the connector will be something similar to &lt;i&gt;mysql-connector-ooo-....oxt&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Choose appropriate response to the question "For whom do you want to install the extension?". In this example, I chose the option "Only for me".&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Read the "Extension Software License Agreement" and accept the agreement to install the Connector/OpenOffice.org as an extension to StarOffice / OpenOffice.org&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/OpenOffice_ConnectorOOo_Extension.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Restart StarOffice / OpenOffice.org to complete the installation.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Configuration steps for MySQL Connector/OpenOffice.org&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; Launch StarOffice / OpenOffice.org&lt;br /&gt;&lt;br /&gt;&lt;li&gt; In the Welcome screen, click on "Database". A database wizard pops up to help us create, open or connect to an existing database from StarOffice / OpenOffice.org.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Since our main interest is only to connect to an existing database in this exercise, click on "Connect to an existing database" radio button and select "MySQL" from the drop-down menu that is underneath the selected radio button.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/OpenOffice_ConnectorOOo_SelectDatabaseType.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Click on "Next &gt;&gt;" button&lt;br /&gt;&lt;br /&gt;&lt;li&gt; In the next screen, select "Connect native" radio button&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/OpenOffice_ConnectorOOo_Native.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Click on "Next &gt;&gt;" button&lt;br /&gt;&lt;br /&gt;&lt;li&gt; In "Set up connection to a MySQL database" screen, provide the name of the database, hostname or IP address of the MySQL database server (&lt;i&gt;server URL&lt;/i&gt;) that you want to connect to along with the port# on which the MySQL server is actively listening for new database connections. If the MySQL Server is running on the same machine as that of the StarOffice / OpenOffice.org application, you can provide the location of the socket under "Socket" field. If not, leave it blank.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/OpenOffice_ConnectorOOo_DBserver_Details.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Click on "Next &gt;&gt;" button&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Provide the database user name and the password details in "Set up the user authentication" screen. Click on "Password required" check box if there is a password setup for the database user.&lt;br /&gt;&lt;br /&gt;Click on "Test Connection" button to ensure a successful connection to the MySQL database using the credentials provided in this window.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/OpenOffice_ConnectorOOo_Authentication_setup.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Click on "Next &gt;&gt;" button&lt;br /&gt;&lt;br /&gt;&lt;li&gt; In the final screen, simply accept the default values and click on 'Finish' button.&lt;br /&gt;&lt;br /&gt;"Yes, register the database for me" and "Open the database for edition" are the defaults selected in this screen.&lt;br /&gt;&lt;br /&gt;When you click on the 'Finish' button, you will be prompted to provide a name to the database to save it as a file on your local machine. The saved file contains information about the database including the queries, reports and forms that are linked to the MySQL database. The actual data remain in the MySQL database. Hence you need not worry about the size of the file that is being saved on your local machine. It will be small in size.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/StarOffice_MySQL_FinalScreen.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Ultimately the Database area of the Base main window appears as shown in the following screen capture.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/Office_MySQL/OpenOffice_ConnectorOOo_DBwindow.png" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Notice the RDBMS name, Type of Connectivity, MySQL Database Name along with the configuration properties, Database user name and the Database server hostname at the bottom of the window.&lt;br /&gt;&lt;br /&gt;You will be able to query the database, create new forms/reports etc., from this window. Unfortunately discussion around those topics is beyond the scope of this blog post - so, we will stop here.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;That is all there is to it in installing and configuring the MySQL connectors for *Office suite of applications. Now enjoy the flexibility of fetching the data from your favorite office productivity software.&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Original blog post is at the following location:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/setting_up_staroffice_openoffice_org"&gt;http://blogs.sun.com/mandalika/entry/setting_up_staroffice_openoffice_org&lt;/a&gt;&lt;/i&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-6732429067707542215?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/6732429067707542215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=6732429067707542215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6732429067707542215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6732429067707542215'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/12/accessing-mysql-databases-from.html' title='Accessing MySQL Database(s) from StarOffice / OpenOffice.org Suite of Applications'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-2122237005238273339</id><published>2009-11-29T22:59:00.001-08:00</published><updated>2009-11-29T23:03:50.482-08:00</updated><title type='text'>PeopleSoft North American Payroll on Sun Solaris with F5100 Flash Array : A blog Reprise</title><content type='html'>(&lt;i&gt;Copied from my other blog at blogs.sun.com. Original post is at: &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_north_american_payroll_on"&gt;http://blogs.sun.com/mandalika/entry/peoplesoft_north_american_payroll_on&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;During the "&lt;i&gt;Sun&lt;/i&gt; day" keynote at OOW 09, John Fowler stated that we are #1 in PeopleSoft North American Payroll performance. Later Vince Carbone from our Performance Technologies group went on comparing our benchmark numbers with HP's and IBM's in BestPerf's group blog at &lt;a href="http://blogs.sun.com/BestPerf/entry/oracle_peoplesoft_payroll_sun_sparc"&gt;Oracle PeopleSoft Payroll (NA) Sun SPARC Enterprise M4000 and Sun Storage F5100 World Record Performance&lt;/a&gt;. Meanwhile Jeorg Moellenkamp had been clarifying few things in his blog at &lt;a href="http://www.c0t0d0s0.org/archives/6021-App-benchmarks,-incorrect-conclusions-and-the-Sun-Storage-F5100.html"&gt;App benchmarks, incorrect conclusions and the Sun Storage F5100&lt;/a&gt;. Interestingly it all happened while we have no concrete evidence in our hands to show to the outside world. We got our benchmark results validated right before the Oracle OpenWorld, which gave us the ability to speak about it publicly [ and we used it to the extent we could use ]. However Oracle folks were busy with their scheduled tasks for OOW 09 and couldn't work on the benchmark results white paper until now. Finally the white paper with the NA Payroll benchmark results is available on Oracle Applications benchmark web site. Here is the URL:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS9-NA-PAY-9_ORA_Sun_M4000.pdf"&gt;PeopleSoft Enterprise Payroll 9.0 using Oracle for Solaris on a Sun SPARC Enterprise M4000&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once again the summary of results is shown below but in a slightly different format. These numbers were extracted from the very first page of the benchmark results white papers where PeopleSoft usually highlights the significance of the results and the actual numbers that they are interested in. The results are sorted by the hourly throughput (payments/hour) in the descending order. The goal is to achieve as much hourly throughput as possible. Since there is one 16 stream result as well in the following table, exercise caution when comparing 8 stream results with 16 stream results. In general, 16 parallel job streams are supposed to yield better throughput when compared to 8 parallel job streams. Hence comparing a 16 stream number with an 8 stream number is not an exact apple-to-apple comparison. It is more like comparing an apple to another apple that is half in size. Click on the link that is underneath the hourly throughput values to open corresponding benchmark result.&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="7" cellspacing="2" width="100%"&gt;&lt;caption&gt;Oracle PeopleSoft North American Payroll 9.0 - Number of employees: &lt;b&gt;240,000&lt;/b&gt; &amp; Number of payments: &lt;b&gt;360,000&lt;/b&gt;&lt;/caption&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th bgcolor="#c7c7f9" width="5%"&gt;Vendor&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="10%"&gt;OS&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="45%"&gt;Hardware Config&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="10%"&gt;#Job Streams&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="15%"&gt;Elapsed Time (min)&lt;/th&gt;&lt;th bgcolor="#c7c7f9" width="15%"&gt;Hourly Throughput&lt;BR&gt;Payments per Hour&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;Sun&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;Solaris 10 5/09&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;1x Sun SPARC Enterprise M4000 with 4 x 2.53 GHz SPARC64-VII Quad-Core processors and 32 GB memory&lt;BR&gt;1 x Sun Storage F5100 Flash Array with 40 Flash Modules for data, indexes&lt;BR&gt;1 x Sun Storage J4200 Array for redo logs&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;8&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;67.85&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS9-NA-PAY-9_ORA_Sun_M4000.pdf"&gt;318,349&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;HP&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;HP-UX&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;1 x HP Integrity rx6600 with 4 x 1.6 GHz Intel Itanium2 9000 Dual-Core processors and 32 GB memory&lt;BR&gt;1 x HP StorageWorks EVA 8100&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;16&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;68.07&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps9-na-pay-9_ora_hp_rx6600.pdf"&gt;317,320&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;HP&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;HP-UX&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;1 x HP Integrity rx6600 with 4 x 1.6 GHz Intel Itanium2 9000 Dual-Core processors and 32 GB memory&lt;BR&gt;1 x HP StorageWorks EVA 8100&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;8&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;89.77&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;240,615&lt;sup&gt;&lt;a href="#missing"&gt;*&lt;/a&gt;&lt;/sup&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;IBM&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;z/OS&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;1 x IBM zSeries 990 model 2084-B16 with 313 Feature with 6 x IBM z990 Gen1 processors (populated: 13, used: 6) and 32 GB memory&lt;BR&gt;1 x IBM TotalStorage DS8300 with dual 4-way processors&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;8&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;91.7&lt;/td&gt;&lt;td align="center" bgcolor="#E8E8E8"&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps9-na-pay-9_db2_ibm_z990.pdf"&gt;235,551&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;This is all public information -- so, feel free to draw your own conclusions. &lt;a name="missing"&gt;&lt;sup&gt;*&lt;/sup&gt;&lt;/a&gt;At this time of writing, HP's 8 stream results were pulled out of Oracle Applications benchmark web site for some reason I do not know why. Hopefully it will show up again on the same web site soon. If it doesn't re-appear even after a month, probably we can simply assume that the result is withdrawn.&lt;br /&gt;&lt;br /&gt;As these benchmark results were already discussed by different people in different blogs, I have nothing much to add. The only thing that I want to highlight is that this particular workload is moderately CPU intensive, but very I/O bound. Hence the better the I/O sub-system, the better the performance. Vince provided an insight on &lt;a href="http://blogs.sun.com/BestPerf/entry/why_sun_storage_f5100_is"&gt;Why Sun Storage F5100 is a good option&lt;/a&gt; for this workload, while Jignesh Shah from our ISV-Engineering organization focused on the performance of this benchmark workload with &lt;a href="http://blogs.sun.com/jkshah/entry/accelerate_your_payroll_performance_with"&gt;F20 PCIe Card&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also when dealing with NA Payroll, it is very unlikely to achieve a nice out-of-the-box performance. It requires a lot of database tuning too. As the data sets are very large, we partitioned the data in some of the very hot objects and it showed good improvement in query response times. So if you are a PeopleSoft customer running Payroll application with millions of rows of non-partitioned data, consider partitioning the data. We are currently working on a best practices blueprint document for PeopleSoft North American Payroll that presents a variety of tuning tips like these in addition to the recommended practices for F5100 flash array and flash accelerator F20 PCIe card. Stay tuned ..&lt;br /&gt;&lt;br /&gt;Related Blog Post:&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_hrms_8_9_self"&gt;PeopleSoft HRMS 8.9 Self-Service Benchmark on M3000 &amp; T5120 Servers&lt;/a&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-2122237005238273339?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/2122237005238273339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=2122237005238273339' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2122237005238273339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2122237005238273339'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/11/peoplesoft-north-american-payroll-on.html' title='PeopleSoft North American Payroll on Sun Solaris with F5100 Flash Array : A blog Reprise'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-7595603888710125965</id><published>2009-11-09T01:50:00.000-08:00</published><updated>2009-11-09T01:50:29.890-08:00</updated><title type='text'>Java Code to Convert TWiki URLs to HTML Links</title><content type='html'>Few days ago I was looking for some code or tool with the ability to convert &lt;a href="http://twiki.org"&gt;TWiki&lt;/a&gt; URLs to equivalent HTML URLs. (For the uninitiated, TWiki supports wide variety of URL formats in addition to the standard HTML format.). I spent almost 3 hours searching the web and trying out different code, Java classes etc., But at the end, none of the things that I found elsewhere seems to have the ability to convert almost all the TWiki URL formats that I'm trying to convert [to HTML]. So, I gave up looking for some readymade code and quickly wrote some Java code to resolve the issue that I'm trying to solve.&lt;br /&gt;&lt;br /&gt;Now that I have the code, thought publishing it in my blog would help other people who are looking for something similar to this. So here it is. Download the source code from the following location.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://technopark02.googlepages.com/TwikiToHTML.java"&gt;TwikiToHTML.java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The code assumes that the TWiki system is deployed on http://www.mandalika.com (a fake web site), and is capable of handling the following TWiki URL formats:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;[[http://twiki.etclabs.com/pub/MDE/IsveSeeameRomanIvanovMeraJanuaryTechEval/MeraJanuaryScoping.pdf][MeraJanuaryScoping]]&lt;br /&gt;[[Main.JNetX#April_22nd_2008_Whats_new_at_Sun][report]]&lt;br /&gt;[[Main.RomanIvanovLDomsCheatSheet][Executiontrackingpage]]&lt;br /&gt;[[MDE.IsveBravoJeffTaylorProgressApamaSolarisx64Pott][Link]]&lt;br /&gt;[[IsveSeeameOrgadKimchiIGTvLabProcedures][docs]]&lt;br /&gt;[[http://scweb.france.com/~fparient/pub/europa08solaris.odp][solarisprezo]]&amp;lt;br&gt;[[http://scweb.france.com/~fparient/pub/europa08fx.pdf][fxbenchmark]]&lt;br /&gt;[[OmalleyDataProject]]&lt;br /&gt;[[http://twiki.etclabs.com/bin/view/Main/MySQL64NvPlan][Plan]],[[http://twiki.etclabs.com/bin/view/Main/IntegrateSFW][Detail]]&lt;br /&gt;MDE.IsveAlphaBogdanVasiliuSynopsysVCSPerformanceOptimization&lt;br /&gt;http://sidc.israel.com/~mk147459/Reports/ana.html&lt;br /&gt;SofCheck&lt;br /&gt;&amp;lt;a href="http://twiki.org"&gt;twiki&amp;lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Sample inputs and outputs:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% &lt;b&gt;java TwikiToHTML&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: NotSoPl@inY0uKnow&lt;br /&gt;HTTP equivalent:&lt;br /&gt;&lt;br /&gt;TWiki URL: ItIsJustplain&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/ItIsJustplain" target="_new"&gt;ItIsJustplain&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: GiriK@lyanaChakravarth!&lt;br /&gt;HTTP equivalent:&lt;br /&gt;&lt;br /&gt;TWiki URL: &amp;ampersand&lt;br /&gt;HTTP equivalent:&lt;br /&gt;&lt;br /&gt;TWiki URL: Harisha&lt;br /&gt;HTTP equivalent:&lt;br /&gt;&lt;br /&gt;TWiki URL: Janaki Lakshmi&lt;br /&gt;HTTP equivalent:&lt;br /&gt;&lt;br /&gt;TWiki URL: JanakiLakshmi&lt;br /&gt;HTTP equivalent:&lt;br /&gt;&lt;br /&gt;TWiki URL: [[OmalleyDataProject]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/OmalleyDataProject" target="_new"&gt;OmalleyDataProject&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[Giri][Mandalika]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/Giri" target="_new"&gt;Mandalika&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[Giri][Mandalika]], [[Kalyana][Chakravarthy]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/Giri" target="_new"&gt;Mandalika&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/Kalyana" target="_new"&gt;Chakravarthy&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[Giri][Mandalika]], [[Kalyana][Chakravarthy]], [[IsveSeeameOrgadKimchiIGTvLabProcedures][docs]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/Giri" target="_new"&gt;Mandalika&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/Kalyana" target="_new"&gt;Chakravarthy&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/IsveSeeameOrgadKimchiIGTvLabProcedures" target="_new"&gt;docs&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[Giri][Mandalika]], [[Kalyana][Chakravarthy]], [[IsveSeeameOrgadKimchiIGTvLabProcedures][docs]], [[OmalleyDataProject][Omalley]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/Giri" target="_new"&gt;Mandalika&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/Kalyana" target="_new"&gt;Chakravarthy&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/IsveSeeameOrgadKimchiIGTvLabProcedures" target="_new"&gt;docs&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/Downloads/OmalleyDataProject" target="_new"&gt;Omalley&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: http://sidc.israel.etclabs.com/~mk147459/Reports/ana.html&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://sidc.israel.etclabs.com/~mk147459/Reports/ana.html" target="_new"&gt;ana.html&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: http://sidc.israel.etclabs.com/~mk147459/Reports/ana.html,http://technopark02.blogspot.com&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://sidc.israel.etclabs.com/~mk147459/Reports/ana.html" target="_new"&gt;ana.html&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://technopark02.blogspot.com" target="_new"&gt;technopark02.blogspot.com&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[http://www.mandalika.com/pub/MDE/IsveSeeameRomanIvanovMeraJanuaryTechEval/MeraJanuaryScoping.pdf][MeraJanuaryScoping]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/pub/MDE/IsveSeeameRomanIvanovMeraJanuaryTechEval/MeraJanuaryScoping.pdf" target="_new"&gt;MeraJanuaryScoping&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[http://www.mandalika.com/bin/view/Main/RomanIvanovRStyleSoftlabRSBankV6][execution details]] &amp;lt;BR&gt; [[http://www.mandalika.com/bin/view/Main/OracleRAConLDom][OracleRAConLDom]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Main/RomanIvanovRStyleSoftlabRSBankV6" target="_new"&gt;execution details&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/Main/OracleRAConLDom" target="_new"&gt;OracleRAConLDom&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[http://www.mandalika.com/pub/ISVeProjects/ISVeProject20080213161851/Project20080213161851scoping.odt][scoping document]] , [[http://www.mandalika.com/pub/MDE/IsveSeeameRomanIvanovMeraJanuaryTechEval/MeraJanuaryScoping.pdf][MeraJanuaryScoping]] &amp;lt;BR&gt; [[http://sidc.israel.etclabs.com/~ok134283/techeval/snooggie.html][techeval]] , [[http://sidc.israel.etclabs.com/~ok134283/techeval/servision.html][techeval]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/pub/ISVeProjects/ISVeProject20080213161851/Project20080213161851scoping.odt" target="_new"&gt;scoping document&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/pub/MDE/IsveSeeameRomanIvanovMeraJanuaryTechEval/MeraJanuaryScoping.pdf" target="_new"&gt;MeraJanuaryScoping&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://sidc.israel.etclabs.com/~ok134283/techeval/snooggie.html" target="_new"&gt;techeval&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://sidc.israel.etclabs.com/~ok134283/techeval/servision.html" target="_new"&gt;techeval&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[Main.RomanIvanovLDomsCheatSheet][Execution tracking page]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Main/RomanIvanovLDomsCheatSheet" target="_new"&gt;Execution tracking page&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[MDE.IsveBravoJeffTaylorProgressApamaSolarisx64Pott][Link]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/MDE/IsveBravoJeffTaylorProgressApamaSolarisx64Pott" target="_new"&gt;Link&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[Main.JNetX#April_22nd_2008_Whats_new_at_Sun][report]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Main/JNetX#April_22nd_2008_Whats_new_at_Sun" target="_new"&gt;report&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[Main.RomanIvanovLDomsCheatSheet][Execution tracking page]], [[MDE.IsveBravoJeffTaylorProgressApamaSolarisx64Pott][Link]]   &amp;lt;BR&gt;  [[Main.JNetX#April_22nd_2008_Whats_new_at_Sun][report]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Main/RomanIvanovLDomsCheatSheet" target="_new"&gt;Execution tracking page&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/MDE/IsveBravoJeffTaylorProgressApamaSolarisx64Pott" target="_new"&gt;Link&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/Main/JNetX#April_22nd_2008_Whats_new_at_Sun" target="_new"&gt;report&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[http://www.mandalika.com/bin/view/MDE/IsveKylinPDSChinaVolumeISVWorldonline][World-Online]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/MDE/IsveKylinPDSChinaVolumeISVWorldonline" target="_new"&gt;World-Online&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[ISVeProjects.IsveIndividualSummaryCarylTakvorian][Caryl Takvorian]] Tom Duell&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/ISVeProjects/IsveIndividualSummaryCarylTakvorian" target="_new"&gt;Caryl Takvorian&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[http://www.mandalika.com/bin/view/MDE/IsveGANEIndividualSummaryAndrewWalton][Andrew Walton]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/MDE/IsveGANEIndividualSummaryAndrewWalton" target="_new"&gt;Andrew Walton&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[http://etclabswebcollab.east.etclabs.com/gm/folder-1.11.1890618][Project Folder]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://etclabswebcollab.east.etclabs.com/gm/folder-1.11.1890618" target="_new"&gt;Project Folder&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[http://etclabswebcollab.east.etclabs.com/gm/document-1.9.3262994/SUN%25E4%25B8%25BB%25E6%259C%25BAOCS%25E6%2580%25A7%25E8%2583%25BD%25E6%25B5%258B%25E8%25AF%2595%25E6%258A%25A5%25E5%2591%258A.doc][Cust. Report]], [[http://etclabswebcollab.east.etclabs.com/gm/document-1.9.3270163/ocs_perftune_t2000.odt][ISVE Report]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://etclabswebcollab.east.etclabs.com/gm/document-1.9.3262994/SUN%25E4%25B8%25BB%25E6%259C%25BAOCS%25E6%2580%25A7%25E8%2583%25BD%25E6%25B5%258B%25E8%25AF%2595%25E6%258A%25A5%25E5%2591%258A.doc" target="_new"&gt;Cust. Report&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://etclabswebcollab.east.etclabs.com/gm/document-1.9.3270163/ocs_perftune_t2000.odt" target="_new"&gt;ISVE Report&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: MDE.IsveAlphaBogdanVasiliuSynopsysVCSPerformanceOptimization&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/MDE/IsveAlphaBogdanVasiliuSynopsysVCSPerformanceOptimization" target="_new"&gt;IsveAlphaBogdanVasiliuSynopsysVCSPerformanceOptimization&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[Main.RomanIvanovLDomsCheatSheet]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Main/RomanIvanovLDomsCheatSheet" target="_new"&gt;RomanIvanovLDomsCheatSheet&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: MDE.PostgreSQLAutoTune &amp;lt;BR&gt; [[Main.RomanIvanovLDomsCheatSheet]] , MDE.IsveAlphaBogdanVasiliuSynopsysVCSPerformanceOptimization&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/Main/RomanIvanovLDomsCheatSheet" target="_new"&gt;RomanIvanovLDomsCheatSheet&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/MDE/PostgreSQLAutoTune" target="_new"&gt;PostgreSQLAutoTune&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/MDE/IsveAlphaBogdanVasiliuSynopsysVCSPerformanceOptimization" target="_new"&gt;IsveAlphaBogdanVasiliuSynopsysVCSPerformanceOptimization&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[http://www.mandalika.com/bin/view/ISVeProjects/IsveIndividualSummaryMohammedYousuf][Mohammed Yousuf]], Thiagarajan Chandrasekaran&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/ISVeProjects/IsveIndividualSummaryMohammedYousuf" target="_new"&gt;Mohammed Yousuf&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: MDE.IsveDabuboirProsDamienCookeMyStaffMyStaffPostgreSQLAdoption  [[http://twiki.etclabs/pub/MDE/IsveDabuboirProsDamienCookeMyStaffMyStaffPostgreSQLAdoption/MyStaff.html][Project Status]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://twiki.etclabs/pub/MDE/IsveDabuboirProsDamienCookeMyStaffMyStaffPostgreSQLAdoption/MyStaff.html" target="_new"&gt;Project Status&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/MDE/IsveDabuboirProsDamienCookeMyStaffMyStaffPostgreSQLAdoption" target="_new"&gt;IsveDabuboirProsDamienCookeMyStaffMyStaffPostgreSQLAdoption&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: [[http://www.xxx.yyy]], &amp;lt;a href="http://www.xyz.com"&gt;xyz&amp;lt;/a&gt;, http://www.yahoo.com , &amp;lt;a href="www.giril.com"&gt;giri&amp;lt;/a&gt; , [[http://www.harisha.com][harisha]], &amp;lt;a href="www.etclabs.com"&gt;etclabs&amp;lt;/a&gt;&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.xyz.com"&gt;xyz&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="www.giril.com"&gt;giri&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="www.etclabs.com"&gt;etclabs&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.xxx.yyy" target="_new"&gt;www.xxx.yyy&lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.harisha.com" target="_new"&gt;harisha&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.yahoo.com" target="_new"&gt;www.yahoo.com&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: New link YousufCertificationofOracleRAConSolaris10u6Containers ,  old link http://blogs.etclabs.com/rac&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://blogs.etclabs.com/rac" target="_new"&gt;rac&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: attached email.&lt;br /&gt;HTTP equivalent: &lt;br /&gt;&lt;br /&gt;TWiki URL: [[http://www.mandalika.com/bin/view/MDE/Caucho Caucho]] [[http://www.mandalika.com/bin/view/MDE/ISVeProject20070812164315 20070812164315]]&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://www.mandalika.com/bin/view/MDE/Caucho" target="_new"&gt;Caucho&amp;lt;/a&gt;&amp;lt;BR&gt;&amp;lt;a href="http://www.mandalika.com/bin/view/MDE/ISVeProject20070812164315" target="_new"&gt;20070812164315&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TWiki URL: http://download.sap.com/download.epd?context=40E2D9D5E00EEF7CB82813BD3F95797BAEB80527B36EC026E03386D659E4DE48&lt;br /&gt;HTTP equivalent: &amp;lt;a href="http://download.sap.com/download.epd?context=40E2D9D5E00EEF7CB82813BD3F95797BAEB80527B36EC026E03386D659E4DE48" target="_new"&gt;download.epd?context=40E2D9D5E00E ... BAEB80527B36EC026E03386D659E4DE48&amp;lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Disclaimer:&lt;br /&gt;This code is poorly documented, not perfect and most importantly may not even meet the minimum Java coding standards. However it does the intended job with minor modifications. Feel free to use, modify, reproduce or redistribute - but please do not come back complaining. I have no intention of fixing or improving this code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-7595603888710125965?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/7595603888710125965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=7595603888710125965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7595603888710125965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7595603888710125965'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/11/java-code-to-convert-twiki-urls-to-html.html' title='Java Code to Convert TWiki URLs to HTML Links'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-6249687333465232179</id><published>2009-10-14T00:49:00.000-07:00</published><updated>2009-10-14T01:00:17.462-07:00</updated><title type='text'>Sun achieves the Magic Number 50,000 on T5440 with Oracle Business Intelligence EE 10.1.3.4</title><content type='html'>Less than two months ago, Sun Microsystems published an Oracle Business Intelligence benchmark with the best single system performance of &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oraclebiee_28000user_benchmark_on_solaris_t5440.pdf"&gt;28,000&lt;/a&gt; concurrent BI EE users at ~75% CPU utilization. Sun and Oracle Corporation announced another Oracle Business Intelligence benchmark result today with two identical T5440 servers in the Oracle BI Cluster serving 50,000 concurrent BI EE users.&lt;br /&gt;&lt;br /&gt;An Oracle white paper with Sun's &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oraclebiee_50000user_benchmark_on_solaris_t5440.pdf"&gt;50,000 user benchmark results&lt;/a&gt; can be accessed from Oracle's Business Intelligence web.&lt;br /&gt;&lt;br /&gt;The hardware specifications for each of the T5440s are similar to the hardware that was used in the prior benchmark effort on a single T5440 server. However this time the Presentation Catalog (also frequently referred as the &lt;i&gt;Web Catalog&lt;/i&gt;) was moved to a T5220 server where the NFS server was running. Besides this the only other change from the earlier 28,000 user benchmark exercise is the addition of another T5440 to the test rig.&lt;br /&gt;&lt;br /&gt;The following graph shows the scalability of the application from one node to four nodes to eight nodes running on T5440 servers.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/OBIEE_50kUsr_Scalability.png" alt="OBIEE on T5440 : Scalability Graph" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Without further ado, here is the summary of the benchmark results along with their significance and some interesting facts:&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; One of the major goals of this benchmark effort is to show the horizontal and vertical scalability of the application (OBIEE) by highlighting the superior performance and the resilience of the underlying hardware (T5440) and the operating system (Solaris). Needless to say the goal has been met.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Another goal of this benchmark is to show decent number of concurrent BI EE users executing transactions with good response times. Since we already showed the maximum load that can be achieved on a single BI instance (7500 users) and on a single T5440 server running multiple BI instances (28,000 users), this time we did not attempt to get the peak number that can be achieved from the two T5440 servers in the benchmark environment. Now that there is an additional server in the test setup that is taking care of the Presentation Catalog and the database server, 2 * 28000 = 56,000 BI EE users would have been an achievable target -- but we opted to stop at the "magic" and the "respectable" number 50,000 instead.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; The entire benchmark run lasted for about 9 hours 45 minutes, and out of which 8 hours were the rampup hours where the 50,000 BI virtual users were logging into the application few users at a time. LoadRunner tool reported only 4 errors for the entire duration of the run; and there are zero errors in the 60 minute steady state period during which the statistics reported in the document were collected.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Two Sun SPARC Enterprise T5440 servers each with 4 x 8-Core 1.6 GHz UltraSPARC T2 Plus processors delivered the best performance of 50,000 concurrent BI EE users at around 63% CPU utilization.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; The BI EE Cluster was deployed on two T5440 servers running Solaris 10 5/09 operating system. All the nodes in the BI Cluster were consolidated onto two T5440 servers using the free and efficient Solaris Containers virtualization technology.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; The Presentation Catalog was hosted on ZFS powered file system that was created on top of four internal Solid State Drive (SSD) disks. The Catalog was shared among all eight BI nodes in the cluster as an NFS share. One 8-Core 1.2 GHz UltraSPARC T2 processor powered T5220 server was used to run the NFS server. Due to the minimal activity of the database, Oracle 11&lt;i&gt;g&lt;/i&gt; database was also hosted on the same server. Solaris 10 5/09 is the operating system.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Solid State Drive (SSD) disks with ZFS file system showed significant I/O performance improvement over traditional disks for the Presentation Catalog activity. In addition, ZFS helped get past the UFS limitation of 32767 sub-directories in a Presentation Catalog directory.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Caching was turned ON at the application server, which led to minimal database activity on the server. Note hat the caching mechanism was turned ON even in the prior benchmark exercise.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; The low end CoolThreads CMT Server T5220 and the mid-range T5440 server once again proved to be ideal candidates to deploy and run multi-thread workloads by exhibiting resilient performance when handling large number of simultaneous requests from 50,000 BI EE virtual users. T5220 handled large number of concurrent asynchronous read/write requests from eight different NFS clients.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; NFS v3 was configured at the NFS Server as well as at the NFS Client nodes. NFS version 4 is the default on Solaris 10, and it might have worked as expected. However a handful of bug reports prompted us to go with the more matured and less buggy version 3.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; 3283 watts is the average power consumption when all the 50,000 concurrent BI users are in the steady state of the benchmark test. That is, in the case of similarly configured workloads, the T5440 server supports 15.2 users per watt of energy consumed and supports 5,000 users per rack unit.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; A summary of the results with system-wide averages of CPU and memory utilization is shown below. The latest results are highlighted in blue color.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="1" frame="void" rules="all" width="100%"&gt;&lt;tbody&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th align="center" width="10%"&gt;#Vusers&lt;/th&gt;&lt;th align="center" width="10%"&gt;Clustered&lt;/th&gt;&lt;th align="center" width="10%"&gt;#BI Nodes&lt;/th&gt;&lt;th align="center" width="10%"&gt;#CPU&lt;/th&gt;&lt;th align="center" width="10%"&gt;#Core&lt;/th&gt;&lt;th align="center" width="10%"&gt;RAM&lt;/th&gt;&lt;th align="center" width="10%"&gt;CPU&lt;/th&gt;&lt;th align="center" width="10%"&gt;Memory&lt;/th&gt;&lt;th align="center" width="10%"&gt;Avg Trx Response Time&lt;/th&gt;&lt;th align="center" width="10%"&gt;#Trx/sec&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;7,500&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;No&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;1&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;1&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;8&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;32 GB&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;72.85%&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;18.11 GB&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;0.22 sec&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;155&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;28,000&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;Yes&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;4&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;4&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;32&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;128 GB&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;75.04%&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;76.16 GB&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;0.25 sec&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;580&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;font face="georgia" color="blue"&gt;50,000&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia" color="blue"&gt;Yes&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia" color="blue"&gt;8&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia" color="blue"&gt;8&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia" color="blue"&gt;64&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia" color="blue"&gt;256 GB&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia" color="blue"&gt;63.32%&lt;/font&gt;&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;&lt;font face="georgia" color="blue"&gt;172.21 GB&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia" color="blue"&gt;0.28 sec&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia" color="blue"&gt;1031&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="green"&gt;&lt;b&gt;TOPOLOGY DIAGRAM&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;The topology diagram in the benchmark results white paper is almost illegible. Here is the original topology diagram that was inserted into the white paper.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/OBIEE_50k_Topology.png" alt="OBIEE on T5440 : 50K User Benchmark Topology" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Quite frankly I'm not very proud of this drawing -- but that's the best that I could come up with in a short span. Rather than showing the flow of communication between each and every component in the benchmark setup, I simplified the drawing by introducing a "black box" sort of thing - "private network" - in the middle, which protected the drawing from getting messy.&lt;br /&gt;&lt;br /&gt;&lt;font color="green"&gt;&lt;b&gt;CPU USAGE GRAPH&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;The following two-dimensional graph shows the CPU utilization patterns at all 3 nodes in the benchmark setup for the 60 minute steady state of the benchmark run. This graph was generated using the free GNUplot tool with &lt;code&gt;sar&lt;/code&gt; data as the inputs.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/OBIEE_8NodeCluster_50Kusr.png" alt="OBIEE on T5440 : 50K User Benchmark CPU Usage Graph" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="green"&gt;&lt;b&gt;COMPETITIVE LANDSCAPE&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;And finally here is a quick summary of all the results that are published by different vendors so far with similar benchmark kit. Feel free to draw your own conclusions. All this is public information. Check the corresponding benchmark reports by clicking on the URLs under the "#Users" column.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="1" frame="void" rules="all" width="100%"&gt;&lt;tbody&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th rowspan="2" width="30%"&gt; Server &lt;/th&gt;&lt;th colspan="5" width="45%"&gt; Processors &lt;/th&gt;&lt;th rowspan="2" width="10%"&gt; #Users &lt;/th&gt;&lt;th rowspan="2" width="15%"&gt; OS &lt;/th&gt;&lt;/tr&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th align="center"&gt; Chips &lt;/th&gt;&lt;th align="center"&gt; Cores &lt;/th&gt;&lt;th align="center"&gt; Threads &lt;/th&gt;&lt;th align="center"&gt; GHz &lt;/th&gt;&lt;th align="center"&gt; Type &lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &amp;nbsp;&amp;nbsp;&lt;font face="georgia"&gt;2 x Sun SPARC Enterprise T5440 (APP)&lt;BR&gt; &amp;nbsp;&amp;nbsp;1 x Sun SPARC Enterprise T5220 (NFS,DB)&lt;/font&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 8&lt;BR&gt;1&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 64&lt;BR&gt;8&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 512&lt;BR&gt;64 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 1.6&lt;BR&gt;1.2 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; UltraSPARC T2 Plus&lt;BR&gt;UltraSPARC T2&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt; &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oraclebiee_50000user_benchmark_on_solaris_t5440.pdf"&gt;&lt;font face="georgia"&gt;50,000&lt;/font&gt;&lt;/a&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; Solaris 10 5/09&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &amp;nbsp;&amp;nbsp;&lt;font face="georgia"&gt;1 x Sun SPARC Enterprise T5440&lt;/font&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 4 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 32 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 256 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 1.6 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; UltraSPARC T2 Plus&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt; &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oraclebiee_28000user_benchmark_on_solaris_t5440.pdf"&gt;&lt;font face="georgia"&gt;28,000&lt;/font&gt;&lt;/a&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; Solaris 10 5/09 &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &amp;nbsp;&amp;nbsp;&lt;font face="georgia"&gt;5 x Sun Fire T2000&lt;/font&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 1 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 8 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 32 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 1.2 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; UltraSPARC T1 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt; &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oracle-bi-ee-10k-benchmark-sunt2000.pdf"&gt;&lt;font face="georgia"&gt;10,000&lt;/font&gt;&lt;/a&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; Solaris 10 11/06 &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &amp;nbsp;&amp;nbsp;&lt;font face="georgia"&gt;3 x HP DL380 G4&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 2 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 4 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 4 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 2.8 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; Intel Xeon &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt; &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oracle-biee-5k-user-benchmark-hpdl3802.pdf"&gt;&lt;font face="georgia"&gt;5,800&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; OEL &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &amp;nbsp;&amp;nbsp;&lt;font face="georgia"&gt;1 x IBM x3755&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 4 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 8 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 8 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 2.8 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; AMD Opteron &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt; &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/bi-suite-ee-4000-benchmark-x3755.pdf"&gt;&lt;font face="georgia"&gt;4,000&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; RHEL4 &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr color="#cccccc" noshade="noshade" size="1"&gt;&lt;br /&gt;&lt;br /&gt;Before you go, do not forget to check the &lt;a href="http://blogs.sun.com/mandalika/entry/oracle_business_intelligence_on_sun"&gt;best practices&lt;/a&gt; for configuring / deploying Oracle Business Intelligence on top of Solaris 10 running on Sun CMT hardware.&lt;br /&gt;&lt;br /&gt;Related Blog Posts:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/t5440_rocks_again_with_1"&gt;T5440 Rocks [again] with Oracle Business Intelligence Enterprise Edition Workload&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/oracle_business_intelligence_10_1"&gt;http://blogs.sun.com/mandalika/entry/oracle_business_intelligence_10_1&lt;/a&gt;&lt;/i&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-6249687333465232179?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/6249687333465232179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=6249687333465232179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6249687333465232179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6249687333465232179'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/10/sun-achieves-magic-number-50000-on.html' title='Sun achieves the Magic Number 50,000 on T5440 with Oracle Business Intelligence EE 10.1.3.4'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-5557524472140671697</id><published>2009-09-18T21:52:00.000-07:00</published><updated>2009-10-14T00:46:55.473-07:00</updated><title type='text'>Hindi Music - V.Man's Recommendations</title><content type='html'>*****&lt;br /&gt;1. &lt;a href="http://www.youtube.com/watch?v=J-rGNocYmc4&amp;feature=PlayList&amp;p=4E5DE94ADEF16784&amp;index=38"&gt;Race - Race is On My Mind&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.youtube.com/watch?v=bYKvZXYwtHg&amp;feature=PlayList&amp;p=FD2EBA0E2C7046A5&amp;index=39"&gt;Bluff Master - Right Here Right Now&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://www.youtube.com/watch?v=vsI3tihLqOc&amp;feature=PlayList&amp;p=427A354A21FB80E6&amp;index=16"&gt;Rang De Basanti - Pathshala&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://www.youtube.com/watch?v=4lu3EorpiQ4"&gt;Bhool Bhulaiya - Hare Rama Hare Krishna&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;****&lt;br /&gt;1. &lt;a href="http://www.youtube.com/watch?v=A088FcpV1t4"&gt;Pyar Tu Ne Kya Kiya - Kambakth Ishq&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.youtube.com/watch?v=D9NS9UG2vjQ"&gt;Bluff Master - Bure Bure&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://www.youtube.com/watch?v=7NfZZzr_2zs"&gt;Dus - Deedar De&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://www.youtube.com/watch?v=y4slx5wKPtc"&gt;Cash - Title Song&lt;/a&gt;&lt;br /&gt;5. &lt;a href="http://www.youtube.com/watch?v=dBc_gm5ci2E"&gt;Dhoom 2 - Dhoom Again&lt;/a&gt;&lt;br /&gt;6. &lt;a href="http://www.youtube.com/watch?v=at_at4fVmAI&amp;feature=PlayList&amp;p=8F8CFB4E6CFF2839&amp;index=40"&gt;Dus - Dus Bahane&lt;/a&gt;&lt;br /&gt;7. &lt;a href="http://www.youtube.com/watch?v=YlTlI-hJkBQ&amp;feature=PlayList&amp;p=042F0708445F6DA3&amp;playnext=1&amp;playnext_from=PL&amp;index=1&lt;br /&gt;"&gt;Delhi 6 - Masakali&lt;/a&gt;&lt;br /&gt;8. &lt;a href="http://www.youtube.com/watch?v=bY-cNzvk96Q"&gt;Cash - Mind Blowing Mahiya&lt;/a&gt;&lt;br /&gt;9. &lt;a href="http://www.youtube.com/watch?v=ad8-NGPH9k0&amp;feature=related"&gt;Tashan - Chaliya Chaliya&lt;/a&gt;&lt;br /&gt;10. &lt;a href="http://www.youtube.com/watch?v=82hxpOc0z8U"&gt;Shootout at Lokhandwala - Ganapat&lt;/a&gt;&lt;br /&gt;11. &lt;a href="http://www.youtube.com/watch?v=M2B_lsKVw8M"&gt;Blue - Chiggy Wiggy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;***&lt;br /&gt;1. &lt;a href="http://www.youtube.com/watch?v=CEopu6s4ODQ"&gt;What's Your Rashee - Chehre Jo Dekhe Hain&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.youtube.com/watch?v=_67-FYFWISU"&gt;Taxi No 9211 - Meter Down&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://www.youtube.com/watch?v=HRR7wO5KnjQ"&gt;Main Aur Mrs Khanna - Happening&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://www.youtube.com/watch?v=SphQbyvODKA&amp;feature=PlayList&amp;p=652138C6AD6E14E8&amp;playnext=1&amp;playnext_from=PL&amp;index=7"&gt;13B - Oh Crazy Mama&lt;/a&gt;&lt;br /&gt;5. &lt;a href="http://www.youtube.com/watch?v=1slPbcBDyEQ"&gt;Kaminey - Rat ke Dhai Baje&lt;/a&gt;&lt;br /&gt;6. &lt;a href="http://www.youtube.com/watch?v=BampUiO8xlY&amp;feature=related"&gt;Tashan - Dil Hara&lt;/a&gt;&lt;br /&gt;7. &lt;a href="http://www.youtube.com/watch?v=M0bP9dQz5ys"&gt;Luck - Jee Le&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;**&lt;br /&gt;1. &lt;a href="http://www.youtube.com/watch?v=Pab2_NPLKQM"&gt;Aksar - Jhalak Dikhlaja&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.youtube.com/watch?v=HxofohmohJY&amp;feature=related"&gt;Slumdog Millionaire - Jai Ho&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;*&lt;br /&gt;Rest of them ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-5557524472140671697?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5557524472140671697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5557524472140671697'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/09/hindi-music-my-recommendations.html' title='Hindi Music - V.Man&apos;s Recommendations'/><author><name>V.Man</name><uri>http://www.blogger.com/profile/00033581689309277193</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></entry><entry><id>tag:blogger.com,1999:blog-8206834.post-1033515388162304488</id><published>2009-08-23T02:28:00.000-07:00</published><updated>2009-08-23T02:44:31.512-07:00</updated><title type='text'>T5440 Rocks [again] with Oracle Business Intelligence Enterprise Edition Workload</title><content type='html'>A while ago, I blogged about how we scaled Siebel 8.0 up to &lt;a href="http://blogs.sun.com/mandalika/entry/siebel_8_0_on_sun"&gt;14,000 concurrent users&lt;/a&gt; by consolidating the entire Siebel stack on a single Sun SPARC&lt;sup&gt;&amp;reg;&lt;/sup&gt; Enterprise T5440 server with 4 x 1.4 GHz eight-core UltraSPARC&lt;sup&gt;&amp;reg;&lt;/sup&gt; T2 Plus Processors. OLTP workload was used in that performance benchmark effort.&lt;br /&gt;&lt;br /&gt;We repeated a similar effort by collaborating with Oracle Corporation, but with an OLAP workload this time around. Today Sun and Oracle announced the 28,000 user Oracle Business Intelligence Enterprise Edition (OBIEE) 10.1.3.4 benchmark results on a single Sun SPARC Enterprise T5440 server with 4 x 1.6 GHz eight-core UltraSPARC T2 Plus Processors running Solaris 10 5/09 operating system. An Oracle white paper with Sun's &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oraclebiee_28000user_benchmark_on_solaris_t5440.pdf"&gt;28,000 user benchmark results&lt;/a&gt; is available on Oracle's benchmark web site.&lt;br /&gt;&lt;br /&gt;Some of the notes and key take away's from this benchmark are as follows:&lt;br /&gt;&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; Key specifications for the Sun SPARC Enterprise T5440 system under test are: 4 x UltraSPARC T2 Plus processors, 32 cores, 256 compute threads and 128 GB of memory in a 4RU space.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; The entire OBIEE solution was deployed on a single Sun SPARC Enterprise T5440 server using Oracle BI Cluster software.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; The BI Cluster was configured with 4 x BI nodes. Each of those BI nodes were configured to run inside a Solaris Container.&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; Each Solaris Container was configured with one physical processor (that is, 8 cores or 64 virtual cpus), and 32 GB physical memory.&lt;br /&gt;&lt;li&gt; Each BI node was configured to run BI Server, Presentation Server and OC4J Web Server&lt;br /&gt;&lt;li&gt; Two of the BI nodes have the BI Cluster Controller running (primary &amp; secondary)&lt;br /&gt;&lt;li&gt; One out of four Containers was sharing CPU and memory resources with Oracle 11&lt;i&gt;g&lt;/i&gt; RDBMS and the host operating system that are running in the global zone&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;li&gt; Caching was turned ON at the application server, which led to minimal database activity on the server.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt; &lt;li&gt; In other words, one can use these results only to size the hardware requirements for a complete BI EE deployment excluding the database server.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; All the OBIEE benchmark results published so far are with the caching turned ON. This fact was not explicitly mentioned in some of the benchmark results white papers. Check the &lt;a href="#competitive"&gt;competitive Landscape&lt;/a&gt; for the pointers to different benchmark results published by different vendors.&lt;/ol&gt;&lt;br /&gt;&lt;li&gt; From our experiments with the OBIEE benchmark workload, it appears that a BI deployment with a single non-cluster BI node could reasonably scale well up to 7,500 active users on a T5440 server. To scale beyond 7,500 concurrent users, you might need another instance of BI. Of course, your mileage may vary.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; BI EE exhibited excellent horizontal scalability when multiple BI nodes were clustered using BI Cluster software. Four BI nodes in the Cluster were able to handle 28,000 concurrent users with minimal impact on the overall average transaction response times.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt; It appeared as though we can simply add more BI nodes to the BI Cluster to cope with the increase in user base. However due to the limited hardware resources, we could not try running beyond 4 nodes in the BI Cluster. As of today, the theoritical limit for the number of BI nodes in a Cluster is 16.&lt;/ul&gt;&lt;br /&gt;&lt;li&gt; The underlying hardware must behave well in order for the application to scale and perform well -- so, credit goes to UltraSPARC T2 Plus powered Sun SPARC Enterprise T5440 server as well. In other words, it is fair to say the combination of (T5440 + OBIEE) performs and scales well on Solaris.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; A summary of the results with system-wide averages of CPU and memory utilization is shown below.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="1" frame="void" rules="all" width="100%"&gt;&lt;tbody&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th align="center" width="10%"&gt;#Vusers&lt;/td&gt;&lt;th align="center" width="10%"&gt;Clustered&lt;/td&gt;&lt;th align="center" width="10%"&gt;#BI Nodes&lt;/td&gt;&lt;th align="center" width="10%"&gt;#CPU&lt;/td&gt;&lt;th align="center" width="10%"&gt;#Core&lt;/td&gt;&lt;th align="center" width="10%"&gt;RAM&lt;/td&gt;&lt;th align="center" width="10%"&gt;CPU&lt;/td&gt;&lt;th align="center" width="10%"&gt;Memory&lt;/td&gt;&lt;th align="center" width="10%"&gt;Avg Trx Response Time&lt;/td&gt;&lt;th align="center" width="10%"&gt;#Trx/sec&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;7,500&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;No&lt;/font&gt;&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;1&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;1&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;8&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;32 GB&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;72.85%&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;18.11 GB&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;0.22 sec&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;155&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;28,000&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;Yes&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;4&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;4&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;32&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;128 GB&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;75.04%&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;76.16 GB&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;0.25 sec&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt;580&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Internal Solid State Drive (SSD) with ZFS file system showed significant I/O performance improvement over traditional disk for the BI catalog activity. In addition, ZFS helped get past the UFS limitation of 32,767 sub-directories in a BI catalog directory.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; The benchmark demonstrated that 64-bit BI EE platform is immune to the 4 GB virtual memory limitation of the 32-bit BI EE platform -- hence can potentially support even more users and have larger caches as long as the hardware resources are available.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt; Solaris runs in 64-bit mode by default on SPARC platform. Consider running 64-bit BI EE on Solaris.&lt;/ul&gt;&lt;br /&gt;&lt;li&gt; 2,107 watts is the average power consumption when all the 28,000 concurrent users are in the steady state of the benchmark test. That is, in the case of similarly configured workloads, T5440 supports 13.2 users per watt of the power consumed; and supports 7,000 users per rack unit.&lt;/ul&gt;&lt;br /&gt;&lt;font color="green"&gt;&lt;b&gt;TOPOLOGY DIAGRAM:&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;A picture is worth a thousand words. The following topology diagram(s) says it all about the configuration.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Single Node BI Non-Cluster Configuration : 7,500 Concurrent Users&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/OBIEE_SingleNode_Setup.png" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Even though the Solaris Container was shown in a cloud like graphical form, it has nothing to do with the "Cloud Computing". It is just a side effect of fancy drawing.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Four Node BI Cluster Configuration : 28,000 Concurrent Users&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://blogs.sun.com/mandalika/resource/OBIEE_28kUsr_Setup.png" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="green"&gt;&lt;a name="competitive"&gt;&lt;b&gt;COMPETITIVE LANDSCAPE&lt;/b&gt;&lt;/a&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Here is a quick summary of all the results that are published by different vendors. Feel free to draw your own conclusions. All this is public information. Check the corresponding benchmark reports by clicking on the URLs under the "#Users" column.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table border="1" frame="void" rules="all" width="100%"&gt;&lt;tbody&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th rowspan="2" width="30%"&gt; Server &lt;/th&gt;&lt;th colspan="5" width="45%"&gt; Processors &lt;/th&gt;&lt;th rowspan="2" width="10%"&gt; #Users &lt;/th&gt;&lt;th rowspan="2" width="15%"&gt; OS &lt;/th&gt;&lt;/tr&gt;&lt;tr bgcolor="#eeeeee"&gt;&lt;th align="center"&gt; Chips &lt;/th&gt;&lt;th align="center"&gt; Cores &lt;/th&gt;&lt;th align="center"&gt; Threads &lt;/th&gt;&lt;th align="center"&gt; GHz &lt;/th&gt;&lt;th align="center"&gt; Type &lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &amp;nbsp;&amp;nbsp;&lt;font face="georgia"&gt;1 x Sun SPARC Enterprise T5440&lt;/font&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 4 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 32 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 256 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 1.6 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; UltraSPARC T2 Plus&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt; &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oraclebiee_28000user_benchmark_on_solaris_t5440.pdf"&gt;&lt;font face="georgia"&gt;28,000&lt;/font&gt;&lt;/a&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; Solaris 10 5/09 &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &amp;nbsp;&amp;nbsp;&lt;font face="georgia"&gt;5 x Sun Fire T2000&lt;/font&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 1 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 8 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 32 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 1.2 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; UltraSPARC T1 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt; &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oracle-bi-ee-10k-benchmark-sunt2000.pdf"&gt;&lt;font face="georgia"&gt;10,000&lt;/font&gt;&lt;/a&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; Solaris 10 11/06 &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &amp;nbsp;&amp;nbsp;&lt;font face="georgia"&gt;3 x HP DL380 G4&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 2 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 4 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 4 &lt;/font&gt;&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 2.8 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; Intel Xeon &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt; &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oracle-biee-5k-user-benchmark-hpdl3802.pdf"&gt;&lt;font face="georgia"&gt;5,800&lt;/font&gt;&lt;/a&gt; &lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; OEL &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &amp;nbsp;&amp;nbsp;&lt;font face="georgia"&gt;1 x IBM x3755&lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 4 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 8 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 8 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; 2.8 &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; AMD Opteron &lt;/font&gt;&lt;/td&gt;&lt;td align="center"&gt; &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/bi-suite-ee-4000-benchmark-x3755.pdf"&gt;&lt;font face="georgia"&gt;4,000&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td align="center"&gt;&lt;font face="georgia"&gt; RHEL4 &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;&lt;b&gt;CAUTION&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Although T5440 possesses a ton of great qualities, it might not be suitable for deploying workloads with heavy single-threaded dependencies. The T5440 is an excellent hardware platform for multi-threaded, and moderately single-threaded/multi-process workloads. When in doubt, it is a good idea to leverage Sun Microsystems' &lt;a href="http://www.sun.com/tryandbuy/"&gt;Try &amp;amp; Buy&lt;/a&gt; program to try the workloads on the T5440 server before making the final call.&lt;br /&gt;&lt;br /&gt;&lt;hr color="#cccccc" noshade="noshade" size="1"&gt;&lt;br /&gt;&lt;br /&gt;Check the &lt;a href="http://technopark02.blogspot.com/2009/08/oracle-business-intelligence-on-sun-few.html"&gt;second part&lt;/a&gt; of this blog post for the best practices for configuring / deploying Oracle Business Intelligence on top of Solaris 10 running on Sun CMT hardware.&lt;br /&gt;&lt;br /&gt;Related Blog Posts:&lt;br /&gt;&lt;ul type="circle"&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/BestPerf/entry/sun_t5440_oracle_bi_ee"&gt;Sun T5440 Oracle BI EE World Record Performance&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://technopark02.blogspot.com/2007/10/oracle-bi-1013x-10000-user-benchmark-on.html"&gt;Oracle BI 10.1.3.x 10,000 User Benchmark on SunFire T2000&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/BestPerf/entry/world_record_performance_of_sun"&gt;World Record Performance of Sun CMT Servers&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/BestPerf/entry/why_is_1_6_ghz"&gt;Why does 1.6 beat 4.7?&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/mandalika/entry/siebel_8_0_on_sun"&gt;Siebel 8.0 on Sun SPARC Enterprise T5440 - More Bang for the Buck!!&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/t5440_rocks_again_with_1"&gt;http://blogs.sun.com/mandalika/entry/t5440_rocks_again_with_1&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;________________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/oracle" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=oracle" alt=" " /&gt;Oracle&lt;/a&gt; | &lt;a href="http://technorati.com/tag/bi" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=bi" alt=" " /&gt;BI&lt;/a&gt; | &lt;a href="http://technorati.com/tag/business-intelligence" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=business-intelligence" alt=" " /&gt;Business Intelligence&lt;/a&gt; | &lt;a href="http://technorati.com/tag/solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=solaris" alt=" " /&gt;Solaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/performance" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=performance" alt=" " /&gt;Performance&lt;/a&gt; | &lt;a href="http://technorati.com/tag/t5440" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=t5440" alt=" " /&gt;T5440&lt;/a&gt; | &lt;a href="http://technorati.com/tag/benchmark" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=benchmark" alt=" " /&gt;Benchmark&lt;/a&gt; | &lt;a href="http://technorati.com/tag/ultrasparc-t2plus" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=ultrasparc-t2plus" alt=" " /&gt;UltraSPARC T2 Plus&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-1033515388162304488?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/1033515388162304488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=1033515388162304488' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1033515388162304488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1033515388162304488'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/08/t5440-rocks-again-with-oracle-business.html' title='T5440 Rocks [again] with Oracle Business Intelligence Enterprise Edition Workload'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-1310762267993029445</id><published>2009-08-23T02:14:00.000-07:00</published><updated>2009-08-23T02:27:32.154-07:00</updated><title type='text'>Oracle Business Intelligence on Sun : Few Best Practices</title><content type='html'>The following suggested best practices are applicable to all Oracle BI EE deployments on Sun hardware (CMT and M-class) running Solaris 10 or later. These recommendations are based on our observations from the &lt;a href="http://www.oracle.com/appserver/business-intelligence/docs/oraclebiee_28000user_benchmark_on_solaris_t5440.pdf"&gt;28,000 user benchmark&lt;/a&gt; on Sun SPARC Enterprise T5440. It is not the complete list, and your mileage may vary.&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; Ensure that the system's firmware is up-to-date.&lt;br /&gt;&lt;br /&gt;&lt;ul type="square"&gt; Check the &lt;a href="http://www.sun.com/bigadmin/patches/firmware/"&gt;Sun System Firmware Release Hub&lt;/a&gt; for the latest firmware.&lt;/ul&gt;&lt;br /&gt;&lt;li&gt; Upgrade to the latest update release of Solaris 10.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Solaris runs in 64-bit mode by default on SPARC platform. Consider running 64-bit BI EE on Solaris.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;64-bit BI EE platform is immune to the 4 GB virtual memory limitation of the 32-bit BI EE platform -- hence can potentially support even more users and have larger caches as long as the hardware resources are available.&lt;/ul&gt;&lt;br /&gt;&lt;li&gt; Enable 256M large pages on all nodes. By default, the latest update of Solaris 10 will use a maximum of 4M pages even when 256M pages are a good fit.&lt;br /&gt;&lt;br /&gt;&lt;ul type="square"&gt; 256M pages can be enabled with the following &lt;code&gt;/etc/system&lt;/code&gt; tunables.&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;* 256M pages for the process heap&lt;br /&gt;set max_uheap_lpsize=0x10000000&lt;br /&gt;&lt;br /&gt;* 256M pages for ISM&lt;br /&gt;set mmu_ism_pagesize=0x10000000&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt; On larger systems with more CPUs or CPU cores, try not to deploy Oracle BI EE in the global zone.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; If the BI catalog is hosted on a local file system, create a ZFS file system to store the catalog.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;If there are more than 25,000 authorized users in a BI deployment, the default UFS file system may run into &lt;code&gt;Too many links&lt;/code&gt; error when the Presentation Server tries to create more than 32,767 sub-directories (refer to LINK_MAX on Solaris)&lt;/ul&gt;&lt;br /&gt;&lt;li&gt; Ensure that all the BI components in the cluster are configured in a many-to-many fashion&lt;br /&gt;&lt;br /&gt;&lt;li&gt; For proper load balancing, configure all BI nodes to be almost identical in the BI Cluster&lt;br /&gt;&lt;br /&gt;&lt;li&gt; When planning to add an identically configured new node to the BI Cluster, simply clone an existing well-configured BI node running in a non-global zone.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt; Cloning a BI node running in a dedicated zone results in an exact copy of the BI node being cloned. This approach is simple, less error prone and eliminates the need to configure the newly added node from scratch.&lt;/ul&gt;&lt;br /&gt;&lt;li&gt; Increase the file descriptors limit. Edit SAROOTDIR/setup/systunesrv.sh to increase the value from 1024 to any other value of your choice. In addition you must increase the shell limit using the &lt;code&gt;ulimit -n&lt;/code&gt; command&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Configure 256M large pages for the JVM heap of Chart server and OC4J web server (this recommendation is equally applicable to other web servers such as WebLogic or Sun Java system Web Server). Also use parallel GC, and restrict the number of parallel GC threads to 1/8th of the number of virtual CPUs.&lt;br /&gt;&lt;br /&gt;eg.,&lt;pre class="programlisting"&gt;&lt;br /&gt;-XX:LargePageSizeInBytes=256M -XX:+UseParallelGC -XX:ParallelGCThreads=8&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; The Oracle BI Presentation Server keeps the access information of all the users in the Web Catalog. When there are large number of unique BI users, it can take a significant amount of time to look up a user if all the users reside in one single directory. To avoid this, hash the user directories. It can be achieved by having the following entry in SADATADIR/web/config/instanceconfig.xml&lt;br /&gt;&lt;br /&gt;eg.,&lt;pre class="programlisting"&gt;&lt;br /&gt;&amp;lt;Catalog&gt;&lt;br /&gt;&amp;lt;HashUserHomeDirectories&gt;2&amp;lt;/HashUserHomeDirectories&gt;&lt;br /&gt;&amp;lt;/Catalog&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;code&gt;HashUserHomeDirectories&lt;/code&gt; specifies the number of characters to use to hash user names into sub directories. When this element is turned on, for example, the default name for user Steve's home directory would become /users/st/steve.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; BI Server and BI Presentation Server processes create many temporary files while rendering reports and dashboards for a user. This can result in significant I/O activity on the system. The I/O waits can be minimized by pointing the temporary directories to a memory resident file system such as /tmp on Solaris OS. To achieve this, add the following line to the instanceconfig.xml configuration file.&lt;br /&gt;&lt;br /&gt;eg.,&lt;pre class="programlisting"&gt;&lt;br /&gt;&amp;lt;TempDir&gt;/tmp/OracleBISAW&amp;lt;/TempDir&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Similarly the Temporary directory (SATEMPDIR) can be pointed to a memory resident file system such as /tmp to minimize the I/O waits.&lt;/ul&gt;&lt;br /&gt;Related Blog Posts:&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/mandalika/entry/t5440_rocks_again_with_1"&gt;T5440 Rocks [again] with Oracle Business Intelligence Enterprise Edition Workload&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://blogs.sun.com/mandalika/entry/siebel_on_sun_cmt_hardware"&gt;Siebel on Sun CMT hardware : Best Practices&lt;/a&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/oracle_business_intelligence_on_sun"&gt;http://blogs.sun.com/mandalika/entry/oracle_business_intelligence_on_sun&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;________________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/oracle" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=oracle" alt=" " /&gt;Oracle&lt;/a&gt; | &lt;a href="http://technorati.com/tag/bi" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=bi" alt=" " /&gt;BI&lt;/a&gt; | &lt;a href="http://technorati.com/tag/business-intelligence" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=business-intelligence" alt=" " /&gt;Business Intelligence&lt;/a&gt; | &lt;a href="http://technorati.com/tag/solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=solaris" alt=" " /&gt;Solaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/performance" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=performance" alt=" " /&gt;Performance&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-1310762267993029445?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/1310762267993029445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=1310762267993029445' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1310762267993029445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1310762267993029445'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/08/oracle-business-intelligence-on-sun-few.html' title='Oracle Business Intelligence on Sun : Few Best Practices'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8206834.post-2160939338138717649</id><published>2009-07-27T11:04:00.000-07:00</published><updated>2009-07-27T12:34:11.457-07:00</updated><title type='text'>Instructions to Create a Facebook Application</title><content type='html'>Here is a quick HOW-To document  with step-by-step instructions to create a simple Facebook application.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Create an account with Facebook at &lt;a href="http://www.facebook.com/"&gt;facebook.com&lt;/a&gt;&lt;br /&gt;&lt;li&gt; To create an application in Facebook, go to &lt;a href="http://www.facebook.com/developers/?ref=sb"&gt;Facebook Developers&lt;/a&gt; web site&lt;br /&gt;&lt;li&gt; Click on Set Up New Application.&lt;br /&gt;&lt;li&gt; Name the Appliaction and click on save changes.&lt;br /&gt;&lt;li&gt; Enter a brief description for the application.&lt;br /&gt;&lt;li&gt; On the left side of the page click on Canvas.&lt;br /&gt;&lt;li&gt; Fill the application name in Canvas Page URL field.&lt;br /&gt;&lt;li&gt; Fill the Canvas Callback URL field.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Canvas Callback URL is the address of the website where the appliaction is hosted.&lt;br /&gt;For example if the appliaction is hosted on a website www.xyz.com, then the Canvas Callback URL address will be http://www.xyz.com/your_application.&lt;/i&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Click on save changes.&lt;br /&gt;&lt;li&gt; A summary of the application is shown at this point.&lt;br /&gt;&lt;li&gt; Sample code is shown at the bottom of this page. Click on the sample code.&lt;br /&gt;&lt;li&gt; Download and unzip the tar.gz file.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;In the &lt;code&gt;footprints&lt;/code&gt; folder, you will find a sample Facebook application with the file name index.php&lt;/i&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Facebook appliaction can be developed in JavaScript, PHP or HTML.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;For more details about the langauges in which the application can be developed, check &lt;a href="http://developers.facebook.com/get_started.php?tab=tutorial"&gt;Facebook Developers&lt;/a&gt; web site.&lt;/i&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Create your Facebook application and host it on any web site of your choice. Be aware that Facebook does not host the actual application - so you are on your own in finding a hosting site to deploy your Facebook application.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You can test the application from the Canvas Page URL address.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The url will be in the format http://apps.facebook.com/appliaction_name/&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Few Caveats:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If the application is developed in JavaScript, note that all the functions may not work as expected in Facebook. For example, to set the value of 5 to a text box, the following is the code in JavaScript:&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;var k = 5;&lt;br /&gt;document.getElementById("someid").value = k;&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The above code may not work in Facebook application. The following modified code works in Facebook:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;var k = 5;&lt;br /&gt;document.getElementById("someid").setValue(k);&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;To see all the Facebook equivalent functions for the JavaScript functions, check the &lt;a href="http://wiki.developers.facebook.com/index.php/FBJS"&gt;FBJS&lt;/a&gt; wiki page.&lt;br /&gt;&lt;br /&gt;If you encounter the error, &lt;code&gt;FBML Error : illegal tag "body" under "fb:canvas"&lt;/code&gt;, remove the &lt;code&gt;&amp;lt;body&gt;&lt;/code&gt; tag from the HTML application. When Facebook parses the appliaction, it addes the &lt;code&gt;&amp;lt;body&gt;&lt;/code&gt; tag automatically.&lt;br /&gt;&lt;br /&gt;The code shown below is ready to be used as an example Facebook application. This a very basic calculator with limited functionality.&lt;br /&gt;&lt;br /&gt;To test how this example code works, visit the following URL:&lt;br /&gt;&lt;a href="http://apps.facebook.com/basic_calc"&gt;http://apps.facebook.com/basic_calc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sample Facebook Application : Simple Calculator&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&amp;lt;html&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;head&gt;&lt;br /&gt;&amp;lt;style type = "text/css"&gt;&lt;br /&gt;input {&lt;br /&gt; width : 30px;&lt;br /&gt; height: 30px;&lt;br /&gt; font-size: 1.2em;&lt;br /&gt; color: red;&lt;br /&gt;       }&lt;br /&gt;&amp;lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script language="JavaScript"&gt;&lt;br /&gt;var num2 = 0 , num1=0;&lt;br /&gt;&lt;br /&gt;function Assign(myvalue)  &lt;br /&gt;{&lt;br /&gt; var button_value , Key = 0; &lt;br /&gt; button_value = myvalue.getValue();&lt;br /&gt;&lt;br /&gt; switch(button_value)&lt;br /&gt; {&lt;br /&gt;  case '+':&lt;br /&gt;  case '-':&lt;br /&gt;  case '*':&lt;br /&gt;  case '/':&lt;br /&gt;  case '%':&lt;br /&gt;  {&lt;br /&gt;   key = button_value;&lt;br /&gt;   num1 = num2;&lt;br /&gt;   num2 = 0;&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  case '=':&lt;br /&gt;  {&lt;br /&gt;   if (key == '+')&lt;br /&gt;   {&lt;br /&gt;    Sum(num1,num2);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   if (key == '-')&lt;br /&gt;   {&lt;br /&gt;    Subtraction(num1,num2);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   if (key == '*')&lt;br /&gt;   {&lt;br /&gt;    Product(num1,num2);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   if (key == '/')&lt;br /&gt;   {&lt;br /&gt;    Reminder(num1,num2);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   if (key == '%')&lt;br /&gt;   {&lt;br /&gt;    Modulo(num1,num2);&lt;br /&gt;   }&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  case '+/-':&lt;br /&gt;  {&lt;br /&gt;   num2 = num2 * (-1);&lt;br /&gt;   document.getElementById("output").setValue(num2);&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  default:&lt;br /&gt;  {&lt;br /&gt;   button_value = parseInt(button_value);&lt;br /&gt;   combine(button_value);&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function combine(input) &lt;br /&gt;{&lt;br /&gt; num2 = (num2 * 10) + input;&lt;br /&gt; document.getElementById("output").setValue(num2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Cancel() &lt;br /&gt;{&lt;br /&gt; num2 = 0;&lt;br /&gt; num1 = 0;&lt;br /&gt; document.getElementById("output").setValue(num2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Sum(val1,val2) &lt;br /&gt;{&lt;br /&gt; var result;&lt;br /&gt; result = val1+val2;&lt;br /&gt; document.getElementById("output").setValue(result);&lt;br /&gt; num2 = 0;&lt;br /&gt; num1 = 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Subtraction(val1,val2) &lt;br /&gt;{&lt;br /&gt; var result;&lt;br /&gt; result = val1-val2;&lt;br /&gt; document.getElementById("output").setValue(result);&lt;br /&gt; num2 = 0;&lt;br /&gt; num1 = 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Product(val1,val2) &lt;br /&gt;{&lt;br /&gt; var result;&lt;br /&gt; result = val1*val2;&lt;br /&gt; document.getElementById("output").setValue(result);&lt;br /&gt; num2 = 0;&lt;br /&gt; num1 = 0; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Reminder(val1,val2) &lt;br /&gt;{&lt;br /&gt; var result;&lt;br /&gt; result = val1/val2;&lt;br /&gt; document.getElementById("output").setValue(result);&lt;br /&gt; num2 = 0;&lt;br /&gt; num1 = 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function Modulo(val1,val2) &lt;br /&gt;{&lt;br /&gt; var result;&lt;br /&gt; result = val1%val2;&lt;br /&gt; document.getElementById("output").setValue(result);&lt;br /&gt; num2 = 0;&lt;br /&gt; num1 = 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;title&gt;Very Basic Calculator&amp;lt;/title&gt;&lt;br /&gt;&amp;lt;/head&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;form&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table border="1" bgcolor = "#CDCDCD"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&gt;&lt;br /&gt;&amp;lt;td colspan="6"&gt;&amp;lt;input id ="output" type="text" name="result" value="0"  style="width: 169px; height: 30px; color:blue;" readonly = "readonly"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="one" value="1" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="two" value="2" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="three" value="3" onclick = "Assign(this)"/&gt;&lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="add" value="+" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td rowspan="2"&gt;&amp;lt;input type="button"  name="clear" style = "height : 64px;" value="C" onclick = "Cancel()"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="four" value="4" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="five" value="5" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="six" value="6" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="subtract" value="-" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="seven" value="7" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="eight" value="8" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="nine" value="9" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="multiply" value="*" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td rowspan="2"&gt;&amp;lt;input type="button"  name="equals" style = "height : 64px;" value="=" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="zero" value="0" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="negative" value="+/-" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="modulus" value="%" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;td&gt;&amp;lt;input type="button"  name="divide" value="/" onclick = "Assign(this)"/&gt;&amp;lt;/td&gt;&lt;br /&gt;&amp;lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/form&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt/html&gt;&lt;/pre&gt;&lt;br /&gt;________________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/facebook" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=facebook" alt=" " /&gt;Facebook&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-2160939338138717649?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/2160939338138717649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=2160939338138717649' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2160939338138717649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2160939338138717649'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/07/steps-to-create-facebook-application.html' title='Instructions to Create a Facebook Application'/><author><name>Harisha Nelapatla</name><uri>http://www.blogger.com/profile/07667638729510531650</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8206834.post-304301843218190631</id><published>2009-07-12T23:49:00.000-07:00</published><updated>2009-07-12T23:52:11.855-07:00</updated><title type='text'>Oracle Business Intelligence : Workaround / Solution to "[46036] Internal Assertion" Error</title><content type='html'>Symptom:&lt;br /&gt;&lt;br /&gt;When checking in changes to Oracle BI repository (RPD), Admintool fails with an error message:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;    [46036] Internal Assertion: Condition FALSE, file server/Utility/Generic/NQThreads/SUGThread.cpp, line 515&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Solution / Workaround:&lt;br /&gt;&lt;br /&gt;Edit &amp;lt;BI_HOME&gt;/server/Config/NQSConfig.INI configuration file to increase the value of &lt;code&gt;SERVER_THREAD_STACK_SIZE&lt;/code&gt; parameter. Replace the line &lt;code&gt;SERVER_THREAD_STACK_SIZE = 0;&lt;/code&gt; with &lt;code&gt;SERVER_THREAD_STACK_SIZE = 512 KB;&lt;/code&gt; and restart the Analytics server (SAS)&lt;br /&gt;&lt;br /&gt;________________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/oracle" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=oracle" alt=" " /&gt;Oracle&lt;/a&gt; | &lt;a href="http://technorati.com/tag/business-intelligence" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=business-intelligence" alt=" " /&gt;Business Intelligence&lt;/a&gt; | &lt;a href="http://technorati.com/tag/siebel-analytics" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=siebel-analytics" alt=" " /&gt;Siebel Analytics&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-304301843218190631?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/304301843218190631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=304301843218190631' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/304301843218190631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/304301843218190631'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/07/oracle-business-intelligence-workaround.html' title='Oracle Business Intelligence : Workaround / Solution to &quot;[46036] Internal Assertion&quot; Error'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-1158307301856005161</id><published>2009-06-05T02:14:00.000-07:00</published><updated>2009-06-09T15:34:19.470-07:00</updated><title type='text'>Mac OS X 10.5 Tip: Outgoing Only sendmail</title><content type='html'>By default, &lt;code&gt;sendmail&lt;/code&gt; is disabled on Mac OS X 10.5 (Leopard). If you just want to enable/disable sending outgoing mail, run the following highlighted commands.&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% &lt;b&gt;sudo postfix start&lt;/b&gt;&lt;br /&gt;Password:&lt;br /&gt;postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;&lt;br /&gt;% netstat -an | grep LIST | grep 25&lt;br /&gt;tcp4       0      0  127.0.0.1.25           *.*                    LISTEN&lt;br /&gt;&lt;br /&gt;% &lt;b&gt;sudo postfix stop&lt;/b&gt;&lt;br /&gt;postfix/postfix-script: stopping the Postfix mail system&lt;br /&gt;&lt;br /&gt;% netstat -an | grep LIST | grep 25&lt;br /&gt;%&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;One of several possible error messages [that might have lead you to this page] is pasted below. The above solution should fix it.&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;&lt;br /&gt;  nested exception is:&lt;br /&gt; java.net.ConnectException: Connection refused&lt;br /&gt; at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391)&lt;br /&gt; at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)&lt;br /&gt; at javax.mail.Service.connect(Service.java:288)&lt;br /&gt; at javax.mail.Service.connect(Service.java:169)&lt;br /&gt; at javax.mail.Service.connect(Service.java:118)&lt;br /&gt; at javax.mail.Transport.send0(Transport.java:188)&lt;br /&gt; at javax.mail.Transport.send(Transport.java:118)&lt;br /&gt;        ...&lt;br /&gt;        ...&lt;br /&gt;Caused by: java.net.ConnectException: Connection refused&lt;br /&gt; at java.net.PlainSocketImpl.socketConnect(Native Method)&lt;br /&gt; at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)&lt;br /&gt; at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)&lt;br /&gt; at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)&lt;br /&gt; at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)&lt;br /&gt; at java.net.Socket.connect(Socket.java:520)&lt;br /&gt; at java.net.Socket.connect(Socket.java:470)&lt;br /&gt; at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233)&lt;br /&gt; at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)&lt;br /&gt; at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359)&lt;br /&gt; ... 9 more&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-1158307301856005161?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/1158307301856005161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=1158307301856005161' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1158307301856005161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1158307301856005161'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/06/mac-os-x-105-tip-sendmail-outgoing-only.html' title='Mac OS X 10.5 Tip: Outgoing Only sendmail'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-1390498480375935240</id><published>2009-05-23T01:16:00.000-07:00</published><updated>2009-05-23T01:25:32.272-07:00</updated><title type='text'>Installing Siebel Web Extension (SWE) on top of Sun Java System Web Server 7.0</title><content type='html'>As of today, &lt;a href="http://www.sun.com/software/products/web_srvr/index.xml"&gt;Sun Java System Web Server&lt;/a&gt; 7.0 is not a certified platform to deploy Siebel 8.0 enterprise on. We are working with Oracle Corporation to make this certification happen so our customers can take advantage of the performance optimizations that went into the web server release 7.0.&lt;br /&gt;&lt;br /&gt;Meanwhile those who want to give it a try can do so with little effort. In release SJSWS 7.0, the &lt;code&gt;start/stop/restart/&lt;/code&gt;.. scripts were appropriately relocated to &lt;code&gt;bin&lt;/code&gt; directory under the virtual web server instance. The installer for Siebel 8.0 Web Server Extension looks for the &lt;code&gt;start&lt;/code&gt; script [of the web server] under the home directory of the virtual web server instance. (because it was the default location until the release of SJSWS 7.0). The installation fails if the installer cannot find the &lt;code&gt;start&lt;/code&gt; script in the location it is expecting it to be.&lt;br /&gt;&lt;br /&gt;Due to the relocation mentioned above, installation of the Siebel Web Server Extension fails at the very last step where it tries to modify the &lt;code&gt;start&lt;/code&gt; script with a bunch of &lt;code&gt;LD_PRELOAD&lt;/code&gt;s so the Siebel Web Extension loads up and runs on the Sun Java System Web Server. To get around this failure, all you have to do is to create a symbolic link in the home directory of the virtual web server instance pointing to the &lt;code&gt;startserv&lt;/code&gt; script residing in the &lt;code&gt;bin&lt;/code&gt; directory.&lt;br /&gt;&lt;br /&gt;The following example shows the necessary steps.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% pwd&lt;br /&gt;/export/pspp/SJWS7U5/https-siebel-pspp&lt;br /&gt;&lt;br /&gt;% ln -s bin/startserv start&lt;br /&gt;&lt;br /&gt;% ls -l start&lt;br /&gt;lrwxrwxrwx   1 pspp     dba           13 May 17 17:01 start -&gt; bin/startserv&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Install Siebel Web Extension in the normal way. No other changes are required.&lt;br /&gt;&lt;br /&gt;AFTER SWE INSTALLATION:&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% ls -l start*&lt;br /&gt;-rwxr-xr-x   1 pspp     dba         4157 May 17 17:38 start&lt;br /&gt;-rwxr-xr-x   1 pspp     dba         3456 May 17 17:38 start_.bak&lt;br /&gt;&lt;br /&gt;% mv bin/startserv bin/startserv.orig&lt;br /&gt;% mv start bin/startserv&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notice that the Siebel installer actually made two copies of the startup script from the symbolic link. The original &lt;code&gt;bin/startserv&lt;/code&gt; remained intact after the SWE installation.&lt;br /&gt;&lt;br /&gt;Finally start the Web Server instance by running the &lt;code&gt;startserv&lt;/code&gt; script. It should start with no issues.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% pwd&lt;br /&gt;/export/pspp/SJWS7U5/https-siebel-pspp/bin&lt;br /&gt;&lt;br /&gt;% ./startserv&lt;br /&gt;Sun Java System Web Server 7.0U5 B03/10/2009 16:38&lt;br /&gt;&lt;b&gt;info: swe_init reports: SWE plug-in log file&lt;/b&gt;&lt;br /&gt;info: CORE5076: Using [Java HotSpot(TM) Server VM, Version 1.5.0_15] from [Sun Microsystems Inc.]&lt;br /&gt;info: HTTP3072: http-listener-1: http://siebel-pspp:8000 ready to accept requests&lt;br /&gt;&lt;b&gt;info: CORE3274: successful server startup&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Before we conclude, do not forget the fact that Sun Java System Web Server 7.0 is not yet certified with Siebel 8.0 release. Use the instructions mentioned in this blog post at your own risk. However if you do like to take that risk, consider installing the latest release of Sun Java System Web Server, which is SJSWS 7.0 Update 5 as of this writing.&lt;br /&gt;&lt;br /&gt;Stay tuned for the certification news though.&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Originally posted on:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/installing_siebel_web_extension_swe"&gt;http://blogs.sun.com/mandalika/entry/installing_siebel_web_extension_swe&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/oracle" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=oracle" alt=" " /&gt;Oracle&lt;/a&gt; | &lt;a href="http://technorati.com/tag/siebel" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=siebel" alt=" " /&gt;Siebel&lt;/a&gt; | &lt;a href="http://technorati.com/tag/crm" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=crm" alt=" " /&gt;CRM&lt;/a&gt; | &lt;a href="http://technorati.com/tag/solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=solaris" alt=" " /&gt;Solaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/sjsws" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=sjsws" alt=" " /&gt;Sun Java System Web Server&lt;/a&gt; | &lt;a href="http://technorati.com/tag/iplanet" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=iplanet" alt=" " /&gt;iPlanet&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-1390498480375935240?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/1390498480375935240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=1390498480375935240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1390498480375935240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1390498480375935240'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/05/installing-siebel-web-extension-swe-on.html' title='Installing Siebel Web Extension (SWE) on top of Sun Java System Web Server 7.0'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-1160990316508980774</id><published>2009-05-01T00:32:00.000-07:00</published><updated>2009-05-01T00:32:00.291-07:00</updated><title type='text'>Oracle E-Business Suite R12 Database Tier on Solaris 10 x64</title><content type='html'>The long wait for this certification is over. Oracle Corporation finally announced support for Solaris 10 x64 as the certified E-Business Suite platform for the database tier. Oracle E-Business Suite Release 12 (12.0.4) is now certified with Oracle Database Server 10&lt;i&gt;g&lt;/i&gt; R2 version 10.2.0.4 on the 'database tier only' (previously known as 'split configuration' in 11&lt;i&gt;i&lt;/i&gt;) platform Sun Solaris x86/64.&lt;br /&gt;&lt;br /&gt;The following Metalink documents might be of interest to Sun-Oracle customers who are waiting for this certification to happen.&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; &lt;a href="https://metalink.oracle.com/metalink/plsql/f?p=130:14:8918342840198090102::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,343917.1,1,1,1,helvetica"&gt;Frequently Asked Questions: Oracle E-Business Suite Support on x86-64&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="https://metalink.oracle.com/metalink/plsql/f?p=130:14:8918342840198090102::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,456197.1,1,1,0,helvetica"&gt;Using Oracle E-Business Suite Release 12 with a Database Tier Only Platform on Oracle 10g Release 2&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="https://metalink2.oracle.com/metalink/plsql/f?p=130:14:8918342840198090102::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,454750.1,1,0,1,helvetica"&gt;Interoperability Notes Oracle E-Business Suite Release 12 with Oracle Database 10g Release 2 (10.2.0)&lt;/a&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/oracle" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=oracle" alt=" " /&gt;Oracle&lt;/a&gt; | &lt;a href="http://technorati.com/tag/e-business-suite" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=e-business-suite" alt=" " /&gt;E-Business Suite&lt;/a&gt; | &lt;a href="http://technorati.com/tag/oracle-applications" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=oracle-applications" alt=" " /&gt;Oracle Applications&lt;/a&gt; | &lt;a href="http://technorati.com/tag/solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=solaris" alt=" " /&gt;Solaris&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-1160990316508980774?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/1160990316508980774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=1160990316508980774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1160990316508980774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1160990316508980774'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/05/oracle-e-business-suite-r12-database.html' title='Oracle E-Business Suite R12 Database Tier on Solaris 10 x64'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-2601275785077476962</id><published>2009-04-24T00:50:00.000-07:00</published><updated>2009-04-24T00:50:30.698-07:00</updated><title type='text'>Developing MySQL Database Applications With PHP</title><content type='html'>A four part tutorial that explains the PHP / MySQL extensions - mysql, mysqli, and pdo_mysql - with simple examples is now accessible from &lt;a href="http://developers.sun.com"&gt;Sun Developer Network&lt;/a&gt;. While most of the information presented in the tutorial is available elsewhere in bits and pieces, the real value-add is in the introduction of the MySQL native driver for PHP, mysqlnd.&lt;br /&gt;&lt;br /&gt;Here is a brief description of all four parts in the series:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;a href="http://developers.sun.com/databases/articles/mysql_php1.html"&gt;Part 1: Using the MySQL Improved Extension, mysqli&lt;/a&gt; -- describes mysqli, the MySQL Improved Extension that is the successor to the mysql extension&lt;br /&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://developers.sun.com/databases/articles/mysql_php2.html"&gt;Part 2: Using the MySQL Extension, mysql&lt;/a&gt; -- describes the original extension designed to develop PHP applications that interact with a MySQL database&lt;br /&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://developers.sun.com/databases/articles/mysql_php3.html"&gt;Part 3: Using the PDO Extension With MySQL Driver, pdo_mysql&lt;/a&gt; -- describes the pdo_mysql driver, which implements the PHP Data Objects (PDO) interface to access the MySQL Server from PHP&lt;br /&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://developers.sun.com/databases/articles/mysql_php4.html"&gt;Part 4: Using the MySQL Native Driver for PHP, mysqlnd&lt;/a&gt; -- describes the MySQL native driver for PHP, mysqlnd, which is an alternative to the MySQL client library, libmysql, for connecting from PHP 5 and PHP 6 to MySQL Server 4.1 or later&lt;/ul&gt;&lt;br /&gt;Application developers who are new to the development of MySQL database applications with PHP are the target audience of this tutorial.&lt;br /&gt;&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/mysql" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=mysql" alt=" " /&gt;MySQL&lt;/a&gt; | &lt;a href="http://technorati.com/tag/php" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=php" alt=" " /&gt;PHP&lt;/a&gt; | &lt;a href="http://technorati.com/tag/mysqlnd" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=mysqlnd" alt=" " /&gt;mysqlnd&lt;/a&gt; | &lt;a href="http://technorati.com/tag/phpextensions" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=phpextensions" alt=" " /&gt;PHP Extensions&lt;/a&gt; | &lt;a href="http://technorati.com/tag/mysqli" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=mysqli" alt=" " /&gt;mysqli&lt;/a&gt; | &lt;a href="http://technorati.com/tag/pdo" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=pdo" alt=" " /&gt;PDO&lt;/a&gt; | &lt;a href="http://technorati.com/tag/pdo_mysql" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=pdo_mysql" alt=" " /&gt;pdo_mysql&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-2601275785077476962?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/2601275785077476962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=2601275785077476962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2601275785077476962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2601275785077476962'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/04/developing-mysql-database-applications.html' title='Developing MySQL Database Applications With PHP'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-7902539271896953753</id><published>2009-04-15T21:02:00.000-07:00</published><updated>2009-04-15T21:06:01.283-07:00</updated><title type='text'>Exploring the Features of MySQL Connector/C++</title><content type='html'>With the introduction of MySQL Connector/C++, now C++ application developers have one additional option to choose from, to connect to MySQL Server 5.1 or later from a C++ application. Admittedly, as of today, there isn't enough documentation with examples to show the capabilities [and gotchas] of MySQL Connector/C++. I tried to fill that gap with the technical article, &lt;a href="http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html"&gt;Developing Database Applications Using MySQL Connector/C++&lt;/a&gt;. Hopefully it serves as a starting point for the C++ developers while waiting for the MySQL Connectors documentation team to publish the official documentation on MySQL Developer Zone.&lt;br /&gt;&lt;br /&gt;While you are at it, don't forget to check the supplement document, &lt;a href="http://dev.mysql.com/tech-resources/articles/building-mysql-connector-cpp.html"&gt;Installing MySQL Connector/C++ from Source&lt;/a&gt;, in case if you want to build the driver on your own from the source code.&lt;br /&gt;&lt;br /&gt;________________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/mysql" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=mysql" alt=" " /&gt;MySQL&lt;/a&gt; | &lt;a href="http://technorati.com/tag/connector%2Fc" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=connector%2Fc" alt=" " /&gt;Connector/C++&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-7902539271896953753?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/7902539271896953753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=7902539271896953753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7902539271896953753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7902539271896953753'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/04/exploring-features-of-mysql-connectorc.html' title='Exploring the Features of MySQL Connector/C++'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-6782897676486387511</id><published>2009-04-07T21:23:00.000-07:00</published><updated>2009-04-07T21:33:55.606-07:00</updated><title type='text'>Controlling [Virtual] Network Interfaces in a Non-Global Solaris Zone</title><content type='html'>In the software world, some tools like SAP NetWeaver's &lt;a href="http://www.sap.com/platform/netweaver/components/controller/index.epx"&gt;Adaptive Computing Controller&lt;/a&gt; (ACC) require full control over a network interface, so they can bring up/down the NICs at their will to fulfill their responsibilities. Those tools may function normally on Solaris 10 [and later] as long as they are run in the global zone. However there might be some trouble when those tools are attempted to run in a non-global zone, especially on machines with only one physical network interface installed, and when the non-global zones are created with the default configuration. This blog post attempts to suggest few solutions to get around those issues, so the tools can function the way they normally do in the global zone.&lt;br /&gt;&lt;br /&gt;If the machine has only one NIC installed, there are at least two issues that will prevent tools like ACC from working in a non-global zone.&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Since there is only one network interface on the system, it is not possible to dedicate that interface to the non-global zone where ACC is supposed to run. Hence all the zones, including the global zone, must share the physical network interface.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; When the physical network interface is being shared across multiple zones, it is not possible to plumb/unplumb the network interface from a Shared-IP Non-Global Zone. Only the root users in the global zone can plumb/unplumb the lone physical network interface.&lt;/li&gt; &lt;ul&gt;When a non-global zone is created with the default configuration, Shared-IP zone is created by default. Shared-IP zones have separate IP addresses, but share the IP routing configuration with the global zone.&lt;/ul&gt;&lt;/ol&gt;&lt;br /&gt;Fortunately, Solaris 10 has a solution to the aforementioned issues in the form of &lt;a href="http://opensolaris.org/os/project/crossbow/"&gt;Network Virtualization&lt;/a&gt;. &lt;i&gt;Crossbow&lt;/i&gt; is the code name for network virtualization in Solaris. Crossbow provides the necessary building blocks to virtualize a single physical network interface into multiple virtual network interfaces (VNICs) - so the solution to the issue at hand is to create a virtual network interface, and then to create an Exclusive-IP Non-Global Zone using the virtual NIC. Rest of the blog post demonstrates the simple steps to create a VNIC, and to configure a non-global zone as Exclusive-IP Zone.&lt;H3&gt;Create a Virtual Network Interface using Crossbow&lt;/H3&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;Make sure the OS has Crossbow functionality&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;global# cat /etc/release&lt;br /&gt;                 Solaris Express Community Edition snv_111 SPARC&lt;br /&gt;           Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.&lt;br /&gt;                        Use is subject to license terms.&lt;br /&gt;                             Assembled 23 March 2009&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Crossbow has been integrated into Solaris Express Community Edition (Nevada) build 105 - hence all Nevada builds starting with build 105 will have the Crossbow functionality. OpenSolaris 2009.06 and the next major update to Solaris 10 are expected to have the support for network virtualization out-of-the-box.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Check the existing zones and the available physical and virtual network interfaces.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;global# zoneadm list -cv&lt;br /&gt;  ID NAME             STATUS     PATH                           BRAND    IP    &lt;br /&gt;   0 global           running    /                              native   shared&lt;br /&gt;&lt;br /&gt;global# dladm show-link&lt;br /&gt;LINK        CLASS    MTU    STATE    OVER&lt;br /&gt;&lt;b&gt;e1000g0&lt;/b&gt;     phys     1500   up       --&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In this example, there is only one NIC, e1000g0, on the server; and there are no non-global zones installed.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Create a virtual network interface based on device e1000g0 with an automatically generated MAC address. If the NIC has factory MAC addresses available, one of them will be used. Otherwise, a random address is selected. The &lt;code&gt;auto&lt;/code&gt; mode is the default action if none is specified. &lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;global# &lt;b&gt;&lt;font color="green"&gt;dladm create-vnic -l e1000g0 vnic1&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Check the available network interfaces one more time. Now you should be able to see the newly created virtual NIC in addition to the existing physical network interface. It is also possible to list only the virtual NICs.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;global# dladm show-link&lt;br /&gt;LINK        CLASS    MTU    STATE    OVER&lt;br /&gt;e1000g0     phys     1500   up       --&lt;br /&gt;&lt;b&gt;vnic1       vnic     1500   up       e1000g0&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;global# dladm show-vnic&lt;br /&gt;LINK         OVER         SPEED  MACADDRESS           MACADDRTYPE         VID&lt;br /&gt;&lt;b&gt;vnic1        e1000g0      1000   2:8:20:32:9:10       random              0&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/ul&gt;&lt;H3&gt;Create a Non-Global Zone with the VNIC&lt;/H3&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt; Create an Exclusive-IP Non-Global Zone with the newly created VNIC being the primary network interface.&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;global # mkdir -p /export/zones/sapacc&lt;br /&gt;global # chmod 700 /export/zones/sapacc&lt;br /&gt;&lt;br /&gt;global # &lt;b&gt;zonecfg -z sapacc&lt;/b&gt;&lt;br /&gt;sapacc: No such zone configured&lt;br /&gt;Use 'create' to begin configuring a new zone.&lt;br /&gt;zonecfg:sapacc&gt; create&lt;br /&gt;zonecfg:sapacc&gt; set zonepath=/export/zones/sapacc&lt;br /&gt;zonecfg:sapacc&gt; set autoboot=false&lt;br /&gt;zonecfg:sapacc&gt; &lt;b&gt;&lt;font color="green"&gt;set ip-type=exclusive&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;zonecfg:sapacc&gt; add net&lt;br /&gt;zonecfg:sapacc:net&gt; &lt;b&gt;&lt;font color="green"&gt;set physical=vnic1&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;zonecfg:sapacc:net&gt; end&lt;br /&gt;zonecfg:sapacc&gt; verify&lt;br /&gt;zonecfg:sapacc&gt; commit&lt;br /&gt;zonecfg:sapacc&gt; exit&lt;br /&gt;&lt;br /&gt;global # &lt;b&gt;zoneadm -z sapacc install&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;global # &lt;b&gt;zoneadm -z sapacc boot&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;global #  zoneadm list -cv&lt;br /&gt;  ID NAME             STATUS     PATH                           BRAND    IP    &lt;br /&gt;   0 global           running    /                              native   shared&lt;br /&gt;   &lt;b&gt;1 sapacc           running    /export/zones/sapacc         native   excl&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; Configure the new non-global zone including the IP address and the network services&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;global # &lt;b&gt;zlogin -C -e [ sapacc&lt;/b&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;  &gt; Confirm the following information.  If it is correct, press F2;             &lt;br /&gt;    to change any information, press F4.                                        &lt;br /&gt;                                                                                &lt;br /&gt;                                                                                &lt;br /&gt;                  Host name: sap-zone2&lt;br /&gt;                 IP address: 10.6.227.134                                       &lt;br /&gt;    System part of a subnet: Yes                                                &lt;br /&gt;                    Netmask: 255.255.255.0                                      &lt;br /&gt;                Enable IPv6: No                                                 &lt;br /&gt;              Default Route: Detect one upon reboot                             &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; Inside the non-global zone, check the status of the VNIC and the status of the network service&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;local# hostname&lt;br /&gt;sap-zone2&lt;br /&gt;&lt;br /&gt;local# zonename&lt;br /&gt;sapacc&lt;br /&gt;&lt;br /&gt;local# ifconfig -a&lt;br /&gt;lo0: flags=2001000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL&gt; mtu 8232 index 1&lt;br /&gt;        inet 127.0.0.1 netmask ff000000 &lt;br /&gt;&lt;b&gt;vnic1&lt;/b&gt;: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 2&lt;br /&gt;        &lt;b&gt;inet 10.6.227.134&lt;/b&gt; netmask ffffff00 broadcast 10.6.227.255&lt;br /&gt;        ether 2:8:20:32:9:10 &lt;br /&gt;lo0: flags=2002000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL&gt; mtu 8252 index 1&lt;br /&gt;        inet6 ::1/128 &lt;br /&gt;&lt;br /&gt;local# svcs svc:/network/physical&lt;br /&gt;STATE          STIME    FMRI&lt;br /&gt;disabled       13:02:18 svc:/network/physical:nwam&lt;br /&gt;&lt;b&gt;online         13:02:24 svc:/network/physical:default&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;li&gt;Check the network connectivity.&lt;br /&gt;&lt;br /&gt;From inside the non-global zone to the outside world:&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;local# ping -s sap29&lt;br /&gt;PING sap29: 56 data bytes&lt;br /&gt;64 bytes from sap29 (10.6.227.177): icmp_seq=0. time=0.680 ms&lt;br /&gt;64 bytes from sap29 (10.6.227.177): icmp_seq=1. time=0.452 ms&lt;br /&gt;64 bytes from sap29 (10.6.227.177): icmp_seq=2. time=0.561 ms&lt;br /&gt;64 bytes from sap29 (10.6.227.177): icmp_seq=3. time=0.616 ms&lt;br /&gt;^C&lt;br /&gt;----sap29 PING Statistics----&lt;br /&gt;4 packets transmitted, 4 packets received, 0% packet loss&lt;br /&gt;round-trip (ms)  min/avg/max/stddev = 0.452/0.577/0.680/0.097&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;From the outside world to the non-global zone:&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;remotehostonWAN# &lt;b&gt;telnet sap-zone2&lt;br /&gt;Trying 10.6.227.134...&lt;br /&gt;Connected to sap-zone2.sun.com.&lt;/b&gt;&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;login: test&lt;br /&gt;Password: &lt;br /&gt;Sun Microsystems Inc.   SunOS 5.11      snv_111 November 2008&lt;br /&gt;&lt;br /&gt;-bash-3.2$ /usr/sbin/ifconfig -a&lt;br /&gt;lo0: flags=2001000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL&gt; mtu 8232 index 1&lt;br /&gt;        inet 127.0.0.1 netmask ff000000 &lt;br /&gt;&lt;b&gt;vnic1&lt;/b&gt;: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 2&lt;br /&gt;        &lt;b&gt;inet 10.6.227.134&lt;/b&gt; netmask ffffff00 broadcast 10.6.227.255&lt;br /&gt;lo0: flags=2002000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL&gt; mtu 8252 index 1&lt;br /&gt;        inet6 ::1/128 &lt;br /&gt;-bash-3.2$ exit&lt;br /&gt;logout&lt;br /&gt;Connection to sap-zone2 closed.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/ul&gt;&lt;H3&gt;Dynamic [Re]Configuration of the [Virtual] Network Interface in a Non-Global Zone&lt;/H3&gt;&lt;br /&gt;&lt;ul type="none"&gt;&lt;li&gt;Finally try plumbing down/up the virtual network interface inside the Exclusive-IP Non-Global Zone&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;global # &lt;b&gt;zlogin -C -e [ sapacc&lt;/b&gt;&lt;br /&gt;[Connected to zone 'sapacc' console]&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;zoneconsole# &lt;b&gt;ifconfig vnic1 unplumb&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;zoneconsole# /usr/sbin/ifconfig -a&lt;br /&gt;lo0: flags=2001000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL&gt; mtu 8232 index 1&lt;br /&gt;        inet 127.0.0.1 netmask ff000000&lt;br /&gt;&lt;br /&gt;zoneconsole# &lt;b&gt;ifconfig vnic1 plumb&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;zoneconsole# &lt;b&gt;ifconfig vnic1 10.6.227.134 netmask 255.255.255.0 up&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;zoneconsole# /usr/sbin/ifconfig -a&lt;br /&gt;lo0: flags=2001000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL&gt; mtu 8232 index 1&lt;br /&gt;        inet 127.0.0.1 netmask ff000000&lt;br /&gt;&lt;b&gt;vnic1&lt;/b&gt;: flags=1000843&lt;UP,BROADCAST,RUNNING,MULTICAST,IPv4&gt; mtu 1500 index 2&lt;br /&gt;        &lt;b&gt;inet 10.6.227.134&lt;/b&gt; netmask ffffff00 broadcast 10.6.227.255&lt;br /&gt;lo0: flags=2002000849&lt;UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL&gt; mtu 8252 index 1&lt;br /&gt;        inet6 ::1/128&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/ul&gt;&lt;br /&gt;As simple as that! Before we conclude, be informed that prior to Crossbow, Solaris system administrators were required to use &lt;a href="http://docs.sun.com/app/docs/doc/816-4554/fpjve?a=view"&gt;Virtual Local Area Networks (VLAN)&lt;/a&gt; to achieve similar outcomes.&lt;br /&gt;&lt;br /&gt;Check &lt;a href="http://opensolaris.org/os/community/zones/faq/"&gt;Zones and Containers FAQ&lt;/a&gt;, if you are stuck with a strange situation or if you need some interesting ideas around virtualization on Solaris.&lt;br /&gt;________________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=solaris" alt=" " /&gt;Solaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/virtualization" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=virtualization" alt=" " /&gt;Virtualization&lt;/a&gt; | &lt;a href="http://technorati.com/tag/crossbow" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=crossbow" alt=" " /&gt;Crossbow&lt;/a&gt; | &lt;a href="http://technorati.com/tag/sap" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=sap" alt=" " /&gt;SAP&lt;/a&gt; | &lt;a href="http://technorati.com/tag/netweaver" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=netweaver" alt=" " /&gt;NetWeaver&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-6782897676486387511?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/6782897676486387511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=6782897676486387511' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6782897676486387511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6782897676486387511'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/04/controlling-virtual-network-interfaces.html' title='Controlling [Virtual] Network Interfaces in a Non-Global Solaris Zone'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-8207653211658375183</id><published>2009-03-29T13:41:00.000-07:00</published><updated>2009-03-29T13:57:55.876-07:00</updated><title type='text'>Adobe [Acrobat] Reader 9.1.x on [Open]Solaris</title><content type='html'>Finally Adobe Reader is available for &lt;a href="http://www.opensolaris.org/os"&gt;OpenSolaris&lt;/a&gt;. It took 10 years (&lt;i&gt;nearly 4 years, to be fair&lt;/i&gt;) for Adobe to upgrade the Adobe [acrobat] reader from version 4.0.x to 9.1.x for Solaris x86. In any case, better late than never. You can download the latest copy of the Adobe reader (previously known as Acrobat reader) from Adobe's ftp site: &lt;a href="ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.1/enu/"&gt;ftp.adobe.com&lt;/a&gt;&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/opensolaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=opensolaris" alt=" " /&gt;OpenSolaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=solaris" alt=" " /&gt;Solaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/adobe" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=adobe" alt=" " /&gt;Adobe&lt;/a&gt; | &lt;a href="http://technorati.com/tag/acroread" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=acroread" alt=" " /&gt;acroread&lt;/a&gt; | &lt;a href="http://technorati.com/tag/acrobat" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=acrobat" alt=" " /&gt;acrobat&lt;/a&gt; | &lt;a href="http://technorati.com/tag/adobe-reader" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=adobe-reader" alt=" " /&gt;Adobe Reader&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-8207653211658375183?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/8207653211658375183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=8207653211658375183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8207653211658375183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8207653211658375183'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/03/adobe-acrobat-reader-91x-on-opensolaris.html' title='Adobe [Acrobat] Reader 9.1.x on [Open]Solaris'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-7229046736003868931</id><published>2009-02-26T22:55:00.000-08:00</published><updated>2009-02-26T22:58:54.669-08:00</updated><title type='text'>Accessing MySQL Database(s) with JDBC</title><content type='html'>A new technical article entitled "Using MySQL With Java Technology", has been posted on java.sun.com at:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://java.sun.com/developer/technicalArticles/mysql_java/index.html"&gt;http://java.sun.com/developer/technicalArticles/mysql_java/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This article explains the essential steps involved in manipulating the data in a MySQL database from a Java application. MySQL Connector/J JDBC driver was used in the example code to show the database connectivity, data manipulation steps. Application developers who are new to Java programming language [but not to MySQL database] are the target audience of this article.&lt;br /&gt;&lt;br /&gt;Stay tuned for the next article in this series "Using MySQL with PHP" ..&lt;br /&gt;&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/java" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=java" alt=" " /&gt;Java&lt;/a&gt; | &lt;a href="http://technorati.com/tag/jdbc" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=jdbc" alt=" " /&gt;JDBC&lt;/a&gt; | &lt;a href="http://technorati.com/tag/mysql" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=mysql" alt=" " /&gt;MySQL&lt;/a&gt; | &lt;a href="http://technorati.com/tag/connectorj" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=connectorj" alt=" " /&gt;Connector/J&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-7229046736003868931?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/7229046736003868931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=7229046736003868931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7229046736003868931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/7229046736003868931'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/02/accessing-mysql-databases-with-jdbc.html' title='Accessing MySQL Database(s) with JDBC'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-6076647306864473925</id><published>2009-02-24T00:12:00.000-08:00</published><updated>2009-02-24T00:12:00.172-08:00</updated><title type='text'>Sun Blueprint : MySQL in Solaris Containers</title><content type='html'>While the costs of managing a data center are becoming a major concern with the increased number of under-utilized servers, customers are actively looking for solutions to consolidate their workloads to:&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; improve server utilization&lt;br /&gt;&lt;li&gt; improve data center space utilization&lt;br /&gt;&lt;li&gt; reduce power and cooling requirements&lt;br /&gt;&lt;li&gt; lower capital and operating expenditures&lt;br /&gt;&lt;li&gt; reduce carbon footprint, ..&lt;/ul&gt;&lt;br /&gt;To cater those customers, Sun offers several virtualization technologies such as Logical Domains, Solaris Containers, xVM at free of cost for SPARC and x86/x64 platforms.&lt;br /&gt;&lt;br /&gt;In order to help our customers who are planning for the consolidation of their MySQL databases on systems running Solaris 10, we put together a document with a bunch of installation steps and the best practices to run MySQL inside a Solaris Container. Although the document was focused on the Solaris Containers technology, majority of the tuning tips including the ZFS tips are applicable to all MySQL instances running [on Solaris] under different virtualization technologies.&lt;br /&gt;&lt;br /&gt;You can access the blueprint document at the following location:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://wikis.sun.com/display/BluePrints/Running+MySQL+Database+in+Solaris+Containers"&gt;Running MySQL Database in Solaris Containers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The blueprint document briefly explains the MySQL server &amp; Solaris Containers technology, introduces different options to install MySQL server on Solaris 10, shows the steps involved in installing and running Solaris Zones &amp; MySQL, and finally provides few best practices to run MySQL optimally inside a Solaris Container.&lt;br /&gt;&lt;br /&gt;Feel free to leave a comment if you notice any incorrect information, or if you have generic suggestions to improve documents like these.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Acknowledgments&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Many thanks to Prashant Srinivasan, John David Duncan and Margaret B. for their help in different phases of this blueprint.&lt;br /&gt;&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/sun" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=sun" alt=" " /&gt;Sun&lt;/a&gt; | &lt;a href="http://technorati.com/tag/solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=solaris" alt=" " /&gt;Solaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/opensolaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=opensolaris" alt=" " /&gt;OpenSolaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/mysql" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=mysql" alt=" " /&gt;MySql&lt;/a&gt; | &lt;a href="http://technorati.com/tag/virtualization" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=virtualization" alt=" " /&gt;Virtualization&lt;/a&gt; | &lt;a href="http://technorati.com/tag/containers" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=containers" alt=" " /&gt;Containers&lt;/a&gt; | &lt;a href="http://technorati.com/tag/zones" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=zones" alt=" " /&gt;Zones&lt;/a&gt; | &lt;a href="http://technorati.com/tag/best-practices" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=best-practices" alt=" " /&gt;Best Practices&lt;/a&gt; | &lt;a href="http://technorati.com/tag/consolidation" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=consolidation" alt=" " /&gt;Consolidation&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-6076647306864473925?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/6076647306864473925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=6076647306864473925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6076647306864473925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6076647306864473925'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/02/sun-blueprint-mysql-in-solaris.html' title='Sun Blueprint : MySQL in Solaris Containers'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-5233402904262834649</id><published>2009-02-22T01:31:00.001-08:00</published><updated>2009-02-22T01:43:14.615-08:00</updated><title type='text'>PeopleSoft HRMS 8.9 Self-Service Benchmark on M3000 &amp; T5120 Servers</title><content type='html'>Sun published the PeopleSoft HRMS 8.9 Self-Service benchmark results today. The benchmark was conducted on 3 x Sun SPARC Enterprise M3000 and 1 x Sun SPARC Enterprise T5120 servers. Click on the following link for the full report with the benchmark results.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS8-HR-89_ORA_SUN_Ent_M3000.pdf"&gt;PeopleSoft HRMS 8.9 SELF-SERVICE Using ORACLE on Sun SPARC Enterprise M3000 and Enterprise T5120 Servers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Admittedly it is Sun's first PeopleSoft benchmark after a hiatus of over five years. However I am glad that we came up with a very nice cost effective solution in our comeback effort to the PeopleSoft applications' benchmarking.&lt;br /&gt;&lt;br /&gt;Some of the notes and highlights from this competitive benchmark are as follows.&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; The benchmark measured the average search and save transaction response times at a peak load of 4,000 concurrent users.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; 4,000 users is the limitation of the benchmark kit. All vendors using this benchmark kit are bound to this limitation. Hence it is easy to compare the performance as the throughput achieved by each vendor will be the same. In comparing the benchmark results from workloads like these, lower average [transaction response times, CPU, memory utilizations] and the hardware in use (lesser the better), usually indicate better performance.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; IBM and Sun are the only vendors who published benchmark results with PeopleSoft HRMS 8.9 Self-Service benchmark kit.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Sun's benchmark results are superior relative to IBM's &lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps8-hr-89_ora_ibm_z990_p4.pdf"&gt;best published result&lt;/a&gt; on a combination of z990 2084-C24 and eServer pSeries p690 servers. While I leave the price comparisons to the reader&lt;sup&gt;&lt;a href="#listprice"&gt;1&lt;/a&gt;&lt;/sup&gt;, I'd like to show the performance numbers extracted from the benchmark reports published by &lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/PS8-HR-89_ORA_SUN_Ent_M3000.pdf"&gt;Sun&lt;/a&gt; and &lt;a href="http://www.oracle.com/apps_benchmark/doc/peoplesoft/performance-report/ps8-hr-89_ora_ibm_z990_p4.pdf"&gt;IBM&lt;/a&gt;. All the following data/information is available in the benchmark reports. Feel free to draw your own conclusions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Average Transaction Response Times&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table frame="VOID" rules="ALL" width="65%" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="20%" align="center"&gt;Vendor&lt;/td&gt;&lt;td width="20%" align="center"&gt;Single User&lt;BR&gt;Search (sec)&lt;/td&gt;&lt;td width="20%" align="center"&gt;4,000 Users&lt;BR&gt;Search (sec)&lt;/td&gt;&lt;td width="20%" align="center"&gt;Single User&lt;BR&gt;Save (sec)&lt;/td&gt;&lt;td width="20%" align="center"&gt;4,000 Users&lt;BR&gt;Save (sec)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Sun&lt;/td&gt;&lt;td align="center"&gt;0.78&lt;/td&gt;&lt;td align="center"&gt;0.77&lt;/td&gt;&lt;td align="center"&gt;0.71&lt;/td&gt;&lt;td align="center"&gt;0.74&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;IBM&lt;/td&gt;&lt;td align="center"&gt;0.78&lt;/td&gt;&lt;td align="center"&gt;1.35&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;0.65&lt;/td&gt;&lt;td align="center"&gt;1.01&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Average CPU Utilizations&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table frame="VOID" rules="ALL" width="65%" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="20%" align="center"&gt;Vendor&lt;/td&gt;&lt;td width="20%" align="center"&gt;Web Server&lt;BR&gt;CPU%&lt;/td&gt;&lt;td width="20%" align="center"&gt;App Server1&lt;BR&gt;CPU%&lt;/td&gt;&lt;td width="20%" align="center"&gt;App Server2&lt;BR&gt;CPU%&lt;/td&gt;&lt;td width="20%" align="center"&gt;DB Server&lt;BR&gt;CPU%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Sun&lt;/td&gt;&lt;td align="center"&gt;23.10&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;66.92&lt;/td&gt;&lt;td align="center"&gt;67.85&lt;/td&gt;&lt;td align="center"&gt;27.45&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;IBM&lt;/td&gt;&lt;td align="center"&gt;45.81&lt;/td&gt;&lt;td align="center"&gt;59.70&lt;/td&gt;&lt;td align="center"&gt;N/A&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;40.66&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Average Memory Utilizations&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;table frame="VOID" rules="ALL" width="65%" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="20%" align="center"&gt;Vendor&lt;/td&gt;&lt;td width="20%" align="center"&gt;Web Server&lt;BR&gt;GB&lt;/td&gt;&lt;td width="20%" align="center"&gt;App Server1&lt;BR&gt;GB&lt;/td&gt;&lt;td width="20%" align="center"&gt;App Server2&lt;BR&gt;GB&lt;/td&gt;&lt;td width="20%" align="center"&gt;DB Server&lt;BR&gt;GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Sun&lt;/td&gt;&lt;td align="center"&gt;4.15&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;3.67&lt;/td&gt;&lt;td align="center"&gt;3.72&lt;/td&gt;&lt;td align="center"&gt;5.54&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;IBM&lt;/td&gt;&lt;td align="center"&gt;5.00&lt;/td&gt;&lt;td align="center"&gt;15.70&lt;/td&gt;&lt;td align="center"&gt;N/A&lt;/td&gt;&lt;td align="center"&gt;0.3 (Huh!?)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Hardware Configuration&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Vendor: &lt;b&gt;Sun Microsystems&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Topology Diagram&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src = "http://blogs.sun.com/mandalika/resource/PeopleSoft_HRSS89_Topology_M3000_T5120_Scaled2.jpg" alt="topology" /&gt;&lt;br /&gt;&lt;table frame="VOID" rules="ALL" width="85%" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="10%" align="center"&gt;Tier&lt;/td&gt;&lt;td width="13%" align="center"&gt;Server&lt;BR&gt;Model&lt;/td&gt;&lt;td width="10%" align="center"&gt;Server&lt;BR&gt;Count&lt;/td&gt;&lt;td width="16%" align="center"&gt;Processor&lt;/td&gt;&lt;br /&gt;&lt;td width="13%" align="center"&gt;Processor&lt;BR&gt;Speed&lt;/td&gt;&lt;td width="13%" align="center"&gt;Processor&lt;BR&gt;Count&lt;/td&gt;&lt;td width="13%" align="center"&gt;#Cores per&lt;BR&gt;Processor&lt;/td&gt;&lt;td width="12%" align="center"&gt;Memory&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Web&lt;/td&gt;&lt;td align="center"&gt;T5120&lt;/td&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;UltraSPARC-T2&lt;/td&gt;&lt;td align="center"&gt;1.2 GHz&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;td align="center"&gt;4&lt;/td&gt;&lt;td align="center"&gt;8 GB&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;App&lt;/td&gt;&lt;td align="center"&gt;M3000&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;2&lt;/td&gt;&lt;td align="center"&gt;SPARC64-VII&lt;/td&gt;&lt;td align="center"&gt;2.52 GHz&lt;/td&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;td align="center"&gt;4&lt;/td&gt;&lt;td align="center"&gt;8 GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;DB&lt;/td&gt;&lt;td align="center"&gt;M3000&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;td align="center"&gt;SPARC64-VII&lt;/td&gt;&lt;td align="center"&gt;2.52 GHz&lt;/td&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;td align="center"&gt;4&lt;/td&gt;&lt;td align="center"&gt;8 GB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;2 x Sun Storage J4200 arrays were used to host the database. Total disk space: ~1.34 Terabytes. Consumed only 120 GB disk space -- 115 GB for data on one array; and 5 GB for redo logs on the other array.&lt;br /&gt;&lt;br /&gt;Vendor: &lt;b&gt;IBM&lt;/b&gt;&lt;br /&gt;&lt;center&gt;&lt;table frame="VOID" rules="ALL" width="85%" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="10%" align="center"&gt;Tier&lt;/td&gt;&lt;td width="13%" align="center"&gt;Server&lt;BR&gt;Model&lt;/td&gt;&lt;td width="10%" align="center"&gt;Server&lt;BR&gt;Count&lt;/td&gt;&lt;td width="16%" align="center"&gt;Processor&lt;/td&gt;&lt;br /&gt;&lt;td width="13%" align="center"&gt;Processor&lt;BR&gt;Speed&lt;/td&gt;&lt;td width="13%" align="center"&gt;Processor&lt;BR&gt;Count&lt;/td&gt;&lt;td width="13%" align="center"&gt;#Cores per&lt;BR&gt;Processor&lt;/td&gt;&lt;td width="12%" align="center"&gt;Memory&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;Web&lt;/td&gt;&lt;td align="center"&gt;p690 (7040-681)&lt;/td&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;td align="center"&gt;POWER4&lt;/td&gt;&lt;td align="center"&gt;1.9 GHz&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;4&lt;/td&gt;&lt;td align="center"&gt;NA (?)&lt;/td&gt;&lt;td align="center"&gt;12 GB&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;App&lt;/td&gt;&lt;td align="center"&gt;p690 (7040-681)&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;td align="center"&gt;POWER4&lt;/td&gt;&lt;td align="center"&gt;1.9 GHz&lt;/td&gt;&lt;td align="center"&gt;12&lt;/td&gt;&lt;td align="center"&gt;NA (?)&lt;/td&gt;&lt;td align="center"&gt;32 GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;DB&lt;/td&gt;&lt;td align="center"&gt;zSeries 990, model 2084-C24&lt;/td&gt;&lt;td align="center"&gt;1&lt;/td&gt;&lt;td align="center"&gt;z990 Gen1&lt;/td&gt;&lt;td align="center"&gt;???&lt;/td&gt;&lt;td align="center"&gt;6&lt;/td&gt;&lt;br /&gt;&lt;td align="center"&gt;NA (?)&lt;/td&gt;&lt;td align="center"&gt;32 GB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;1 x IBM TotalStorage DS8300 Enterprise Storage Server, 2107-922 ws used to host the database. Total disk space: ~9 Terabytes.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; The combination of Sun SPARC Enterprise M3000 and T5120 servers consumed 1030 Watts on the average in a 7RU space in achieving 4,000 concurrent users. That is, in the case of similarly configured workloads, M3000/T5120 support 3.88 users per watt of the power consumed; and 571 users per rack unit.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Just like our prior &lt;a href="http://www.oracle.com/apps_benchmark/doc/sun-siebel-8-14000-pspp-on-solaris-benchmark-white-paper.pdf"&gt;Siebel&lt;/a&gt; and &lt;a href="http://www.oracle.com/apps_benchmark/doc/E-Bus-11i-PAY_ORA_SUN-T5220.pdf"&gt;Oracle E-Business Suite Payroll 11&lt;i&gt;i&lt;/i&gt;&lt;/a&gt; benchmarks, Sun collaborated with Oracle Corporation in executing this benchmark. And we sincerely thank our peers at Oracle Corporation for all their help and support over the past few months in executing this benchmark.&lt;br /&gt;___________&lt;br /&gt;&lt;br /&gt;I'm planning to post some of the tuning tips to run PeopleSoft optimally on Solaris 10. Stay tuned ..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/peoplesoft_hrms_8_9_self"&gt;http://blogs.sun.com/mandalika/entry/peoplesoft_hrms_8_9_self&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;________________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=solaris" alt=" " /&gt;Solaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/sun" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=sun" alt=" " /&gt;sun&lt;/a&gt; | &lt;a href="http://technorati.com/tag/oracle" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=oracle" alt=" " /&gt;oracle&lt;/a&gt; | &lt;a href="http://technorati.com/tag/peoplesoft" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=peoplesoft" alt=" " /&gt;peoplesoft&lt;/a&gt; | &lt;a href="http://technorati.com/tag/hrms" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=hrms" alt=" " /&gt;hrms&lt;/a&gt; | &lt;a href="http://technorati.com/tag/benchmark" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=benchmark" alt=" " /&gt;benchmark&lt;/a&gt; | &lt;a href="http://technorati.com/tag/m3000" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=m3000" alt=" " /&gt;m3000&lt;/a&gt; | &lt;a href="http://technorati.com/tag/t5120" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=t5120" alt=" " /&gt;t5120&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;sup&gt;&lt;a name="listprice"&gt;1&lt;/a&gt;&lt;/sup&gt;: It is relatively hard to obtain IBM's server list prices. On the other hand, it is very easy to find the list prices of Sun servers' from &lt;a href="http://store.sun.com"&gt;http://store.sun.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-5233402904262834649?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/5233402904262834649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=5233402904262834649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5233402904262834649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5233402904262834649'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/02/peoplesoft-hrms-89-self-service.html' title='PeopleSoft HRMS 8.9 Self-Service Benchmark on M3000 &amp; T5120 Servers'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-3983062036013661979</id><published>2009-02-11T01:47:00.000-08:00</published><updated>2009-02-11T01:49:03.263-08:00</updated><title type='text'>Mounting Windows' NTFS on [Open]Solaris x86/x64</title><content type='html'>The steps outlined in this blog post are derived from the &lt;a href="http://www.genunix.org/distributions/belenix_site/binfiles/README.FSWfsmisc.txt"&gt;Miscellaneous filesystem support for OpenSolaris on x86&lt;/a&gt; web page. I just added few examples to illustrate the steps to mount a partition with NTFS filesystem that exists on the external hard drive (in this case, it is a Seagate FreeAgent external hard drive).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step-by-Step instructions to mount NTFS filesystem on [Open]Solaris&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Install the packages : FSWpart and FSWfsmisc.&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; Download &lt;a href="http://www.belenix.org/binfiles/FSWpart.tar.gz"&gt;http://www.belenix.org/binfiles/FSWpart.tar.gz&lt;/a&gt; and &lt;a href="http://www.belenix.org/binfiles/FSWfsmisc.tar.gz"&gt;http://www.belenix.org/binfiles/FSWfsmisc.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Uncompress and install the packages with 'root' privileges.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;% gunzip -c FSWpart.tar.gz | tar xvf -&lt;br /&gt;# pkgadd -d . FSWpart&lt;br /&gt;&lt;br /&gt;% gunzip -c FSWfsmisc.tar.gz | tar xvf -&lt;br /&gt;# pkgadd -d . FSWfsmisc&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt; Find the logical device name for the NTFS partition. &lt;code&gt;-l&lt;/code&gt; option of the &lt;code&gt;rmformat&lt;/code&gt; command lists all removable devices along with their device names.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;# rmformat -l   &lt;br /&gt;Looking for devices...&lt;br /&gt;     1. Logical Node: /dev/rdsk/c1t0d0p0&lt;br /&gt;        Physical Node: /pci@0,0/pci-ide@1f,1/ide@1/sd@0,0&lt;br /&gt;        Connected Device: MATSHITA UJDA750 DVD/CDRW 1.60&lt;br /&gt;        Device Type: DVD Reader&lt;br /&gt; Bus: IDE&lt;br /&gt; Size: &lt;Unknown&gt;&lt;br /&gt; Label: &lt;Unknown&gt;&lt;br /&gt; Access permissions: &lt;Unknown&gt;&lt;br /&gt;     2. &lt;b&gt;Logical Node: /dev/rdsk/c2t0d0p0&lt;/b&gt;&lt;br /&gt;        Physical Node: /pci@0,0/pci1179,1@1d,7/storage@1/disk@0,0&lt;br /&gt;        &lt;b&gt;Connected Device: Seagate  FreeAgentDesktop 100F&lt;/b&gt;&lt;br /&gt;        Device Type: Removable&lt;br /&gt; Bus: USB&lt;br /&gt; Size: 953.9 GB&lt;br /&gt; Label: &lt;Unknown&gt;&lt;br /&gt; Access permissions: &lt;Unknown&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; Identify the NTFS partition on the external disk with the help of &lt;code&gt;fdisk&lt;/code&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;# fdisk /dev/rdsk/c2t0d0p0&lt;br /&gt;             Total disk size is 60800 cylinders&lt;br /&gt;             Cylinder size is 32130 (512 byte) blocks&lt;br /&gt;&lt;br /&gt;                                               Cylinders&lt;br /&gt;      Partition   Status    Type          Start   End   Length    %&lt;br /&gt;      =========   ======    ============  =====   ===   ======   ===&lt;br /&gt;          1                 IFS: NTFS         0  60800    60801    100&lt;br /&gt;&lt;br /&gt;SELECT ONE OF THE FOLLOWING:&lt;br /&gt;   1. Create a partition&lt;br /&gt;   2. Specify the active partition&lt;br /&gt;   3. Delete a partition&lt;br /&gt;   4. Change between Solaris and Solaris2 Partition IDs&lt;br /&gt;   5. Exit (update disk configuration and exit)&lt;br /&gt;   6. Cancel (exit without updating disk configuration)&lt;br /&gt;Enter Selection: 6&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;In this example, partition #1 i.e., c2t0d0p1 has the NTFS filesystem.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Mount the NTFS partition just like mounting an UFS filesystem using the &lt;code&gt;mount&lt;/code&gt; command. Use the argument &lt;code&gt;ntfs&lt;/code&gt; to the command line option &lt;code&gt;-F&lt;/code&gt;. Since the filesystem was mounted in a slightly different way than the conventional way, use &lt;code&gt;/usr/bin/xlsmounts&lt;/code&gt; to see the detailed mount table information.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;# mount -F ntfs /dev/dsk/c2t0d0p1 /mnt&lt;br /&gt;&lt;br /&gt;# /usr/bin/xlsmounts&lt;br /&gt;  PHYSICAL DEVICE                 LOGICAL DEVICE      FS    PID         ADDR Mounted on&lt;br /&gt;/dev/dsk/c2t0d0p1              /dev/dsk/c2t0d0p1    ntfs   6755  127.0.0.1:/ /mnt&lt;br /&gt;&lt;br /&gt;# ls /mnt&lt;br /&gt;expForSun.dmp             MySQL5.1                   RECYCLER&lt;br /&gt;medium-64-bit             $RECYCLE.BIN               System Volume Information&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Notice the &lt;code&gt;127.0.0.1:/&lt;/code&gt; under &lt;code&gt;ADDR&lt;/code&gt; column in the output of &lt;code&gt;xlsmounts&lt;/code&gt;. NTFS mount uses userland NFSv2 server to access the filesystems on raw partitions. That is why the mount was shown as NFS client mounted from 127.0.0.1:/&lt;br /&gt;&lt;br /&gt;&lt;li&gt; To unmount the NTFS filesystem, use &lt;code&gt;/usr/bin/xumount&lt;/code&gt;. Solaris standard &lt;code&gt;umount&lt;/code&gt; command unmounts the filesystem but does not terminate the background NFS server process.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;# /usr/bin/xumount /mnt&lt;br /&gt;&lt;br /&gt;         - OR -&lt;br /&gt;&lt;br /&gt;# /usr/bin/xumount /dev/dsk/c2t0d0p1&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/ol&gt;&lt;br /&gt;Check the &lt;a href="http://www.genunix.org/distributions/belenix_site/binfiles/README.FSWfsmisc.txt"&gt;Miscellaneous filesystem support for OpenSolaris on x86&lt;/a&gt; page and Moinak Ghosh's blog post &lt;a href="http://blogs.sun.com/moinakg/entry/mount_and_access_ntfs_and"&gt;Mount and Access NTFS and Ext2FS from Solaris x86&lt;/a&gt; for the rest of the fine details.&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/mounting_windows_ntfs_on_open"&gt;http://blogs.sun.com/mandalika/entry/mounting_windows_ntfs_on_open&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/Solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=Solaris" alt=" " /&gt;Solaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/OpenSolaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=OpenSolaris" alt=" " /&gt;OpenSolaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/NTFS" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=NTFS" alt=" " /&gt;NTFS&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-3983062036013661979?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/3983062036013661979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=3983062036013661979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3983062036013661979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/3983062036013661979'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/02/mounting-windows-ntfs-on-opensolaris.html' title='Mounting Windows&apos; NTFS on [Open]Solaris x86/x64'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-1906773677500002392</id><published>2009-02-08T00:12:00.000-08:00</published><updated>2009-02-08T00:12:17.761-08:00</updated><title type='text'>Workaround to "eject of cdrom /dev/dsk/cxtxdxsx failed" Error on SXCE b106</title><content type='html'>&lt;b&gt;Symptom&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;On Solaris Express Community Edition build 106, &lt;code&gt;eject(1)&lt;/code&gt; fails intermittently (esp. when inserted the blank media) with the error: &lt;code&gt;eject of cdrom /dev/dsk/cxtxdxsx failed&lt;/code&gt;.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;# cat /etc/release&lt;br /&gt;                  Solaris Express Community Edition snv_106 X86&lt;br /&gt;           Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.&lt;br /&gt;                        Use is subject to license terms.&lt;br /&gt;                            Assembled 13 January 2009&lt;br /&gt;&lt;br /&gt;# eject&lt;br /&gt;&lt;b&gt;eject of cdrom /dev/dsk/c1t0d0s2 failed&lt;/b&gt;: A security policy in place prevents this sender &lt;br /&gt;from sending this message to this recipient, see message bus configuration file (rejected &lt;br /&gt;message had interface "org.freedesktop.Hal.Device.Storage" member "Eject" error name &lt;br /&gt;"(unset)" destination "org.freedesktop.Hal")&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Upgrade to snv_107. Meanwhile check the bug #&lt;a href="http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6791982"&gt;6791982&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Workaround&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Edit &lt;i&gt;/etc/dbus-1/system.d/hal.conf&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Add the following line to the &lt;code&gt;&amp;lt;policy context="default"&gt;&lt;/code&gt; section.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font size="3"&gt; &amp;lt;allow send_interface="org.freedesktop.Hal.Device.Storage"/&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;li&gt; Restart the &lt;a href="http://www.freedesktop.org/wiki/Software/dbus"&gt;D-Bus&lt;/a&gt; message bus system service.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font size="3"&gt; svcadm restart svc:/system/dbus:default&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;On a totally unrelated note, to see all the existing SMF services with a simple description, run:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font size="3"&gt; svcs -o FMRI,DESC&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;li&gt; Finally try to eject the CD/DVD disk by typing the &lt;code&gt;eject&lt;/code&gt; command.&lt;/ol&gt;&lt;br /&gt;&lt;i&gt;(Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/sxce_snv_106_workaround_to"&gt;http://blogs.sun.com/mandalika/entry/sxce_snv_106_workaround_to&lt;/a&gt;)&lt;/i&gt;&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/Solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=Solaris" alt=" " /&gt;Solaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/OpenSolaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=OpenSolaris" alt=" " /&gt;OpenSolaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/troubleshooting" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=troubleshooting" alt=" " /&gt;troubleshooting&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-1906773677500002392?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/1906773677500002392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=1906773677500002392' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1906773677500002392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/1906773677500002392'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/02/workaround-to-eject-of-cdrom.html' title='Workaround to &quot;eject of cdrom /dev/dsk/cxtxdxsx failed&quot; Error on SXCE b106'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-5057445234433072948</id><published>2009-01-31T19:41:00.000-08:00</published><updated>2009-01-31T19:41:45.847-08:00</updated><title type='text'>PHP: Memory savings with mysqlnd</title><content type='html'>mysqlnd may save memory. In the best cases, it may consume only 50% memory as that of libmysql esp. when the client application does not modify the data in the result set after executing a query. Keep in mind that the client must use ext/mysqli and treat the data returned by the query as &lt;i&gt;read-only&lt;/i&gt; in order to fully realize mysqlnd's memory gains. If the client application modifies any of the data, mysqlnd behaves just like libmysql.&lt;br /&gt;&lt;br /&gt;Let's have a quick look at the memory consumption in both the cases (mysqlnd and libmysql) with an example before delving into the internals. For easy comparison, the sample PHP script does not modify any of the arrays returned from the &lt;i&gt;fetch&lt;/i&gt; method. The following example uses &lt;a href="http://opensolaris.org/os/community/dtrace/"&gt;DTrace&lt;/a&gt; on Sun Solaris to monitor the calls to &lt;code&gt;malloc()&lt;/code&gt; and prints the requested bytes of memory on the standard output.&lt;br /&gt;&lt;br /&gt;Source code for the script: &lt;a href="http://blogs.sun.com/mandalika/resource/PHPmysqliClient.php"&gt;PHPmysqliClient.php&lt;/a&gt;. MySQL table structure and the sample data are shown in the other blog post: &lt;a href="http://technopark02.blogspot.com/2009/01/demonstrating-features-of-mysql-native.html#mysqltable"&gt;Demonstrating the Features of MySQL Native Driver for PHP, mysqlnd&lt;/a&gt;.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;bash# &lt;b&gt;cat monitormalloc.d&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;#!/usr/sbin/dtrace -s&lt;br /&gt;&lt;br /&gt;pid$1:libc:malloc:entry&lt;br /&gt;{&lt;br /&gt;  printf("\t\tSize : %d Bytes", arg0);&lt;br /&gt; ustack();&lt;br /&gt; @malloc[probefunc] = quantize(arg0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CASE 1: ext/mysqli with libmysql&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;In one terminal window:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;/opt/coolstack/php5/bin/php PHPmysqliClient.php&lt;/b&gt;&lt;br /&gt;In another terminal window, run monitormalloc.d `pgrep php` and press any key to continue ..&lt;br /&gt;&lt;br /&gt;Retrieved 3 row(s).&lt;br /&gt;&lt;br /&gt;CityName&lt;br /&gt;--------&lt;br /&gt;Hyderabad, India&lt;br /&gt;San Francisco, USA&lt;br /&gt;Sydney, Australia&lt;br /&gt;&lt;br /&gt;&lt;i&gt;In another terminal window:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;./monitormalloc.d `pgrep php`&lt;/b&gt;&lt;br /&gt;dtrace: script './monitormalloc.d' matched 1 probe&lt;br /&gt;CPU ID   FUNCTION:NAME&lt;br /&gt;  0  80920   malloc:entry  Size : 964 Bytes&lt;br /&gt;              libc.so.1`malloc&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce2173c1&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce23bb47&lt;br /&gt;              mysqli.so`0xce11d292&lt;br /&gt;&lt;br /&gt;  0  80920   malloc:entry  Size : 20 Bytes&lt;br /&gt;              libc.so.1`malloc&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce2173c1&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce23da60&lt;br /&gt;              mysqli.so`0xce11dc72&lt;br /&gt;&lt;br /&gt;  0  80920   malloc:entry  Size : 20 Bytes&lt;br /&gt;              libc.so.1`malloc&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce2173c1&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce21d991&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce21d9ce&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce23da72&lt;br /&gt;              mysqli.so`0xce11dc72&lt;br /&gt;&lt;br /&gt;  0  80920   malloc:entry  Size : 17 Bytes&lt;br /&gt;  &lt;i&gt;... elided stack traces for brevity ...&lt;/i&gt;&lt;br /&gt;  0  80920   malloc:entry  Size : 152 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 16384 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 8199 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 7 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 18261 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 58 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 4088 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 120 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 5 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 6 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 5 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 56 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 8164 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 8164 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 92 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 56 Bytes&lt;br /&gt;  0  80920   malloc:entry  Size : 8164 Bytes&lt;br /&gt;              libc.so.1`malloc&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce2173c1&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce21a27b&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce23b8a4&lt;br /&gt;              libmysqlclient.so.16.0.0`0xce23d4fa&lt;br /&gt;              mysqli.so`0xce11fe56&lt;br /&gt;&lt;br /&gt;  0  80920   malloc:entry  Size : 262144 Bytes&lt;br /&gt;              libc.so.1`malloc&lt;br /&gt;              php`0x856fb98&lt;br /&gt;&lt;br /&gt;^C&lt;br /&gt;&lt;br /&gt;  malloc  &lt;br /&gt;           value  ------------- Distribution ------------- count&lt;br /&gt;               2 |                                         0&lt;br /&gt;               4 |@@@@@                                    4&lt;br /&gt;               8 |                                         0&lt;br /&gt;              16 |@@@@                                     3&lt;br /&gt;              32 |@@@@                                     3&lt;br /&gt;              64 |@@@                                      2&lt;br /&gt;             128 |@                                        1&lt;br /&gt;             256 |                                         0&lt;br /&gt;             512 |@                                        1&lt;br /&gt;            1024 |                                         0&lt;br /&gt;            2048 |@@@@@@@@@@@@@@      11&lt;br /&gt;            4096 |@@@@                                     3&lt;br /&gt;            8192 |@                                        1&lt;br /&gt;           16384 |@@@                                      2&lt;br /&gt;           32768 |                                         0&lt;br /&gt;           65536 |                                         0&lt;br /&gt;          131072 |                                         0&lt;br /&gt;          262144 |@                                        1&lt;br /&gt;          524288 |                                         0&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CASE 2: ext/mysqli with mysqlnd&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;In one terminal window:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;/export/home/php53/bin/php PHPmysqliClient.php&lt;/b&gt;&lt;br /&gt;In another terminal window, run monitormalloc.d `pgrep php` and press any key to continue ..&lt;br /&gt;&lt;br /&gt;Retrieved 3 row(s).&lt;br /&gt;&lt;br /&gt;CityName&lt;br /&gt;--------&lt;br /&gt;Hyderabad, India&lt;br /&gt;San Francisco, USA&lt;br /&gt;Sydney, Australia&lt;br /&gt;&lt;br /&gt;&lt;i&gt;In another terminal window:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;./monitormalloc.d `pgrep php`&lt;/b&gt;&lt;br /&gt;dtrace: script './monitormalloc.d' matched 1 probe&lt;br /&gt;CPU ID   FUNCTION:NAME&lt;br /&gt;  0  80920   malloc:entry  Size : 262144 Bytes&lt;br /&gt;              libc.so.1`malloc&lt;br /&gt;              php`0x82f702b&lt;br /&gt;              php`0x82f80ab&lt;br /&gt;              php`0x82f841f&lt;br /&gt;              php`0x82f98c4&lt;br /&gt;              php`0x82c7668&lt;br /&gt;              php`0x83c30ae&lt;br /&gt;              php`0x80c059c&lt;br /&gt;&lt;br /&gt;^C&lt;br /&gt;&lt;br /&gt;  malloc  &lt;br /&gt;           value  ------------- Distribution ------------- count&lt;br /&gt;          131072 |                                         0&lt;br /&gt;          262144 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1&lt;br /&gt;          524288 |                                         0&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In the case of ext/mysqli with libmysql, there are more than 25 calls to &lt;code&gt;malloc()&lt;/code&gt; accounting to a total size around 367KB, where as in the case of ext/mysqli with mysqlnd, there is only one call to &lt;code&gt;malloc()&lt;/code&gt; with a size of 256KB. In other words, mysqlnd is consuming 30% less memory relative to libmysql to do similar database operations (in reality, it is incorrect to treat every byte allocated as the memory consumed unless there exists a corresponding memory mapping -- however for the sake of this discussion, let's just assume that all the allocated bytes are eventually consumed).&lt;br /&gt;&lt;br /&gt;The memory savings in the above example are the result of mysqlnd's ability to hold the results only once in the memory. On the other hand, as libmysql is not a part of PHP, some of the results fetched by libmysql will be copied into memory twice. When libmysql fetches the data from the MySQL Server, it puts the data into its own buffers. Then the data gets copied from the libmysql buffers into respective ext/mysqli data structures (often referred as &lt;a href="http://devzone.zend.com/node/view/id/1022#Heading3"&gt;zval&lt;/a&gt;s) before it is made available to the PHP clients to consume. So with ext/mysqli and libmysql, there might be two copies of the data in the main memory - one copy inside the libmysql buffers and the other inside zvals. With mysqlnd, there might be only one copy of the data in the memory. mysqlnd also uses buffers but links the zval structures directly to the read buffers, wherever possible. Therefore in majority of the instances, mysqlnd consumes less memory relative to libmysql. In the worst case, it may consume as much memory as that of libmysql. The total memory savings depend on the size of the buffered result set.&lt;br /&gt;&lt;br /&gt;Shown below is the simplified behind-the-scenes actions of ext/mysqli with libmysql and ext/mysqli with mysqlnd when mysqli sends a query:&lt;br /&gt;&lt;br /&gt;ext/mysqli with libmysql&lt;br /&gt;&lt;ol&gt;&lt;li&gt; mysqli sends a query&lt;br /&gt;&lt;li&gt; result set gets fetched into libmysql buffers&lt;br /&gt;&lt;li&gt; mysqli allocates zvals, then new buffers&lt;br /&gt;&lt;li&gt; mysqli copies data from libmysql to its own buffers&lt;br /&gt;&lt;li&gt; mysqli calls &lt;code&gt;mysql_free_result()&lt;/code&gt; and deallocates libmysql buffers&lt;/ol&gt;&lt;br /&gt;ext/mysqli with mysqlnd&lt;br /&gt;&lt;ol&gt;&lt;li&gt; mysqli sends a query&lt;br /&gt;&lt;li&gt; result set gets fetched row by row -- every row is a different buffer&lt;br /&gt;&lt;li&gt; mysqlnd creates a result set of zvals pointing to the buffers&lt;br /&gt;&lt;li&gt; mysqli calls &lt;code&gt;mysqlnd_free_result()&lt;/code&gt; and deallocates the row buffers&lt;/ol&gt;&lt;br /&gt;In short, ext/mysqli with libmysql does:&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; one extra allocation for mysqli buffers&lt;br /&gt;&lt;li&gt; one extra data copy&lt;br /&gt;&lt;li&gt; one extra zval allocation (which can be saved with the zval cache)&lt;/ul&gt;when compared to ext/mysqli with mysqlnd.&lt;br /&gt;&lt;br /&gt;Related Blog Posts:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; &lt;a href="http://technopark02.blogspot.com/2009/01/mysql-native-driver-for-php-mysqlnd.html"&gt;MySQL Native Driver for PHP, mysqlnd&lt;/a&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://technopark02.blogspot.com/2009/01/demonstrating-features-of-mysql-native.html"&gt;Demonstrating the Features of MySQL Native Driver for PHP, mysqlnd&lt;/a&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Acknowledgments&lt;/b&gt;&lt;br /&gt;Andrey Hristov &amp; Ulf Wendel, Sun-MySQL AB&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/php_memory_savings_with_mysqlnd"&gt;http://blogs.sun.com/mandalika/entry/php_memory_savings_with_mysqlnd&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/PHP" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=PHP" alt=" " /&gt;PHP&lt;/a&gt; | &lt;a href="http://technorati.com/tag/MySQL" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=MySQL" alt=" " /&gt;MySQL&lt;/a&gt; | &lt;a href="http://technorati.com/tag/mysqlnd" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=mysqlnd" alt=" " /&gt;mysqlnd&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-5057445234433072948?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/5057445234433072948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=5057445234433072948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5057445234433072948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/5057445234433072948'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/01/php-memory-savings-with-mysqlnd.html' title='PHP: Memory savings with mysqlnd'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-6316478929361422622</id><published>2009-01-26T01:06:00.000-08:00</published><updated>2009-01-31T19:40:26.603-08:00</updated><title type='text'>Demonstrating the Features of MySQL Native Driver for PHP, mysqlnd</title><content type='html'>&lt;b&gt;Support for Persistent Connections&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ext/mysqli does not support persistent connections when built with libmysql. However ext/mysqli does support persistent connections when built  with mysqlnd. To establish a persistent connection with the MySQL server using ext/mysqli and mysqlnd, prepend the database host with the string "p:" (&lt;i&gt;p&lt;/i&gt; stands for persistent) as shown below.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;b&gt;$host="p:localhost";&lt;/b&gt;&lt;br /&gt;$port=3306;&lt;br /&gt;$socket="/tmp/mysql.sock";&lt;br /&gt;$user="root";&lt;br /&gt;$password="admin";&lt;br /&gt;$dbname="test";&lt;br /&gt;&lt;br /&gt;$cxn = new mysqli($host, $user, $password, $dbname, $port, $socket)&lt;br /&gt; or die ('Could not connect to the database server' . mysqli_connect_error());&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ext/mysql, ext/mysqli and PDO_MySQL support persistent connections when built with mysqlnd.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The new API call &lt;code&gt;mysqli_fetch_all()&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;mysqlnd extends the ext/mysqli API with one brand new method, &lt;a href="http://us.php.net/manual/en/mysqli-result.fetch-all.php"&gt;&lt;code&gt;mysqli_fetch_all()&lt;/code&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mysqli_fetch_all()&lt;/code&gt; fetches all result rows and return the result set as an associative array, a numeric array, or both. The method signature is shown below for both procedural as well as object oriented style of programming.&lt;br /&gt;&lt;br /&gt;Procedural style:&lt;br /&gt;&lt;pre&gt; mixed mysqli_fetch_all (mysqli_result $result [, int $resulttype])&lt;/pre&gt;&lt;br /&gt;Object oriented style:&lt;br /&gt;&lt;pre&gt; mixed mysqli_result::fetch_all ([int $resulttype])&lt;/pre&gt;&lt;br /&gt;where: &lt;code&gt;$result &lt;/code&gt; is a result set identifier returned by &lt;code&gt;mysqli_query(), mysqli_store_result()&lt;/code&gt; or &lt;code&gt;mysqli_use_result()&lt;/code&gt;, and &lt;code&gt;$resulttype&lt;/code&gt; is an optional constant indicating what type of array should be produced from the current row data. The possible values for this parameter are the constants &lt;code&gt;MYSQLI_ASSOC, MYSQLI_NUM&lt;/code&gt;, or &lt;code&gt;MYSQLI_BOTH&lt;/code&gt;. Defaults to &lt;code&gt;MYSQLI_NUM&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Because &lt;code&gt;mysqli_fetch_all()&lt;/code&gt; returns all the rows as an array in a single step, it may consume more memory than some of its counterparts like &lt;code&gt;mysqli_fetch_array()&lt;/code&gt;. &lt;code&gt;mysqli_fetch_array()&lt;/code&gt; returns one row at a time from the result set, hence consumes less memory relative to &lt;code&gt;mysqli_fetch_array()&lt;/code&gt;. Besides, if you need to iterate over the result set, you may need a &lt;code&gt;foreach()&lt;/code&gt; loop and this approach might be little slower compared to the result set retrieval using &lt;code&gt;mysqli_fetch_array()&lt;/code&gt;. Hence consider using &lt;code&gt;mysqli_fetch_all()&lt;/code&gt; only in those situations where the fetched result set will be sent to another layer for post processing. If you have to process the fetched result set in the same layer with the help of iterators, then the benefit of using the &lt;code&gt;mysqli_fetch_all()&lt;/code&gt; method might be minimal, if there is any.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Statistical Data Collection&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;mysqlnd collects a lot of statistics which you can use to tune your application. mysqlnd enhances ext/mysqli API with three &lt;code&gt;mysqli_get_&lt;i&gt;XX&lt;/i&gt;_stats()&lt;/code&gt; methods for easy monitoring and to simplify the bottleneck analysis. For example, using a combination of &lt;code&gt;mysqli_get_&lt;i&gt;XX&lt;/i&gt;_stats()&lt;/code&gt; methods, one can easily identify a PHP client script that is opening more database connections than it needs or selecting more rows than it consumes.&lt;br /&gt;&lt;br /&gt;Accessing Client Statistics:&lt;br /&gt;&lt;br /&gt;To access per process client statistics, simply call &lt;code&gt;mysqli_get_client_stats()&lt;/code&gt; with no arguments. Similarly to access client statistics per connection, call &lt;code&gt;mysqli_get_connection_stats()&lt;/code&gt; with the database connection handle as the argument. Both of these methods return an associated array with the name of the statistic parameter as the key and the corresponding data as the value.&lt;br /&gt;&lt;br /&gt;Alternatively per process client statistics can be accessed by calling the &lt;code&gt;phpinfo()&lt;/code&gt; method.&lt;br /&gt;&lt;br /&gt;The above methods return statistics like &lt;code&gt;bytes_sent, bytes_received &lt;/code&gt;to represent the number of bytes sent to and received from the MySQL server, &lt;code&gt;result_set_queries&lt;/code&gt; to show the number of queries which generated a result set, &lt;code&gt;buffered_sets, unbuffered_sets&lt;/code&gt; to show the number of buffered and unbuffered result sets for the queries generating a result set but not run as a prepared statement.&lt;code&gt; rows_fetched_from_server_normal &lt;/code&gt;shows the number of rows that have been fetched from the server using buffered and unbuffered result sets. &lt;code&gt;rows_buffered_from_client_normal&lt;/code&gt; shows the number of rows fetched from the server and buffered on the client-side, and &lt;code&gt;rows_skipped_normal&lt;/code&gt; shows the number of rows generated by the server but not read from the client.&lt;br /&gt;&lt;br /&gt;Accessing Zval Cache Statistics:&lt;br /&gt;&lt;br /&gt;mysqlnd collects statistics from its internal zval cache, that you can access by calling &lt;code&gt;mysqli_get_cache_stat()&lt;/code&gt; method. This method returns an associative array with the name of the statistic as the key and the corresponding data as the value. The zval cache statistics might be useful to tweak zval cahe related &lt;code&gt;php.ini&lt;/code&gt; settings for better performance.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sample PHP Script Demonstrating mysqlnd's Features&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following sample PHP script demonstrates how to:&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; establish persistent connections&lt;br /&gt;&lt;li&gt; use &lt;code&gt;mysqli_fetch_all()&lt;/code&gt; to fetch and display the result set&lt;br /&gt;&lt;li&gt; access client, connection and zval cache statistics using &lt;code&gt;mysqli_get_client_stats(), mysqli_get_connection_stats()&lt;/code&gt; and &lt;code&gt;&lt;br /&gt;mysqli_get_cache_stat()&lt;/code&gt; methods&lt;/ul&gt;&lt;br /&gt;The code sample in this tutorial try to retrieve the data from the &lt;code&gt;City&lt;/code&gt; table in the MySQL &lt;code&gt;test&lt;/code&gt; database. The table structure and the data from the &lt;a name="mysqltable"&gt;&lt;code&gt;City&lt;/code&gt;&lt;/a&gt; table are shown below by using the &lt;code&gt;mysql&lt;/code&gt; client. MySQL server is running on the default port 3306.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;bash# &lt;b&gt;mysql -u root -p&lt;/b&gt;&lt;br /&gt;Enter password: &lt;b&gt;admin&lt;/b&gt;&lt;br /&gt;Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;Your MySQL connection id is 5&lt;br /&gt;Server version: 5.1.24-rc-standard Source distribution&lt;br /&gt;&lt;br /&gt;Type 'help;' or '\h' for help. Type '\c' to clear the buffer.&lt;br /&gt;&lt;br /&gt;mysql&gt; &lt;b&gt;USE test;&lt;/b&gt;&lt;br /&gt;Database changed&lt;br /&gt;&lt;br /&gt;mysql&gt; &lt;b&gt;DESCRIBE City;&lt;/b&gt;&lt;br /&gt;+----------+-------------+------+-----+---------+-------+&lt;br /&gt;| Field    | Type  | Null | Key | Default | Extra |&lt;br /&gt;+----------+-------------+------+-----+---------+-------+&lt;br /&gt;| CityName | varchar(30) | YES | | NULL | |&lt;br /&gt;+----------+-------------+------+-----+---------+-------+&lt;br /&gt;1 row in set (0.07 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt; &lt;b&gt;SELECT * FROM City;&lt;/b&gt;&lt;br /&gt;+--------------------+&lt;br /&gt;| CityName  |&lt;br /&gt;+--------------------+&lt;br /&gt;| Hyderabad, India   |&lt;br /&gt;| San Francisco, USA |&lt;br /&gt;| Sydney, Australia  |&lt;br /&gt;+--------------------+&lt;br /&gt;3 rows in set (0.17 sec)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The main purpose of the following example is only to illustrate the syntactical use of the new features of mysqlnd. The sample code does not represent any real world scenarios.&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;bash# &lt;b&gt;cat PHPmysqliClientmysqlnd.php&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt; /* create a persistent connection to the MySQL server */&lt;br /&gt; $cxn = new mysqli("p:localhost", "root", "admin", "test", 3306, "/tmp/mysql.sock")&lt;br /&gt;  or die ('Could not connect to the database server' . mysqli_connect_error());&lt;br /&gt;&lt;br /&gt; $query = "SELECT * FROM City";&lt;br /&gt; &lt;br /&gt; /* execute the query */&lt;br /&gt; if ($cxn-&gt;real_query ($query)) {&lt;br /&gt;&lt;br /&gt;  /* initiate the result set retrieval */&lt;br /&gt;  if ($result = $cxn-&gt;store_result()) {&lt;br /&gt;&lt;br /&gt;   /* find the number of rows in the result set */&lt;br /&gt;   $nrows = $result-&gt;num_rows;&lt;br /&gt;&lt;br /&gt;   echo "\nRetrieved $nrows row(s).\n\n";&lt;br /&gt;   echo "CityName\n--------\n";&lt;br /&gt;&lt;br /&gt;   $all_rows = $result-&gt;fetch_all(MYSQLI_ASSOC);&lt;br /&gt;&lt;br /&gt;   for($i = 0; $i &lt; count($all_rows); $i++) {&lt;br /&gt;    echo $all_rows[$i][CityName] . "\n";&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /* close the result set */&lt;br /&gt;  $result-&gt;close();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; echo "\n\nClient Statistics After One Query\n---------------------------------";&lt;br /&gt; $client_stats = mysqli_get_client_stats();&lt;br /&gt; #var_dump($client_stats);&lt;br /&gt; foreach ($client_stats as $key=&gt;$value) {&lt;br /&gt;  if ($value &gt; 0) {&lt;br /&gt;                        echo "\n$key : $value";&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; echo "\n\nStatistics for Connection #1\n----------------------------";&lt;br /&gt; $conn_stats = mysqli_get_connection_stats($cxn);&lt;br /&gt; #var_dump($conn_stats);&lt;br /&gt; foreach ($conn_stats as $key=&gt;$value) {&lt;br /&gt;  if ($value &gt; 0) {&lt;br /&gt;                        echo "\n$key : $value";&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; echo "\n\nCache Statistics After One Query\n--------------------------------";&lt;br /&gt; $cache_stats = mysqli_get_cache_stats();&lt;br /&gt; #var_dump($cache_stats);&lt;br /&gt; foreach ($cache_stats as $key=&gt;$value) {&lt;br /&gt;  if ($value &gt; 0) {&lt;br /&gt;                        echo "\n$key : $value";&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; echo "\n\n=================================\n\n";&lt;br /&gt; echo "\nEstablishing connection #2 to the MySQL server ..\n\n";&lt;br /&gt;&lt;br /&gt; /* create a non-persistent connection to the MySQL server */&lt;br /&gt; $cxn2 = new mysqli("localhost", "root", "admin", "mysql", 3306, "/tmp/mysql.sock")&lt;br /&gt;  or die ('Could not connect to the database server' . mysqli_connect_error());&lt;br /&gt;&lt;br /&gt; $query = "SELECT Host, User FROM user";&lt;br /&gt;&lt;br /&gt; /* execute the query */&lt;br /&gt; if ($cxn2-&gt;real_query ($query)) {&lt;br /&gt;&lt;br /&gt;  /* initiate the result set retrieval */&lt;br /&gt;  if ($result = $cxn2-&gt;store_result()) {&lt;br /&gt;&lt;br /&gt;   /* find the number of rows in the result set */&lt;br /&gt;   $nrows = $result-&gt;num_rows;&lt;br /&gt;   echo "\nRetrieved $nrows row(s).\n\n";&lt;br /&gt;&lt;br /&gt;   echo "Host\t\tUser\n----\t\t----\n";&lt;br /&gt;&lt;br /&gt;   $all_rows = $result-&gt;fetch_all(MYSQLI_ASSOC);&lt;br /&gt;&lt;br /&gt;   for($i = 0; $i &lt; count($all_rows); $i++) {&lt;br /&gt;    echo $all_rows[$i][Host] . "\t" . $all_rows[$i][User] . "\n";&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;                /* close the result set */&lt;br /&gt;  $result-&gt;close();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; echo "\n\nClient Statistics After Two Queries\n-----------------------------------";&lt;br /&gt; $client_stats = mysqli_get_client_stats();&lt;br /&gt; #var_dump($client_stats);&lt;br /&gt; foreach ($client_stats as $key=&gt;$value) {&lt;br /&gt;  if ($value &gt; 0) {&lt;br /&gt;   echo "\n$key : $value";&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; echo "\n\nStatistics for Connection #2\n----------------------------";&lt;br /&gt; $conn_stats = mysqli_get_connection_stats($cxn2);&lt;br /&gt; #var_dump($conn_stats);&lt;br /&gt; foreach ($conn_stats as $key=&gt;$value) {&lt;br /&gt;  if ($value &gt; 0) {&lt;br /&gt;   echo "\n$key : $value";&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; echo "\n\nCache Statistics After Two Queries\n----------------------------------";&lt;br /&gt; $cache_stats = mysqli_get_cache_stats();&lt;br /&gt; #var_dump($cache_stats);&lt;br /&gt; foreach ($cache_stats as $key=&gt;$value) {&lt;br /&gt;  if ($value &gt; 0) {&lt;br /&gt;   echo "\n$key : $value";&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; echo "\n";&lt;br /&gt;&lt;br /&gt; //phpinfo();&lt;br /&gt;&lt;br /&gt; /* close the database connections */&lt;br /&gt; $cxn-&gt;close();&lt;br /&gt; $cxn2-&gt;close();&lt;br /&gt;&lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;/export/home/php53/bin/php PHPmysqliClientmysqlnd.php&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Retrieved 3 row(s).&lt;br /&gt;&lt;br /&gt;CityName&lt;br /&gt;--------&lt;br /&gt;Hyderabad, India&lt;br /&gt;San Francisco, USA&lt;br /&gt;Sydney, Australia&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Client Statistics After One Query&lt;br /&gt;---------------------------------&lt;br /&gt;bytes_sent : 90&lt;br /&gt;bytes_received : 222&lt;br /&gt;packets_sent : 2&lt;br /&gt;packets_received : 9&lt;br /&gt;protocol_overhead_in : 36&lt;br /&gt;protocol_overhead_out : 8&lt;br /&gt;bytes_received_ok_packet : 11&lt;br /&gt;bytes_received_eof_packet : 9&lt;br /&gt;bytes_received_rset_header_packet : 5&lt;br /&gt;bytes_received_rset_field_meta_packet : 54&lt;br /&gt;bytes_received_rset_row_packet : 70&lt;br /&gt;packets_sent_command : 1&lt;br /&gt;packets_received_ok : 1&lt;br /&gt;packets_received_eof : 1&lt;br /&gt;packets_received_rset_header : 1&lt;br /&gt;packets_received_rset_field_meta : 1&lt;br /&gt;packets_received_rset_row : 4&lt;br /&gt;result_set_queries : 1&lt;br /&gt;buffered_sets : 1&lt;br /&gt;rows_fetched_from_server_normal : 3&lt;br /&gt;rows_buffered_from_client_normal : 3&lt;br /&gt;rows_fetched_from_client_normal_buffered : 3&lt;br /&gt;rows_skipped_normal : 3&lt;br /&gt;copy_on_write_performed : 3&lt;br /&gt;connect_success : 1&lt;br /&gt;active_connections : 1&lt;br /&gt;active_persistent_connections : 1&lt;br /&gt;explicit_free_result : 1&lt;br /&gt;mem_erealloc_count : 1&lt;br /&gt;mem_efree_count : 2&lt;br /&gt;mem_realloc_count : 1&lt;br /&gt;proto_text_fetched_string : 3&lt;br /&gt;&lt;br /&gt;Statistics for Connection #1&lt;br /&gt;----------------------------&lt;br /&gt;bytes_sent : 90&lt;br /&gt;bytes_received : 222&lt;br /&gt;packets_sent : 2&lt;br /&gt;packets_received : 9&lt;br /&gt;protocol_overhead_in : 36&lt;br /&gt;protocol_overhead_out : 8&lt;br /&gt;bytes_received_ok_packet : 11&lt;br /&gt;bytes_received_eof_packet : 9&lt;br /&gt;bytes_received_rset_header_packet : 5&lt;br /&gt;bytes_received_rset_field_meta_packet : 54&lt;br /&gt;bytes_received_rset_row_packet : 70&lt;br /&gt;packets_sent_command : 1&lt;br /&gt;packets_received_ok : 1&lt;br /&gt;packets_received_eof : 1&lt;br /&gt;packets_received_rset_header : 1&lt;br /&gt;packets_received_rset_field_meta : 1&lt;br /&gt;packets_received_rset_row : 4&lt;br /&gt;result_set_queries : 1&lt;br /&gt;buffered_sets : 1&lt;br /&gt;rows_fetched_from_server_normal : 3&lt;br /&gt;rows_buffered_from_client_normal : 3&lt;br /&gt;rows_skipped_normal : 3&lt;br /&gt;connect_success : 1&lt;br /&gt;active_connections : 1&lt;br /&gt;active_persistent_connections : 1&lt;br /&gt;explicit_free_result : 1&lt;br /&gt;proto_text_fetched_string : 3&lt;br /&gt;&lt;br /&gt;Cache Statistics After One Query&lt;br /&gt;--------------------------------&lt;br /&gt;put_misses : 3&lt;br /&gt;get_hits : 3&lt;br /&gt;size : 2000&lt;br /&gt;free_items : 1997&lt;br /&gt;references : 3&lt;br /&gt;&lt;br /&gt;=================================&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Establishing connection #2 to the MySQL server ..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Retrieved 5 row(s).&lt;br /&gt;&lt;br /&gt;Host  User&lt;br /&gt;----  ----&lt;br /&gt;127.0.0.1 root&lt;br /&gt;localhost&lt;br /&gt;localhost root&lt;br /&gt;unknown&lt;br /&gt;unknown root&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Client Statistics After Two Queries&lt;br /&gt;-----------------------------------&lt;br /&gt;bytes_sent : 190&lt;br /&gt;bytes_received : 501&lt;br /&gt;packets_sent : 4&lt;br /&gt;packets_received : 21&lt;br /&gt;protocol_overhead_in : 84&lt;br /&gt;protocol_overhead_out : 16&lt;br /&gt;bytes_received_ok_packet : 22&lt;br /&gt;bytes_received_eof_packet : 18&lt;br /&gt;bytes_received_rset_header_packet : 10&lt;br /&gt;bytes_received_rset_field_meta_packet : 148&lt;br /&gt;bytes_received_rset_row_packet : 157&lt;br /&gt;packets_sent_command : 2&lt;br /&gt;packets_received_ok : 2&lt;br /&gt;packets_received_eof : 2&lt;br /&gt;packets_received_rset_header : 2&lt;br /&gt;packets_received_rset_field_meta : 3&lt;br /&gt;packets_received_rset_row : 10&lt;br /&gt;result_set_queries : 2&lt;br /&gt;buffered_sets : 2&lt;br /&gt;rows_fetched_from_server_normal : 8&lt;br /&gt;rows_buffered_from_client_normal : 8&lt;br /&gt;rows_fetched_from_client_normal_buffered : 8&lt;br /&gt;rows_skipped_normal : 8&lt;br /&gt;copy_on_write_performed : 13&lt;br /&gt;connect_success : 2&lt;br /&gt;active_connections : 2&lt;br /&gt;active_persistent_connections : 1&lt;br /&gt;explicit_free_result : 2&lt;br /&gt;mem_erealloc_count : 1&lt;br /&gt;mem_efree_count : 2&lt;br /&gt;mem_realloc_count : 4&lt;br /&gt;proto_text_fetched_string : 13&lt;br /&gt;Statistics for Connection #2&lt;br /&gt;----------------------------&lt;br /&gt;bytes_sent : 100&lt;br /&gt;bytes_received : 279&lt;br /&gt;packets_sent : 2&lt;br /&gt;packets_received : 12&lt;br /&gt;protocol_overhead_in : 48&lt;br /&gt;protocol_overhead_out : 8&lt;br /&gt;bytes_received_ok_packet : 11&lt;br /&gt;bytes_received_eof_packet : 9&lt;br /&gt;bytes_received_rset_header_packet : 5&lt;br /&gt;bytes_received_rset_field_meta_packet : 94&lt;br /&gt;bytes_received_rset_row_packet : 87&lt;br /&gt;packets_sent_command : 1&lt;br /&gt;packets_received_ok : 1&lt;br /&gt;packets_received_eof : 1&lt;br /&gt;packets_received_rset_header : 1&lt;br /&gt;packets_received_rset_field_meta : 2&lt;br /&gt;packets_received_rset_row : 6&lt;br /&gt;result_set_queries : 1&lt;br /&gt;buffered_sets : 1&lt;br /&gt;rows_fetched_from_server_normal : 5&lt;br /&gt;rows_buffered_from_client_normal : 5&lt;br /&gt;rows_skipped_normal : 5&lt;br /&gt;connect_success : 1&lt;br /&gt;active_connections : 1&lt;br /&gt;explicit_free_result : 1&lt;br /&gt;proto_text_fetched_string : 10&lt;br /&gt;&lt;br /&gt;Cache Statistics After Two Queries&lt;br /&gt;----------------------------------&lt;br /&gt;put_misses : 13&lt;br /&gt;get_hits : 13&lt;br /&gt;size : 2000&lt;br /&gt;free_items : 1987&lt;br /&gt;references : 4&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Before concluding, be adviced that some of the experimental functions that are available with ext/mysqli and libmysql are not available with ext/mysqli and mysqlnd. eg., &lt;code&gt;mysqli_embedded_*(), mysqli_*rpl*_()&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Related Blog Post:&lt;br /&gt;&lt;a href="http://technopark02.blogspot.com/2009/01/mysql-native-driver-for-php-mysqlnd.html"&gt;MySQL Native Driver for PHP, mysqlnd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Acknowledgments&lt;/b&gt;&lt;br /&gt;Andrey Hristov &amp; Ulf Wendel, Sun-MySQL AB&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/demonstrating_the_features_of_mysql"&gt;http://blogs.sun.com/mandalika/entry/demonstrating_the_features_of_mysql&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/PHP" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=PHP" alt=" " /&gt;PHP&lt;/a&gt; | &lt;a href="http://technorati.com/tag/MySQL" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=MySQL" alt=" " /&gt;MySQL&lt;/a&gt; | &lt;a href="http://technorati.com/tag/mysqlnd" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=mysqlnd" alt=" " /&gt;mysqlnd&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-6316478929361422622?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/6316478929361422622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=6316478929361422622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6316478929361422622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/6316478929361422622'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/01/demonstrating-features-of-mysql-native.html' title='Demonstrating the Features of MySQL Native Driver for PHP, mysqlnd'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-2011594369183793656</id><published>2009-01-19T00:19:00.000-08:00</published><updated>2009-01-20T01:39:31.523-08:00</updated><title type='text'>MySQL Native Driver for PHP, mysqlnd</title><content type='html'>In order to communicate with the MySQL database server from a PHP application, &lt;i&gt;ext/mysql&lt;/i&gt;, &lt;i&gt;ext/mysqli&lt;/i&gt; and the PDO MYSQL driver rely on the MySQL client library, &lt;i&gt;libmysql&lt;/i&gt; - that has the required implementation for the client-server protocol. The MySQL native driver for PHP (will simply be referred as &lt;i&gt;mysqlnd&lt;/i&gt; from this point), is an additional, alternative way to connect from PHP 5 and PHP 6 to the MySQL Server 4.1 or later versions. mysqlnd is a replacement for the MySQL client library, libmysql; and it is tightly integrated into PHP starting with the release of PHP 5.3. That is, from PHP 5.3 onwards the developers can choose between libmysql and mysqlnd when using mysql, mysqli or PDO_MySQL extensions to connect to the MySQL server 4.1 or newer. Due to the tight integration into PHP 5.3 (and later), mysqlnd eliminates the dependency on the MySQL client programming support when the database extension(s) and the database driver are built with the support for mysqlnd.&lt;br /&gt;&lt;br /&gt;mysqlnd is not another PHP extension like mysqli nor it has an exposed API to the userland. It is a library that provides almost similar functionality as that of the MySQL client library, libmysql. mysqlnd and libmysql libraries implement the MySQL communication protocol - hence both of those libraries can be used to connect to the MySQL Server.&lt;br /&gt;&lt;br /&gt;Since mysqlnd is neither a new extension nor a programming API, but just an alternative to libmysql to connect from PHP to the MySQL Server, there is no need to make changes to the existing PHP scripts. The existing scripts which were running properly with the mysql, mysqli and PDO_MySQL extensions built with libmysql support, continue to run with the exact same behavior even when the mysql, mysqli and PDO_MySQL extensions are built with the mysqlnd support.&lt;br /&gt;&lt;br /&gt;From the performance perspective, mysqlnd might be as fast as libmysql; and may even outperform libmysql in some cases. The generic recommendation is to try mysqlnd with your PHP application and to decide based on the performance results.&lt;br /&gt;&lt;br /&gt;Some of the advantages of using mysqlnd are listed below:&lt;br /&gt;&lt;ul type="circle"&gt;&lt;li&gt; Easy to compile: no linking against libmysql, and no dependency on the MySQL client programming support.&lt;br /&gt;&lt;li&gt; may outperform libmysql in certain cases &lt;br /&gt;&lt;li&gt; persistent connections for ext/mysqli&lt;br /&gt;&lt;li&gt; uses PHP memory management, supports PHP memory limit&lt;br /&gt;&lt;li&gt; reduced memory footprint -- keeps every row only once in memory, where as with libmysql you have it twice in memory&lt;br /&gt;&lt;li&gt; keeps a long list of performance related statistics for bottle-neck analysis&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Installing PHP with the MySQL native driver, mysqlnd&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As most of the pre-packaged PHP binary installations may not have the support for mysqlnd enabled by default, it is recommended to build PHP and the required database extensions with mysqlnd from the source code. The rest of this section focuses on the installation of PHP 5.3 from the source code. Check the &lt;a href="http://dev.mysql.com/downloads/connector/php-mysqlnd/"&gt;php-mysqlnd&lt;/a&gt; web page at dev.mysql.com for the installation instructions for the prior versions of PHP with mysqlnd support.&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Get the source code for PHP 5.3 or later versions from &lt;a href="http://www.php.net"&gt;http://www.php.net&lt;/a&gt; or from &lt;a href="http://snaps.php.net/"&gt;http://snaps.php.net/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Make sure that Autoconf 2.13 or later and GNU M4 1.4.7 or later are installed on the machine. Adjust the &lt;code&gt;PATH&lt;/code&gt; environment variable to include the path to the &lt;code&gt;autoconf&lt;/code&gt; and &lt;code&gt;m4&lt;/code&gt; tools.&lt;br /&gt;&lt;br /&gt;eg.,&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;bash# ls /usr/local/bin/autoconf ; ls /usr/local/bin/m4&lt;br /&gt;/usr/local/bin/autoconf&lt;br /&gt;/usr/local/bin/m4&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;export PATH=.:/usr/local/bin:$PATH&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; On Sun Solaris, create a soft link to &lt;code&gt;gmake&lt;/code&gt; in the source directory.&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;ln -s /usr/bin/gmake make&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; Navigate to the source directory and run &lt;code&gt;buildconf&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;eg.,&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;bash# cd php5.3-200811132130&lt;br /&gt;bash# &lt;b&gt;./buildconf --force&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; For building PHP 5.3 or later with mysqlnd support on UNIX/Linux systems, you can decide for all three MySQL extensions (ext/mysql, ext/mysqli, PDO_mysql) whether they should be built using mysqlnd or libmysql. When choosing mysqlnd, use "mysqlnd" as path to the mysql client library. If you don't specify "mysqlnd" as library location, by default, PHP tries to use libmysql. It is possible to build one extension with one library, and another extension with another library. For example, you can build mysqli extension with mysqlnd support, and PDO_MYSQL with libmysql.&lt;br /&gt;&lt;br /&gt;The configure option shown below builds all the three extensions with mysqlnd support.&lt;br /&gt;&lt;br /&gt;eg.,&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;./configure --prefix=/export/home/php53 --enable-mysqlnd \&lt;br /&gt;       --with-mysqli=shared,mysqlnd --with-mysql=shared,mysqlnd \&lt;br /&gt; --with-pdo-mysql=shared,mysqlnd --with-zlib=shared &lt;i&gt;[other options]&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;configure script in PHP 6.0 and some builds of PHP 5.3 may not recognize the &lt;code&gt;--enable-mysqlnd&lt;/code&gt; option, so check the configure options by running &lt;code&gt;./configure --help&lt;/code&gt; before specifying &lt;code&gt;--enable-mysqlnd&lt;/code&gt; in the list of configure options when building PHP.&lt;br /&gt;&lt;br /&gt;On Windows platform, mysqli extension uses the MySQL Native Driver by default in PHP versions 5.3 and newer. Hence you don't need to configure libmysql.dll&lt;br /&gt;&lt;br /&gt;&lt;li&gt; On Sun Solaris, pass the &lt;code&gt;-z muldefs&lt;/code&gt; option to the linker to pro-actively defend against linker errors like &lt;code&gt;ld: fatal: symbol `&amp;lt;symbol&gt;' is multiply-defined&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;export LDFLAGS="-z muldefs"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; Build PHP.&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;make&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; Install PHP in the destination location.&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;make install&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; Enable the required database extensions in php.ini&lt;br /&gt;&lt;br /&gt;eg.,&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;grep extension php.ini | grep -v \;&lt;/b&gt;&lt;br /&gt;extension_dir=/export/home/php53/lib/php/extensions/no-debug-non-zts-20071006&lt;br /&gt;extension="mysql.so"&lt;br /&gt;extension="mysqli.so"&lt;br /&gt;extension="pdo_mysql.so"&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt; Finally verify the new PHP installation by checking the list of PHP modules.&lt;br /&gt;&lt;br /&gt;eg.,&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;&lt;br /&gt;bash# cd /export/home/php53/bin&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;./php -m | grep mysql&lt;/b&gt;&lt;br /&gt;mysql&lt;br /&gt;mysqli&lt;br /&gt;mysqlnd&lt;br /&gt;pdo_mysql&lt;br /&gt;&lt;br /&gt;bash# &lt;b&gt;./php -i | grep -i mysql&lt;/b&gt;&lt;br /&gt;..&lt;br /&gt;mysql&lt;br /&gt;MySQL Support =&gt; enabled&lt;br /&gt;Client API version =&gt; mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.18 $&lt;br /&gt;..&lt;br /&gt;mysqli&lt;br /&gt;MysqlI Support =&gt; enabled&lt;br /&gt;Client API library version =&gt; mysqlnd 5.0.1-beta - 070402 - $Revision: 321 $&lt;br /&gt;..&lt;br /&gt;mysqlnd&lt;br /&gt;mysqlnd =&gt; enabled&lt;br /&gt;Version =&gt; mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.18 $&lt;br /&gt;..&lt;br /&gt;pdo_mysql&lt;br /&gt;PDO Driver for MySQL =&gt; enabled&lt;br /&gt;Client API version =&gt; mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.18 $&lt;br /&gt;..&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Acknowledgments&lt;/b&gt;&lt;br /&gt;    Andrey Hristov &amp; Ulf Wendel, Sun-MySQL&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/mysql_native_driver_for_php"&gt;http://blogs.sun.com/mandalika/entry/mysql_native_driver_for_php&lt;/a&gt;&lt;/i&gt;)&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/PHP" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=PHP" alt=" " /&gt;PHP&lt;/a&gt; | &lt;a href="http://technorati.com/tag/MySQL" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=MySQL" alt=" " /&gt;MySQL&lt;/a&gt; | &lt;a href="http://technorati.com/tag/mysqlnd" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=mysqlnd" alt=" " /&gt;mysqlnd&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-2011594369183793656?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/2011594369183793656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=2011594369183793656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2011594369183793656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2011594369183793656'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/01/mysql-native-driver-for-php-mysqlnd.html' title='MySQL Native Driver for PHP, mysqlnd'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-8787141294387496427</id><published>2009-01-10T00:36:00.000-08:00</published><updated>2009-01-10T00:36:25.911-08:00</updated><title type='text'>Xorg Screen Resolution Woes on SXCE</title><content type='html'>&lt;b&gt;Symptom(s)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A fresh install of Solaris Express Community Edition (SXCE) build 104 or an upgrade from an earlier SXCE build say 95 on a Toshiba Tecra M2 laptop results in a successful operating environment, but fails to bring up the graphical GNOME environment mainly because Xserver fails to start with errors like &lt;code&gt;:0.0 refused by server&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Few ideas to get around the Xserver issue: (&lt;i&gt;apparently I'm not an Xorg expert -- so spare me the criticism in case if you notice any unusual/incoherent terminology&lt;/i&gt;)&lt;br /&gt;&lt;ol&gt;&lt;li&gt; run &lt;code&gt;kdmconfig&lt;/code&gt; and select Xorg&lt;br /&gt;&lt;br /&gt;&lt;li&gt; run &lt;code&gt;/usr/X11/bin/xorgconfig -configure&lt;/code&gt;, and save the resulting xorg.conf in /etc/X11 directory. Finally start the GNOME Display Manager by typing &lt;code&gt;gdm&lt;/code&gt; (run &lt;code&gt;gdm-stop&lt;/code&gt; to stop the display manager).&lt;/ol&gt;&lt;br /&gt;If 800x600 is the best resolution you can get, and if &lt;code&gt;nvidia-settings&lt;/code&gt; throws an error with message:&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;You do not appear to be using the NVIDIA X driver. Please edit your X configuration file &lt;br /&gt;(just run `nvidia-xconfig` as root), and restart the X server&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;.. try running &lt;code&gt;nvidia-xconfig&lt;/code&gt; as root user. It will replace the existing /etc/X11/xorg.conf file. In case if the GNOME Display Manager fails to come up after this step, check the /var/log/Xorg.0.log file for any clue. If you notice something similar to the following lines in your Xorg.0.log, you may have to downgrade the NVIDIA driver to the latest versions of the supported legacy driver for your graphics processing unit (GPU).&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;(II) NVIDIA dlloader X Driver  177.82  Tue Nov  4 13:39:01 PST 2008&lt;br /&gt;(II) NVIDIA Unified Driver for all Supported NVIDIA GPUs&lt;br /&gt;(II) Primary Device is: PCI 01:00:0&lt;br /&gt;(WW) NVIDIA(0): The NVIDIA GeForce FX Go5200 32M/64M GPU installed in this&lt;br /&gt;(WW) NVIDIA(0):     system is supported through the NVIDIA 173.14.xx Legacy&lt;br /&gt;(WW) NVIDIA(0):     drivers. Please visit&lt;br /&gt;(WW) NVIDIA(0):     http://www.nvidia.com/object/unix.html for more&lt;br /&gt;(WW) NVIDIA(0):     information.  The 177.82 NVIDIA driver will ignore this&lt;br /&gt;(WW) NVIDIA(0):     GPU.  Continuing probe... &lt;br /&gt;(EE) No devices detected.&lt;br /&gt;&lt;br /&gt;Fatal server error:&lt;br /&gt;no screens found&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The following instructions outline the steps to resolve the above issue on a Tecra M2 laptop running SXCE build 104.&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Download the latest legacy GPU version (173.14.xx series) of the display driver from NVIDIA's web site&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.nvidia.com/object/solaris_display_173.14.12.html"&gt;http://www.nvidia.com/object/solaris_display_173.14.12.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Download the driver file&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://us.download.nvidia.com/solaris/173.14.12/NVIDIA-Solaris-x86-173.14.12.run"&gt;http://us.download.nvidia.com/solaris/173.14.12/NVIDIA-Solaris-x86-173.14.12.run&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Install the driver&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;sh NVIDIA-Solaris-x86-173.14.12.run&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This step removes the existing nvidia driver before installing the legacy one.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Reboot the system&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;reboot -- -r&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Remove the Xorg configuration file if exists.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;rm /etc/X11/xorg.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Generate a new Xorg configuration file&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;code&gt;nvidia-xconfig&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Logout and log back in.&lt;/ol&gt;&lt;br /&gt;The screen resolution issue should have been fixed automagically after the last step. Good Luck.&lt;br /&gt;&lt;br /&gt;The above steps are based on NVIDIA's documentation:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.nvidia.com/object/solaris_display_173.14.12.html"&gt;http://www.nvidia.com/object/solaris_display_173.14.12.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(Originally posted on blogs.sun.com at:&lt;br /&gt;&lt;a href="http://blogs.sun.com/mandalika/entry/fix_to_xorg_screen_resolution"&gt;http://blogs.sun.com/mandalika/entry/fix_to_xorg_screen_resolution&lt;/a&gt;)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;_____________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/Xorg" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=Xorg" alt=" " /&gt;Xorg&lt;/a&gt; | &lt;a href="http://technorati.com/tag/Troubleshooting" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=Troubleshooting" alt=" " /&gt;Troubleshooting&lt;/a&gt; | &lt;a href="http://technorati.com/tag/Solaris" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=Solaris" alt=" " /&gt;Solaris&lt;/a&gt; | &lt;a href="http://technorati.com/tag/nVidia" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=nVidia" alt=" " /&gt;nVidia&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-8787141294387496427?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/8787141294387496427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=8787141294387496427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8787141294387496427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/8787141294387496427'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2009/01/xorg-screen-resolution-woes-on-sxce.html' title='Xorg Screen Resolution Woes on SXCE'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-2179783133529100946</id><published>2008-12-17T01:12:00.001-08:00</published><updated>2008-12-17T01:13:28.624-08:00</updated><title type='text'>Quick Fix to the Linker Error - ld: fatal: library -lgcc_s: not found</title><content type='html'>&lt;b&gt;Symptom(s):&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;When building some of the open source applications like MySQL Cluster Carrier Grade Edition with the GCC compiler, the linking step may fail with the fatal error message &lt;code&gt;library -lgcc_s: not found&lt;/code&gt; despite the fact that the gcc_s library is available on the system and is in the linker search path -- for example, &lt;code&gt;LD_LIBRARY_PATH&lt;/code&gt; on Solaris.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quick Fix / Workaround:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Add the absolute path to the gcc_s library on the link line, OR&lt;br /&gt;&lt;br /&gt;&lt;li&gt; &lt;i&gt;(Recommended)&lt;/i&gt; If the library's filename has any major and minor version numbers appended to it, simply create a soft link to the library in the same location without the major and minor version numbers in the target filename.&lt;/ol&gt;&lt;br /&gt;eg.,&lt;br /&gt;&lt;br /&gt;On a Solaris 10 system, by default, the gcc_s library might be available under &lt;code&gt;/usr/sfw/lib&lt;/code&gt; (32-bit SPARC and x86 copy), &lt;code&gt;/usr/sfw/lib/sparcv9&lt;/code&gt; (64-bit SPARC copy) and &lt;code&gt;/usr/sfw/lib/amd64&lt;/code&gt; (64-bit x64 copy). If all you can find is the gcc_s library with the version number(s) in the filename like libgcc_s.so.1, simply run the command '&lt;code&gt;ln -s libgcc_s.so.1 libgcc_s.so&lt;/code&gt;' in the same directory where you found the libgcc_s.so.1.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Probably this particular error message may show up on any OS platform with any compiler, and the workaround mentioned in this post may work on all those failed cases. I cannot guarantee that, but I know for sure that it works on Solaris (both SPARC and x86/x64 versions).&lt;br /&gt;&lt;br /&gt;_______________&lt;br /&gt;Technorati Tags:&lt;br /&gt;&lt;a href="http://technorati.com/tag/linker" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=linker" alt=" " /&gt;Linker&lt;/a&gt; | &lt;a href="http://technorati.com/tag/linking" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=linking" alt=" " /&gt;Linking&lt;/a&gt; | &lt;a href="http://technorati.com/tag/troubleshooting" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=troubleshooting" alt=" " /&gt;Troubleshooting&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8206834-2179783133529100946?l=technopark02.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technopark02.blogspot.com/feeds/2179783133529100946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8206834&amp;postID=2179783133529100946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2179783133529100946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8206834/posts/default/2179783133529100946'/><link rel='alternate' type='text/html' href='http://technopark02.blogspot.com/2008/12/quick-fix-to-linker-error-ld-fatal.html' title='Quick Fix to the Linker Error - ld: fatal: library -lgcc_s: not found'/><author><name>Giri Mandalika</name><uri>http://www.blogger.com/profile/11489688118728122914</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-8206834.post-3137209824037760563</id><published>2008-12-09T02:13:00.000-08:00</published><updated>2008-12-10T00:27:36.467-08:00</updated><title type='text'>Consolidating Siebel CRM 8.0 on a Single Sun SPARC Enterprise Server, T5440</title><content type='html'>.. blueprint document is now available on &lt;a href="http://wikis.sun.com"&gt;wikis.sun.com&lt;/a&gt;. Here is the direct link to the blueprint:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://wikis.sun.com/display/BluePrints/Consolidating+Oracle+Siebel+CRM+8+on+a+S
