时间:2021-05-02
1.oracle server端字符集查询
复制代码 代码如下:
select userenv('language') from dual;
server字符集修改:
将数据库启动到RESTRICTED模式下做字符集更改:
复制代码 代码如下:
SQL>conn /as sysdba
SQL>shutdown immediate;
SQL>startup mount
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>alter database open;
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;
SQL>select * from v$nls_parameters;
重启检查是否更改完成:
复制代码 代码如下:
SQL>shutdown immediate;
SQL>startup
SQL>select * from v$nls_parameters;
我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验
这一方法在某些方面是有用处的,比如测试;应用于产品环境时大家应该小心,可能会有一些意外的问题。
2.oracle client端字符集修改
复制代码 代码如下:
$echo$NLS_LANG
client字符集修改:
在 /home/oracle与 /root用户目录下的.bash_profile中添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 语句
关闭当前ssh窗口。
注意:NLS_LANG变量一定要配置正确否则会引起sqlplus失效。
3.修改数据库字符集为UTF-8
1.以DBA登录
2.执行转换语句:
复制代码 代码如下:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT EXCLUSIVE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET UTF8;
SHUTDOWN IMMEDIATE;
STARTUP;
注意:如果没有大对象,在使用过程中进行语言转换没有什么影响!
可能会出现ORA-12717:CANNOT ALTER DATABASE NATIONAL CHARACTER SET WHEN NCLOBDATAEXISTS, 解决这个问题的方法
利用INTERNAL_USE 关键字修改区域设置
复制代码 代码如下:
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
先说MySQL的字符集问题。Windows下可通过修改my.ini内的default-character-set=utf8//客户端的默认字符集在MySQL客户
查看客户端字符集参数:select*fromnls_session_parameters;修改注册表的方法:Regedit.exe--HKEY_LOCAL_MA
PHPmysqli_set_charset()函数设置默认客户端字符集:这样的操作在针对中文字符非常有用,很多数据库查询乱码的情况都是字符集的问题。定义和用法m
在mysql客户端与mysql服务端之间,存在着一个字符集转换器。character_set_client=>gbk:转换器就知道客户端发送过来的是gbk格式的
查看一些数据库服务器和客户端的额字符集有没有不同的:复制代码代码如下:select*fromnls_database_parameters;select*fro