Some Oracle praise?
-
Sander Rossel wrote:
what's so great about Oracle
What, you mean apart from having to pay a percentage of your initial purchase cost every year as a "maintenance fee"? :rolleyes:
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
Oracle has a super fast optimized algorithm for one query in particular:
SELECT MONEY FROM YOUR_BANK_ACCOUNT
:DRead my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
Sander Rossel wrote:
Do people here actually like the Oracle database?
Yes, I learned my first SQL statements on Oracle 7. Great product at the time, compared to alternatives like DBaseIV.
Sander Rossel wrote:
I really just want to know what's so great about Oracle so I can enjoy it too (so far it's been mostly frustration).
You're over 15 years too late to 'enjoy' the Oracle database-server.
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^][](X-Clacks-Overhead: GNU Terry Pratchett)
Eddy Vluggen wrote:
You're over 15 years too late to 'enjoy' the Oracle database-server.
Thought as much :sigh:
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
Do people here actually like the Oracle database? Especially when compared to SQL Server. It seems everything I did so easily in SQL Server seems to be difficult or even impossible in Oracle. So far I like the for loops and the some_table.some_column%type type declarations. I'm not looking for Oracle hate or a religious war. I really just want to know what's so great about Oracle so I can enjoy it too (so far it's been mostly frustration).
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
The best part of Oracle is that I rarely have to use it anymore. I even hate the Gigs of pollution you had to install just to talk damned thing. :mad: So now when I have to talk to it from VS I just add one file to my project (Oracle.ManagedDataAccess.dll) and then have all the access I need. The bare minimum :)
-
As I understand a schema in Oracle is more like a separate database in SQL Server and a schema like in SQL Server doesn't exist in Oracle.
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
Sander Rossel wrote:
Do people here actually like the Oracle database?
Yep
Sander Rossel wrote:
Especially when compared to SQL Server.
Well, both are good and have their place. One benefit with Oracle is to be able to run it on different platforms. On the other hand SQL Server admin tools are more intuitive and so on. I'd say that the differences become meaningful in environments that have special requirements.
Sander Rossel wrote:
It seems everything I did so easily in SQL Server seems to be difficult or even impossible in Oracle.
Any examples?
Mika Wendelius wrote:
One benefit with Oracle is to be able to run it on different platforms.
Yes, that's one I heard and a very plausible one at that! :D Good thing we run it on Windows servers :laugh:
Mika Wendelius wrote:
Any examples?
Table variables, simply declaring some variables and using them (in all manner of ways). For example, I simply wanted to something like the following:
DECLARE @Names TABLE (Name VARCHAR(100))
INSERT INTO @Names
SELECT Name
FROM Person.PersonSELECT @Names
SELECT Column
FROM Table
WHERE Name IN @Names -- Not sure if I need a sub select from the top of my headDECLARE @SomeText VARCHAR(100)
SET @SomeText = "Not doable in Oracle"
SELECT @SomeTextI think the first thing with the table variable just isn't possible. My coworker, who worked with Oracle for about 30 years now, looked at me in disbelief and asked why I wanted to do such a thing anyway :~ The second, declaring a variable, assigning it a value and simply selecting it (FROM DUAL???) is just so awkward. Having multiple result sets in one procedure/session isn't possible. For example, from my software I want to insert an order, its details and do some auditing/logging and check if everything is in the database as expected.
SELECT * FROM SalesOrder
SELECT * FROM SalesOrderDetail
SELECT * FROM AuditLogI have to execute the statements one by one and check the results, no way to do it all at once and get the results next to each other. Please, I beg of you, prove me wrong! It would make my life so much easier :D Maybe I'm in a "SQL Server state of mind" and Oracle just is another paradigm? Like OOP vs. Functional? And I'm simply missing it? :confused:
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
Brent Jenkins wrote:
Oracle is (IMO) more powerful than SQL Server
I've heard that a lot (it's what every Oracle user says), but why though? I've asked people, but never got a satisfying answer. One person even said "SQL Server can't handle big databases that are larger than 30GB." :wtf: I've heard "Oracle has packages[^]", but I fail to see what's so great about that. I have a header for public access and my package body can have some private stuff. First of all, the entire header is duplicated in the body, which really annoys me (and I know other languages have it too). But why would you want private functions in your database anyway? They're only going to be used by your own software and it's not like you get all those private functions in your intellisense! A package, to me, is really only a set of functions and procedures that can be edited by only one person at a time (or the last one who saves overwrites the other's changes). Besides, if you want to "group" stuff in SQL Server just use a schema (I know, not entirely the same). If anything, packages are "nice" at best. Next to that Oracle doesn't support booleans/bits, it only has one numeric type that fits all, it doesn't have table variables like SQL Server has, you can't write ad-hoc scripts with some variables and return them in a table (I haven't found it anyway). And forget about decent tooling too! The company where I currently work even created their own Toad-like tool for working with Oracle because no tool sufficiently did what they wanted (back in the 80's early 90's). I use Oracle SQL Developer, but that's an amateurish play toy compared to even the Express version of SQL Server Management Studio. Good luck with the documentation too, not nearly as comprehensive as SQL Server. And we're talking about one of the most expensive databases out there (if not THE most expensive)! :~ Here comes the best part, Oracle people now tell me I was "spoiled" by SQL Server and its features and tooling and now I fail to see how awesome Oracle is... WHAT THE...!? :wtf: The only plausible thing I've heard so far is that Oracle is faster because it locks at cell level while SQL Server locks at row level and often escalates to locking an entire page (and and I've heard an Oracle user say S
Sander Rossel wrote:
I've heard that a lot (it's what every Oracle user says), but why though?
One thing I find intriguing about Oracle PL/SQL Packages is that you can do row-level operations with loops (i.e. cursors) but still have set-based performance. There's this (well-deserved, imo) attitude in SQL Server land that cursors are the work of the devil (entirely plausible), and any code that uses cursors will murder any semblance of performance (seen it myself). So you go through a lot of mental gymnastics to convert row-level operations with a bunch of if/else conditions into a series of set-based queries. So the code now performs the way it should, but it doesn't really *read* the way it should. That seems to not be the case in Oracle. You can loop with a cursor and do all sorts of imperative coding, but the performance hit is negligible. Disclaimer: I'm not really a fan of Oracle, it's just that our company uses it to death. We're one of those "50% of the business logic is buried somewhere in the database" type companies. Me? I prefer a dumb datastore and keep my business logic in places that can be reused easily.
-
As I understand a schema in Oracle is more like a separate database in SQL Server and a schema like in SQL Server doesn't exist in Oracle.
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
Do people here actually like the Oracle database? Especially when compared to SQL Server. It seems everything I did so easily in SQL Server seems to be difficult or even impossible in Oracle. So far I like the for loops and the some_table.some_column%type type declarations. I'm not looking for Oracle hate or a religious war. I really just want to know what's so great about Oracle so I can enjoy it too (so far it's been mostly frustration).
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
It''s interesting to read the comments in this thread. Having worked for many years on Oracle, but now having changed company to work with SQL server, I have quite different experience. SQL Server is a much less mature product. It really feels like going fifteen years back in time. Programming in T-Sql feels like using prehistoric VB, the code is totally littered with stupid prefixes like @ and #. And it lacks consistency. The worst part is probably lock handling, on Oracle I never needed to think about it, period. No flashback queries. On Oracle you can do a
SELECT AS OF TIMESTAMP
. Even from dropped tables. Always on failover is a really poor substitute for RAC. Half the point with clustering is gone if you can only use one node at a time. Composite indexes are only having statistics on the first column, reducing the efficiency of the optimizer considerably. No pipelined functions, at all. I can keep on going for long. On the other hand, SSIS is just brilliant.Wrong is evil and must be defeated. - Jeff Ello
-
Sander Rossel wrote:
Do people here actually like the Oracle database?
No. We have to support our project for both oracle and sql server, and oracle is a constant source of consternation. Like someone else said, the tools are from the stone age. And don't even get me started on on sub releases of the ODAC managed .net driver and half-assed implementation of their own database encryption with poor documentation on what features actually function.
CPallini wrote:
You cannot argue with agile people so just take the extreme approach and shoot him. :Smile:
I actually have a theory that PL/SQL actually stands for Polish SQL (as in Poland, the country). First, it's like Polish, I don't understand a word of what they say. Second, Polish are to us what Mexicans are to Americans, cheap labor (stealing our jobs)*. Larry just hired some cheap Polish people and let them make a database, hence Oracle and PL/SQL was born :D *Not particularly my opinion, no offence to Polish and Mexicans :D
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
The best part of Oracle is that I rarely have to use it anymore. I even hate the Gigs of pollution you had to install just to talk damned thing. :mad: So now when I have to talk to it from VS I just add one file to my project (Oracle.ManagedDataAccess.dll) and then have all the access I need. The bare minimum :)
RossMW wrote:
The bare minimum :)
Still too much :D
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
RossMW wrote:
The bare minimum :)
Still too much :D
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
I actually have a theory that PL/SQL actually stands for Polish SQL (as in Poland, the country). First, it's like Polish, I don't understand a word of what they say. Second, Polish are to us what Mexicans are to Americans, cheap labor (stealing our jobs)*. Larry just hired some cheap Polish people and let them make a database, hence Oracle and PL/SQL was born :D *Not particularly my opinion, no offence to Polish and Mexicans :D
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
Mika Wendelius wrote:
One benefit with Oracle is to be able to run it on different platforms.
Yes, that's one I heard and a very plausible one at that! :D Good thing we run it on Windows servers :laugh:
Mika Wendelius wrote:
Any examples?
Table variables, simply declaring some variables and using them (in all manner of ways). For example, I simply wanted to something like the following:
DECLARE @Names TABLE (Name VARCHAR(100))
INSERT INTO @Names
SELECT Name
FROM Person.PersonSELECT @Names
SELECT Column
FROM Table
WHERE Name IN @Names -- Not sure if I need a sub select from the top of my headDECLARE @SomeText VARCHAR(100)
SET @SomeText = "Not doable in Oracle"
SELECT @SomeTextI think the first thing with the table variable just isn't possible. My coworker, who worked with Oracle for about 30 years now, looked at me in disbelief and asked why I wanted to do such a thing anyway :~ The second, declaring a variable, assigning it a value and simply selecting it (FROM DUAL???) is just so awkward. Having multiple result sets in one procedure/session isn't possible. For example, from my software I want to insert an order, its details and do some auditing/logging and check if everything is in the database as expected.
SELECT * FROM SalesOrder
SELECT * FROM SalesOrderDetail
SELECT * FROM AuditLogI have to execute the statements one by one and check the results, no way to do it all at once and get the results next to each other. Please, I beg of you, prove me wrong! It would make my life so much easier :D Maybe I'm in a "SQL Server state of mind" and Oracle just is another paradigm? Like OOP vs. Functional? And I'm simply missing it? :confused:
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
Hopefully people don't mind me posting a few technical stuff...
Sander Rossel wrote:
I think the first thing with the table variable just isn't possible.
Why? You can define a type and you can define a table for a type: PL/SQL Tables and User-Defined Records[^]
Sander Rossel wrote:
The second, declaring a variable, assigning it a value and simply selecting it (FROM DUAL???) is just so awkward
Why not use a simple assignment
X:=5;
Sander Rossel wrote:
Having multiple result sets in one procedure/session isn't possible.
Yes it is, and you can use REF cursors: Optimize Result Set Retrieval Using ODP.NET and Ref Cursors[^] If these cause you headache, we can take the discussion outside, for example to Q&A. Lounge is not appropriate for these :)
-
Sander Rossel wrote:
I've heard that a lot (it's what every Oracle user says), but why though?
One thing I find intriguing about Oracle PL/SQL Packages is that you can do row-level operations with loops (i.e. cursors) but still have set-based performance. There's this (well-deserved, imo) attitude in SQL Server land that cursors are the work of the devil (entirely plausible), and any code that uses cursors will murder any semblance of performance (seen it myself). So you go through a lot of mental gymnastics to convert row-level operations with a bunch of if/else conditions into a series of set-based queries. So the code now performs the way it should, but it doesn't really *read* the way it should. That seems to not be the case in Oracle. You can loop with a cursor and do all sorts of imperative coding, but the performance hit is negligible. Disclaimer: I'm not really a fan of Oracle, it's just that our company uses it to death. We're one of those "50% of the business logic is buried somewhere in the database" type companies. Me? I prefer a dumb datastore and keep my business logic in places that can be reused easily.
Vark111 wrote:
One thing I find intriguing about Oracle PL/SQL Packages is that you can do row-level operations with loops (i.e. cursors) but still have set-based performance.
That's really interesting actually. I never use cursors in SQL Server for that reason. I've come across them A LOT in Oracle (although Oracle has a few different cursor types I believe). Then again, databases shouldn't really be doing loops in the first place :D I'm going to check that out and add it to the "cool in Oracle" list though :thumbsup:
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
It''s interesting to read the comments in this thread. Having worked for many years on Oracle, but now having changed company to work with SQL server, I have quite different experience. SQL Server is a much less mature product. It really feels like going fifteen years back in time. Programming in T-Sql feels like using prehistoric VB, the code is totally littered with stupid prefixes like @ and #. And it lacks consistency. The worst part is probably lock handling, on Oracle I never needed to think about it, period. No flashback queries. On Oracle you can do a
SELECT AS OF TIMESTAMP
. Even from dropped tables. Always on failover is a really poor substitute for RAC. Half the point with clustering is gone if you can only use one node at a time. Composite indexes are only having statistics on the first column, reducing the efficiency of the optimizer considerably. No pipelined functions, at all. I can keep on going for long. On the other hand, SSIS is just brilliant.Wrong is evil and must be defeated. - Jeff Ello
Jörgen Andersson wrote:
No pipelined functions, at all.
I've only seen it once so far. As I understand it a pipelined function returns a row to the caller as soon as it's available instead of waiting for the entire result set to be calculated. Sounds really good. Adding it to my "cool in Oracle list"! :D Flashback technology sounds awesome (just Googled it) :omg: Not really something a dev would need though ;)
Jörgen Andersson wrote:
Having worked for many years on Oracle, but now having changed company to work with SQL server, I have quite different experience.
As far as I can see you and @mika-wendelius are the only ones to like/prefer Oracle so far. And you two have one thing in common that the other people on this thread have not: you're actual DBA's rather than developers who need to use a database now and then. So perhaps Oracle has more going on than what it looks like, but that's not very interesting to the average developer? Unfortunately, due to awful tooling from Oracle, the average developer will never see it either.
Jörgen Andersson wrote:
Programming in T-Sql feels like using prehistoric VB, the code is totally littered with stupid prefixes like @ and #. And it lacks consistency.
AT LEAST ORACLE IS CONSISTENT IN ONE THING :D I'm not sure why you'd think T-SQL feels like prehistoric VB though :~
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
Mika Wendelius wrote:
One benefit with Oracle is to be able to run it on different platforms.
Yes, that's one I heard and a very plausible one at that! :D Good thing we run it on Windows servers :laugh:
Mika Wendelius wrote:
Any examples?
Table variables, simply declaring some variables and using them (in all manner of ways). For example, I simply wanted to something like the following:
DECLARE @Names TABLE (Name VARCHAR(100))
INSERT INTO @Names
SELECT Name
FROM Person.PersonSELECT @Names
SELECT Column
FROM Table
WHERE Name IN @Names -- Not sure if I need a sub select from the top of my headDECLARE @SomeText VARCHAR(100)
SET @SomeText = "Not doable in Oracle"
SELECT @SomeTextI think the first thing with the table variable just isn't possible. My coworker, who worked with Oracle for about 30 years now, looked at me in disbelief and asked why I wanted to do such a thing anyway :~ The second, declaring a variable, assigning it a value and simply selecting it (FROM DUAL???) is just so awkward. Having multiple result sets in one procedure/session isn't possible. For example, from my software I want to insert an order, its details and do some auditing/logging and check if everything is in the database as expected.
SELECT * FROM SalesOrder
SELECT * FROM SalesOrderDetail
SELECT * FROM AuditLogI have to execute the statements one by one and check the results, no way to do it all at once and get the results next to each other. Please, I beg of you, prove me wrong! It would make my life so much easier :D Maybe I'm in a "SQL Server state of mind" and Oracle just is another paradigm? Like OOP vs. Functional? And I'm simply missing it? :confused:
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
Yes I believe the state of mind is a powerful thing to overcome. As to your questions, they have already been addressed by Mika. Oracle is undoubtedly a bit quirkier than SQL Server, but it's more consistent in my opinion, it's a little bit like going from VB to C#.
Wrong is evil and must be defeated. - Jeff Ello
-
Don't particularly like South Park, but that's hilarious! :laugh: :laugh: :laugh:
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
Don't particularly like South Park, but that's hilarious! :laugh: :laugh: :laugh:
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
It seemed relevant lol.
CPallini wrote:
You cannot argue with agile people so just take the extreme approach and shoot him. :Smile:
-
Yes I believe the state of mind is a powerful thing to overcome. As to your questions, they have already been addressed by Mika. Oracle is undoubtedly a bit quirkier than SQL Server, but it's more consistent in my opinion, it's a little bit like going from VB to C#.
Wrong is evil and must be defeated. - Jeff Ello
-
Hopefully people don't mind me posting a few technical stuff...
Sander Rossel wrote:
I think the first thing with the table variable just isn't possible.
Why? You can define a type and you can define a table for a type: PL/SQL Tables and User-Defined Records[^]
Sander Rossel wrote:
The second, declaring a variable, assigning it a value and simply selecting it (FROM DUAL???) is just so awkward
Why not use a simple assignment
X:=5;
Sander Rossel wrote:
Having multiple result sets in one procedure/session isn't possible.
Yes it is, and you can use REF cursors: Optimize Result Set Retrieval Using ODP.NET and Ref Cursors[^] If these cause you headache, we can take the discussion outside, for example to Q&A. Lounge is not appropriate for these :)
Mika Wendelius wrote:
If these cause you headache
The headache is actually in doing any of that ad-hoc :laugh: Open up a window in SQL Developer and typing:
DECLARE x NUMBER;
x := 5;
SELECT x FROM DUAL;won't work at all :D
Mika Wendelius wrote:
That's actually a pretty good article, will read it :thumbsup:
Mika Wendelius wrote:
we can take the discussion outside, for example to Q&A
I could create a question so that you specifically could answer it :laugh: I don't have access to Oracle right now though, so I can't post anything at the moment :)
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander