Recover HCC partitioned tables to non-Exadata storage – The Parallel Quest

If you read my previous post, you might have noticed that I was using a non-partitioned table, of a somewhat small size. The basic stuff is there, but if you’re managing bigger tables you might want to do it using partitions and do it using parallel DDL, to speed things up.

This raises a new challenge: you might not want to uncompress all your partitions, and those that you decide to uncompress should be able to do it in parallel. The sole propose of this post is to show you how can you do it, assuming you want to uncompress all your HCC compressed partitions in the non-Exadata storage… and in parallel :-D

Now the steps

1. Create 4 different tablespaces to accommodate the four partitions of the table we’re about to create

2. Create a table called BRAGA (3rd biggest city in Portugal and the finalists in the UEFA Europa Cup next 18th May in Dublin’s Arena). This table is hash partitioned, with four partitions pointing to the four tablespaces created previously. The table will use HCC compression at the default level (QUERY HIGH), which uses the exact same algorithms and transformations as ARCHIVE LOW, but with a smaller Compression Unit (CU).

3. Direct Load the table with info from the Data Dictionary, creating 415805 rows (about 70MB of uncompressed info).

4. Check the space taken by the CUs: 2.75MB. A compression ratio around 25!

5. Gather stats for the table and its partitions

6. Check how the hashing algorithm spread the data across the four partitions. It should be balanced. I’ve written another post this year about this. You should choose the column with the biggest cardinality to spread the data more evenly. It should be a number around 415805/4=103952 rows for each partition.

7. Backup the tablespaces

8. Recover them back to non-Exadata storage, this time to a local disk in node 1 (/home/oracle/lmc). I was using only one instance to avoid having ORA-01157 errors blowing in my face.

9. Check if the datafiles are on the expected place

10. Query table BRAGA and get error ORA-64307 thrown at you

11. Now it’s the tricky bit! First you modify the compression status of each partition to “nocompress” and then …

12. … you uncompressed them at will and in parallel (after enabling parallel DDL at the session level). Each ALTER TABLE braga MOVE PARTITION  will be a parallel operation in itself, and can be done in parallel amongst themselves to raise the bar!

13. After the uncompression gets done you’ll see that the table is readable and has 69MB!

14. To play around a bit I’ve decided to compress them again but using OLTP compression and in the end I measure the ratio. Nice one too.

Now the code

create tablespace knod1
 datafile '+DGDATA' size 100m
 autoextend on next 250m maxsize 5g;
 create tablespace knod2
 datafile '+DGDATA' size 100m
 autoextend on next 250m maxsize 5g;
 create tablespace knod3
 datafile '+DGDATA' size 100m
 autoextend on next 250m maxsize 5g;
 create tablespace knod4
 datafile '+DGDATA' size 100m
 autoextend on next 250m maxsize 5g;
create table lmc.braga ( --column mimic dba_segments
 OWNER                VARCHAR2(30),
 SEGMENT_NAME            VARCHAR2(81),
 PARTITION_NAME         VARCHAR2(30),
 SEGMENT_TYPE            VARCHAR2(18),
 SEGMENT_SUBTYPE        VARCHAR2(10),
 TABLESPACE_NAME        VARCHAR2(30),
 HEADER_FILE            NUMBER,
 HEADER_BLOCK            NUMBER,
 BYTES                NUMBER,
 BLOCKS             NUMBER,
 EXTENTS            NUMBER,
 INITIAL_EXTENT         NUMBER,
 NEXT_EXTENT            NUMBER,
 MIN_EXTENTS            NUMBER,
 MAX_EXTENTS            NUMBER,
 MAX_SIZE            NUMBER,
 RETENTION            VARCHAR2(7),
 MINRETENTION            NUMBER,
 PCT_INCREASE            NUMBER,
 FREELISTS            NUMBER,
 FREELIST_GROUPS        NUMBER,
 RELATIVE_FNO            NUMBER,
 BUFFER_POOL            VARCHAR2(7),
 FLASH_CACHE            VARCHAR2(7),
 CELL_FLASH_CACHE        VARCHAR2(7)
 )
 partition by hash(header_block)
 partitions 4
 store in (knod1, knod2, knod3, knod4)
 compress for query high
 ;

Direct-Load it so HCC can kick-in:

SQL> insert /*+ APPEND */ into lmc.braga
 2   select * from dba_segments;
