Oracle服务端与客户端字符集

Oracle服务端与客户端字符集
Oracle服务端与客户端字符集

Oracle客户端与服务端字符集

Oracle 数据库对字符的处理及表现形式分为三个层面,优先级先后分别是数据库初始化参数字符集、OS操作系统环境变量级、session级。

数据库初始化参数字符集是在建数据库前指定的字符集,使用如下语句查询数据库字符集:

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')

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

AMERICAN_AMERICA.ZHS16GBK

完整字符集名称分为三部分:语言_地域.字符集,这里以

AMERICAN_AMERICA.ZHS16GBK 和SIMPLIFIED CHINESE_CHINA.ZHS16GBK 为例说明各部分的含义:

语言决定了提示信息使用的语言,如AMERICAN表示使用英语,SIMPLIFIED CHINESE表示使用简体中文;

地域决定了缺省的日期格式等,如:

AMERICA的时间格式为:

SQL>select sysdate from dual;

SYSDATE

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

20-AUG-12

CHINA的时间格式为:

SQL>select sysdate from dual;

SYSDATE

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

20-8月-12

字符集的格式为<语言><比特位数><编码>比如: ZHS16GBK表示采用GBK 编码格式、16位(两个字节)简体中文字符集。

数据库建立后字符集原则上不要修改,如果修改可以用命令alter database set character set xxx; 不过这样修改有一定的危险,有可能会出现乱码造成数据的丢失,而且修改后的字符集一定是修改前字符集的超集,修改数据库字符集一般采用两种方法:

1.导出数据库数据,重建数据库,再导入数据库数据的方式来转换。

2.通过ALTER DATABASE CHARACTER SET语句修改字符集,具体操作

如下:

1)关闭数据库

SQL>SHUTDOWN IMMEDIATE

2)启动到Mount

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;

SQL>ALTER DATABASE NATIONAL CHARACTER SET ZHS16GBK;

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP

注:启动数据库后应将有改动的JOB_QUEUE_PROCESSES、AQ_TM_PROCESSES等参数修改为原有值。

NLS_CHARACTERSET设置服务器的字符集。

NLS_LANG客户端字符集定义了客户端字符数据的编码方式,任何发自或发往客户端的字符数据均使用客户端定义的字符集编码,客户端可以看作是能与数据库直接连接的各种应用。如:当某客户端的NLS_LANG配置的字符集为:SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280,但Oracle服务端配置的字符

集为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,这样通过客户端操作的字符数据将ZHS16CGB231280字符集编码,则可能导致一些ZHS16CGB231280字符集中不包含的特殊字符出现乱码。

SQL> select '闫珅豪' from dual;

'闫?豪'

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

闫?豪

因此在配置客户端字符集时应与Oracle服务端字符集保持一致,但是语言设置却可以不同,语言设置建议用英文。

设置客户端字符集可修改.cshrc或.bash_profile配置文件中的NLS_LANG与Oracle服务端一致的字符集,或使用如下命令:

cshrc:

setenv NLS_LANG "SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

bash_profile:

export NLS_LANG='SIMPLIFIED CHINESE'_CHINA.ZHS16GBK

总之,当业务数据存入数据库后中文字符出现乱码时,我们应当查看对数据库存在DML操作的子系统所在服务器配置的NLS_LANG,如果与数据库的字符集不一致,则需修改服务器的NLS_LANG与数据库字符集保持一致;同时,在创建数据库时选择正确的数据库字符集十分重要,这样可以避免由于修改数据库字符集造成的数据异常问题。

附录:Oracle字符集子集、超集对照表

Oracle字符集子集

、超集对照表.docx

ORACLE字符集

