修改oracle字符集(修改为:ZHS16GBK)

合集下载

ORACLE乱码问题解决

ORACLE乱码问题解决
'NCHAR VARYING',
'UNKOWN'),
96,
DECODE(CHARSETFORM, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
一、修改oracle 字符集
由于Oracle 默认安装了SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1字符集,不修改中文会出现乱码现象,输入如下命令:
[oracle@localhost ~]$sqlplus ‘/as sydba’
SQL>shutdown immediate
SQL>Startup restrict
SQL>select userenv('language') from dual;
SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1
SQL>UPDATE sys.PROPS$ SET value$='ZHS16GBK' WHERE NAME='NLS_CHARACTERSET';
5.ALTER SYSTEM SET AQ_TM_PROCESSES=0;
6.ALTER DATABASE OPEN;
9.COL VALUE NEW_VALUE CHARSET
10.SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
1,
'VARCHAR2',
2,
'NVARCHAR2',

oracleZHS16GBK的数据库导入到字符集为AL32UTF8的数据库(转载+自己经验总结)

oracleZHS16GBK的数据库导入到字符集为AL32UTF8的数据库(转载+自己经验总结)

oracleZHS16GBK的数据库导⼊到字符集为AL32UTF8的数据库(转载+⾃⼰经验总结)字符集⼦集向其超集转换是可⾏的,如此例 ZHS16GBK转换为AL32UTF8。

导出使⽤的字符集将会记录在导出⽂件中,当⽂件导⼊时,将会检查导出时使⽤的字符集设置,如果这个字符集不同于导⼊客户端的NLS_LANG设置,字符集将根据导⼊客户端NLS_LANG设置进⾏转换,如果必要,在数据插⼊数据库之前会进⾏进⼀步转换。

通常在导出时最好把客户端字符集设置得和数据库端相同,这样可以避免在导出时发⽣不必要的数据转换,导出⽂件将和数据库具有相同的字符集。

即使将来会把导出⽂件导⼊到不同字符集的数据库中,这样做也可以把转换延缓⾄导⼊时刻。

当进⾏数据导⼊时,主要存在以下两种情况:1.源数据库和⽬标数据库具有相同字符集设置这时,只需要设置NLS_LANG等于数据库字符集即可导⼊(前提是,导出使⽤的是和源数据库相同字符集,即三者相同)2.源数据库和⽬标数据库字符集不同如果我们导出时候使⽤的NLS_LANG是和源数据库相同的字符集,那么导⼊时就可以设置客户端NLS_LANG等于导出时使⽤的字符集,这样转换只发⽣在数据库端,⽽且只发⽣⼀次。

例如:如果进⾏从ZHS16GBK到UTF8的转换1)使⽤NLS_LANG=AMERICAN_AMERICA.ZHS16GBK导出数据库。

这时创建的导出⽂件包含ZHS16GBK的数据2)导⼊时使⽤NLS_LANG=AMERICAN_AMERICA.ZHS16GBK这时转换仅发⽣在insert数据到UTF8的数据库中。

含有汉字的固定字符由ZHS16GBK数据库导⼊到AL32UTF8的数据库此⽂章是对于上⼀个实验的补充,上⼀次实验仅仅考虑的 varchar2 的情况。

这次考虑到对于char类型的含有中⽂数据的情况。

对于英⽂:对英⽂,在al32utf8中仍然和zhs16gbk⼀样⽤1个字节表⽰,因此导⼊固定长度英⽂字符数据时不会出错。

ORACLE修改数据库的字符集编码为UTF-8

ORACLE修改数据库的字符集编码为UTF-8

ORACLE修改数据库的字符集编码为UTF-81、查看数据库字符集?数据库服务器字符集: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。