415805 rows created.
select sum(bytes)/1024/1024 Megs
 from dba_extents
 where segment_name = 'BRAGA';
MEGS
 ----------
 2.75
-- Collect Stats
 exec dbms_stats.gather_table_stats('LMC','BRAGA');
select partition_name, num_rows
 from user_tab_partitions
 where table_name='BRAGA';
PARTITION_NAME             NUM_ROWS
 ------------------------------ ----------
 SYS_P61985               101624
 SYS_P61986               104043
 SYS_P61987               103247
 SYS_P61988               106891

Nice Distribution! This means we’ve picked the right column to hash partition it.

Now let’s move it to non-Exadata storage:

1st) Backup.
You can do it one by one or backup them all with the same rman command, see my example:

RMAN> backup tablespace knod1;
Starting backup at 13-MAY-11
 using target database control file instead of recovery catalog
 allocated channel: ORA_DISK_1
 channel ORA_DISK_1: SID=693 instance=orcl1 device type=DISK
 channel ORA_DISK_1: starting full datafile backup set
 channel ORA_DISK_1: specifying datafile(s) in backup set
 input datafile file number=01006 name=+DGDATA/orcl/datafile/knod1.1153.750943521
 channel ORA_DISK_1: starting piece 1 at 13-MAY-11
 channel ORA_DISK_1: finished piece 1 at 13-MAY-11
 piece handle=+DGARCH/orcl/backupset/2011_05_13/nnndf0_tag20110512t120530_0.279.750945931 tag=TAG20110512T120530 comment=NONE
 channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
 Finished backup at 13-MAY-11
RMAN> backup tablespace knod2,knod3,knod4;
Starting backup at 13-MAY-11
 using channel ORA_DISK_1
 channel ORA_DISK_1: starting full datafile backup set
 channel ORA_DISK_1: specifying datafile(s) in backup set
 input datafile file number=01007 name=+DGDATA/orcl/datafile/knod2.1154.750943521
 input datafile file number=01008 name=+DGDATA/orcl/datafile/knod3.1155.750943523
 input datafile file number=01009 name=+DGDATA/orcl/datafile/knod4.1156.750943525
 channel ORA_DISK_1: starting piece 1 at 13-MAY-11
 channel ORA_DISK_1: finished piece 1 at 13-MAY-11
 piece handle=+DGARCH/orcl/backupset/2011_05_13/nnndf0_tag20110512t120633_0.278.750945995 tag=TAG20110512T120633 comment=NONE
 channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
 Finished backup at 13-MAY-11

Now restore to “/home/oracle/lmc”:

run {
 sql 'alter tablespace "KNOD1" offline immediate';
 sql 'alter tablespace "KNOD2" offline immediate';
 sql 'alter tablespace "KNOD3" offline immediate';
 sql 'alter tablespace "KNOD4" offline immediate';
 set newname for datafile '+DGDATA/orcl/datafile/knod1.1153.750943521' to '/home/oracle/lmc/knod1.dbf';
 restore tablespace 'KNOD1';
 set newname for datafile '+DGDATA/orcl/datafile/knod2.1154.750943521' to '/home/oracle/lmc/knod2.dbf';
 restore tablespace 'KNOD2';
 set newname for datafile '+DGDATA/orcl/datafile/knod3.1155.750943523' to '/home/oracle/lmc/knod3.dbf';
 restore tablespace 'KNOD3';
 set newname for datafile '+DGDATA/orcl/datafile/knod4.1156.750943525' to '/home/oracle/lmc/knod4.dbf';
 restore tablespace 'KNOD4';
 switch datafile all;
 recover tablespace 'KNOD1';
 recover tablespace 'KNOD2';
 recover tablespace 'KNOD3';
 recover tablespace 'KNOD4';
 sql 'alter tablespace "KNOD1" online';
 sql 'alter tablespace "KNOD2" online';
 sql 'alter tablespace "KNOD3" online';
 sql 'alter tablespace "KNOD4" online';
 }

After a while everything is back to non-Exadata storage:

[oracle@db01 lmc]$ ll
 total 410144
 -rw-r----- 1 oracle oinstall 104890368 May 13 18:12 knod1.dbf
 -rw-r----- 1 oracle oinstall 104890368 May 13 18:13 knod2.dbf
 -rw-r----- 1 oracle oinstall 104890368 May 13 18:13 knod3.dbf
 -rw-r----- 1 oracle oinstall 104890368 May 13 18:13 knod4.dbf
 [oracle@db01 lmc]$ pwd
 /home/oracle/lmc