Oracle 的字符集 1、字符集基本概念 Character set 字符集是某系统支持的所有抽象字符(各种文字和符号的总称)的集合,包括各国家文字、标点、图形、数字等。Oracle字符集命名规则: <语言><比特位数><编码> ZHS16GBK表示采用GBK编码格式、16bit、简体中文字符集. Character Encoding 字符编码指怎么将字符变成字节用于保存、读取和传输。 单字节编码 单字节7位字符集,可定义128个字符,最常用的为US7ASCII,oracle最早支持的编码方案 单字节8位字符集,可定义256个字符,适合欧洲大部分国家 WE8ISO8859P1(西欧、8位) 多字节编码 变长多字节编码,某些字符用一个字节,某些字符用两个或多个字符表示,变长多字节编码常用于对亚洲语言的支持例如日语、汉语、印语等。AL32UTF8(AL 代表ALL,指适用于所有地区)、zhs16cgb231280 定长多字节编码,每一个字符都使用固定长度字节的编码方案,目前oracle 唯一支持的定长多字节编码是AF16UTF16,也是仅用于国家字符集。

Unicode 字符集 几乎包含人类所有可用的字符,每年还在不断的增加,可以看作是一种通用的字符集。它将全世界所有的字符统一化,统一编码,不会再出现字符不兼容和字符转换的问题。 UTF-16是unicode的16位编码方式,是一种定长多字节编码,用2个字节表示一个unicode字符。 UTF-8 是unicode 的8 位编码方式,是一种变长多字节编码,这种编码可以用1、2、3个字节表示一个unicode字符,AL32UTF8,UTF8、UTFE是UTF-8编码字符集 字符集超级 当一种字符集A的编码数值包含所有另一种字符集B的编码数值,并且两种字符集相同编码数值代表相同的字符时,则字符集A是字符集B的超级或称字符集B是字符集A的子集。Oracle8i和oracle9i官方文档资料中有子集-超级对照表(subset-superset pairs)例如:WE8ISO8859P1是WE8MSWIN1252的子集。由于US7ASCII是最早的Oracle数据库编码格式因此有许多字符集是US7ASCII的超集,例如WE8ISO8859P1、ZHS16CGB231280、ZHS16GBK都是US7ASCII的超集。 2、Oracle字符集基本原理 Oracle 通过NLS_LANG=language_territory.charset 设定对语言和字符集的支持,如AMERICAN_AMERICA.AL32UTF8,其实真正影响数据库字符集是第三部分。两个数据库的NLS_LANG只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。在一个创建好的数据库中这个参数是分部分存

服务器端与客户端建立并连接小Demo

服务器端代码: using https://www.360docs.net/doc/548225889.html,; using https://www.360docs.net/doc/548225889.html,.Sockets; Static void Main(string[] args){ Socket serverSocket=new Socket(AddressFamily.InterNetWork,SocketType.Stream,ProtocalTy pe.TCP); //new一个Socket对象,注意这里用的是流式Socket(针对于面向连接的TCP服务应用)而不是数据报式Socket(针对于面向无连接的UDP服务应用)。 IPAddress serverIP=IPAddress.Parse("127.0.0.1"); int port=2112; IPEndPoint ipEndPoint=new IPEndPoint(serverIP,port);//网络节点对象 serverSocket.Bind(ipEndPoint);//将结点绑定到套接字上 serverSocket.Listen(10);//设置连接队列的最大长度,可根据服务器的性能,可以设置更大程度。 Console.WriteLine("服务器已就绪准备客户端连接。。。。"); while(true){//循环监听端口,得到客户端连接 Socket socket=serverSocket.Accept();//当有客户端连接时,就产生一个socket实例 SessionServer sserver=new SessionServer(socket);//将socket实例传入到消息处理类中 Thread t=new Thread(sserver.GetClientMsg);//当有一个客户端连接,就启动一个线程来处理此客户端的消息 t.Start();

iCloud服务与客户端下载使用教程

iOS设备篇 苹果寄予厚望,在iOS5升级占有重要地位的iCloud云服务正式发布了。下面就让小编带领大家,体验苹果为我们奉上的云服务大餐。 在iOS设备中,首先需要确保升级iOS5。所有iOS5 GM版本以前的固件,都不被iCloud 云服务支持。相应的,电脑管理iTunes也要升级到10.5版本。 在iOS5固件更新完成后,系统在欢迎界面会自动提醒你注册Apple ID和打开iCloud 云服务。由于iOS5的众多服务都直接与Apple ID关联,所以注册一个自己使用的ID是必须的。 iOS5更新完成后,进入系统设置选项,即可以见到iCloud的各种设置菜单。在这里,你可以自由选择那些应用的数据需要备份,并管理自己的空间。苹果免费为每位用户提供5GB的存储空间,如果需要更多空间,可以支付20美元10GB每年的服务费用,增加自己的存储容量。不过对于大多数人来说,5GB的免费空间已经足够使用。

