• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 26850
  • Last Modified:

how to determine the oracle version and default character encoding?

Is there an easy way for somebody connected to an Oracle instance running on a host somewhere to determine 1) the version of Oracle that it's running under and 2) the default character encoding (UTF8, ISO-8859-1, ASCII7, etc)? I assume the values are stored and selectable in Oracle's housekeeping pseudo-tables, but don't have any idea which one(s).

Specifically... suppose I'm connected to the Oracle instance 'foo.database' running on the host 'foohost.mydomian.net' as the user 'bar' using SQL*Plus.

Suppose further that I need to create a table that contains an XMLType field, and I've learned the hard way that using XMLType fields in databases whose encoding ISN'T UTF-8 is just begging for grief and trouble, and that 9.2 fixes lots of bugs with XMLType that Oracle never fixed in 9.0.

Finally, assume it's 3am on Monday morning with a demo looming at noon, the DBA is sound asleep, and I have access to nearly a dozen running instances of Oracle on nearly a half-dozen hosts, running everything from 8i to 9.2i... most using Windows native character encoding (WEI-*?), a couple using ISO-8859-1, and a few using UTF-8. Before I waste an hour setting up the new tables, stored procedures, sequences, and triggers, I want to make sure I'm actually connected to a UTF8-encoded instance running 9.2. How?
0
jskubick
Asked:
jskubick
  • 3
2 Solutions
 
schwertnerCommented:
1. Version (as user SYS)
select * from v$version;

2 Character set

SQL> connect system/manager@lin1
Connected.
SQL> select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
VALUE
UTF8
SQL> select value from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET';
VALUE
UTF8
SQL>
0
 
seazodiacCommented:
to know the version of oracle:

in the sqlplus window:

SQL> select * from v$version;

to know that characterset encoding of oracle database:

SQL> show parameter NLS

0
 
schwertnerCommented:
Looking at this and at the above entry it is easy to understatand where youa are connenected,

SQL> connect sys/manager@test as sysdba
Connected.
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE    9.2.0.3.0       Production
TNS for 32-bit Windows: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production

SQL>

if you add the following statement it will be easy to know also the name of instance and possibly some parameters of the instance;
SQL> show parameter db_name;

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------
db_name                              string      test
0
 
jskubickAuthor Commented:
OK, "select * from v$version;" worked :-)

Unfortunately, "show parameter NLS" didn't quite do the trick... it just indicated that various parameters are of type "string"... a few of which had values of "AMERICA", "BYTE", or "FALSE" (most had no value).

What I need to know is the database's default encoding... ie, UTF8, WEISOWIN12 (I'm sure I mangled that one... it's the default windows character encoding), ASCII7, etc.
0
 
schwertnerCommented:
You are to fast and do not read what I mentioned:

SQL> select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
VALUE
UTF8
SQL> select value from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET';
VALUE
UTF8
SQL>


This definitelly showa the character set of the DATABASE.
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now