Let’s try to query the table:

SQL> select count(*)
 2  from lmc.braga;
 from lmc.braga
 *
 ERROR at line 2:
 ORA-64307: hybrid columnar compression is only supported in tablespaces
 residing on Exadata storage

This is fine! Now let’s uncompress it in parallel:

SQL> ALTER SESSION ENABLE PARALLEL DDL;
Session altered.
SQL> alter table braga modify partition SYS_P61985 nocompress;
Table altered.
SQL> alter table braga modify partition SYS_P61986 nocompress;
Table altered.
SQL> alter table braga modify partition SYS_P61987 nocompress;
Table altered.
SQL> alter table braga modify partition SYS_P61988 nocompress;
Table altered.
SQL> select sum(bytes)/1024/1024 Megs
 from dba_extents
 where segment_name = 'BRAGA';  2    3
MEGS
 ----------
 2.75
SQL> select count(*)
 2  from braga;
 from braga
 *
 ERROR at line 2:
 ORA-64307: hybrid columnar compression is only supported in tablespaces
 residing on Exadata storage
Still can't!!!!!!! because we haven't released it yet.
SQL> alter table braga move partition SYS_P61985 parallel;
Table altered.
SQL> alter table braga move partition SYS_P61986 parallel;
Table altered.
SQL> alter table braga move partition SYS_P61987 parallel;
Table altered.
SQL> alter table braga move partition SYS_P61988 parallel;
Table altered.
SQL> select count(*)
 2  from braga;
COUNT(*)
 ----------
 415805
SQL> select sum(bytes)/1024/1024 Megs
 from dba_extents
 where segment_name = 'BRAGA';  2    3
MEGS
 ----------
 69

Wow! Looks like the ratio was 69/2.75=25 or in orageek language:

SQL> select round(69/2.75) Ratio from dual;
RATIO
 ----------
 25

Now that we got kicked off Exaland, we can only use OLTP compression. Let’s do it to all four partitions:

