About UTF8 ,Unicode, NVARCHAR2

Hi,
I have a UTF8 database, converted all the data types to NVARCHAR2 AND NCHAR so I could store the Unicode characters. I have changed the program that reads the file using utilfile from fopen,get_line to fopen_nchar and get_line_nchar to make sure the program handles Unicode characters.
In one of the existing program in the where clause as well as assignments of strings to NVARCHAR2 variable should I prefix with N where N converts the characters into Unicode where columns Or variables are NVARCHAR2 OR NCHAR data types.
i.e.
In the where clause lets say status column of a table is STATUS NVARCHAR2(64) . In the where clause should I change from Stauts = 'valid' to status = N'valid' where N converts the characters into Unicode type explicitly instead of relying on oracle to implicitly convert ?
Please give your suggestions?
Thanks.
Vin.

All our columns are nvarchar2 in the UTF8 datbase. I have been told to use N in the select statement and in the the where clause just to be on the safe side so when a string is compared to NVARCHARR column it does explicit conversion instead of
depending on oracle to do implict conversion internally.
select * from tab
where status = N'testing'
What do you think about this adding N?

Similar Messages

  • Could you pls give the details about the Unicode conversion during Upgrade

    Hi,
    Can anyone give details about the Unicode conversion during SAP Upgradation fro 4.6C to ECC6.
    Waiting for quick response
    Best Regards,
    Padhy

    Hi,
    These are the few points i gathered during my upgradation project.
    Before starting any upgradation project, it is necessary to take up the back-up of the existing systems. As we are going to upgrade the entire system, we will be changing so many things and if something happens, without back-up, we will be in a trouble.
    So it is advised to keep a back-up of the existing system.
    Say for example we have the existing system E4B which is of Version 4.6C. Now we want to upgrade it to Version 4.7. Let us see how we can do it.
    Version upgrades not only means that we need to run the new Version CD over the existing Version System but only involves some other thing.
    Version Upgrade involves the following Steps.
    Say we want to upgrade for Version 4.7 from Version 4.6, which is in the System E4B. Now we created one more system called as E1B in which the upgradation for Version 4.7 can be done.
    • First copy the entire E4B system into the E1B System which is created for Version 4.7.
    • Apply the Version 4.7 CD provided by SAP over the E1B System.
    • Now check whether all the functionalities that was in E4B system works fine with E1B system also.
    Thus the Version Upgrade involves two steps.
    1. SAP Upgradation with the help of the CD
    2. Manual Upgradation.
    1. SAP Upgradation with the help of the CD
    This is nothing but after taking the copy of the existing system into a new system, the upgradation CD from SAP is applied over the new system.
    2. Manual Upgradation.
    This Manual Upgradation involves
    2.1 Upgradation of Standard Objects
    2.1.1 SPAU Objects
    2.1.2 SPDD Objects
    2.2 Upgradation of Custom Objects.
    Upgradation of Custom Objects can be placed under the following three categories.
    Unicode Compliance
    Retrofit
    Upgrade
    Please Find below some of the common Unicode Errors and their solutions
    1. Error:
    In case of Translate Error; ‘Dangerous use of Translate in Multilingual system.’
    Correction:
    To correct the Error occurring on TRANSLATE statement – use this additional statement before the Translate statement.
    SET LOCALE LANGUAGE sy-langu.
    This statement defines the Text Environment of all the programs & internal sessions in the language specified in the LANGUAGE KEY, which in this case is “sy-langu”, i.e. the log on language of the user.
    2. Error:
    In case of Open Dataset Error; ‘Encoding Addition must be included.’
    Correction:
    This Error occurs only when the MODE is TEXT.
    To correct the Error occurring on OPEN DATASET statement – use this statement instead.
    OPEN DATASET dataset_name FOR access IN TEXT MODE ENCODING DEFAULT.
    Where: dataset_name – NAME OF THE DATASET.
    Access – INPUT or OUTPUT or APPENDING or UPDATE.
    DEFAULT - Corresponds to UTF-8 in UNICODE systems &
    NON_UNICODE in NON-UNICODE systems.
    3. Error:
    In case of the usage of the Obsolete FM UPLOAD/DOWNLOAD or WS_UPLOAD/DOWNLOAD; ‘Function module UPLOAD is flagged as obsolete.’
    Correction:
    The FM GUI_DOWNLOAD/UPLOAD is used.
    The variations to be made in the parameters of the FM:
    1. Filename – It must be of STRING type.
    2. Filetype – “DAT” is not used any longer, instead “ASC” is used.
    3. Field Separator – The default value “SPACE” is used, incase for a TAB separated file “X” can be used.
    4. Error:
    In case of CURRENCY/UNIT Addition Error; ‘Use addition CURRENCY/UNIT when outputting.’
    Correction:
    The CURRENCY addition specifies the currency-dependant decimal places for the output of the data objects of type i or p. To obtain the currency-key, the field CURRKEY of the table TCURX is used. The system determines the number of the decimal places from the field CURRDEC of the selected CURRKEY.
    To correct this error follow the following method:
    WRITE: /3 'TOTAL',' ', TOTAL.
    WRITE: /3 ‘TOTAL’,’ ‘, TOTAL CURRENCY ‘2’. --- Where ‘2’is the Currency Key for Getting 2 decimal places.
    5. Error:
    In case of TYPE X Error; ‘Variable must be of C, N, D, T or STRING type.’
    Correction:
    We need to change all the Type X (Hexadecimal) variables to Type C with their values unchanged.
    So the method to be followed is:-
    1. Load the definition of the class CL_ABAP_CONV_IN_CE or CL_ABAP_CHAR_UTILITIES.
    2. Declare the variable as Type C, and use the method UCCP(‘XXXX’) of the class CL_ABAP_CONV_IN_CE where XXXX represents the 8-bit Hexadecimal value and incase the variable holds a Hex value for a Horizontal Tab , then the Attribute “HORIZONTAL_TAB” of the class CL_ABAP_CHAR_UTILITIES can be used directly instead of using the method UCCP.
    E.g.:
    i) *DATA: TAB TYPE X VALUE 09, “Tab character
    CLASS: CL_ABAP_CHAR_UTILITIES DEFINITION LOAD.
    DATA TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
    ii) * DATA: CHAR TYPE X VALUE 160.
    CLASS: CL_ABAP_CONV_IN_CE DEFINITION LOAD.
    DATA CHAR TYPE C.
    CHAR = CL_ABAP_CONV_IN_CE=>UCCP(‘00AO’).
    (Here ‘00A0’ is the Hexadecimal equivalent of the decimal 160).
    3. Incase the TYPE X Variable has a length more than 1, then an internal table must be created for the variable.
    E.g.:
    CLASS: CL_ABAP_CONV_IN_CE DEFINITION LOAD.
    DATA : LF(2) TYPE X VALUE 'F5CD'.
    DATA : BEGIN OF LF,
    A1 TYPE C,
    A2 TYPE C,
    END OF LF.
    LF-A1 = CL_ABAP_CONV_IN_CE=>UCCP('00F5').
    LF-A2 = CL_ABAP_CONV_IN_CE=>UCCP('00CD').
    6. Error:
    In case of the Character “-“Error; ‘The Character “-“can’t appear in names in Unicode Programs.’
    Correction:
    The Character “-“(Hyphen) appearing in Variable names is replaced by the character “_” (Under Score) for Unicode/Upgrade Compliance.
    E.g.:
    *wk-belnr LIKE bkpf-belnr,
    *wk-xblnr LIKE bkpf-xblnr,
    *wk-date LIKE sy-datum,
    *wk-wrbtr LIKE bseg-wrbtr,
    *wk-name1 LIKE lfa1-name1,
    *wk-voucher(8) TYPE c.
    wk_belnr LIKE bkpf-belnr,
    wk_xblnr LIKE bkpf-xblnr,
    wk_date LIKE sy-datum,
    wk_wrbtr LIKE bseg-wrbtr,
    wk_name1 LIKE lfa1-name1,
    wk_voucher(8) TYPE c.
    7. Error:
    In case of The SUBMIT-TO-SAP-SPOOL Error; ‘you should not use the statement SUBMIT-TO-SAP-SPOOL without the WITHOUT SPOOL DYNPRO addition. ‘
    Correction:
    1. Declare variables of type PRI_PARAMS, ARC_PARAMS, and a variable of TYPE C which would be used as a VALID FLAG.
    2. Call the FM GET_PRINT_PARAMETERS:
    CALL FUNCTION 'GET_PRINT_PARAMETERS'
    EXPORTING
    ARCHIVE_MODE = '3'
    DESTINATION = P_DEST
    IMMEDIATELY = 'X'
    IMPORTING
    OUT_ARCHIVE_PARAMETERS = archive_parameters
    OUT_PARAMETERS = print_parameters
    VALID = valid_flag
    EXCEPTIONS
    INVALID_PRINT_PARAMS = 2
    OTHERS = 4
    3. Use the SUBMIT-TO-SAP-SPOOL statement.
    E.g.:
    •     submit zrppt500
    •     using selection-set 'AUTO3'
    •     with res_no eq lo_rsnum
    •     with sreserv in preserv
    •     to sap-spool destination p_dest
    •     immediately 'X'. "print immediate
    DATA: print_parameters type pri_params,
    archive_parameters type arc_params,
    valid_flag(1) type c.
    CALL FUNCTION 'GET_PRINT_PARAMETERS'
    EXPORTING
    ARCHIVE_MODE = '3'
    DESTINATION = P_DEST
    IMMEDIATELY = 'X'
    IMPORTING
    OUT_ARCHIVE_PARAMETERS = archive_parameters
    OUT_PARAMETERS = print_parameters
    VALID = valid_flag
    EXCEPTIONS
    INVALID_PRINT_PARAMS = 2
    OTHERS = 4
    Submit zrppt500
    Using selection-set 'AUTO3'
    With res_no eq lo_rsnum
    with sreserv in preserv
    to sap-spool
    SPOOL PARAMETERS PRINT_PARAMETERS
    ARCHIVE PARAMETERS ARCHIVE_PARAMETERS
    WITHOUT SPOOL DYNPRO.
    8. Error:
    In case of Message Error; ‘Number of WITH fields and number of Place Holders are not same ‘.
    Correction:
    Split the statement after WITH into the same number as the place holder for that Message ID.
    E.g.:
    1. * MESSAGE E045.
    MESSAGE E045 WITH '' ''.
    2. in program ZIPI0801
    •     Start of change for ECC6
    •     message e398(00) with 'Could not find access sequence'
    •     'for condition type:'
    •     p_ptype.
    message e398(00) with 'Could not find '
    'access sequence'
    'for condition type:'
    p_ptype.
    •     End of change made for ECC6
    9. Error:
    In case of Move between 2 different Structures; ‘The structures are not mutually convertible in a Unicode program.’
    Correction:
    Make both the Data Types compatible and then assign the contents.
    E.g.:
    The statement –“move retainage_text to temp_text.” Gives an error, where RETAINAGE_TEXT is an internal table and TEMP_TEXT is a string of length 200.
    A Feasible solution for this is to specify from which position to which position of the string, the fields of RETAINAGE_TEXT should be assigned.
    TEMP_TEXT+0(1) = RETAINAGE_TEXT-DQ1.
    TEMP_TEXT+1(1) = RETAINAGE_TEXT-HEX.
    TEMP_TEXT+2(20) = RETAINAGE_TEXT-FILLER1.
    TEMP_TEXT+22(15) = RETAINAGE_TEXT-AMT_DUE.
    TEMP_TEXT+37(8) = RETAINAGE_TEXT-TEXT.
    TEMP_TEXT+45(10) = RETAINAGE_TEXT-DUE_DATE.
    TEMP_TEXT+55(1) = RETAINAGE_TEXT-DQ2.
    10. Error:
    In case of ‘no description found’; ‘add a GUI title’.
    Correction:
    In this type of error gui title is generally missing so add a GUI title to the module pool.
    11. Error:
    In case of ‘writing internal or transparent table’
    Correction:
    Write individual fields.
    E.g.:
    WRITE: / EXT. --> EXT should be a character type field
    WRITE: / EXT-ZZSTATE, EXT-LINE_NO, EXT-LINE_TXT, EXT-AMT, EXT-ZZSKUQTY.
    12. Error:
    In case of ‘combination reference table/field S541-UMMENGE does not exist’
    Correction:
    Was due to error in reference table S541. TABLE S541 has errors
    1)”Foreign key S541- ZZMARKET (ZZMARKET AND KATR2 point to different domains)”
    2)”Foreign key S541-ZZACQUIGRP (ZZACQUIGRP AND KATR8 point to different domains)”
    Changed the domain of ZZMARKET (from ZMKCODE to ATTR2)
    And that of ZMKCODE (from ZACCODE to ATTR8)
    13. Error:
    In case of ‘KEY does not exist’
    Correction:
    The reference table for field KBETR was KNOV earlier changed it to RV61A as KNOV was in turn referring to RV61A.
    14. Error:
    Incase of ‘WRITE’ statement, ‘Literals that take more than one line is not permitted in Unicode systems.’
    Correction: To correct this error, we need to align the spaces accordingly so that the statement doesn’t go beyond the line.
    15. Error:
    Incase of Data statement, ‘The data type ZWFHTML can be enhanced in any way. After a structure enhancement, this assignment or parameter might be syntactically incorrect………..’
    Correction: To correct this error, instead of “like” in the Data statement, use “type”.
    16. Error:
    Incase of DESCRIBE statement, ‘DESCRIBE can be used only with IN BYTE... Or IN CHARACTER mode in Unicode systems.’
    Correction: To correct this error, use additional text, IN BYTE MODE / IN CHARACTER MODE along with this statement.
    CHARACTER MODE is added when the data object is of flat/ character type.
    BYTE MODE is added when the data object is a deep structure.
    Syntax: DESCRIBE FIELD data_obj : LENGTH blen IN BYTE MODE,
    LENGTH clen IN CHARACTER MODE.
    Where blen and clen must be of type I.
    17. Error:
    Incase of DO-LOOP Error,’ In Do loop range addition needed‘
    Correction:
    An internal tables is declared and the two fields (VARYING field and NEXT field) were
    Included inside the internal table
    E.g.: In program SAPMZP02
    DO 11 TIMES
    •     VARYING STATION_STATE FROM STATION1 NEXT STATION2. “ECC6
    CASE SYST-INDEX.
    WHEN ‘1’
    STATION_STATE = STATION1.
    WHEN ‘2’
    STATION_STATE = STATION2.
    WHEN ‘3’
    STATION_STATE = STATION3.
    WHEN ‘4’
    STATION_STATE = STATION4.
    WHEN ‘5’
    STATION_STATE = STATION5.
    WHEN ‘6’
    STATION_STATE = STATION6.
    WHEN ‘7’
    STATION_STATE = STATION7.
    WHEN ‘8’
    STATION_STATE = STATION8.
    WHEN ‘9’
    STATION_STATE = STATION9.
    WHEN ‘10’
    STATION_STATE = STATION10.
    WHEN ‘11’
    STATION_STATE = STATION11.
    18. Error:
    Incase of the parameter QUEUE-ID Error,’ QUEUE-ID’ is neither a parameter nor a select option in program rsbdcbtc.’
    Correction:
    The parameter in program rsbdcbtc is QUEUE_ID and so is changed in this program
    E.g.: In program Z_CARRIER_EDI_INTERFACE
    •     submit rsbdcbtc with queue-id = apqi-qid and return. "ECC6
    •     The parameter name changed by replacing '-' with '_' as in program rsbdcbtc "ECC6
    Submit rsbdcbtc with queue_id = apqi-qid and return. "ECC6
    19. Error:
    Incase of EPC Error,’ Field symbol <TOT_FLD> is not assigned to a field ‘.
    Correction:
    This error couldn't be rectified as the error occurs in a Standard SAP include- LSVIMF29.
    The OS Note - 1036943 needs to be applied.
    Error:
    OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE.
    Correct:
    OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    Error:
    Constants : c_tab type x value '09' .
    Correct:
    Constants : c_tab type abap_char1 value cl_abap_char_utilities=>horizontal_tab .
    Error:
    Data : begin of output_options occurs 0 . Include structure ssfcompop.
    Data : end of output_options .
    Correct:
    Data : output_options type standard table of ssfcompop with header line .
    Error:
    PARAMETERS : NAST TYPE NAST .
    Correct:
    PARAMETERS : NAST TYPE NAST NO-DISPLAY .
    Replace WS_DOWNLOAD and WS_UPLOAD by
    GUI_UPLOAD and GUI_DOWNLOAD and check the import and export parameter types , do the changes accordingly. Because FILENAME paramater type is different because of this it will give dump.
    For issue during Issue using SO_NEW_DOCUMENT_ATT_SEND_API1 Function module, the solution is After this FM we should put COMMIT WORK.
    Issue:
    Moving data from one structure to another structure if those two structures are not compatible
    Solution:
    we should use move-corresponding or field by filed we need to move it.
    If database structures are different in 4.6c and ECC6.0,
    Then we should go with append structure concept.
    While testing the report if it gives dump at Select query level or any database or view level,then just goto that table or view and goto the data base utility(se14) adjust the database. But make sure that selected radio button in se14 transaction should be activate and adjust database
    Also Check this link.
    http://help.sap.com/saphelp_nw04/helpdata/en/62/3f2cadb35311d5993800508b6b8b11/frameset.htm
    Reward points if helpful.
    Regards,
    Ramya

  • Question about NCHAR and NVARCHAR2 in Oracle 8.1.7

    I am using Oracle 8.1.7 on Red Hat 7.2. The database encoding is UTF8.
    I created a table with a field: col1 nvarchar2(5).
    But I can insert only ONE Chinese character to that field.
    Doesn't it supposed to be 5?
    (I can insert a 5 english characters into the field)
    It seems that a Chinese character occupies 3 bytes in UTF8.
    Doesn't the size of NCHAR and NVARCHAR2 refer to the size of CHARACTERS not bytes?
    NLS_LANGUAGE AMERICAN
    NLS_TERRITORY AMERICA
    NLS_CURRENCY $
    NLS_ISO_CURRENCY AMERICA
    NLS_NUMERIC_CHARACTERS .,
    NLS_CALENDAR GREGORIAN
    NLS_DATE_FORMAT DD-MON-RR
    NLS_DATE_LANGUAGE AMERICAN
    NLS_CHARACTERSET UTF8
    NLS_SORT BINARY
    NLS_TIME_FORMAT HH.MI.SSXFF AM
    NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
    NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM
    NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM
    NLS_DUAL_CURRENCY $
    NLS_NCHAR_CHARACTERSET UTF8
    NLS_COMP BINARY

    The National Character Set in 8i was only meant to support a few special Asian character sets. Though it is set to whatever you set the database to the NCHAR columns will not work properly for UTF8. You will need to use SQL CHAR fields in order to support UTF8 in 8i. And the semantics are byte. In Oracle9i the National Character Set exclusively supports Unicode via the character sets UTF8 and Al16UTF16. The default is Al16UTF16 which is UTF-16. The 9i NCHAR fields are character semantics so field(5) would be 5 characters not bytes. There are a couple of papers on our home page that talk about unicode support at:
    http://technet.oracle.com/tech/globalization/content.html
    Oracle Unicode Database Support
    Migration to Unicode Datatypes for Multilingual Databases and Applications in Oracle9i

  • Displaying UTF8 unicode on JSP

    hi,
    i have followed the tutorial on http://java.sun.com/docs/books/tutorial/i18n/text/stream.html for how to display unicode on java application.
    now, i want to output the unicode to my jsp pages, but it displays distorted or wrong characters. can some1 pls advice me what went wrong ?
    it supposed to display (sasa), but it displays (?u?u) .
    pls help.
    thanks

    Hi,
    I am using websphere with jsp 1.1 which does not include the method mentionned above.
    I want to display utf8 characters in my browser.
    Before, I was using JSP 1.0 and the mata tags with charset="utf-8" and it was working very well.
    What's the differenc ewith JSP 1.1 ?

  • How to insert encoding  UTF8-unicode(hindi, marathi) in firebird ?

    hi
    i want to insert the data in firebired but the data is in "hindi" and "marathi".i am using java and servlet, then how to insert data in firebird with example, please reply, its urgent.

    hi
    i want to insert the data in firebired but the data is in "hindi" and "marathi".i am using java and servlet, then how to insert data in firebird with example, please reply, its urgent.

  • Doubt about unicode conversion

    Dear Friends,
    I have a doubt about the unicode conversion. I have read (one server strategy) that I have to do export (R3load), delete the ECC 6.0 non-unicode, install an unicode database and then import with R3load. My doubt is about the deletion of ECC 6.0 non unicode. Why?  can I convert to unicode only with an export (R3load) and subsequent import (R3load) without any deletion?. Obviously I must to change the SAP kernel with a unicode one. Is it correct?
    Cheers

    you can not convert a SAP System to unicode by just exchanging the executables from non unicode to unicode ones.
    a non unicode SAP Oracle database is typically running with a database codepage WE8DEC or US7ASCII (well this one is out of support).
    so every string stored in the database is stored using this codepages or SAP-Internal codepages.
    When converting to unicode you have to convert also the contents of the database to unicode. As unicode implementation starts at a time where Oracle did not support mixed codepage databases (one tablespace codepage WE8DEC the other one UTF8) inplace conversions are not possible. To keep things simpler, we still do not support mixed codepage databases.
    Therefore you have to export the contents of your database and import it to a newly created database with a different codepage if you want to migrate to unicode.
    regards
    Peter

  • Need information about unicode

    Hello friends,
           I need informatiion about an unicode to change english language in to regional language.Please give me information about same.
    Thanx,
    Rahul Talele

    Hi
    Hope it will help you,.
    Reward if help.
    The Link will be helpful to you.
    Re: Upgrade 4.6 to ECC - What are the responsibilites
    regarding Unicode influence in Standard programs
    Very good document:
    http://www.doag.org/pub/docs/sig/sap/2004-03/Buhlinger_Maxi_Version.pdf
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/d37d1ad9-0b01-0010-ed9f-bc3222312dd8
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/589d18d9-0b01-0010-ac8a-8a22852061a2
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f8e316d9-0b01-0010-8e95-829a58c1511a
    You need to use the transaction UCCHECK.
    The report documentation is here
    ABAP Unicode Scan Tool UCCHECK
    You can use transaction UCCHECK to examine a Unicode program set for syntax errors without having to set the program attribute "Unicode checks active" for every individual program. From the list of Unicode syntax errors, you can go directly to the affected programs and remove the errors. It is also possible to automatically create transport requests and set the Unicode program attribute for a program set.
    Some application-specific checks, which draw your attention to program points that are not Unicode-compatible, are also integrated.
    Selection of Objects:
    The program objects can be selected according to object name, object type, author (TADIR), package, and original system. For the Unicode syntax check, only object types for which an independent syntax check can be carried out are appropriate. The following object types are possibilities:
    PROG Report
    CLAS Class
    FUGR Function groups
    FUGX Function group (with customer include, customer area)
    FUGS Function group (with customer include, SAP area)
    LDBA Logical Database
    CNTX Context
    TYPE Type pool
    INTF Interface
    Only Examine Programs with Non-Activated Unicode Flag
    By default, the system only displays program objects that have not yet set the Unicode attribute. If you want to use UCCHECK to process program objects that have already set the attribute, you can deactivate this option.
    Only Objects with TADIR Entry
    By default, the system only displays program objects with a TADIR entry. If you want to examine programs that don't have a TADIR entry, for example locally generated programs without a package, you can deactivate this option.
    Exclude Packages $*
    By default, the system does not display program objects that are in a local, non-transportable package. If you want to examine programs that are in such a package, you can deactivate this option.
    Display Modified SAP Programs Also
    By default, SAP programs are not checked in customer systems. If you also want to check SAP programs that were modified in a customer system (see transaction SE95), you can activate this option.
    Maximum Number of Programs:
    To avoid timeouts or unexpectedly long waiting times, the maximum number of program objects is preset to 50. If you want to examine more objects, you must increase the maximum number or run a SAMT scan (general program set processing). The latter also has the advantage that the data is stored persistently. Proceed as follows:
    - Call transaction SAMT
    - Create task with program RSUNISCAN_FINAL, subroutine SAMT_SEARCH
    For further information refer to documentation for transaction SAMT.
    Displaying Points that Cannot Be Analyzed Statically
    If you choose this option, you get an overview of the program points, where a static check for Unicode syntax errors is not possible. This can be the case if, for example, parameters or field symbols are not typed or you are accessing a field or structure with variable length/offset. At these points the system only tests at runtime whether the code is sufficient for the stricter Unicode tests. If possible, you should assign types to the variables used, otherwise you must check runtime behavior after the Unicode attribute has been set.
    To be able to differentiate between your own and foreign code (for example when using standard includes or generated includes), there is a selection option for the includes to be displayed. By default, the system excludes the standard includes of the view maintenance LSVIM* from the display, because they cause a large number of messages that are not relevant for the Unicode conversion. It is recommended that you also exclude the generated function group-specific includes of the view maintenance (usually L<function group name>F00 and L<function group name>I00) from the display.
    Similarly to the process in the extended syntax check, you can hide the warning using the pseudo comment ("#EC *).
    Applikation-Specific Checks
    These checks indicate program points that represent a public interface but are not Unicode-compatible. Under Unicode, the corresponding interfaces change according to the referenced documentation and must be adapted appropriately.
    View Maintenance
    Parts of the view maintenance generated in older releases are not Unicode-compatible. The relevant parts can be regenerated with a service report.
    UPLOAD/DOWNLOAD
    The function modules UPLOAD, DOWNLOAD or WS_UPLOAD and WS_DOWNLOAD are obsolete and cannot run under Unicode. Refer to the documentation for these modules to find out which routines serve as replacements.

  • NVARCHAR - NVARCHAR2 datatype mapping between sql server and oracle.

    Question regarding size allocation that occurs for NVARCHAR columns in sql server to NVARCHAR2 in Oracle in the migration tool.
    The migration tool has converted NVARCHAR columns to be twice their size as NVARCH2 in Oracle. Example, a table whose column is mycol NVARCHAR(40) gets migrated as mycol NVARCHAR2(80).
    In SQL Server land, the designation of a column as NVARCHAR(40) will physically store the column as 80 bytes. However, as I understand from this excerpt (taken from here: http://www.oracle.com/technology/oramag/oracle/03-nov/o63tech_glob.html), that Oracle in essence will do the same thing for NVARCHAR2:
    To make it easy to allocate proper storage for Unicode values, Oracle9i Database introduced character semantics. You can now use a declaration such as VARCHAR2(3 CHAR), and Oracle will set aside the correct number of bytes to accommodate three characters in the underlying character set. In the case of AL32UTF8, Oracle will allocate 12 bytes, because the maximum length of a UTF-8 character encoding is four bytes (3 characters * 4 bytes/character = 12 bytes). On the other hand, if you're using AL16UTF16, in which case your declaration would be NVARCHAR2(3), Oracle allocates just six bytes (3 characters * 2 bytes/character = 6 bytes). One difference worth noting is that for UTF-8, a declaration using character semantics allows enough room for surrogate characters, whereas for UTF-16 that is not the case. A declaration such as NVARCHAR2(3) provides room for three UTF-16 code units, but a single supplementary character may consume two of those code units.
    As I read this, NVARCHAR(40) in sql server should be equivalent to NVARCHAR2(40) in Oracle and not NVARCHAR2(80) as it gets translated to - am I missing something? We have a rather large database to migrate so I need to get this size allocation right (and I obviously don't want to truncate any data).
    Thanks -

    Right - well, that's what I'm suggesting is that NVARCHAR(8) in SQL Server is equivalent to NVARCHAR2(8) in Oracle. Truncation will occur after 8 of any character, including, say, double byte Kanjii characters, which would physically store 16 bytes in the NVARCHAR(8) NVARCHAR2(8) column defn. I tried that in both SQL Server and Oracle, and the behavior is the same.
    Also, technically, NVARCHAR2(8) and VARCHAR2(8 CHAR) is roughly the same in terms of behavior, except that in the first case, the physical storage is 16 bytes, while in the second case, it's 24 bytes (to account for 'supplemental' characters or true UTF-8 compliance). Same truncation occurs after 8 of -any- character be it single byte ascii or double byte kanjii, which is the behavior I expect.
    Thanks for looking into this. What I decided to do was the following:
    What was originally defined in SQL Server as varchar (and translated to VARCHAR2 with the CHAR designation), I removed the CHAR designation since I truly want that number of bytes to be stored, and not characters (for columns I do not care about UTF8 or 16 compliance - that will also mimic the same behavior I currently have on the SQL Server side. For anything that was nvarchar in SQL Server, I went ahead and created them as VARCHAR2 with the CHAR designation, with the same size (not double the value as was in SQL Server which the documentation says it gets translated to). I did this since we probably will need true UTF-8 compliance down the line, and since I had the hood open, it was easy enough to do. I could also have converted NVARCHAR(n) to NVARCHAR2(n) (and not n*2) as what was happening in the migration.
    I tested strings in both cases, and I think I have my solution.
    Edited by: kpw on Sep 24, 2008 11:21 AM

  • Indexing Word document in UTF8 database

    Hello,
    have anybody experience with database created with character set UTF8
    (Unicode) and indexing formatted documents like MS Word, Powerpoint, Adobe
    Acrobat etc.?
    When I'm indexing Word document in non UTF8 database it's OK, in UTF8
    database indexing runs without error but searching does not work (in
    'DR$<index_name>I' table are unreadable strings - tokens).
    Is there any possibility in indexing to specify filter preferences
    INSO_FILTER and CHARSET_FILTER together?
    Thanks!
    Best Regards
    Jiri Salvet
    [email protected]
    null

    I'm using Oracle 8.1.6 on Windows2000. If You have any information about problem with INSO filter on that platform, please send it me.

  • "Invalid UTF8 encoding" troubleshooting

    How can I troubleshoot the error message "Invalid UTF8 encoding" ?
    I get this every now and then from oraxml command line utility and also from XSU (xsql pages and command line utility).
    Thanks,
    Peter.
    null

    Thanks for the replies.
    I'm using entities all the time, so that's not the problem.
    The encoding tip was definately usefull. With one of my problem files, I could parse it after adding encoding="ISO-8859-1". However I would still like to know exactly what and where the problem was. Are there any tools that can tell me i.e. if non-ISO characters are used ?
    I dont have control over how theese files are produced, I'm just recieving them from another source and told they are validated in a program called XmlSpy.
    I do have a related issue about storing unicode characters i CLOB columns in a WE8ISO8859P1 database. I've posted a question about this under a seperate topic.
    -- Peter
    null

  • To Determine Unicode Datatype encoding

    Hi,
    Going through the Oracle documentation found that Oracle Unicode datatype (NCHAR or NVARCHAR2) supports AL16UTF16 and UTF8 Unicode encodings.
    Is there a way to determine which encoding is being used by Oracle Unicode datatypes thorugh OCI interface?
    Thanks,
    Sachin

    That's a rather hard problem. You would, realistically, either have to make a bunch of simplifying assumptions based on the data or you would want to buy a commercial tool that does character set detection.
    There are a number of different ways to encode Unicode (UTF-8, UTF-16, UTF-32, USC-2, etc.) and a number of different versions of the Unicode standard. UTF-8 is one of the more common ways to encode Unicode. But it is popular precisely because the first 127 characters (which is the majority of what you'd find in English text) are encoded identically to 7-bit ASCII. Depending on the size and contents of the document, it may not be possible to determine whether the data is encoded in 7-bit ASCII, UTF-8, or one of the various single-byte character sets that are built off of 7-bit ASCII (ISO 8859-15, Windows-1252, ISO 8859-1, etc).
    Depending on how many different character sets you are trying to distinguish between, you'd have to look for binary values that are valid in one character set and not in another.
    Justin

  • Convert characterset WE8MSWIN1252 to UTF8

    Hi all
    I am using Oracle 10g Database. Now the Characterset as WE8MSWIN1252. I want to change my CharacterSet to UTF8. It is possible.
    Can anyone please post me the steps involved.
    Very Urgent !!!!!!!
    Regds
    Nirmal

    Subject: Changing WE8ISO8859P1/ WE8ISO8859P15 or WE8MSWIN1252 to (AL32)UTF8
    Doc ID: Note:260192.1 Type: BULLETIN
    Last Revision Date: 24-JUL-2007 Status: PUBLISHED
    Changing the database character set to (AL32)UTF8
    =================================================
    When changing a Oracle Applications Database:
    Please see the following note for Oracle Applications database
    Note 124721.1 Migrating an Applications Installation to a New Character Set
    If you have any doubt log an Oracle Applications TAR for assistance.
    It might be usefull to read this note, even when using Oracle Applications
    seen it explains what to do with "lossy" and "truncation" in the csscan output.
    Scope:
    You can't simply use "ALTER DATABASE CHARACTER SET" to go from WE8ISO8859P1 or
    WE8ISO8859P15 or WE8MSWIN1252 to (AL32)UTF8 because (AL32)UTF8 is not a
    binary superset of any of these character sets.
    You will run into ORA-12712 or ORA-12710 because the code points for the
    "extended ASCII" characters are different between these 3 character sets
    and (AL32)UTF8.
    This note will describe a method of still using a
    "ALTER DATABASE CHARACTER SET" in a limited way.
    Note that we strongly recommend to use the SAME flow when doing a full
    export / import.
    The choise between using FULL exp/imp and a PARTIAL exp/imp is made in point
    7)
    DO NOT USE THIS NOTE WITH ANY OTHER CHARACTERSETS
    WITHOUT CHECKING THIS WITH ORACLE SUPPORT
    THIS NOTE IS SPECIFIC TO CHANGING:
    FROM: WE8ISO8859P1, WE8ISO8859P15 or WE8MSWIN1252
    TO: AL32UTF8 or UTF8
    AL32UTF8 and UTF8 are both Unicode character sets in the oracle database.
    UTF8 encodes Unicode version 3.0 and will remain like that.
    AL32UTF8 is kept up to date with the Unicode standard and encodes the Unicode
    standards 3.0 (in database 9.0), 3.1 (database 9.2) or 3.2 (database 10g).
    For the purposes of this note we shall only use AL32UTF8 from here on forward,
    you can substitute that for UTF8 without any modifications.
    If you use 8i or lower clients please have a look at
    Note 237593.1 Problems connecting to AL32UTF8 databases from older versions (8i and lower)
    WE8ISO8859P1, WE8ISO8859P15 or WE8MSWIN1252 are the 3 main character sets that
    are used to store Western European or English/American data in.
    All standard ASCII characters that are used for English/American do not have to
    be converted into AL32UTF8 - they are the same in AL32UTF8. However, all other
    characters, like accented characters, the Euro sign, MS "smart quotes", etc.
    etc., have a different code point in AL32UTF8.
    That means that if you make extensive use of these types of characters the
    preferred way of changing to AL32UTF8 would be to export the entire database and
    import the data into a new AL32UTF8 database.
    However, if you mainly use standard ASCII characters and not a lot else (for
    example if you only store English text, maybe with some Euro signs or smart
    quotes here and there), then it could be a lot quicker to proceed with this
    method.
    Please DO read in any case before going to UTF8 this note:
    Note 119119.1 AL32UTF8 / UTF8 (unicode) Database Character Set Implications
    and consider to use CHAR semantics if on 9i or higher:
    Note 144808.1 Examples and limits of BYTE and CHAR semantics usage
    It's best to change the tables and so to CHAR semantics before the change
    to UTF8.
    This procedure is valid for Oracle 8i, 9i and 10g.
    Note:
    * If you are on 9i please make sure you are at least on Patch 9204, see
    Note 250802.1 Changing character set takes a very long time and uses lots of rollback space
    * if you have any function-based indexes on columns using CHAR length semantics
    then these have to be removed and re-created after the character set has
    been changed. Failure to do so will result in ORA-604 / ORA-2262 /ORA-904
    when the "alter database character set" statement is used in step 4.
    Actions to take:
    1) install the csscan tool.
    1A)For 10g use the csscan 2.x found in /bin, no need to install a newer version
    Goto 1C)
    1B)For 9.2 and lower:
    Please DO install the version 1.2 or higher from TechNet for you version.
    http://technet.oracle.com/software/tech/globalization/content.html
    and install this.
    copy all scripts and executables found in the zip file you downloaded
    to your oracle_home overwriting the old versions.
    goto 1C).
    Note: do NOT use the CSSCAN of a 10g installation for 9i/8i!
    1C)Run csminst.sql using these commands and SQL statements:
    cd $ORACLE_HOME/rdbms/admin
    set oracle_sid=<your SID>
    sqlplus "sys as sysdba"
    SQL>set TERMOUT ON
    SQL>set ECHO ON
    SQL>spool csminst.log
    SQL> START csminst.sql
    Check the csminst.log for errors.
    If you get when running CSSCAN the error
    "Character set migrate utility schema not compatible."
    then
    1ca) or you are starting the old executable, please do overwrite all old files with the files
    from the newer version from technet (1.2 has more files than some older versions, that's normal).
    1cb) or check your PATH , you are not starting csscan from this ORACLE_HOME
    1cc) or you have not runned the csminst.sql from the newer version from technet
    More info is in Note 123670.1 Use Scanner Utility before Altering the Database Character Set
    Please, make sure you use/install csscan version 1.2 .
    2) Check if you have no invalid code points in the current character set:
    Run csscan with the following syntax:
    csscan FULL=Y FROMCHAR=<existing database character set> TOCHAR=<existing database character set> LOG=WE8check CAPTURE=Y ARRAY=1000000 PROCESS=2
    Always run CSSCAN with 'sys as sysdba'
    This will create 3 files :
    WE8check.out a log of the output of csscan
    WE8check.txt a Database Scan Summary Report
    WE8check.err contains the rowid's of the rows reported in WE8check.txt
    At this moment we are just checking that all data is stored correctly in the
    current character set. Because you've entered the TO and FROM character sets as
    the same you will not have any "Convertible" or "Truncation" data.
    If all the data in the database is stored correctly at the moment then there
    should only be "Changeless" data.
    If there is any "Lossy" data then those rows contain code points that are not
    currently stored correctly and they should be cleared up before you can continue
    with the steps in this note. Please see the following note for clearing up any
    "Lossy" data:
    Note 225938.1 Database Character Set Healthcheck
    Only if ALL data in WE8check.txt is reported as "Changeless" it is safe to
    proceed to point 3)
    NOTE:
    if you have a WE8ISO8859P1 database and lossy then changing your WE8ISO8859P1 to
    WE8MSWIN1252 will most likly solve you lossy.
    Why ? this is explained in
    Note 252352.1 Euro Symbol Turns up as Upside-Down Questionmark
    Do first a
    csscan FULL=Y FROMCHAR=WE8MSWIN1252 TOCHAR=WE8MSWIN1252 LOG=1252check CAPTURE=Y ARRAY=1000000 PROCESS=2
    Always run CSSCAN with 'sys as sysdba'
    For 9i, 8i:
    Only if ALL data in 1252check.txt is reported as "Changeless" it is safe to
    proceed to the next point. If not, log a tar and provide the 3 generated files.
    Shutdown the listener and any application that connects locally to the database.
    There should be only ONE connection the database during the WHOLE time and that's
    the sqlplus session where you do the change.
    2.1. Make sure the parallel_server parameter in INIT.ORA is set to false or it is not set at all.
    If you are using RAC see
    Note 221646.1 Changing the Character Set for a RAC Database Fails with an ORA-12720 Error
    2.2. Execute the following commands in sqlplus connected as "/ AS SYSDBA":
    SPOOL Nswitch.log
    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 CHARACTER SET WE8MSWIN1252;
    SHUTDOWN IMMEDIATE;
    STARTUP RESTRICT;
    SHUTDOWN;
    The extra restart/shutdown is necessary in Oracle8(i) because of a SGA
    initialization bug which is fixed in Oracle9i.
    -- a alter database takes typically only a few minutes or less,
    -- it depends on the number of columns in the database, not the amount of data
    2.3. Restore the parallel_server parameter in INIT.ORA, if necessary.
    2.4. STARTUP;
    now go to point 3) of this note of course your database is then WE8MSWIN1252, so
    you need to replace <existing database character set> with WE8MSWIN1252 from now on.
    For 10g and up:
    When using CSSCAN 2.x (10g database) you should see in 1252check.txt this:
    All character type data in the data dictionary remain the same in the new character set
    All character type application data remain the same in the new character set
    and
    The data dictionary can be safely migrated using the CSALTER script
    IF you see this then you need first to go to WE8MSWIN1252
    If not, log a tar and provide all 3 generated files.
    Shutdown the listener and any application that connects locally to the database.
    There should be only ONE connection the database during the WHOLE time and that's
    the sqlplus session where you do the change.
    Then you do in sqlplus connected as "/ AS SYSDBA":
    -- check if you are using spfile
    sho parameter pfile
    -- if this "spfile" then you are using spfile
    -- in that case note the
    sho parameter job_queue_processes
    sho parameter aq_tm_processes
    -- (this is Bug 6005344 fixed in 11g )
    -- then do
    shutdown immediate
    startup restrict
    SPOOL Nswitch.log
    @@?\rdbms\admin\csalter.plb
    -- Csalter will aks confirmation - do not copy paste the whole actions on one time
    -- sample Csalter output:
    -- 3 rows created.
    -- This script will update the content of the Oracle Data Dictionary.
    -- Please ensure you have a full backup before initiating this procedure.
    -- Would you like to proceed (Y/N)?y
    -- old 6: if (UPPER('&conf') <> 'Y') then
    -- New 6: if (UPPER('y') <> 'Y') then
    -- Checking data validility...
    -- begin converting system objects
    -- PL/SQL procedure successfully completed.
    -- Alter the database character set...
    -- CSALTER operation completed, please restart database
    -- PL/SQL procedure successfully completed.
    -- Procedure dropped.
    -- if you are using spfile then you need to also
    -- ALTER SYSTEM SET job_queue_processes=<original value> SCOPE=BOTH;
    -- ALTER SYSTEM SET aq_tm_processes=<original value> SCOPE=BOTH;
    shutdown
    startup
    and the 10g database will be WE8MSWIN1252
    now go to point 3) of this note of course your database is then WE8MSWIN1252, so
    you need to replace <existing database character set> with WE8MSWIN1252 from now on.
    3) Check which rows contain data for which the code point will change
    Run csscan with the following syntax:
    csscan FULL=Y FROMCHAR=<your database character set> TOCHAR=AL32UTF8 LOG=WE8TOUTF8 CAPTURE=Y ARRAY=1000000 PROCESS=2
    Always run CSSCAN with 'sys as sysdba'
    This will create 3 files :
    WE8TOUTF8.out a log of the output of csscan
    WE8TOUTF8.txt a Database Scan Summary Report
    WE8TOUTF8.err a contains the rowid's of the rows reported in WE8check.txt
    + You should have NO entries under Lossy, because they should have been filtered
    out in step 2), if you have data under Lossy then please redo step 2).
    + If you have any entries under Truncation then go to step 4)
    + If you only have entries for Convertible (and Changeless) then solve those in
    step 5).
    + If you have NO entry's under the Convertible, Truncation or Lossy,
    and all data is reported as "Changeless" then proceed to step 6).
    4) If you have Truncation entries.
    Whichever way you migrate from WE8(...) to AL32UTF8, you will always have to
    solve the entries under Truncation.
    Standard ASCII characters require 1 byte of storage space under in WE8(...) and
    in AL32UTF8, however, other characters (like accented characters and the Euro
    sign) require only 1 byte of storage space in WE8(...), but they require 2 or
    more bytes of space in AL32UTF8.
    That means that the total amount of space needed to store a string can exceed
    the defined column size.
    For more information about this see:
    Note 119119.1 AL32UTF8 / UTF8 (unicode) Database Character Set Implications
    and
    "Truncation" data is always also "Convertible" data, which means that whatever
    else you do, these rows have to be exported before the character set is changed
    and re-imported after the character set has changed. If you proceed with that
    without dealing with the truncation issue then the import will fail on these
    columns because the size of the data exceeds the maximum size of the column.
    So these truncation issues will always require some work, there are a number of
    ways to deal with them:
    A) Update these rows in the source database so that they contain less data
    B) Update the table definition in the source database so that it can contain
    longer data. You can do this by either making the column larger, or by using
    CHAR length semantics instead of BYTE length semantics (only possible in
    Oracle9i).
    C) Pre-create the table before the import so that it can contain 'longer' data.
    Again you have a choice between simply making it larger, or switching from BYTE
    to CHAR length semantics.
    If you've chosen option A or B then please rerun csscan to make sure there is no
    Truncation data left. If that also means there is no Convertible data left then
    proceed to step 6), otherwise proceed to step 5).
    To know how much the data expands simply check the csscan output.
    you can find that in the .err file as "Max Post Conversion Data Size"
    For example, check in the .txt file wich table has "Truncation",
    let's assume you have there a row that say's
    -- snip from WE8TOUTF8.txt
    [Distribution of Convertible, Truncated and Lossy Data by Table]
    USER.TABLE Convertible Truncation Lossy
    SCOTT.TESTUTF8 69 6 0
    -- snip from WE8TOUTF8.txt
    then look in the .err file for "TESTUTF8" until the
    "Max Post Conversion Data Size" is bigger then the column size for that table.
    User : SCOTT
    Table : TESTUTF8
    Column: ITEM_NAME
    Type : VARCHAR2(80)
    Number of Exceptions : 6
    Max Post Conversion Data Size: 81
    -> the max size after going to UT8 will be 81 bytes for this column.
    5) If you have Convertible entries.
    This is where you have to make a choice whether or not you want to continue
    on this path or if it's simpler to do a complete export/import in the
    traditional way of changing character sets.
    All the data that is marked as Convertible needs to be exported and then
    re-imported after the character set has changed.
    6) check if you have functional indexes on CHAR based columns and purge the RECYCLEBIN.
    select OWNER, INDEX_NAME , INDEX_TYPE, TABLE_OWNER, TABLE_NAME, STATUS,
    FUNCIDX_STATUS from ALL_INDEXES where INDEX_TYPE not in
    ('NORMAL', 'BITMAP','IOT - TOP') and TABLE_NAME in (select unique
    (table_name) from dba_tab_columns where char_used ='C');
    if this gives rows back then the change will fail with
    ORA-30556: functional index is defined on the column to be modified
    if you have functional indexes on CHAR based columns you need to drop the
    index and recreate after the change , note that a disable will not be enough.
    On 10g check ,while connected as sysdba, if there are objects in the recyclebin
    SQL> show recyclebin
    If so do also a PURGE DBA_RECYCLEBIN; other wise you will recieve a ORA-38301 during CSALTER.
    7) Choose on how to do the actual change
    you have 2 choices now:
    Option 1 - exp/imp the entire database and stop using the rest of this note.
    a. Export the current entire database (with NLS_LANG set to <your old
    database character set>)
    b. Create a new database in the AL32UTF8 character set
    c. Import all data into the new database (with NLS_LANG set to <your old database character set>)
    d. The conversion is complete, do not continue with this note.
    note that you do need to deal with truncation issues described in step 4), even
    if you use the export/import method.
    Option 2 - export only the convertible data and continue using this note.
    For 9i and lower:
    a. If you have "convertible" data for the sys objects SYS.METASTYLESHEET,
    SYS.RULE$ or SYS.JOB$ then follow the following note for those objects:
    Note 258904.1 Convertible data in data dictionary: Workarounds when changing character set
    make sure to combine the next steps in the example script given in that note.
    b. Export all the tables that csscan shows have convertible data
    (make sure that the character set part of the NLS_LANG is set to the current
    database character set during the export session)
    c. Truncate those tables
    d. Run csscan again to verify you only have "changeless" application data left
    e. If this now reports only Changeless data then proceed to step 8), otherwise
    do the same again for the rows you've missed out.
    For 10g and up:
    a. Export all the USER tables that csscan shows have convertible data
    (make sure that the character set part of the NLS_LANG is set to the current
    database character set during the export session)
    b. Fix any "convertible" in the SYS schema, note that the 10g way to change
    the characterset (= the CSALTER script) will deal with any CLOB data in the
    sys schema. All "no 9i only" fixes in
    Note 258904.1 Convertible data in data dictionary: Workarounds when changing character set
    should NOT be done in 10g
    c. Truncate the exported user tables.
    d. Run csscan again to verify you only have "changeless" application data left
    e. If this now reports only Changeless data then proceed to step 8), otherwise
    do the same again for the rows you've missed out.
    When using CSSCAN 2.x (10g database) you should see in WE8TOUTF8.txt this:
    The data dictionary can be safely migrated using the CSALTER script
    If you do NOT have this when working on a 10g system CSALTER will NOT work and this
    means you have missed something or not followed all steps in this note.
    8) Perform the character set change:
    Perform a backup of the database.
    Check the backup.
    Double-check the backup.
    For 9i and below:
    Then use the "alter database" command, this changes the current database
    character set definition WITHOUT changing the actual stored data.
    Shutdown the listener and any application that connects locally to the database.
    There should be only ONE connection the database during the WHOLE time and that's
    the sqlplus session where you do the change.
    1. Make sure the parallel_server parameter in INIT.ORA is set to false or it is not set at all.
    If you are using RAC see
    Note 221646.1 Changing the Character Set for a RAC Database Fails with an ORA-12720 Error
    2. Execute the following commands in sqlplus connected as "/ AS SYSDBA":
    SPOOL Nswitch.log
    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 CHARACTER SET INTERNAL_USE AL32UTF8;
    SHUTDOWN IMMEDIATE;
    -- a alter database takes typically only a few minutes or less,
    -- it depends on the number of columns in the database, not the amount of data
    3. Restore the parallel_server parameter in INIT.ORA, if necessary.
    4. STARTUP;
    Without the INTERNAL_USE you get a ORA-12712: new character set must be a superset of old character set
    WARNING WARNING WARNING
    Do NEVER use "INTERNAL_USE" unless you did follow the guidelines STEP BY STEP
    here in this note and you have a good idea what you are doing.
    Do NEVER use "INTERNAL_USE" to "fix" display problems, but follow Note 225938.1
    If you use the INTERNAL_USE clause on a database where there is data listed
    as convertible without exporting that data then the data will be corrupted by
    changing the database character set !
    For 10g and up:
    Shutdown the listener and any application that connects locally to the database.
    There should be only ONE connection the database during the WHOLE time and that's
    the sqlplus session where you do the change.
    Then you do in sqlplus connected as "/ AS SYSDBA":
    -- check if you are using spfile
    sho parameter pfile
    -- if this "spfile" then you are using spfile
    -- in that case note the
    sho parameter job_queue_processes
    sho parameter aq_tm_processes
    -- (this is Bug 6005344 fixed in 11g )
    -- then do
    shutdown
    startup restrict
    SPOOL Nswitch.log
    @@?\rdbms\admin\csalter.plb
    -- Csalter will aks confirmation - do not copy paste the whole actions on one time
    -- sample Csalter output:
    -- 3 rows created.
    -- This script will update the content of the Oracle Data Dictionary.
    -- Please ensure you have a full backup before initiating this procedure.
    -- Would you like to proceed (Y/N)?y
    -- old 6: if (UPPER('&conf') <> 'Y') then
    -- New 6: if (UPPER('y') <> 'Y') then
    -- Checking data validility...
    -- begin converting system objects
    -- PL/SQL procedure successfully completed.
    -- Alter the database character set...
    -- CSALTER operation completed, please restart database
    -- PL/SQL procedure successfully completed.
    -- Procedure dropped.
    -- if you are using spfile then you need to also
    -- ALTER SYSTEM SET job_queue_processes=<original value> SCOPE=BOTH;
    -- ALTER SYSTEM SET aq_tm_processes=<original value> SCOPE=BOTH;
    shutdown
    startup
    and the 10g database will be AL32UTF8
    9) Reload the data pump packages after a change to AL32UTF8 / UTF8 in Oracle10
    If you use Oracle10 then the datapump packages need to be reloaded after
    a conversion to UTF8/AL32UTF8. In order to do this run the following 3
    scripts from $ORACLE_HOME/rdbms/admin in sqlplus connected as "/ AS SYSDBA":
    For 10.2.X:
    catnodp.sql
    catdph.sql
    catdpb.sql
    For 10.1.X:
    catnodp.sql
    catdp.sql
    10) Reimporting the exported data:
    If you exported any data in step 5) then you now need to reimport that data.
    Make sure that the character set part of the NLS_LANG is still set to the
    original database character set during the import session (just as it was during
    the export session).
    11) Verify the clients NLS_LANG:
    Make sure your clients are using the correct NLS_LANG setting:
    Regards,
    Chotu,
    Bangalore

  • Which version of Weblogic on Solaris is compatible with Oracle 8.1.7 - Unicode?

    Hi folks,
    We want upgrade WLS 4.5.1 to one of the last version of WLS, but also we are
    planing upgrade Oracle to 8.1.7 version and migrate the character set of the
    database to UTF8 (Unicode),
    so we need to know which versions of WLS are compatible with Oracle 8.1.7
    and Unicode as Character Set.
    Thanks in advance.
    Moises Moreno.

    Hi Moises Moreno
    The latest version of weblogic server is 6.1 with service pack 1. This version
    supports oracle 8.1.7 on major unix platforms viz., solaris(2.6,2.7,2.8),
    hp-unix(11.0,11.0i), linux7.1, Aix4.3.3 and on windows platforms viz.,
    NTwithsp5, 2000.
    BEA jdrivers are having Multibyte character set support (UTF8).
    Note : Weblogic server 5.1 with SP10 also supports oracle 8.1.7.
    FMI : http://www.weblogic.com/platforms/index.html#jdbc
    Thanks & Regards
    BEA Customer Support
    Moises Moreno wrote:
    Hi folks,
    We want upgrade WLS 4.5.1 to one of the last version of WLS, but also we are
    planing upgrade Oracle to 8.1.7 version and migrate the character set of the
    database to UTF8 (Unicode),
    so we need to know which versions of WLS are compatible with Oracle 8.1.7
    and Unicode as Character Set.
    Thanks in advance.
    Moises Moreno.

  • About upgrade from 4.6c to ecc6.0

    hi expert:
    i met the short dump after execute the following statement.
    data: begin of STRUC,
    F1 type c,
    F2(10) type c,
    end of STRUC,
    data: dsn(30) type c.
    open dataset DSN in legacy text mode for input.
    read dataset DSN into STRUC.
    close dataset DSN.
    short dump :
    Description:
        A character set conversion is not possible.
    issue content:
        At the conversion of a text from codepage '8000' to codepage '4103':
        - a character was found that cannot be displayed in one of the two
        codepages;
        - or it was detected that this conversion is not supported
        The running ABAP program 'ZJB1080' had to be terminated as the conve
        would have produced incorrect data.
        The number of characters that could not be displayed (and therefore
        be converted), is 0. If this number is 0, the second error case, as
        mentioned above, has occurred.
    i read some material about the unicode converstion, i got following information:
    The use of the LEGACY TEXT MODE ensures that the data in old non-Unicode format is stored and read. In this mode, it is also possible to read and write non-character-type structures. However, you have to take into account that loss of data and conversion errors might occur in real Unicode systems if the structure contains characters that cannot be displayed in the non-Unicode codepage.
    who could explain this for me or provide a solution , thanks in advance
    Keivn

    Read the documentation at [OPEN DATASET - Mode |http://help.sap.com/abapdocu/en/ABAPOPEN_DATASET_MODE.htm] and [The File Interface in Unicode Programs |http://help.sap.com/abapdocu/en/ABENUNICODE_DATASET.htm].
    NB: And please use a more precise Subject, there are many possible problems behind "upgrade from 4.6c to rcc6.0"
    Regards

  • Unicode kernel upgrade problem in XI server

    Hi
    I'm trying to upgrade the Brtools in XI server and getting the following problem:
    rx2n0v4:xdvadm 23> SAPCAR -xvf DBATL640O92_45-10002837.SAR
    stderr initialized
    processing archive DBATL640O92_45-10002837.SAR...
    --- Unicode interface [u16_get.c line 233] pid = 6963 :
    Invalid UTF-8 encountered by fgetsU16 (fileno 0x4)
    fd
    Characters previously read:
    0043 0041 0052 0020 0032 002e 0030 0031
    0052 0047                      030 0031
    --- Unicode interface -
    End of message -
    Illegal byte sequence DBATL640O92_45-10002837.SAR
    Couple of times, i downloaded the kernel today and tried but get the same error. Here XI (6.40)is the unicode server and i downloaded the unicode kernel from sapnet (brtools and SAPCAR kernel). I tried with version 7.00 kernel but get the same problem.
    Any solution of this problem?
    Regards
    Amar

    Confusion About SP16 Unicode Kernel Patch/Upgrade
    Problem with updating XI 3.0 (Kernel etc.)
    Check this might be useful.

Maybe you are looking for

  • Need Help with Custom Form Field Backgrounds

    I'm tryng to add a custom background image to a file upload field in a form and it is not displaying correctly in Firefox. Is there a way to do this? The background shows up fine in other fields just not in the field that I apply ( type="file" ) to.

  • Calculating tax liabilities and report to GREs

    Hi all, Sorry I'v recently learnt "Oracle HRMS", however, How can I calculate tax liabilities and report to GREs, in oracle payroll? Thank You,

  • Regarding Smartforms Main Window

    Hi SAP Gurus, In a customized smartform, i am having an output  : srl no                 mat no                  mat desc                     quan              uom               rate 10                        123456             aaaaaaaaa             

  • Detail data in relational, summary in OLAP?

    Hi, I've had a lot of practice now with the new AW wizards (version 10.1.0.3) and loading from a relational star schema. However, what I really want to do is build an AW that only has the "summary" levels, and have queries against the AW drill down i

  • How can I remove the history bar on safari?

    There is no always show bookmark bar in settings. What can I do