iCloud还有一项重要的功能,即是可以同步更新所有iOS设备上的应用。什么意思呢,也就是说如果你在电脑端购买了一款应用或者图书等,那么你所有打开了自动下载选项的iOS设备,将会自动在后台下载新增内容。等到你拿起iOS设备时,你设备中已经出现了新购买的应用。不过这项功能的选项,不在iCloud菜单中,而是另外一个单独的Store菜单里,在这里,你可以选择需要自动下载的内容。 为了方便使用,苹果还推出了PC专用的iCloud程序,可以将PC上的内容也与iCloud 服务进行同步和管理。 首先用户需要前往苹果官网下载一个专用的应用iCloud Control Panel,目前还没有推出中文版,只有英、法、德、日这四个iPhone4S首发国家语言,不过相信很快中文版就会推出。 下载地址为:https://www.360docs.net/doc/548225889.html,/kb/DL1455

客户端与服务器端交互原理

客户端与服务器端交互原理 经常看到HTTP客户端与服务器端交互原理的各种版本的文章,但是专业术语太多,且流程过于复杂,不容易消化。于是就按照在Servlet 里面的内容大致做了一些穿插。本来连Tomcat容器和Servlet的生命周期也准备在这里一起写的,但怕过于庞大,于是就简单的引用了一些Servlet对象。这样的一个整个流程看下来,相信至少在理解HTTP协议和request和response是如何完成从请求到生成响应结果回发的。在后续的一些文章里会专门讲一讲Tomcat和Servlet 是如何处理请求和完成响应的,更多的是说明Servlet的生命周期。 HTTP介绍 1. HTTP是一种超文本传送协议(HyperText Transfer Protocol),是一套计算机在网络中通信的一种规则。在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层。 2. HTTP是一种无状态的协议,意思是指在Web浏览器(客户端)和Web 服务器之间不需要建立持久的连接。整个过程就是当一个客户端向服务器端发送一个请求(request),然后Web服务器返回一个响应(respo nse),之后连接就关闭了,在服务端此时是没有保留连接的信息。 3. HTTP遵循请求/响应(request/response)模型的,所有的通信交互都被构造在一套请求和响应模型中。 4. 浏览Web时,浏览器通过HTTP协议与Web服务器交换信息,Web服务器向Web 浏览器返回的文件都有与之相关的类型,这些信息类型的格式由 MIME 定义。 HTTP定义的事务处理由以下四步组成: 1. 建立连接。 2?客户端发送HTTP请求头。 3. 服务器端响应生成结果回发。 4. 服务器端关闭连接,客户端解析回发响应头,恢复页面。

修改oracle字符集

测试的时候,本机oracle安装采用了utf8字符集,而项目的要求是gbk 字符集,为了防止以后有不同字符集数据信息导入导出的问题,整理以下文档。 修改oracle字符集新装了oracle,装为AL32UTF8格式,无奈一个工程导出包是ZHS16GBK格式,想了想办法转换,以下是学习 一、什么是oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。 影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中: Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK 从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。 二、如何查询Oracle的字符集 很多人都碰到过因为字符集不同而使数据导入失败的情况。这涉及三方面的字符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。 1、查询oracle server端的字符集 有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:SQL>select userenv(‘language’) from dual; 结果类似如下:AMERICAN _ AMERICA. ZHS16GBK (本机结果SIMPLIFIED CHINESE_CHINA.AL32UTF8) 2、如何查询dmp文件的字符集

搞懂oracle字符集