alter table braga modify partition SYS_P61985
 compress for oltp;
 alter table braga modify partition SYS_P61986
 compress for oltp;
 alter table braga modify partition SYS_P61987
 compress for oltp;
 alter table braga modify partition SYS_P61988
 compress for oltp;
 -- Gosh I was dumm not naming the partitions :-( 

Now rebuild them:

alter table braga move partition SYS_P61985;
 alter table braga move partition SYS_P61986;
 alter table braga move partition SYS_P61987;
 alter table braga move partition SYS_P61988;
SQL> select sum(bytes)/1024/1024 Megs
 from dba_extents
 where segment_name = 'BRAGA';  2    3
MEGS
 ----------
 16

Still a good ratio:

SQL> select round(69/16) Ratio from dual;
RATIO
 ----------
 4

Hope this was of some utility.

LMC

Recover HCC Compressed Tables to non Exadata storage

Is this for me? (always helpful for busy people)

As many of you know by now, Exadata comes with an exclusive way to compress information, based on columns, and with a different storage unit called “Compression Unit”, that responds by the name of Hybrid Columnar Compression (HCC). The only storage in the world that can read this compressed information is Exadata Storage Server. So if you have your main production database inside an Exadata box, and you want to duplicate that database to non-Exadata storage (for instance SAN), then this article is for you.

Stuff you need to know first:

- As of this day Golden Gate development teams haven’t been able to capture information from compressed tables (HCC or other Oracle compression algorithm) but they are working on it

- If you use standby database (Data Guard) either in active or on mount mode you need to do these steps first, before you start syncronizing

- HCC is a very good compression technique. I’ve seen hundreds of examples and very few of them don’t have a 10 to 20 average compression ratio. So you need to have 10 to 20 times the space in your non-Exadata storage before you consider using the following steps. The only way to compensate the need for that amount of space is to “explode” the HCC tables to OLTP compressed tables. I’ll show you that too.

The Steps

These steps were done inside an Exadata X2-2 Full Machine on a server pool with 4 nodes, but can be reproduced on any other Exadata V2/X2 Machine.

The following example will:

1. Create a tablespace called “knod”

2. Create a table “lisboa” inside the tablespace, with an HCC compression level of 2 (Query High). The table will be loaded during creation with the view “DBA_EXTENTS” to create some volume (28674 rows).

3. Backup the tablespace “knod” with RMAN to the FRA that resides on the ASM diskgroup called “RECO” (inside Exadata).

4. Restore the tablespace from Exadata to a non-Exadata storage, using RMAN.

5. Query the table and get the ORA-64307 Error.

6. Try to move the table back to a tablespace inside Exadata (called “tbs_with_hcc”) and see that it can’t read it either, throwing the 64307 error again.

7. Try to DML on the table and watch that only the INSERT statement would work, because you can add data, you just can’t read the one that’s there.

8. To put you out of your misery the table will be decompressed (it could be recompressed with OLTP compression too in this stage)

9. And now you can query or DML on top of the table that everything is working normally (the table was decompressed from it’s HCC format).

10. Finally we count the bytes it takes up (3 MB), OLTP compress it and count them again (0.625) to see that the table was 3 times smaller.

Main Conclusion: You don’t have to “explode” your HCC tables and then OLTP compressed them, you can go *directly* from HCC on Exadata to OLTP compression on non-Exadata storage.

The Script

SQL> create tablespace knod datafile '+DATA_DM01' size 1g;

Tablespace created.

SQL> create table lisboa
  2  tablespace knod
  3  compress for query high
  4  as
  5  select * from dba_extents
  6  ;

Table created.

Elapsed: 00:00:12.00
SQL> select count(*) from lisboa;

  COUNT(*)
----------
     28674

RMAN> backup tablespace knod;

Starting backup at 23-MAR-11
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00009 name=+DATA/orcl/datafile/knod.3800.746570399
channel ORA_DISK_1: starting piece 1 at 23-MAR-11
channel ORA_DISK_1: finished piece 1 at 23-MAR-11
piece handle=+RECO/orcl/backupset/2011_03_23/nnndf0_tag20110323t204617_0.366.746570777 tag=TAG20110323T204617 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 23-MAR-11

---

run {
sql 'alter tablespace "KNOD" offline immediate';
set newname for datafile '+DATA/orcl/datafile/knod.3799.746573393' to '/home/lmc/rec/knod.dbf';
restore tablespace 'KNOD';
switch datafile all;
recover tablespace 'KNOD';
sql 'alter tablespace "KNOD" online';
}

---

SQL> desc lisboa
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 OWNER                                              VARCHAR2(30)
 SEGMENT_NAME                                       VARCHAR2(81)
 PARTITION_NAME                                     VARCHAR2(30)
 SEGMENT_TYPE                                       VARCHAR2(18)
 TABLESPACE_NAME                                    VARCHAR2(30)
 EXTENT_ID                                          NUMBER
 FILE_ID                                            NUMBER
 BLOCK_ID                                           NUMBER
 BYTES                                              NUMBER
 BLOCKS                                             NUMBER
 RELATIVE_FNO                                       NUMBER

SQL> select count(*) from lisboa;
select count(*) from lisboa
*
ERROR at line 1:
ORA-64307: hybrid columnar compression is only supported in tablespaces
residing on Exadata storage

SQL> alter table lisboa move tablespace tbs_with_hcc;
alter table lisboa move tablespace tbs_with_hcc
            *
ERROR at line 1:
ORA-64307: hybrid columnar compression is only supported in tablespaces
residing on Exadata storage

SQL> insert into lisboa select * from dba_extents where rownum < 2;

1 row created.

SQL> commit;

SQL> update lisboa
  2  set owner = owner;
update lisboa
       *
ERROR at line 1:
ORA-64307: hybrid columnar compression is only supported in tablespaces
residing on Exadata storage

SQL> delete lisboa where owner = 'KUS';
delete lisboa where owner = 'KUS'
       *
ERROR at line 1:
ORA-64307: hybrid columnar compression is only supported in tablespaces
residing on Exadata storage

------------------- BUT !!!!!!!!!!!!! ----------------------
If you alter table move 'it with NOCOMPRESS things will be different:

SQL> alter table lisboa move nocompress;

Table altered.

SQL> select count(*) from lisboa;

  COUNT(*)
----------
     28675

-- Now I can even do all the DML I can:

SQL> r
  1* update lisboa set owner = 'USK' where owner = 'SYSMAN'

1951 rows updated.

SQL> commit;

Commit complete.

SQL> delete lisboa where owner = 'USK';

1951 rows deleted.

SQL> commit;

Commit complete.

-- ****************************************************************
SQL> select sum(bytes)/1024/1024 from dba_extents where segment_name = 'LISBOA';
SUM(BYTES)/1024/1024
--------------------
                   3

SQL> alter table lisboa move compress for oltp;

Table altered.

SQL>  select sum(bytes)/1024/1024 from dba_extents where segment_name = 'LISBOA';

SUM(BYTES)/1024/1024
--------------------
                .625

-- **************************************************************

Feel free to bash or inquire.

LMC

Book of the Month: “Achieving Extreme Performance with Oracle Exadata” by Robert Stackowiak et all

It has just landed in my hands, the first book written about Exadata ! Finally all the technology I’ve been working in the past 16 months has gone mainstream in terms of knowledge sharing.

Writers Rick Greenwald, Robert Stackowiak, Maqsood Alam and Mans Bhuller with foreword by Juan Loaiza and technical editing by Kevin Closson, Maria Colgan and Tim Shelter.

And impressive concentration of talent ;-)

