Use of UTF8 and AL32UTF8 for database character set

I will be implementing Unicode on a 10g database, and am considering using AL32UTF8 as the database character set, as opposed to AL16UTF16 as the national character set, primarily to economize storage requirements for primarily English-based string data.
Is anyone aware of any issues, or tradeoffs, for implementing AL32UTF8 as the database character set, as opposed to using the national character set for storing Unicode data? I am aware of the fact that UTF-8 may require 3 bytes where UTF-16 would only require 2, so my question is more specific to the use of the database character set vs. the national character set, as opposed to differences between the encoding itself. (I realize that I could use UTF8 as the national character set, but don't want to lose the ability to store supplementary characters, which UTF8 does not support, as this Oracle character set supports up to Unicode 3.0 only.)
Thanks in advance for any counsel.

I don't have a lot of experience with SQL Server, but my belief is that a fair number of tools that handle SQL Server NCHAR/ NVARCHAR2 columns do not handle Oracle NCHAR/ NVARCHAR2 columns. I'm not sure if that's because of differences in the provided drivers, because of architectural differences, or because I don't have enough data points on the SQL Server side.
I've not run into any barriers, no. The two most common speedbumps I've seen are
- I generally prefer in Unicode databases to set NLS_LENGTH_SEMANTICS to CHAR so that a VARCHAR2(100) holds 100 characters rather than 100 bytes (the default). You could also declare the fields as VARCHAR2(100 CHAR), but I'm generally lazy.
- Making sure that the client NLS_LANG properly identifies the character set of the data going in to the database (and the character set of the data that the client wants to come out) so that Oracle's character set conversion libraries will work. If this is set incorrectly, all manner of grief can befall you. If your client NLS_LANG matches your database character set, for example, Oracle doesn't do a character set conversion, so if you have an application that is passing in Windows-1252 data, Oracle will store it using the same binary representation. If another application thinks that data is really UTF-8, the character set conversion will fail, causing it to display garbage, and then you get to go through the database to figure out which rows in which tables are affected and do a major cleanup. If you have multiple character sets inadvertently stored in the database (i.e. a few rows of Windows-1252, a few of Shift-JIS, and a few of UTF8), you'll have a gigantic mess to clean up. This is a concern whether you're using CHAR/ VARCHAR2 or NCHAR/ NVARCHAR2, and it's actually slightly harder with the N data types, but it's something to be very aware of.
Justin

Similar Messages

  • CSSCAN for database character set conversion failing with ORA-01578

    Hi ,
    CSSCAN for database character set conversion failing with ORA-01578: ORACLE data block corrupted (file # 84, block # 23930). please help me out in this regard.
    Thanks,
    Sravan.

    Hi Anand,
    Thanks for your update. The segment is a table not an index in my case. And i got this error while running CSSCAN on Apps database for character set conversion to UTF8 from WE8ISO8859P1. Please find the snapshot below for your reference.
    SQL> select segment_name, segment_type, owner from dba_extents where file_id = 84 and 23930 between block_id and block_id + blocks - 1;
    SEGMENT_NAME
    SEGMENT_TYPE OWNER
    EDW_LOOKUP_M
    TABLE POA
    SQL> ANALYZE TABLE POA.EDW_LOOKUP_M VALIDATE STRUCTURE CASCADE;
    ANALYZE TABLE POA.EDW_LOOKUP_M VALIDATE STRUCTURE CASCADE
    ERROR at line 1:
    ORA-01578: ORACLE data block corrupted (file # 84, block # 23930)
    ORA-01110: data file 84: '/d911/oracle/dbcondata/poad01.dbf'
    Thanks,
    Sravan.

  • Database character set

    Hi brother,
    I would like to create new DB which support Simplified Chinese and Traditional Chinese. which character should I choose?
    Thanks

    If you for some reason don't want to use Unicode ie. AL32UTF8, then for database character set (not national character set), see the Recommended list, table A-4:
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/applocaledata.htm#i635016
    If you also include "other" character sets, there are several, beginning with ZH that seem to support Chinese language.

  • Oracle Database Character set and DRM

    Hi,
    I see the below context in the Hyperion EPM Installation document.
    We need to install only Hyperion DRM and not the entire Hyperion product suite, Do we really have to create the database in one of the uft-8 character set?
    Why it is saying that we must create the database this way?
    Any help is appreciated.
    Oracle Database Creation Considerations:
    The database must be created using Unicode Transformation Format UTF-8 encoding
    (character set). Oracle supports the following character sets with UTF-8 encoding:
    l AL32UTF8 (UTF-8 encoding for ASCII platforms)
    l UTF8 (backward-compatible encoding for Oracle)
    l UTFE (UTF-8 encoding for EBCDIC platforms)
    Note: The UTF-8 character set must be applied to the client and to the Oracle database.
    Edited by: 851266 on Apr 11, 2011 12:01 AM

    Srini,
    Thanks for your reply.
    I would assume that the ConvertToClob function would understand the byte order mark for UTF-8 in the blob and not include any parts of it in the clob. The byte order mark for UTF-8 consists of the byte sequence EF BB BF. The last byte BF corresponds to the upside down question mark '¿' in ISO-8859-1. Too me, it seems as if ConvertToClob is not converting correctly.
    Am I missing something?
    BTW, the database version is 10.2.0.3 on Solaris 10 x86_64
    Kind Regards,
    Eyðun
    Edited by: Eyðun E. Jacobsen on Apr 24, 2009 8:26 PM

  • How to alter database character set from AL32UTF8 to EE8MSWIN1250

    Hi folks,
    I'm using an Oracle 10g, XE database, which has a database character set set to AL32UTF8, what causes that some characters like "č ť ř ..." are not displayed.
    To fix this issue, I would like to change it to EE8MSWIN1250 character set as it's set on server.
    Unfortunatelly below steps don;t work for me:
    connect sys as sysdba;
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER SYSTEM ENABLE RESTRICTED SESSION;
    ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
    ALTER SYSTEM SET AQ_TM_PROCESSES=0;
    ALTER DATABASE OPEN;
    ALTER DATABASE NATIONAL CHARACTER SET EE8MSWIN1250;
    ALTER DATABASE CHARACTER SET EE8MSWIN1250;
    SHUTDOWN IMMEDIATE; -- or SHUTDOWN NORMAL;
    STARTUP;Value in regedit: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_XE is set to CZECH_CZECH REPUBLIC.EE8MSWIN1250
    I'm struggling with this issue for hours and unfortunatelly can't make it work. Any advise is more than welcome.
    Thanks,
    Tomas
    I tried to use hints listed here , but always getting some ORA messages.

    Hi Sergiusz,
    Thank you for your reply. You're right, I've probably didn't provide a full details about my issue, but at least now I know, that database encoding(characterset) is correct.
    Here is my issue:
    Within my APEX application I would like to use a JasperReportsIntegration, so to be able to create and run iReports straight from APEX application. Installation, and implementation of JasperReports works fine, I had no issue with it.
    As a second step I've created a simple report using iReport tool, when if preview function is used, all static characters (from report labels) are displayed correctly. Database items are displayed incorectly - some Czech characters are not displayed. Language within report is set to cs_CS, but I've tried also other options. No sucess.
    When I run that report from APEX application (from server) then the same issue - data from database are returned without some czech characters.
    Kind regards,
    Tomas

  • USER_FILTER and database character set

    Hello,
    I'm currently working on the integration of a tool into Oracle Text for filtering PDFs. My current approach is to call a command line tool via a USER_FILTER preference, and this works fine as long as the database character set is AL32UTF8. The tool is creating the filtered text as UTF-8.
    I'm struggling now with the case that the database character set is not Unicode, for example LATIN1. I had hoped that I can specify a chain of filters for this situation when creating the index, first a USER_FILTER to get the text out of the document and then a CHARSET_FILTER to convert the filtered text from UTF-8 into the database character set. This is my attempt to set this up:
    execute ctx_ddl.create_preference ('my_pdf_datastore', 'file_datastore')
    execute ctx_ddl.create_preference ('my_pdf_filter', 'user_filter')
    execute ctx_ddl.set_attribute ('my_pdf_filter', 'command', 'tetfilter.bat')
    execute ctx_ddl.create_preference('my_cs_filter', 'CHARSET_FILTER');
    execute ctx_ddl.set_attribute('my_cs_filter', 'charset', 'UTF8');
    create index tetindex on pdftable (pdffile) indextype is ctxsys.context parameters ('datastore my_pdf_datastore filter my_pdf_filter filter my_cs_filter');
    These are the error messages I'm getting (sorry, German Windows):
    FEHLER in Zeile 1:
    ORA-29855: Fehler bei Ausf³hrung der Routine ODCIINDEXCREATE
    ORA-20000: Oracle Text-Fehler:
    DRG-11004: Doppelter oder unvereinbarer Wert f³r FILTER
    ORA-06512: in "CTXSYS.DRUE", Zeile 160
    The relevant message is DRG-11004, which translates to "duplicate or incompatible value for FILTER".
    ORA-06512: in "CTXSYS.TEXTINDEXMETHODS", Zeile 364
    So here is my question:
    Do I understand it correctly that with the USER_FILTER the text is always expected in the database encoding, and that it is mandatory to create the filtered text in the database character set, or are there any alternatives?
    Thanks
    Stephan

    The previous experiments were performed with Oracle 10i. I just saw that in Oracle 11.1.0.7 there is this new feature: "USER_FILTER is now sensitive to FORMAT and CHARSET columns for better indexing performance.".
    This seems to be exactly what I was looking for.
    Regards
    Stephan

  • Changing database character set from US7ASCII to AL32UTF8

    Our database is running on Oracle database 10.1.0.4.0 (AIX) The following are its parameters:
    SQL> select value from NLS_DATABASE_PARAMETERS where parameter='NLS_CHARACTERSET';
    VALUE
    US7ASCII
    We would like to change the database character set to AL32UTF8. After following Metalink notes: 260192.1 (which helped us resolve "Lossy" and "Truncated" data, the final output of the CSSCAN utility is:
    [Scan Summary]
    All character type data in the data dictionary are convertible to the new character set
    All character type application data are convertible to the new character set
    [Data Dictionary Conversion Summary]
    The data dictionary can be safely migrated using the CSALTER script
    We have no (0) Truncation and Lossy entries on the .txt file. We only have Changeless and Convertible. Now accdg to the documentation, we can do a FULL EXP and FULL IMP. But it did not detail how to do the conversion on the same database. The discussion on the document tells how to do it from one database to another database. But how about on the same database?
    We cannot use CSALTER as stated on the document.
    (Step 6
    Step 12
    12.c) When using Csalter/Alter database to go to AL32UTF8 and there was NO "Truncation" data, only "Convertible" and "Changeless" in the csscan done in point 4:)
    After performing a FULL export of the database, how can we change its character set? What do we need to do the the existing database to change its character set to AL32UTF8 before we import back our dump file into the same database?
    Please help.

    There you are! Thanks! Seems like I am right in my understanding about the Oracle Official Documentation. Thanks!
    Hmmmmm...when you say:
    *"you can do selective export of only convertible tables, truncate the tables, use CSALTER, and re-import."*
    This means that:
    1. After running csscan on database PROD, i will take note of the convertible tables in the .txt output file.
    2. Perform selective EXPORT on PROD (EXP the convertible tables)
    3. Truncate the convertible tables on PROD database
    4. Use CSALTER on PROD database
    5. Re-import the tables into PROD database
    6. Housekeeping.
    Will you tell me if these steps are the correct one? Based on our scenario: This is what i have understood referring to the Official Doc.
    Am i correct?
    I really appreciate your help Sergiusz.

  • OWB 11.1.0.6.0 with database character set AL32UTF8 is not working

    Hi ,
    we are working for a project for Turkey.
    if we insert Turkish characters in database ,in sqldevelpoer we are able to see the correct data. but when i load a file from preprocessor in OWB Process Flow, the characters which are in Turkish got changed to different characters in database. our databse character set is AL32UTF8. could you please throw some light on this please.
    Many thanks,
    kiranmai.

    hi ,
    ya we are using the correct dataset only in preprocessr configuration. actually it was a problem with OWB only ,
    i have changed database character set to WE8ISO8859P9,then i am able to se correct Trukey chars in database. i think it was a SR for oracle .

  • ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

    Hello,
    Yesterday i did a clean install of XE on my Windows 7 64bit laptop. The installation went well. Today when i tried to connect to the database i got ORA-01033 initialization or shutdown in progress.
    So i started sqlplus as sysdba and executed
    SQL> shutdown abort
    ORACLE instance shut down.
    SQL> startup
    ORACLE instance started.
    Total System Global Area 1071333376 bytes
    Fixed Size 1388352 bytes
    Variable Size 620757184 bytes
    Database Buffers 444596224 bytes
    Redo Buffers 4591616 bytes
    Database mounted.
    ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
    The alert log is showing the following output
    Starting ORACLE instance (normal)
    LICENSE_MAX_SESSION = 0
    LICENSE_SESSIONS_WARNING = 0
    Picked latch-free SCN scheme 2
    Using LOG_ARCHIVE_DEST_1 parameter default value as USE_DB_RECOVERY_FILE_DEST
    Autotune of undo retention is turned on.
    IMODE=BR
    ILAT =19
    LICENSE_MAX_USERS = 0
    SYS auditing is disabled
    Starting up:
    Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production.
    Using parameter settings in server-side pfile C:\ORACLE\APP\ORACLE\PRODUCT\11.2.0\SERVER\DATABASE\INITXE.ORA
    System parameters with non-default values:
    sessions = 176
    spfile = "C:\ORACLE\APP\ORACLE\PRODUCT\11.2.0\SERVER\DBS\SPFILEXE.ORA"
    memory_target = 1G
    control_files = "C:\ORACLE\APP\ORACLE\ORADATA\XE\CONTROL.DBF"
    compatible = "11.2.0.0.0"
    db_recovery_file_dest = "C:\oracle\app\oracle\fast_recovery_area"
    db_recovery_file_dest_size= 10G
    undo_management = "AUTO"
    undo_tablespace = "UNDOTBS1"
    remote_login_passwordfile= "EXCLUSIVE"
    dispatchers = "(PROTOCOL=TCP) (SERVICE=XEXDB)"
    shared_servers = 4
    job_queue_processes = 4
    audit_file_dest = "C:\ORACLE\APP\ORACLE\ADMIN\XE\ADUMP"
    db_name = "XE"
    open_cursors = 300
    diagnostic_dest = "C:\ORACLE\APP\ORACLE"
    Wed Sep 07 09:26:50 2011
    PMON started with pid=2, OS id=4936
    Wed Sep 07 09:26:50 2011
    PSP0 started with pid=3, OS id=4756
    OER 7451 in Load Indicator : Error Code = OSD-04500: illegal option specified !
    Wed Sep 07 09:26:51 2011
    VKTM started with pid=4, OS id=5772 at elevated priority
    VKTM running at (10)millisec precision with DBRM quantum (100)ms
    Wed Sep 07 09:26:51 2011
    GEN0 started with pid=5, OS id=5424
    Wed Sep 07 09:26:51 2011
    DIAG started with pid=6, OS id=5928
    Wed Sep 07 09:26:51 2011
    DBRM started with pid=7, OS id=4000
    Wed Sep 07 09:26:51 2011
    DIA0 started with pid=8, OS id=3876
    Wed Sep 07 09:26:51 2011
    MMAN started with pid=9, OS id=6004
    Wed Sep 07 09:26:51 2011
    DBW0 started with pid=10, OS id=5252
    Wed Sep 07 09:26:51 2011
    LGWR started with pid=11, OS id=848
    Wed Sep 07 09:26:51 2011
    CKPT started with pid=12, OS id=2420
    Wed Sep 07 09:26:51 2011
    SMON started with pid=13, OS id=2424
    Wed Sep 07 09:26:51 2011
    RECO started with pid=14, OS id=2396
    Wed Sep 07 09:26:51 2011
    starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
    Wed Sep 07 09:26:51 2011
    MMON started with pid=15, OS id=2388
    starting up 4 shared server(s) ...
    ORACLE_BASE from environment = C:\oracle\app\oracle
    Wed Sep 07 09:26:51 2011
    ALTER DATABASE MOUNT
    Wed Sep 07 09:26:51 2011
    MMNL started with pid=16, OS id=1288
    Successful mount of redo thread 1, with mount id 2642331547
    Database mounted in Exclusive Mode
    Lost write protection disabled
    Completed: ALTER DATABASE MOUNT
    Wed Sep 07 09:26:56 2011
    ALTER DATABASE OPEN
    Errors in file C:\ORACLE\APP\ORACLE\diag\rdbms\xe\xe\trace\xe_ora_2212.trc:
    ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
    ORA-1589 signalled during: ALTER DATABASE OPEN...
    Wed Sep 07 09:41:54 2011
    db_recovery_file_dest_size of 10240 MB is 0.98% used. This is a
    user-specified limit on the amount of space that will be used by this
    database for recovery-related files, and does not reflect the amount of
    space available in the underlying filesystem or ASM diskgroup.
    Can anybody tell me what to do to solve this problem?
    Kind Regards,
    D.

    DennisV wrote:
    Starting ORACLE instance (normal)What do you have in the alert.log above that line?
    OER 7451 in Load Indicator : Error Code = OSD-04500: illegal option specified !This is one of the symptoms reported earlier when running on unsupported platform (x64) and maybe there's some connection with your issue.
    See {thread:id=2278170}.
    Errors in file C:\ORACLE\APP\ORACLE\diag\rdbms\xe\xe\trace\xe_ora_2212.trc:What errors does trace file reveal?

  • Database Character Set Conversion from WE8ISO8859P1 to UTF8

    Hi All
    I want to migrate data from one database to another database But my original database character set is WE8ISO8859P1 but i want to migrate it to
    database which has character set UTF8
    because of character set it don't shows me Marathi data which is in original database .
    it shows me some symbol for Marathi words ..
    please help me out.
    Thanking You
    Gaurav Sontakke

    Dear GauravSontakke,
    Since your database version is unknown, i will show you an online documentation of character set migration for 10gR2.
    http://www.oracle.com/pls/db102/search?remark=quick_search&word=character+set+migration&tab_id=&format=ranked
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/ch11charsetmig.htm#sthref1442
    *http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/ch11charsetmig.htm#NLSPG011*Please read those carefully.
    Hope it Helps,
    Ogan

  • Can I use my tv and roku for my screen

    Can I use my tv and roku for my screen

    Hi diana_tanner:
    # If by TV and roku you mean sending video urls to your roku connected to your TV, then the answer is yes for the current version of Firefox for Android, Firefox for Android 35. Here's how: https://support.mozilla.org/en-US/kb/use-firefox-android-send-videos-your-roku
    # If you mean mirroring a Firefox tab to your TV via roku then the answer is NO until Firefox 36 (which will be released on February 24). You can try this feature on Firefox 36 beta which is available on the play store now. Here's how: https://support.mozilla.org/en-US/kb/view-webpages-on-tv-roku-and-firefox-android

  • Database character set = UTF-8, but mismatch error on XML file upload

    Dear experts,
    I am having problems trying to upload an XML file into an XMLType table. The Database is 9.2.0.5.0, with the character set details:
    SELECT *
    FROM SYS.PROPS$
    WHERE name like '%CHA%';
    Query results:
    NLS_NCHAR_CHARACTERSET          UTF8     NCHAR Character set
    NLS_SAVED_NCHAR_CS          UTF8
    NLS_NUMERIC_CHARACTERS          .,     Numeric characters
    NLS_CHARACTERSET          UTF8     Character set
    NLS_NCHAR_CONV_EXCP          FALSE     NLS conversion exception
    To upload the XML file into the XMLType table, I am using the command:
    insert into XMLTABLE
    values(xmltype(getClobDocument('ServiceRequest.xml','UTF8')));
    However, I get the error:
    ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00200: could not convert from encoding UTF-8 to UCS2
    Error at line 1
    ORA-06512: at "SYS.XMLTYPE", line 0
    ORA-06512: at line 1
    Why does it mention UCS2, as can't see that on the Database character set?
    Many thanks for your help,
    Mark

    USC2 is known as AL16UTF16(LE/BE) by Oracle...
    Try using AL32UTF8 as the character set name
    AFAIK The main difference between Oracle's UTF8 and AL32UTF8 character set is that is the UTF8 character set does not support those UTF-8 characteres that require 4 bytes..
    -Mark

  • Oracle database character set

    Hello all -
    Please help..................
    I will be exporting/importing 6/7 users/schemas/data from one database to the another database on solaris. Users are created.
    I am confused about NLS_LANG variable and database characterset.
    I have the following questions -
    1. What is impact of NLS_LANG variable setting of user session while import/export the data ?
    2. Why do we need to set this NLS_LANG user session variable before export/import ?
    3.If NLS_LANG variable is not set (doesnot have any value) what would happen ?
    4. If I have to set NLS_LANG varible, what should I set it to?
    5. How can I see the characterset of my database?
    6. Where can I get more info about database charaterset and What are the valid values for database characterset and NLS_LANG varibale ?
    Any help would really appreciated...
    Thanks a lot.....
    RAMA

    1. What is impact of NLS_LANG variable setting of user session while import/export the data ?
    On export, the data will be converted from the database character set to the character set specified by NLS_LANG. In import, the database will assume that the data is in the character set specified by NLS_LANG and use that value to perform the conversion to the database character set if the two values to not match.
    2. Why do we need to set this NLS_LANG user session variable before export/import ?
    If your database character set is the same as your OS, you don't necessarily have to set NLS_LANG. For instance, if you have a US7ASCII db, and your OS locale is set to AMERICA_AMERICAN.US7ASCII, there won't be any problems. The only time it's really important to set this is when the db and OS settings don't match.
    3.If NLS_LANG variable is not set (doesnot have any value) what would happen ?
    If your database character set doesn't match your OS, the data could be garbled because the db will incorrectly transcode the data on import/export.
    4. If I have to set NLS_LANG varible, what should I set it to?
    Depends on what your database character set is set to (see below).
    5. How can I see the characterset of my database?
    select * from nls_database_parameters and look for the value set for the NLS_CHARACTERSET parameter. Don't get confused by the NLS_NCHAR_CHARACTERSET, that's for NCHAR datatypes.
    So, for instance, if your NLS_CHARACTERSET value is set to UTF8, you would set NLS_LANG to .UTF8 (the dot is important because that's actually shorthand for territory_language.characterset, or language_territory.characterset, I can never remember which comes first. In any case, use the dot). For example:
    setenv NLS_LANG .UTF8
    6. Where can I get more info about database charaterset and What are the valid values for database characterset and NLS_LANG varibale ?
    It's all in the Oracle documentation.
    hope this helps.
    Tarisa.

  • How to review implication of database character set change on PL/SQL code?

    Hi,
    We are converting WE8ISO8859P1 oracle db characterset to AL32UTF8. Before conversion, i want to check implication on PL/SQL code for byte based SQL functions.
    What all points to consider while checking implications on PL/SQL code?
    I could find 3 methods on google surfing, SUBSTRB, LENGTHB, INSTRB. What do I check if these methods are used in PL/SQL code?
    What do we check if SUBSTR and LENGTH functions are being used in PL/SQl code?
    What all other methods should I check?
    What do I check in PL/SQL if varchar and char type declarations exist in code?
    How do i check implication of database characterset change to AL32UTF8 for byte bases SQL function.
    Thanks in Advance.
    Regards,
    Rashmi

    There is no quick answer.  Generally, the problem with PL/SQL code is that once you migrate from a single-byte character set (like WE8ISO8859P1) to a multibyte character set (like AL32UTF8), you can no longer assume that one character is one byte. Traditionally, column and PL/SQL variable lengths are expressed in bytes. Therefore, the same string of Western European accented letters may no longer fit into a column or variable after migration, as it may now be longer than the old limit (2 bytes per accented letter compared to 1 byte previously). Depending on how you dealt with column lengths during the migration, for example, if you migrated them to character length semantics, and depending on how relevant columns were declared (%TYPE vs explicit size), you may need to adjust maximum lengths of variables to accommodate longer strings.
    The use of SUBSTR, INSTR, and LENGTH and their byte equivalents needs to be reviewed. You need to understand what the functions are used for. If the SUBSTR function is used to truncate a string to a maximum length of a variable, you may need to change it to SUBSTRB, if the variable's length constraint is still declared in bytes.  However, if the variable's maximum length is now expressed in characters, SUBSTR needs to be used.  However, if SUBSTR is used to extract a functional part of a string (e.g. during parsing), possibly based on result from INSTR, then you should use SUBSTR and INSTR independently of the database character set -- characters matter here, not bytes. On the other hand, if SUBSTR is used to extract a field in a SQL*Loader-like fixed-format input file (e.g. read with UTL_FILE), you may need to standardize on SUBSTRB to make sure that fields are extracted correctly based on defined byte boundaries.
    As you see, there is universal recipe on handling these functions. Their use needs to be reviewed and understood and it should be decided if they are fine as-is or if they need to be replaced with other forms.
    Thanks,
    Sergiusz

  • National & Database Character Set

    Dear Friends..
    When creating a new database manually in 10g R2
    in create database command...
    What should be the DATABASE CHARACTER SET and NATIONAL
    if
    *1] For Asia say INDIA*
    *2] For US*
    *3] For Europe*
    Thanks & Regards.

    Database character set is used for the following:
    Data stored in SQL CHAR datatypes (CHAR, VARCHAR2, CLOB, and LONG)
    Identifiers such as table names, column names, and PL/SQL variables
    Entering and storing SQL and PL/SQL source code
    In my view AL32UTF8 character set is recommended by Oracle if it is be used for global data
    What is ur OS by the way???
    Edited by: jazz81 on 03-Jun-2011 14:33

Maybe you are looking for

  • Number of records in a standard table

    Hi, How to find number of records, without fetching them into a internal table? is there any command for that? I want to know the number of records of a standard table in a report. Thanks

  • Steps involved in creating an online SHOPPING BASKET / CART

    I am trying to learn how to create a website for selling products online, and I have no idea where to start with the details of adding a shopping cart to a site etc. All I know (I think) is that SSL Certificates are required for the secure page where

  • Wireless - Laserjet P1102w

    We have a HP Laserjet P1102w and when I reset it, I'm not able to reconfigure wireless. When I print a device config page wireless is enabled, not connected and ip configured by = manual with all zeros. How can I configure the printer to connect the

  • Condition

    Hi SELECT M.DocNum  AS  'AP Inv. #', M.DocDate as 'Date', (SELECT Sum(TaxSum) FROM pch4 inner join pch1 on pch1.docentry=M.docentry inner join oitm on oitm.itemcode = pch1.itemcode where (pch4.statype = 1 and pch4.taxrate = 5.5 and oitm.itmsgrpcod =

  • Business days table

    Hi All, I want to create a business day table that exclude weekends and company holidays. Here is an example what I am trying to achieve: Date BusDays Holidy MTDBusDy 1/1/09,0,Y, 0 1/2/09,0,Y,0 1/3/09,0,NULL,0 1/4/09,0,NULL,0 1/5/09,1,NULL,1 1/6/09,1