搞懂oracle字符集 作为一个ORACLE DBA,在工作中会经常处理由于字符集产生的一些问题。但是当真正想写一些这方面的东西时,却突然又没有了头绪。发了半天呆,还是决定用两个字符集方面的例子作为切入点,倒不失为一个头绪,说不定在实验的过程中,问题就会一个接着一个的浮现出来。 现在,让我们切入正题。 我用的数据库是oracle10.2.0.3,数据库字符集是al32utf8。 客户端就是同一台机器的windows xp. 下面是演示的例子: SQL>drop table test purge; Table dropped. SQL>create table test(col1number(1),col2varchar2(10)); Table created. --session1设置客户端字符集为zhs16gbk(修改注册表nls_lang项的characterset为zhs16gbk)向表中插入两个中文字符。 SQL>insert into test values(1,'中国');--1为session1的标记 1row created. SQL>commit; Commit complete. --session2设置客户端字符集al32utf8(修改注册表nls_lang项的characterset为al32utf8),与数据库字符集相同。向表中插入两个和session1相同的中文字符。 SQL>insert into test values(2,'中国');--2为session2的标记 1row created. SQL>commit; Commit complete. --session1 SQL>select*from test; COL1COL2 ------------------------------ 2??? 1中国

java实现一个简答而实际的TCP的服务端和客户端连接

java实现一个简答而实际的TCP的服务端和客户端连接 服务端: package com.server; import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import https://www.360docs.net/doc/548225889.html,.ServerSocket; import https://www.360docs.net/doc/548225889.html,.Socket; import https://www.360docs.net/doc/548225889.html,.SocketTimeoutException; import java.text.SimpleDateFormat; import java.util.Date; public class TcpIpServer { public static void main(String[] args) { // info Auto-generated method stub ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(7777); System.out.println(getTime()+"服务端准备好啦."); } catch (IOException e) { // info Auto-generated catch block e.printStackTrace(); } while(true){ try { System.out.println(getTime()+"等待连接请求."); // serverSocket.setSoTimeout(5*1000); Socket socket = serverSocket.accept(); System.out.println(getTime()+socket.getInetAddress()+"连接请求从这开始."); OutputStream out = socket.getOutputStream(); DataOutputStream dos = new DataOutputStream(out); dos.writeUTF("[Notice]Test Message1 from Server."); System.out.println(getTime()+"数据传送啦."); dos.close(); socket.close(); } //catch(SocketTimeoutException e){ // System.out.println("end!"); // System.exit(0); // } catch (IOException e) {

查看Oracle字符集及如何修改字符集

查看Oracle字符集及如何修改字符集 文章分类:数据库 一、什么是oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。 影响oracle数据库字符集最重要的参数是NLS_LANG参数。 它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。 其中: Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK 从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。 所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。 二.查看数据库字符集 这涉及三方面的字符集, 一是oracel server端的字符集; 二是oracle client端的字符集; 三是dmp文件的字符集。 在做数据导入的时候,需要这三个字符集都一致才能正确导入。 1、查询oracle server端的字符集 有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种: SQL>select userenv(‘language’) from dua l; 结果类似如下:AMERICAN _ AMERICA. ZHS16GBK 2、如何查询dmp文件的字符集 用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit 打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集: SQL> select nls_charset_name(to_number('0354','xxxx')) from dual; ZHS16GBK 如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上): catexp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6 然后用上述SQL也可以得到它对应的字符集。 3、查询oracle client端的字符集 这个比较简单。 在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。还可以在dos窗口里面自己设置,比如: setnls_lang=AMERICAN_AMERICA.ZHS16GBK 这样就只影响这个窗口里面的环境变量。

服务器和客户端通信