Ten chapters that will give you a complete vision of what does the Database Machine (DBM) solution is all about. From the Oracle Database options and the actual Exadata Storage Software, passing through the best practices to manage the DBM, until the deployment of either a Data Warehouse or a OLTP system. The book finishes with two very important chapters that address the consolidation design and techniques available, and the best strategies to migrate your database on to the DBM.

This is a must buy book for anyone already working with DBM or that just wants to know more about the magic of this quantum-leap product.

You can buy the book here:

LMC

 

Myth breaker: Patching Exadata

Exadata Storage Software has become a powerfull extension of the Oracle Database, not only leveraging performance but also offloading tasks from the database server, off to the storage server.

The span of this relationship is more visible when you have to patch the cells because of something happening at the database level. And since the Database Machine (DBM) works in grid, you’ll have three layers to patch: exadata cells, grid infrastructure and database. Let’s call them cell, grid and db.

To help you out in this task you have to make a favourite out of MOS Note 888828.1 that tells you exactly what patch Bundle you have to apply in each layer. The good thing is that cells work with a large set of versions at the grid and db level, but these last two have a more dependable patch tracking. Again, reading the referred note you ‘ll find what those combinations are.

So you have to be aware of the several tracks:

Cell Track

Exadata V1 – Has a track on it’s own, although you can install V2 software on it.

Exadata V2/X2-2 -  These two share the same track. The oldest one beeing 11.2.1.x.x and the latest one beeing 11.2.2.x.x. When V2 was released it came out with 11.2.1.2.1, and when X2-2 was release it came out with 11.2.1.3.1.

Grid Track

This one is exclusive of the V2/X2-2 DBMs simply because they came with 11gR2 which created this aggregated layer of software that includes clusterware and ASM software, called Grid Infrastructure. In Exadata V2 onwards development decided that this layer would have a Bundle Patch (BP) on it’s own, and so you’ll have a special BP for Grid. This BP might need that you’ll have a minimum BP at the Database level, hence you have to check out note 888828.1 to see have is the latest combination, and the older ones, where one might be the fit for you.

Database Track

This is the normal db patching, with the advantages of having a Bundle Patch that agregates: one-offs, PSUs and CPUs. All specific to the DBM platform. This is*not* a Patchset! Patchsets are a superset of BPs. So:

Exadata V2/X2-2 has two tracks:

11.2.0.1 (No Patchset) + Bundle Patch (the latest one is BP8)

11.2.0.2 (Patchset 1) + Bundle Patch (the latest one is BP2)

Putting it all together

Storage Nodes: here you can have the Exadata Cell Patch version you want. So there is no need to worry, just try to keep it to the latest since you can do it online.

At the database nodes: Patchset + Grid + Database Tracks have bundle combinations. This is “business-as-usual” patching that can be done in rolling fashion to avoid downtime. Some combinations require a specific version at the cell level so that’s why you should worry about having cells patched to the latest version.

Example

ACME,co bought a Database Machine that came with 11.2.1.2.1 Exadata version at the cells and 11.2.0.1 at the database level without any bundle patching.  Throughout 12 months this company only applied one-off patches for specific bugs but have never applied any Bundle Patch at the grid or db level, neither at the cell level.

This company chooses to have downtime and patch the whole infrastructure, so here’s the plan:

