3.3 StatsView
After
his triumph with OraExplain, Alan Burlison went on to create yet
another superb Perl/Tk application, StatsView, a program designed for
use by both system administrators and Oracle DBAs using Unix systems.
If you serve both functions at your site, we feel confident that
you'll love StatsView too. Although StatsView is
aimed clearly at Solaris, the program's Oracle-based
monitoring is equally applicable to other Unix operating systems, so
we thought we'd install it on Linux to see how far
we could push
it.
Like many of the best things in life,
StatsView comes with a few challenges:
You have to preinstall the gnuplot
command-driven plotting program, which itself relies on various C
libraries, depending on how you configure it. The
gnuplot program plots functions and data points
in many different formats in either GIF or PNG image formats. See
Figure 3-6 for a typical example.
You'll also need an extra Perl/Tk module containing
cutting-edge widgets.
Although installing StatsView requires some special challenges, it
comes with a silver lining. In the course of getting StatsView to
work, you'll have installed some of the best Perl
and C libraries around for performing graphical information plotting
on both Unix and Win32. Here's where you start going
beyond Perl Imperial Trooper rank and start heading towards Perl Sith
Lord status!
The first thing we need to do for StatsView is to get hold of the
extended Tk::GBARR Perl/Tk module and layer it
over the standard Perl/Tk Unix distribution. We'll
describe that task and the other installation procedures in the
following sections.
3.3.1 Installing Tk::GBARR
Although
the main Perl/Tk download may seem to possess virtually all of the
screen widgets you could possibly need, after a while you may require
more specialized options. Many packages on CPAN provide additional
functionality; check under the main /Tk module
directory on CPAN.
One of the most popular packages is Slaven Rezic's
Tk::GBARR package, which contains many varied
Perl/Tk widgets created by one of Perl/Tk's prime
movers. Many of these widgets provide capabilities beyond those in
standard Perl/Tk distributions. Most of the Tk::GBARR
widgets, such as Tk::ProgressBar, do
eventually become part of the standard distribution, but if you want
to get ahead of the game, you can find Tk::GBARR
at:
- http://www.cpan.org/authors/id/SREZIC
Follow these installation instructions:
Download and unpack the latest tarball from CPAN: $ gzip -d Tk-GBARR-2.05.tar.gz
$ tar xvf Tk-GBARR-2.05.tar
$ cd Tk-GBARR-2.05
Check for the latest notes, where to post potential errors, and so
on, and then install the program in the usual manner. Once again,
note that during the make test step
you'll see lots of GUI examples popping up, albeit
this time very briefly:
$ vi README
$ perl Makefile.PL
$ make
$ make test
$ make install
Subject to our usual warnings that you must deal with any unlikely
errors before going on, you can now consider Tk::GBARR
to be installed, ready for use with StatsView.
3.3.2 Downloading StatsView
Get
StatsView itself from the following location:
- http://www.cpan.org/authors/id/ABURLISON
Unpack it according to the standard cavalry drill:
$ gzip -d StatsView-1.4.tar.gz
$ tar xvf StatsView-1.4.tar
$ cd StatsView-1.4
3.3.2.1 The need for PNG
When we installed StatsView, we faced
something of a dilemma. Although StatsView assumes that
gnuplot will use the GIF graphics file format,
there are some reasons why you may prefer to use another format. GIF
presents a problem because the Lempel Ziv Welch (LZW) algorithm that
underlies the GIF format is patented (see the sidebar,
"The LZW Patent Issue"). To avoid
patent complications, many people prefer to use the freely available
PNG and JPEG
formats.
In fact, the PNG graphics format came about largely as a result of
patent issues. Many people were interested in developing an
alternative, freely available format that could be using in place of
LZW. After an initial technical paper from Thomas Boutell describing
a proposed format, a number of like-minded developers got together to
work on the new format, culminating in Guy Eric
Schalnat's creation of the
libpng library.
To avoid patent issues ourselves,
we'll load up the PNG library and its required
compression companion, zlib, for use with
gnuplot.
3.3.2.2 Installing zlib
Used by PNG to compress its
graphics, zlib is an open data-compression
library that has now been ported to virtually every kind of operating
system. You can get hold of the latest zlib
package, generally called zlib.tar.gz, from
here:
- http://www.gzip.org/zlib
- http://www.zlib.org
Created
originally for PNG, zlib is maintained by
Jean-loup Gailly, the primary author of gzip
(http://www.gzip.org), and
gzip coauthor Mark Adler, the original author of
Zip (http://www.info-zip.org/Zip.html).
Unsurprisingly, zlib is the back-end engine of
the gzip program, decoupled and morphed into an
independent library for other open source projects requiring
compression (i.e., virtually everything using the Internet).
zlib thus contains the same
lossless deflationary compression algorithms
employed by both Zip and gzip, and as originally
used in PKWARE
(http://www.pkware.com). (For
some help with compression terminology, see the sidebar, Lossless versus Lossy, later in this chapter in
the discussion of DBD::Chart.)
To install zlib, run through the following steps
to configure the Makefile:
Decompress the original zlib.tar.gz tarball.
This should unpack into a directory with a version number, such as
zlib-1.1.3 as follows:
$ gzip -d zlib.tar.gz
$ tar xvf zlib.tar
$ cd zlib-1.1.3
$ vi README
$ ./configure Before compilation, make sure to read the
Makefile to see whether you'd
like to change any compile options:
$ vi Makefile
Once you're happy with
Makefile, move straight into a tested
compilation:
$ make test You're trying to create an output response such as:
...
inflate with dictionary: hello, hello!
*** zlib test OK ***
Now it's time to install: $ make install This copies zlib.h to
/usr/local/include, and the library archive
libz.a to /usr/local/lib.
zlib is now accessible to other bodies of code
that rely upon it, such as PNG.
Compression is the process that
reduces the physical size of blocks of information. It is vital to
storing and transmitting data, particularly graphics data and data
being transferred over networks. A number of compression algorithms
have been widely adopted. One of the most popular, the LZW (Lempel
Ziv Welch) algorithm, is used in the GIF graphics file format, the
Unix compress utility, and many other pieces of
software.
LZW is named after its developers: Abraham Lempel and Jakob Ziv, who
first proposed substitutional compression in 1977 and 1978, and Terry
Welch who modified the LZ-78 variant to create the algorithm in 1984.
Unisys acquired the patent on the compression algorithm that came to
be known as LZW.
For many years, developers used the LZW algorithm freely. But on
December 28, 1994 came an announcement by CompuServe that it would
start trying to collect royalties on the use of the
company's GIF graphics file format because of its
underlying use of LZW. CompuServe and others had been under
increasing pressure from Unisys, the LZW patent holder. With the
popularization of the Web, use of GIF and other technologies using
LZW were booming. Despite a lot of complaint and controversy among
developers and users, Unisys' patent and licensing
agreements held up. The company did compromise by not seeking fees on
products using LZW that were delivered prior to 1995.
Ultimately, the LZW patent controversy led developers to seek out and
develop their own compression algorithms and tools — for example,
PNG and zlib.
|
3.3.2.3 Installing PNG
You
can get hold of the latest libpng tarball from
the following
pages:
http://www.libpng.org/pub/png
We begin our dance with the usual introductions: $ gzip -d libpng-1.0.12.tar.gz
$ tar xvf libpng-1.0.12.tar
$ cd libpng-1.0.12
$ vi README INSTALL
You'll find all sorts of
Makefile versions in the
/scripts directory, for different Unix flavors.
Choose your poison and copy it to the main download directory. Look
it over carefully to ensure that it's right for your
system:
$ cp scripts/makefile.linux makefile
$ vi makefile
Following the advice given within the file, we manually pointed the
following variables at places matching our immediately previous
installation of zlib:
ZLIBLIB=/usr/local/lib
ZLIBINC=/usr/local/include Make sure you're also happy with the default
installation file destinations:
prefix=/usr/local
INCPATH=$(prefix)/include
LIBPATH=$(prefix)/lib
Let's make and test PNG: $ make test Look for an output similar to the following:
...
tIME = 7 Jun 1996 17:58:08 +0000
libpng passes test
Also check to make sure that the two PNG files produced by this
installation, pngtest.png and
pngout.png, are identical. You can view this PNG
image in Figure 3-7; the image is also borrowed by
the Tk::PNG installation we'll
be doing later for Perl/Tk.
You'll find other assorted tests mentioned within
the INSTALL file. Once you're
happy with these, install PNG properly:
$ make install All of the necessary libraries and include files should now go to
/usr/local/include and
/usr/local/lib, as with
zlib earlier.
3.3.2.4 Installing gnuplot
For
all the latest information and downloads relating to
gnuplot, check out:
- http://www.gnuplot.info
- http://sourceforge.net/projects/gnuplot
|
For GIF usage, gnuplot uses an old version of
gd, which itself is no longer available from
Thomas Boutell's gd site. This
is because gd now only deals with PNG and JPEG
images, which is why we're avoiding the use of GIFs
with gnuplot.
In the future, the gnuplot team may be forced,
for patent reasons, to withdraw the old gd
downloads they maintain. They recommend that you switch to using PNG
as soon as you can; most of the latest browser technologies now
support PNG. (We'll be installing the more modern
PNG-based gd program later, when we install
Lincoln Stein's GD.pm program
for use with Perl/Tk.)
|
|
Let's get straight into the installation game: $ gzip -d gnuplot-3.7.1.tar.gz
$ tar xvf gnuplot-3.7.1.tar
$ cd gnuplot-3.7.1
Next, we check out the 0README and
0INSTALL files:
$ vi 0README 0INSTALL
Following their advice, we checked the
term/png.trm file and found nothing problematic
there. By default, the gnuplot compilation
checks all the directories such as /usr/local/lib
and /usr/local/include, where
we'd installed our required PNG and
zlib library files. We were able to configure
without incident. Notice that we deliberately fail to include the old
GIF-based gd program.
$ ./configure --without-gd --with-png
$ make
Optional tests are provided: $ cd demo
$ ../gnuplot simple.dem If the ../gnuplot simple.dem step fails to work
first time, and you're running an X11 display, it
may be because gnuplot requires the currently
uninstalled gnuplot_x11 driver program. You may
therefore have to update your PATH, unless you've
previously installed an earlier gnuplot
version:
$ PATH=`pwd`/..:$PATH
$ ../gnuplot simple.dem (This test problem will resolve itself once you've
fully installed gnuplot.)
Once gnuplot is executing successfully, you can
run several other sample programs too from the same directory:
$ ../gnuplot fit.dem
Once you're happy with these demonstrations, install
gnuplot under
/usr/local/bin:
$ make install Now we can get back to the StatsView installation
directory.
3.3.2.5 Installing StatsView
Now we're back to
more mainstream Perl territory. After the final make
install step, StatsView produces a program called
sv, which is placed into the
/usr/local/bin directory:
$ cd ..
$ perl Makefile.PL
$ make
$ make install
Now we can test this initial Linux-PNG setup in the following
way:
First of all, the main /usr/local/bin/sv program
uses a Solaris-based ps -ef command to check
whether the Oracle background processes are running. This command was
unavailable on our Linux system, so we moved to
/scripts within the StatsView unload directory
and copied the original sv program to a new one
of our own,
lin_sv.
$ cd scripts
$ cp sv lin_sv We then edited this file to replace the ps -ef
command with a ps aux one. You might like to try
something similar on your own operating system, if you hit the same
kind of OS-specific problem.
Before testing the program, also make sure that your target database
is running with an appropriate listener.
Next, as the root user, create a statistical
information storage directory:
$ pwd
$ mkdir StatsViewTest
Ensure that your environment is set correctly, especially
PATH, to help DBD::Oracle
and your own system pick up the sv and
lin_sv programs:
$ export ORACLE_HOME=/u01/app/oracle/product/8.1.5
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
$ export PATH=.:/usr/local/bin:$PATH
Finally, we ran our slightly Linux-modified copy of the
sv program:
$ cd scripts
$ ./lin_sv &
The first thing we did was set up a file for the monitor to store
information in. We did this by clicking Monitor,
then Start. On the resulting
Output tab we selected an
Interval of 10 seconds and a
Samples rate of 60, and then pressed
Browse to nominate a file in which to save the
results (see Figure 3-8).
We also chose all of these available monitoring options and then set
the monitor going:
- Buffer Cache
- Datafile I/O
- Library Cache
- Tablespace I/O
- Data Dictionary Cache
- Dynamic Extension
- Shared Pool
After 10 minutes, the monitoring completed automatically. We then
moved to the second stage of StatsView to graphically view the
information collected:
Drill down onto the menu option, File, then
Open File... to choose the nominated storage
file.
Click down on whichever monitor option is of interest; we chose
Datafile I/O. Now a gnuplot
graph will appear (as in the earlier Figure 3-6).
|