Archive for the 'oracle' Category



Do It Yourself Exadata Performance! Really? Part II.

Yes, shamelessly, I’m still groveling for more votes. My Suggest-A-Session vote count is at a modest 45! Come on folks, I know we can do better than that. If you don’t get there and vote I fear there is no way for me to get a podium for this topic unless you all collectively petition the executives to relinquish one of their speaking slots to me…and that simply doesn’t happen!

https://kevinclosson.wordpress.com/2010/06/04/do-it-yourself-exadata-level-performance-really/

or

https://mix.oracle.com/oow10/proposals/10589-do-it-yourself-exadata-level-performance

Oracle Exadata Storage Server: No More SQL Tuning Required? Hooray!

I sometimes wonder if folks think I prefer poorly-tuned SQL. After all, I like hardware and everyone knows how effective it is to throw hardware at a poor query plan.

I think everyone in the world has already blogged it but I can’t resist the me-too excitement. On June 10 my fellow Oak Table Network members Jonathan Lewis and Kyle Hailey are offering a unique SQL tuning presentation. Read about it here:

The Ultimate SQL Tune-Off

But, honestly, does anyone really believe there is enough hardware in existence to throw at some of the more gruesome, poorly-tuned SQL I’ve seen? No. Bad SQL (plans) can cost hundreds of thousands percent increase in cost. No matter how fast your hardware is it certainly can’t mitigate potentially tens of millions more physical I/O than is really necessary. These guys know how to help you identify and fix such crippling SQL problems. But so does SQL Tuning Advisor.

What Does This Have To Do With Exadata?
So, no, not even highly-optimized solutions like Exadata and the Sun Oracle Database Machine are able to obviate SQL tuning. The Database Machine includes all the power of Oracle Database 11g and as we pointed out in the Winter Corporation paper covering early Exadata performance we routinely rely on SQL Tuning Advisor.

No, there is no such thing as sufficiently powerful hardware to handle SQL problems. Let’s see what we can learn in the Lewis v. Hailey webcast.

Do-It-Yourself Exadata-Level Performance? Really?

Oracle Mix is hosting “Suggest-a-Session” for OOW 2010. I thought that sounded like fun so I did the following…see what you think:

Do-It-Yourself Exadata-level Performance?

Since my blog has been essentially dormant for 2 months I expect about 43 click-throughs and no more than 42 votes 🙂

And, yes, I will kick up my blogging again soon and may even explain why my blogging has ceased for these 2 months…

This Is A VERY Boring Blog!

I’ve been stranded in Europe for 4 days and the situation persists!  Needless to say I haven’t been thinking that much about blogging 😦

I do have a post nearly ready to go about booting 4s48c Opteron 6100 systems with _enable_NUMA_support set to TRUE. There are some caveats, and some very significant benefits as well. I’ll post that as soon as my situation improves…

By the way, no I have not taken the time to learn the pronunciation of the Volcano. I’ve opted for the military moniker: E15.  🙂

Another “New” Blog Worth Reading.

Earlier this week I was taking a gander at what in-bound traffic my site was getting. One referrer stood out in my initial perusal. While I don’t know Gavin Soorma, just a bit of reading on his blog led me to conclude that this site is a jewel worth visiting:

Gavin Soorma

You Buy a NUMA System, Oracle Says Disable NUMA! What Gives? Part III.

By The Way, How Many NUMA Nodes Is Your AMD Opteron 6100-Based Server?

In my on-going series about Oracle Database 11g configuration for NUMA systems I’ve spoken of the enabling parameter and how it changed from _enable_NUMA_optimization (11.1) to _enable_NUMA_support (11.2). For convenience sake I’ll point to the other two posts in the series for folks that care to catch up.

What does AMD Opteron 6100 (Magny-Cours) have to do with my on-going series on enabling/disabling NUMA features in Oracle Database? That’s a good question. However, wouldn’t it be premature to just presume each of these 12-core processors is a NUMA node?

The AMD Opteron 6100 is a Multi-Chip Module (MCM). The “package” is two hex-core processors essentially “glued” together and placed into a socket. Each die has its own memory controller (hint, hint). I wonder what the Operating System sees in the case of a 4-socket server? Let’s take a peek.

