您的位置:首页 > Web前端 > CSS

Installing and configuring Csscan in 10g and 11g (Database Character Set Scanner) (文档 ID 745809.1)

2017-07-24 13:47 766 查看


APPLIES TO:

Oracle Database - Standard Edition - Version 10.1.0.2 to 11.2.0.4 [Release 10.1 to 11.2]
Oracle Database - Enterprise Edition - Version 10.1.0.2 to 11.2.0.4 [Release 10.1 to 11.2]
Information in this document applies to any platform.
***Checked for relevance on 29-Aug-2016***


GOAL

Installing Csscan (Database Character Set Scanner) for 10g and 11g and checking that it works properly.

This tool is used in notes referenced in Note 225912.1 Changing Or Choosing the Database Character Set ( NLS_CHARACTERSET )

From Oracle 12c database onwards, DMU will be the only tool available to migrate the NLS_CHARACTERSET: note 1418321.1 CSSCAN
and CSALTER To Be Desupported after DB 11.2.

For more information please see Note 1272374.1 The Database Migration Assistant for Unicode (DMU) Tool .


SOLUTION


1) What is Csscan (Database Character Set Scanner) ?

Csscan is a SCAN tool that allows you to see the impact of a database character set change or assist you to correct a incorrect database NLS_CHARACTERSET setup.

Note that it's possible to run Csscan from a client, but this client needs to be the same base version as the database home.

Csscan is by default included in any server or client installation in 10.1 and higher and is located in $ORACLE_HOME/bin .


2) What versions of Csscan exist for 10g and 11g?

There are functionality enhancements who give a higher csscan version number:

Database Character Set Scanner v2.0 is included in 10.1.0.2 base release

Database Character Set Scanner v2.1 is included in 10.2.0.1 base release - not available for 10.1

Database Character Set Scanner v2.2 is included in 11.1.0.6.0 and 11.2.0.1.0 base release - not available for 10.2 or 10.1

Currently there are no updates to Csscan itself (= new csscan version number) included in any patchset release.

If there is an bugfix of Csscan in 10g and 11g then it will be part of an patchset or provided as a one-off.

Csscan fixes are listed under the "Globalization Support (NLS)" part of patchsets

For installing Csscan in 8i and 9i please see Note 458122.1 Installing and configuring Csscan in 8i and 9i (Database Character
Set Scanner). 

Unlike for 8i and 9i there are no Csscan downloads on Oracle.com for 10g and up.


3)Installing Csscan

Csscan stores internal data in the database when running, the schema for the csscan tables is called CSMIG and is created using the csminst.sql script found in $ORACLE_HOME/rdbms/admin.

In general it's adviced to run Csscan from the database home using a local connection.

Note that it's possible to run Csscan from a client, but this client needs to be the same base version as the database home.  (= Use a 10.2 client for 10.2 database, use 11.1 client for 11.1 database etc)

When running csscan from a client make sure to run the Csminst.sql from the client home and not from the database home, this is to avoid problems when the client is a higer (or lower) patchset than the database.


3)A) Installing Csscan in Oracle RDBMS 10.1.0.x , 10.2.0.x and 11.1.0.x

For 11.1.0.6 please do install the patch for Bug 6460895 CSSCAN IS JUST HAGNING FROM LAST 60 + HRS IN 11GR1 UPGRADED
DATABASE.

The 11.1.0.6 (and 10.2.0.3) Patch 6460895 is available for some platforms. 

Apply this patch manually, see Note 737155.1 Not Be Able To Patch 6460895 Error oracle.rdbms.csmig.

Run csminst.sql AFTER applying this patch as the patch has an updated csminst.sql.

The fix is included in the 11.1.0.7 (or higher) and 10.2.0.4 (or higher) patchset. 

A workaround if the 11.1.0.6 patch is not available for your platform is to install a 11.1.0.6 client and then apply 11.1.0.7 (patch 6890831)
on this client. After this run the csminst.sql and csscan from the 11.1.0.7 client .