2、修改Oracle的字符集,如下例把字符集GB2312修改为UTF-8 步骤: 1.在SQL*PLUS 中,以DBA登录 conn ⽤户名 as sysdba 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;注意:如果没有⼤对象,在使⽤过程中进⾏语⾔转换没有什么影响,(切记设定的字符集必须是ORACLE⽀持,不然不能start)按上⾯的做法就可以,但是可能会出现ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data existsORA-12717: 存在 NCLOB, NCHAR 或 NVARCHAR2 数据时, 不能发出 ALTER DATABASENATIONAL CHARACTER SET 命令这样的提⽰信息要解决这个问题有两种⽅法⼀个是,利⽤INTERNAL_USE 关键字修改区域设置,还有⼀个是利⽤re-create,但是re-create有点复杂,所以请⽤internal_use, 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 INTERNAL_USE UTF8; SHUTDOWN IMMEDIATE; STARTUP;如果按上⾯的做法做,National charset的区域设置就没有问题。

ORACLE数据库中文字符集与英文字符集的转换

ORACLE数据库中文字符集与英文字符集的转换

摘要:早期,河北邯郸电力公司的应用系统的后台oracle数据库基本采用us7ascii英文字符集,而后期随着中文字符集的加入,现引入oracle数据库大部分采用zhs16gbk中文字符集,导致公司应用系统之间数据交互出现问题。

本文利用oracle数据库参数可临时调整的特性,将英文数据库的用户数据移植过来。

实现了将oracle数据库英文字符集到中文字符集数据库移植,方便统一管理维护。

关键词:oracle、英文字符集、中文字符集1.引言oracle公司是世界上最大的数据库软件公司,与sybase、infomix公司一样,oracle 数据库的应用比较广泛[1]。

河北邯郸电力公司后台应用系统就选用了oracle数据库,在oracle实际应用工作中,由于引入时间先后的原因,应用系统数据库早期主要采用英文字符集us7ascii,而后来又主要采用中文字符集zhs16gbk不同oracle字符集数据库的存在容易造成以下几方面的问题:需要进行0racle客户端字符集的切换;公司内部不同字符集数据库的数据在无法进行正常的数据交互和传递;目前省公司以及省公司其他下属单位安装的oracle数据库均一致为采用的是中文字符集,这样就造成邯郸供电公司与省公司无法进行数据交互。

严重影响了系统的运行效率及省公司应用系统的推广工作。

本人通过对公司前后不同数据库字符集的研究分析,制定了一套实现中文字符集到英文字符集转换的方法,该方法应用到公司应用系统,达到了不同应用系统之间实现资源共享的目标。

2.oracle字符集计算机不仅能处理数值,还能处理诸如文字、非凡符号等其他信息,而计算机本身能直接处理的只有数值信息,所以就要求对这些文字、符号信息进行数值编码,最初的字符集是我们都非常熟悉的ascii,它是用7个二进制位来表示128个字符,而后来随着不同国家、组织的需要,出现了许许多多的字符集,如表示西欧字符的is08859系列的字符集,表示汉字的gb2312—80、gbk等字符集[2]。

oracle导入出现字符集问题解决办法

oracle导入出现字符集问题解决办法

oracle导入出现字符集问题解决办法场景:把一台linux上的oracle库的数据捣腾到一台 windows2003上的oracle库中,在捣腾的过程中乱码了!有经验的知道多半是要改windows的注册表。

注册表打开发方式:Win98/98SE/Me运行中输入regedit.exe 无权限限制Win2000/XP1.开始>>运行.中输入regedt322.开始>>运行.中输入regedit第一种方法打开的注册表编辑器和Win98下的一样,而且功能相同,而使用第二种方法打开的注册表编辑器则可以方便的设置权限,建议网络管理员使用第2种方法打开注册表编辑器修改需要修改的权限设置部分以免被他人恶意修改。

Windows Vista/71.在开始菜单搜索框中输入regedit并按回车键.(需要管理员权限)2.在运行中输入regedit.exe(需要管理员权限)1. NLS_LANG 参数组成NLS_LANG参数由以下部分组成:NLS_LANG=<language>_<territory>.<client character set>Language:指定Oracle消息使用的语言,校验,日期中月份和日显示。

Territory:指定默认日期、数字、货币等格式,地区和计算星期及日期的习惯。

