10 数据库服务器字符集更改步骤
问题描述:
在客户端插入字符“咪咪”,从数据库中查询显示时出现乱码
处理步骤:
10.1 对数据库做全库导出,备份全库数据,以防故障发生
首先设定客户端的字符集,必须以ZHS16GBK的字符集导出,然后才能在更改失败后顺利倒入新建的库。
#setenv NLS_LANG "SIMPLIFIED CHINESE_CHINA.ZHS16GBK";
#stty -istrip -parity cs8;
#setenv LANG zh
拟在/sybdata(磁盘阵列)下建立一个目录orabak,用于存放dmp文件。
#mkdir /sybdata/orabak
#chown oracle:oinstall /sybdata/orabak
#su – oracle
#cd /sybdata/orabak
%exp system/manager@hnsdh file=hnsdh_2005-8-17 log=hnsdh_exp_2005-8-17 full=y
(此处命名为示例,以实施当日日期为准)
察看日志结尾,以判定导出是否成功。
#cat hnsdh_2005-8-17.dmp | od -x | head
看第二和第三个字节组成的十六进制数是多少可判断导出文件的字符集。
示例如下
#cat example.dmp | od -x | head
0000000 0303 5445 5850 4f52 543a 5630 392e 3032
。。。
0000220 646d 7000 0000 0000 0000 0000 0000 0000
十六进制的0354化为十进制为852,参造下表
NLS_CHARSET_ID NLS_CHARSET_NAME HEX_ID
-------------- ------------------------------ -------------
1 US7ASCII 1
2 WE8DEC 2
3 WE8HP 3
4 US8PC437 4
5 WE8EBCDIC37 5
6 WE8EBCDIC500 6
7 WE8EBCDIC1140 7
8 WE8EBCDIC285 8
...................
850 ZHS16CGB231280 352
851 ZHS16MACCGB231280 353
852 ZHS16GBK 354
853 ZHS16DBCS 355
860 ZHT32EUC 35c
861 ZHT32SOPS 35d
862 ZHT16DBT 35e
863 ZHT32TRIS 35f
864 ZHT16DBCS 360
865 ZHT16BIG5 361
866 ZHT16CCDC 362
867 ZHT16MSWIN950 363
868 ZHT16HKSCS 364
870 AL24UTFFSS 366
871 UTF8 367
872 UTFE 368
即可得出这个dmp文件的字符集为ZHS16GBK。
10.2 在数据库中直接更改字符集参数
操作步骤如下:
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 session set events '10046 trace name context forever,level 12';
SQL> alter database character set INTERNAL_USE ZHS16GBK;
SQL> shutdown immediate
SQL> startup
察看系统字符集
SQL> SELECT * FROM NLS_DATABASE_PARAMETERS;
看NLS_CHARACTERSET的值为多少,如果为ZHS16GBK则说明改动成功。
如果执行正常,则按照下一节进行测试操作。
10.3 更改成功后的测试
测试1,在数据库服务器端下测试
%setenv NLS_LANG "SIMPLIFIED CHINESE_CHINA.ZHS16GBK";
%stty -istrip -parity cs8;
%setenv LANG zh
%sqlplus /nolog
SQL〉conn / as sysdba
SQL〉create table test_tq (a char(20));
SQL〉insert into test_tq
1>(a)
2>values ('洣洣');
SQL〉select * from test_tq;
如显示为
A
--------------------
洣洣
则成功。
测试2,Windows客户端环境下测试
运 行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE, 第三步选择 ORACLE, 第四步选择 NLS_LANG, 键 入 与服 务 器 端 相 同 的 字 符 集(本例为:AMERICAN_AMERICAN.US7ASCII)。
右击我的电脑,然后点击属性,“高级”页面下,点击“环境变量”,在系统变量中添加:
变量名:NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
运行cmd,输入echo %NLS_LANG%,查看系统变量设置时否成功
然后运行:
$sqlplus system/manager@hnsdh
SQL〉conn / as sysdba
SQL〉create table test_tq (a char(20));
SQL〉insert into test_tq
1>(a)
2>values ('洣洣');
SQL〉select * from test_tq;
如显示为
A
--------------------
洣洣
则成功。
10.4 更改不成功时的措施
新建数据库,设定字符集为ZHS16GBK,其他参数先照搬原来的,并倒入数据。建库时所需的具体参数在重建之前要搜集。注意在配置控制文件时设定最大数据文件数。
建好数据库以后,执行以下命令即可恢复数据库
%cd /sybdata/orabak
%imp system/manager@hnsdh full=y ignore=y file=hnsdh_2005-8-17 log=hnsdh_imp_2005 -8-17
分享到:
相关推荐
oacle数据库 磁盘空间大小检测,及扩容
Oracle 19数据库维护是确保系统稳定运行的关键环节,涵盖了多个方面,如表空间管理、数据备份与恢复等。在Oracle数据库中,表空间是存储数据的基本单位,它由一个或多个数据文件组成,用于存储数据库对象如表、索引...
1. **数据库安装与配置**:Oracle 11g的安装过程涉及多个步骤,包括硬件和软件需求检查、选择安装类型(如企业版或标准版)、配置数据库实例、设置网络服务等。理解这些步骤对后续的数据库管理和维护至关重要。 2. ...
"Oracle 11g数据库学习笔记三" 本篇学习笔记主要讲解了Oracle 11g数据库中的数据伪列,包括ROWNUM和ROWID两种伪列的使用方法和应用场景。同时,也讨论了如何使用这些伪列来实现数据的分页功能和删除重复记录。 一...
3. **Oracle Instant Client**:轻量级的客户端组件,用于提供必要的网络通信和数据类型转换功能,不包含完整的Oracle数据库服务器功能。 4. **Oracle Developer Tools for Visual Studio**:集成开发环境(IDE)的...
重做日志文件则记录了所有对数据库的更改,确保在系统故障后可以恢复。 2. **第12章 逻辑存储结构**:这一章主要介绍逻辑存储结构,如表、索引、簇和视图等。表是数据的主要容器,索引则加速数据检索。簇是一组物理...
4. **典型安装**:在此阶段,建议更改Oracle基目录的路径,避免包含中文或特殊字符。同时,设置全局数据库名和管理员口令,记住,口令必须牢记,尽管Oracle建议的密码规则较为复杂,但你可以设置自己易于记忆的密码...
总结来说,安装Oracle数据库在Linux环境下,正确配置内核参数是确保数据库性能的关键步骤。这些参数涉及到共享内存、信号量、文件句柄限制以及网络缓冲区等,都需要根据实际需求和系统资源进行适当调整。
1. **配置RDA**: 首先,我们需要在数据库服务器上安装并配置RDA,确保它可以收集必要的性能数据。 2. **收集数据**: 使用RDA工具定期或按需收集AWR、ASH和ADDM数据。 3. **生成报告**: 分析不同时间段的快照,通过...
4. **表的创建与操作**:学习如何使用CREATE TABLE语句创建数据库表,以及如何使用ALTER TABLE修改表结构,DROP TABLE删除表,以及TRUNCATE TABLE清空表。 5. **索引**:索引可以加速数据检索。了解如何创建单列...
在ORACLE数据库中,冷备份通常包括以下几个步骤: 1. 关闭数据库:使用SQL命令`SHUTDOWN IMMEDIATE`或`SHUTDOWN TRANSACTIONAL`来确保所有事务完成并关闭数据库。 2. 复制数据文件和控制文件:备份实例的物理文件,...
1. **启动RMAN**:首先,需要以Oracle用户身份登录到数据库服务器,然后启动RMAN。 2. **连接目标数据库**:在RMAN环境中,使用`connect target /`命令连接到目标数据库。 3. **交叉检查归档日志**:使用`...
触发器是一种特殊的存储过程,它在数据库系统中自动执行,通常在满足一定条件下,如数据插入、修改、删除时触发执行。触发器相当于后台的一个进程,可以用来维护数据的完整性、日志记录等。 以上是Oracle DBA在学习...
oacle-10203事件的设置与查看
此时,你需要检查项目中的Oracle JDBC驱动,确保它与数据库服务器的版本相匹配。如果不匹配,就需要将项目中的旧驱动替换为新版本的JAR包,例如从ojdbc6替换为ojdbc7或ojdbc8。在替换后,记得清理项目缓存,重新编译...
- **免责声明**:文档中的信息可能随时更改,且不保证无错误。 #### 三、法律声明 - **受限权利通知**:如果文档交付给美国政府或代表美国政府的第三方,则其使用权受到Oracle许可协议及适用的美国政府合同条款的...
Oracle 10g 开发配置涉及一系列步骤,主要包括服务器配置、客户端远程登录数据库服务器以及相关软件的安装。以下是对这些知识点的详细说明: 1. **服务器配置**: - 远程服务器IP:166.111.134.26,这是服务器的...
Oracle Form 是Oracle数据库应用开发的重要组成部分,主要用于构建企业级的图形用户界面(GUI)应用程序,尤其是在Oracle E-Business Suite(EBS)环境中。本学习总结文档涵盖了Oracle Form的基础概念、设计原理、...