The following is output from the numactl(8) command on a 4s48c Opteron 6100 (G34)-based server:

# numactl --hardware
available: 8 nodes (0-7)
node 0 size: 8060 MB
node 0 free: 7152 MB
node 1 size: 16160 MB
node 1 free: 16007 MB
node 2 size: 8080 MB
node 2 free: 8052 MB
node 3 size: 16160 MB
node 3 free: 15512 MB
node 4 size: 8080 MB
node 4 free: 8063 MB
node 5 size: 16160 MB
node 5 free: 15974 MB
node 6 size: 8080 MB
node 6 free: 8051 MB
node 7 size: 16160 MB
node 7 free: 15519 MB
node distances:
node   0   1   2   3   4   5   6   7
  0:  10  16  16  22  16  22  16  22
  1:  16  10  22  16  16  22  22  16
  2:  16  22  10  16  16  16  16  16
  3:  22  16  16  10  16  16  22  22
  4:  16  16  16  16  10  16  16  22
  5:  22  22  16  16  16  10  22  16
  6:  16  22  16  22  16  22  10  16
  7:  22  16  16  22  22  16  16  10

Heft
It wasn’t that long ago that an 8-node NUMA system was so large that a fork lift was necessary to move it about (think Sequent, SGI, DG, DEC etc). Even much more recent 8-socket (thus 8 NUMA nodes) servers were a 2-man lift and quite large (e.g., 7U HP Proliant DL785). These days, however, an 8-node NUMA system like the AMD Opteron 6100 (G34) comes in a 2U package!

Is it time yet to stop thinking that NUMA is niche technology?

I’ll blog soon about booting Oracle to test NUMA optimizations on these 8-node servers.

Intel Xeon 5600 (Westmere EP) / AMD Opteron 6100 (Magny-Cours)

I received several emails from readers reporting that AnandTech moved the page I referred to in yesterday’s post about Intel Xeon 5600 (Westmere EP) / AMD Opteron 6100 (Magny-Cours). I fixed the link on that post so feel free to click through and get to the article there if you wish.

You Buy a NUMA System, Oracle Says Disable NUMA! What Gives? Part I.

In May 2009 I made a blog entry entitled You Buy a NUMA System, Oracle Says Disable NUMA! What Gives? Part II. There had not yet been a Part I but as I pointed out in that post I would loop back and make Part I. Here it is. Better late than never.

Background
I originally planned to use Part I to stroll down memory lane (back to 1995) with a story about the then VP of Oracle RDBMS Development’s initial impression about the Sequent DYNIX/ptx NUMA API during a session where we presented it and how it would be beneficial to code to NUMA APIs sooner rather than later. We were mixing vision with the specific need of our port to be honest.

We were the first to have a production NUMA API to which Oracle could port and we were quite a bit sooner to the whole NUMA trend than anyone else. Our’s was the first production NUMA system.

Now, this VP is no longer at Oracle but the  (redacted) response was, “Why would we want to use any of this ^#$%.”  We (me and the three others presenting the API) were caught off guard. However, we all knew that the question was a really good question. There were still good companies making really tight, high-end SMPs with uniform memory.  Just because we (Sequent) had to move into NUMA architecture didn’t mean we were blind to the reality around us. However, one thing we knew for sure—all systems in the future would have NUMA attributes of varying levels. All our competition was either in varying stages of denial or doing what I like to refer to as “Poo-pooh it while you do it.” All the major players eventually came out with NUMA systems.  Some sooner, some later and the others died trying.

That takes us to Commodity NUMA and the new purpose of this “Part I” post.

Before I say a word about this Part I I’d like to point out that the concepts in Part II are of a “must-know” variety unless you relinquish your computing power to some sort of hosted facility where you don’t have the luxury of caring about the architecture upon which you run Oracle Database.

Part II was about the different types of NUMA (historical and present) and such knowledge will help you if you find yourself in a troubling performance situation that relates to NUMA. NUMA is commodity, as I point out, and we have to come to grips with that.

