OWB: Problem integrating external database with JDBC - oracle

we're currently building a data warehouse using OWB (Oracle Warehouse Builder).
One of the DCS (data capturing systems) is a proprietary database (PI by Osisoft Inc); we want to integrate it using JDBC.
The repository is located on a Linux system (RHEL 5.3, Oracle 11.2.0.2, OWB 11.2.0.2),
I'm connecting from a Windows XP system (OWB 11.2.0.2).
According to the OWB documentation, I should copy the JDBC jar file to
$OWB_HOME/owb/lib/ext, add a new platform (using OMB+) and then add a new location.
I've tried this with SQLite, and everything seems ok, but with PI, "Test connection" in OWB doesn't give me any feedback, and when I try to get the list of tables/views from the source system, it hangs.
Some questions regarding this:
is the JDBC jar file required on the "Server" side (RHEL 5.3) or "Client" side (Windows XP) (sorry if I'm using the wrong terminology, I'm still getting started with OWB)?
the JDBC driver requires a .dll (Win) / .so (Linux); is this possible with OWB? Or does OWB accept only "pure" JDBC drivers?
is there any possibility to debug the JDBC access (some kind of log file, perhaps)?
I'd be thankful for any hints on solving this.
Kind regards
Frank

Since we couldn't get this to work, we changed our approach:
OWB calls a user defined activity A1
A1 executes a shell script S1 on the Linux server
S1 calls a small java program J1 (with the classpath settings etc.)
J1 connects to the proprietary database using JDBC, fetches the data and writes it to a .csv file
OWB then loads this .csv file using an external table
Kind regards
Frank

Related

Tableau driver-resolver definition for JDBC Drivers in a custom connector

I'm trying to figure out how to get Tableau to recognize my JDBC Driver when creating a custom JDBC connector using the Tableau Connector SDK . Currently when Tableau loads my custom connector I can tell the driver is not found because there is a link that shows up in the Connector that says:
"Download and install the drivers, and then connect."
Tableau online does not have the drivers for the SAS data I want to connect to: so I cannot download the drivers to install from Tableau
Luckily I already have the .jar files and have placed them at C:\Program Files\Tableau\Drivers on Windows
In the Connector API Reference "driver-resolver" states that: "This is mainly used for ODBC connections but can be used for JDBC as well" but I do not see specific instructions for working with JDBC drivers explicitly. Except for the Postgres JDBC Example which DOES NOT use a driver-resolver. I also have not seen a JDBC example in the Resolvers github samples
In the Tableau logs I can see that the .jar files containing my driver are recognized by searching for their names, they are shown in the logs.
Logs Environment Section Excerpt:
"environment","v":{...all my jar files listed here}
Drivers not being recognized screenshot that says to download the drivers
Finally, here is what my .tdr file looks like with my current driver-resolver definition that does not work
<tdr class='sas_jdbc'>
<connection-resolver>
<connection-builder>
<script file="connectionBuilder.js" />
</connection-builder>
<connection-properties>
<script file="connectionProperties.js" />
</connection-properties>
</connection-resolver>
<driver-resolver>
<driver-match>
<driver-name type='exact'>com.sas.rio.MVADriver</driver-name>
</driver-match>
</driver-resolver>
</tdr>
Can anyone shed some light on this for me? I feel like I'm close. An example using a JDBC driver-resolver in a .tdr file would be nice.
You don't actually need a .tdr file with JDBC, as all the driver resolution happens in the connectionBuilder.js file today. The URL of the connection there includes the driver name. I added a story to our backlog to make this more clear. I should also mention, that hopefully you are using 2019.4 or higher for the best experience. Thanks for using the SDK!
The answer to this is that driver-resolver is not used in JDBC custom connector definitions. The problem I'm experiencing with getting the SAS JDBC Driver to work is because the SAS JDBC Driver is JDBC Type 2.0. JDBC Drivers need to be Type 4.0 to work with a Tableau custom connector using the Tableau Connector SDK.
The resolution is to use a Type 4.0 JDBC Driver which I have not seen from SAS yet.

Oracle application - migration to Exadata server