10.2 is less impacted but going to 10.2.0.4 may also speed up the initialisation of Csscan.
The default tablespace is SYSTEM, if you plan to run csscan against a big database then we advice to create a separate tablespace and change the $ORACLE_HOME/rdbms/admin/csminst.sql script to use this
tablespace. 

Modify the following statement in csminst.sql to assign your preferred tablespace to CSMIG instead of SYSTEM:

alter user csmig default tablespace SYSTEM

/
The amount of space needed depends mainly on the amount of exceptions found ( convertible and/or lossy data) and is impossible to predict upfront. It's useful to use on the first run of csscan a tablespace
that is limited in size to avoid any disk space issues.

The Csminst.sql file is doing two grants to SYSTEM

grant READ on directory log_file_dir to system

/

grant READ on directory data_file_dir to system

/
These grants are not needed, this is removed from Csminst.sql in 11.2 and 10.2.0.5. You can safely remove these lines or revoke the grants if needed. Csscan also does not use those directory's, so if
you have an "ORA-22930 directory does not exist" running Csminst.sql this can be ignored.

Make a backup/copy of Csminst.sql and edit Csminst.sql and then run Csminst.sql using these commands using sqlplus of the server Oracle_Home (or when using a client, using the same base version for the client as the server):

set oracle_sid=<your SID>

sqlplus /nolog

SQL> conn / as sysdba

SQL> set TERMOUT ON

SQL> set ECHO ON

SQL> spool csminst.log

SQL> @?/rdbms/admin/csminst.sql
The password for the CSMIG user will be asked when running the csminst.sql script, this can be anything and we suggest to lock the CSMIG account . The actual csmig login is not used by Csscan.

SQL> conn / as sysdba

SQL> alter user csmig account lock;
Check the csminst.log for errors.


3)B) Installing Csscan in Oracle RDBMS 11.2.0.x

The default tablespace is SYSTEM, if you plan to run csscan against a big database then we advice to create a separate tablespace and change the $ORACLE_HOME/rdbms/admin/csminst.sql script to use this
tablespace.

Modify the following statement in csminst.sql to assign your preferred tablespace to CSMIG instead of SYSTEM:

alter user csmig default tablespace SYSTEM quota unlimited on SYSTEM

/
The amount of space needed depends mainly on the amount of exceptions found ( convertible and/or lossy data) and is impossible to predict upfront. It's useful to use on the first run of csscan a tablespace
that is limited in size to avoid any disk space issues.

Make a backup/copy of Csminst.sql and edit Csminst.sql and then run Csminst.sql using these commands using sqlplus of the server Oracle_Home (or when using a client, using the same base version for the client as the server):

set oracle_sid=<your SID>

sqlplus /nolog

SQL> conn / as sysdba

SQL> set TERMOUT ON

SQL> set ECHO ON

SQL> spool csminst.log

SQL> -- note the drop user 

SQL> drop user csmig cascade;

SQL> @?/rdbms/admin/csminst.sql
Check the csminst.log for errors. The Csmig user is by default locked.


4) Checking that Csscan is working properly:

Set the oracle_sid and then run Csscan with this one table scan "test" run:

on Unix platforms (note the ' ' around the () ):

$ csscan TABLE='(SYS.SQL_VERSION$)' FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000
On windows platforms:

C:\>csscan TABLE=(SYS.SQL_VERSION$) FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000
If the user is in the OS dba group then enter "/ as sysdba" (without the qoutes) as username at the prompt, hit enter at the password prompt. Other wise provide the sysdba password at the password prompt.

This is just a "dummy/test" run to check if Csscan is working, the output should be similar to below.

The Csscan version information is made BOLD:

D:\>csscan TABLE=(SYS.SQL_VERSION$) FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000