What Is He Blogging About?
The current state of commodity NUMA is very peculiar. These Commodity NUMA Implementations (CNI) systems are so tightly coupled that most folks don’t even realize they are running on a NUMA system. In fact, let me go out on a ledge. I assert that nobody is configuring Oracle Database 11g Release 2 with NUMA optimizations in spite of the fact that they are on a NUMA box (e.g., Nehalem EP, AMD Opterton). The reason I believe this is because the init.ora parameter to invoke Oracle NUMA awareness changed names from 11gR1 to 11gR2 as per My Oracle Support note 864633.1. The parameter changed from _enable_NUMA_optimization to enable_NUMA_support. I know nobody is setting this because if they had I can almost guarantee they would have googled for problems. Allow me to explain.

If Nobody is Googling It, Nobody is Doing It
Anyone who tests _enable_NUMA_support as per My Oracle Support note 864633.1 will likely experience the sorts of problems that I detail later in this post. But first, let’s see what they would get from google when they search for _enable_NUMA_support:

Yes, just as I thought…Google found nothing. But what is my point? My point is two-fold. First, I happen to know that Nehalem EP  with QPI and Opteron with AMD HyperTransport are such good technologies that you really don’t have to care that much about NUMA software optimizations. At least to this point of the game. Reading M.O.S note 1053332.1 (regards disabling Linux NUMA support for Oracle Database Machine hosts) sort of drives that point home. However, saying you don’t need to care about NUMA doesn’t mean you shouldn’t experiment. How can anyone say that setting _enable_NUMA_support is a total placebo in all cases? One can’t prove a negative.

If you dare, trust me when I say that an understanding of NUMA will be as essential in the next 10 years as understanding SMP (parallelism and concurrency) was in the last 20 years. OK, off my soapbox.

Some Lessons in Enabling Oracle NUMA Optimizations with Oracle Database 11g Release 2
This section of the blog aims to point out that even when you think you might have tested Oracle NUMA optimizations there is a chance you didn’t. You have to know the way to ensure you have NUMA optimizations in play. Why? Well, if the configuration is not right for enabling NUMA features, Oracle Database will simply ignore you. Consider the following session where I demonstrate the following:

  1. Evidence that I am on a NUMA system (numactl(8))
  2. I started up an instance with a pfile (p4.ora) that has _enable_NUMA_support set to TRUE
  3. The instance started but _enable_NUMA_support was forced back to FALSE

Note, in spite of event #3, the alert log will not report anything to you about what went wrong.

SQL>
SQL> !numactl --hardware
available: 2 nodes (0-1)
node 0 size: 36317 MB
node 0 free: 31761 MB
node 1 size: 36360 MB
node 1 free: 35425 MB
node distances:
node   0   1
  0:  10  21
  1:  21  10

SQL> startup pfile=./p4.ora
ORACLE instance started.

Total System Global Area 5746786304 bytes
Fixed Size                  2213216 bytes
Variable Size            1207962272 bytes
Database Buffers         4294967296 bytes
Redo Buffers              241643520 bytes
Database mounted.
Database opened.
SQL> show parameter _enable_NUMA_support

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_enable_NUMA_support                 boolean     FALSE

SQL>
SQL> !grep _enable_NUMA_support ./p4.ora
_enable_NUMA_support=TRUE

OK, so the instance is up and the parameter was reverted, what does the IPC shared memory segment look like?

SQL> !ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 0          root      644        72         2
0x00000000 32769      root      644        16384      2
0x00000000 65538      root      644        280        2
0xed304ac0 229380     oracle    660        4096       0
0x7393f7f4 1179653    oracle    660        5773459456 35
0x00000000 393223     oracle    644        790528     5          dest
0x00000000 425992     oracle    644        790528     5          dest
0x00000000 458761     oracle    644        790528     5          dest

Right, so I have no NUMA placement of the buffer pool. On Linux, Oracle must create multiple segments and allocate them on specific NUMA nodes (memory hierarchies). It was a little simpler for the first NUMA-aware port of Oracle (Sequent) since the APIs allowed for the creation of a single shared memory segment with regions of the segment placed onto different memories. Ho Hum.

