Archive for July, 2006



Oracle and the World of Open Source

Monday, July 31st, 2006

According to this article, it only takes a few words from Oracle CEO Larry Ellison to sink stocks…not Oracle stocks, but Novell.

Mr. Ellison gave indications that Oracle will be re-distributing RedHat Linux, the world’s most popular Linux distribution.  The idea is a forked RedHat, where the OS is RedHat compatible, but cheaper, and hopefully made to work with Oracle over all else.

In the article, it is also mentioned that Oracle is looking to buy either BEA Systems or BusinessObjects, the largest Business Intelligence vendor, which is something I mentioned Oracle is going to be very interested in in the next year.

Tomorrow is SysAdmins Day (DBA Too)!

Thursday, July 27th, 2006

Yes, tomorrow is national SysAdmin day, which includes DBAs.  SysAdmin day is the day for all end users to get together and thank their SysAdmins and DBAs for all their hard work, long hours, requests, emails, and God knows what else.

For all you who fit into this category, congratulations on surviving another year as a system administrator!  The next promises to be filled with loads of fun.  But for now, enjoy yourself, because tomorrow is your day.

For anyone who is NOT a sysadmin, this is the day to get gifts for your overworked SysAdmins and DBAs!  Maybe this shirt?

Oracle OpenWorld 2006 in San Francisco

Tuesday, July 25th, 2006

It looks like we’re all set for OpenWorld 2006! Burleson Oracle Consulting and Training, has FOUR Oracle gurus invited to OpenWorld as speakers.

This promises to be a great conference for the Oracle Community. Look forward to seeing you there!

Today is my 26th Birthday

Tuesday, July 25th, 2006

I’m sure it’s in bad taste to wish happy birthday to yourself in your own blog, but hey, it’s my blog, right?

Today, I am 26…it’s insane how time flies. I remember when I was 20 in a Sr. DBA position, I bought the domain youngestdbaintheworld.com just for fun. I was easily the youngest person in my company that had over 200 people in the ops department. It was a lot of fun! But now, it’s interesting to see the DBA profession grow, and other people in their early 20s getting into the DBA game.

Young punks, all of ‘em. Back in my day, we had it rough. We had to log in as the internal user to shut down a database. We didn’t have no fancy AWR or ADDM or AMM or ASM, no sir. We had to put our tablespaces on different disks to keep I/O down. We didn’t have no easy buffer cache parameter, we actually had to multiply blocks for our cache! Yes sirree. Our listeners were static, our administration was text based, and our excessive extents hurt our performance. *smacks lips with the memory* Yes, those were the days.

Okay, so it wasn’t that long ago to some people I work with like Don Burleson or Mike Ault, but hey, ten years is quite a while in the evolution of a product like Oracle.

Anyways, go out and have some cake and a drink for my birthday!

Object-Oriented Oracle with Substitutable Types

Sunday, July 23rd, 2006

Have you ever been forced to create many tables to handle a single functionality? Or make a table that’s horribly vague because there were so many different ways one row could come in?

Let me give you an example. Let’s say you had to create a table that could support every different kind of electronic computing device. At first, you may think, easy! We’ll create a table with CPU, RAM, VIDEO_CARD…wait…what about iPods? Those are computers too. Video game consoles, like the new XBOX360, can run Linux. PDAs, cell phones, mainfraimes, robotics, entertainment systems, all of these are types of computing devices! How can you make a table that holds them all?

At this point, you feel you have four options. You can make a single table with hundreds of columns, most of them nullable, that can handle all of it. Or you can make a table with tons of columns like STRING1, STRING2, NUMBER1, NUMBER2 to handle any eventuality. Or, you can just make a different table for every single device out there. Lastly, you can make other tables that have two vague columns, NAME and VALUE, so you can have as many rows as you want to describe the object in any way you like…but what happens when you have to do an AND or OR where clause against it? You’re stuck with UNIONs and such and performance goes downhill.

Enter object oriented Oracle, using substitutable types. How would you like a single column that can hold all of these columns and more that’s extremely scalable and easy to manage? Yes please.

What we will do is create a base table to hold all these items with columns that pertain to the overall concept. For instance, it will have the columns ITEM_ID and QUANTITY.

But where’s the details? We will put all of them, every single on, in a column called ITEM. And the data type of ITEM will be ITEM_TYPE.

Yes, we’re going to make our own data type!

SQL> create or replace type item_type as object (
2  ITEM_NAME VARCHAR2(100)) not final;
3  /Type created.

SQL> desc item_type
item_type is NOT FINAL
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ITEM_NAME                                          VARCHAR2(100)

Now that we have a data type of our own, we can assign it to a column of a table. But before we do that, we’re going to find out just how powerful these things are with substitutable data types.

SQL> create or replace type pda_type under item_type (
2  battery_life number,
3  colors number,
4  cell_capabilities varchar2(1));
5  /

Type created.