Character Set Scanner v2.1 : Release 10.2.0.0.0 - Production on Tue Oct 28 14:58:09 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Username: / as sysdba

Password:

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production

With the Partitioning, Oracle Label Security, OLAP and Data Mining options

Enumerating table to scan...

. process 1 scanning SYS.SQL_VERSION$[AAAAIDAABAAAA/xAAA]

Creating Database Scan Summary Report...

Creating Individual Exception Report...

Scanner terminated successfully.

If you have " Scanner terminated successfully." message then simply delete the generated instchkc.txt and instchkc.out and Csscan is now ready for usage.

If you get the error "Character set migrate utility schema not compatible." or "CSS-00107: Character set migration utility schema not installed" then

a) check your PATH , you are not starting csscan from this ORACLE_HOME

b) you have not runned csminst.sql from the installed current version (maybe the database was upgraded and still contains an older csmig schema).

If you have a other error please see the "know issues" section below.

In Csscan documentation and help screens you see often to connect with Csscan as "system".

Please use "/ as sysdba" instead, do not use "system" as this will lead to errors.
Other syntax examples for connecting with "as sysdba":

More syntax is in point E) of Note 444701.1 Csscan output explained.

Example for LOCAL connection on Unix and OS user is in SYSDBA group:

$ export ORACLE_SID=<sid>

$ csscan \"/ as sysdba\" TABLE='(SYS.SQL_VERSION$)' FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000

--> hit enter at password prompt

or

$ export ORACLE_SID=<sid>

$ csscan TABLE='(SYS.SQL_VERSION$)' FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000

Enter "/ as sysdba" (without the qoutes) as username at the prompt, hit enter at the password prompt. 

Example for LOCAL connection on Unix and OS user is NOT in SYSDBA group (also works with user in SYSDBA group) :

$ export ORACLE_SID=<sid>

$ csscan \"sys/<syspassword> as sysdba\" TABLE='(SYS.SQL_VERSION$)' FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000

or

$ export ORACLE_SID=<sid>

$ csscan TABLE='(SYS.SQL_VERSION$)' FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000

Enter "/ as sysdba" (without the qoutes) as username at the prompt, provide the sysdba password at the password prompt.

 

Example for LOCAL connection on Microsoft Windows and OS user is in SYSDBA group

C:\>set ORACLE_SID=<sid>

C:\>csscan \"/ as sysdba\" TABLE=(SYS.SQL_VERSION$) FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000

--> hit enter at password prompt

or

C:\>set ORACLE_SID=<sid>

C:\>csscan TABLE=(SYS.SQL_VERSION$) FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000

Enter "/ as sysdba" (without the qoutes) as username at the prompt, hit enter at the password prompt. 

Example for LOCAL connection on Microsoft Windows and OS user is NOT in SYSDBA group (also works with user in SYSDBA group) 

C:\>set ORACLE_SID=<sid>

C:\>csscan \"sys/<syspassword> as sysdba\" TABLE=(SYS.SQL_VERSION$) FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000

or

C:\>set ORACLE_SID=<sid>

C:\>csscan TABLE=(SYS.SQL_VERSION$) FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000

Enter "/ as sysdba" (without the qoutes) as username at the prompt, provide the sysdba password at the password prompt.

Example for Windows with tnsnames alias:

C:\> csscan \"sys/<syspassword>@<TNSalias> as sysdba\" TABLE=(SYS.SQL_VERSION$) FROMCHAR=US7ASCII TOCHAR=US7ASCII LOG=instchkc CAPTURE=N PROCESS=1 ARRAY=1024000


5) Once Csscan is working properly.

To know what the output of Csscan means or information on the different options/parameters of csscan please see Note
444701.1 Csscan output explained.

Once you have read Note 444701.1 and if you where referred to this note from an other note about changing the NLS_CHARACTERSET
then please simply continue in the referring note.

