Fuck you, Oracle.

Message Bookmarked
Bookmark Removed
There's got to be a better forum for this somewhere, but I can say Fuck on this one....

Suppose I'm a non-techie type and I want to connect to an Oracle database & be able to edit & insert data just like you can in Access ... (Ie by typing it in a box.) And I don't have time or know how or have the space on my little laptop to install all that fucking Oracle shit that's 600MB and still doesn't fucking work. And say i don't know how to compile and deploy squirrel - because I'm a marketing person, not a fucking programmer. (This is the user talking, now you see.) And all I want to do is connect to an Oracle database using ODBC, but can't without installing all that shit.

So I need a simple, lightweight solution to easily instruct a marketing person on how to make a few database updates over the next two months without writing an application .. (unless someone can show me how to easily write (ie copy) a webform to do it..) .. I'm not a programmer either, but I can hack a little ...

Any ideas?

I know my name is dave, Friday, 2 March 2007 23:05 (eighteen years ago)

You can use Access to connect to Oracle through ODBC. You'll need permission to access the server where the DB resides and you'll need to know the name and location of the server. To add data, you'll need write permission to the DB.

Create a new Access DB.
Select File > Get External Data > Link Tables...
Choose Files of Type: ODBC Databases
Then you'll have to locate the Oracle server under find data source.
Once the connection to the server is established, you can choose the tables you want to see.
These will get added to your table list in Access just like any other table.

Moodles, Friday, 2 March 2007 23:19 (eighteen years ago)

But creating the ODBC connection seems to require that Oracle (10g) be installed locally. I know it used to be much simpler - but I get an error message when creating the connection that Oracle Networking apps need to be installed. Fucking ludicrous.

I know my name is dave, Friday, 2 March 2007 23:20 (eighteen years ago)

There are about 25 ways to skin this cat, varying in degrees of difficulty. If you are good with Access, then I believe you can use either the JDBC client or the Oracle Instant Client to get basic database access.

libcrypt, Friday, 2 March 2007 23:25 (eighteen years ago)

Note that Oracle sells and even gives away a few database-access products. You might want to start by perusing their offerings.

libcrypt, Friday, 2 March 2007 23:27 (eighteen years ago)

I thought from the header that this was going to be either an (a) ex-PeopleSoft or (b) soon-to-be-ex-Hyperion employee.

Jeff Wright, Saturday, 3 March 2007 04:09 (eighteen years ago)

We use a neat little program called Toad to do this at work, but it costs money. It's really sweet, though!

mh, Saturday, 3 March 2007 04:14 (eighteen years ago)

Toad is great, but it's absolutely the wrong solution to the problem.

libcrypt, Saturday, 3 March 2007 04:37 (eighteen years ago)

But creating the ODBC connection seems to require that Oracle (10g) be installed locally

So, you can't set up a DSN (Data Source Name) (under Administrative Tools in Control Panel) using the Microsoft ODBC for Oracle driver?

Jaq, Saturday, 3 March 2007 04:47 (eighteen years ago)

I thought from the header that this was going to be either an (a) ex-PeopleSoft or (b) soon-to-be-ex-Hyperion employee.

I thought it was going to be Neo.

onimo, Saturday, 3 March 2007 10:17 (eighteen years ago)

when I try to set up an ODBC through control panel, I get this message:
" The Oracle client and networking components were not found. These components are supplied by oracle Corporation and are part of the Oracle version 7.3 (or greater) client software installation.

You wil be unable to use this driver until these components have been installed.

Fuck You"

I installed Oracle Instant Client, and it said it was installed successfully, including the ODBC extension, but that hasn't helped me, and it's still maybe too much to ask users to do.

I think I will have them enter data in a spreadsheet and take care of the updates myself. Thanks, Oracle.

..Thanks for the suggestions, y'all... (Still open to more if you have them..)

I know my name is dave, Saturday, 3 March 2007 12:54 (eighteen years ago)

Make sure that you've installed both the basic and ODBC components of Instant Client. The ODBC package alone won't work.

libcrypt, Saturday, 3 March 2007 18:25 (eighteen years ago)

This seems to be a teensy bit more involved than it was when I last installed Instant Client on Windows. Here's what I did to get a happy ODBC box (because of VPN oddities, I can't actually get to an Oracle server to test while I'm in Vancooover):

1. Downloaded both basic and ODBC components of Instant Client.
2. Unzipped these and copied the files to C:\Oracle\Instantclient\10.2. Note that there are no spaces in the name and that all the DLLs, etc, are in this folder, not in another folder contained within.
3. Altered the Windows system variable, PATH, to include C:\Oracle\Instantclient\10.2 at the beginning.
4. Downloaded mfc71.dll and msvcr71.dll from http://www.dll-files.com and placed them in C:\Oracle\Instantclient\10.2.
5. Rebooted.

After that, I got a happy ODBC config window when I opened the ODBC control panel. Kind of a pain, but Oracle has never been terribly interested in user-friendly anything. I mean, that's how they get people to spend the big bux on real licenses with real support, y'know?

