Different between Gnome ODBC vs Microsoft ODBC - database

What is the difference between Gnome ODBC(Gnome-DB) and Microsoft ODBC?

https://developer.gnome.org/libgda/stable/introduction.html has some information on why Gnome Data Access (GDA, otherwise referred to as Gnome-DB) was developed, to try to tackle perceived limitations with ODBC (and JDBC). https://wiki.debian.org/GNOME-DB indicates the Gnome-DB project aims:
to provide a free unified data access architecture to the DebianGnome project
It tries to fulfill the same role as ODBC, to provide a standard API allowing clients to work with multiple databases with minimal changes.
It perceives ODBC as being:
mostly limited to the Microsoft Windows environment (even though the
UnixODBC project exists and links to some drivers), and the API is
quite old and not well integrated into the GNOME ecosystem.
The latest news item from http://www.gnome-db.org/News is currently dated 2015-06-12 for a 5.2.3 maintenance release.
http://www.gnome-db.org/SystemRequirements indicates the software runs on any recent Linux version (as of 2015-01-04) and on Windows, plus other Unix systems.
I can't find information relating to usage levels, but certainly ODBC (whether on Windows or using UnixODBC or iODBC on Linux/elsewhere) seems more popular in my experience, as does JDBC.

Related

Oracle Database Express Edition for Mac

I start my second semester of university on the 6th of July and one of my subjects is Database Concepts.
For the subject, we must install two programs "Oracle SQL Developer" and 'Oracle Database Express Edition". There is a Mac version Oracle SQL Developer but only Windows or Linux for Oracle Database Express Edition. I tried to install the latter with Docker but keep running into issues. Mainly when I start it there are no logs and I always get this error:
"The Oracle Database is not configured. You must run '/etc/init.d/oracle-xe-18c configure' as the root user to configure the database.
The following output is now a tail of the alert.log:
tail: cannot open '/opt/oracle/diag/rdbms///trace/alert*.log' for reading: No such file or directory
tail: no files remaining"
I have followed this tutorial and done exactly what he does but at timestamp 11:47 you can see that he has log messages while I just have the error posted above.
https://www.youtube.com/watch?v=CbopSCwATIg
Hoping someone can help me with this, if I can't fix this then I will have to use my Windows partition which isn't very convenient. If there. is no solution to this can someone please recommend an alternative of Oracle Database Express Edition for Mac that is free?
Many thanks.
To run the Oracle Database in MacOS, you have different choices. The most easy ones are:
Oracle Cloud Free Tier
You can setup your free online Oracle Cloud Free Tier environment and configure your local SQL Developer installation to the Cloud environment. https://www.oracle.com/cloud/free/
For further information about the Cloud Free Tier environment, check the posts https://dgielis.blogspot.com/2019/09/best-and-cheapest-oracle-apex-hosting.html from Dimitri Gielis for detailed instructions on how to do that.
Note that this is the only option if you own an ARM64 (M1/M2) based Mac.
Vagrant/VM
For a local setup, this is the most easy way in my opinion, since I'm not an experienced user of Docker. Oracle has made Virtual Machines available for free, https://github.com/oracle/vagrant-projects
Use the OracleDatabase v18.4.0-XE or v19.3.0 image, if you need the database only.
Use the OracleAPEX (v18.4.0-XE) image, if you intend to use APEX as well.
Docker
If you are known to Docker or want to learn it, you can follow the link in #Bjarte Brandt comment https://github.com/bjarteb/oracle-apex-ords. The setup documentation in that link is quite comprehensive.
Update due to Apple's M1/M2 processor
Since Apple introduced new M1/M2 mac's based on the ARM cpu architecture, the only option left available for the moment is the Oracle Cloud Free Tier. Unfortunately, VirtualBox VM doesn’t support the ARM architecture yet and it doesn’t work with Rosetta..
(13/09/2022) Oracle SQL Developer 22.2.1 is now natively available for MacBook M1/M2 clients. Previous versions would need Rosetta to run. Unfortunately, no signs for VirtualBox supporting ARM yet..
If you own a MAC based on the 'old' Intel processor, you would still have the other two options as well.
I will update this answer when more options for M1/M2 mac's become available.

How to determine which version of "Oracle.DataAccess.dll" to include