SQL> desc pda_type
pda_type extends KARAM.ITEM_TYPE
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ITEM_NAME                                          VARCHAR2(100)
BATTERY_LIFE                                       NUMBER
COLORS                                             NUMBER
CELL_CAPABILITIES                                  VARCHAR2(1)

Notice that even though we didn’t put it in our create statement, there’s an ITEM_NAME column in the data type. That’s because PDA_TYPE extends ITEM_TYPE, which contains ITEM_NAME! This is what a substitutable type truly is: it’s a datatype that takes pieces of other datatypes and extends them to form new and interesting things.

Let’s make one more for our experiment.

SQL> create or replace type pc_type under item_type (
2  cpu varchar2(50),
3  ram number,
4  video_card varchar2(100));
5  /

Type created.

SQL> desc pc_type
pc_type extends KARAM.ITEM_TYPE
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ITEM_NAME                                          VARCHAR2(100)
CPU                                                VARCHAR2(50)
RAM                                                NUMBER
VIDEO_CARD                                         VARCHAR2(100)

Now, we’re at last ready to create our table.

SQL> create table item (item_id number primary key, quantity number,
2  item item_type);

Table created.

SQL> desc item
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ITEM_ID                                   NOT NULL NUMBER
QUANTITY                                           NUMBER
ITEM                                               ITEM_TYPE

And here we are, ready to go now. Let’s put some records into our new table. This is where it gets a bit interesting.

First, we’re going to insert a PDA.

SQL> insert into item (item_id, quantity, item) values
2  (1, 20, pda_type('Handspring Trio', 480, 256000000, 'Y'));

1 row created.

SQL> select * from item;

ITEM_ID   QUANTITY
---------- ----------
ITEM(ITEM_NAME)
--------------------------------------------------------------------------------
1         20
PDA_TYPE('Handspring Trio', 480, 256000000, 'Y')

Let’s do one more, this time a PC.

SQL> insert into item (item_id, quantity, item) values
2  (2, 50, pc_type('Macbook Pro', '2.8GHz', 1024, 'ATI Built In'));

1 row created.

SQL> select * from item;

ITEM_ID   QUANTITY
---------- ----------
ITEM(ITEM_NAME)
--------------------------------------------------------------------------------
1         20
PDA_TYPE('Handspring Trio', 480, 256000000, 'Y')

2         50
PC_TYPE('Macbook Pro', '2.8GHz', 1024, 'ATI Built In')

Did you notice that our insert had entirely different columns? That’s because the data type changed! It’s the beauty of substitutable types. Now, we have all our data in that column called ITEM. Let’s see what we can do with it.

Would you like to get all the devices that are PCs?

SQL> select item from item where item is of type (PC_TYPE);

ITEM(ITEM_NAME)
--------------------------------------------------------------------------------
PC_TYPE('Macbook Pro', '2.8GHz', 1024, 'ATI Built In')

Here’s the one that’s probably on ALL of your minds. How are we going to specifically pull a single column? Like CPU from ITEM where it’s a PC? This is where the TREAT function comes in. TREAT allows us to translate an item’s datatype into one of its substitutes. Look below:

SQL> select treat(item as pc_type).cpu from item where item is of type (pc_type);

TREAT(ITEMASPC_TYPE).CPU
--------------------------------------------------
2.8GHz

And there we go! We can actually pull the columns as we please out of the system. If you create your code properly, you can make it very simple to dynamically build queries.

Lastly, we may want to update some rows. This is the only place I find these abilities lacking. You will actually have to do an inline view to perform the update.

SQL> update (select treat(item as pc_type).cpu as cpu from item where item is of type (pc_type)) set cpu = '3.2GHz';

1 row updated.

The other option is to create an actual view that is updateable for each of your sub-types, which can be very convenient.

1  create or replace view pc_view as
2  select treat(item as item_type).item_name item_name, treat(item as pc_type).cpu cpu,
3  treat(item as pc_type).ram ram, treat(item as pc_type).video_card video_card
4* from item where item is of type(pc_type)
SQL> /

View created.

SQL> select * from pc_view;

ITEM_NAME
--------------------------------------------------------------------------------
CPU                                                       RAM
-------------------------------------------------- ----------
VIDEO_CARD
--------------------------------------------------------------------------------
Macbook Pro
3.2GHz                                                   1024
ATI Built In

SQL> update pc_view set video_card = 'ATI 64MB';

1 row updated.

SQL> select video_card from pc_view;

VIDEO_CARD
--------------------------------------------------------------------------------
ATI 64MB

And now we can update and select easily any time we choose. One note: notice when we created the view, we TREATed item as ITEM_TYPE for the ITEM_NAME column. This is because we need to use the highest possible data type in order to make the column updateable.

It is somewhat confusing, but extremely powerful for scalable systems. Please leave a comment here if you have questions!

The “Are We There Yet” Equation

Friday, July 21st, 2006

A math professor has reportedly discovered an equation that will tell parents how long it will take for the kids to say “are we there yet?”

The equation created by Dr. Dwight Barkley of the University of Warwick uses a multitude of factors to mathematically predict the exact moment.