实验六基于TCP/IP的网络编程 1 实验目的 MFC提供的关于网络应用的类CSocket是一个比较高级的封装,使用它编制出属于自己的网络应用程序,可以编一个属于自己的网络通讯软件。通过这个实验,同学们也可以增进对于TCP/IP协议的理解。 2 实验内容 基于TCP/IP的通信基本上都是利用SOCKET套接字进行数据通讯,程序一般分为服务器端和用户端两部分。设计思路(VC6.0下): 第一部分服务器端 一、创建服务器套接字(create)。 二、服务器套接字进行信息绑定(bind),并开始监听连接(listen)。 三、接受来自用户端的连接请求(accept)。 四、开始数据传输(send/receive)。 五、关闭套接字(closesocket)。 第二部分客户端 一、创建客户套接字(create)。 二、与远程服务器进行连接(connect),如被接受则创建接收进程。 三、开始数据传输(send/receive)。 四、关闭套接字(closesocket)。 CSocket的编程步骤:(注意我们一定要在创建MFC程序第二步的时候选上Windows Socket 选项,其中ServerSocket是服务器端用到的,ClientSocket是客户端用的。) (1)构造CSocket对象,如下例: CSocket ServerSocket; CSocket ClientSocket; (2)CSocket对象的Create函数用来创建Windows Socket,Create()函数会自行调用Bind()函数将此Socket绑定到指定的地址上面。如下例: ServerSocket.Create(823); //服务器端需要指定一个端口号,我们用823。ClientSocket.Create(); //客户端不用指定端口号。 (3)现在已经创建完基本的Socket对象了,现在我们来启动它,对于服务器端,我们需要这个Socket不停的监听是否有来自于网络上的连接请求,如下例: ServerSocket.Listen(5);//参数5是表示我们的待处理Socket队列中最多能有几个Socket。(4)对于客户端我们就要实行连接了,具体实现如下例: ClientSocket.Connect(CString SerAddress,Unsinged int SerPort);//其中SerAddress是服务器的IP地址,SerPort是端口号。 (5)服务器是怎么来接受这份连接的呢?它会进一步调用Accept(ReceiveSocket)来接收它,而此时服务器端还须建立一个新的CSocket对象,用它来和客户端进行交流。如下例:CSocket ReceiveSocket; ServerSocket.Accept(ReceiveSocket); (6)如果想在两个程序之间接收或发送信息,MFC也提供了相应的函数。 (7)代码 package test.socket3; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;

Oracle服务器和客户端的安装(图解)

处于网络覆盖的时代,数据库对于现代社会和行业已经不是什么新鲜事物,它已经被运用到了社会生产和生活的各个领域。作于一款高性能、高生产率的数据库管理应用平台,Oracle9i在数据库管理、数据完整性检查、数据库查询性能、数据安全性方面都具有强大的功能,而且它在保密机制、备份与恢复、空间管理、开放式链接以及开发工具方面提供了不同手段和方法,总之,Oracle9i已成为现代企业高效率作业的利器,成为不同用户、开发者以及管理者不可多得的优秀软件工具。本文就简单介绍一下Oracle9i的网络数据库应用实现过程,由于Oracle9i庞大的功能,本文力求言简意赅,希望能为初学者带来抛砖引玉的效果。 资源准备: 工欲善其事,必先利其器,Oracle9i对系统资源要求比较高,如果缺少较高的硬件和软件的配置支持的话,它的运行效率将会大大折扣。 硬件配置: 应用: 本文主要讲解Oracle数据库在网络中的应用实现,考虑到读者的知识结构和文章的可读性,笔者根据数据库架设运作中访问方式的不同,将网络数据库的运用笼统的分为两种模式:一是基于服务器-客户机模式的,另一种是基于服务器-浏览器模式的。读者只需明白Oracle9i由于采用了Oracle Net机制,所以能够很容易地利用现有网络进行数据通信。 一、服务器-客户机模式 第一要务篇:安装 服务器端安装: 所谓服务器端就是用来做数据库服务器的电脑端,我们首先要做的事情肯定是要安装Oracle9i服务器,安装步骤如下:

图1 图2

将Oracle的第一张安装光盘放入光驱,光盘会自动启动,如图1所示,单击[开始安装按钮],进入Oracle通用安装器,见图2,单击[下一步]。 选择Oracle的安装路径和名称: 图3 在如图3所示的对话框中,选择Oracle的来源安装路径以及目标名称及路径。一般,安装产品文件名通常都为products,jar,系统会默认识别来源安装路径的。单击[下一步],继续安装。如果选择正确,你将看到装载产品的进度指示器。 选择安装Oracle9i数据库服务器:

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

Oracle 导入导出字符集乱码问题 导出/导入与字符集 进行数据的导入导出时,我们要注意关于字符集的问题。在EXP/IMP过程中我们需要注意四个字符集的参数:导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。 我们首先需要查看这四个字符集参数。 查看数据库的字符集的信息: SQL> select * from nls_database_parameters; PARAMETER VALUE ------------------------------ -------------------------------------------------------------------------------- NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CHARACTERSET ZHS16GBK NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM

NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_NCHAR_CHARACTERSET ZHS16GBK NLS_RDBMS_VERSION 8.1.7.4.1 NLS_CHARACTERSET:ZHS16GBK是当前数据库的字符集。 我的windows oracle编码为: NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHARACTERSET ZHS16GBK 我们再来查看客户端的字符集信息: 客户端字符集的参数NLS_LANG=_< territory >. language:指定oracle消息使用的语言,日期中日和月的显示。 Territory:指定货币和数字的格式,地区和计算星期及日期的习惯。 Characterset:控制客户端应用程序使用的字符集。通常设置或等于客户端的代码页。或者对于unicode应用设为UTF8。 在windows中,查询和修改NLS_LANG可在注册表中进行: HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOMExx\ xx指存在多个Oracle_HOME时的系统编号。 我这里的windows默认为: windows Client: NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK 在Linux redhat5中:

oracle服务器端与客户端配置

近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server)。本文现对监听配置作一简单介绍,并提出一些客户终端无法连接服务器端的解决思路,愿对广大网友与读者有一些帮助。 一、监听器(LISTENER) 监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。 二、本地服务名(Tnsname) Oracle客户端与服务器端的连接是通过客户端发出连接请求,由服务器端监听器对客户端连接请求进行合法检查,如果连接请求有效,则进行连接,否则拒绝该连接。 本地服务名是Oracle客户端网络配置的一种,另外还有Oracle名字服务器(Oracle Names Server)等。Oracle常用的客户端配置就是采用的本地服务名,本文中介绍的也主要是基于本地服务名的配置。 三、Oracle网络连接配置方法 配置Oracle服务器端与客户端都可以在其自带的图形化Oracle网络管理器(Oracle Net Manager)里完成(强烈建议在这个图形化的工具下完成Oracle 服务端或客户端的配置)。在Windows下,点击“开始/程序/Oracle - OraHome92/Configuration and Migration Tools/Net Manager”启动Oracle 网络管理器工具,在Linux/Unix下,利用netmgr命令来启动图形化Oracle网络管理器,如: $ netmgr Windows下启动Net Manager图形窗口如下图示:

oracle 修改字符集为ALU32UTF8

oracle 修改字符集 ZHS16GBK修改为AL32UTF8 oracle server 端字符集查询 selectuserenv('language') from dual 修改步骤如下面粗体字的命令: SQL> 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 INTERNAL_USE AL32UTF8; Database altered. 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.

java实现客户端与服务端之间的通信

import https://www.360docs.net/doc/548225889.html,.*; import java.io.*; import java.util.Calendar; import java.awt.*; import java.awt.event.*; class EchoClient extends Frame implements ActionListener,Runnable{ Thread t; static Calendar T; static int H; static int M; static int S; static String l; private Button b1 = new Button("发送"); private Button b2 = new Button("关闭"); private TextField t1 = new TextField(30); private TextArea t2 = new TextArea(); private int m; private String n; Socket connection; DataInputStream in; DataOutputStream out; private class window extends WindowAdapter{ public void windowClosing(WindowEvent e){ System.exit(0); } } private void focusEvt(java.awt.event.WindowEvent evt) { t1.requestFocus(); } public void clock(){ T=Calendar.getInstance(); H=T.get(Calendar.HOUR_OF_DAY); M=T.get(Calendar.MINUTE); S=T.get(Calendar.SECOND); l=String.valueOf(H)+":"+String.valueOf(M)+":"+String.valueOf(S); } public EchoClient(String i,int j){ super("客户端"); t = new Thread(this); m=j; n=i; t.start(); }

网络编程服务器与客户端编程