Otherwise have a look at  Note 225912.1 Changing Or Choosing the Database Character Set ( NLS_CHARACTERSET ) for a note that describes
the change required.


6) Things good to know:

* Csscan will NOT update any user data, it's a SCAN tool.

* Csscan should always be runned on the SOURCE database, even if you plan to use exp/imp or expdp/impdp to do the actual change.

* Csscan will NOT change the database (national) characterset, but it does provides information to the Csalter script like what is the target characterset and if it's ok to do the change.

* The Csalter script checks whether a full database Csscan has been previously run within the last 7 days. If a full database scan has not been previously run within the last 7 days, then the Csalter script stops and reports an error.

* Your database does not need to be in restricted mode to run Csscan, you can run Csscan against a live, open database.

* Csscan will do a fetch of ALL data in CHAR, VARCHAR2, LONG and CLOB datatypes in your system. This may impact your system performance. The lower the "PROCESS" parameter the less impact but the longer it will take. You can compare each Csscan process with
a session doing full table scans.

* the Csscan ARRAY parameter determinates the amount of data that is fetched each time to be checked by Csscan, see the docset for more information. It may be useful to set this higher when using a remote client for the csscan executable.

* You CANNOT run more then one Csscan at the same time on a database (this includes RAC).

* You CANNOT run Csscan version 2.x against a 9i or lower system.

* You CANNOT run 11g Csscan (v2.2) against 10g - Note 818173.1 Csscan Fails With CSS-08888 And ORA-00904 

* You can run Csscan from a client, but this client needs to be the same base version as the database home.

* If you do not need to run Csscan anymore you can safely drop the Csmig user and it's objects. Seen Csalter.plb depends on Csscan results, only drop the csmig user after you have used Csalter.plb.


7) What to do if I want to use a later version of Csscan but I cannot upgrade my database?

If you want to use the same Csscan version but need to use a higher patchset then there is no problem using a client with the same base release and patch this client to the patchset release (ex: using
an 10.2.0.4 client against an 10.2.0.2 database). Make sure you run the Csminst.sql from the client and not from the database home.

Using a higher (or lower) Csscan client version (ex: using Csscan v2.2 using an 11.1.0.7 client against an 10.2.0.4 database) is not supported.


8) Known issues:

In general: when running csscan using OS background jobs please make sure the same settings and environment is used as when running it in a foreground session.
* the Csminst.sql file is doing two grants to SYSTEM

grant READ on directory log_file_dir to system

/

grant READ on directory data_file_dir to system

/

These grants are not needed, this is removed from Csminst.sql in 11.2 and 10.2.0.5. You can safely remove these lines or revoke the grants if needed. Csscan also does not use those directory's, so if you have an "ORA-22930 directory does not exist" running
Csminst.sql this can be ignored.

* When Csscan is used to migrate an Oracle Applications database it might "hang" on the ASO.ASO_ORDER_FEEDBACK_T table 

Please follow note 181410.1 Quoting/Order Capture Order Feedback Queue to clean up the ASO_ORDER_FEEDBACK_T table. For questions
about this note please log an SR with Oracle Applications support.

Note 284670.1 error /USR/LIB/PA20_64/DLD.SL UNABLE TO FIND LIBRARY 'LIBCLNTSH.SL.9.0' (10.1 only)

Note 363908.1 running csscan from a 10.2 installation on Solaris fails with ld.so.1: csscan: fatal

* for "error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory" and "csscan: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory" errors
whe starting csscan check if the LD_LIBARY_PATH is set properly as it must contain the directory <ORACLE_HOME>/lib. If it does not contain the directory <ORACLE_HOME>/lib then include the path $ORACLE_HOME/lib in LD_LIBRARY_PATH as shown below :$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
Note 762911.1 Csscan Shows Inconsistent Results for Lossy CLob Data
. Fixed in 10.2.0.5 and 11.2.0.1