Client character set:控制客户端应用程序使用的字符集例如:NLS_LANG=AMERICAN_7ASCIIAMERICAN是语言,AMERICA是地区,US7ASCII是客户端字符集通常设置或者等于客户端(如Windows)代码页或者对于unicode应用设置为UTF8在Windows上查看当前系统的代码页可以使用chcp命令:E:\>chcp活动的代码页: 936代码页936也就是中文字符集 GBK,在Microsoft的官方站点上,我们可以遭到关于936代码页的具体编码规则,请参考以下链接:/globaldev/reference/dbcs/936.htm2. 查看 NLS_LANG 的方法Windows使用:注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG查看Unix使用:env|grep NLS_LANG如:/opt/oracle>env|grep NLS_LANGNLS_LANG=AMERICAN_CHINA.ZHS16GBKWindows客户端设置,可以在注册表中更改NLS_LANG,具体键值位于:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\xx指存在多个ORACLE_HOME时系统编号。

Oracle查看字符集

Oracle查看字符集

Oracle查看字符集1.查看字符集1⼀、oracle服务端字符集2 SQL> select userenv('language') from dual ;34 USERENV('LANGUAGE')5 ----------------------------------------------------6 AMERICAN_AMERICA.ZHS16GBK789⼆、oracle客户段字符集10112.1 window环境下,修改注册表ORACLE_HOME⽬录下的环境变量NLS_LANG。

12132.2 unix/linux环境下,就是环境变量$NLS_LANG1415 [oracle@wang ~]$ echo $NLS_LANG16 AMERICAN_AMERICA.ZHS16GBK1718查看数据库字符集1920数据库服务器字符集select * from nls_database_parameters;,其来源于props$,是表⽰数据库的字符集。

2122 客户端字符集环境select * from nls_instance_parameters;,其来源于v$parameter,表⽰客户端的字符集的设置,可能是参数⽂件,环境变量或者是注册表23 24如何查询dmp⽂件的字符集2526⽤oracle的exp⼯具导出的dmp⽂件也包含了字符集信息,dmp⽂件的第2和第3个字节记录了dmp⽂件的字符集。

如果dmp⽂件不⼤,⽐如只有⼏M或⼏⼗M,可以⽤UltraEdit打开(16进制⽅式),看第2第3个字节的内容,如0354,然后⽤以下SQL查2728 SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;2930 ZHS16GBK3132如果dmp⽂件很⼤,⽐如有2G以上(这也是最常见的情况),⽤⽂本编辑器打开很慢或者完全打不开,可以⽤以下命令(在unix主机上):33cat exp.dmp |od -x|head -1|awk'{print $2 $3}'|cut -c 3-634然后⽤上述SQL也可以得到它对应的字符集2.od 命令解释#od命令功能说明:输出⽂件内容。

oracle中文乱码解决方法

oracle中文乱码解决方法

oracle中文乱码解决方法oracle中文乱码解决方法1. Oracle数据库设置数据库参数NLS_LANG为使Oracle数据库中存储与显示中文时无乱码问题,可以更改Oracle数据库的数据库参数NLS_LANG,更改该参数为中文字符集,如:simplified Chinese_China.ZHS16GBK,此参数设置会对数据库中的所有字符数据有效。

2. Oracle数据库中多个字符集混用的解决方案一般系统及数据库常用的字符集可能存在多样性,例如全角字符、英文字母、空格等,而Oracle数据库支持了多个字符集,用户可以在数据库中多个字符集混合使用。

例如,用UTF8字符集对中文、英文、全角字符编码;用UTF16字符集对Unicode字符编码;用GBK/GB2312字符集对中文字符编码。

3. 注意SQL语句及字符集的指定为了防止运行SQL语句时出现乱码,应当在SQL语句中指定运行的字符集,如:ALTER SESSION SET NLS_LANGUAGE=AMERICAN_AMERICA.AL32UTF84. 客户端应用指定编码格式对于客户端应用,如sqlplus、PL/SQL开发工具,需要在连接之前指定客户端编码格式以确保传输与显示时无乱码问题,这种解决方案比较常用,在客户端应用中设置NLS_LANG参数,让客户端的中文字符使用Unicode,例如: NLS_LANG = SIMPLIFIED CHINESE_CHINA.UTF8 即可成功连接Oracle数据库解决乱码问题。

