Monitoring Oracle Database Performance with Grafana – Part II

This the second part of a blog post on using the Grafana graphing tool to create an Oracle database performance dashboard for monitoring host and database performance in real time.

In the previous blog post I created a process to read key metrics from Oracle and insert them into a PostgreSQL database. This intermediate step was necessary as the free edition of Grafana does not include the connector to read directly from Oracle.

Once the metrics were loaded into a PostgreSQL table, a second process calculated deltas for those Oracle metrics that are cumulative. The results were then read by Grafana to show host performance and also report on the number of connected Swingbench users.

In this blog post I am going to expand on that and add IO metrics to track read and write IOPs and also throughput.

There is a video for this blog

As before, all code is available from my GitHub repository.

If you have not read Part I, you can find it here

Continue reading

Monitoring Oracle Database Performance with Grafana – Part I

In a previous blog post I explored how we can use Oracle’s rich V$ views to monitor CPU utilization on the host on which our database is running, as well as the IO generated by all nodes of the database.

Numbers are great, but it would be even better to see the loads represented graphically on a dashboard for an immediate read on how the database and the underlying infrastructure is handling the workload.

In this blog post I will use the Grafana visualization package to create a simple performance dashboard for our Oracle database.

There is a video for this blog

All code is available on GitHub

If you are looking for Part II, you can find it here
Continue reading

Calculating IOPS and Throughput from GV$FILESTAT and GV$IOSTAT_FILE

In a recent blog post I explored how to monitor the database hosts’ CPU utilization from inside of the Oracle database using the V$OSSTAT view. Although not as comprehensive as native OS tools, the approach offered a quick and simple method for Oracle DBAs to leverage the existing software installed and established network connectivity to overlay a simple host monitoring layer that could track CPU utilization rates, and possibly identify CPU starvation risk, or over-provisioned database hosts in a manner that is largely platform neutral and works regardless of any hypervisor.

In this post I am going to explore how to use how to monitor database IOPS and storage throughput in close-to-real-time, again using the databases’ interval views. Once again our approach will likely not be as comprehensive as native OS tools, but will offer Oracle DBAs a quick and simple additional method to track the storage performance of their databases. In addition, since the Oracle internal views track only the database IO, and not IO generated from other applications, our DBAs can be confident that the numbers represent what the database has generated and is experiencing, undiluted by peripheral activities.

Continue reading

Calculating Host Utilization using V$OSSTAT

Since the move to all flash storage solutions, about ten years ago, CPU utilization and bottlenecks have frequently become the primary cause of performance concerns for Oracle DBAs. Whereas in the past the top wait events seen in a Statspack or AWR report might be “db file scattered read” or “db file sequential read”, our contemporary DBA is far more likely to see “CPU” atop the list.

It is important to remember that seeing “CPU” atop the wait events in an AWR report might indicate that the host CPUs are saturated, or it might indicate that there are single threaded processes within the database that are waiting on a single core to complete a compute operation.

And there is a trade off between more cores and clock speed. Generally speaking, within each generation of CPU, more cores means a slower clock. A denser processor with more cores will be able to handle a larger number of simultaneous compute operations – ideal of parallel query processing, analytics, AI and consolidation, whereas a lower core count with a higher clock speed is generally better suited for transaction processing applications, as well as being dramatically less expensive to license for the Oracle software.

Keeping an eye on host utilization then is an important part of an operational DBAs task list, and there are many excellent tools to do this across a large enterprise. In this post we explore a simple method to monitor host utilization from within the database, meaning that our DBA can use SQL*Plus access via TNS to databases to keep track of the underlying hosts.

Continue reading

Solving INS-06006: Passwordless SSH connectivity during Oracle 19c RAC install

I was recently installing Oracle 19c RAC on a pair of servers running OEL8 UEK.

During the install of Grid Infrastructure the installer repeatedly failed the verification check stating that:

“[INS-06006] Passwordless SSH connectivity not set up between the following nodes(s)”

It is worth remembering that Oracle offers a relatively simple method to set up passwordless ssh connections between machines, which I had used prior to trying to install RAC:

In the Grid Infrastructure directory there is a script called sshUserSetup.sh

Continue reading

Powerstore Protection Policies and protecting Oracle ASM diskgroups

This is a quick post to demonstrate how Protection Policies can be used with Volume Groups to protect Oracle databases on Powerstore.

A Protection Policy is a powerful tool that the Powerstore storage array offers to protect application data, by automatically replicating the data to a second Powerstore which might be across the data center, or across the country.   And it can also protect the application data by generating snapshot copies of the data at a pre-determined time, or on a routine schedule.   

Such copies can then be set to auto-expire after a given amount of time.

Continue reading

Mounting and Opening an Oracle database created with a thin clone snapshot on Powerstore

In my last blog post I created a thin clone of my Swingbench database on my Oracle1 server, and mounted that thin clone to my Oracle2 server.

I also renamed the cloned ASM diskgroups SWINGDATA and FRA, to CLONESWINGDATA and CLONEFRA, as I already had ASM diskgroups with those names on Oracle2 already. As a final step I renamed the individual ASM disks within each of the cloned ASM diskgroups.

In this blog post I am going to mount and open the clone on Oracle2.

Note: There is a video for this post
Continue reading