Note 1105724.1 Csscan gives some incorrect lossy for BIG5 charactersets (ZHT16MSWIN950 , ZHT16HKSCS, ZHT16BIG5)
*  Bug 9948524 CSSCAN DOES NOT REPORT INVALID CODEPOINTS FOR
MSWIN AND ISO8859 CHARSETS

(internal bug - PROBLEM description is: CSSCAN does not correctly report invalid codepoints in the 0x80-0x9f range for *MSWIN* and *ISO8859* character sets. Take WE8MSWIN1252 for example, the invalid codepoints 0x81, 0x8d, 0x8f, 0x90, 0x9d should be reported
but they are treated as valid by CSSCAN. )

fixed in 12c and 11.2.0.3 and up

* When using Csscan on 11g and the FROMCHAR and TOCHAR parameters are the same then Csscan will give 1 "Lossy" row for XDB.XDB$COMPLEX_TYPE while in reality there is no "Lossy" data .

If you need a "clean" FROMCHAR=TOCHAR scan the workaround  is to use the csscan exclude=(XDB.XDB$COMPLEX_TYPE) option. ( use exclude='(XDB.XDB$COMPLEX_TYPE)' on Unix platforms - note the ' ' )

If you see this as first step to go to UTF8/AL32UTF8 and this is the only "lossy" then this can be ignored, it will not show up in later TOCHAR=AL32UTF8 scans

This is fixed in 11.2.0.3 , solved trough Bug 9658653 .

example of the sccan txt file entry:

Data Dictionary Tables:

USER.TABLE Convertible Truncation Lossy

-------------------------------------------------- ---------------- ---------------- ----------------

XDB.XDB$COMPLEX_TYPE 0 0 1

-------------------------------------------------- ---------------- ---------------- ----------------
* When XDB is in use one may also see

ORA-22337: the type of accessed object has been evolved

CSS-00144: failed to scan table XDB.XDB$SIMPLE_TYPE

ORA-22337: the type of accessed object has been evolved

CSS-00144: failed to scan table XDB.XDB$CONFIG
Both tables XDB.XDB$SIMPLE_TYPE and XDB.XDB$CONFIG do not contain text data which are important for changing the database characterset.

To avoid the error message,use the csscan exclude=(XDB.XDB$CONFIG,XDB.XDB$SIMPLE_TYPE) option

* If you get when starting csscan

CSS-00115: invalid character set name
then
  or the characterset name used is wrong (for example AL32UTF16 - this does not exist)
  or check the used PATH , ORA_NLS10 and ORACLE_HOME setting, you are starting csscan with a PATH , ORA_NLS10 or ORACLE_HOME pointing to a other version or wrong location.

* If csscan gives while running

ORA-01775: looping chain of synonyms

CSS-00142: failed to get table information

CSS-00140: failed to scan table (tid=1, oid=35515)

or

ORA-01775: looping chain of synonyms

ORA-24374: define not done before fetch or execute and fetch

CSS-00166: failed to report convertible data distribution 
then check the tablespace used for the csmig user/objects (default tablespace is SYSTEM) , most likely this is running out of space.

* If the scan phaze of csscan is ok but at the end only the .txt file is created and this is seen:

Creating Database Scan Summary Report...
ORA-01775: looping chain of synonyms

ORA-24374: define not done before fetch or execute and fetch

CSS-00166: failed to report conversion per table and column

CSS-00122: failed to create scan report

Scanner terminated successfully.

Then csminst.sql had errors and (some) objects where not created , if the error is ORA-01031: insufficient privileges then check on what objects and add a grant select
( for example add after the create user CSMIG an "Grant select on ALL_USERS to CSMIG" if the problem is on all_users) in csminst.sql and rerun csminst.sql

* If csscan gives while running

ORA-22925: operation would exceed maximum size allowed for a LOB value
Apply patch 5879179 for bug
5879179 ORA-22925 from CSSCAN when reading CLOB data

