informix vs oracle
Posted in 2005
Hi Gurus ,
After 7 years with informix and 2 years with oracle , these are my own
comments about them. All the comments / corrections are wellcomed:
1. backup / restore
informix : the backup set is a complete object . It does not depend
anything .It can be used as the only object in order to do restore.
oracle : lots of things must be considered. You must know what you
do. 'I just want to backup and restore my db ' is not enough. To do a
complete restore of the db , first it is necessary to copy all the
files to a backup location (including datafiles,control files, undo
and redo log?no be careful if you want to recover the db after copying
files back , you need current logs so backing up redo logs are not
necessary . On the other hand copying entire datafiles before any type
of incomplete recovery is very important . (in order to restore a db ,
copying the files once again huh...) And dont expect the ontape -r
command's lovely message: do you want to backup the current logs? No
such a thing exist....)
If someone who only knows oracle ,doesnt know aynthing about the other
databases , this backup method can be the best one. But if you know
the other databases restore backup methods, oracle method is much more
difficult and complex.
2. Parallel query
oracle : parallel query bypasses the buffer cache. it directly reads
data from the disk into the user process's pga memory . It also does
not check whether a block is cached in memory or not , it reads the
disk every time. So same parallel query executed several times makes
the same amount of disk io .
On the other hand , parallel query architecture is more flexible than
informix. It does not depend on tablespace number / partition . And
parallel dml , parallel optimizer hints are very rich. (last veison of
informix i used is 9.2 so may be informix have some improvments which
i dont know)
3. Nologging operations:
In oracle , it is possible to do certain operations without generating
redo log . These are called unrevorable operations :
create table test nologging as (select * from dual)
insert /*+append */ into a select * from dual
these operations is not logged in redo logs so cant be reovered.
But the drawback of such an operation is , if you have to recover the
db server or datafile by using redo logs , the entire table becomes
useless. Not
only these insert statements are invalid but also the whole table.
4. multi-versioning
oracle has no dirty read concept but instead multi-versioning . So if
session a updates data , session b see the previous version of the
recods .But this can also happen for a long running queries!Although
no updates take place , lots of different versions can be put in
memory especially if your db is a datawarehouse type.
Kind Regards,
hope