Saturday Apr 25, 2009

Oracle Database 10gR2 (10.2.0.3 and higher patches) Single Instance (not RAC) is certified with Solaris 10 ZFS on SPARC 64-bit. Please read Solaris ZFS_Best_Practices_Guide. You may need to limit ARC cache.


del.icio.us digg technorati

Friday Dec 12, 2008

Nothing happens without a reason. My previous post about Monitoring ZFS Statistic is not exception. This week I had T5240 (128 threads, 64GB memory, Solaris 10 10/08 aka U6) with 6140 attached and not loaded with other my projects. So I decided to load the boxes with Oracle on ZFS (binaries, datafiles, logs) and run some tests. Not a benchmarking. Just to check if this can live and breathe. I also wanted to check the battle for the memory between Oracle SGA (set to 32GB), 3800 processes connecting to database (taking approx. 5MB not shared memory each) and ZFS.

On storage I have made single 1TB RAID1 LUN and put ZFS on it. No data/logs of ZFS separation. Keeping it simple.

root@rac05#zpool list
NAME     SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
oracle  1016G   243G   773G    23%  ONLINE  -
 

Arcstat script was modified a little further (lines 82, 177, 229 and 230) so I don't have too many zeros in statistics by going up from bytes to MB. Download new arcstat script and description file for dimstat.

 81 my $version = "0.1";
 82 my $mega = 1024 * 1024;
 83 my $cmd = "Usage: arcstat.pl [-hvx] [-f fields] [-o file] [interval [count]]\n";
...
171 sub prettynum {
172     my @suffix=(' ','K', 'M', 'G', 'T', 'P', 'E', 'Z');
173     my $num = $_[1] || 0;
174     my $sz = $_[0];
175     my $index = 0;
176     return sprintf("%s", $num) if not $num =~ /^[0-9\.]+$/;
177     return sprintf("*%d", $sz, $num);
178     while ($num > 1000 and $index < 8) {
179         $num = $num/1000;
180         $index++;
181     }
182     return sprintf("%*d", $sz, $num) if ($index == 0);
183     return sprintf("%*d%s", $sz - 1, $num,$suffix[$index]);
184 }
...
200 sub calculate {
...
229     $v{"arcsz"} = $cur{"size"}/$mega;
230     $v{"c"} = $cur{"c"}/$mega;
...
238 }

On the picture you may see results of monitoring:


At 1:01 test was started. It took 1 hour until all processes become ready (1 process was started each 1 second). Then Oracle database was busy between 2:04 and 2:53.

As you can see ZFS is taking more memory if it can, but it stays "polite" by freeing this memory for other processes when it needed.

I will be glad to hear from you if you have any thoughts and experience running Oracle Database on ZFS.

Thanks to Valery for his Perl Syntax highlighting plugin for Netbeans.


del.icio.us digg technorati

Monday Dec 08, 2008

By combining two great tools arcstat and dimstat you can get ZFS statistics in:

  • table view

  • chart view

  • any date/time interval

  • host to host compare


For example, online table and chart view


[Read More]
del.icio.us digg technorati

Monday Oct 20, 2008

Question: I want to install more than one guest domain. Is there any way to speedup process.

Answer: Yes, sure.

This instruction can be used as supplimental to «Run your first Logical Domain in 10 minutes» as well as a separate guide.

  1. First setup the Control Domain and install the First Guest Domain ldg1. Use ZFS volume (In example, data/demo/ldg1) as back end drive for the system drive of guest domain. You can install Solaris either through a Network Install or by mounting a DVD or ISO file.

  2. Log in to the First guest domain Console and do 'sys-unconfig' in the domain.

  3. # sys-unconfig
                            
    WARNING
    
    This program will unconfigure your system.  It will cause it
    to revert to a "blank" system - it will not have a name or know
    about other systems or networks.
    
    This program will also halt the system.
    
    Do you want to continue (y/n) ? y
    
    
  4. Wait for the system to come down and answer h — halt.

  5.  svc.startd: The system is down. 
     syncing file systems... done 
     Program terminated 
      r)eboot, o)k prompt, h)alt?  h

  6. From Control domain verify that guest domain ldg1 is stopped.

  7.  # ldm ls 
     NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME 
     primary active -n-cv SP 4 4G 0.5% 1h 30m 
     ldg1 bound ----- 5000 14 1984M 
  8. Unbind domain

  9.  # ldm unbind ldg1 
  10. Create a ZFS snapshot of the First Guest Domain's disk image:

  11. # zfs snapshot data/demo/ldg1@install
    
  12. Bind and Start domain back

  13. # ldm bind ldg1 
    # ldm start ldg1

  14. Clone the snapshot using the name ldg2 as the target volume

  15. # zfs clone data/demo/ldg1@install data/demo/ldg2
    
  16. Setup 2 nd Guest domain by using newly created ZFS clone data/demo/ldg2 as back-end to system disk.

  17. Repeat steps 8 and 9 for each next domain.


del.icio.us digg technorati

This blog copyright 2009 by Roman Ivanov