Fixed in 10.2.0.4 and 11g, mainly seen in 10.2.0.3 and only on 64 bit platforms

You need to patch the Csscan home - the patch replaces the Csscan executable

* If csscan gives while creating the Database Scan Summary Report

Creating Database Scan Summary Report...

ORA-1455: converting column overflows integer datatype

failed to report overall summary

failed to create scan report

Scanner terminated successfully.
This is bug 4414296 fixed in 9.2.0.8, 10.1.0.5, 10.2.0.1

* If csscan gives while starting:

Enumerating table to scan...

.

ORA-1455: converting column overflows integer datatype

.

ORA-1455: converting column overflows integer datatype

CSS-00157: failed to retrieve list of tables to scan

CSS-00120: failed to enumerate tables to scan

.

Scanner terminated unsuccessfully
then there is a/are table(s) with more than 2^31-1 blocks

This is bug 6494820 fixed in 10.2.0.4, 11.1.0.7 and up

* If you see errors while csscan is running like

ORA-01031: insufficient privileges

failed to scan table SYS.<some sys object>

combined with 

ORA-01455: converting column overflows integer datatype

failed to get table information

failed to scan table (tid=6, oid=393924)
then you are most likely using a non-sysdba connection for a FULL=Y scan.

* if you see only

ORA-01455: converting column overflows integer datatype

failed to get table information

failed to scan table (tid=6, oid=393924)
Then most likely the table is dropped during the csscan run: Note 245285.1 
CSSCAN fails with error "failed to scan table"

* if you see when starting csscan:

CSS-00117 failed to clear previous scan log

Failed to delete all rows from CSM$* tables.

This is an internal error. Contact Oracle Customer Support.
Then the fastest way to correct this is to simply re-run Csminst.sql.

* if you see when starting csscan:

Enumerating tables to scan...

ORA-00942: table or view does not exist

CSS-00152: failed to enumerate all tables

CSS-00120: failed to enumerate tables to scan
Then the wrong cminst.sql was runned. For example using csscan from an 10.2.0.4 client but the Csminst.sql that was used is the one from the 10.2.0.1 database oracle home. Please run the Csminst.sql from
the actual csscan home.

* if during the csscan run this error is seen

. process 2 scanning SCOTT.TEST[AAFbYKAAAAAAASCAAA]

ORA-00913: too many values

CSS-08888: failed to enumerate indexes to rebuild
Then and older csmig schema is installed in 11.2. For example the Csminst.sql that was used (in the past) is the one from the 11.2.0.1 and the current version is 11.2.0.3. Do a "drop
user csmig cascade;" and run the Csminst.sql from the current database home.

* if you see while csscan is running (or in the .out file) (seen on 11.2.0.1 mostly) errors like

. process 3 scanning XDB.SC_PT[AAADjfAAEAAAByIAAA]

ORA-30967: operation directly on the Path Table is disallowed

CSS-00144: failed to scan table XDB.SC_PT
this can be ignored - this is Bug 8728894, fixed in 11.2.0.2

* if you see while csscan is running (or in the .out file) (seen when using on 11g csscan) errors like

Enumerating table to scan...

. process 1 scanning SYS.SQL_VERSION$[AAAAHXAABAAAAQrAAA]

ORA-00904: "CNVTYPE": invalid identifier

CSS-08888: failed to update conversion type

Scanner terminated unsuccessfully.
Then this database was upgraded to 11g and the CSMIG user was not dropped before the 11g Csminst.sql was runned. Follow step 3)B) in this note.

OR an 11g csscan is beeing used against an 10G db, rerun the csminst script and then csscan from the 10g database home.

* During the Csscan run one might see "Message 9999 not found" messages

process 1 scanning <owner>.<table>[AAMKuTAAcAABnCJAAA]Message 9999 not found; No message file for product=RDBMS, facility=CSS
This can be ignored .

* Csscan sometimes fails the generate (a part of) the .err file (but the .txt file is generated):