What Went Wrong
Oracle could not find the libnuma.so it wanted to link with dlopen():

$ grep libnuma /tmp/strace.out | grep ENOENT | head
14626 open("/usr/lib64/libnuma.so", O_RDONLY) = -1 ENOENT (No such file or directory)
14627 open("/usr/lib64/libnuma.so", O_RDONLY) = -1 ENOENT (No such file or directory)

So I create the necessary symbolic link and subsequently boot the instance and inspect the shared memory segments. Here I see that I have a ~1GB segment for the variable SGA components and my buffer pool has been segmented into two roughly 2.3 GB segments.

# ls -l /usr/*64*/*numa*
lrwxrwxrwx 1 root root    23 Mar 17 09:25 /usr/lib64/libnuma.so -> /usr/lib64/libnuma.so.1
-rwxr-xr-x 1 root root 21752 Jul  7  2009 /usr/lib64/libnuma.so.1

SQL> show parameter db_cache_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_cache_size                        big integer 4G
SQL> show parameter NUMA_support

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_enable_NUMA_support                 boolean     TRUE
SQL> !ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 0          root      644        72         2
0x00000000 32769      root      644        16384      2
0x00000000 65538      root      644        280        2
0xed304ac0 229380     oracle    660        4096       0
0x00000000 2719749    oracle    660        1006632960 35
0x00000000 2752518    oracle    660        2483027968 35
0x00000000 393223     oracle    644        790528     6          dest
0x00000000 425992     oracle    644        790528     6          dest
0x00000000 458761     oracle    644        790528     6          dest
0x00000000 2785290    oracle    660        2281701376 35
0x7393f7f4 2818059    oracle    660        2097152    35

So there I have an SGA successfully created with _enable_NUMA_support set to TRUE. But, what strings appear in the alert log? Well, I’ll blog that soon because it leads me to other content.

Done Blogging or Dumb Blogging?

Some of one and none of the other actually…

I’ve received a couple of emails wondering what’s happened to my blogging. No worries, just really busy.  I’ve been putting some (very) interesting hardware through the performance wringer lately.

What, doesn’t everyone’s performance sandbox look like the following?

# mpstat -P ALL 5
05:14:24 PM  all   91.99    0.00    8.01    0.00    0.00    0.00    0.00    0.00   1117.00
05:14:24 PM    0   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00   1000.33
05:14:24 PM    1   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM    2   92.67    0.00    7.33    0.00    0.00    0.00    0.00    0.00     58.00
05:14:24 PM    3   92.98    0.00    7.02    0.00    0.00    0.00    0.00    0.00      0.67
05:14:24 PM    4   94.00    0.00    6.00    0.00    0.00    0.00    0.00    0.00      5.00
05:14:24 PM    5   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM    6   91.36    0.00    8.31    0.00    0.00    0.33    0.00    0.00     26.67
05:14:24 PM    7   91.36    0.00    8.64    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM    8   91.97    0.00    8.03    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM    9   91.69    0.00    8.31    0.00    0.00    0.00    0.00    0.00     17.67
05:14:24 PM   10   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      5.33
05:14:24 PM   11   92.03    0.00    7.97    0.00    0.00    0.00    0.00    0.00      3.33
05:14:24 PM   12   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   13   91.03    0.00    8.97    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   14   92.00    0.00    8.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   15   91.30    0.00    8.70    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   16   92.00    0.00    8.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   17   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   18   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   19   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   20   91.33    0.00    8.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   21   92.67    0.00    7.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   22   91.97    0.00    8.03    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   23   92.03    0.00    7.97    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   24   92.98    0.00    7.02    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   25   92.03    0.00    7.97    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   26   92.33    0.00    7.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   27   92.00    0.00    8.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   28   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   29   93.00    0.00    7.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   30   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   31   91.33    0.00    8.67    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   32   91.97    0.00    8.03    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   33   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   34   92.69    0.00    7.31    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   35   91.00    0.00    9.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   36   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   37   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   38   91.36    0.00    8.64    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   39   92.00    0.00    8.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   40   93.00    0.00    7.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   41   91.36    0.00    8.64    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   42   91.03    0.00    8.97    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   43   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   44   91.00    0.00    9.00    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   45   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   46   91.67    0.00    8.33    0.00    0.00    0.00    0.00    0.00      0.00
05:14:24 PM   47   91.33    0.00    8.67    0.00    0.00    0.00    0.00    0.00      0.00