5. 数据导入导出中文处理从其他数据库导入Oracle数据库时,应从源数据库中查找出字段编码,在导入时将字段编码转换成Oracle数据库中的字符编码,可以增加数据库中文字符的正常显示。

从Oracle数据库导出数据至其他数据库,应将Oracle 数据库中的字符编码转换成目标数据库的编码方式,以保证导出数据无乱码状况。

6. 中文乱码的原因分析中文乱码的常见原因之一是程序的编码格式未正确设置,将GBK/GB2312等字符集与UTF-8 等Unicode字符集混用,也会出现中文乱码的情况。

修改oracle会话字符集

修改oracle会话字符集

修改oracle会话字符集-概述说明以及解释1.引言1.1 概述概述部分是文章引言的一部分,在这部分中,我们介绍文章的主题和背景,总结讨论的目的和重要性。

下面是可以在概述部分中包含的内容:概述:Oracle是一种流行的关系数据库管理系统(RDBMS),被广泛用于许多企业和组织的数据管理和存储。

在Oracle数据库中,会话是与数据库建立的连接相关联的重要概念。

会话字符集是指用于存储和处理会话中的字符数据的编码集。

本文将讨论如何修改Oracle会话字符集。

会话字符集的选择在数据存储和处理过程中扮演着至关重要的角色。

正确选择和设置会话字符集可以确保数据的准确性和完整性,并且能够正确地处理各种字符集和语言。

在本文的正文部分,我们将首先介绍Oracle会话字符集的基本概念和操作原理。

然后,我们将深入讨论修改Oracle会话字符集的必要性,包括解释为什么有时需要修改会话字符集以满足特定的业务需求。

接下来,我们将详细阐述修改Oracle会话字符集的方法和步骤。

这包括在数据库级别和会话级别进行字符集的修改。

我们还会介绍一些常见的问题和注意事项,以帮助读者避免潜在的错误或数据损坏。

通过本文的阅读,读者将能够了解到修改Oracle会话字符集的重要性,并学习到正确设置和操作会话字符集的方法。

这将对数据库管理员和开发人员在处理多语言数据和跨国业务时具有重要意义。

总之,本文旨在为读者提供一个全面的指南,帮助他们理解和掌握修改Oracle会话字符集的技巧和方法。

通过正确设置和操作会话字符集,读者将能够更好地处理和管理Oracle数据库中的多语言数据,提高数据的质量和可靠性。

1.2文章结构文章结构部分内容:文章结构是指文中的章节安排和组织方式,它有助于读者理解文章的脉络和逻辑关系。

本文按照引言、正文和结论三个部分进行组织和阐述。

引言部分首先概述了修改Oracle会话字符集的背景和意义,介绍了文章的主要目的和内容。

接着,文章结构部分对整篇文章进行了简要的概述和分类,以帮助读者更好地掌握文章的框架。

修改Oracle数据库实例字符集

修改Oracle数据库实例字符集

修改Oracle数据库实例字符集Ø简介在 Oracle 中创建数据库实例后,就会有对应使⽤的编码字符集。

当我们设置的字符集与操作系统或者其他软件字符集不⼀致时,就会出现中⽂乱码等情况。

此时我们就需要修改 Oracle 数据库使⽤的字符集,下⾯是修改 Oracle 字符集的具体步骤:Oracle ⼀般使⽤以下两种字符集:1.SIMPLIFIED CHINESE_CHINA.ZHS16GBKGBK 16-bit Simplified Chinese 能够⽀持繁体中⽂,并且按照2个字符长度存储⼀个汉字。

2.SIMPLIFIED CHINESE_CHINA.AL32UTF8多字节存储,1个汉字(简体、繁体)有时采⽤3个字符长度存储。

Oracle⽀持字符集的更改,但是UTF8是Oracle中最⼤的字符集,也就是说UTF8是Z HS16GBK的严格超集。