Creating Database Scan Summary Report...

Creating Individual Exception Report...

CSS-00168: failed to report individual exceptions

.

or

.

CSS-00168: failed to report individual exceptions

CSS-00122: failed to create scan report

.

or

.

Creating Individual Exception Report...

ORA-1410: invalid ROWID

CSS-00168: failed to report individual exceptions

CSS-00122: failed to create scan report

Scanner terminated successfully.
The .err file also logs the first 30 bytes of the contents of the row (this is not cached/stored somewhere in CSMIG schema).

if this row has lossy/convertible / .. and has been deleted after it has been scanned then it's ROWID is indeed logged in csmig.csmv$errors .

When csscan then makes the .err file (wich is done after all scanning is done) it tries to get the first 30 bytes of a non-existing row and fails.

This has no impact on Csalter (which does not use the .err file) and all information ( type of Exception and rowid) is already stored in the CSMIG schema.

If this happens the scan itself was succesful and the information in the .txt file is correct.

Workarounds are:
in many cases the contentent of the .err file is not needed to do the conversion, in that case there is no problem
to avoid updates / deletes on the database during the Csscan.
use selects to get the needed information ( Note 444701.1 , point I) ) if the rowid are needed in a flat txt format or the
the contents of the rows are needed
This is mainly seen when using CAPTURE=Y seen the amount of data logged in the .err is then most of the time much bigger, so the risk of a row being deleted and provoking this is much bigger.

This is Bug 9823990 - csscan fails to generate .err file. , not fixed yet

* Csscan simply exits with "Scanner terminated unsuccessfully." on 11.1.0.7 on AIX

Character Set Scanner v2.2 : Release 11.1.0.7.0 - Production on Mon Jan 24 18:54:48 2011

Copyright (c) 1982, 2007, Oracle. All rights reserved

Scanner terminated unsuccessfully.

This is Bug 9647470 - csscan always be terminated with no trying to connect to instance

and happens when the DSTv10 RDBMS Patch 7580744 is applied to the 11.1.0.7 oracle home of csscan.

Possible workarounds:

* shut down the database, rollback Patch 7580744, do a relink all (this is needed!) , start the db again, run csscan , do the conversion if needed, then shutdown the db, apply Patch 7580744 again and do a relink all and dtart again

If no Timestamp with (local) timezone data is updated during the rollback and before the patch is re-applied (= you only do the characaterset change) then there is no need to run any of the TZ update scripts or so)

* use an 11.1.0.7 client (this can be a Windows client or a Linux system) or another 11.1.0.7 install on AIX that does NOT has Patch 7580744 applied and then use Csscan trought a sqlnet (tnsnames) connection to this system)

* if you see during csscan

. process 5 scanning <owner>.<table>[AAAGFCAOTAAAAAJAAA]

. process 9 scanning <owner>.<table>[AAAGFCAPRAAAAAJAAA]

. process 8 scanning <owner>.<table>[AAAGFCAPTAAAAAJAAA]

ORA-01410: invalid ROWID

CSS-00146: failed to save scan result for table

ORA-01410: invalid ROWID

CSS-00141: failed to save table scan start time

CSS-00140: failed to scan table (tid=6, oid=12144)

ORA-01410: invalid ROWID

CSS-00141: failed to save table scan start time

CSS-00140: failed to scan table (tid=6, oid=12144)

ORA-01410: invalid ROWID

....

Creating Database Scan Summary Report...

ORA-01405: fetched column value is NULL

CSS-00161: failed to report scan elapsed time

CSS-00122: failed to create scan report

Scanner terminated successfully.
then 2 or more csscans where started on the same database at the same time wich is NOT possible. There can only be ONE csscan running against a database (this is including RAC) at a certain time.

* errors during csscan like

process 6 scanning <owner>.<table>[AAIxAeAAYAAAp0FAAA]