网络编程服务器与客户端编程2010-10-2915:50:08|分类:Linux下C语言| TCP编程的服务器端一般步骤是: 1、创建一个socket,用函数socket(); 2、设置socket属性,用函数setsockopt();*可选 3、绑定IP地址、端口等信息到socket上,用函数bind(); 4、开启监听,用函数listen(); 5、接收客户端上来的连接,用函数accept(); 6、收发数据,用函数send()和recv(),者read()和write(); 7、关闭网络连接; 8、关闭监听; TCP编程的客户端一般步骤是: 1、创建一个socket,用函数socket(); 2、设置socket属性,用函数setsockopt();*可选 3、绑定IP地址、端口等信息到socket上,用函数bind();*可选 4、设置要连接的对方的IP地址和端口等属性; 5、连接服务器,用函数connect(); 6、收发数据,用函数send()和recv(),或者read()和write(); 7、关闭网络连接; 与之对应的UDP编程步骤要简单许多,分别如下: UDP编程的服务器端一般步骤是: 1、创建一个socket,用函数socket(); 2、设置socket属性,用函数setsockopt();*可选 3、绑定IP地址、端口等信息到socket上,用函数bind(); 4、循环接收数据,用函数recvfrom(); 5、关闭网络连接; UDP编程的客户端一般步骤是: 1、创建一个socket,用函数socket(); 2、设置socket属性,用函数setsockopt();*可选 3、绑定IP地址、端口等信息到socket上,用函数bind();*可选 4、设置对方的IP地址和端口等属性;

Oracle服务端与客户端字符集

Oracle客户端与服务端字符集 Oracle 数据库对字符的处理及表现形式分为三个层面,优先级先后分别是数据库初始化参数字符集、OS操作系统环境变量级、session级。 数据库初始化参数字符集是在建数据库前指定的字符集,使用如下语句查询数据库字符集: SQL> select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.ZHS16GBK 完整字符集名称分为三部分:语言_地域.字符集,这里以 AMERICAN_AMERICA.ZHS16GBK 和SIMPLIFIED CHINESE_CHINA.ZHS16GBK 为例说明各部分的含义: 语言决定了提示信息使用的语言,如AMERICAN表示使用英语,SIMPLIFIED CHINESE表示使用简体中文; 地域决定了缺省的日期格式等,如: AMERICA的时间格式为: SQL>select sysdate from dual; SYSDATE ------------ 20-AUG-12 CHINA的时间格式为: SQL>select sysdate from dual; SYSDATE --------------

20-8月-12 字符集的格式为<语言><比特位数><编码>比如: ZHS16GBK表示采用GBK 编码格式、16位(两个字节)简体中文字符集。 数据库建立后字符集原则上不要修改,如果修改可以用命令alter database set character set xxx; 不过这样修改有一定的危险,有可能会出现乱码造成数据的丢失,而且修改后的字符集一定是修改前字符集的超集,修改数据库字符集一般采用两种方法: 1.导出数据库数据,重建数据库,再导入数据库数据的方式来转换。 2.通过ALTER DATABASE CHARACTER SET语句修改字符集,具体操作 如下: 1)关闭数据库 SQL>SHUTDOWN IMMEDIATE 2)启动到Mount 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; SQL>ALTER DATABASE NATIONAL CHARACTER SET ZHS16GBK; SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP 注:启动数据库后应将有改动的JOB_QUEUE_PROCESSES、AQ_TM_PROCESSES等参数修改为原有值。 NLS_CHARACTERSET设置服务器的字符集。 NLS_LANG客户端字符集定义了客户端字符数据的编码方式,任何发自或发往客户端的字符数据均使用客户端定义的字符集编码,客户端可以看作是能与数据库直接连接的各种应用。如:当某客户端的NLS_LANG配置的字符集为:SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280,但Oracle服务端配置的字符

服务器端授权模式和客户端授权模式解析

