SATURDAY, NOVEMBER 23, 2024

Category: Information Technology

Oracle OpenWorld Schedule

Collier IT is attending Oracle OpenWorld again.

Our President, Sales Director, Senior Educational Services Representative and myself are attending.

Here is my schedule –

Saturday
Arrow – Oracle Partner OpenWorld Dinner

Sunday
UGF9757 — An Exploration of Oracle Database 12c
UGF9760 — Oracle Database 12c Best New Features
UGF9794 — Managing Oracle Enterprise Manager Cloud Control 12c with Oracle Clusterware
KEY10161 — Oracle PartnerNetwork Exchange @ OpenWorld Keynote
GEN10244 — General Session: Engineered Systems and Hardware for Partners
KEY11026 — Oracle Welcome Keynote

Monday
SBH11107 — How Server-Side Flash in Oracle Database Instances Improves Performance and Lowers Latency
CON4717 — Building an Ultrafast, Scalable, Multithreaded, Multiprocess Server
CON8710 — Oracle Database 12c for Data Warehousing and Big Data
GEN8954 — General Session: SPARC Systems Update and Roadmap
CON6967 — Getting Unbeatable App Performance on SPARC Enterprise M-Series and SPARC T-Series Servers
CON8932 — Oracle WebLogic Server Strategy and Roadmap
BOF11055 — Best Practices for Oracle TimesTen In-Memory Database for Oracle Exalytics
BOF8958 — Extreme Availability: Oracle WebLogic/Application Continuity with Oracle Database 12c

Tuesday
CON10326 — Oracle Exalogic, an Optimized Solution for Cloud Computing and Oracle Fusion Middleware
CON7278 — Why Oracle Fusion Middleware Runs Best on Oracle Solaris
KEY11049 — Oracle OpenWorld Tuesday Afternoon Keynote
ESS10663 — The Best Platform for Oracle Database 12c and Big Data
CON8632 — Deep Dive into Oracle SuperCluster

Wednesday
CON8880 — Oracle WebLogic Server Management: Simplified, Centralized, and Automated
CON5844 — Be a Hero with Your DBA: Database Performance Tuning for Systems Administrators and Architects
CON9191 — The World’s Fastest Microprocessor: Today and Tomorrow
CON8581 — Top 10 Tips and Tricks for Getting the Best Database Performance from Oracle Solaris System
CON7393 — SPARC + Oracle Solaris: Enterprise-Class Performance and Scalability…to the Cloud

web-logic-bnr

The Thickening Debate About Thin Provisioning

This article will attempt to enlighten you about some of the benefits AND drawbacks of using thin provisioning technology.  The examples I’ll give reference VMware- a leading virtualization vendor’s hypervisor, but you can safely substitute just about any virtualization technology out there (Hyper-V, Oracle VM, Xen, KVM) in it’s place.

 

Normally, when you provision storage and present it to the client, the entire amount of storage is allocated immediately and is unusable by any other clients- that chunk of disk is spoken for.  The client then begins to use the storage and write data to it.  Problem is- you almost never completely fill up that storage so there is some waste involved.  Then along comes thin provisioning to save the day!  Now we can identify a chunk of storage for use by a given client(s) but not have to pre-allocate all of it immediately.  This allows us to do something called oversubscribe or overprovision our storage.

 

Let’s look at a practical example: given a SAN with 1TB capacity and thin provisioning enabled, you can allocate more than 1TB of total space to your clients.  That is- you could give client 1 a 500GB thin allocation, client 2 a 400GB thin allocation and client 3 a 250GB thin allocation.  For the math experts out there- you realize this totals up to more than the 1TB that we actually have.  This works because we don’t allocate all 500GB to client 1 right away.  It only gets allocated when data is actually written to disk.  This gets us around the issue of wasted space in a thick provisioned scenario, but it opens the doors to another more frightening possibility- running out of storage on the SAN itself.  So if we follow that scenario to its unfortunate but inevitable conclusion, and we start getting close to the point of filling up the SAN based on the usage of client 1, 2 and 3- you find yourself in a sticky situation.  You would either have to scale back your usage from the client side (yeah that’s gonna happen), or you have to spend money and make your SAN bigger (see previous comment).  Either scenario is not good.

 

I used to consider myself firmly in the camp of “always thin provision” due to the space savings and ability to overallocate.  After having lived through a few scenarios like the one above I decided to take a more pragmatic approach to thin provisioning.  My approach today is this: if a volume needs to be artificially large and very under-utilized or if the volume has a low data change rate, then thin provisioning may be a good idea.  If there is a high amount of utilization and/or a high data change rate then use thick provisioning.  You’re probably asking yourself right now- why does the data change rate matter?  Allow me to explain in the next few paragraphs and the drawing below (Note again- I’m using VMware as an example here but this discussion is not specific to VMware).

 

legend

thicken over time

 

When you write to a thin provisioned volume and then delete data from within the OS, neither the SAN nor the hypervisor knows that you have deleted anything.  The SAN knows that at some point in the past- a block of data was written to.  The fact that you delete that data on the client side doesn’t matter to the SAN- it has no way of knowing the difference between real data being written and data or pointers being updated.  The SAN is  just not that smart- so it says “ok- you wrote a chunk of data to sector 123.  I’m going to keep that data block allocated”.   Even though the data being written to sector 123 may be just pointers being cleared from a delete operation inside the guest OS, the SAN just says “I have to keep that data”.  What happens is the volume “thickens” out from the SAN and hypervisor perspective.  Think of it as a high water mark.  In the third frame above, the yellow previously allocated blocks can be written to again by the OS.  The SAN and hypervisor are just reporting the blocks as used because they have no visibility into what is actually being stored in those blocks.  They only know data was written to them at one time.  That data could be actual real data, or all zeroes for all it knows.