1st – Patch cells from a database node (so you can do them in parallel) to latest cell version. In this case going from 11.2.1.2.1 to 11.2.2.2.0 directly. Although it seems a great leap, it is possible.

2nd – From 11.2.2.2.x onwards the cell patches have a step that needs to be run at the db nodes

3rd – Patch db level to BP6

4th – Patch grid level to BP4

5th – Patch both db+grid to 11.2.0.2 (Patchset 1 – PS1)

6th – Patch db level to PS1-BP2

It seems complex but it works, it patches firmware, OS level, storage level, database level, EVERYTHING is patched in a certified way whereas if you had to do it with several teams and several manufacturers you would take months to plan, huge risk margin, and an enormous manpower effort to cary this on non-working hours. More expensive.

I hate to sound like a broken record, but Exadata is truely a game changer not only at the business and tech level, but also at the operational level.

LMC

Exadata Storage Foundation

Exadata is software. It’s the secret sauce in the Database Machine solution, but actually aside from all the fancy stuff that it does (HCC, Storage Indexes, or Smart Scan), it has to present the physical disks back to the ASM layer, so the party can begin upstairs at the database level.

So how it all happens?

First Exadata picks each physical disk and turns it into an entity called Cell Disk. This entity is a “kind-of” formatting. After you have created your Cell Disk you can chop it into smaller entities called Grid Disks. The Grid Disks themselves are still raw, unformatted slots of space in a bigger physical disk, but a Grid Disk always maps into one and only one physical disk.

The Grid Disks are always created with an ASM intention behind. Just because these areas in each and every physical or cell disk, will map directly into a ASM Disk, and in order to enable redundancy you have to make sure you are using all physical disks from all cells. It doesn’t make any sense create an ASM Disk Group based only on Grid Disks from a single cell. It’s possible to do so, but it’s senseless.

In a quarter-rack, the default configuration from Oracle very own installation services creates by default three ASM Disk Groups: DATA, RECO and SYSTEM. Each of these ASM Disk Groups, have all it’s Grid Disks created across all cell disks from all cells. The last time I’ve explained this to a customer I did two drawing: one having all disks divided into smaller units called grid disks (with the respective default sizes in gigs on the side) and other with the physical disk numbering on a given cell:


Hope to have shed some light over this, and to the storage guys: please stop crying about not having RAID and low-level copies. You don’t need them for database!!

LMC.

Another Exadata bites the Portuguese dust!

The first half-rack Database Machine has just arrived in Portugal, it is setted up and running. Not yet on production though, but it took a record breaking day and a half to hand the system over to the customer cluster ready and with a database ready to trash!

Let’s do the math:

1 – Operating System installation on all four nodes

2 – Setting it up network-wise (including the IB switches)

3 – Setting it up oracle-wise

4 – Disks config on each of the 7 Exadata Storage Servers

5 – Grid Infrastructure installation on all 4 nodes

6 – RDBMS Installation on all 4 nodes

7 – ASM config upon the grid disks

8 – Smart Flash Cache config

9 – RAC enabled database creation on the ASM diskgroups

10 – Testing and Documenting

Now tell me: for how long do you think some consultancy firm would rate this job? A week? No way!! Put a month and only if all the stars and planets aligned ;-)

We did it in a day and a half for a huge portuguese retail costumer when delivering a half-rack Database Machine, with 4 database servers and 7 exadata storage servers inside the box. This is truly revolutionary. Exadata it’s not just for Extreme Performance, it’s a matter of survival for most businesses that shutdown because of some small glitch in the complex array of pieces scatered around their IT infrastructure.

This culture of trying to make it more simple by bundling it it’s not new in some other areas, but in the IT Infrastructure alleys it is! Specially in Database!

How many hours did the DBAs worked all-nighters just to find out the problem was somewhere else in the pile of complexity? By saving precious time to these fellows we are enabling them to fit more work in the same day, bringing together the two sides that generally work apart: business and IT.

But is this all just a sea of roses? No, just because it joins the two most unpredictable machines in the world: computers and people.

DBAs need to know the true meaning of RAC on a many-as-one perspective, and sys-admins need to face the fact that their realm is not beeing invaded but that there is a new kid on the storage block: Exadata technology. Apps developers need to know how to code scalable apps, etc.

The journey has just began, but it’s one that a small country like Portugal has proven to be taken it seriously, because we already have 5 DBMs around here and plan to plant more in the months to come.

LMC.