<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>OraExplorer</title>
	
	<link>http://oraexplorer.com</link>
	<description>Exploring Oracle: No Stone Unturned</description>
	<lastBuildDate>Thu, 10 Nov 2011 17:26:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/oraexplorer" /><feedburner:info uri="oraexplorer" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>oraexplorer</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Customize/Personalize Oracle APEX Workspace Environment</title>
		<link>http://feedproxy.google.com/~r/oraexplorer/~3/RQ3esWQQwMs/</link>
		<comments>http://oraexplorer.com/2011/11/customizepersonalize-oracle-apex-workspace-environment/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 22:06:54 +0000</pubDate>
		<dc:creator>ittichai</dc:creator>
				<category><![CDATA[11g]]></category>
		<category><![CDATA[APEX]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://oraexplorer.com/?p=1009</guid>
		<description><![CDATA[When you have multiple Oracle APEX environments, e.g., development, test, UAT and production, and for multiple groups, one of the confusing things is that sometimes developers are lost on which environment they’re working on. Most of technically proficient developers can make a distinction easily from the URLs they’re currently using. However, most of less technically [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear: right; float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Foraexplorer.com%2F2011%2F11%2Fcustomizepersonalize-oracle-apex-workspace-environment%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Foraexplorer.com%2F2011%2F11%2Fcustomizepersonalize-oracle-apex-workspace-environment%2F&amp;source=ittichai&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>When you have multiple Oracle APEX environments, e.g., development, test, UAT and production, and for multiple groups, one of the confusing things is that sometimes developers are lost on which environment they’re working on. Most of technically proficient developers can make a distinction easily from the URLs they’re currently using. However, most of less technically proficient (e.g., business users) sometimes cannot.</p>
<p>A quick and simple solution here is to make a visual distinction on the APEX workspace pages especially on the logo area. Instead of using plain vanilla logo images, they are replaced with more distinct and informative images.</p>
<p>This is the default APEX workspace logon page.</p>
<p><img class=" alignnone" title="Default Workspace Logon Image" src="https://lh4.googleusercontent.com/-XF0RGkF3KD8/Trrypi7_AXI/AAAAAAAAE5U/HaDNEvvrR5c/s512/wk_logon_use.PNG" alt="Default Workspace Logon Image" /></p>
<p>This is a sample of the personalized workspace logon page with a company logo and it is showing that this is the development environment.</p>
<p><img class="alignnone" title="Customized APEX workspace logon page" src="https://lh5.googleusercontent.com/-OcsaMyO650s/Trvd43caBaI/AAAAAAAAE54/xpvVZXDPdLg/s512/apex_ws_logon_with_logo.PNG" alt="Customized APEX workspace logon page" width="512" height="211" /></p>
<p>This is the main workspace page after logon showing the default logo image.</p>
<p><img class=" alignnone" title="Default Workspace Page" src="https://lh4.googleusercontent.com/-pObgYRgYmf8/TrrypgCbj8I/AAAAAAAAE5U/WEYPaLal4eY/s512/wk_inside_use.PNG" alt="Default Workspace Page" width="512" height="196" /></p>
<p>You can change it to be like this.</p>
<p><img class=" alignnone" title="Customized APEX workspace development page" src="https://lh4.googleusercontent.com/-iVLvY2ckE48/TrrypIrVc3I/AAAAAAAAE5U/3n4wpWs7yqk/s512/wk_inside_use_new.PNG" alt="Customized APEX workspace development page" width="512" height="195" /></p>
<p>With just this minor change, our users feel more comfortable knowing that they&#8217;re working the right environment.</p>
<p><strong>How to change it?</strong></p>
<p>With a quick investigation, you can easily find the paths of those image files as follows:</p>
<p><strong>Workspace logon page:</strong></p>
<p>Image path: /i/apex/builder/apex-logo-white.gif<br />
Image size: 300px x 30px<br />
<em>Transparent</em> background</p>
<p>Image path:/i/apex/builder/apex-db-apps.png<br />
Image size: 240px x 200px<br />
<em>Transparent</em> background</p>
<p><strong>Workspace main page after logon:</strong><br />
Image path: /i/htmldb/apex_logo.gif<br />
Image size: 300px x 30px<br />
<em>White</em> background</p>
<ul>
<li>Use Photoshop or any image editing tools to recreate those image files.</li>
<li>Copy and replace those image files on the web server. Please make the backup of those files before replacing them.</li>
</ul>
<p>Note that this approach will <span style="text-decoration: underline;">NOT</span> work if you&#8217;re using a shared web server for multiple APEX database environments because they&#8217;re using the same image files.</p>
<p><strong>Update</strong>: Using ApexLib script in the login message (under Manage Instance) as mentioned by <a title="Customize APEX workspace login using ApexLib" href="http://www.oracle-and-apex.com/customize-the-apex-workspace-login-page/" target="_blank">Peter </a>in the comment section is another solution for customization. I like this approach as not only you can customize the logo, but you can also change the description text on the workspace logon page. In addition, since the change is on the APEX instance itself, it can definitely be used on a shared web server.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/oraexplorer?a=RQ3esWQQwMs:jKWBgXuDmz4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=RQ3esWQQwMs:jKWBgXuDmz4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=RQ3esWQQwMs:jKWBgXuDmz4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=RQ3esWQQwMs:jKWBgXuDmz4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=RQ3esWQQwMs:jKWBgXuDmz4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=RQ3esWQQwMs:jKWBgXuDmz4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=RQ3esWQQwMs:jKWBgXuDmz4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=RQ3esWQQwMs:jKWBgXuDmz4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=RQ3esWQQwMs:jKWBgXuDmz4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=RQ3esWQQwMs:jKWBgXuDmz4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=RQ3esWQQwMs:jKWBgXuDmz4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=RQ3esWQQwMs:jKWBgXuDmz4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=RQ3esWQQwMs:jKWBgXuDmz4:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/oraexplorer/~4/RQ3esWQQwMs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oraexplorer.com/2011/11/customizepersonalize-oracle-apex-workspace-environment/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://oraexplorer.com/2011/11/customizepersonalize-oracle-apex-workspace-environment/</feedburner:origLink></item>
		<item>
		<title>Book Review: Android Application Testing Guide (Deigo Torres Milano) by PACKT Publishing</title>
		<link>http://feedproxy.google.com/~r/oraexplorer/~3/n9l8F39rJNI/</link>
		<comments>http://oraexplorer.com/2011/10/book-review-android-application-testing-guide-deigo-torres-milano-by-packt-publishing/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 15:39:44 +0000</pubDate>
		<dc:creator>ittichai</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Android Application Testing Guide]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Deigo Torres Milano]]></category>
		<category><![CDATA[Packt]]></category>
		<category><![CDATA[Publishing]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://oraexplorer.com/?p=1002</guid>
		<description><![CDATA[When I was offered to review this book, I was so excited. The topic is probably one of the least popular topics in the Android development circle based on the number of books written on Android. Most of the books in the market tend to cover solely on the area of actual development because it [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear: right; float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Foraexplorer.com%2F2011%2F10%2Fbook-review-android-application-testing-guide-deigo-torres-milano-by-packt-publishing%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Foraexplorer.com%2F2011%2F10%2Fbook-review-android-application-testing-guide-deigo-torres-milano-by-packt-publishing%2F&amp;source=ittichai&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="https://www.packtpub.com/sites/default/files/imagecache/productview/3500EXP_Pentaho%20Data%20Integration%204%20Cookbook.jpg"><img class="alignleft" style="margin: 10px;" title="Android Application Testing Guide book (Diego Torres Milano) by Packt Publishing" src="https://www.packtpub.com/sites/default/files/imagecache/productview/3500EXP_Pentaho%20Data%20Integration%204%20Cookbook.jpg" alt="Android Application Testing Guide book  (Diego Torres Milano) by Packt Publishing" width="124" height="152" /></a>When I was offered to review this book, I was so excited. The topic is probably one of the least popular topics in the Android development circle based on the number of books written on Android. Most of the books in the market tend to cover solely on the area of actual development because it gives readers an instant gratification when creating something. However, it is unfortunate (but true) that the application testing might be something most developers least think about, or if they do, they not do it <em>systematically</em>. (I’m guilty of this as well.) I would like to expand my horizon by learning from the pros. That’s why I’m so excited for a chance to review this book.</p>
<p>The “<a title="Android Application Testing Guide book" href="http://www.packtpub.com/android-application-testing-guide/book" target="_blank">Android Application Testing Guide</a>” is a very practical book introducing available frameworks and most widely used tools &amp; techniques to improve the qualify of the application by engaging in the quality control and testing throughout the development cycle (not just start testing at the end). This agile development concept called the <a title="Test Driven Development (TDD)" href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank"><em>Test Driven Development (TDD)</em></a> relies on repeatable short cycle to trying to catch and take care of potential issues (i.e., bugs) as early as possible.</p>
<p>The first chapter explains what involves in the different stages of testing in the Android development including unit test, integration test, functional or acceptance test, system test, and performance test. It starts introducing the Android testing framework extending JUnit which provides the complete testing framework suitable for the end-to-end testing strategies.</p>
<p>The chapter 2 starts working on the actual testing using JUnit which is the default framework for Android testing project and is supported by <a title="Eclipse" href="http://www.eclipse.org" target="_blank">Eclipse </a>which it the most widely-used IDE for Android development. The chapter jumps right into the step-by-step on how to create the Android test project which is a separate from its development project being tested. The test project will have independent structure and a set of its own components. Having a separate project is the best practice because from the production build&#8217;s standpoint, testing codes will not be included in the actual build, thus it will be not be in the APK.</p>
<p>Chapter 3 dives into individual building block in the Android SDK tool.  This covers Assertions, TouchUtils class (to simulate the touch events), Mock objects (to simulate mock objects in order to isolate the tests), TestCase class, and Instrumentation. There is an extensive explanation of individual component accompanying by code samples.</p>
<p>Chapter 4 talks about the concept of <em>Test Driven Development</em>. Again, it is the strategy of performing tests along the development process &#8211; not at the end as in the traditional approach. This even includes writing test cases (and test codes) first right after studying the requirements, and then writing the actual codes to satisfy (having the “pass” results) the test cases. Author claims that this approach of creating test cases this early will ensure that tests will be performed instead of, if left until the end, it is highly possible that they would have been forgotten or ignored. I agree with the concept. But in reality this may not work with all types of the projects, and this is confirmed by author in a few paragraphs later to use your judgement and expertise in applying this approach to wherever suitable. The latter part of the chapter shows samples on how to apply the TDD in the step-by-step sample application and tests, which I found this makes the case very compelling.</p>
<p>Chapter 5 introduces the <em>Android Virtual Device (AVD)</em> which is the next best thing to the real devices. The obvious advantage of using AVD is ability to create different Android configurations to run tests. The <em>Headless Emulator</em> (no window displayed) is also mentioned here allowing the automated tests via command line with no windows. I really enjoy many samples of what you can do with command-lines especially when you can simulate different device’s conditions including network bandwidth throttling, or different locales, etc. Later in the chapter, it talks about the support of the<em> Monkey</em> application (you can read more about Monkey Theorem <a title="Monkey Theorem" href="http://en.wikipedia.org/wiki/Infinite_monkey_theorem" target="_blank">here</a>) which allows random event generation. It also demos the server-client setup and test scripting with Monkneyrunner.</p>
<p>Chapter 6 talks about the <a title="Behavior Driven Development" href="http://en.wikipedia.org/wiki/Behavior_Driven_Development" target="_blank">Behavior Driven Development</a> which, according to author, is considered the evolution of the <em>Test Driven Development</em> and a need of <em>Acceptance Testing</em>. In summary, the approach emphasizes not only to include the business or end users in testing, but also to use non-technical terms in the test cases that business or end users would understand. Personally I think the concept is too abstract than practical. However, the introduction of <a title="FitNesse! The fully integrated standalone wiki, and acceptance testing framework" href="http://fitnesse.org/" target="_blank">Fitnesse</a> and Slim tools makes the point to see its usefulness especially the part of “Wiki”-style test cases and test result documentation.</p>
<p>Chapter 7 contains all practical real-world samples of the disciplines and techniques you can use in the different situations. This includes testings on activities and applications, databases and Content Providers, UIs, exceptions, parsers and memory leaks. Couple tools are introduced here including<a title="EasyMock provides Mock Objects for interfaces (and objects through the class extension) by generating them on the fly using Java's proxy mechanism" href="http://easymock.org/" target="_blank"> EasyMock</a> which provides mock objects for interfaces, and <a title="Hamcrest - library of matchers for building test expressions" href="http://code.google.com/p/hamcrest/" target="_blank">Hamcrest</a> which is a library of matcher objects for comparison.</p>
<p>Chapter 8 continues the introduction of Agile technique with <a title="Continuous integration" href="http://en.wikipedia.org/wiki/Continuous_integration" target="_blank">Continuous integration</a>. Similar to continuous testing, it is suggested that integration should be done frequently early in the process and in small steps. The most common practice, as stated by author, is to trigger the build process after every commit to the source code repository. The chapter goes in details how to setup the automate building process using <a title="Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other." href="http://ant.apache.org/" target="_blank">ant</a>, the version control repository using <a title="Git is a free &amp; open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency." href="http://git-scm.com" target="_blank">Git</a>, the continuous integration with <a title="Hudson - Extensible continuous Integration Server" href="http://hudson-ci.org/" target="_blank">Hudson</a>, and test result analysis using <a title="nbandroid-utils Android utility classes" href="http://code.google.com/p/nbandroid-utils/" target="_blank">nbandroid-utils</a>.</p>
<p>Chapter 9 discusses one of the most critical components in designing Android application which is performance. As we all know, with a device which has limited computing power and battery life, balancing between performance and effective use of resources is something developers should keep in mind when designing an Android application. The chapter again introduces us with a series of tools and techniques for performance testing. This includes using traditional <em>LogCat</em>logging, extending Instrumentation, Traceview, dmtracedump, and <a title="caliper Microbenchmarking framework for Java " href="http://code.google.com/p/caliper/" target="_blank">Caliper microbenchmarks</a>.</p>
<p>Chapter 10 &#8211; alternative testing tactic is not for the most Android developers as it involves building Android from source code. Again, more tools are introduced. Even though it is very technical, it is still a good read.</p>
<p><em>Summary:</em></p>
<p>I have to say that for a novice Android developer like I am, I learn a lot from reading the Android Application Testing Guide. Best-in-class testing techniques are covered in this book which are commonly practiced in the agile development. These include Test Driven Development, Behavior Driven Development, Continuous Integration, etc. They in generally oppose to the traditional approach of doing test and integration at the end of development cycle. However, as author states in the book, there is no silver bullets in software development &#8211; the suggested testing approaches might not apply to certain needs or projects. But I can see that for a large complex project, applying these methodologies and techniques will likely increase in the productivity and quality.</p>
<p>Numerous tools are introduced in this book. This may be one of the big issues for those who are less-advanced in Android development. Since there is no common repository of these tools, extended knowledge of a varieties of open-source tools, and ability to incorporate them with the development process are required. I wish that there would be consolidated repository for all testing tools or even better all required testing functionality would be built-in in the SDK. Well, before when that would happen, this <em>Android Application Testing Guide book</em> is probably one of a few reference books that has the complete collection of Android testing topics.</p>
<p><em>Disclosure</em>: I received the Android Application Testing Guide e-book from Pubkt publishing with no charge. I&#8217;m not compensated for this book review. The content expressed in this post is personal opinion.</p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/oraexplorer?a=n9l8F39rJNI:RhuSv7atj6c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=n9l8F39rJNI:RhuSv7atj6c:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=n9l8F39rJNI:RhuSv7atj6c:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=n9l8F39rJNI:RhuSv7atj6c:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=n9l8F39rJNI:RhuSv7atj6c:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=n9l8F39rJNI:RhuSv7atj6c:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=n9l8F39rJNI:RhuSv7atj6c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=n9l8F39rJNI:RhuSv7atj6c:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=n9l8F39rJNI:RhuSv7atj6c:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=n9l8F39rJNI:RhuSv7atj6c:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=n9l8F39rJNI:RhuSv7atj6c:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=n9l8F39rJNI:RhuSv7atj6c:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=n9l8F39rJNI:RhuSv7atj6c:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/oraexplorer/~4/n9l8F39rJNI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oraexplorer.com/2011/10/book-review-android-application-testing-guide-deigo-torres-milano-by-packt-publishing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://oraexplorer.com/2011/10/book-review-android-application-testing-guide-deigo-torres-milano-by-packt-publishing/</feedburner:origLink></item>
		<item>
		<title>Oracle APEX (Application Express) Built-in LDAP Test Tool Stand-alone Application</title>
		<link>http://feedproxy.google.com/~r/oraexplorer/~3/wf2NwmK1DaQ/</link>
		<comments>http://oraexplorer.com/2011/09/oracle-apex-application-express-built-in-ldap-test-tool-stand-alone-application/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 23:56:17 +0000</pubDate>
		<dc:creator>ittichai</dc:creator>
				<category><![CDATA[APEX]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://oraexplorer.com/?p=985</guid>
		<description><![CDATA[Oracle APEX provides multiple ways for authentication. The most commonly used one is the LDAP authentication. Configuring it is very straight-forward in most cases &#8211; just providing the LDAP host, port, whether or not to use SSL, and finally the DN string. See here and here for posts about APEX LDAP configuration. Sometime you want [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear: right; float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Foraexplorer.com%2F2011%2F09%2Foracle-apex-application-express-built-in-ldap-test-tool-stand-alone-application%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Foraexplorer.com%2F2011%2F09%2Foracle-apex-application-express-built-in-ldap-test-tool-stand-alone-application%2F&amp;source=ittichai&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Oracle APEX provides multiple ways for authentication. The most commonly used one is the LDAP authentication. Configuring it is very straight-forward in most cases &#8211; just providing the LDAP host, port, whether or not to use SSL, and finally the DN string. See <a title="APEX: LDAP Authentication " href="http://www.oraclenerd.com/2010/03/apex-ldap-authentication.html" target="_blank">here</a> and <a title="APEX – LDAP and Oracle Login" href="http://wheatfield.wordpress.com/2008/12/10/apex-ldap-and-oracle-login/" target="_blank">here</a> for posts about APEX LDAP configuration.</p>
<p>Sometime you want to test the LDAP configuration before deploying it. You can either use the 3rd-party tools to validate the configurations, or create an APEX application to test the logon, or use the built-in LDAP test tool in APEX.</p>
<p>The built-in APEX LDAP test tool can be launched when the authentication is being configured as seen below.</p>
<p><img class="alignnone" title="LDAP Test Tool" src="https://lh3.googleusercontent.com/--PROn9wztBc/Tnp0gKmgnRI/AAAAAAAAEOI/LSXoOM6TcgE/s540/LDAP%252520test%252520screen.PNG" alt="LDAP Test Tool" width="540" /></p>
<p>It will pop-up a new window as shown below.</p>
<p><img class="alignnone" title="LDAP Test Tool Pop-up Screen" src="https://lh5.googleusercontent.com/--XgpqFlTDq0/TnpyzaXxubI/AAAAAAAAEN0/4Hf2Imp96V0/s540/LDAP%252520test%252520tool%252520screen.gif" alt="LDAP Test Tool Pop-up Screen" width="540" height="402" /></p>
<p>By accident, I found out that you can even launch the APEX LDAP Test Tool as the<em> stand-alone</em> <em>application</em> using <strong>Application ID 4000</strong> and <strong>Page Number 3890</strong>.</p>
<p>For example,</p>
<pre>http://localhost:8888/apex/f?p=<span style="color: #ff0000;">4000</span>:<span style="color: #ff0000;">3890</span></pre>
<p>It will obviously prompt you to log on to the workspace first, then the LDAP test tool will just show just like an application, not the pop-up window.</p>
<p><em>Additional resources:</em></p>
<ul>
<li>LDAP Authentication Function<a href="http://www.oracle.com/technetwork/developer-tools/apex/how-to-ldap-authenticate-099256.html"> http://www.oracle.com/technetwork/developer-tools/apex/how-to-ldap-authenticate-099256.html</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wf2NwmK1DaQ:dNMYNPIUEtQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wf2NwmK1DaQ:dNMYNPIUEtQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wf2NwmK1DaQ:dNMYNPIUEtQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=wf2NwmK1DaQ:dNMYNPIUEtQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wf2NwmK1DaQ:dNMYNPIUEtQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=wf2NwmK1DaQ:dNMYNPIUEtQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wf2NwmK1DaQ:dNMYNPIUEtQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=wf2NwmK1DaQ:dNMYNPIUEtQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wf2NwmK1DaQ:dNMYNPIUEtQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wf2NwmK1DaQ:dNMYNPIUEtQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=wf2NwmK1DaQ:dNMYNPIUEtQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wf2NwmK1DaQ:dNMYNPIUEtQ:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wf2NwmK1DaQ:dNMYNPIUEtQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/oraexplorer/~4/wf2NwmK1DaQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oraexplorer.com/2011/09/oracle-apex-application-express-built-in-ldap-test-tool-stand-alone-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://oraexplorer.com/2011/09/oracle-apex-application-express-built-in-ldap-test-tool-stand-alone-application/</feedburner:origLink></item>
		<item>
		<title>Book Review: Oracle 11g R1/R2 Real Application Clusters Essentials by Ben Prusinski and Syed Jaffer Hussain (Packt Publishing)</title>
		<link>http://feedproxy.google.com/~r/oraexplorer/~3/lNjouEqXZ2Y/</link>
		<comments>http://oraexplorer.com/2011/08/book-review-oracle-11g-r1r2-real-application-clusters-essentials-by-ben-prusinski-and-syed-jaffer-hussain-packt-publishing/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 02:31:04 +0000</pubDate>
		<dc:creator>ittichai</dc:creator>
				<category><![CDATA[11g]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[11gR1]]></category>
		<category><![CDATA[11gR2]]></category>
		<category><![CDATA[Ben Prusinski]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Packt]]></category>
		<category><![CDATA[R1 and R2]]></category>
		<category><![CDATA[RAC]]></category>
		<category><![CDATA[Real Application Clusters]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Syed Jaffer Hussain]]></category>

		<guid isPermaLink="false">http://oraexplorer.com/?p=966</guid>
		<description><![CDATA[Oracle Real Application Cluster (RAC)  becomes the technology of choice for highly available and highly scalable deployment of enterprise Oracle database environment. With its innovative technology it comes with no surprise its complexity. The complexity is not only with the underlying database technology itself, but also how well you design and implement it to work [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear: right; float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Foraexplorer.com%2F2011%2F08%2Fbook-review-oracle-11g-r1r2-real-application-clusters-essentials-by-ben-prusinski-and-syed-jaffer-hussain-packt-publishing%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Foraexplorer.com%2F2011%2F08%2Fbook-review-oracle-11g-r1r2-real-application-clusters-essentials-by-ben-prusinski-and-syed-jaffer-hussain-packt-publishing%2F&amp;source=ittichai&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.packtpub.com/oracle-11g-r1-r2-real-application-clusters-essentials/book"><img class="alignleft" title="Oracle 11g R1/R2 Real Application Clusters Essentials" src="https://www.packtpub.com/sites/default/files/imagecache/productview/2664EN_Oracle%2011g%20R1R2%20Real%20Applications%20Clusters.jpg" alt="Oracle 11g R1/R2 Real Application Clusters Essentials" width="125" height="152" /></a>Oracle <a title="Oracle Real Application Clusters" href="http://www.oracle.com/us/products/database/options/real-application-clusters/index.html%20" target="_blank">Real Application Cluster (RAC)</a>  becomes the technology of choice for highly available and highly scalable deployment of enterprise Oracle database environment. With its innovative technology it comes with no surprise its complexity. The complexity is not only with the underlying database technology itself, but also how well you design and implement it to work with other components including operating system, storage subsystem, etc. In order to setup and maintain a successful RAC environment, it not only requires technical knowledge of database administrator (DBA), but also well collaboration and extended planning between all IT and business partners.</p>
<p>Few years back, there has been a movement of <a title="DBA 2.0" href="http://dbatrain.files.wordpress.com/2009/01/dba20.pdf" target="_blank">DBA 2.0</a> which says that, in addition to database knowledge,  an extended understanding of operating system, storage and/or networking is encouraged due to more tightly integrated of Oracle database technologies such as Clusterware, RAC, ASM with the underlying subsystems. I agree with this notion but not to the extent that DBAs should perform all works in those areas. (Yes, I&#8217;m aware that some DBAs do it all.) However, I think at least they should have enough understandings of all-related technologies to collaborate with those who are responsible for in order to achieve the desired setup. In many cases especially in the large companies where traditional organization division of the job description of administrators is clear cut and no overlapping, being well-rounded with all-related technologies will allow DBA to better discuss the requirements and designs and even assist with the implementation details.</p>
<p>Most Oracle RAC books in the market today tend to focus only on the detailed technical aspects of this database technology. This mainly is good for those Oracle professionals who at least have worked with RAC before. Few books really provide a good foundation for those who are new to this technology. One of those few which I&#8217;ve just read recently is <a title="Oracle 11g R1/R2 Real Application Clusters Essentials" href="http://www.packtpub.com/oracle-11g-r1-r2-real-application-clusters-essentials/book" target="_blank"><em>Oracle 11g R1/R2 Real Application Clusters Essentials</em></a> authored by <a title="Welcome to the database wizard! " href="http://oracle-magician.blogspot.com/" target="_blank">Ben Prusinski</a> and <a title="Jaffar's Oracle blog " href="http://jaffardba.blogspot.com/" target="_blank">Syed Jaffer Hussain</a> published by <a title="Packt Publishing" href="http://www.packtpub.com/" target="_blank">Packt Publishing</a>.</p>
<p>What I really like about this book is the fact that it does not jump into the nuts and bolts of this Oracle technology right away but instead it is trying to build up good foundation starting from concept (especially high availability), architecture (of all components not just of database), design, implementation and then even some of the real-world samples. This stepping-stone approach helps readers to understand what is involved and how they should deploy this technology for the high available database.</p>
<p>In the chapter 1, the emphasis of the high availability concept is crucial. The authors precisely points out that high availability should be looked from users’ perspective. Many DBAs or system administrators especially novice ones have a tendency to focus solely on their respective areas. The provided sample of the availability percentage in the “high availability interpretations” section is a good reminder for a need to have an<strong> end-to-end</strong> high availability design to avoid a single point of failure (SPOF). The chapter goes on to give the definitions of many acronyms (BIA, BCP, DRP, etc.) commonly-used during the planning phase. It is quite useful to be aware of them especially when discussing with business end-users. The chapter ends with providing a whole picture of the high availability solutions (RAC, Data Guard, Streams, Application Server Clustering) from Oracle as a part of the Maximum Availability Architecture (MAA). It is worth to point out that RAC is just one (not the only) of key components for a complete high availability solution.</p>
<p>Chapter 2 looks into the hardware components of Oracle RAC architecture including network, storage, etc. Again, I think the authors reinforce a need to understand all these underlying technologies (at least at high level) even though DBAs might not involve in the actual implementation. But it is crucial to have this knowledge under their belts in order to have the productive discussions of the requirements and design with system administrators.</p>
<p>Chapter 3 goes into the clusterware installation of 11g R1/R2. Even though readers may to be able to find similar information on many web sites and blogs, this book has some extra information which makes an attempt to explain what each action does, for example, what happen when the orainstRoot.sh and root.sh run?</p>
<p>Chapter 4 dedicates to the Automatic Storage Management (ASM) which becomes the only clear choice for storage management in the 11g deployment. The chapter covers all aspects of ASM in both R1 and R2 including new features, configurations, management, etc.</p>
<p>Chapter 5 covers Clusterware management and (some) troubleshooting samples. Instead of showing all possible troubleshooting scenarios (which is impossible to include everything in a chapter or even in a book), the authors did an excellent job of giving an overview of all necessary Clusterware utilities in order to troubleshoot the issues.</p>
<p>Chapter 6 turns our attention to RAC database administration. The structure is similar to that of Clusterware in the chapter 3. The latter part of the chapter also covers the automatic workload management including the topic of the service which is highly recommended to utilize it (not using the default database service.)</p>
<p>Chapter 7 covers all aspects of backup and recovery of Oracle database including the best practices. In addition, new features of RMAN in Oracle 11g R1 and 11g R2 along with OCR and voting disk backup and recovery are discussed.</p>
<p>Chapter 8 tries to give an overview of performance tuning. The intention here seems to just give an overview of the concept and methods of performance tuning as well as new 11g performance features, for example, Real Application Testing (RAT) which has the Database Replay and SQL Performance Analyzer (SPA). This high-level overview focus is understandable because the scope of performance tuning is generally vast. Some of tuning metrics especially relate to the wait events are explained here.</p>
<p>Chapter 9 focuses on the upgrade scenarios. As we all know it is impossible to cover all possible scenarios. But the authors gives sufficient information about overall upgrade processes from 10g R2 to 11g R1 and then to 11g R2 in this chapter. Definitely consulting with Oracle support for more details on individual upgrade case is still highly recommended.</p>
<p>Chapter 10 is very informative on the node addition and removal. The chapter steam-lines the steps pretty well (comparing to the official Oracle document which is very confusing at the first read with the flow of information). (We just went through adding two nodes into the existing two nodes of Oracle 11g R1 two months ago. That’s why I can say that.)</p>
<p>Chapter 11 shows the readers the importance of the end-to-end high availability implementation. The high availability should not stop at the Oracle RAC database, but it must extend to application layer on top of it. In addition to an overview of Oracle EBS (E-Business Suite), this chapter shows the readers how to take full advantage of high availability and performance features in Oracle RAC database.</p>
<p>The last chapter wraps up nicely with information about other tools in the MAA tool suite namely Streams and Data Guard. It covers all various topics of thes tools including concepts, new features, best practices, and overview configuration.</p>
<p>The last section of this book on the additional resources and tools is a nice read and very informative. It is just like a nice dessert at the end of a good meal.</p>
<p>In conclusion, if you’re new to Oracle RAC technology, this is THE book for you. It should give the readers enough understanding to jump on Oracle RAC bandwagon. Advanced DBAs may find that most of the contents in the book are too familiar, but they might be attracted to the new features, comparisons between R1 and R1 as well as some of real-world samples mentioned in this book. Overall I appreciate a very well effort of Ben ad Syed for one of the most complete informative books on Oracle RAC in the market today. Well-deserved kudos to them.</p>
<p>Thanks to Packt Publishing for the opportunity to review this book.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/oraexplorer?a=lNjouEqXZ2Y:JsRZUsqQnKU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=lNjouEqXZ2Y:JsRZUsqQnKU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=lNjouEqXZ2Y:JsRZUsqQnKU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=lNjouEqXZ2Y:JsRZUsqQnKU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=lNjouEqXZ2Y:JsRZUsqQnKU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=lNjouEqXZ2Y:JsRZUsqQnKU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=lNjouEqXZ2Y:JsRZUsqQnKU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=lNjouEqXZ2Y:JsRZUsqQnKU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=lNjouEqXZ2Y:JsRZUsqQnKU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=lNjouEqXZ2Y:JsRZUsqQnKU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=lNjouEqXZ2Y:JsRZUsqQnKU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=lNjouEqXZ2Y:JsRZUsqQnKU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=lNjouEqXZ2Y:JsRZUsqQnKU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/oraexplorer/~4/lNjouEqXZ2Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oraexplorer.com/2011/08/book-review-oracle-11g-r1r2-real-application-clusters-essentials-by-ben-prusinski-and-syed-jaffer-hussain-packt-publishing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://oraexplorer.com/2011/08/book-review-oracle-11g-r1r2-real-application-clusters-essentials-by-ben-prusinski-and-syed-jaffer-hussain-packt-publishing/</feedburner:origLink></item>
		<item>
		<title>SQL Developer with “I/O Error: SSO Failed: Native SSPI library not loaded” when connecting to MS SQL using Windows Authentication</title>
		<link>http://feedproxy.google.com/~r/oraexplorer/~3/oZqwZ1EZO10/</link>
		<comments>http://oraexplorer.com/2011/07/sql-developer-with-io-error-sso-failed-native-sspi-library-not-loaded-when-connecting-to-ms-sql-using-windows-authentication/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 22:57:38 +0000</pubDate>
		<dc:creator>ittichai</dc:creator>
				<category><![CDATA[SQL Developer]]></category>

		<guid isPermaLink="false">http://oraexplorer.com/?p=954</guid>
		<description><![CDATA[I encountered this error &#8220;I/O Error: SSO Failed: Native SSPI library not loaded&#8221; when using Oracle SQL Developer connecting to a MS SQL database using Windows Authentication. Fortunately, couple web sites (here and here) already mentioned about this. Basically, from the  jTDS distribution downloaded files, I have to copy a DLL file named ntlmauth.dll (which is [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear: right; float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Foraexplorer.com%2F2011%2F07%2Fsql-developer-with-io-error-sso-failed-native-sspi-library-not-loaded-when-connecting-to-ms-sql-using-windows-authentication%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Foraexplorer.com%2F2011%2F07%2Fsql-developer-with-io-error-sso-failed-native-sspi-library-not-loaded-when-connecting-to-ms-sql-using-windows-authentication%2F&amp;source=ittichai&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I encountered this error <em>&#8220;I/O Error: SSO Failed: Native SSPI library not loaded&#8221;</em> when using Oracle SQL Developer connecting to a MS SQL database using Windows Authentication. Fortunately, couple web sites (<a title="Oracle Observer - SQL Developer 3 - Connecting to SQL Server Using Third Party Drivers" href="http://oracleobserver.com/?q=node/29" target="_blank">here</a> and <a title="Andrei DANEASA - Windows authentication connection to SQL Server from SQL Developer" href="http://www.webxpert.ro/andrei/2009/05/29/windows-authentication-connection-to-sql-server-from-sql-developer/" target="_blank">here</a>) already mentioned about this.</p>
<p><img class="alignnone" title="Error when using SQL Developer to connect to MS SQL using Windows Authentication" src="https://lh4.googleusercontent.com/-wrw7i8kPV-4/ThOVivOGqOI/AAAAAAAADVc/6Xrimv-wENU/s600/SQL%252520Dev%252520to%252520MS%252520SQL.PNG" alt="Error when using SQL Developer to connect to MS SQL using Windows Authentication" width="600" height="314" /></p>
<p>Basically, from the <a title="jTDS - SQL Server and Sybase JDBC driver" href="http://sourceforge.net/projects/jtds/" target="_blank"> jTDS distribution downloaded files</a>, I have to copy a DLL file named <strong>ntlmauth.dll</strong> (which is for NT authentication) under the jtds-x.x.x-dist\<em>x86</em>\SSO\ or jtds-x.x.x-dist\<em>x64</em>\SSO\, to any directories in the PATH environment. I copied it to the <em>bin</em> directory of the JDK (which I already have it in the PATH). Then after restarting the SQL Developer, I can now connect to MS SQL database using Windows Authentication.</p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/oraexplorer?a=oZqwZ1EZO10:AxOjsXN1epA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=oZqwZ1EZO10:AxOjsXN1epA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=oZqwZ1EZO10:AxOjsXN1epA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=oZqwZ1EZO10:AxOjsXN1epA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=oZqwZ1EZO10:AxOjsXN1epA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=oZqwZ1EZO10:AxOjsXN1epA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=oZqwZ1EZO10:AxOjsXN1epA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=oZqwZ1EZO10:AxOjsXN1epA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=oZqwZ1EZO10:AxOjsXN1epA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=oZqwZ1EZO10:AxOjsXN1epA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=oZqwZ1EZO10:AxOjsXN1epA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=oZqwZ1EZO10:AxOjsXN1epA:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=oZqwZ1EZO10:AxOjsXN1epA:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/oraexplorer/~4/oZqwZ1EZO10" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oraexplorer.com/2011/07/sql-developer-with-io-error-sso-failed-native-sspi-library-not-loaded-when-connecting-to-ms-sql-using-windows-authentication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://oraexplorer.com/2011/07/sql-developer-with-io-error-sso-failed-native-sspi-library-not-loaded-when-connecting-to-ms-sql-using-windows-authentication/</feedburner:origLink></item>
		<item>
		<title>Book Review: Learning Android by Marko Gargenta (O’Reilly Book)</title>
		<link>http://feedproxy.google.com/~r/oraexplorer/~3/85mCUgc81NM/</link>
		<comments>http://oraexplorer.com/2011/05/book-review-learning-android-by-marko-gargenta-by-oreilly/#comments</comments>
		<pubDate>Mon, 30 May 2011 21:24:27 +0000</pubDate>
		<dc:creator>ittichai</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://oraexplorer.com/?p=930</guid>
		<description><![CDATA[Learning Android is a collection of many years’ experience of the author, Marko Gargenta, who has been teaching the Android bootcamp training to thousands of software developers. It covers all necessary topics about Android starting from a high-level overview (history and concept) until the nuts and bolts (writing codes for Twitter-like application called Yamba application). [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear: right; float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Foraexplorer.com%2F2011%2F05%2Fbook-review-learning-android-by-marko-gargenta-by-oreilly%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Foraexplorer.com%2F2011%2F05%2Fbook-review-learning-android-by-marko-gargenta-by-oreilly%2F&amp;source=ittichai&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://oreilly.com/catalog/0636920010883"><img class=" alignleft" style="margin-right: 10px;" title="Learning Android by Marko Gargenta by O’Relily" src="http://covers.oreilly.com/images/0636920010883/cat.gif" alt="Learning Android by Marko Gargenta by O’Relily" width="180" height="236" /></a><a title="Learning Android by Marko Gargenta" href="http://oreilly.com/catalog/0636920010883"><strong>Learning Android</strong></a> is a collection of many years’ experience of the author, <em>Marko Gargenta</em>, who has been teaching the Android bootcamp training to thousands of software developers. It covers all necessary topics about Android starting from a high-level overview (history and concept) until the nuts and bolts (writing codes for Twitter-like application called Yamba application).</p>
<p>As an avid user of both Android phone and tablet myself, I have an interest in learning about this platform and hopefully writing some applications on it. I’ve read many Android books before. Most cover a lot of topics but without coherence &#8211; you feel like you learn a lot about many things but you still can’t put them together to make them work well. This book is one of the few books I really like. It walks you through creating a reasonably complex application from scratch. Not only the author explains the concepts and sample codes really well, but he also guides you through his thinking and design process on how to write a good application. The latter, I think, is more important for laying a good foundation for writing other applications in the future. The tips, suggestions, and notes throughout the book show you that Marko really understands what works and what does not.</p>
<p>I highly recommend this book to everyone who has an interest in learning about programming on Android and would like to build a good foundation on good programming practices. People who know Java programming language should have no problem following the sample codes presented in the book. But for those who don’t, I suggest getting yourself familiar with Java first. (Obviously if you don’t plan to use any other mobile cross-platform or rapid development tools, you must write in Java codes.) Knowing it a bit will help you tremendously with understanding the sample codes. Needless to say, you can still pretty much read for concepts, tips, and even some codes because the explanation from the author is very precise and clear.</p>
<p>It took me a longer time to finish this book because my plan is not to just read through it, but also write the sample application along with it. At the end I’m proud to say that I’ve successfully coded the Yamba application.</p>
<p><strong>Here is the list of useful links on this book:</strong></p>
<li><a href="http://oreilly.com/catalog/0636920010883">Overview of this book from the publisher’s web site</a></li>
<li><a href="http://my.safaribooksonline.com/book/-/9781449304881">On-line partial book preview</a></li>
<li><a href="http://marakana.com/forums/android/learning_android_book">Forum to discuss about Learning Android by Marko Gargenta</a></li>
<li><a href="http://yamba.marakana.com/">Micro-blogging web site used for sample application</a></li>
<li><a href="http://ittichaicham.com/wiki/Book_Review:_Learning_Android_by_Marko_Gargenta_%28O%27Reilly_Book%29">Personal note on the book content</a></li>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/oraexplorer?a=85mCUgc81NM:v9v6VEepV8g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=85mCUgc81NM:v9v6VEepV8g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=85mCUgc81NM:v9v6VEepV8g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=85mCUgc81NM:v9v6VEepV8g:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=85mCUgc81NM:v9v6VEepV8g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=85mCUgc81NM:v9v6VEepV8g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=85mCUgc81NM:v9v6VEepV8g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=85mCUgc81NM:v9v6VEepV8g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=85mCUgc81NM:v9v6VEepV8g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=85mCUgc81NM:v9v6VEepV8g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=85mCUgc81NM:v9v6VEepV8g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=85mCUgc81NM:v9v6VEepV8g:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=85mCUgc81NM:v9v6VEepV8g:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/oraexplorer/~4/85mCUgc81NM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oraexplorer.com/2011/05/book-review-learning-android-by-marko-gargenta-by-oreilly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://oraexplorer.com/2011/05/book-review-learning-android-by-marko-gargenta-by-oreilly/</feedburner:origLink></item>
		<item>
		<title>Change sequence’s current value (CURRVAL) without dropping it</title>
		<link>http://feedproxy.google.com/~r/oraexplorer/~3/3dnNP73gDj8/</link>
		<comments>http://oraexplorer.com/2011/05/change-sequences-current-value-currval-without-dropping-it/#comments</comments>
		<pubDate>Thu, 12 May 2011 00:51:23 +0000</pubDate>
		<dc:creator>ittichai</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Sequence]]></category>
		<category><![CDATA[current value]]></category>
		<category><![CDATA[CURRVAL]]></category>
		<category><![CDATA[drop]]></category>
		<category><![CDATA[dropping]]></category>
		<category><![CDATA[next value]]></category>
		<category><![CDATA[NEXTVAL]]></category>
		<category><![CDATA[sequence]]></category>

		<guid isPermaLink="false">http://oraexplorer.com/?p=920</guid>
		<description><![CDATA[This is not new but I&#8217;ve learned about it last week from one of developers when reviewing codes with them for the plan to change the sequence&#8217;s current value. Normally I would drop the sequence and create it with START WITH to a new desired number. However, my approach will obviously invalidate all dependencies which [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear: right; float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Foraexplorer.com%2F2011%2F05%2Fchange-sequences-current-value-currval-without-dropping-it%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Foraexplorer.com%2F2011%2F05%2Fchange-sequences-current-value-currval-without-dropping-it%2F&amp;source=ittichai&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>This is not new but I&#8217;ve learned about it last week <img src='http://oraexplorer.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  from one of developers when reviewing codes with them for the plan to change the sequence&#8217;s current value. Normally I would drop the sequence and create it with START WITH to a new desired number. However, my approach will obviously invalidate all dependencies which commonly refer to triggers.</p>
<p>The trick is to change the INCREMENT BY value to the difference between the current value and the needed value, then use it once, finally switch the INCREMENT BY back to 1.</p>
<p>Here is a quick demo:</p>
<p>This TR_TAB_A_BI trigger depends on the SQ_TAB_A sequence.</p>
<pre>
create or replace trigger TR_TAB_A_BI
before insert on TAB_A
for each row
when (new.id is null)
begin
	select SQ_TAB_A.nextval
	into :new.id
	from dual;
end;
/
</pre>
<p>Start with trigger valid.</p>
<pre>
SQL> select object_name, status from user_objects where object_name='TR_TAB_A_BI';

OBJECT_NAME          STATUS
-------------------- -------
TR_TAB_A_BI          VALID
</pre>
<p>Let&#8217;s drop trigger.</p>
<pre>
SQL> drop sequence SQ_TAB_A;

Sequence dropped.
</pre>
<p>As expected, the trigger became invalid.</p>
<pre>
SQL> select object_name, status from user_objects where object_name='TR_TAB_A_BI';

OBJECT_NAME          STATUS
-------------------- -------
TR_TAB_A_BI          INVALID
</pre>
<p>After the sequence is recreated, you can compile this trigger before use, or you can just execute an insert into the table, Oracle will recompile this trigger automatically before actual use. </p>
<pre>
SQL> create sequence SQ_TAB_A start with 243 cache 20;

Sequence created.

SQL> select object_name, status from user_objects where object_name='TR_TAB_A_BI';

OBJECT_NAME          STATUS
-------------------- -------
TR_TAB_A_BI          INVALID

SQL> insert into TAB_A (B) values ('AA');

1 row created.

SQL> select object_name, status from user_objects where object_name='TR_TAB_A_BI';

OBJECT_NAME          STATUS
-------------------- -------
TR_TAB_A_BI          VALID
</pre>
<p>Neat!</p>
<p>The other way to avoid triggers being invalidated at all, as mentioned in the first paragraph, is to change the INCREMENT BY value.</p>
<pre>
SQL> select object_name, status from user_objects where object_name='TR_TAB_A_BI';

OBJECT_NAME          STATUS
-------------------- -------
TR_TAB_A_BI          VALID
</pre>
<p>Assuming the current value is 300, we want a new current value to be 500. So the difference is 200.</p>
<pre>
SQL> alter sequence SQ_TAB_A increment by 200 nocache;

Sequence altered.

SQL> select SQ_TAB_A.nextval from dual;

   NEXTVAL
----------
       500

SQL> alter sequence SQ_TAB_A increment by 1 cache 20;

Sequence altered.
</pre>
<p>With all changes in sequence, the trigger will remain valid.</p>
<pre>
SQL> select object_name, status from user_objects where object_name='TR_TAB_A_BI';

OBJECT_NAME          STATUS
-------------------- -------
TR_TAB_A_BI          VALID
</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/oraexplorer?a=3dnNP73gDj8:PKNqei97IPc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=3dnNP73gDj8:PKNqei97IPc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=3dnNP73gDj8:PKNqei97IPc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=3dnNP73gDj8:PKNqei97IPc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=3dnNP73gDj8:PKNqei97IPc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=3dnNP73gDj8:PKNqei97IPc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=3dnNP73gDj8:PKNqei97IPc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=3dnNP73gDj8:PKNqei97IPc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=3dnNP73gDj8:PKNqei97IPc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=3dnNP73gDj8:PKNqei97IPc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=3dnNP73gDj8:PKNqei97IPc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=3dnNP73gDj8:PKNqei97IPc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=3dnNP73gDj8:PKNqei97IPc:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/oraexplorer/~4/3dnNP73gDj8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oraexplorer.com/2011/05/change-sequences-current-value-currval-without-dropping-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://oraexplorer.com/2011/05/change-sequences-current-value-currval-without-dropping-it/</feedburner:origLink></item>
		<item>
		<title>The Developer Toolbar in APEX Application Disappeared</title>
		<link>http://feedproxy.google.com/~r/oraexplorer/~3/j8T1nAyQ_b8/</link>
		<comments>http://oraexplorer.com/2011/05/the-developer-toolbar-in-apex-application-disappeared/#comments</comments>
		<pubDate>Tue, 10 May 2011 12:57:33 +0000</pubDate>
		<dc:creator>ittichai</dc:creator>
				<category><![CDATA[APEX]]></category>
		<category><![CDATA[APEX Application]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[Developer Toolbar]]></category>
		<category><![CDATA[Disappear]]></category>
		<category><![CDATA[Disappeared]]></category>
		<category><![CDATA[Toolbar]]></category>

		<guid isPermaLink="false">http://oraexplorer.com/?p=905</guid>
		<description><![CDATA[If the Developer Toolbar (shown below) in your Oracle APEX application is not displayed, you can control its display by changing the Status attribute on the application&#8217;s Edit Definition page. I&#8217;ve learned about this when somehow one of our applications suddenly did not display the Developer Toolbar. We found out later that during environment refresh, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear: right; float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Foraexplorer.com%2F2011%2F05%2Fthe-developer-toolbar-in-apex-application-disappeared%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Foraexplorer.com%2F2011%2F05%2Fthe-developer-toolbar-in-apex-application-disappeared%2F&amp;source=ittichai&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>If the <em>Developer Toolbar</em> (shown below) in your Oracle APEX application is not displayed, you can control its display by changing the <strong>Status</strong> attribute on the application&#8217;s<strong> Edit Definition</strong> page.<br />
<br />
<img src="https://lh5.googleusercontent.com/_vH60i-IVw0M/Tckz41CAOdI/AAAAAAAAC88/YFMm2UZyQR0/s560/APEXbar2.PNG" alt="" /></p>
<p><img src="https://lh6.googleusercontent.com/_vH60i-IVw0M/Tckz4xqRdiI/AAAAAAAAC84/gq4JnXupHRw/s560/APEXbar1.PNG" alt="" /></p>
<p>I&#8217;ve learned about this when somehow one of our applications suddenly did not display the Developer Toolbar. We found out later that during environment refresh, the deployment team switched the Application&#8217;s Availability Status to <strong>Unavailable</strong> before the refresh and then back to <strong>Available </strong>after it’s done &#8211; not realizing that it was initially <strong>Available with Edit Links</strong>.</p>
<p>No harm done &#8211; just temporary inconvenience from Developer’s standpoint. <img src='http://oraexplorer.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
<br />
<strong>Related Topic:</strong></p>
<ul>
<li><a title="Delayed Message When URL redirect for Oracle APEX application" href="http://oraexplorer.com/2011/02/delayed-message-when-url-redirect-for-oracle-apex-application/">Delayed Message When URL redirect for Oracle APEX application</a></li>
<li></li>
</ul>
<p></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/oraexplorer?a=j8T1nAyQ_b8:CdOl10vDWpM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=j8T1nAyQ_b8:CdOl10vDWpM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=j8T1nAyQ_b8:CdOl10vDWpM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=j8T1nAyQ_b8:CdOl10vDWpM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=j8T1nAyQ_b8:CdOl10vDWpM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=j8T1nAyQ_b8:CdOl10vDWpM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=j8T1nAyQ_b8:CdOl10vDWpM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=j8T1nAyQ_b8:CdOl10vDWpM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=j8T1nAyQ_b8:CdOl10vDWpM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=j8T1nAyQ_b8:CdOl10vDWpM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=j8T1nAyQ_b8:CdOl10vDWpM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=j8T1nAyQ_b8:CdOl10vDWpM:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=j8T1nAyQ_b8:CdOl10vDWpM:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/oraexplorer/~4/j8T1nAyQ_b8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oraexplorer.com/2011/05/the-developer-toolbar-in-apex-application-disappeared/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://oraexplorer.com/2011/05/the-developer-toolbar-in-apex-application-disappeared/</feedburner:origLink></item>
		<item>
		<title>Differences between Native and Interpreted Compilations in Oracle 11g? Why Performance Is Improved in the Native Compilation?</title>
		<link>http://feedproxy.google.com/~r/oraexplorer/~3/E1grfA9NrDM/</link>
		<comments>http://oraexplorer.com/2011/03/differences-between-native-and-interpreted-compilations-in-oracle-11g-why-performance-is-improved-in-the-native-compilation/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 19:38:23 +0000</pubDate>
		<dc:creator>ittichai</dc:creator>
				<category><![CDATA[11g]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Compilations]]></category>
		<category><![CDATA[Improvement]]></category>
		<category><![CDATA[Interpreted]]></category>
		<category><![CDATA[Native]]></category>
		<category><![CDATA[Oracle 11g]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://oraexplorer.com/?p=892</guid>
		<description><![CDATA[Quick bullet points from reading the Transparent Performance Improvement: Real Native Compilation from the PL/SQL Enhancements in Oracle Database 11g white paper: The PL/SQL is an interpreted language but it is not just like other interpreted languages , e.g. BASIC, where the code is processed statement by statement at the run time. The PL/SQL code [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear: right; float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Foraexplorer.com%2F2011%2F03%2Fdifferences-between-native-and-interpreted-compilations-in-oracle-11g-why-performance-is-improved-in-the-native-compilation%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Foraexplorer.com%2F2011%2F03%2Fdifferences-between-native-and-interpreted-compilations-in-oracle-11g-why-performance-is-improved-in-the-native-compilation%2F&amp;source=ittichai&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Quick bullet points from reading the <em>Transparent Performance Improvement: Real Native Compilation</em> from the <a href="http://www.oracle.com/technetwork/database/features/plsql/overview/plsql-new-in-11gr1-128133.pdf" target="_blank">PL/SQL Enhancements in Oracle Database 11g white paper</a>:</p>
<ul>
<li>The  PL/SQL is an interpreted language but it is not just like other  interpreted languages , e.g. BASIC, where the code is processed  statement by statement at the run time. The PL/SQL code is compiled into  machine code called <em>M-Code</em> with a target virtual machine called <em>PL/SQL  Virtual Machine (PVM)</em>, just like Java to Java Virtual Machine (JVM).</li>
<li>The PVM is implemented as a set of subroutines in Oracle executables, and scans the M-Code at run time.</li>
<li>The  scanning detects each successive OPCODE and its OPERANDS, then calls  the subroutine that implements this OPCODE with actual arguments.</li>
<li><span style="text-decoration: underline;">This run-time scanning of the M-Code takes some resources</span>. This is where the PL/SQL native compilation will help with improvement.</li>
<li>Compilations of both follow the same path:
<ul>
<li>In the interpreted mode, the M-Code is produced.</li>
<li>In  the native mode, a platform-specific dynamically linkable library (DDL)  (similar to .dll in Windows or .so in Unix) is produced.
<ul>
<li>This  platform-specific DLL, at run time, calls exactly the same PVM  subroutines with same arguments as would have been called by scanning  the M-Code.</li>
</ul>
</li>
</ul>
</li>
<li><strong>In short, the performance improvement is due to the  fact that the scanning effort has been moved from run time (when in  interpreted mode) to compile time (when in native mode). </strong></li>
<li>Since  exactly the same PVM subroutines are called with exactly the same  arguments in both interpreted and native modes, the native mode is  guaranteed to have exactly the same semantics as the interpreted mode.</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/oraexplorer?a=E1grfA9NrDM:sALz482VykM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=E1grfA9NrDM:sALz482VykM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=E1grfA9NrDM:sALz482VykM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=E1grfA9NrDM:sALz482VykM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=E1grfA9NrDM:sALz482VykM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=E1grfA9NrDM:sALz482VykM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=E1grfA9NrDM:sALz482VykM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=E1grfA9NrDM:sALz482VykM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=E1grfA9NrDM:sALz482VykM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=E1grfA9NrDM:sALz482VykM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=E1grfA9NrDM:sALz482VykM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=E1grfA9NrDM:sALz482VykM:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=E1grfA9NrDM:sALz482VykM:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/oraexplorer/~4/E1grfA9NrDM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oraexplorer.com/2011/03/differences-between-native-and-interpreted-compilations-in-oracle-11g-why-performance-is-improved-in-the-native-compilation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://oraexplorer.com/2011/03/differences-between-native-and-interpreted-compilations-in-oracle-11g-why-performance-is-improved-in-the-native-compilation/</feedburner:origLink></item>
		<item>
		<title>Oracle 11g SQL Error Logging</title>
		<link>http://feedproxy.google.com/~r/oraexplorer/~3/wNcMO41IDOk/</link>
		<comments>http://oraexplorer.com/2011/03/oracle-11g-sql-error-logging/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 13:00:16 +0000</pubDate>
		<dc:creator>ittichai</dc:creator>
				<category><![CDATA[11g]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[SQLPlus]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[Logging]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Oracle 11g]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[SQL Plus]]></category>

		<guid isPermaLink="false">http://oraexplorer.com/?p=848</guid>
		<description><![CDATA[We&#8217;re working on the installation scripts for an internal PL/SQL applications. Multiple scripts are called from the main one. To capture errors from script execution, normally the spool syntax will be used in the scripts to pipe out all executions into log files, and then later the deployment team members will examine them using find/search [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear: right; float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Foraexplorer.com%2F2011%2F03%2Foracle-11g-sql-error-logging%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Foraexplorer.com%2F2011%2F03%2Foracle-11g-sql-error-logging%2F&amp;source=ittichai&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>We&#8217;re working on the installation scripts for an internal PL/SQL applications. Multiple scripts are called from the main one. To capture errors from script execution, normally the <em>spool </em>syntax will be used in the scripts to pipe out all executions into log files, and then later the deployment team members will examine them using find/search ORA- for any errors. This would work fine if there are only a few scripts but it becomes cumbersome when multiple scripts are involved. In addition we&#8217;d like to be able to run the scripts on either Windows and Unix platforms, handling OS file paths for multiple platforms using spool adds unnecessary layer.</p>
<p>The SQL Error Logging is a new feature in 11g. This simplifies the way we capture and locate error messages as information now will be stored in database table instead of OS files.</p>
<p>To check whether or not the Error Logging is enabled.</p>
<pre style="padding-left: 30px;">SQL&gt; show errorlogging

errorlogging is OFF</pre>
<p>To enable the Error Logging. The default table <em>SPERRORLOG</em> is created.</p>
<pre style="padding-left: 30px;">SQL&gt; set errorlogging on</pre>
<p>By default, the <em>SPERRORLOG </em>will be created under current user. In this sample, the current schema is TEST1_USER.</p>
<pre style="padding-left: 30px;">SQL&gt; show errorlogging

errorlogging is ON TABLE TEST1_USER.SPERRORLOG</pre>
<p>Here is the structure of this table SPERRORLOG.</p>
<pre style="padding-left: 30px;">SQL&gt; desc SPERRORLOG
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
USERNAME                                           VARCHAR2(256)
TIMESTAMP                                          TIMESTAMP(6)
SCRIPT                                             VARCHAR2(1024)
IDENTIFIER                                         VARCHAR2(256)
MESSAGE                                            CLOB
STATEMENT                                          CLOB</pre>
<p>To enable the Error Logging to an user defined table instead of the default <em>SPERRORLOG </em>table.</p>
<pre style="padding-left: 30px;">SQL&gt; set errorlogging on table [schema].[table]</pre>
<p>If non-default, the table has to be created in advance, otherwise you will get an error.</p>
<pre style="padding-left: 30px;">SQL&gt; set errorlogging on table my_sperrorlog;

SP2-1507: Errorlogging table, role or privilege is missing or not accessible</pre>
<p>Here is the syntax to create an user-defined table. If this table is created on a different schema, an <em>insert </em>grant to is needed for the current user.</p>
<pre style="padding-left: 30px;">SQL&gt; CREATE TABLE my_sperrorlog (
username     VARCHAR(256),
timestamp    TIMESTAMP,
script       VARCHAR(1024),
identifier   VARCHAR(256),
message      CLOB,
statement    CLOB
);</pre>
<pre style="padding-left: 30px;">SQL&gt; set errorlogging on table my_sperrorlog

SQL&gt; show errorlogging
errorlogging is ON TABLE TEST1_USER.my_sperrorlog</pre>
<p><strong>Demo</strong><br />
Generate error #1.</p>
<pre style="padding-left: 30px;">SQL&gt; SELECT 1/0 FROM DUAL;
SELECT 1/0 FROM DUAL
*
ERROR at line 1:
ORA-01476: divisor is equal to zero</pre>
<p>Generate error #2.</p>
<pre style="padding-left: 30px;">SQL&gt; alter table EMP add new_column VARCHR2(1);
alter table EMP add new_column VARCHR2(1)
*
ERROR at line 1:
ORA-01735: invalid ALTER TABLE option</pre>
<p>Check the SQL Error Logging.</p>
<pre style="padding-left: 30px;">SQL&gt; column username format A10
SQL&gt; column message format A30 wrap
SQL&gt; column statement format A30 wrap

SQL&gt; SELECT username, STATEMENT, message FROM sperrorlog;

USERNAME   STATEMENT                      MESSAGE
---------- ------------------------------ ------------------------------
TEST1_USER SELECT 1/0 FROM DUAL           ORA-01476: divisor is equal to
zero

TEST1_USER alter table EMP add new_column ORA-01735: invalid ALTER TABLE
VARCHR2(1)                     option</pre>
<p>Without commit, other sessions won&#8217;t see this information.</p>
<pre style="padding-left: 30px;">SQL&gt; commit;

Commit complete.</pre>
<p>Set an unique identifier to make it easier to identify the logging record. In sample here, the identifier is set to <em>REL1</em>.</p>
<pre style="padding-left: 30px;">SQL&gt; set errorlogging on identifier 'REL1'</pre>
<p>Generate error #3.</p>
<pre style="padding-left: 30px;">SQL&gt; alter table EMP modify ABC NOT NULL;
alter table EMP modify ABC NOT NULL
*
ERROR at line 1:
ORA-00904: "ABC": invalid identifier</pre>
<p>Check the SQL Error Logging with the identifier=&#8217;REL1&#8242;.</p>
<pre style="padding-left: 30px;">SQL&gt; SELECT username, statement, message, IDENTIFIER
FROM sperrorlog where IDENTIFIER='REL1';

USERNAME   STATEMENT                      MESSAGE                        IDENT
---------- ------------------------------ ------------------------------ -----
TEST1_USER alter table EMP modify ABC NOT ORA-00904: "ABC": invalid iden REL1
NULL                          tifier</pre>
<p>Truncate the Error Logging to clear all existing rows in the error log table. This will clear out all records regardless of who creates them.</p>
<pre style="padding-left: 30px;">SQL&gt; set errorlogging on truncate

SQL&gt; SELECT * FROM sperrorlog;
No rows selected</pre>
<p>There is no <em>set errorlogging truncate</em> only a specified identifier. Doing below is the same <em>set errorlogging on truncate</em>. So basically the identifier is ignored.</p>
<pre style="padding-left: 30px;">SQL&gt; set errorlogging on truncate identifier 'REL1'</pre>
<p>But you can just delete records as the regular table.</p>
<pre style="padding-left: 30px;">SQL&gt; delete sperrorlog where IDENTIFIER='REL1';

SQL&gt; commit;</pre>
<p>Disable Error Logging. (Log off will automatically disable it.)</p>
<pre style="padding-left: 30px;">SQL&gt; set errorlogging OFF

SQL&gt; show errorlogging
errorlogging is OFF</pre>
<p><strong>Will it work with previous versions of Oracle database?</strong></p>
<p>Since the SQL Error Logging is the feature on client, I have no reason to believe that it would not work with pre-11g databases.</p>
<p><span style="text-decoration: underline;">The 11g SQL Plus Client to 10.2.0.1 Database</span></p>
<pre style="padding-left: 30px;">SQL&gt; select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Solaris: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SQL&gt; show errorlogging
errorlogging is OFF

SQL&gt; set errorlogging ON

SQL&gt; show errorlogging
errorlogging is ON TEST1_USER.SPERRORLOG

SQL&gt; select username, TIMESTAMP from  sperrorlog;

no rows selected

SQL&gt; SELECT 1/0 FROM DUAL;
SELECT 1/0 FROM DUAL
*
ERROR at line 1:
ORA-01476: divisor is equal to zero

SQL&gt; SELECT username, STATEMENT, message FROM sperrorlog;

USERNAME   STATEMENT                      MESSAGE
---------- ------------------------------ ------------------------------
TEST1_USER SELECT 1/0 FROM DUAL           ORA-01476: divisor is equal to
zero</pre>
<p><span style="text-decoration: underline;">The 11g SQL Plus Client to 10.1.0.4 Database</span></p>
<pre style="padding-left: 30px;">SQL&gt; select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - 64bi
PL/SQL Release 10.1.0.4.0 - Production
CORE    10.1.0.4.0      Production
TNS for Solaris: Version 10.1.0.4.0 - Production
NLSRTL Version 10.1.0.4.0 - Production

SQL&gt; show errorlogging
errorlogging is OFF

SQL&gt; set errorlogging ON

SQL&gt; show errorlogging
errorlogging is ON TABLE TEST1_USER.SPERRORLOG

SQL&gt; select username, TIMESTAMP from  sperrorlog;

no rows selected

SQL&gt; SELECT 1/0 FROM DUAL;
SELECT 1/0 FROM DUAL
*
ERROR at line 1:
ORA-01476: divisor is equal to zero

SQL&gt; SELECT username, STATEMENT, message FROM sperrorlog;

USERNAME   STATEMENT                      MESSAGE
---------- ------------------------------ ------------------------------
TEST1_USER SELECT 1/0 FROM DUAL           ORA-01476: divisor is equal to
zero</pre>
<p><span style="text-decoration: underline;">The 11g SQL Plus Client to 9i Database</span><br />
Unfortunately I don&#8217;t have any Oracle 9i databases.  <img src='http://oraexplorer.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><span style="text-decoration: underline;">The 11g SQL Plus Client to 8i Database</span></p>
<p>Surprisingly, I still have one 8i database left. But, well, the 11g client no longer supports the 8i database.<span style="text-decoration: underline;"><br />
</span></p>
<pre style="padding-left: 30px;">ERROR:
ORA-03134: Connections to this server version are no longer supported.</pre>
<p>Related topics:</p>
<ul>
<li><a title="The Access Control Lists to Network Services (e.g., UTL_HTTP, UTL_SMTP, UTL_TCP, etc.) in Oracle 11g" href="http://oraexplorer.com/2009/10/the-access-control-lists-to-network-services-e-g-utl_http-utl_smtp-utl_tcp-etc-in-oracle-11g/">The Access Control Lists to Network Services (e.g., UTL_HTTP, UTL_SMTP, UTL_TCP, etc.) in Oracle 11g</a></li>
<li><a title="11gR2 New Feature – Alter Database Link to Change Password" href="http://oraexplorer.com/2009/11/11gr2-new-feature-alter-database-link-to-change-password/">11gR2 New Feature – Alter Database Link to Change Password</a></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wNcMO41IDOk:56lqOyOEdVU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wNcMO41IDOk:56lqOyOEdVU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wNcMO41IDOk:56lqOyOEdVU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=wNcMO41IDOk:56lqOyOEdVU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wNcMO41IDOk:56lqOyOEdVU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=wNcMO41IDOk:56lqOyOEdVU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wNcMO41IDOk:56lqOyOEdVU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=wNcMO41IDOk:56lqOyOEdVU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wNcMO41IDOk:56lqOyOEdVU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wNcMO41IDOk:56lqOyOEdVU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/oraexplorer?i=wNcMO41IDOk:56lqOyOEdVU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wNcMO41IDOk:56lqOyOEdVU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/oraexplorer?a=wNcMO41IDOk:56lqOyOEdVU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/oraexplorer?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/oraexplorer/~4/wNcMO41IDOk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://oraexplorer.com/2011/03/oracle-11g-sql-error-logging/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://oraexplorer.com/2011/03/oracle-11g-sql-error-logging/</feedburner:origLink></item>
	</channel>
</rss>