ORA-01446: cannot select ROWID from, or sample, a view with DISTINCT, GROUP BY, etc.

CSS-00144: failed to scan table <owner>.<table>
are due note 1364607.1 ORA-1445 or ORA-1446 referencing ROWID from a
view with subquery 

* errors during csscan (mainly in 11.2) like

. process 4 scanning <owner>.<table>[AACCBFAAsAAAL7ZAAA]Errors in file :

OCI-21503: program terminated by fatal error

OCI-04030: out of process memory when trying to allocate 16328 bytes (koh-kghu sessi,kpccl2i: contiguous LOB locator alloc)

Errors in file :

OCI-21503: program terminated by fatal error

OCI-04030: out of process memory when trying to allocate 16328 bytes (koh-kghu sessi,kpccl2i: contiguous LOB locator alloc)

and

. process 4 scanning <owner>.<table>[AACgAhABbAAABVRAAA]

CSS-00100: failed to allocate memory size of 71856000

CSS-00100: 

. process 1 scanning <owner>.<table>+JuCJmARjgQ8CoCg0BGA==[AACgA4ABbAAABWhAAA]Message 9999 not found; product=CSMIG; facility=CSS

CSS-00102: failed to release memory, null pointer given

CSS-00102: failed to release memory, null pointer given

are due the OS ulimit values set to low for the OS user running csscan.

The exact message may vary depending on the ARRAY value set for csscan.

For 10g lower the ARRAY value note 813860.1  Csscan access violation under 10.2

* if csscan only generates a part of the .txt file and fails with

Creating Database Scan Summary Report...

CSS-00164: failed to report overall summary

CSS-00122: failed to create scan report

Scanner terminated successfully.
then re-run csminst.sql exactly as documented in this note with a SYSDBA connection.

* if csscan randomly errors out with "Bus error (coredump)" then first of all test by running only one csscan at the time from the same home (= do not scan multiple database at the same time using the same csscan executable).


9) What are all the Csscan Parameters?

The commonly used are covered in Note 444701.1 Csscan output explained

All Csscan parameters are documented in the documentation set.

example help screen:

C:\>csscan -help

Character Set Scanner v2.2 : Release 11.2.0.1.0 - Production on Wed Apr 14 15:35:40 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

You can let Scanner prompt you for parameters by entering the CSSCAN

command followed by your username/password:

Example: CSSCAN \"SYSTEM/MANAGER AS SYSDBA\"

Or, you can control how Scanner runs by entering the CSSCAN command

followed by various parameters. To specify parameters, you use keywords:

Example: CSSCAN \"SYSTEM/MANAGER AS SYSDBA\" FULL=y TOCHAR=utf8 ARRAY=1024000 PROCESS =3

Keyword Default Prompt Description

---------- ------- ------ -------------------------------------------------

USERID yes username/password

FULL N yes scan entire database

USER yes owner of tables to be scanned

TABLE yes list of tables to scan

COLUMN yes list of columns to scan

EXCLUDE list of tables to exclude from scan

TOCHAR yes new database character set name

FROMCHAR current database character set name

TONCHAR new national character set name

FROMNCHAR current national character set name

ARRAY 1024000 yes size of array fetch buffer

 PROCESS 1 yes number of concurrent scan process

MAXBLOCKS split table if block size exceed MAXBLOCKS

CAPTURE N capture convertible data

SUPPRESS maximum number of exceptions logged for each table

FEEDBACK report progress every N rows

BOUNDARIES list of column size boundaries for summary report

LASTRPT N generate report of the last database scan

LOG scan base file name of report files

PARFILE parameter file name

 PRESERVE N preserve existing scan results

LCSD N no enable language and character set detection

LCSDDATA LOSSY no define the scope of the detection

HELP N show help screen (this screen)

QUERY N select clause to scan subset of tables or columns

---------- ------- ------ -------------------------------------------------

Scanner terminated successfully.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