Book Review: Getting Started with Oracle VM VirtualBox

Getting Started with
Oracle VM VirtualBox
This book gives a general introduction to Oracle VM VirtualBox software, which is used in virtualization. Using this software you will be able to run operating systems which are different from the one installed in your hard disk. It can be installed on your Mac, Linux, or even Windows machines. It adds the capability to run multiple operating system as a virtual machine. For example once you have logged into your Linux/Ubuntu machine, you can start a Virtual machine for Windows.

This book covers a great deal about how to start using with VirtualBox, which is an open source software licensed under GPL (GNU General Public License) version 2. Learn more about this software from its website.

The book also covers various details like installation (which is anyway not a daunting task you might think, but there are people who might need this) in various operating systems. It then talks about how to create virtual machines, cloning, restoring in a step by step fashion. You will never get lost in this way.

The book then talks about installing Oracle Enterprise Linux (which is Oracle's version of Linux) on VirtualBox, and then about various networking and storage options available in VirtualBox and how they work. If you are an application developer there is nothing to get excited about, but you can know what are the different options available. If you are a networking person/DBA who is looking to tune the availability of your virtual machines this is for you.

Overall its a decent book on VirtualBox, and can be used as a quick reference guide either while setting up for the first time or when you are stuck with "How to do this", or "What is wrong with my set up" kind of situation.

You can buy this book from various on-line stores, the publishers often reward your purchases with discounts. You can buy the e-book format or physical copy of the book from Packt Publishing website.

Oracle Query to get table size across schemas

I googled for this and got this from some website. Do not remember the website from where I got this query. Thanks for the original author. Pasting the query for my personal records:

SELECT owner,
       table_name,
       trunc(SUM(bytes) / 1024 / 1024) meg
FROM   (SELECT segment_name table_name,
               owner,
               bytes
        FROM   dba_segments
        WHERE  segment_type = 'TABLE'
        UNION ALL
        SELECT i.table_name,
               i.owner,
               s.bytes
        FROM   dba_indexes  i,
               dba_segments s
        WHERE  s.segment_name = i.index_name
        AND    s.owner = i.owner
        AND    s.segment_type = 'INDEX'
        UNION ALL
        SELECT l.table_name,
               l.owner,
               s.bytes
        FROM   dba_lobs     l,
               dba_segments s
        WHERE  s.segment_name = l.segment_name
        AND    s.owner = l.owner
        AND    s.segment_type = 'LOBSEGMENT'
        UNION ALL
        SELECT l.table_name,
               l.owner,
               s.bytes
        FROM   dba_lobs     l,
               dba_segments s
        WHERE  s.segment_name = l.index_name
        AND    s.owner = l.owner
        AND    s.segment_type = 'LOBINDEX')
WHERE  owner NOT IN ('SYS', 'SYSTEM')
GROUP  BY table_name,
          owner
HAVING SUM(bytes) / 1024 / 1024 > 30 /* Ignore tables lower than 30 MB */
ORDER  BY SUM(bytes) DESC

jQuery tabs within Oracle APEX

This tip was posted in Oracle Apex Knowledge Group by Richard Martens. Its my sincere pleasure in thanking the author for this simple tip.

The original blog is available here. I am posting the steps first, and a slight deviation which makes the setup one time only through this article.

The idea is to create a region first and all sub-regions as tabs. If this design suits your application then its simple as copy-paste.Create a template

  1. Go to Shared Components 
  2. Navigate to Templates
  3. Press the Create Button
  4. Choose Region
  5. Choose From Scratch
  6. Provide the name jQuery Tabs
  7. Choose Custom 1 for template class
  8. Press Create button
  9. Once the template is created, find the jQuery tabs from the list and click to edit.
  10. Paste both the following codes in Definition Section:
    1. <div id="#REGION_STATIC_ID#" #REGION_ATTRIBUTES#>
      #BODY##SUB_REGION_HEADERS##SUB_REGIONS#
      <div style="clear:both;"></div>
      </div>
      <link rel="stylesheet" href="#IMAGE_PREFIX#libraries/jquery-ui/1.8/themes/base/jquery.ui.tabs.css" type="text/css" />
      <script src="#IMAGE_PREFIX#libraries/jquery-ui/1.8/ui/minified/jquery.ui.tabs.min.js" type="text/javascript"></script>
    2. <script type="text/javascript">
       apex.jQuery(function() {
       apex.jQuery("##REGION_STATIC_ID#").tabs();
       });
      </script>
  11. Paste the following in Sub Regions > Header Template
    1. <ul style="height: auto;">#ENTRIES#</ul>
  12. Paste the following in Sub Regions > Header Entry Template
    1. <li><a href="##REGION_STATIC_ID#-tab-#SUB_REGION_ID#">#SUB_REGION_TITLE#</a></li>
  13. Paste the following in Sub Regions > Template
    1. <div id="#REGION_STATIC_ID#-tab-#SUB_REGION_ID#">#SUB_REGION#</div>
The template is now ready. Now you are ready to create regions in your page. While creating the Parent region, choose the template as jQuery Tabs.

If you are wondering what is the improvisation I have done, its present in Step 10.2

In Richard Martens blog the step 10.2 is mentioned to be done for every page. I have modified it to be included in the page template itself. A very small and negligible improvisation.