⾸先,我们查看数据库实例所使⽤的字符集:sqlplus "/as sysdba"select userenv('language') from dual;当前(orcl)使⽤的是 CHINESE_CHINA.AL32UTF8 字符集,下⾯进⾏修改:1.运⾏ CMD2.进⼊指定数据库实例set ORACLE_SID=ORCL #"ORCL"表⽰需要修改字符集的数据库实例名3.输⼊命令sqlplus /nolog4.登录数据库conn /as sysdba5.关闭数据库实例SHUTDOWN IMMEDIATE;6.打开控制⽂件STARTUP MOUNT;7.开启限制会话模式ALTER SYSTEM ENABLE RESTRICTED SESSION;--ALTER SYSTEM DISABLE RESTRICTED SESSION; #取消限制会话模式8.设定job队列可以启动的进程数ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;说明:JOB_QUEUE_PROCESSES=0,则DBMS_JOB作业和Oracle Scheduler作业将不会在实例上运⾏。

64位oracle数据库安装和初始化字符集设置

64位oracle数据库安装和初始化字符集设置

64位oracle数据库安装和初始化字符集设置以下以安装oracle11g 为例,安装环境为win764位机器,为了减少因浏览器不兼容带来的问题,推荐使用IT。

首先分为四大步骤,一、安装oracle数据库二、安装oracle数据库客户端三、安装sql/plus开发工具四、初始化字符集设置(调试字符集乱码问题)咱们看一下详细情况:一、安装oracle数据库,从网上下载一下oracle数据库,按要求安装。