Index Of Posts About Oracle Database 11g Database File System (DBFS)

This is just a quick blog entry to point out that I’ve renamed one of my index pages to include categorization of Oracle Database 11g Database File System (DBFS) related topics. The newly-named page can be found at the following URL:

Kevin Closson Blog: DBFS / CFS / NFS / ASM Related Topics

The freshly indexed posts I’ve added to that page are:

Of Favorite Blogs, Competition and “Co-opetition”

I routinely get asked which blogs I frequently read. I list some of them in my blogroll. It just dawned on me that even though I have Tim Hall’s ORACLE-BASE blog listed in my blogroll I should make a special note that Tim’s blog is a really, really helpful resource.

There are a lot of blogs I read that I don’t mention. For obvious reasons I don’t currently want to link to Oracle’s competitors’ blogs. I wouldn’t want them to get a any boost in readership for free now, would I?

One tricky thing to figure out is how to treat Oracle’s “coopetitors” if you will. Now that Oracle owns a hardware company the lines are really fuzzy. I think it use to be that only Microsoft fell squarely into both the competitor and (quasi) partner space since both Microsoft and Oracle were software companies and both brought RDBMS products to market but neither were hardware companies (forgetting for the moment the Xbox). I refer to Microsoft as (quasi) partner of Oracle because Oracle offers products on Windows and unless I’m particularly naïve Microsoft takes no position directly against customers running Oracle on Windows. Indeed, others in the same scenario have played the “if you load product XYZ we won’t support your OS” trick. Now that Oracle is a hardware and software company I have to get direction from corporate on what acronyms (e.g., IBM, HP, etc), when spoken, will find me getting my mouth washed out with soap.

Oracle Database 11g Database File System (DBFS). Common DBFS Problems and Solutions. Part II.

I’m finding that one of the more confusing aspects of Oracle Database 11g Database File System (DBFS) for folks to understand is the difference between access and administration permissions.

The Oracle Databse 11g Database File System (DBFS) documentation discusses the “fuse” group, the allow_other DBFS mount option and the /etc/fuse.conf file but all this information doesn’t draw a clear distinction between administrative permissions and access permissions.

  • Administrative Permissions. All mention the fuse group (and any mention of permissions settings on /dev/fuse) is related to permissions necessary to administer the file system (e.g., mount and unmount file systems, etc)
  • Access Permissions. The allow_root and allow_other dbfs_client mount options are related to permissions to access the mounted file systems and contents of the file systems.

If the allow_other mount option is passed—when using dbfs_client to mount a file system—then other, ordinary Linux users can access file system contents as per the normal Linux file system permissions. Consider the following example. I’ll show that I have a DBFS file system mounted at /data. Next, as root, I’ll create a file called joe.txt and then modify its ownership to joe and group joe:

# mount | grep /data
dbfs on /data type fuse (rw,nosuid,nodev,max_read=1048576,default_permissions,allow_other,user=oracle)
# ls -ld /data /data/FS1 /data/FS1/joe.txt
drwxr-xr-x  4 root   root 0 Feb 10 17:30 /data
drwxrwxrwx 76 oracle dba  0 Feb 10 17:27 /data/FS1
-rw-r--r--  1 joe    joe  0 Feb 10 17:27 /data/FS1/joe.txt

Next, I’ll switch user (with login) to the user joe and list joe’s file. It is owned by joe and all directory hierarchy permissions back to /data permit joe’s access, so it should be no problem:

# su - joe
$
$ id
uid=1001(joe) gid=1005(joe) groups=1005(joe)
$ ls -l /data/FS1/joe.txt
ls: /data/FS1/joe.txt: Permission denied