We have an upcoming migration of our Oracle database to an Exadata server. I want to clarify some issues I have thought of:
Will there be any issues with the code - performance issues? Exadata has another type of optimizer, it doesn’t uses indexes, has a columnar optimizer, if I’m not misleading,
Currently there are some import or export files generated on the database server (accessed via Filezilla). I understand that at Exadata the database server is inaccessible, and I suspect that either:
• we will have to move those files to another server - Oracle knows only FTP (which has ports closed at our client) -> how do we write / read from another server? (as far as I understand, they would like to put all the files on the WAS server)
• or we will need to import the files into the table using the java application and process them from there (and the same with the exported files).
Files that come automatically from other applications can be written to the database server? Or we have the same problems as for the manual part.
We have plenty of database jobs that run KSH scripts on the database server - is there a problem with them? I understand they should also be moved to the WAS server, but I do not know how Oracle will call them from there.
Will there be any problems with Jenkins deployments? Anything changed? Here we save the SQL/PLSQL sources in some XML files, from which the whole application is restored (packages, configuration tables, nomenclatures ...) (with the exception of the working data) (the XML files are read through a procedure from an oracle directory).
If you can think of any other issues concerning this migration, any problems you have encountered during or after the migration to Exadata, please share!
Thank you,
Step by step:
On exadata you are going to have the same optimizer behaviour with some improvements because the exadata may improve full table scan performance thanks to smart full scans. Indeed the exadata is able to avoid retrieving data blocks in fts because it knows in advance they do not contain neeeded data.
In the exadata you can export to external servers DBFS file systems, that might be useful for external tables, imports/exports and so on.
You can write your files on the DBFS you can configure.
You could use your DBFS, if you want the ksh files are accessed from outside your exadata.
Let your oracle directory point to a directory in the DBFS file system where you put your xml files and you are done.

how to use derby db data with Lazarus

I have a java program using a derby db in Eclipse. I want to use this derby db data with a new program I am about to create with the Lazarus ide. Can I connect direct to the derby db, if so how. Or do I need to export the derby db in some way to use with the Lazarus ide, if so how would I do this?
if you decide with export variant, then .csv (comma separated value) is probably the best inter database.
I have some experience with tdbf.
But from what I've read sqlite will be the best option.
I'm sorry for posting this as answer i have only 42 points reputation and can't post it as comment (need 50 for it)
Does derby support ODBC? Lazarus has a ODBC connection that can be used to connect databases that are not directly supported.
I searched quickly, but mostly saw references to older commercial Derby ODBC drivers. And it will probably depend on OS.

Connecting to an Apache Derby/JavaDB database using Oracle SQL Developer [duplicate]

This question already has answers here:
How to use SQLDeveloper to connect to embedded Derby database
(4 answers)
Closed 5 years ago.
I've been trying to connect to an Apache Derby/JavaDB embedded database using Oracle SQL Developer but without much success.
I've tried to create a new connection using the following JDBC URL:
jdbc:derby:/path/to/file/database.derby;create=true
which resulted in an error:
Status : Failure -Test failed: Invalid connection info specified. Verify the URL format for the specified driver.
Previously I've added derby.jar through Tools > Preferences > Database > Third Party JDBC Drivers.
Given that JavaDB is now a supported Oracle product I'm not understanding why is not better integrated with its development tools.
Any guidance will be much appreciated. Thanks in advance.
Your derby url seems wrong. You need to point the url to the directory of the database, not the database itself.
jdbc:derby:/path/to/file/;create=true
Have a look at the examples.
jdbc:derby:/reference/phrases/french
Open a connection to the database /reference/phrases/french.
On a UNIX system, this would be the path of the directory. On a
Windows system, the path would be C:\reference\phrases\french if the
current drive were C. If a jar file storing databases were in the
user's classpath, this could also be a path within the jar file.
From the docs:
The connection URL syntax is as follows:
jdbc:derby:[subsubprotocol:][databaseName][;attribute=value]
Subsubprotocol, which is not typically specified, determines how Derby
looks for a database: in a directory, in memory, in a class path, or
in a jar file. Subsubprotocol is one of the following:
directory: The default. Specify this explicitly only to distinguish a database that might be ambiguous with one on the class
path.
try connecting to the Derby DB using the Eclipse Java EE IDE for Web Developers instead of Oracle SQL Developer. In the latest versions it is has the full integrations.

Importing Data from a Microsoft Access File on a Mac

I have an MS-Access mdb file that I need to import data from into my mysql instance. I am on a mac, is there any free/OSS tools that allow me to do that? If not, is there a free/OSS JDBC driver that I can use to extract the data I need?
Thanks.
Have a look at Jackcess. Note that this doesn't support Access 97 databases, however, only 2000+.
For Access 97, the only thing I'm aware of is mdbtools, but that's a C library, so you'll have to write some JNI glue code if you want to use it from Java; also, it's not maintained anymore, to the best of my knowledge.
UCanAccess is a pure-Java JDBC driver that can read from and write to Access 2000 and newer databases. (Access 97 files are supported read-only.) It will work on any machine that runs Java.
For more details see
Manipulating an Access database from Java without ODBC
Is your Access MDB on mac?
Does the mac Access have the option of using linked tables?
If so, you can create a Linked Table from Access MDB to mySQL. Then, you could treat mysql tables as if it were part of MS-Access.
EDIT: See if this helps.
You could export the MDB file using something like this. This won't help you if you need to do it from within your app, but if you are ok exporting the data then using it, then this should help.
I do the following way to convert;
Download ACCDB MDB Explorer
http://accdb-mdb-explorer.en.softonic.com/mac
Open the MDB file
Export as SQL
Import in MySQL using MySQL Workbench.
Hope it helps..

Resources