Stories from an Oracle Developer



  • Hi,

    nice to find an Oracle Hater Forum. Some years ago, I was in a company developing an application using Oracle Database and the Oracle Application Server for Oracle Forms, Reports, etc.

    During my work I had some bad experiences with Oracle Products, something I will write down here now, just to give you an example how bad the Oracle Products were.

    Oracle Designer

    When beginning Development with Oracle we were lucky to model the data with an Oracle Product called Oracle Designer. With this you could create ER-Diagrams and transform the database into a database. Really cool feature. So we modelled our database with this tool. Unfortunately the Repository for this tool crashed one day. Ok, that was not nice, but fortunately they had a reverse engineering option included that could read the Oracle database and create the ERD from it. Good to have such an option. So we used the option to recover the Repository, waited 1 minute, 10 minutes, tried again and again, everytime it seemed to crash. One day, when we tried again (at the evening), we went home, let the Tool run during night. And next  day, the tool was still running. It seemed, that the Number of Tables was too much, because reverse engineering of about 10 or 15 Tables worked at a glance, but very slow (about 5-10 minutes). I recently thought Oracle was designed for professionals creating complex Structures, but maybe I dreamt of it? After this experience we downloaded a trial of Power Designer that created the complete model (about 150 tables) in a few seconds and we were glad to find this tool. I've never seen a tool with worse Performance than Oracle Designer.

    Oracle Database 9i

    At the beginning we had all the databases running in Windows, but our customer decided to migrate their servers to some kind of *NIX-System, so we tested migration to *NIX-Platforms. Due to lack of a Solaris-Server, we downloaded the official Linux-Oracle 9i Distribution. In Release Notes Oracle wrote that an installation is only supported on Redhat Server, Suse Enterprise and United Linux. So we downloaded United Linux and tried to install Oracle. As expected the installation was not successfull even though we installed on an officially supported system. Checking the logs, we recognized that the installation missed an important linking step, that we had to do manually with the linker. After that we still had some minor problems (some errors displayed, but they could be ignored). I'm asking, why Oracle supports a platform, where no standard installation was possible without manual linking of data. Not very professional in my point of view.

    Oracle Application Server

    For our (Oracle Forms-)Application we had to install the Oracle 9iAS Application Server. The installation had to be done on the customers Server, so we went to the customer, having the official Oracle 9iAS-Installation CD. The Oracle Application Server provides a lot of Services, but for our Application we just needed 2 or 3 Services from the Server. So when we installed the Application Server, there was an option to disable Services. Nice Option we thought, so we unchecked all the unwanted Services, especially those, that were not needed (e.g. Oracle Portal Server). Everything was OK, but at 99% the Installation hung but still responding. After some minutes, we stopped the installation, had a look at the installation logs, removed the installation, cleaned the registry, and tried again, about 2 or 3 times. Again all these installations failed, hanging at 99%. Very pissed of this, we just installed again in the evening. We thought, that the installation would take a little bit longer and we were only a bit impatiently, so we let the installation run during the night. Guess - next morning the installation - was still at 99%. After removing all Data, cleaning the registry we installed again, but this time we checked all Services, especially the Oracle Portal Service. And this time, the installation went successfully. That was really the worst installation of my whole life. Damn, why Oracle provided the option to skip the installation of different steps, when the installation hangs, when you skip it?

     

    Oracle Reports Server

    For our customer we created an application where a lot of reports should be printed to present it to the Management. The Oracle Application Server provided a Report Engine to generate such Reports. Because the application should be used by roundabout 300 people, we decided to create a cluster of two 8-core Servers using the built-in load-balancer of Oracle Application Server. That worked, till we generated Reports. I don't exactly know the process, how reports were generated internally, but reading Oracle Report Server specification they pointed out, that the report Server is such a nice product, that it runs in a cluster at a glance. Believing in this, we generated reports using the Cluster-URL (that uses the Load-Balancer to use the least loaded Report Server to generate the Report). After generation the Report Server provided an internal ID of the Report that can be used to display the report via Browser. And  the real fuck was, that despite of the fact, that the Report-Servers were clustered in the way Oracle described, every Report Server generated it's own (not unique) Report ID. What the hell? So when calling the URL for displaying the Report in the destination format (PDF, HML, whatever) with the ID the Report Server provided, you had a 50/50 chance getting the correct Report, depending if the Load Balancer transfers your request to the first or the second server. Very stupid. Sending an email to Oracle the only response was some kind of:  Hm, so it does not work - that's a pitty. The disgrace is, that they advertised this feature in the specifications and this feature at the end was absolutely useless.

     

    Oracle Forms 10 and DBMS_SQL

    Some day, we migrated our Forms 9-Application to Oracle Forms 10.We used a lot of DBMS_SQL-Package because when we began writing our application it was the only way to do Dynamic SQL-Statements.

    When we started the compiler, all Forms could not be compiled. Very strange behaviour we thought, so we analyzed the error. First time we checked Metalink if there is something that could help. We recognized a bug entry that describes the problem and that there is a patch for it. But the disgrace was, that this patch, that was really needed to compile Forms containing DBMS_SQL-Calls was not public. Every Oracle-Customer had to open a tar, to get the patch. What a fuck. Unfortunately our company was only a partner, so we could not open tars at all. Thanks Oracle.

     

    Some Database Installations

    I remember, that the Database Creation Wizard of Oracle 10g R2 Database threw some errors, when creating the database, but as I remember these errors, just could be ignored. That looked not very professional at all.

     

    In conclusion, at the moment I'm glad, not to use Oracle Products at the moment, because my experience with Oracle products was not the best.

     

    Sincerely yours,

    Crypti



  • Hi again,

    I remember another story relating PL/SQL in Oracle 10g, when I was involved in a project at a mail order service company. The project was to develop an ERP-System for the company. The application was written in Java using Oracle Database as Backend. Not all processes were created in Java, for performance critical and SQL-intensive functions, PL/SQL-Code was created. You can imagine, that an ERP-System stores a lot of parameters that will be needed for different processes of the system. The days when I worked at the company, they had nearly 32k parameters. All parameters were generated into an PL/SQL-Package just storing the Parameter-Name and the ID, so that you can access it from every PL/SQL-method using it's name. Maybe it's a little bit stupid, but that was not my decision to do this. During the time, when I was working in this company, a lot of parameters were added and guess what - the parameters increased to more than 32000. One day the PL/SQL-Guru in this company was really stressed, because the basic PL/SQL-Package could not be compiled, because it was not complete. If you know a lot of PL/SQL, you know, that a PL/SQL-package can only contain 32k lines of codes, so after creating some parameters in the system, the generated code exceeded these 32k lines of Code. Because the Basic Package, that was referenced by all PL/SQL-Logic was invalid (due to the 32k lines restriction) every other PL/SQL-routine was invalid and not executable. That was a real WTF. Afterwards we had to adjust a lot of logic and the generation process to use more than one package. It's unbelievable, why Oracle kept this stupid restriction all the time.




  • You might not get a lot of responses because there's not to say except vehement agreement, but thanks for posting. Excellent write-up.

    I'm "lucky" in that my only exposure to Oracle is their OracleApps timekeeping system (or whatever it's called), it stinks as a user, I can't imagine how much it stinks as a developer.



  • I am also working with different backends, Oracle being one of them.

    I am not fond of work on database stuff, so I try to stay away as much as possible.

    I think PL/SQL is good language, but not for me. Object style programming methodology that is available readily in java get more complicated when you try to do the same to PL/SQL language. Another big reason is DBA group is always pushing policies left and right. So we never know what is policy current in favour with DBA. Sometime it is ok for function to return resultSet, sometime it is not. Sometime all date should be store as numbers in tables, sometime all dates should store as dates. This is extremely troublesome, so I stop making db development in total.

    Now I am happy with Java



  • @Nagesh said:

    Another big reason is DBA group is always pushing policies left and right. So we never know what is policy current in favour with DBA. Sometime it is ok for function to return resultSet, sometime it is not.

    Usually this is addressable by having stored procedures in the DB perform the data manipulation work and chuck the results back to the calling code. Changes in DB structures can then be handled by changes in the SP, and the calling code may not be aware that any changes have actually occured (provided they both still honour a predefined contract).

    @Nagesh said:

    Sometime all date should be store as numbers in tables

     TRWTF?  Is there a viable reason behind this choice?



  • @Cassidy said:

    @Nagesh said:

    Another big reason is DBA group is always pushing policies left and right. So we never know what is policy current in favour with DBA. Sometime it is ok for function to return resultSet, sometime it is not.

    Usually this is addressable by having stored procedures in the DB perform the data manipulation work and chuck the results back to the calling code. Changes in DB structures can then be handled by changes in the SP, and the calling code may not be aware that any changes have actually occured (provided they both still honour a predefined contract).

    @Nagesh said:

    Sometime all date should be store as numbers in tables

     TRWTF?  Is there a viable reason behind this choice?

    Usual explained by two words "Policy Decision".



  • What's the reason behind that decision? It's a policy decision.

    Right.. that makes perfect sense!



  • @Cassidy said:

    What's the reason behind that decision? It's a policy decision.

    Right.. that makes perfect sense!

    In our trade, there are some magic word. Some example I put here from my experience of thirty nine months in this profesion and counting.

    Technical Debt
    Golden Goose
    Scope Crip.
    Feture intoxicated.
    Policy Decision.
    Capacity

    If you know any more, please put here with some explaining about it.


  • ♿ (Parody)

    @Nagesh said:


    In our trade, there are some magic word. Some example I put here from my experience of thirty nine months in this profesion and counting.

    Scope Crip.

    Just make sure you keep them away from the Scope Bloods and you'll probably be fine.



  • @Nagesh said:

    Feture intoxicated.

    Drinking whilst pregnant is not advised.

    @Nagesh said:

    Capacity

    That's quite enough, thank you.



  • @boomzilla said:

    @Nagesh said:


    In our trade, there are some magic word. Some example I put here from my experience of thirty nine months in this profesion and counting.

    Scope Crip.

    Just make sure you keep them away from the Scope Bloods and you'll probably be fine.

    Actual speling of the word is creep, but creep meaning is confusing for this reason

    Noun:

    A detestable person.


  • ♿ (Parody)

    @Nagesh said:

    @boomzilla said:
    @Nagesh said:


    In our trade, there are some magic word. Some example I put here from my experience of thirty nine months in this profesion and counting.

    Scope Crip.

    Just make sure you keep them away from the Scope Bloods and you'll probably be fine.

    Actual speling of the word is creep, but creep meaning is confusing for this reason

    Now you're clearly just trying to provoke them. Good luck with that.



  • @Nagesh said:

    creep
     

    Creeps are creepy because they creep.

    Creeping is a slow movement.

    Spiders are creepy. Wormtongue from LOTR was a total creepy creepmeister.

    Consider the ethymology of the Dutch kruipen, which means 'to crawl'.

     



  • @Nagesh said:

    but creep meaning is confusing for this reason

    Noun: A detestable person.

    That's me. I'm a creep. I'm a weirdo. 

    ... what the hell am I doing here? I don't belong here!

     


Log in to reply