libcrypt, Saturday, 3 March 2007 19:14 (eighteen years ago)

Gah! You saved me! Thanks so much! It was the two additional dlls, I think ... Anyway, it's working now - god that was terrible, but I really appreciate your help ....

!!

I know my name is dave, Saturday, 3 March 2007 21:28 (eighteen years ago)

http://chiwowwow.biz/blog/images/Mighty%20Mouse-tm.jpg

Aimless, Saturday, 3 March 2007 21:50 (eighteen years ago)

Glad to have been of help.

libcrypt, Saturday, 3 March 2007 22:01 (eighteen years ago)

By the way, I don't work for Halliburton... I work for a nonprofit that trains people who make the internet available to the public in underserved regions. So you have helped that effort, as opposed to a company that could have paid a consultant to help them sell thongs to children. .. Thought you might like to know that ... :-) Thanks again...

I know my name is dave, Sunday, 4 March 2007 15:56 (eighteen years ago)

I was pretty sure you didn't work for Halliburton, 'cause a Halliburton employee having even a faint spot of trouble with Oracle would have simply pressed the red button on his desk marked ORACLE SUPPORT and a gaggle Oracle techs would have sprung from the ceiling and fixed the problem in 30 seconds while giving the stressed-out employee a massage.

libcrypt, Sunday, 4 March 2007 22:23 (eighteen years ago)

Where did Halliburton come up?

JW, Sunday, 4 March 2007 22:42 (eighteen years ago)

six months pass...

lol. thread title not promising.

i have a query that searches for text that may contain foreign characters, so i need to use unistr like this:

select * from table where text = unistr('word');

now, 'word' is generally something in english like 'bowie' but sometimes it's something in chinese like '\7b2c\4e00\5929' but using unistr seems to stop it from utilising the index on text column and makes it run 500 times slower (33s vs 62ms). is there anything i can do to stop this?

(caveat: i can't change the query without changing the code (which i will also do, just can't yet because it'll need another code release). so changes to database schema / indexes are preferred)

koogs, Tuesday, 11 September 2007 17:34 (eighteen years ago)

What's the charset of the database? If all yr ducks are in a row there, you might try precalculating unistr(column) and indexing it, depending on how it'll be used.

libcrypt, Tuesday, 11 September 2007 19:15 (eighteen years ago)

See also function-based indices:

CREATE INDEX idx ON table (unistr(column))

libcrypt, Tuesday, 11 September 2007 19:24 (eighteen years ago)

yeah, thanks, but i tried that, no dice.

in the above 'text' is the column name, 'word' is the user input and procedural programmers like myself figure that unistr('word') would be calculated once then looked up, via index and, therefore, lightning quick.

this, i guess, is why dba's exist.

database is utf8 iirc. not entirely sure how to find this out.

select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET';

AL32UTF8

select value from nls_database_parameters where parameter = 'NLS_NCHAR_CHARACTERSET';

AL16UTF16

koogs, Wednesday, 12 September 2007 08:31 (eighteen years ago)

Is the text column NCHAR or NVARCHAR? Is \7b2c\4e00\5929 a valid UCS-2 representation? Have you compared EXPLAIN PLANs of good and bad queries?

libcrypt, Wednesday, 12 September 2007 13:13 (eighteen years ago)

FUCK YOU, CEEFAX

*rumpie*, Wednesday, 12 September 2007 14:53 (eighteen years ago)

text is a varchar2 (256 char) column.

\7b2c etc is valid whatever, in that you can insert it and retrieve it and display it and it looks like it should, don't know about ucs-2.

explain plan just shows, as mentioned above, that it stops using the index when unistr() is used and does a full table lookup of millions of rows instead.

have just stumbled onto the fact that changing the '=' to a 'LIKE' means it finds the same results in 1 second rather than 33. which is counterintuitive.

koogs, Thursday, 13 September 2007 12:01 (eighteen years ago)

Unistr converts UCS-2 into the national character set, which is used in columns of type NCHAR, NVARCHAR, and so on. Your national character set is an Oracle variation on UTF16, whereas your database character set is the same, but UTF8. The text column, being VARCHAR, is UTF8, so you'd think that converting a UCS-2 string into UTF16 via unistr() would usually fail.

If it's not failing, then I don't get how unistr() works. In any case, it might be worth doing the conversion differently or changing the NLS in the next version of the software.

libcrypt, Thursday, 13 September 2007 17:45 (eighteen years ago)

it's flying now with the LIKE instead of the =s, although nobody can sensibly explain why it should. have slapped a few missing indices onto it too (hey, don't look at me, i didn't design the thing). today's plan is to test whether replacing a left join to a 90% empty table with a join to the same table fully populated with 0s is going to help (i say no, but that may just be reticence at having to fill the table with 3.6m rows full of nothing useful to improve a search that's now only taking 63ms anyway)

cheers libcrypt. i'm not sure i understood what you said but i appreciate the help. 8)

koogs, Friday, 14 September 2007 08:58 (eighteen years ago)


You must be logged in to post. Please either login here, or if you are not registered, you may register here.