网站建设资讯

NEWS

网站建设资讯

oracle怎么换字符集,oracle替换字符串中的字符

如何查看和修改Oracle数据库服务器端的字符集?

A、oracle server 端字符集查询

创新互联是一家专业提供清苑企业网站建设,专注与网站建设、网站设计、H5页面制作、小程序制作等业务。10年已为清苑众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

select userenv('language') from dual

其中NLS_CHARACTERSET 为server端字符集

NLS_LANGUAGE 为 server端字符显示形式

B、查询oracle client端的字符集

$echo $NLS_LANG

如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。

C、server端字符集修改

将数据库启动到RESTRICTED模式下做字符集更改:

SQL conn /as sysdba  Connected.

SQL shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。

. 1.oracle server端字符集查询        复制代码代码如下:    select userenv('language') from dual;    server字符集修改:    将数据库启动到RESTRICTED模式下做字符集更改:??

oracle10g服务器端是安装在AIX 6.0系统上,客户端是安装在windows server 2008 系统上,客户端与服务器已成功连接,但是数据库表里的中文字无法显示,显示为“?”,用SQLPLUS查得服务器端的字符集为AL16uTF16,如何修改该字符集使之支持中文呢?另外oracle10G客户端的字符集需不需要设置,如何查看和设置呢?

oracle字符集编码怎么修改

oracle数据库的字符集更改

A、oracle server 端 字符集查询

select userenv('language') from dual

其中NLS_CHARACTERSET 为server端字符集

NLS_LANGUAGE 为 server端字符显示形式

B、查询oracle client端的字符集

$echo $NLS_LANG

如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。

C、server端字符集修改

*****************************************************************

* 更改字符集步骤方法(WE8ISO8859P1 -- ZHS16GBK) *

*****************************************************************

SQL

将数据库启动到RESTRICTED模式下做字符集更改:

SQL conn /as sysdba

Connected.

SQL shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL startup mount

ORACLE instance started.

Total System Global Area 236000356 bytes

Fixed Size 451684 bytes

Variable Size 201326592 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

SQL ALTER SYSTEM ENABLE RESTRICTED SESSION;

System altered.

SQL ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

System altered.

SQL ALTER SYSTEM SET AQ_TM_PROCESSES=0;

System altered.

SQL alter database open;

Database altered.

SQL ALTER DATABASE CHARACTER SET ZHS16GBK;

ALTER DATABASE CHARACTER SET ZHS16GBK

*

ERROR at line 1:

ORA-12712: new character set must be a superset of old character set

提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:

SQL ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

Database altered.

SQL select * from v$nls_parameters;

19 rows selected.

重启检查是否更改完成:

SQL shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL startup

ORACLE instance started.

Total System Global Area 236000356 bytes

Fixed Size 451684 bytes

Variable Size 201326592 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

Database opened.

SQL select * from v$nls_parameters;

19 rows selected.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

D、client端字符集修改

在 /home/oracle与 /root用户目录下的.bash_profile中

添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 语句

关闭当前ssh窗口。

oracle安装后怎么修改字符集

数据库字符集在创建后原则上不能更改。不过有2种方法可行。

1. 如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。

2. 通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。

如何修改oracle的字符集编码

1. 备份数据库中所有用户的数据

以oracle用户登陆,执行以下命令

# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”

保持与数据库服务器端一致,这样在exp导出时,就不会存在字符的转换了,备份最原始的数据。

2. 评估UTF8转换成ZHS16GBK的风险

转换之前,要使用Oracle的csscan工具对数据库扫描,评估字符集转换前后,数据有可能的损坏情况。如果评估情况糟糕,那就绝对要放弃了。

先安装属于 CSMIG 用户的一套表和过程。以oracle用户登陆UNIX,

#sqlplus “/ as sysdab”

SQL@$ORACLE_HOME/ rdbms/admin/csminst.sql

SQLexit

# $ORACLE_HOME\bin\csscan -help

可以更清楚如何使用csscan。

# $ORACLE_HOME/bin/csscan system/sunday user=mmsc FROMCHAR=UTF8 TOCHAR=ZHS16GBK ARRAY=102400 PROCESS=3 csscan.log

以上命令意思是扫描用户:mmsc中的所有数据,从字符集UTF8更改为ZHS16GBK的转换情况。然后得到三个文件:scan.txt、scan.out、scan.err。

查看scan.out,scan.err,可以看出mmsc用户下的所有的数据都是可以转换的,并且没有出现转换“Exceptional”的情况,因此可以更放心一点。

3. 更改数据库的字符集为ZHS16GBK

前面说过,通过命令“Alter Database Characeter Set XXXX”,实现从超集到子集的转换,在Oracle是不允许的。但是该命令,提供这样的命令方式:

Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX

如何修改Oracle数据库字符集

[a]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。

客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,

表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

客户端的字符集要求与服务器一致,才能正确显示数据库的非ascii字符。如果多个设置存在的时候,alter session环境变量注册表参数文件

字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是american_america.zhs16gbk。

[a]8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。

startup nomount;

alter database mount exclusive;

alter system enable restricted session;

alter system set job_queue_process=0;

如何更改Oracle字符集

复制一段吧:

通常情况下,字符集是在安装的时候选定好的,需要修改数据库的字符集Oracle建议的做法是重建数据库(EXP/EXPDP导出后再导入),虽然Oracle官方文档也有说如何修改字符集,但这不是Orale推荐的方法.下面是Oracle官方文档中提到的如何修改字符集的方法.

1.查看当前数据库字符集

select * from nls_database_parameters

where parameter='NLS_CHARACTERSET';

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

PARAMETER VALUE

NLS_CHARACTERSET WE8ISO8859P1

这里的字符集WE8ISO8859P1是不支持中文的

2.将字符集修改为中文字符集ZHS16GBK

SQL shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL STARTUP MOUNT;

ORACLE instance started.

Total System Global Area 734003200 bytes

Fixed Size 1221564 bytes

Variable Size 264244292 bytes

Database Buffers 465567744 bytes

Redo Buffers 2969600 bytes

Database mounted.

SQL ALTER SYSTEM ENABLE RESTRICTED SESSION;

System altered.

SQL ALTER DATABASE OPEN;

Database altered.

SQL ALTER DATABASE CHARACTER SET ZHS16GBK;

ALTER DATABASE CHARACTER SET ZHS16GBK

*

ERROR at line 1:

ORA-12712: new character set must be a superset of old character set

SQL ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

Database altered.

SQL SHUTDOWN IMMEDIATE;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL startup

ORACLE instance started.

Total System Global Area 734003200 bytes

Fixed Size 1221564 bytes

Variable Size 264244292 bytes

Database Buffers 465567744 bytes

Redo Buffers 2969600 bytes

Database mounted.

Database opened.

这样将数据库的字符集由原来的WE8ISO8859P1修改成了ZHS16GBK,对原来的字符集有中文的显示的还是乱码,但对新入库的中文字符集就能正常显示.


网站标题:oracle怎么换字符集,oracle替换字符串中的字符
新闻来源:http://cdweb.net/article/hsddjd.html