While deploying my .NET 3.5 Windows form to different environments we ran with lots of invalid provider issues.
It works on some and doesn't work on others.
Could someone please help me out, how do I determine which version of "Oralce.DataAccess.dll" to use i.e. 9 or 10 or 11 or 9.1.* or 10.1.* or 11.* or 12 etc.
Does it depend on server where I'm installing an application? OR
Does it depend on back end oracle database?
I second the notion of using the 100% managed provider. It eliminates the need to know details I'm about to discuss. The only issue here is I think you might need to upgrade to .net 4.0.
TLDR Version:
Use the 12c 100% managed provider instead.
The short answer is don't mix the provider (Oracle.DataAccess.dll) with a different version of the unmanaged client (at least not backwards).
Consider redesigning to include a service layer that eliminates the need to have the Oracle provider on the client in the first place.
Full version:
First, lets make sure we understand the components of the old unmnaged provider (not the new 12c 100% managed provider). It's made up of two pieces:
the managed .net component - Oracle.DataAccess.dll
the unmanaged (non-.net) client
Simply speaking, Oracle.DataAccess.dll is nearly just a wrapper, translating .net instructions into ORACLE-NET instructions for the unmanaged client.
That said, when you load Oracle.DataAccess there is a order in which it tries to locate the unmanaged client dlls that it needs. From the Oracle Documentation:
The Oracle.DataAccess.dll searches for dependent unmanaged DLLs (such
as Oracle Client) based on the following order:
1.Directory of the application or executable.
2.DllPath setting specified by application config or web.config.
3.DllPath setting specified by machine.config.
4.DllPath setting specified by the Windows Registry.
HKEY_LOCAL_MACHINE\Software\Oracle\ODP.NET\version\DllPath
5.Directories specified by the Windows PATH environment variable.
This comes into play if you have more than one client installed on the machine so this could be part of your issue. If so, the simple thing to do is use the dllPath configuration variable in your config:
<configuration>
<oracle.dataaccess.client>
<add key="DllPath" value="c:\oracle\product\1.1.0-xcopy-dep\BIN"/>
</oracle.dataaccess.client>
</configuration>
Now, to answer your question directly - I don't believe Oracle supports mismatching Oracle.DataAccess.dll with it's client (at least not backwards). Your best bet is either to install ODP.net with your app install - the xcopy version is the smallest and contains the "instant client" Or, you should be thinking about minimum system requirements - ie. The system must have at least version X of odp.net installed. You could then compile against that minimum dll and rely on publisher policy redirection when a target system has a NEWER version of the client.
Of course this also prompts me to ask about architecture. Do you plan on prompting the user for their Oracle account? If not, you have to be careful on how you protect the shared service account your application will use. You may be better off making calls to a webservice that makes the oracle calls on the clients behalf - giving you another security layer and simplifying your client deployment.
Most version of ODP.net are backwards compatible with the database server - you can certainly use the 11g provider with a 10g database.
First of all clarification:
You have an Oracle Database Server (you called it "back end oracle database") and an Oracle Client (no matter if this is installed on an application server, from Oracle point of view, it is the client)
The version of ODP.NET (Oracle Data Provider for .NET, i.e. the Oracle.DataAccess.dll and some more files) are defined by the Oracle Client. You can use almost every ODP.NET version to connect to every Oracle database version - more or less.
The error message "The provider is not compatible with the version of Oracle client" could also mean there is no ODP.NET provider installed at all. In this case the error message is indeed a bit misleading. So, first check if ODP.NET is installed at all, it is not included in standard Oracle Instant Client installation.
When I check all available downloads from Oracle you have ODP.NET version
9.something
10.something
1.x
2.0
4.0
9.? and 10.? refers to version of Oracle, 1.x, 2.0 and 4.0 refers to version of Microsoft .NET Framwork (strange numbering, but that's how it is). Version 9.? and 10.? are very old, I don't think it makes any sense to use them. 1.x was supported until Oracle client version 11.1.
If your Oracle client is 11.2 or higher you are forced to include ODP.NET version 2.0 or 4.0.
If your Oracle client is between 10.2 and 11.1 you can use eiter ODP.NET version 1.x or 2.0
If your Oracle client is older than 10.2, I don't know how it works - it's outdated anyway.
Version 1.x and 2.0 are not compatible to each other, i.e. perhpaps you have to provide two different setup files of your application to your customer and the customer has to select the correct one depending on his local oracle client installation.
I don't know the situation for 2.0 vs. 4.0, I never used 4.0 so far.
It is not required to put a local copy of Oralce.DataAccess.dll into your application directory. It will be taken from GAC (Global Assembly Cache) where it is installed.
In your developing you only have to take care only these mayor version, for example 2.0.
Then your loal GAC knows due to policy files which exact version is loaded, e.g. 2.0.10.2.0.2.20 or 2.0.11.1.0.6.20 or 2.0.11.1.0.7.20 or 2.0.11.2.0.1.2 or whatever.
On top of this all you have to know whether your Oracle client is 32bit or 64bit and include ODP.NET accordingly.
Here you can get more information: Oracle Data Provider for .NET FAQ
if you have client or oracle instance installed in your system. check the folder name
ORACLE_HOME\product\11.2.0\dbhome_1\ODP.NET\bin\2.x
here you will find the file - Oracle.DataAccess.dll
just include in your reference.
In fact I believe there is no right answer.
It all depends on the processor architecture (so bits) the application runs with, the version of OCI client you use, etcetera.
I found it most useful to wrap the Oracle interaction in one class, using Reflection to find the available version to use.
Regarding the version number: the version of the ODP.net assemblies must match those of the OCI client installation. It is a bad idea to mix the 12.* OCI client with the 10.* ODP.net assemblies.
Maybe this article is also useful to you.
If your Oracle server is version 10.2 or higher, you could consider simply using the managed ODP.NET version which came available with Oracle 12.
Apparently it's one dependency, under 10 MB. It should make deploying your application to different systems a lot easier compared to the ODP.NET versions that depends on Oracle (instant) Client. It should also avoid you having to care about any installed Oracle Client.
However, they do mention it works on "the latest version of the .NET Framework 4.5.1", so from what I understand you need to upgrade your application to 4.5.1, but maybe that is only if you want to use the certain features (like the Entity Framework support).
http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
Sometimes you get the Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. whereas you have the right dll and the problem is somewhere else.
It happen to me (and this topic helped me a lot to figure it out) and it was the configuration of my application pool in IIS who wouldn't allow 32 bit applications (advanced settings).

Download Oracle Database 8i

Where can I download old versions of Oracle database, specifically 8.1.7
I need the 8.1.7 client for linux, if it exists.
I know it's ancient, but I am supporting legacy systems.
Oracle don't make them available. In fact, you can't even get 10.2 and 11.1 without a valid (paid-up) licence. See here for details.
Assuming you have a valid support contract, you can log a service request on Metalink and Oracle will provide you with whatever ancient software you need. Oracle doesn't make older versions of software available for public download.

Delphi 2010 Professional and remote database access

When looking for which version of Delphi 2010 to buy, we found the following limitation on the professional one:
Delphi 2010 Professional is designed
for developers building
high-performance desktop GUI and
touch-screen applications with (or
without) embedded and local database
persistence.
What does this really mean? Does this mean that we'll only face this restriction if we choose to use the native vcl components for database access we'll face this restriction.
And what if we choose to use ADO components instead of those? In this case, how can Delphi avoid us to access remote database servers? Did anyone here ever tried this?
Going even further: if we choose to use a database like Firebird, which is just one file, and used a network mapped drive. Could we be facing the same limitation?
Supposing we opt for ADO, what will be the main consequences?
As I understand it, they're referring specifically about dbExpress and doesn't restrict you from using dbGo or some third party library to access remote databases.
Does this mean that we'll only face
this restriction if we choose to use
the native vcl components for database
access we'll face this restriction.
Yes. The professional version simply leaves out some of the driver & driver technology that natively supports certain databases. It still includes ADO support and there are plenty of third-party drivers that you can use to access other databases.
Delphi 2010 does not include any technology to stop you from building applications that interact with remote databases aside from the fact that it does not include DB Express (its own database driver technology).
DataSnap is not included in the Pro version either. I got quite interested at a recent Delphi workshop when they showed off DataSnap only to discover when I got back that it's missing from the Pro version.
So I'm back to sticking with my SDAC components and other third party middleware components. Works perfectly without the expense of the enterprise version.
The SQL Server dbExpress driver isn't included (amongst others) but the ADO/dbGo stuff seems to work just fine over the network. But we haven't used the Delphi supplied DB drivers since Delphi 3 due to them keep changing their mind about the latest silver bullet for DB access (much like MS do/did).

SQL Client for Mac OS X that works with MS SQL Server [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
How can I connect to a remote SQL server using Mac OS X? I don't really need a GUI, but it would be nice to have for the color coding and resultset grid. I'd rather not have to use a VM.
Is there a SQL client for Mac OS X that works with MS SQL Server?
Let's work together on a canonical answer.
Native Apps
SQLPro for MSSQL
Navicat
Valentina Studio
TablePlus
Java-Based
Oracle SQL Developer (free)
SQuirrel SQL (free, open source)
Razor SQL
DB Visualizer
DBeaver (free, open source)
SQL Workbench/J (free, open source)
JetBrains DataGrip
Metabase (free, open source)
Netbeans (free, open source, full development environment)
Electron-Based
Visual Studio Code with mssql extension
Azure Data Studio
SQLectron
(TODO: Add others mentioned below)
The Java-based Oracle SQL Developer has a plugin module that supports SQL Server. I use it regularly on my Mac. It's free, too.
Here's how to install the SQL Server plugin:
Run SQL Developer
go to this menu item: Oracle SQL Developer/Preferences/Database/Third-party JDBC Drivers
Click help.
It will have pointers to the JAR files for MySQL, SQL Server, etc.
The SQL Server JAR file is available at http://sourceforge.net/projects/jtds/files/
This will be the second question in a row I've answered with this, so I think it's worth pointing out that I have no affiliation with this product, but I use it and love it and think it's the right answer to this question too: DbVisualizer.
When this question was asked there were very few tools out there were worth much. I also ended up using Fusion and a Windows client. I have tried just about everything for MAC and Linux and never found anything worthwhile. That included dbvisualizer, squirrel (particularly bad, even though the windows haters in my office swear by it), the oracle SQL developer and a bunch of others.
Nothing compared to DBArtizan on Windows as far as I was concerned and I was prepared to use it with Fusion or VirtualBox. I don't use the MS product because it is only limited to MS SQL.
Bottom line is nothing free is worthwhile, nor were most commercial non windows products
However, now (March 2010) I believe there are two serious contenders and worthwhile versions for the MAC and Linux which have a low cost associated with them. The first one is Aqua Data Studio which costs about $450 per user, which is a barely acceptable, but cheap compared to DBArtizan and others with similar functionality (but MS only). The other is RazorSQL which only costs $69 per user.
Aqua data studio is good, but a resource hog and basically pretty sluggish and has non essential features such as the ER diagram tool, which is pretty bad at that. The Razor is lightning fast and is only a 16meg download and has everything an SQL developer needs including a TSQL editor.
So the big winner is RazorSQL and for $69, well worth it and feature ridden. Believe me, after several years of waiting to find a cheap non windows substitute for DBartizan, I have finally found one and I have been very picky.
My employer produces a simple, proof-of-concept HTML5-based SQL client which can be used against any ODBC data source on the web-browser host machine, through the HTML5 WebDB-to-ODBC Bridge we also produce. These components are free, for Mac, Windows, and more.
Applicable to many of the other answers here -- the Type 1 JDBC-to-ODBC Bridge that most are referring to is the one Sun built in to and bundled with the JVM. JVM/JRE/JDK documentation has always advised against using this built-in except in experimental scenarios, or when no other option exists, because this component was built as a proof-of-concept, and was never intended for production use.
My employer makes an enterprise-grade JDBC-to-ODBC Bridge, available as either a Single-Tier (installs entirely on the client application host) or a Multi-Tier (splits components over the client application host and the ODBC data source host, enabling JDBC client applications in any JVM to use ODBC data sources on Mac, Windows, Linux, etc.). This solution isn't free.
All of the above can be used with the ODBC Drivers for Sybase & Microsoft SQL Server (or other databases) we also produce ...
I thought Sequel Pro for MySQL looked pretty interesting. It's hard to find one tool that works with all those databases (especially SQL Server 2005 . . . most people use SQL Server Management Studio and that's Windows only of course).
Squirrel SQL is a Java based SQL client, that I've had good experience with on Windows and Linux. Since it's Java, it should do the trick.
It's open source. You can run multiple sessions with multiple databases concurrently.
I vote for RazorSQL also. It's very powerful in many respects and practically supports most databases out there. I mostly use it for SQL Server, MySQL and PostgreSQL.
DbVisualizer supports many different databases. There is a free edition that I have used previously. Download from here
I have had good success over the last two years or so using Navicat for MySQL.
The UI could use a little updating, but all of the tools and options they provide make the cost justifiable for me.
I use the Navicat clients for MySQL and PostgreSQL and am happy with them. "good" is obviously subjective... how do you judge your DB clients?
I've been using Oracle SQL Developer since the Microsoft software for SQL Server is not currently available on Mac OS X. It works wonders. I would also recommend RazorSQL or SQLGrinder.
I use AquaFold at work on Windows, but it's based on Java and supports Mac OS X.
I like SQLGrinder.
It's built using Cocoa, so it looks a lot better and feels more like an Mac OS X application than all the Java-based application mentioned here.
It uses JDBC drivers to connect to Microsoft SQL Server 2005, FrontBase, MySQL, OpenBase, Oracle, PostgreSQL, and Sybase.
Free trial or $59.
I've used (DB Solo) and I like it a lot. It's only $99 and comparable to many more expensive tools. It supports Oracle, SQL Server, Sybase, MySQL, PostgreSQL and others.
Not sure about open-source, but I've heard good things about http://www.advenio.com/sqlgrinder/ (not tried it, I prefer to write Python scripts to try things out rather than use GUIs;-).
When this question was asked, Microsoft's Remote Desktop for OS X had been unsupported for years. It wasn't a Universal Binary, and I found it to be somewhat buggy (I recall that the application will just quit after a failed connection instead of allowing you to alter the connection info and try again).
At the time I recommended the Open Source CoRD, a good RDP client for Mac.
Since then Microsoft Remote Desktop Client for Mac 2 was released.
I use Eclipse's Database development plugins - like all Java based SQL editors, it works cross platform with any type 4 (ie pure Java) JDBC driver. It's ok for basic stuff (the main failing is it struggles to give transaction control -- auto-commit=true is always set it seems).
Microsoft have a decent JDBC type 4 driver: http://www.microsoft.com/downloads/details.aspx?FamilyId=6D483869-816A-44CB-9787-A866235EFC7C&displaylang=en this can be used with all Java clients / programs on Win/Mac/Lin/etc.
Those people struggling with Java/JDBC on a Mac are presumably trying to use native drivers instead of JDBC ones -- I haven't used (or practically heard of) the ODBC driver bridge in almost 10 years.
It may not be the best solution if you don't already have it, but FileMaker 11 with the Actual SQL Server ODBC driver (http://www.actualtech.com/product_sqlserver.php) worked nicely for a client of mine today. The ODBC driver is only $29, but FileMaker is $299, which is why you might only consider it if you already have it.
This doesn't specifically answer your question, because I'm not sure in any clients exist in Mac OS X, but I generally just Remote Desktop into the server and work through that. Another option is VMware Fusion (which is much better than Parallels in my opinion) + Windows XP + SQL Server Management Studio.
I've used Eclipse with the Quantum-DB plugins for that purpose since I was already using Eclipse anyway.
Ed: phpMyAdmin is for MySQL, but the asker needs something for Microsoft SQL Server.
Most solutions that I found involve using an ODBC Driver and then whatever client application you use. For example, Gorilla SQL claims to be able to do that, even though the project seems abandoned.
Most good solutions are either using Remote Desktop or VMware/Parallels.
Try CoRD and modify what you want directly from the server.
It's open source.
http://cord.sourceforge.net/
For MySQL, there is Querious and Sequel Pro. The former costs US$25, and the latter is free. You can find a comparison of them here, and a list of some other Mac OS X MySQL clients here.
Steve
Since there currently isn't a MS SQL client for Mac OS X, I would, as Modesty has suggested, use Remote Desktop for the Mac.

Resources