Is there a way to tune the Oracle client (InstantClient or the normal one)?
We have a software that runs on multiple DMBS (MySQL, PGSQL and MS SQL Server) I'm wondering why the Oracle version of the product consume more resources than the other ones.
UPDATE: I'm using the C++ API (OCI).
Well depending on the version of oracle and client you can tune your connection to oracle, largely through using the tnsnames.ora and sqlnet.ora. you can change all sorts of things like buffer sizes, etc. This is an example of one: SDU & MTU sizes. As for resources, the DLL from the oracle client is HUGE and will consume more memory/disk space then the other ones. I know the OCI.dll we use is 100+ mb dll. Other then that I would ask you to be more specific as what resources you would like to tune?
Related
I'm actually working in a situation where a .NET stack is managing an Oracle Database. Now, because the legacy code is consistently based on PL SQL stored procedures that deal with the majority of the work, the correct choice of driver to connect to the database is of primary importance.
For this reason, knowing that Oracle provides a large number of driver for the most known programming languages, I was trying to find a documented benchmark (even with all the problem and the influence of the context in which the tests are made) that could compare the different Oracle drivers for the different programming languages, just to support the hypothesis that the best choice in terms of performance for an isolated test microservice would be to use the Java driver in combination with Scala (Java is now property of Oracle now, after all).
Are there any on the internet that could support (or not) this hypothesis?
EDIT
I didn’t provide all the information. What I’m trying to achieve is develop a series of microservices focused on fetching data from the database and convert them into json to be consumed by the front end. .NET driver behaves seamlessly until the numbers become really overwhelming (> 1000 rows).
That’s why I was wondering if it could make any sense using JDBC to increase performance, having heard that, for instance, .NET driver for SQL server, both made by the same Company, performs 5 times better than the oracle one when it comes to gathering data from a cursor.
Your choice of drives may not give you the milage if most of the work is in PL/SQL or stored procedures. Having said that, jdbc is a good choice. However do not fight if developers are more familiar with other drivers like Oracle ODBC, oracle provider for .NET, ADO,etc.. all protocols have a Oracle drive to access Oracle DB.
You don’t have to convert to json. Oracle DB can convert it. Your network latency is more impacted by how big the pipe is ,array size,and packet size than protocols.
I have several large MS Access databases (e.g. 1gb each file), which I want to import to JavaDB Derby database so that whole application can be switched to Java platform. I'm using Windows 7 64 bit/ Netbeans 8.0 (which no more supports JDBC-ODBC). I am using "ucanaccess" to connect to such a large MS access database, now the problem is that the system either takes infinitely long or stops responding, while trying to connet to the MS access database. Is there any other faster and more efficient way to import/ convert such large Access databases (almost 200 databases, 1gb each).
Considering the db size (e.g. 1gb each file) and the number of db, this is definitely out of the scope of ucanaccess. Performance may be dramatically improved (using specific connection parameters), but in this specific case, it doesn't make sense. You should use jackcess directly to get metadata and data.
Am looking for a solution to a problem that I have - I have some applications that connect to Oracle databases and we need to filter out the query results that is returned based on the user role and the row content of the Oracle database. RBAC and Oracle VPD (LBAC) is not an option as this is considered too unwieldy and difficult to maintain, even though LBAC is already implemented.
Am looking at application and database-agnostic solutions such as IBM DataPower and Websphere WTX that are more used in the SOA space as enterprise application brokers. I am aware of the challenge in using these or other solutions at the network layer which involves deconstructing Oracle TNS packets and not being able to package them back. Am wondering if there is a solution to this problem that I have using DataPower or any other similar?
Or are there any alternate solutions to solve this problem?
I saw some presentations about a very promising product "Oracle Instant Client".
Could you tell me what is the status of this product?
Is it really used?
How is the support from Oracle?
It seems to be kind of equivalent to the thin driver for Java. Is it really something as simple as unzip, modify 1 or 2 environment variables and run your client application?
http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html
http://www.dbatoolz.com/t/installing-oracle-instantclient-basic-and-instantclient-sqlplus-on-win32.html
Thanks & regards
Alexandre
Oracle Instant Client is still an Product needed to be installed, it just comes with less features i.e. SQL Plus.
You can add individual components per demand.
The Instant Client is about 60 MB in size, compare to an Full client about 600 MB up to 1 GB depends on features you add there on top.
For simple db connection of an Client App, Instant Client is fully capable to fulfil this. The Idea is / was to add some security, since advanced users could do an connection threat to your DB.
It seems to be kind of equivalent to the thin driver for Java. Is it really something as simple as unzip, modify 1 or 2 environment variables and run your client application?
Pretty much, though it depends what your client application is. And which bits you download. If you install all of the packages then it includes the JDBC drivers (thin and OCI), libraries for OCCI apps, SQL*Plus... well, you can see all that from the downloads list. It's a smaller, simpler version of the full client, and doesn't need to be installed, just unzipped, which makes it easier to distribute too.
If you have the full Server or Client software installed then there's not much benefit in having the instant client as well; unless you need different driver versions, or you want to remove execute permissions from the full Oracle binaries for some reason. But if you have a new box that needs to access a remote DB then it gives you everything you need, simply. (Not quite instantly, but not far off).
It's been around since 10g and is fully supported, but like everything else, only if you have a support contract. It's certinly still supported in the sense that there is a new version to go with Oracle 12c.
In some respects it's very much just for client use though. For example, we develop Pro*C modules that we have to compile with the full version, but then we can happily execute them on a server that only has the instant client, to access a remote DB. That's not an issue for Java though.
i am looking for an Delphi component to connect to an ORACLE database server in an direct way without install the oracle client.
i knew the Oracle Data Access (ODAC) from DevArt. there are any other component with this capability?
ODAC offers two connection modes to
the Oracle server: connection through
the Oracle Call Interface in Client
mode and direct connection over TCP/IP
in Direct mode. ODAC-based database
applications are easy to deploy, do
not require installation of other data
provider layers.
Thanks in advance.
No, there is no other Delphi Win32 libraries allowing to connect to Oracle without the installed Oracle Client. And, IMHO, that is correct, because:
OCI (Oracle Call Interface) is quite complex piece of software. I will say, it is most complex closed sourced DBMS Call Level Interface in the World. And it is changing from version to version. Oracle has official rule - the Oracle Client v X supports Oracle Server v X-1 ... X+1. Because even such company as Oracle, dont want to spend resources to support and test all the protocol nuances across all possible versions. So, I dont think, that DevArt ever will implement 99.9% stable Oracle SQL*Net protocol implementation. And the INet posts proof that ...
AFAIK, the ODAC Net mode does not support some of the Oracle Client important features and has some important limitations. Although it works well for simple data access scenarious.
If you will purchase Oracle support, then it will decline all your support requests, if they will know, that you are not using official client software. That is just Oracle rule.
If you dislike to install and tune the full scale Oracle Client, then you can just use Oracle Instant Client. Which does not require install or setup procedure. And you will be in safety in case of the different data access scenarious and Oracle Server versions.
PS: Although I may be considered as a biased person :)
There is also Allround Automations Direct Oracle Access, it do require Oracle SQL*Net or Net8. but is a brilliant component suite.
The only solution I found is ODAC, and it's working very nice, I have been using it since years without getting any problem with the direct mode.
there's some limitation with the direct mode, but most of users will not get these limitations with their application.