I’m just reviewing Oracle NoSQL database. This database is part of BigData and Oracle has an interesting view about the coexistence of NoSQL, Hadoop, Traditional SQL.
Check out this image:

Oracle view is really impressive and may become a real challenge.
Oracle claims to have a BASE compliant database but this seems not true. Reading documentation you can discover that sometimes eventual consistency model is not obeyed.
I’m also impressed from this technical aspect: ACID compliant transactions. Is this the first NoSQL database ACID compliant? Is Oracle able to deal against a paradigm? Is it able to change the theory? Of course not.
Support for atomic transactions is not provided in fact and this is in contrast with A of ACID.
Ending, I can suggest the interesting overview offered by Daniel Abadi, available here. Furthermore you may also check this cool link too.
I’m dealing with the upgrade to Enterprise Manager 12c (the cloud version….we really need the cloud version?).
Agent deploy is totally managed by enterprise manager console where, after the installation of patch #13503844 for bug #10044087, you will find the Upgrade Console under deployments tab.
A long job will:
- Copy agent
- Copy dependent plugins
- Deploy agent
- Configure agent
I have discovered a bug (Oracle support said it’s internal bug 12911215 … obviously not published) where if agent installation is done without sudo or powerbroker may fail.
The behaviour is that during job phase unzipAndDeploySoftware the command agentDeploy.sh fails signaling a mismatch between installation user and the owner of agent12g directory. This is a false alarm and the only workaround is to trick the agent installation making it to use the argument -ignoreDirPrereq.
To do it you have to connect to the enterprise manager database and issue the statement:
update PRE_UPGC_MASTER_INFO set PROPERTY_VALUE='-ignoreDirPrereq' where PROPERTY_NAME='deploy_param';
commit;
I agree this title is misleading but problem is clear: today Oracle does not provide any product can compete with new cloud computing needs and with the NoSQL movement. It is not possibile to think that actually the RAC technology of oracle can be used in a cloud environment and also a cloud service cannot be deployed over an Exadata.
The acquisition of MySQL wasn’t of course the interest of Oracle in MySQL, but today MySQL might be used in a cloud environment with some tricks. Might as MySQL is not in fact a NoSQL database but can be adapted for this role. Oracle provide a plugin to integrate MySQL with Memcached that is widely used in NoSQL environment to solve the problem of data partitioning but IMHO is not enough.
A NoSQL database is not an old relational database (somebody might also complain about the real ACID compliance of MySQL) converted or readapted to support BASE properties instead ACID. The entire pattern is completely different.
Of course Oracle from its point of view try to say the NoSQL is really not needed as presented in this webcast. Moreover the famous Tom Kyte in his own blog Ask Tom answered to the topic NOSQL vs. RDBMS databases
However I can argue that the problem must be taken at a lower level. The CAP Theorem shows clearly that a standard RDBMS cannot be used in a real distributed environemnt; so there is no possibility to adapt an RDBMS for this purpose. However, with respect of CAP theorem, the missing of real consistency is a barrier for many applications…try to apply the statement eventually consistent to a deposit in your bank!
Few months ago I wrote a question on oracle-l regarding generation of test data. Stephane Faroult answered me suggesting to take a look to the fourth chaper of his own book Refactoring SQL Applications.
Having test data is really important because many times you cannot work with masked data or you do not have any data at all.
In my case I had to generate a table, huge table, of employees or citizens. The solution was to find and download lists of firstnames and surnames with rank and distribution; also I needed a list of top1000 cities in the United States. Google is always an interesting source, but the best site is, for US of course, the Census Bureau website.
Stephane Faroult suggested a method to calculate the frequency based on rank and then to create a table with correct percentage of names. The book contains a set of scripts can be used and adapted for any needs.
Today I’ve been looking how to load some performance metrics from Oracle database to Cacti. Cacti has an interesting collection of monitoring scripts available for Oracle uses Oracle SNMP agent. The SNMP subagent is part of Oracle Enterprise Manager agent acts as a proxy between SNMP and database queries. This kind of feature, according to metalink (formerly My Oracle Support, aka MOS) will be deprecated in future releases starting from enterprise manager 11gR2.
ANNOUNCEMENT: The Management Agent’s SNMP SubAgent is Being Planned for Deprecation in Future Release of Grid Control [ID 1057526.1]
This is really bad and probably Oracle already knows that many monitoring systems and infrastructures are based on this component. To prove this, at the end of announcement, Oracle is seeking feedback through Oracle communities website where many people has already expressed their disappointment about this news.
In fact what about your third parties monitoring system? I like Enterprise Manager for many feature but I also hate it for many others. Capability of creating and maintaining graphs is really poor, CACTI, that’s based on RRD, does it better for example. Also the real monitoring system seems good but if you drill down al features you can understand that is not so good, and sometimes its cost is not justified by its own features.
Just to let you know that I’ll in Zurich for Trivadis Performance Days 2011. Hope it’ll be a day to meet other oracle professionals. If you plan to come in Zurich let me know so we can organize a dinner and/or a beer togheter!
This concept is almost unknown by people. Googling for Oracle Transaction Isolation Level the first post is a PowerPoint file from the University of Indiana about Oracle Locking mechanisms that is not strictly related and sometime confused with transaction isolation level.
Transaction Isolation Level is a property of ACID model called Isolation and is described here on wikipedia.
Oracle talks about its own isolation level in the Concepts Book, chapter 13. Probably with Oracle you’ve never heard anything about this because:
- You’ve not read carefully the Concepts book
- You don’t know all about ACID model
- You don’t know anything that is not Oracle and it’s normal workig way
- Most developers don’t use Isolation Level (probably because they don’t know it)
It’s important to understand that oracle use the read consistency isolation level and in particular Oracle use if at statement level. Thus you are sure that data for every query comes from a single point. This does not eliminate the possibilty to change isolation level for a particular transaction.
Locking mechanism is important but is not strictly related to isolation level. Locking mechanism prevent destructive interaction between transactions accessing the same resource. Particular attention have to be used when you force isolation level to serialize because the way of locking and possibile locks
A collegue of mine suggested me that using _disable_logging=true performs a very fast import during database migration with export/import technique. I’ve already heard in past this parameter but it’s not interested me till now. I can easily understand that database operations in NOLOGGING are faster that LOGGING operations. Even if you’re in NOLOGGING and NOARCHIVELOG mode oracle generate a minimum redo that in fact requires I/O and CPU time.
It seems that using _disable_logging you’re able to not write redologs. Simply redos generated into log buffer are discarded and not written to disk. Of course this is a really dangerous operation! You’ll never be able to recover your database and you may experience unrecoverable blocks corruption.
Metalink note 391301.1 says that blocks corrution can occur on any platform, and this is clear.
Is really safe to gain a faster operation loosing completely the data integrity of your database? I’m not sure of it and probably I don’t agree with you.