服务器端授权模式和客户端授权模式解析 服务器授权模式每服务器,同时连接数与每设备或每用户的区别 每服务器认证:指允许服务可以同时有多少个并发客户端用户访问的数量; 每客户认证:指你的每个客户端都有认证许可,客户端通过这个认证访问服务器; 举例如下: 公司有两台服务器:Server1,Server2; 客户端:100台; 若你选择每服务器认证,这个你就需要为Server1,Server2各选择100个认证,共计200个认证,才能满足100个客户端同时访问; 若你选择每客户认证,你只需100个客户认证,就能满足100个客户端访问的需求; 用户可以根据自己的需求选择不同的认证方式. 将本地服务器更改为每设备或每用户授权 1.在要配置的服务器上,打开“选择授权模式”。 2. 在“产品”中,单击要更改授权模式的产品。 3.单击“每设备或每用户”。 要打开某个“控制面板”项目,请单击“开始”,单击“控制面板”,然后双击“授权”。 服务器权限 可以配置IIS 指定Web 站点目录的下列权限,如读访问权限和目录浏览权限。理解Web 服务器权限和NTFS 权限之间的区别很重要。和NTFS 不同,Web 服务器权限适用于访问Web 和FTP 站点的所有用户。NTFS 权限只适用于拥有有效Windows 帐号的特定用户或用户组。NTFS 控制对服务器上物理目录的访问,而Web 和FTP 权限控制对Web 或FTP 站点上虚拟目录的访问。 如果您选择“每设备或每用户”模式,那么访问运行Windows Server 2003 家族产品的服务器的每台设备或每个用户都必须具备单独的“客户端访问许可证(CAL)”。通过一个CAL,特定设备或用户可以连接到运行Windows Server 2003 家族产品的任意数量的服务器。拥有多台运行Windows Server 2003 家族产品的服务器的公司大多采用这种授权方法。 相反,每服务器许可证是指每个与此服务器的并发连接都需要一个单独的CAL。换句话说,此服务器在任何时间都可以支持固定数量的连接。例如,如果您选择具有五个许可证的“每服务器”客户端授权模式,那么该服务器可以一次具有五个并发连接(如果每一个客户端需要一个连接,那么一次允许存在五个客户端)。使用这些连接的客户端不需要任何其他许 可证。 每服务器授权模式常常是只有一台服务器的小公司的首选。在客户端计算机可能没有被授权为Windows Server 2003 家族产品的网络客户端的情况下,这种授权模式对于Internet 或远程访问服务器也很有用。可以指定并发服务器连接的最大数量并拒绝任何额外的登录 请求。 如果您不能确定使用何种模式,那么请选择“每服务器”,因为您可以从“每服务器”模式更改为“每设备”或“每用户”模式,而无需任何代价。 每服务器和每客户端的区别 (转) ====================================================

Oracle字符集乱码问题解决方法

Oracle汉字乱码问题原因及解决方法 目录 问题现象 (1) 问题原因 (1) 解决办法 (3) 问题现象 在开发项目中一直使用的是PostgreSQL,安装方便使用与oracle类似,但是由于性能相比较Oracle还是会差不少,所以一些数据量比较大的项目还是会用到Oracle数据库,但是在安装数据库以后发现中文数据在数据库中会产生乱码,使用PlSql查询依然也是乱码。如下图所示: 问题原因 Oracle中出现中文乱码的主要原因是字符集不同。Oracle中对于字符集来说我们关心三个地方的字符集: ● Oracle服务器内部的字符集 ● NLS_LANG变量里保存的字符集 ● 客户端应用的字符集 Oracle服务器内部的字符集

Oracle服务器内部的字符集是Oracle数据库存储数据使用的字符集,可以使用如下的查询语句查询 Select userenv('language') from dual; 或者: Select name, value$ from props$; NLS_LANG变量里保存的字符集 NLS_LANG这个是Oracle设置的一个变量,在Windows中,这个变量保存在注册表中: HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0保存着NLS_LANG变量。 在Unix/Linux中,则需要自己进行设置了。可以在.profile里面加上 NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export NLS_LANG 客户端应用的字符集 Oracle客户端使用比较多的是PLSQL Developer 当然目前plsql客户端还不能很好的支持64为的Oracle 当然可以下载Oracle官方的客户端再通过关联可以使用plsql连接上64位的Oracle数据库,这与本文主题略有偏离便不详细描述了。 如果 Oracle服务器内部的字符集和 NLS_LANG变量里保存的字符集相同,在进行Oracle查询时,就会将Oracle中的数据直接查出来,返回给查询用户。进行Oracle的插入操作,就会直接将插入的数据保存进数据库中。 但是如果不同的话,Oracle查询时,会根据这两个字符集的一个映射,将数据库中的数据作一个转换,再返回给查询用户。进行插入操作时,也会根据映射,将插入的数据作一个转换,再插入数据库。这也是产生乱码的原因,这一层转换,把数据都给转乱了。

相关文档
最新文档