Problem switching to Oracle12c

A forum for discussing DataStage<sup>®</sup> basics. If you're not sure where your question goes, start here.

Moderators: chulett, rschirm, roy

Post Reply
ponzio
Participant
Posts: 165
Joined: Mon Dec 05, 2005 9:13 am
Location: Italy

Problem switching to Oracle12c

Post by ponzio »

Hi.
I'm facing ORA-01722 changing the target DB from Oracle 11 to Oracle 12c.
The Oracle 12c NLS_NUMERIC_CHARACTERS are the same as the Oracle 11.

The job is Seq.File ==> transformer ==> Oracle db

and get the error only with the Oracle 12c (Oracle 11 is the production version).
Datastage Server regional settings are italians and didin't change.

The Oracle Client used is 11.2.0.
I didn't change it because I've read that it's possible to use the Oracle 11 client too ( viewtopic.php?t=153781&highlight=JR51297 ).

Please can someone help me ?
Many thanks,
Andrea
asorrell
Posts: 1707
Joined: Fri Apr 04, 2003 2:00 pm
Location: Colleyville, Texas

Post by asorrell »

Andrea,

We'd like to help, but you didn't actually post what the problem was or the error message. Please post details, the more the better.
Andy Sorrell
Certified DataStage Consultant
IBM Analytics Champion 2009 - 2020
qt_ky
Premium Member
Premium Member
Posts: 2895
Joined: Wed Aug 03, 2011 6:16 am
Location: USA

Post by qt_ky »

If the error is "ORA-01722: invalid number" then double check the data getting loaded into the Oracle numeric columns. Maybe Oracle 12c is more strict?

Have you tried adding a reject link off the Oracle Connector stage (if Server jobs allow reject links)?
Choose a job you love, and you will never have to work a day in your life. - Confucius
ponzio
Participant
Posts: 165
Joined: Mon Dec 05, 2005 9:13 am
Location: Italy

Post by ponzio »

Hi.
The problem is ORA-01722 ;-)
qt_ky wrote:Have you tried adding a reject link off the Oracle Connector stage (if Server jobs allow reject links)?
Of course, the problem is related to double fields containing "." for example 123.45 where "." is the decimal searator.
The fields are mapped as Double in Datastage columns.

The problem is that the Datastege is the same and no configurations were added. The 2 Oracle have the same NLS_* paramenter.

The oly difference I've found after my previuos post is that on Oracle 11 server Windows registry I find the entry
NLS_LANG=ITALIAN_ITALY.WE8MSWIN1252
while on Oracle 12c
NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252


IBM support suggested me to set NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252 as datastage environment variable and it works fine. I've already used this method ...
In my opinion this is a work-around (beter than nothing ;-) ).

I'd like to know how the different registry entry can affect the process!

Andrea
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

Because those two character sets use different decimal marks. The Italian one is expecting a comma rather than a decimal point.
-craig

"You can never have too many knives" -- Logan Nine Fingers
ponzio
Participant
Posts: 165
Joined: Mon Dec 05, 2005 9:13 am
Location: Italy

Post by ponzio »

I know that ;-)
The real problems is:
identical ETL environment, 2 Oracle both with english language BUT with one of them I get the error. Why ?

By know, after further analysis the problem seems to be that Oracle 11 english db was installed on italian windows OS but the Oracle 12c english on english Windows OS.
This cause the different behaviour.

I solved using a best practise :-) that is set up a NLS_LAG variable, so the etl and the database are "forced" to worj with the same language.
The real question is how it workied fine without this env variable....

Andrea
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

ponzio wrote:I know that ;-)
Figured as much but not knowing the "real problem" yet, that was all I had. :wink:
-craig

"You can never have too many knives" -- Logan Nine Fingers
Post Reply