二、安装oracle数据库客户端1、下载instantclient-basic-win32-11.2.0.1.0.zip (一定得是32位的,不要下错了版本,Oracle官网有下载),将其解压至Oracle安装目录的Product下(本机命名为:instantclient_11_2):C:\oracle11g\product拷贝数据库安装根目录下的一个文件夹:C:\oracle11g\product\11.2.0\dbhome_1\NETWORK到Oracle客户端目录下C:\oracle11g\product\instantclient_11_2(其实只需要NETWORK\ADMIN\tnsnames.ora)2、设置环境变量(修改PATH和TNS_ADMIN环境变量):右击"我的电脑" - "属性" - "高级" - "环境变量" - "系统环境变量":1).选择"Path" - 点击"编辑", 把" C:\oracle11g\product \instantclient_11_2;" 加入;2).点击"新建", 变量名设置为"TNS_ADMIN", 变量值设置为" C:\oracle11g\product \instantclient_11_2;", 点击"确定";3>.点击"新建", 变量名设置为"NLS_LANG", 变量值设置为"SIMPLIFIED CHINESE_CHINA.ZHS16GBK", 点击"确定";三、安装sql/plus开发工具从网上下载PLSQL714开发工具,安装时目录选择在如图(路径不正确可能会安装不成功。

ORACLE遭遇ORA-12899错误

ORACLE遭遇ORA-12899错误

imp导入数据到ORACLE遭遇ORA-12899错误错误信息:IMP-00019: row rejected due to ORACLE error 12899IMP-00003: ORACLE error 12899 encounteredORA-12899: value too large for column "JRGAZX"."DTLMB"."CC" (actual: 66, maximum: 50)初步断定是字符集问题,中文在UTF-8里占3个字节,ZHS16GBK里占2个字节,而源dmp文件字符集是ZHS16GBK的库到出来的,现在要导入到目标字符集为UFT-8的库里。

修改oracle 10g的字符集Oracle修改数据库字符集为:ZHS16GBK查看服务器端字符集SQL > select * from V$NLS_PARAMETERS修改:$sqlplus /nologSQL>conn / as sysdbaSQL>SHUTDOWN IMMEDIATESQL>STARTUP MOUNTSQL>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报字符集不兼容,此时下INTERNAL_USE指令不对字符集超集进行检查:SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;SQL>SHUTDOWN IMMEDIATESQL>STARTUP再次用imp导入,就没有问题了。

oracle编码格式从UTF-8转换为GBK

oracle编码格式从UTF-8转换为GBK

近日有同事在外面部署系统时,安装数据库时可能选择了UTF-8编码格式,导入insert语句时,一个汉字被认为三个字节,这是不行的。

结合上网搜到的资料,将oracle数据库的编码格式,从utf-8改为GBK后,一切正常了。

附:PLSQL执行记录:---------------------------Microsoft Windows [版本6.0.6002]版权所有(C) 2006 Microsoft Corporation。

保留所有权利。

C:\Users\Administrator>sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on 星期一9月3 11:39:04 2012 Copyright (c) 1982, 2010, Oracle. All rights reserved.SQL> conn / as sysdba已连接。

SQL>SHUTDOWN IMMEDIATE数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount;ORACLE 例程已经启动。

Total System Global Area 778387456 bytesFixed Size 1374808 bytesVariable Size 377488808 bytesDatabase Buffers 394264576 bytesRedo Buffers 5259264 bytes数据库装载完毕。

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;系统已更改。

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;系统已更改。

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;系统已更改。

Oracle 安装参数配置

Oracle 安装参数配置

一:Oracle安装版本选择在64位的操作系统上,要尽量安装64位的Oracle,在排查635号执法音视频故障单时发现,现有线上Oracle存在64位机器上安装32位Oracle现象。

二:Oracle安装时字符集项目实施安装Oracle数据库时,工程人员需要根据具体项目跟项目负责人进行确认其数据库字符的参数要求。

默认为ZHS16GBK。

不同的字符集不同语言文字其存储占用字节数是不同的,如一个汉字在UTF-8下占3个字节,在ZHS16GBK则占两个字节。

后期调整字符集命令:ALTER DATABASE CHARACTER SET ZHS16GBK;三:Oracle 监听配置(658号故障单)彻底避免此问题,可在安装Oracle配置监听时,HOST配置为localhost即可。

后期修改:则可通过Oracle 安装目录\NETWORK\ADMIN\ listener.ora四:Oracle SGA、PGA、process参数配置(635号故障单)Oracle SGA、PGA、process参数配置可以分为安装时预估估算设置和上线后(运行一段时间的)调优优化设置两个优化调整步骤进行。

名词解释:(1)SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。

(2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)。

共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。

(3)缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能。

(4)大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境。

oracle常用命令

oracle常用命令

--关闭数据库Oracle自动搜集功能alter system set "_optimizer_autostats_job"=false scope=spfile--修改表的默认表空间alter table 表名 move tablespace 表空间名;--修改索引表空间ALTER INDEX 索引名 REBUILD tablespace 表空间名;--修改LOB类型默认表空间ALTER TABLE SIGNATUREWORD MOVE LOB(IMAGE) STORE AS (TABLESPACE CZDJ);--创建数据表空间(表空间名称CZDJ,表空间文件大小1024M,数据文件满后自动扩展增量100MB,文件大小无限制)create tablespace CZDJ(表空间名)datafile 'd:\oracle\product\10.2.0\oradata\orcl\ CZDJ.dbf'(存放路径)size 1024m AUTOEXTEND ONNEXT 100m maxsize unlimited;--创建临时表空间create temporary tablespace dzdj31cz_temp (表空间名)tempfile 'd:\oracle\product\10.2.0\oradata\orcl\dzdj31cz_temp01.dbf'size 32Mautoextend onnext 32M maxsize 2048Mextent management local;本地管理表空间:extent management local字典管理表空间:extent management dictionary--修改表空间alter database datafile 'D:\oracle\product\10.2.0\oradata\orclzhaowei\test.dbf' resize 10m; alter database datafile 'D:\oracle\product\10.2.0\oradata\orclzhaowei\test.dbf' autoextend on next 50m maxsize unlimited;--创建用户并指定表空间create user 用户名 identified by 密码default tablespace 默认表空间temporary tablespace 临时表空间;--修改用户密码alter user 用户名 identified by 密码;--给表空间增加数据文件ALTER TABLESPACE sdeADD DATAFILE 'D:\oracle\product\10.2.0\oradata\orcl\sde01.dbf' size 20480M autoextend on next 50M maxsize unlimited;--给用户授予权限grant connect,dba,resource to 用户名--给用户解锁alter user username account unlock;--OraOLEDB.Oracle.1没有注册解决方法:regsvr32 D:\oracle\product\10.2.0\db_1\BIN\OraOLEDB10.dll--查询表空间状态select tablespace_name,status from dba_tablespaces;--表空间离线在线:离线的表空间无法访问,用于数据维护。

修改oracle字符集(修改为:ZHS16GBK)

修改oracle字符集(修改为:ZHS16GBK)
Database closed.
Database dismounted.
ORACLE instance shut down.
11.启动数据库到mount状态
SQL&gt; startup mount
ORACLE instance started.
Total System Global Area 205520896 bytes
PARAMETER VALUE
---------------------------------------- ----------------------------------------
NLS_CHARACTERSET WE8ISO8859P1
Total System Global Area 205520896 bytes
Fixed Size 1266608 bytes
Variable Size 100666448 bytes
Database Buffers 100663296 bytes
一、在Redhat上安装Oracle 11g没有设定字符集,采用的是操作系统默认字符集,由于过程不可逆,首先需要备份数据库。
1.数据库全备
2.查询当前字符集
SQL&gt; select * from nls_database_parameters where parameter=&#39;NLS_CHARACTERSET&#39;;
Redo Buffers 2924544 bytes
Database mount&gt; alter system enable restricted session;

Oracle中英文字符集转换解决方案

Oracle中英文字符集转换解决方案

Oracle 中英文字符集转换解决方案背景说明:目前国内用户使用的ORACLE字符集,大部分所采用的都是ZHS16GBK –GBK 16位简体中文,而很少采用US7ASCII – ASCII 7位美国英语。

现在所遇到的问题就是,如何解决在US7ASCII字符集和ZHS16GBK字符集的数据库实例下进行数据访问,以及进行导入、导出数据的时候出现汉字乱码的问题。

解决方案:目前比较好的解决方案在网上几乎是没有的,也是行不通的,对于其他单位或许会有相应的解决方案,但是也会因为是内部资料或者保密,或者流失。

经过近期的研究,总算有了一个比较好的解决方案。

其中采用的主要方法是利用ORACLE的utl_raw包中的cast_to_varchar2()、cast_to_raw()两个方法。

服务器架构如下图所示:目标数据库服务器图1.1 服务器数据存储结构如上图所示,有两台服务器,目标要求在“应用服务器”访问的“目标数据库服务器”上能读取“源数据库服务器”上的数据,但是由于“目标数据库服务器”和“源数据服务器”的数据库字符集不一致,所以简单的建立一个dblink进行数据的访问就会出现汉字乱码的问题,所以还要进行一些字符的转换工作,步骤如下:1、首先在“源数据库服务器”上建立视图,供“目标数据库服务器”调用。

视图建立的规则:将视图中中文汉字的字段进行转换,转换函数为cast_to_raw(),如 a表中有a1,a2,a3三个字段,其中a2字段内容为中文汉字,那么建立的视图的语句就可以是:2、在“目标数据库服务器”建立dblink:如:3了。

格式如下:如上所示,我们基本就能完成在“目标数据服务器”对“源数据库服务器”的数据访问,但是目前网站程序不允许实时去访问“源数据库服务器”,而且也不能在“源数据库服务器”建立视图。

所以要在自己的“目标数据库服务器”上同时建立一个ZHS16GBK业务数据库实例和一个US7ASCII 的中间转换数据库实例,通过“中间转换数据库实例”使用dblink连接“源数据库服务器”实现数据的共享和实时连接,然后在“业务数据库实例”下通过dblink再连接“中间转换数据库实例”进行字符集的转换。

Oracle导入导出字符集乱码问题

Oracle导入导出字符集乱码问题

Oracle 导入导出字符集乱码问题导出/导入与字符集进行数据的导入导出时,我们要注意关于字符集的问题。

在EXP/IMP过程中我们需要注意四个字符集的参数:导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。

我们首先需要查看这四个字符集参数。

查看数据库的字符集的信息:SQL> select * from nls_database_parameters;PARAMETER VALUE--------------------------------------------------------------------------------------------------------------NLS_LANGUAGE AMERICANNLS_TERRITORY AMERICANLS_CURRENCY $NLS_ISO_CURRENCY AMERICANLS_NUMERIC_CHARACTERS .,NLS_CHARACTERSET ZHS16GBKNLS_CALENDAR GREGORIANNLS_DATE_FORMAT DD-MON-RRNLS_DATE_LANGUAGE AMERICANNLS_SORT BINARYNLS_TIME_FORMAT HH.MI.SSXFF AMNLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AMNLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZMNLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM NLS_DUAL_CURRENCY $NLS_COMP BINARYNLS_NCHAR_CHARACTERSET ZHS16GBKNLS_RDBMS_VERSION 8.1.7.4.1NLS_CHARACTERSET:ZHS16GBK是当前数据库的字符集。

不支持的字符集(在类路径中添加orai18n.jar):ZHS16GBK

不支持的字符集(在类路径中添加orai18n.jar):ZHS16GBK

不⽀持的字符集(在类路径中添加orai18n.jar):ZHS16GBK 不⽀持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK报错图⽰:报错内容:Exception in thread "main" java.sql.SQLException: 不⽀持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBKat oracle.sql.CharacterSetUnknown.failCharsetUnknown(CharacterSetFactoryThin.java:233)at oracle.sql.CharacterSetUnknown.convert(CharacterSetFactoryThin.java:194)at oracle.jdbc.driver.PhysicalConnection.throughDbCharset(PhysicalConnection.java:10402)at oracle.jdbc.driver.PhysicalConnection.enquoteIdentifier(PhysicalConnection.java:10479)at oracle.jdbc.driver.OracleStatement.enquoteIdentifier(OracleStatement.java:6452)at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3853)at oracle.jdbc.driver.InsensitiveScrollableResultSet.findColumn(InsensitiveScrollableResultSet.java:270)at oracle.jdbc.driver.GeneratedResultSet.getString(GeneratedResultSet.java:596)at com.courage.apacheDBUtils.DBUtilsTest.main(DBUtilsTest.java:17)解决⽅案:根据报错信息提⽰,导⼊orai18n.jar或者在pom.xml中添加orai18n.jar的依赖<!-- https:///artifact/com.oracle.database.nls/orai18n --><dependency><groupId>com.oracle.database.nls</groupId><artifactId>orai18n</artifactId><version>19.7.0.0</version></dependency>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Total System Global Area 205520896 bytes
Fixed Size 1266608 bytes
Variable Size 100666448 bytes
Database Buffers 100663296 bytes
SQL> show parameter aq_tm_processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
Database mounted.
12.将相关参数改回原来值
SQL> alter system set job_queue_processes=10;
System altered.
13.打开数据库
SQL> alter database open;
Database altered.
出现错误提示,新字符集必须是老字符集的超集,也就原来字符集是新字符集的子集,可以再Oracle官方文档上查询字符集包含关系。下面使用Oracle内部命令internal_use,跳过超集检查,生产环境不建议使用此方法。
SQL> alter database character set internal_use ZHS16GBK;
3.关闭数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
4.启动数据库到mount状态
SQL> startup mount
ORACLE instance started.
ห้องสมุดไป่ตู้
问题依旧在
我的Orcl
SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
一、在Redhat上安装Oracle 11g没有设定字符集,采用的是操作系统默认字符集,由于过程不可逆,首先需要备份数据库。
1.数据库全备
2.查询当前字符集
SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
Redo Buffers 2924544 bytes
Database mounted.
5.限制session
SQL> alter system enable restricted session;
System altered.
6.查询相关参数并修改
SQL> show parameter job_queue_processes;
Database altered.
9.查询当前字符集
SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
Database closed.
Database dismounted.
ORACLE instance shut down.
11.启动数据库到mount状态
SQL> startup mount
ORACLE instance started.
Total System Global Area 205520896 bytes
---------------------------------------- ----------------------------------------
NLS_CHARACTERSET ZHS16GBK
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 10
aq_tm_processes integer 0
SQL> alter system set job_queue_processes=0;
System altered.
7.打开数据库
SQL> alter database open;
Database altered.
Fixed Size 1266608 bytes
Variable Size 100666448 bytes
Database Buffers 100663296 bytes
Redo Buffers 2924544 bytes
---------------------------------------- ----------------------------------------
NLS_CHARACTERSET ZHS16GBK
10.关闭数据库
SQL> shutdown immediate
PARAMETER VALUE
---------------------------------------- ----------------------------------------
NLS_CHARACTERSET WE8ISO8859P1
8.修改字符集
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
相关文档
最新文档