Server Administration :: Nvarchar (4000) With Setting Characterset To UTF8
Apr 22, 2010
Users are reporting that are unable to use the NVARCHAR(4000) due to the character set which is set in the database.
Currently NLS_CHARACTERSET is set to AL32UTF8
and NLS_NCHAR_CHARACTERSET from AL16UTF16
They want me to change both the character set to UTF8, so that they can use the NVARCHAR2(4000) datatype in their tables.
As UTF8 is the subset characterset and I did the cs scan and this found characterset can't be modified to UTF8 and there may be the data dictionary corruption.
Is there any other way so that users can use the NVARCHAR(4000) as datatype. And the reason why NVARCHAR2 is required is, users are trying to import the data from other database which is using NVARCHAR(4000) as one of the field.
My server version is:- 10.2.0.3.0 Here is the INIT Parameter file.
My question is, how it will affect if I configure the UTL_MAIL package by executing the Scripts ("utlmail.sql" and "prvtmail.plb")? And setting the Parameter SMTP_OUT_SERVER=''?
I have a simple question about database sessions. The value of parameter "sessions" is set to 500 and the users connect to database through an application server(Jboss). There are more than 500 users connect to the database through application.
My question is, how more than 500 users can connect to the database without any issue, if we set the value of "sessions" parameter to 500?
The Oracle Instance gets down while setting the Resource_manager_plan with internal error in trace file:
SQL> ALTER SYSTEM SET RESOURCE_MANAGER_PLAN='EST_EXEC_TM'; ALTER SYSTEM SET RESOURCE_MANAGER_PLAN='EST_EXEC_TM' * ERROR at line 1: ORA-03113: end-of-file on communication channel
i have created the DB LINK from Oralce 11gR2 to MS Sql Server 2005,am able to access the view of Sql Server from Oralce,but the Columns which have Datatype nvarchar(max) in Sql Server am not able to access through DB Link.
I've been following Metalink note 602952.1, 309815.1 and 605828.1
metalink note 602952.1 states Quote:Note: Keep in mind for ASMLIB disks you will need to use the /dev/dm-* disks instead of the /dev/mapper/mpath* devices since they are present in the partition table ==)> /proc/partitions and ASMLIB will look at that file during the disk discovering phase. If you do not use the disks located at /dev/dm-* then ASM will not be able to discover them. and to create ASM disks with Quote:/etc/init.d/oracleasm createdisk DISK1 /dev/dm-<disk><partition> Also further stating Quote:NOTE: When scanning, only the device names known by the kernel are scanned. With device-mapper, the kernel sees the devices as /dev/dm-XX. The /dev/mapper/XXX names are created by udev for human readability. Any configuration of ORACLEASM_SCANORDER or ORACLEASM_SCANEXCLUDE must use the dm prefix.My environment is RHEL5 and towards the end of the note it says Quote:Note: On release RH 5 the /dev/dm-N devices are not persistent, starting, these devices are no longer created by udev. So release RedHat 5 you can create the ASMLIB disks on the /dev/mpath/<partition> or /dev/mapper/<partition>
Therefore I created a ASM disk using /dev/mapper path and it is only visible on the node it was created. Even after scandisks on other node it is still not visible when listdisks/oracleasm-discover
I've also tried creating the asm disks with dm-12 option and the same, disk get created but not visible on the other node.
Moreover if I restart the oracleasm restart the disk disappears from the node that it was visible Quote:
[root@db2 ~]# /etc/init.d/oracleasm createdisk vol1 /dev/mapper/mpath6p1 Marking disk "vol1" as an ASM disk: [ OK ] [root@db2 ~]# ls -l /dev/oracleasm/disks/* brw-rw---- 1 oracle dba 253, 12 Nov 8 10:22 /dev/oracleasm/disks/VOL1 [root@db2 ~]# /etc/init.d/oracleasm scandisks Scanning the system for Oracle ASMLib disks: [ OK ]
[code]....
But disk lable is there and could be seen from both nodes on the same partition Quote:
head /dev/mapper/mpath6p1 VOL1ORCLDISKVOL1
My suspicion is on multipath configuration. I've tried both (not at the same time) combinations given below.
regarding sizing undo tablespace and undo_retention parameter.we have to implement the database in production system with 40 users but how much space should be allocated to undo tablespace is there any propotions related to virtual memory and the parameter.i have gone thru oracle doc's and some related sites.its an ERP aplications that contains 20 modules .I am an new one to this dba level
We got a big problem that we have a db link to connect to sql server(big 5).
In original setting, there is no Chinese characters in the data. We simply grab the data from sql server and do not have any issue. But now we have data with Big5. When we import the data into our Oracle DB, which uses UTF8, all the text becomes "?
Changing character set in DB is not possible. We need to convert the text into unicode format, or allow oracle/sql server to convert it automatically.
My client is using oracle 10 r2 on window 2003 server with arabic characterset WE8ISO8859P1. I am facing problem to understand the language specially in the case if any error occur it display me unknown characters.Is there any way to display it in English language??
I have also tried to change it in registry i.e changing NLS_LANG to AMERICAN_AMERICA.WE8ISO8859P1 but no success.Below are the parameters value of my database.also attach snapshot of sqlpromt.
i have created the DB LINK from Oralce 11gR2 to MS Sql Server 2005,able to access the view of Sql Server from Oralce,but the Columns which have Datatype nvarchar(max) in Sql Server am not able to access through DB Link.
We are running a brower based client application in a J2EE container on weblogic, connecting to the database using proxy authentication from a connection pool.
We want to set the logging level in the front end, which should set a PL/SQL package/session variable to the respective value.
Any subsequent calls to the DB layer (stored procs) would then log appropriate messages depending on what the logging level has been set to.
The trouble is that the calls to be database are not persistent and in different sessions, and therefore the second call (i.e. the call to the stored proc) would not 'know' what the first call (to set the package variable) has done.
Alternatively we can change all the stored procedures to accept an input parameter denoting the logging level, but I am sure there are other better options.
I am trying to store Chinese characters in certain fields in my database:
NLS_CHARACTERSET is UTF8 Version 11.2 Client NLS_LANG = UTF8 Client Region Settings = Simplified Chinese (PRC)
To Test - I have a string value I am trying to write to a field in Oracle. Looking at the source string with a hex editor, the multibyte value is E6 9C AC.
Looking the character up in UTF8 tables (U + 672C ) I can the symbol matches what I see when I look at the string with my editor.
I write the string to a field in Oracle. I can select from the field in SQLPlus and see the correct symbol.
However, when I dump the field I get the hex values B1,BE not E6 9C AC as I would expect.
explain why? And how is B1, BE getting translated back to the 'correct' symbol?
I am having a few issues trying to set up a physical standby database.
The primary database has a different naming structure than the standby and they are at different sites.
Physical is /var/hpsrp/ctrorp03/oradata/u0x/<DB_NAME>/<DB_UNIQUE_NAME> and standby is /var/hpsrp/drforp03/oradata/u0x/<DB_NAME>/<DB_UNIQUE_NAME>.
I have set db_file_name_convert to '<PRIMARY PATH>', '<STANDBY PATH>' times the number of paths as pairs. I have created a blank database for standby and having taken a full backup of primary with control file and standby control file.
Now I hit the issues:
The DB incarnation numbers are different. When I try and do a normal restore e.g. set dbid, restore controlfile; mount; it fails as it is trying to find files in the primary structure and not standby structure. When I try renaming via set newname or auxname it can't find files to restore I guess due to the incarnation id's. If I set the incarnation id and try to restore backup it fails as the incarnation id's don't match.
I have tried looking through various forums and the documentation but can't find a solution, probably can't see the wood for the trees though as there is so much.
How to write code in unicode/utf8 and used non-english variable written in different cases?The compiler is supposed to be case-insensitive. I just wonder how it handles case insensitivity for unicode or ut8 encoding.
I have a problem spooling flat files in utf 8. I have 3 different sql that needs to be spooled regulary in utf8 format.the first two containing special chars is spooled without any problem, but the third that is containg only numbers and pipe-s is spooled in ansi format.
i have set nls_lang=.utf8 in my shell script, but that only worked at the first two sql the last doesnt work.
I have also tried to convert file using iconv command, but the output is still in ansi (only works if i put a special char in the ansi file then it converts to utf8 without problem) if i open the file in notepad and save as utf8 then it works, but i cannnot reach the same from unix script.
Recently the Oracle10g database has been migrated to UTF8 character set and the following have failed.
1. The password applied is not getting encrypted and the password contains a spanish characters.
Getting the below error.
"10057:ERROR WHILE ENCRYPTING GIVEN STRING:String:Uñomasuño5.::ORA-28232: invalid input length for obfuscation toolkit:-28232:ORA-28232: invalid input length for obfuscation toolkit"
The algorithm used for encryption DES. I tried with DESENCRYPT , DES3ENCRPYT and MD5 and it failing.
I am using Oracle Version 11.2. Here's an example of what I am trying to do..
-- create table with a clob column create table sr_test (c1 CLOB)
-- load data that is more than 4000 characters into clob declare var1 varchar2(32000); begin var1:= '';
for i in 1..5000 loop var1:= var1||i||',';
end loop; dbms_output.put_line(var1); insert into sr_test(c1) values (var1); end;
-- select table to make sure clob is loaded
select c1, dbms_lob.getlength(c1) from sr_test
-- create procedure to return data from table
create procedure sr_p1(result out sys_refcursor) is begin open result for select c1 from sr_test; end;
-- run the procedure to get data
DECLARE RESULT sys_refcursor;
BEGIN RESULT := NULL;
ACCOUNTING.SR_P1 ( RESULT );
:rc0_RESULT := RESULT;
END;
Everything works as intended. However, this procedure is being called from Webservices. According to what I have been told, webservices adds 18ms for each clob that needs to be converted into char so it can be displayed on the screen. So, I need something like this
create procedure sr_p1(result out sys_refcursor) is begin open result for select dbms_lob.substr(c1,32000,1) from sr_test; end;
Is there an alternate method to send more than 4000 characters in the refcursor?
I have a insert statement where i need to insert data to a column where i need to insert value more than 4000 char into column.
Different approaches and condition: 1. CLOB should not be used 2. Need full value to be stored
Approach: 1.I created few more dummy columns to insert the data , was inserting 4000 char and if exceeded i was inserting to next column, but this will be tedious if we have 35000 char 2.Insert in the same column as different rows
I have error message when running duplicate : FRM-21011: PL/SQL unhandled exception ORA-06502..I'm trying to hold 4000 characters in a variable like what do below:
if s_str is NULL then s_str := eachcol.column_name||'{{'|| name_in(name_in('system.cursor_block')||'.'||eachcol.column_name)||'{{'; else s_str := s_str||eachcol.column_name||'{{'|| name_in(name_in('system.cursor_block')||'.'||eachcol.column_name)||'{{'; end if;
It's simple variable to hold value but still can't get by large string though.
i want to insert the text lenght containing more than 4000 characters, that column datatype is in CLOB Even though in CLOB we can able to store upto 4GB. Its not allowing me to insert more than 4000 characters at a time , but we can able to insert by splitting the data by 4000 and can append remaining characters But i am receving the text contains more than 4000, that how can i split the data upto 4000
I've to create a table which has 650 fields and the total length of CREATE TABLE statement got to be more than 4000 characters.I've to create the table by inserting the CREATE TABLE statment in a variable (V1) then by using EXECUTE IMMEDIATE V1 Since VARCHAR2 only supports upto 4000 characters length string, how can I create such table??
DECLARE V1 VARCHAR2(4000); BEGIN V1 := -- CREATE TALBE STATEMENT WITH LENGTH MORE THAN 4000 EXECUTE IMMEDIATE V1; END;
Quote:got the error -- PL/SQL: numeric or value error: character string buffer too small
In current form, i use *pll file to pass Global.<variable name> to the form *.fmb
The problem is that if i copy a string of 4000 characters (which i need to) to Global.<variable name>, it will automatically cut a whole chunk to shorter string (less than 1000).
Is there a better way to that Global.<variable name> can hold 4000 characters?
In my below query example , i have to pass more than 4000-5000 paramter in "a1.num" in below query. what is the best way to handle this, also if I pass more than 2000 paramter , the query takes a long time to execute. How can we solve the performance issue as well how I can pass more parameter.
I want to execute a DML query with execute immediate statement. That DML query length exceeds 4000 characters. This query has Xquery related conditions, i can not split the query. when i tried execute it is giving "string literal too long". I tried with DBMS_SQL.Parse() and DBMS_SQL.Execute also, but it is giving same error. I have to execute this DML query inside a Procedure. We are using oracle 10g version
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options
SQL> ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY "XXX"; ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY "XXX" * ERROR at line 1: ORA-28368: cannot auto-create wallet
As you can see the directory is not created.
ls -ld /oracle/10.2.0.1.0/network/admin/encryption_wallet ls: 0653-341 The file /oracle/10.2.0.1.0/network/admin/encryption_wallet does not exist.
The directory above where I want to create my wallet is owned by oracle, which is the user I am running sqlplus as (see below)