OK, so something is obviously wrong. Yes, there is. It is a known bug (8976604) and there is a very simple work-around. I don’t like blogging about known bugs, but I think someone will likely find this via a Google search. Allow me to explain the work-around

The work-around for bug 8976604 is to supply to pass-through-fuse-options parameter at mount time. Consider the following example:

$ $ORACLE_HOME/bin/dbfs_client dbfs@ --pass-through-fuse-options -o allow_other,direct_io /data < /opt/oracle/dbfs/passwd.txt &
[1] 2931
$ Password:
$ su - joe
Password:
$
$ id
uid=1001(joe) gid=1005(joe) groups=1005(joe)$ ls -l /data/FS1/joe.txt
total 0
-rw-r--r--  1 joe    joe  0 Feb 10 17:27 /data/FS1/joe.txt

There, joe is happy now that he can see the file he owns.

Speaking at Hotsos Symposium 2010.

I haven’t made a blog entry in about two weeks but that is not due to of lack of topics. I get a constant flow of email from readers with requested topics that they’d like to see covered in this blog.

I’m speaking at Hotsos Symposium 2010 next month and my presentation consists of a deep dive into a lot of the sorts of topics readers ask me to blog about. I’ve posted the abstract below.  The abstract is also posted at the Hotsos Symposium 2010 speaker page.

According to the speaker schedule I’m presenting in a time slot adjacent to Tom Kyte’s session about PL/SQL. So, if you are one of the 3 or so people who, for one bizarre reason or another, decide not to see Tom, perhaps you can attend my session. We’ll all be able to stretch out as there will be plenty of room 🙂

Here’s the abstract:

Ten Years After Y2K And We Still “Party Like It’s 1999”

Whether you call it “the two-thousands”, the “Ohs”, “The Naughties” or “The Aughts”, the first decade of this millennium is over and it ushered in a significant amount of new technology related to Oracle. Don’t be alarmed, this is not one of those worthless technical chronology presentations. After all, is there anyone who isn’t aware that the decade started with the introduction of Real Application Clusters—and thus the demise of the large, central server—and finished with Oracle acquiring Sun Microsystems? This presentation has nothing to do with any of that! In spite of how much technology has changed, we really do still seem to be stuck in the 1990s. The following is sample of some of the topics I’ll be diving into—deeply.

  • We still think a CPU is a CPU.
  • We still think memory is memory.
  • We still think bulk data loading is a disk-intensive operation.
  • We still think direct-attached storage is for “small” systems.
  • We still think database==structured and file system==unstructured.
  • We still think NUMA is niche technology.
  • We still think NFS is a file serving protocol.

And, of course, I’ll be talking a bit about Oracle Exadata Storage Server and the Oracle Database Machine.

Oracle Database 11g Database File System (DBFS). Common DBFS Problems and Solutions. Part I.

In my recent post entitled Oracle Database 11g Database File System (DBFS) Is Not A Popular Topic. Yet., I discussed how I use Google search terms as a way of monitoring what sorts of problems people are running into with new technology such as (DBFS).

This is part one in a series of posts where I’ll offer some tips regarding the more common DBFS-related problems one might encounter in early testing. The first I’ll tackle is “Transport endpoint is not connected.”

Error Text: Transport Endpoint is not connected.
This error string occurs when attempting to access a mounted DBFS file system. The error condition arises when there is no dbfs_client currently executing that is associated with the file system.

In the following boxes I’ll show two examples of how this error can be encountered. First, I’ll show that I have a DBFS file system mounted and that an attempt to change directories to the mount point results in “Transport endpoint is not connected”, such as:

$ mount | grep dbfs
dbfs on /data type fuse (rw,nosuid,nodev,max_read=1048576,default_permissions,allow_other,user=oracle)
$ cd /data
-bash: cd: /data: Transport endpoint is not connected

A simple ps command shows there is no dbfs_client process executing:

$ ps -ef | grep dbfs_client
oracle    1694 21941  0 09:49 pts/11   00:00:00 grep dbfs_client

This error condition is quite simple to rectify. You simply need to restart the dbfs_client process:

$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
$ export ORACLE_SID=DBFS1
$ 
$ ORACLE_HOME/bin/dbfs_client dbfs@ -o allow_root,direct_io /data < /opt/oracle/dbfs/passwd.txt &
[1] 2501
$ fuse: bad mount point `/data': Transport endpoint is not connected

Sorry, I had to be sneaky in order to show one of the other conditions that raises the error. So, yes, to rectify this error condition you do have to restart dbfs_client, however, you need to first unmount the dead mount. You’ll see in the following box that I use fusermount –u to unmount and then execute dbfs_client and without any further action I can list the contents of the file system.

$ fusermount -u /data
$ $ORACLE_HOME/bin/dbfs_client dbfs@ -o allow_root,direct_io /data < /opt/oracle/dbfs/passwd.txt &
[1] 2931
$ Password:

$ ls -l /data/FS1/TEST
total 0
-rw-r--r-- 1 oracle oinstall 0 Dec 30 13:39 511b
-rw-r--r-- 1 root root 0 Dec 30 13:40 test.out

Dead Mount, Living DBFS Instance.
If you look in the boxes above you’ll notice that dbfs_client was not executing (the real root of the problem) but the instance was running. Since dbfs_client is an OCI program all I had to do was kill it to create this scenario. If, however, you suffer this error while dbfs_client is executing then I recommend involving support because that would be a bug.

Oracle Database 11g Database File System (DBFS) Is Not A Popular Topic. Yet.

I find that keeping my finger on the blogosphere pulse is a good way to ascertain the adoption rate of new Oracle features such as Oracle Database 11g Database File System (DBFS).  I see that Tim Hall has posted DBFS content in his typically excellent style!

I have a few posts on the topic of DBFS. Amongst the following list is a post (“Hidden Content?”) that will direct you to a webcast I delivered to IOUG Exadata Special Interest Group. The webcast is very informative because I introduce the concept of “injecting” files into the file system. Injecting? Yes, imagine transferring files into an Ext3 file system on a remote host without that file system even being mounted, anywhere! Cool technology and very efficient.

Google Search Terms
Another web aspect I monitor when it comes to new Oracle features is what search engine terms are being thrown at Google. For example, the following DBFS-related searches are likely search terms for folks that are testing the water with DBFS and/or suffering any problems getting it to work:

Search Term Hits
dbfs_client 370
dbfs_client +allow_root 8
dbfs_client +allow_other 9
DBFS +fusermount +oracle 1100
DBFS +direct_io 246
DBFS +exadata 14,700
–pass-through-fuse-options 0
“Transport endpoint is not connected” +DBFS 0
“fail to connect to database server” 4
“fail to connect to database server” +DBFS 0
dbfs_client +”fuse: failed to exec fusermount: Permission denied” 0
DBFS +”fuse: failed to exec fusermount: Permission denied” 0

I aim to post a few blog entries with troubleshooting tips for some of the more common DBFS-related problems that customers might hit. The first entry I’ll make will cover the more common “Transport endpoint is not connected” error string that is returned under certain situations when trying to access DBFS mounts.

So, yes, the title of this post was a come-on. Oracle Database 11g Database File System is a new feature. It takes time for the blogosphere to catch up. But, as I’ve pointed out, there are good, trustworthy, bloggers posting content…like Tim Hall.


DISCLAIMER

I work for Amazon Web Services. The opinions I share in this blog are my own. I'm *not* communicating as a spokesperson for Amazon. In other words, I work at Amazon, but this is my own opinion.

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 741 other subscribers
Oracle ACE Program Status

Click It

website metrics

Fond Memories

Copyright

All content is © Kevin Closson and "Kevin Closson's Blog: Platforms, Databases, and Storage", 2006-2015. Unauthorized use and/or duplication of this material without express and written permission from this blog’s author and/or owner is strictly prohibited. Excerpts and links may be used, provided that full and clear credit is given to Kevin Closson and Kevin Closson's Blog: Platforms, Databases, and Storage with appropriate and specific direction to the original content.