Tuesday, May 16, 2006
Typical Greenwich
To my right was an old couple waiting to cross the street. It would be a coin flip whether they were around for the first world war or not. He was in his London Fog jacket and a hat complete with old time galoshes. She looked like she just got off a fishing boat with a yellow slicker and buckle up rubber boots. Both used canes to shuffle along, and he held out his arm for her to hold as they stood waiting. The crossing signal turned to "WALK" and they started their journey across the street.
On this particular corner, the crossing signal counts down to indicate how many seconds you have left. When the signal read 10, they were just in front of my car.
"They're never going to make it", I thought to myself.
Time expired and they just cleared my lane.
My light turned green and I since I was turning left, I had to wait for the Bently to come through anyway. The Bently starts coming through the intersection and stops short when he sees the old couple crossing the street. Then he throws his hands up in disgust and BLOWS THE HORN at them.
The couple stops for a short second, the old man shoots the Bently driver a cold look, and they continue on their way. The Bently driver's mother must be proud.
Wednesday, May 10, 2006
Thunderbird Address Book
You see, I just can't delete an entry from my "Personal Address Book". I know, I know, that's a pretty minor detail to be tossing a great email client. I'm a big fan of letting Thunderbird search your local address books for the person you want to address the message to. That's well and good when each person only sends you email from one address, but in the real world people have multiple email addresses.
My problem is my boss sent me an email from his home account a couple weeks ago. I replied no problem and everything was cool. The next time I sent him a message, Thunderbird automatically picked up his home email address and sent it there.
"OK", I thought to myself, "I'll just delete his home email and Tbird won't pick it up anymore."
So I deleted all occurrances from my address books, re-checked that it wasn't in there anymore, sent a test email, and he got it no problem. Shutdown Thunderbird and went home.
The next day I sent him an email again. Thunderbird picked his home email again. WTF? I know I deleted it, but sure enough, his home email was back. I tried deleting again, exiting Tbird and it showed up again. This was driving me crazy. After twiddling with it on and off for about 2 hours, I gave up and unchecked Tools>Options>Addressing>Address Autocompletion>Local Address Books.
Now when I address a message, I either have to know the person's email address or choose it from the address book. Maybe I'm just being impatient and this is one of those "doh" moments...
Tuesday, May 02, 2006
Cost-Based Oracle Fundamentals
Even so, managed to get through my first pass of Cost-Based Oracle Fundamentals by Jonathan Lewis. I concentrated more on the concepts the author was trying to get across and less on the math of each operation. On the second go-round, I plan on doing the examples one by one and experimenting with some real-world data.
I didn't count, but I found myself saying "Ah-ha" several hundred times. Histograms, Ah-ha. Cardinality, Ah-ha.
There's a lot of hot air on the internet about Clustering Factor, but there is a whole chapter that sets you straight on the concept; both positives and negatives. The section on how reverse key indexes negatively can affect the Clustering Factor is really eye opening.
I personally got a lot out of Chapter 11, Nested Loops. Nested Loop joins are one of the more common access paths chosen and I thought I had a decent understanding of them. This chapter really filled in the gaps that were missing.
And a whole chapter on the 10053 event? Whoa. I'm sure there's a lot more to it, but now at least I have an idea of what's going on with the optimizer when I look at the trace file.
Lets just say the differences Jonathan points out between 9i and 10g scare me. Big time. A lot of differences are pointed out throughout the book, but there's going to be a ton of testing when 10g comes to town.
Cost-Based Oracle Fundamentals is definitely a recommended read.
Wednesday, April 19, 2006
Monday, April 17, 2006
Year Six
I have the unfortunate luck of being hired on the same date that Tom Kyte started his blog. Honestly, I've been working on this a couple days so I'm posting it anyway, even if you think I am a copycat.
Six years ago today I started with my current company. This is the longest I've ever had the same title, although my responsibilities have changed over the years. It's also the most time I've spent at the same place.
It was the tail end of the dotCom boom and I had over 40 interviews with companies in the Tri-State area. Most of them didn't pan out, but when it came time to choose, I had three offers to consider. When I accepted this job, I took a chance because I liked the people but didn't think they had enough for me to do. I was the sole DBA for one production database that ran on an Ultra 2 (2 CPUs, 54G of disk, 512M). The telecom company I came from had three E5500's (six CPUs, 2G RAM, 600G disk). In fact, they had more than enough for me to do.
My first project at the new company was to move approximately half of the schemas in the production db to a new server. By the end of the first year, I was managing four db servers. Today, my team of three manages about a dozen db servers and almost two dozen instances. We've gone from a little six-pack of disks to a 3+TB SAN.
My second project was to setup a backup & recovery plan. Good thing, too, because about 6 months later we did a full recovery of one of our major production systems. Fortunately, we only had 3 un-planned recoveries until the blackout in August 2003. Recovered 12 databases that night.
Now MySQL and Linux are at the forefront of of my knowlege adventure. Maybe six years from now our MySQL databases will outnumber the Oracle ones...
Saturday, April 15, 2006
Using vacation
Tuesday, April 11, 2006
Using MySQL's LOAD DATA LOCAL
to explore Mike Hillyer's suggestion of using the LOCAL option of LOAD DATA.First, I created a small table called “testload” :
mysql> create table testload (empid integer, name varchar(20),
bonus integer);
Query OK, 0 rows affected (0.02 sec)
I then decided to try it from the server to verify everything worked as expected:
mysql> -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 5.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use user1
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> load data infile '/home/users/jeff/foo.txt' into table
testload fields terminated by '|';
Query OK, 6 rows affected (0.00 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from testload;
+------+-------+------+
| id | name |bonus |
+------+-------+------+
| 1 | jeff | 30 |
| 2 | user1 | 20 |
| 3 | gail | 60 |
| 4 | bob | 40 |
| 5 | john | 70 |
| 6 | jim | 100 |
+------+-------+------+
6 rows in set (0.00 sec)
mysql> delete from testload;
Query OK, 6 rows affected (0.00 sec)
Now I know it works as the root user. Lets try as somebody else on the server. First, I check to make sure I have FILE privilege:
mysql> select host, user, password, file_priv from user
> where user = 'user1';
+------+-------+-------------------------------------------+-----------+
| host | user | password | file_priv |
+------+-------+-------------------------------------------+-----------+
| % | user1 | *2309AA61C73F02E54890747EAD6FFCB927A66565 | Y |
+------+-------+-------------------------------------------+-----------+
1 row in set (0.00 sec)
mysql@sql1 $ mysql -u user1 -h sql1 -P3322 -p user1
Enter password:
ERROR 1045 (28000): Access denied for user 'user1'@'sql1' (using
password: YES)
Hmmm, I don't really get this one since I should be covered by the '%'. Have to investigate that later, but lets grant permission on this host anyway.
mysql@sql1 $ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12 to server version: 5.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> grant file on *.* to 'user1'@'sql1' identified by 'nopassword';
Query OK, 0 rows affected (0.00 sec)
Let's check the privs and try again from the same user:
mysql@sql1 $ mysql -u user1 -h sql1 -P3322 -p user1
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14 to server version: 5.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> select host, user, password, file_priv from user
> where user = 'user1';
+------+-------+-------------------------------------------+-----------+
| host | user | password | file_priv |
+------+-------+-------------------------------------------+-----------+
| % | user1 | *2309AA61C73F02E54890747EAD6FFCB927A66565 | Y |
| sql1 | user1 | *2309AA61C73F02E54890747EAD6FFCB927A66565 | Y |
+------+-------+-------------------------------------------+-----------+
2 rows in set (0.00 sec)
Now that I have given myself privileges on the server, it should
work, right?
mysql> load data infile '/home/users/jeff/foo.txt' into table
testload fields terminated by '|';
Query OK, 6 rows affected (0.02 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
mysql> select * from testload;
+------+-------+------+
| id | name |bonus |
+------+-------+------+
| 1 | jeff | 30 |
| 2 | user1 | 20 |
| 3 | gail | 60 |
| 4 | bob | 40 |
| 5 | john | 70 |
| 6 | jim | 100 |
+------+-------+------+
6 rows in set (0.00 sec)
Sure enough, that did the trick. On to loading from a client:
host1:/home/users/user1/tmp $ mysql -u user1 -h sql1 -P3321 -p user1
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 22 to server version: 5.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> load data local infile '/home/users/jeff/foo.txt' into
table testload fields terminated by '|';
ERROR 1148 (42000): The used command is not allowed with this MySQL version
mysql> quit
Now what? I go back to the documentation and re-read about the
parameter local_infile. I'm pretty sure I set it, but lets check
anyway:
mysql> show variables like 'local%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)
That's what I thought. I went over the docs once again and saw a
mention of the local-infile argument to the mysql client. So I tried
that:
host1:/home/users/user1/tmp $ mysql -u user1 -h sql1 -P3321 -p
user1 --local-infile -p user1
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 23 to server version: 5.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> load data local infile '/home/users/jeff/foo.txt' into
table testload fields terminated by '|';
Query OK, 6 rows affected (0.02 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
Nice. That is exactly what I am looking for. Knowing that you can set
preferences in your .my.cnf file, I setup the local-infile option in
my .my.cnf.
host1:/home/users/user1 $ more .my.cnf
[client]
loose-local-infile=1
As long as I'm at it, why not setup the host, port, and user in my
.my.cnf.
[client]
loose-local-infile=1
host=sql1
port=3321
user=user1
Then, it's a simple command to login.
user1@host1 13> mysql -p user1
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 28 to server version: 5.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
I learned a lot about LOAD DATA during this exercise.
- The local_infile parameter must be set to 1 in the my.cnf
file on the server. - By default, the mysql client doesn't allow you to load data from the client. You must use the local-client flag or set the loose-local-client flag in your .my.cnf file.
- You must have the FILE privilege.
Tuesday, April 04, 2006
Using Resource Profiles
First things first, the resouce_limit parameter must be set to TRUE. You can either set it in the init.ora or via ALTER SYSTEM.
Next, you create the profile and assign limits to it. Read the descriptions carefully, though, some of the resource parameters may sound self-explanatory, but aren't. For example, you would think SESSIONS_PER_USER would mean the number of times a particular user can login. In fact, it's the number of concurrent sessions that can run at one time.
SQL> create profile really_small limit
2 sessions_per_user 1
3 cpu_per_session 100
4 cpu_per_call 100
5 connect_time 5
6 /
Profile created.
Then you assign the profile to a particular user:
SQL> alter user jh profile really_small;
User altered.
Just for kicks, you can check that your profile is assigned to your user.
SQL> select username, profile from dba_users where username = 'JH';
USERNAME PROFILE
------------ ---------------
JH REALLY_SMALL
SQL> select resource_name, resource_type, limit
2 from dba_profiles
3 where profile = 'REALLY_SMALL';
RESOURCE_NAME RESOURCE LIMIT
-------------------------------- -------- ------------------
COMPOSITE_LIMIT KERNEL DEFAULT
SESSIONS_PER_USER KERNEL 1
CPU_PER_SESSION KERNEL 100
CPU_PER_CALL KERNEL 100
LOGICAL_READS_PER_SESSION KERNEL DEFAULT
LOGICAL_READS_PER_CALL KERNEL DEFAULT
IDLE_TIME KERNEL DEFAULT
CONNECT_TIME KERNEL 5
PRIVATE_SGA KERNEL DEFAULT
FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT
PASSWORD_LIFE_TIME PASSWORD DEFAULT
PASSWORD_REUSE_TIME PASSWORD DEFAULT
PASSWORD_REUSE_MAX PASSWORD DEFAULT
PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
PASSWORD_LOCK_TIME PASSWORD DEFAULT
PASSWORD_GRACE_TIME PASSWORD DEFAULT
16 rows selected.
Your user connects to the database, starts running his monster query, and is promptly disconnected:
$ sqlplus jh/jh@mydb
SQL*Plus: Release 10.2.0.2.0 - Production on Tue Apr 4 20:34:23 2006
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production
With the Partitioning option
JServer Release 9.2.0.5.0 - Production
SQL> select count(*) from all_objects, all_objects, all_objects;
select count(*) from all_objects, all_objects, all_objects
*
ERROR at line 1:
ORA-02392: exceeded session limit on CPU usage, you are being logged off
Sweet.
Friday, March 31, 2006
New Blog
Thursday, March 30, 2006
Oracle SQL Developer
I have installed the production version of Oracle SQL Developer (aka Raptor) and have let a limited group of users know about it. It seems like a lot of the Java exception errors have been fixed and the pointer control is pretty good.
One thing that I found was it is registers a funky PID in v$session.process when you login. The v$session view usually shows a fake PID (1234) for other JDBC Thin sessions, but somehow SQL Developer registers the process id as "pid@hostname". That definitely helps in identifying sessions.
OS Authenticated users don't work, but I wouldn't expect them to work with the Thin driver anyway. Maybe there's an option to use the OCI driver where available?
If the beta users find it stable, I'll unleash it on the general public Monday.
Wednesday, March 29, 2006
Community Support
I try to make a meaningful contribution where I can. I think there's a lot of people out there that foster this commuity spirit. That's why I was a little frustrated when I saw Tim Hall's blog this morning. Here's a guy who has more than enough things to do and is working on a draft article on how you might install Oracle on FC5 that happens to get indexed by Google. And then he gets lambasted in the newsgroups. Not cool. Not cool at all....
Monday, March 27, 2006
Comparison of MySQL and Oracle Client install
It's no secret that I'm a MySQL newbie and I've had my share of issues installing the MySQL client. That was kind of a special case since I wasn't using a mainstream compiler, but even so, I was able to get the problem fixed in relatively short order.
One of my tasks lately has been to upgrade the Oracle client to version 10.2. I've installed the client software a couple dozen times and the server software maybe 100 times if I want to be conservative. So when I fired up the installer, I wasn't expecting many surprises.
As expected, I installed the base 10.2.0.1 release in about 20 minutes. I then applied the 10.2.0.2 patch on top of it in another 10 minutes. I ran sqlplus as oracle and was able to connect to a database, so I pushed it out to a group of test users.
Two seconds later: "Ah, sqlplus doesn't work."
"I just ran it, your environment variables must not be setup correctly."
"Ah, sqlplus still doesn't work."
So I logout as oracle and try it from my workstation:
sqlplus system@foo.bar
ld.so.1: sqlplus: fatal: /usr/local/oracle/lib/libsqlplus.so: Permission denied
Killed
sonofa...WTF can be wrong?
Sure enough, I didn't have permission on the library. I logged in as oracle, and I had permission on the file, but world didn't have any permissions.
Hmm, That never happened before. I must have screwed something up.
I re-installed and had the same problem.
I logged a TAR to Oracle support and seems like it's a known bug (4516865).
Another great example of why you get so much more value with Oracle than MySQL. Sigh.
Saturday, March 25, 2006
Working on my ORA-00202
Whenever we ran a Level 0 backup, some of the monitoring processes were getting a timeout while waiting on the control file. The worse part is the error wasn’t consistent. About 90 minutes into a 3 hour backup we would get this error message thrown in the alert.log.
The message in the trace file seemed to suggest one of the control files was corrupt. Our initial research showed that when we brought the database down in immediate mode, that “diff” reported the control files were indeed different.
My first inclination was that somehow rman was corrupting the control file during the backup. I know, pretty unlikely, but that’s where the symptoms pointed. I created a TAR and provided some info to OCS about my problem. I also learned about the debug option of rman (which is pretty cool, although I couldn’t tell you how to read the file). OCS confirmed that rman wasn’t corrupting the control file (like they would say it was anyway). They suggested it was our monitoring software that was causing a problem. Since I have this software running against multiple databases and this is the only one we’re having a problem with, I didn’t think that made much sense either.
I started investigating the workload on the server. This instance is not used very heavily and is on a pretty beefy server. While the backup was running, the vmstat statistics showed that the filesystem cache kept increasing and the available memory was decreasing. Eventually, the system exhibited classic swapping symptoms, but without the typical indicators.
“Hmm”, I thought, “that shouldn’t happen because of direct I/O.”
Just for kicks, I verified that direct I/O was on by shutting down the database, starting it up in NOMOUNT, starting strace on the dbwriter process, and opening the database. I know that if the datafiles are opened with the O_DIRECT flag, you’re using direct I/O.
But wait, there was no O_DIRECT flag in the trace file.
Aha. I searched Metalink and sure enough, 9.2.0.7 doesn’t include direct I/O out of the box. I already had the filesystemio_options=setall, but apparently, you have to apply two patches on top of 9.2.0.7 for Linux. I applied the two patches in a new $OH, started the database in the new $OH, and retested my backups. Sure enough, the ORA-00202 error went away. My theory is that this "semi-swapping" caused extreme slowdowns on the system which caused the monitoring software to experience long waits for the controlfile. I’m still not clear on why the control files were different when I brought the db down, but the database could be started with either the “good” or the “bad” control file.
Friday, March 24, 2006
How the mighty have fallen
The Telecommunications Act of 1996 (TA96) was supposed to change all that. That bill opened up the stranglehold that the baby bells had on the local markets and was supposed to offer up competition for the consumer. By the time I left that company in 2000, the telecom industry was one of the strongest industries in the country.
A couple years later, the company I worked for got gobbled up by some company in Georgia.
The mighty AT&T was bought by SBC, a company it originally spun off.
The troubles at WorldCom/MCI are well publicized.
Now I see Lucent and Alcatel are thinking of getting together.
All this in six short years. Wow, how time flies.
Thursday, March 23, 2006
At least it's not Dook...
Sunday, March 19, 2006
Necessary Changes
When I checked today, I only saw the links for the feeds. I republished the template again, and still only got the links. I quickly changed back to one of the standard blogger templates and added my links back in. I think it's OK now, but will monitor closely the next couple of days.
Saturday, March 18, 2006
Blogspot Issues

I thought maybe I was the only one having issues getting to the blog yesterday until the geek pointed out he was having problems. Then I noticed my RSS reader didn't have my new post from yesterday.
This morning I got a message from Mr. Parallel Query indicating my links were screwed up. Doug suggested I republish to fix the links and sure enough, that worked.
I checked my stats for yesterday and visits were way down. I hope blogspot's problems are fixed from the last couple days. Then again, what should I expect for free?
Friday, March 17, 2006
Reading "Cost-Based Oracle Fundamentals"
"Bah", I thought to myself, "I need to get on to Tom Kyte's book, I don't have time to read it twice."
On page 2 I pulled out the highlighter.
Page 6, eight highlighted passages.
By page 9 I had abandonded the highlighter and proceeded with casual reading. Tom will have to wait.
Tuesday, March 14, 2006
Interviewing Pet Peeves
- When I schedule a time for you to come in, don't arrive 30 minutes early. Go get a cup of cofee or read the newspaper in your car. I specifically scheduled you at that time because I've got a bunch of things I have to do first thing in the morning and I need to make sure everybody is off and running before I take 2 hours out to talk to you.
- If I ask you to come in, don't ask me for directions. Sure, I'll give you the address, but we're all big girls and boys and we know how to use Mapquest, right?
- I'll take about 2 minutes to go over the company and what we do, but I expect you to have some background on the company before I talk to you at length. We have this thing called the Internet now.
- Don't ask me specifics about benefits. Sure we have a 401(k) and a Medical plan, but I don't have the slightest idea about the specifics. That's why we have HR.
- When I schedule a time to call you, don't give me your cell phone number. I'm calling you about a job, not to go out for a beer. If you don't want to talk at work, I'm cool with that. In fact, I'd rather call you at home where we can let the conversation go where it wants to.
Monday, March 13, 2006
Oracle Backup (aka Reliaty)
Update: 3/14/2006
Straight from the source, I like it: (posted in comments)
From the slides, it looks like it is a complement to RMAN, which would make sense. Now I'm hoping it can fill a void that NFS has left in my backup strategy. (Hopefully, the "low cost" in the slides will take the same path as the recent products from Oracle and come out as "no cost").Posted by Tammy BednarOracle Secure Backup is scheduled to release by end of FY06 (May 06). I apologize for the confusion, but stay tuned to OTN main page over the next few weeks for more information on Oracle's newest data protection product.
Thanks!
Sunday, March 12, 2006
That time of year
I'm a Tarheel at heart, so I can guarantee you they'll be one of my final four picks. All my neighbors will be rooting for the Huskies in my backyard, and the Orangemen are a dangerous team. But lets face it, after the Tarheels, I'm rooting for whoever is playing the Dookies.
Anybody got an E-Size DeskJet to print your brackets out?
Thursday, March 09, 2006
I'm Tops on Google!!!
Interesting ORA-00202
$ oerr ora 00202
00202, 00000, "controlfile: '%s'"
// *Cause: This message reports the name file involved in other messages.
// *Action: See associated error messages for a description of the problem.
While the rman level 0 backup is running, my monitoring software encounters the ORA-00202 error when trying to query v$log and dba_data_files. The message in the alert.log is:
Errors in file /oracle/admin/db1/udump/db1_ora_5953.trc:
ORA-00202: controlfile: '/u01/oradata/db1/control01.ctl'
When I look at the trace file, I see:
*** SESSION ID:(11.32) 2006-03-08 17:44:26.211
***
Corrupt block relative dba: 0x00000001 (file 0, block 1)
Fractured block found during control file header read
Data in bad block -
type: 21 format: 2 rdba: 0x00000001
last change scn: 0xffff.0017641a seq: 0x1 flg: 0x04
consistency value in tail: 0x64191501
check value in block header: 0x24a8, computed block checksum: 0x3
spare1: 0x0, spare2: 0x0, spare3: 0x0
***
*** 2006-03-08 17:44:27.245
ksedmp: internal or fatal error
ORA-00202: controlfile: '/u01/oradata/db1/control01.ctl'
Current SQL statement for this session:
SELECT file_name,
tablespace_name
FROM dba_data_files
WHERE autoextensible='YES'
AND maxblocks-blocks <= increment_by AND maxblocks-blocks <> 0
"Ah Ha", I say to myself, "must be a corrupt control file." I shutdown the database immediate and diffed the two control files. Although there were the same size, diff reported that they were different. Sure enough, a corrupt control file. So I copied my good control file over the bad one and restarted my database.
A couple days later, same problem. Same control file. The same control file seems unlikely unless there is an OS related error on that filesystem. I scour the messages file and there's no I/O related errors. I shutdown the database, diffed the control files again, and sure enough, they're different.
I recopied my good control file over my bad one again, started the database, switched logfiles, and shutdown immediate. Then I tested my theory that the control files should be the same and diff reported that they were the same. This time, however, I moved control01.ctl to another filesystem just for kicks to see what would happen.
My theory is that my monitoring software can't get a consistent view of the control file while rman is writing to it. At this point I'm unsure if the control file is corrupt or Oracle is just throwing the wrong error. We'll see what Oracle says...
Check back in 5 days (if I'm lucky)...
Update: I've done some testing and come to some conclusions.
Wednesday, March 08, 2006
A good year
Andy Katz
Game Recap
Monday, February 27, 2006
Getting Burned
The initial discussion started along the lines of “You should investigate Transportable Tablespaces. I think they are supported across platforms in 10g.” Decent enough idea, I suppose.
Then this particular user chimes in and says:
Db upgrade accross platforms has Exp/Imp as the only option available.
Ah, here’s my chance. Those were my exact sentiments a couple years ago until somebody pointed out you could setup both databases and copy data with a database link. Another person said you could unload/load comma separated data. OK, some maybe not very practical, but still a possibility. Just for the sake of argument, I posted:
100% UNTRUE. You could unload/reload ASCII files, you could use dblinks, you could use Quest's replication product.You should be careful when dealing with absolutes.
OK, maybe a little harsh, but to the point. So Mr. Exp/Imp pipes up and says:
Sure Jeff
Following are excerpts from Metalink doc 277650.1:
Quote:
The Export and Import utilities are the only method that Oracle supports for moving an existing Oracle database from one hardware platform to another. This includes moving between UNIX and NT systems.
He thinks he as me against the ropes now. If Metalink says it, it must be true. To which I reply:
surprise, surprise, metalink is wrong.
Do I get enjoyment out of proving somebody wrong? Not usually. But there is a lot of bad information out there and I don’t like perpetuating it.
Friday, February 24, 2006
Another Friday
About 18 months ago, we were like firecrackers; an upgrade most every weekend. We knocked out most of the small (<100G) ones using DBUA. Then we started on the mission critical stuff; lots of testing and diagnosing query plans that changed for the worse. Through it all, we learned a lot about 9i and how it was different than 8i.
Our final database has been a royal pain. The first time we attempted the upgrade, we ran into OS errors and found out our version of DBUA wasn’t compatible with the OS version. Instead of upgrading an old machine, we decided to move it to an under utilized machine. So we attempted again. Then something went wrong with the upgrade. So we restored, and researched the problem. Tonight, (fingers crossed), we’ll be off 8.1.7.4 for good.
On to 10g.
Monday, February 20, 2006
Certification
I spent quite a bit of time looking over their selection and noticed something missing, Oracle Certification books. I got to thinking and my local Borders only had a couple books on Oracle Certification and about 3 shelves on Microsoft Certification.
Just a couple of years ago, books for the OCP were plentiful and filled a lot of shelf space. I remember there were two or three publishers with their own series.
Is it just my location of the country? Does it say something about Oracle's certification process? Or has the demand for OCPs weakened over the years?
Tuesday, February 14, 2006
Lessons the hard way, Part IV
Take for example, a simple little directory listing:
jake$ cat sortit.txt
prodappl
prodappl/abm
prodappl/APPLSYS.env.tmp
prodappl/abm/11.5.0/admin
prodappl/APPSORA.env
prodappl/PROD.env
prodappl/abm/11.5.0
prodappl/abm/11.5.0/admin/driver
prodappl/APPLSYS.env
prodappl/abm/11.5.0/admin/driver/abmcon.drv
On Linux, I sort it:
jake$ cat sortit.txt | sort
prodappl
prodappl/abm
prodappl/abm/11.5.0
prodappl/abm/11.5.0/admin
prodappl/abm/11.5.0/admin/driver
prodappl/abm/11.5.0/admin/driver/abmcon.drv
prodappl/APPLSYS.env
prodappl/APPLSYS.env.tmp
prodappl/APPSORA.env
prodappl/PROD.env
On Solaris, same command:
woody# cat sortit.txt | sort
prodappl
prodappl/APPLSYS.env
prodappl/APPLSYS.env.tmp
prodappl/APPSORA.env
prodappl/PROD.env
prodappl/abm
prodappl/abm/11.5.0
prodappl/abm/11.5.0/admin
prodappl/abm/11.5.0/admin/driver
prodappl/abm/11.5.0/admin/driver/abmcon.drv
Hmm. I did a "man sort" and found my answer was to force a sort order using the -f flag.
Friday, February 10, 2006
Initial Impressions on Raptor
Until now.
Oracle's Project Raptor is quite a tool. I installed Project Raptor on my desktop at work this week and I'm hooked. The interface is a little awkward and there's a couple things I don't like about it, but it's definitely a great query tool. I've only looked at the query editor this week (and I haven't totally read the docs yet), but here are my impressions:
- Pointer control isn't quite there yet. Sometimes my pointer turns to a text tool when clicking on a menu item. Sometimes it's an arrow when it was supposed to be a text tool. Sometimes it just wasn't there.
- Lots of java exceptions.
- The explain plan tool is neat once you figure out how to use it.
- When you run the query, it retrieves the whole resultset. It would be nice to retrieve a subset and let you page through the results. Sure, I know about ROWNUM, but I just expect that automatically.
- When you retrieve a resultset, the columns always come back too small. You have to expand them almost every time.
- Most query tools will display a date as a date if the time component is the default time and the entire timestamp if not. In SQL*Plus fashion, the dates show up in NLS_DATE_FORMAT. No biggie, just different.
- I want to see the tables I have permission on under "Tables", not "Other Users>Tables".
- Forget about using OS Authenticated users, it uses JDBC Thin.
Monday, February 06, 2006
Setting up HTML DB
From a DBA perspective, it's pretty simple to setup and administer. However, I have a philosophical problem with the way workspaces are setup and used.
Traditionally, I'll setup an "owner" schema that holds the tables, packages, objects, etc. that an application may use. Then I'll create one or more "user" schemas that access the "owner's" objects. This method lets me grant the least amount of privileges needed so the application can run. I can also encapsulate business logic and relationships in the application's packages to hide the complexity to the developer. If a developer wants to call my "doit" method of my "stuff" package, he just calls OWNER.STUFF.DOIT().
My first problem with HTML DB is that it expects to have the workspace mapped to the owner schema. While I can place synonyms and views in the "user" schema to appear that the "user" owns the objects, this seems like a kludge. What if I have 50 user schemas, I have to create the same synonym 50 times? [disclaimer]I know about public synonyms, I'm just trying to illustrate a point.[/disclaimer]
My other problem is HTML DB wants to install the demo tables and application into every freaking workspace. I don't want my "user" schemas to have the ability to create tables and I surely don't want DEMO_* as a table in my production system.
I know there are other people out there running HTML DB. Do you map your HTML DB workspaces directly to the owner of the tables?
Friday, February 03, 2006
What kind of person?
I went to the gym this evening and the area where I usually park was full. I circled the lot and saw some teenagers pawing through the dumpsters behind the building, but I didn't think anything about it. By the time I got back to my parking area, there were still no spaces, so I parked in a parking deck nearby. I parked under a light just like you're supposed to do and went in and started my workout.
Twenty minutes into my workout, a message comes over the loudspeaker.
"Will the owner of the car with license plate number XYZ-123 please report to the front desk."
Damn, I must have left my lights on.
I grabbed my keys and headed to the front desk. That's where they told me somebody reported my car was broken into. I went out to find a broken driver side window and my glove box gone through. In fact, the radar detector was still hanging on the windshield and there was loose change in the cup holder.
Great.
There was glass everywhere. Inside the car. Outside the car. In fact, there was so much glass down the window, I can't even open the door.
The guys at the gym called the cops and they showed up about 20 minutes later. The cop asked me a couple questions, ran my plates, and gave me a card that had my case number on it. He said I could pick up my Police Report in 4-5 days.
"I'd like to tell you we'll catch the guy that did this, but that'll never happen" was the only thing he could say as he drove away. Maybe I've been watching too much CSI, but no fingerprints? How about a computer simulation of the glass pattern so we can tell how tall the person was? Right. He didn't even get out of the car.
What a hassle. Now I've got to get to a glass shop. On a Saturday. Oh, and it's supposed to rain tonight.
Sure, it was probably those kids. Or maybe some other kids hanging around. What kind of person gets their jollies by breaking car widows?
Thursday, February 02, 2006
CSS and XHTML
I made a bee-line for the back of the store (as usual) and went straight to the Oracle section. We've done some initial prototypes with HTML DB and I was looking for a good book to help expand my knowledge. Come to find out, there's only one book on HTML DB out, but the one I was looking for doesn't come out until the end of the month.
While the wife was perusing the romance novels, I started thumbing through the CSS and XHTML selections thinking I might spruce up the blog. I got about 10 pages into the first book and couldn't follow it. I thought maybe the book was over technical, so I picked up another one. I started reading that one and after a while, just didn't get it either. Maybe I'll just stick with the templates...
Wednesday, February 01, 2006
State of the IT Job Market, Part II
Monday, January 30, 2006
State of the IT Job Market
The Computing Technology Industry Association recently conducted a survey that pointed out 60% of IT workers are looking for new jobs. Of those 60%, a staggering 81% of those job seekers consider their job searches "active".
Wow, nearly 50% of IT workers are actively searching for another job. I used to think thinks like perks and training were the key to keeping employees happy. I have found out that those things are nice, but they don't keep a person loyal to the company. Whether you are an Oracle DBA, MySQL Developer or Network Admin, I believe a person needs to be kept technologically relavent, feel challanged, and most of all, be appreciated. Maybe that's just how I feel, but it seems to be working.
Friday, January 27, 2006
Surviving the bad boss
My bad boss was on one of my early programming jobs right out of college. She was the classic incompetent manager with a side of egocentric thrown in. I'd get done writing a program or report and verified it worked the way it was supposed to. I would then put the program into production and let the users verify the report worked exactly as expected.
Unbeknown to me, my boss would "fix" my code in the middle of the night and put it into production without even testing it. Of course, I got a call in the morning saying my code dumped core or broke the morning build. I couldn't understand it. That's when I started learning about diff, checksum, and about Sun auditing. I told another manager what I found and sure enough, this wasn't the first time.
I dealt with it mostly with CYA until I could get out.
Thursday, January 26, 2006
Send out a search party
Wednesday, January 25, 2006
Friday, January 20, 2006
I wanna be like HJR
Thursday, January 19, 2006
Cubeville
Except for a brief stint as a Project Manager, I've always shared my space with somebody. Mostly cube farms, but occasionally an office with another party. When I work at home, I seem to get more done. Is that because at home I concentrate on tasks that I can do remotely or because I don't have interruptions? I don't know. I do know I like poking my head over the partition and asking the person next to me a question.
Sure, there are times I'd like my own office; getting into a discussion of how Oracle or MySQL works, annual performance reviews, and interviewing. But for those few times I need an office, there are plenty of conference rooms available.
The debate goes on: Cube or Office?
Tuesday, January 17, 2006
The Definitive Guide to MySQL 5, Third Edition

I went on a buying spree of technical books a couple months ago. One of the MySQL books I picked up was The Definitive Guide to MySQL 5, Third Edition.
Let me start off by saying I'm a Database Administrator. I'm concerned with one thing; the database. I want to know how it works, how to back it up, how to restore it, how the locking works, how to secure it, and how are transactions handled. I don't care how you connect to the database or what tools you use. I'm beginning to understand MySQL, but know I have plenty more to learn.
The book started to get my interest around Chapter 11 - Access Administration and Security. Security on MySQL is a little different than I'm used to, so I got a lot out of this chapter. I also received a lot of information out of Chapter 14 - Administration and Server Configuration. In fact, this chapter has a pretty extensive discussion on logging and administering the different table types that made the book worth purchasing.
The other sections of the book were excerpts on PHP, connecting MS Office to MySQL, using Java and C++ with MySQL, introductory SQL, introductory database design, and a whole bunch of other things I wasn't looking for on a book about MySQL.
Don't get me wrong, the book was well written. I read the whole book (even the stuff I don't care about) and found it very easy reading. Michael Koffler explains the concepts very clearly and supplements with many examples. If you are a developer who doesn't know anything about what databases mean and you've been thrown into a MySQL environment and need to be a jack-of-all-trades, you will probably get a lot out of this book. Maybe I'm just not the target audience.
Monday, January 16, 2006
Glory Road
In 1966 the basketball powerhouses were Duke, Kentucky, and Kansas (sound familiar?). The virtually unheard of Texas Western (now University of Texas El Paso) had never been to the final four, let alone the title game. The story chronicles the hardships encountered by both the players and coaches on the road to history.
I won't ruin the ending for you, but it's definitely "two thumbs up" for Glory Road.
Friday, January 13, 2006
Goodbye Netgear

You may remember I was having issues with my WAP last fall and I asked for recommendations on a new one. I thought all my problems were solved when Santa brought me a new Netgear router.
Unfortunately, I haven't had very good luck with my Netgear WGT624V3.
The initial setup was a snap, but the troubles started when I tweaked some settings. The first problem was with WEP. I could setup WEP, but neither laptop nor my PDA could connect to it. I certainly wasn't going to run unsecured in a high-density area. This WAP also supports WPA, so I enabled it and got the two laptops talking to it. I'm out of luck with my PDA, but that's something I could live with.
After a couple of days, the laptops started disconnecting periodically. The first fix on the Netgear forums suggested some settings to tweak.
I also found a fix on the Netgear forums suggesting my problem was thermal and I should do this:

Um, I don't think so. I did some more research and found out that people occasionally have problems with the 108Mbps settings, so I turned that off. Wireless connections were somewhat stable after that.
I've noticed over the last week that my desktop computer occasionally says "Network cable unplugged" for about 15 seconds and then it goes away. OK, maybe the cable is bad. I swapped all the ethernet cables out with brand new ones from Staples. After that was done, I still got the message.
Three strikes and you're out. Fortunately I had my old Linksys router around so I hooked it back up and got desktop service back. The Netgear router is going back to the store tonight. If they don't take it, it's going to ebay. If I can't sell it there, it's going to the skeet range.
Maybe because I'm in IT I expect things to always work they way they're supposed to. (Lord knows, I work with Oracle, so that's always the case). What would the normal home consumer do?
Monday, January 09, 2006
Waiting on dbms_job
Friday's job queue was running just fine. On Friday evening, I put about 200 jobs into the queue to run immediately and expected them to run for a couple hours. I had job_queue_processes set to 4, so I knew that only four jobs would be running at the same time.
About 75 jobs into the run, no jobs were running. Nothing was in dba_jobs_running. I could see that jobs were still in the queue. I wasn't really sure what was going on, but I couldn't bounce the instance.
I finally decided to set the job_queue_processes to 0 with ALTER SYSTEM and waited until I didn't see the query job coordinator process (cjqN) anymore. I then reset the job_queue_processes to 2. I didn't want to set job_queue_processes to 4 as other stuff was going on by this time. CJQn then restarted and continued processing the jobs in the job queue.
Saturday, January 07, 2006
Why I hate Windoz, reason #349 retracted
I got suggestions from Nuno Souto and Nial Litchfield that maybe I could install Windoz 2000 directly by just popping in the NT CD when the installer asked for it. So I thought I'd give it a try.
I searched around the internet for articles suggesting how I might do this and came upon an article explaining how to use the makeboot.exe program on the W2K CD. Of course, I could only scrounge up four floppies and two had bad sectors so makeboot.exe couldn't use them.
So it's off to Wal-mart to get some floppies. They had one blister pack with 3 floppies for $3.49. I needed four anyway, so I drove a little further and stopped at Staples. Aha, 25 floppies for $3.89. In all honesty, though, they only had about 10 packs of 25 floppies on the shelf. About 6 feet of CD-Rs, CD-RW, DVDs and 2.5" disks, but only 10 boxes of floppies. Are we seeing the ever populate floppy going away?
Anyway, back at home I run the makeboot.exe and create my four boot floppies and start the install. Nowhere did the install process even ASK me for the NT disk. All in all, it worked out pretty good.
Don't get the wrong idea here. I still hate Windoz, but I only have 348 reasons now. (until I install the 2 year old modem tomorrow, anyway).
Thursday, January 05, 2006
Why I hate Windoz, reason #349
Problem is, I bought the PC with Windows NT 4.0 on it and then upgraded to W2K a little while later. I searched the internet and found a couple places where I thought I could just install W2K from CD-ROM. Rather quickly I found out that since I was using an upgrade CD, I had to install an upgradable OS first. I searched for my NT disks and re-installed it. Of course with NT I had to create a 2G partition to install on and then an 18G partition for everything else. Then I popped in the W2K CD and ran the upgrade and wiped out the NT partition. Then I want to format the 18G partition and Windoz rolls on for about 60 minutes and then exits with "Unable to format partition".
OK. What's that mean?
So I try to format it again as an NTFS filesystem. "Unable to format partition" again.
OK.
So I try to format as FAT32 and voila, it's formatted. I'm not really interested in having a FAT32 filesystem, so I try to format it again with NTFS and it formats fine. Go figure.
Tuesday, January 03, 2006
Good training value
Thursday, December 29, 2005
Funky redo behaviour in 10g
We put up a development database on 10.2 a couple months back just so we could start getting experience on 10g. As we add more and more development schemas to this database, we're getting a taste for the new features.
We've been getting a disproportionate number of "Checkpoint not complete" messages lately. Sure, there's pretty heavy write activity going on at the time, but not enough to fill all my redo logs. I have six groups of 128M logfiles with two members each. During the heavy write activity, my logs get switched a few times in a minute. However, I know my log_archive_dest can keep up with the write activity, so there should be no problem archiving them that fast. From the alert.log:
Thu Dec 29 19:05:37 2005
Thread 1 cannot allocate new log, sequence 9945
Private strand flush not complete
Current log# 4 seq# 9944 mem# 0: /u01/oradata/demo1/redo04_01.log
Current log# 4 seq# 9944 mem# 1: /u02/oradata/demo1/redo04_02.log
Thread 1 advanced to log sequence 9945
Current log# 5 seq# 9945 mem# 0: /u01/oradata/demo1/redo05_01.log
Current log# 5 seq# 9945 mem# 1: /u02/oradata/demo1/redo05_02.log
Thu Dec 29 19:06:28 2005
Thread 1 advanced to log sequence 9946
Current log# 1 seq# 9946 mem# 0: /u01/oradata/demo1/redo01_01.log
Current log# 1 seq# 9946 mem# 1: /u02/oradata/demo1/redo01_02.log
Thu Dec 29 19:06:42 2005
Thread 1 advanced to log sequence 9947
Current log# 2 seq# 9947 mem# 0: /u01/oradata/demo1/redo02_01.log
Current log# 2 seq# 9947 mem# 1: /u02/oradata/demo1/redo02_02.log
Thu Dec 29 19:07:00 2005
Thread 1 cannot allocate new log, sequence 9948
Checkpoint not complete
Current log# 2 seq# 9947 mem# 0: /u01/oradata/demo1/redo02_01.log
Current log# 2 seq# 9947 mem# 1: /u02/oradata/demo1/redo02_02.log
Thread 1 advanced to log sequence 9948
After the write activity is over, I look at v$logfile and v$log and see that several groups are still ACTIVE.
I then doubled the size of the logfiles and reran the big job that caused the "Checkpoint not complete" error. While the job didn't cause a "Checkpoint not complete" error, it did make three of the log groups ACTIVE, which I kind of expected. However, 20-30 minutes later, I looked at v$logfile and v$log to see almost all my log groups were either ACTIVE or CURRENT.
system@demo1.us> l
1 select l.group#, lf.member, l.bytes/1024/1024 mb, l.status, l.archived
2 from v$logfile lf, v$log l
3* where l.group# = lf.group#
GROUP# MEMBER MB STATUS ARC
------ ------------------------------- ----- ---------- ---
1 /u01/oradata/demo1/redo01_01.log 256 CURRENT NO
3 /u01/oradata/demo1/redo03_01.log 256 ACTIVE YES
3 /u02/oradata/demo1/redo03_02.log 256 ACTIVE YES
4 /u01/oradata/demo1/redo04_01.log 256 ACTIVE YES
4 /u02/oradata/demo1/redo04_02.log 256 ACTIVE YES
5 /u01/oradata/demo1/redo05_01.log 256 ACTIVE YES
5 /u02/oradata/demo1/redo05_02.log 256 ACTIVE YES
2 /u01/oradata/demo1/redo02_01.log 256 INACTIVE YES
2 /u02/oradata/demo1/redo02_02.log 256 INACTIVE YES
1 /u02/oradata/demo1/redo01_02.log 256 CURRENT NO
6 /u01/oradata/demo1/redo06_01.log 256 ACTIVE YES
6 /u02/oradata/demo1/redo06_02.log 256 ACTIVE YES
-----
Total 3072
12 rows selected.
Elapsed: 00:00:00.05
During light load, I would expect one group CURRENT and maybe one group ACTIVE. The other funny thing is the logs show they are archived, which if I look at the log_archive_dest, they are. I have to do some more research, but I suspect there's an init.ora parameter or something that isn't set correctly...
Tuesday, December 27, 2005
Router and WAP in one
The old Linksys WAP is on it's way to the local landfill where it belongs. I'm hanging on to the old Linksys router for a backup.
Thursday, December 22, 2005
Interesting take on RTFM
Monday, December 19, 2005
The "New & Improved" Metalink
Saturday, December 17, 2005
Yummy yum
FC4 opened my eyes to a totally new updating method; yum. I did a quick search and found The Unoffical Fedora FAQ which walked me through setting up yum and installing software for it. I installed the updated gcc compiler using yum and it only took a couple minutes to download gcc and any dependencies. "Wow, this is easy", I thought to myself, so I used yum to update OpenOffice.org to 2.0. This is definitely a nice tool to keep some of your general software up to date.
I don't think I'll use yum to keep my main database software updated. For example, I'm going to be doing research on having multiple versions of MySQL on the same system. During this research, I'm going to put MySQL 4.1 in one directory and 5.0 in another. I don't want my 4.1 software automatically updated until I want it updated.
I wonder if Oracle has a yum repository for Oracle Applications? (If you deal with Oracle Apps, you know what I'm talking about).
I think this will be a big time-saver.
Thursday, December 15, 2005
FC4 installed
The second little glitch was I downloaded the ISO images and burned them to CD. Except I didn't realized I had to burn them in a specific way. The second time I figured it out and was able to install right off CD.
The particular distribution I used had Firefox 1.0.4 and OpenOffice 1.9 (2.0 beta) so I'm no further ahead in that respect. Since I was planning on re-installing these packages anyway, it's not a big deal. My first task, however, is to get the MySQL 5.0 source and get Apache configured. More updates to come...
Wednesday, December 14, 2005
Out with the old, in with the new
Tuesday, December 13, 2005
MySQL and icc solved
CC=icc \
CFLAGS="-O3 -unroll2 -ip -mp -restrict" \
CXX=icpc \
CXXFLAGS="-O3 -unroll2 -ip -mp -restrict" \
LDFLAGS="-static-libcxa -i-static"
Monday, December 12, 2005
Installing just the MySQL Client using icc
I've compiled the 5.0.16 software using gcc about a dozen times already and other than a few simple tweaks here and there, it was a no-brainer. When I installed the client, I used gcc instead of the preferred (in my environment) icc.
I started by issuing a "make clean" to remove any builds I did before. I then changed my CC and CXX environment variables to point to the icc compiler and did:
$ configure --without-server --prefix=/usr/local/mysql_client
On my first try I encountered errors that were looking for "__cxa_pure_virtual". I googled and found this which gave me some additional things to do. Sure enough, this solved my "__cxa_pure_virtual" problem, but now I have more errors:
$ export CC=icc
$ export CXX=icc
$ export CFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict"
$ export CXXFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict"
and then I configure with the following options:
$ ./configure --without-server --prefix=/usr/local/mysql_client --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared --with-client-ldflags=-all-static
I then run "make clean" to clean out any failed compiles and it runs fine.
I then run just "make" and it chugs along for a while, but then exits with errors like:
mkdir .libs
icc -O3 -DDBUG_OFF -O3 -unroll2 -ip -mp -no-gcc -restrict
-o gen_lex_hash gen_lex_hash.o ../myisam/libmyisam.a
../myisammrg/libmyisammrg.a
../heap/libheap.a ../vio/libvio.a ../mysys/libmysys.a ../dbug/libdbug.a
../regex/libregex.a ../strings/libmystrings.a -lz
-lpthread -lcrypt -lnsl -lm -lpthread
gen_lex_hash.o(.eh_frame+0x12): undefined reference to
`__gxx_personality_v0'
make[2]: *** [gen_lex_hash] Error 1
make[2]: Leaving directory `/srcpath/5.0.16/mysql-5.0.16/sql'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/srcpath/5.0.16/mysql-5.0.16'
make: *** [all] Error 2
Obviously, I'm missing a reference to __gxx_personality_v0, but where do I get that from? Maybe one of my other libaries is out of date? If anybody has any hints, I'd appreciate you sharing them at http://forums.mysql.com/read.php?11,59295,59295#msg-59295.
Update: Solution
Thursday, December 08, 2005
Where MySQL and Oracle are the same...
Wednesday, December 07, 2005
Three wishes...
Early in my career, I worked for a very large university in their IT department. Just being out of college, I was very grateful to even have a job. But anybody who works in the public sector knows, the pay ain't that great. In order to make ends meet, I started writing code "on the side" with a friend of a friend. I wrote a system in Paradox (version 3.5 for you techno geeks out there) for $10/hr. I got paid, but found out later that the person I was working for billed the client $50/hr for my time. This person then went on to sell this system to other clients and, of course, I didn't have any rights to it.
I also wish I listened to my gut. I had been working at a regional telecom company in the late 1990's. I had been perfectly happy there for three years and the pay was more than adequate. In 1998, during the rise of the dotcom bubble, I was seduced by a consulting company by the promise of 100% bonuses and four day work weeks. I agonized about it for about a week, and although my gut told me it was too good to be true, I jumped ship. After about two weeks I knew I made a mistake, but told myself it would get better. Fortunately, I had a good management team back at the telecom company and kept in touch with them. After two months I decided I'd had enough of consulting and went back to my old job.
Tuesday, December 06, 2005
Moving an application
- Some Java programs still continue to use a connection URL of host:port:sid.
- People really like synonyms. There were a couple situations where a synonym pointed to a synonym which pointed to a synonym which pointed to a synonym...
- Recently, we have been setting up TNS aliases for each application and not each database. Sure, when we have multiple applications on one database there are multiple aliases. But when we move the application and flip the alias, everybody changes at once. Programs that used the application specific aliases moved with no problems.
- It's 2005 (almost 2006) and we are still fighting people hard-coding username/passwords in their programs.
- Got a call from a user Sunday, "I can't login with user X to the database." I replied, "User X doesn't live on that database anymore, and where did you get user X's password?"
Saturday, December 03, 2005
It may be early...
Thursday, December 01, 2005
Wednesday, November 30, 2005
More stupid internet stuff
| You Are 35 Years Old |
![]() Under 12: You are a kid at heart. You still have an optimistic life view - and you look at the world with awe. 13-19: You are a teenager at heart. You question authority and are still trying to find your place in this world. 20-29: You are a twentysomething at heart. You feel excited about what's to come... love, work, and new experiences. 30-39: You are a thirtysomething at heart. You've had a taste of success and true love, but you want more! 40+: You are a mature adult. You've been through most of the ups and downs of life already. Now you get to sit back and relax. |
Sunday, November 27, 2005
Friday, November 25, 2005
My First MySQL "Doh"!
I think to myself, "No problem, just grant the FILE privilege".
He tells me "LOAD DATA INFILE" still doesn't work. After a little head-scratching, I pull out MySQL by Paul DuBois and realize it only works from the server and not from the client. Doh. (Although the "Access denied" error was pointing me to the MySQL maze known as privileges).
Thursday, November 24, 2005
First Snow

The first snow of the season always brings hope that the bad things in the year can be purified (or covered up). I'll be cursing the weather after three months of scraping the car windows and shoveling the walk, but for now, it brings hope.
The way a crow
Shook down on me
The dust of snow
From a hemlock tree
Has given my heart
A change of mood
And saved some part
Of a day I had rued.
-- Robert Frost, "Dust of Snow"
Monday, November 21, 2005
Map24.com
Then I came across Map24.com. You can put up to 5 destinations and get your directions all at once.
There are a couple improvements I'd like to see to the site. First, I could only get the map to display with IE, and not every time.
Also, right now you can specify the order in which you want to visit your destinations. However, I think it would be nice to put all my addresses in and let the software calculate the order I should visit them in order to maximize my time.
Check it out, see what you think.
Wednesday, November 16, 2005
Making IT Exciting Again
Mr. Stewart takes two cases in his own business where he examined risk and return to help the C levels recognize people in IT have a little smarts and know more about the business than rebooting a couple computers and make pretty websites.
My own career is a little contradictory to the respective times. In the late 90's I was working for a private telecommunications company that was expanding like wildfire. Every penny was stretched and every request for anything over $500 had to go the COO. Ask for over five grand and you met with the President/Owner of the company. You can imagine the business case we had to present when I asked for $1.2 Million to buy a Sun E5500 and 800G of disk. I got it, but the business case took my manager, a reseller, and myself about six weeks to put together.
My first project at my new company in 2000 was to move one of the two instances off an Ultra 2 with six 9G disks to its own Ultra 2 with six 9G disks. We discussed transaction and data volumes and I said on day one the U2 wouldn't cut it. A month later, we were on a 4 CPU box with dedicated fibre attached storage. Today I have about 20 boxes running about 12TB of storage on a SAN. I've had to justify it, but never had to write more than an email to get it.
Sure, I got lucky. Every time I think things are slowing down, wham, we get hit with a new project. Every day is exciting.
Tuesday, November 15, 2005
More WAP Worries
Ideally, I'd like a WAP and Router all in one. The WAP would have to support WEP or some other authentication/encryption protocol since I live in a high density area. The router would have to support DHCP, which I think most do. Does anybody have any recommendations?
Monday, November 14, 2005
Periodic Reboots
root@mybox> uptime
1:20am up 500 day(s), 13:23, 1 user, load average: 0.00, 0.00, 0.01
If I had a dollar for every Windows PC that didn't have to be rebooted in 500 days, I'd have...nothing.
Friday, November 11, 2005
Re-examining what you know
As you may recall, I was searching for a DBA to fill an open slot. As with any new addition, it takes time to assess the individual's abilities and figure out how they will be integrated into the team. I constantly find myself wanting to say "That's the way it works, trust me" but try to take time to explain.
For example, the other day we were recovering a database in the development environment. To do this project we had to recreate the controlfile and do an incomplete recovery. While doing the recovery, Oracle asked for an archived redo log that was months old. We got into a discussion of how the controlfile works with an incomplete recovery, how that relates to each datafile and why Oracle may be asking for a real old archived redo log. I think my DBA learned a little more about Oracle and I learned that he now knows the function of the controlfile.
I want to instill into my team members the ability to question why things are setup as they are. Sometimes I just want something done a particular way because it needs to be done fast. However, I also don't want them to take my word because I don't always know...
Tuesday, November 08, 2005
Upgrading Oracle Applications
Monday, November 07, 2005
Not Checking out
Wednesday, November 02, 2005
Technology at the Police Department
I've been fingerprinted for before. My work requires a background check and as part of the investigation your fingerprints get sent to the FBI. The last time I was fingerprinted a police officer came in with his trusty ink pad and cards. He rolled each finger in the appropriate box and you were left with a mess on your hands.
Today, it was a different story. First, the officer put my information into a computer. Instead of pulling out the trusty ink pad, he placed my fingers on a glass surface and then scanned my fingerprints. You still have to go through the same process where the officer rolls each of your fingers over the glass, but it's definitely less messy.
The only thing I was disappointed with is when you're done, the officer runs a fingerprint card through a laser printer and your prints get transferred to a standard form. Once they are sent to the FBI, they get scanned again for analysis. Wouldn't it be much easier to just transfer the images to the FBI directly? Maybe it wouldn't take 6 weeks to get the results back.
Tuesday, November 01, 2005
HP, EVA's and databases
The "disk group" basically sits on top of the RSS and is a logical collection of disks. The disk group is stiped across all disks in the disk group. Each "virtual disk" (basically LUN) is then created from a single disk group and assigned a "vRaid" level. You can create as many "vDisks" in your disk group as you need. A single vDisk can not span multiple disk groups unless you use a LVM like vxvm.
The documents I'm reading (here, and here) are conflicting at best. One says that a database server should have one disk group effectively implementing SAME (stripe and mirror everything) for you. The other document says to configure the number of disk groups for the type of I/O you will encounter. Knowing that the redo logs will be sequential access and the datafiles will be a mix of random and sequential access, I think there should be at least two disk groups.
Performance wise, every fiber of my being tells me one filesystem just isn't going to cut it no matter how many physical disks are under it. Do I really want all 48 disks spinning for a 8k write?
One of my fears is that if I lose a disk group, I lose everything. HP, of course, says you will never lose a disk group. Experience on other HP products tells me the first time we have a failure, we'll get some bad advice and wipe something out. Am I just being paranoid about losing a disk group?
Does anybody have practical experience on HP EVA's that can offer some insight?
Wednesday, October 26, 2005
Skipping a beat
Part of the decommissioning process is to truncate all the tables in the development database, but leave the structure in place just in case we have to do any quick compiles. Although I know it's running on my development database, my pulse still quickens when I see all those tables whirring by knowing they're being truncated. I double and triple checked that I was on development, but still I was a little nervous pressing the "Enter" key...
Monday, October 24, 2005
Giving up on dbms_metadata
First thing we hit was good old bug 3832291:
ORA-31603: object "SYS_C0059941" of type CONSTRAINT not found in schema "MYSCHEMA"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA", line 628
ORA-06512: at "SYS.DBMS_METADATA", line 1221
ORA-06512: at line 1
OK. We figured out a way around that by generating constraints as ALTER statements. As we're cooking along again, blam, bug 3721907. Sure, we found a way around that one too.
The final nail in the coffin, was the performance with the whole thing. It took 30 minutes to dump a small schema of about 200 tables and a couple dozen packages. Checked metalink and found good old bug 3653586.
Looks like most of these bugs are fixed in 10g, but I'm not upgrading a bunch of instances just so dbms_metadata works. Sigh.
Wednesday, October 19, 2005
Automating the post office
A friendly postal worker announced "Anybody paying by debit card or credit card can use the automated postal center." Cool, I thought, and I proceeded over to the ATM like thingy.
I must have had a blank stare on my face because the same postal worker asked me, "Do you need help?"
"I just want to mail this letter, get an acknowledgement from the recipient, and be able to track it if it gets lost.", I replied.
"Those aren't the right forms. The machine will print out the right ones."
"OK, cool." I start punching away. Letter. First Class. Done.
"Um, it didn't ask me if I wanted to get a return receipt."
"You did it wrong. You have to add a service."
"O...K..." Cancel. Letter. First Class. Add Service. Return Receipt.
"How do I know my tracking number?"
"You have to add a different service."
At this point, she is getting just as frustrated as I am. There's three Moms behind me patiently waiting to send cookies off to their kids. We go through it together: Cancel. Letter. First Class. Add Service. Certified Mail. Add Return Receipt. Done.
Finally, the stamp prints out. Another form prints the Return Receipt card and another sticker I'm supposed to put on the letter. The form is about half "peel and stick" and half regular paper. I fill out the "peel and stick" part and put it on the back of my letter. I carefully place the other sticker on the front of my envelope and fold it according to the directions on the form. I drop my neatly assembled letter in the big mailbox next to the APC.
"That's for packages", she says and quickly adds on "but it will get there." I'm going to the window next time.
Monday, October 17, 2005
Wicked ORA-27054, Solved
After much research on David's part and some testing on our own, we settled on using the following parameters to mount our NFS filesystems for the purpose of backup:
rw,bg,intr,hard,timeo=600,wsize=32768,rsize=32768,nfsver=3,tcp
So all is well now. Our 9.2 backups complete in the same time and our 10.2 backups complete in an acceptable time. Now if we just knew which one of those parameters did it, we'd complete the education process.