T = (1 + a)/(k^2) + r

Where:

  • T = The time for the child to ask
  • a = The number of activities to do
  • k = The number of kids
  • r = How long it took to get ready

If we take this equation in minutes and say it took us 30 minutes to get ready, we have 2 kids, and we’ve given them each three travel games, we get:

T = (1 + 3)/(2^2) + 30 = (1)/(1) + 30 = Exactly 31 minutes, or exactly one minute after you get into the car.

Let’s try 30 minutes to get ready, 3 kids, and 20 games.

T = (1 + 20)/(5^2) + 30 = (21)/(9) + 30 = 32.3 minutes, or exactly 2.3 minutes after you get into the car.

Ouch! Looks pretty hopeless to me, either way. I think we need an equation that shows what size car you will need, and therefore how much gas you will expend on trips, in order to hold all the kids activities (a) in order to keep them quiet for at least 10 minutes.

No SuperSonics 10g for Larry Ellison

Friday, July 21st, 2006

Looks like buying a sports team isn’t as easy as buying a yacht. According to this article, Larry put down a $425 million bid for the Seattle SuperSonics with the hopes of bringing the team to San Jose.

Unfortunately for him, the owners chose a group of Oklahoma investors at a lower price of $300 million because they offered a much better chance of leaving the team in Seattle where they wished to remain.

Too bad for Larry! It would have been interesting to see what he might have done with it. San Jose SuperSonics – Unbreakable. Get your players on the Grid? PointGuard Failover a definite must.

Sorry Larry…maybe next time.

Mac vs. PC Wars – PCs Strike Back

Thursday, July 20th, 2006

I’m a Mac user, and I have to say I love my Mac. Not because I think it’s horribly superior to a PC or any of that; I just got tired of the Windows interface, and I love the slickness of OSX. It’s nice having a BSD backend to my operating system, so I can pull a ‘kill -9′ when something’s not working right.

I’m actually looking forward to getting my hands on a Macbook soon, so I can dual boot both. You know, the funny thing is that PC users will gripe, moan, and grumble about Windows, they’ll joke about blue screens, and then when a Mac guy says, “Macs are better!” they get all defensive and start ripping on Macs. Hey, at least we like our OS.

Anyways, it all boils down to those commercials. You know the ones with the nerdy PC in a suit and the hippy Mac in the trendy mall gear? I think they’re very funny, but I couldn’t help but giggle when I saw this picture from Worth1000.com. But hey, at least we know that according to #5 of Microsoft’s new principles, there will be no shots fired once Vista comes out.

Enjoy the pic!

Worth1000

Microsoft develops new philosophies

Thursday, July 20th, 2006

PCMag has an article today on Microsoft’s new philosophies that take effect from Windows Vista and beyond. Please note, these philosophies are NOT retroactive! Primarily, it appears Microsoft has finally learned what Apple and Linux have been showing for years: people want flexibility and don’t want to be bullied.

The philosophies can be seen in more detail here, but I’ll give you a basic summary.

  1. Microsoft will design Windows allowing easy non-Microsoft features
  2. Computer manufacturers can add icons, shortcuts, and more to the OS prior to shipping
  3. Manufacturers will be able to set non-Microsoft programs to be the default; for instance, Firefox by default out of the box
  4. Exclusive promotion of non-Microsoft programs and services…meaning a manufacturer can make Google the default search engine out of the box
  5. Microsoft will not retaliate against manufacturers supporting non-Microsoft software
  6. Microsoft will provide developers with a broad range of APIs for application development
  7. Microsoft will provide an internet service product called Windows Live (like .Mac for Apple enthusiasts) but it will be completely optional.
  8. Windows will be designed to never block access to lawful web sites or fees for reaching non-Microsoft sites and services.
  9. Microsoft will not require third parties to promote Windows or Microsoft software on an exclusive basis.
  10. Microsoft will make its communications protocols available for commercial release
  11. Microsoft will license patents on its operating system inventions
  12. Microsoft is committed to supporting industry standards

Congratulations Microsoft! I think you have finally learned to play nice in the sandbox. Hopefully Vista sticks to these standards. As an OSX user, I truly wonder just how easy and user friendly Vista will be. Will windows users trade ease of use for performance? Get a Mac, where you can have both, AND Windows!

A YouTube Lawsuit! Gee, didn’t see that one coming.

Thursday, July 20th, 2006

YouTube.com, a magical place where anyone can upload and tag any movie they want with no screening process.

Read that sentence again if you don’t see where some people in the public may have a problem with this.

According to an article on ZDNet, a journalist and helicopter pilot are suing due to videos on YouTube.com that violate a copyright.

Now, I’ve always been of the mindset that it’s not YouTube’s fault if people violate their policies by uploading illegal content, but when it comes to the interwebs it seems that the courts will usually side with the copyright holder in these cases…then again, I don’t try to keep up with intricacies of the court system and therefore am no one to judge (no pun intended). I’d just hate to see YouTube go by the way of the dodo, it really is a great site and a load of fun.