oracle查看字符集后修改oracle服务端和客户端字符集的步骤_oracle

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;

时间: 2024-10-27 21:12:14

oracle查看字符集后修改oracle服务端和客户端字符集的步骤_oracle的相关文章

scp ssh io-SCP执行到100%后卡住,服务端中文件缺少部分

问题描述 SCP执行到100%后卡住,服务端中文件缺少部分 从linux中scp到 cygwn时,时有发生卡在100%的问题 通过查看进程信息,得知client与server端的ssh连接未关闭: 有个方向: 通过查看成功scp文件的strace信息,发现一般read 数据大小为16324.49152,这些都是1024的倍数. 而scp失败的情况下,出现了read 32767(32768=1024*32).同时在网上查到,如果文件里出现''会发生pipe end的情况. 所以猜想文件传输过程中是

简易聊天程序中,C/S架构中C端通过能实现断开重连,为什么重连后不能接受服务端的对象。

问题描述 C/S描述:C端发送文本对象到S端,S端接受文本对象,并负责将文本对象发送到每个C端并显示.问题:现在通过try/catch捕获socket连接异常后,用调用原来的连接实现重连后,S端能接收到C端的对象且能将文本发送到C端.但是C端的接收消息的线程好像不能被重新打开,即C端不能接收S端的对象了.C/S架构中C端通过能实现断开重连,为什么重连后不能接受服务端的对象.importjava.awt.*;importjava.awt.event.*;importjava.io.*;import

java-关于web中的文件框,上传后如何在服务端获得文件在本地电脑上的位置

问题描述 关于web中的文件框,上传后如何在服务端获得文件在本地电脑上的位置 网页上的文件框选择了本地文件之后,点击上传,能在服务端接收到文件在我本地电脑上的位置么,怎么弄 解决方案 不同的浏览器不一样,不是所有浏览器都可以获得上传文件的本地路径.一个合乎标准的web程序不要期待可以获得文件的本地位置.如果你限定程序只支持pc,windows,使用IE内核,可以用fso获取. 解决方案二: 你获取客户端路径没有意义,安全性问题已经不回发客户端路径了 解决方案三: 获得上传文件file,有方法可以

Android Socket服务端与客户端用字符串的方式互相传递图片的方法_Android

发送图片: 首先找到具体传递的图片: <span style="font-family: comic sans ms,sans-serif; font-size: 16px;">private Bitmap getimage(String srcPath) { BitmapFactory.Options newOpts = new BitmapFactory.Options(); // 开始读入图片,此时把options.inJustDecodeBounds 设回true了

Git服务端和客户端安装过程

Git是一个开源的分布式的版本控制系统,由于git分布式体系结构,用户完全可以脱离git服务端在本地查看,编写和提交代码,而且Git的速度也非常快,适合大型,分布式的项目管理.下面是Git服务端和客户端安装的详细步骤. 1.物理环境 Git-server    Centos 5.8   git-1.8.3.tar.gz Git-client    Windows 7    SourceTreesetup.exe 2.Git服务端安装 2.1在http://pan.baidu.com/share/

java-使用socket通信服务端如何处理客户端请求

问题描述 使用socket通信服务端如何处理客户端请求 场景如下: 一个服务端,一个客户端通过socket连接服务端,假如客户端要请求服务端做一件事(如调用服务端A类的a方法), 因为socket传输的是字符串,所以我现在的做法是让客户端传一个标识符a到服务端,然后服务端 通过判断传过来的是a则调用A类的a方法, 如果我要执行A类的b方法,则传b过去再判断 我想问的是有没有更好的解决方案,或现成的框架可用 解决方案 如果你这样的需求,我觉得更适合HTTP.也许玩C++的更习惯于socket.之前

bad file descriptor-使用线程的TCP回射服务端和客户端运行时错误

问题描述 使用线程的TCP回射服务端和客户端运行时错误 服务端serv.c: #include "unp.h" #include <pthread.h> void str_echo(int sockfd) { char buf[MAXLINE]; int n; while(( n = read(sockfd,buf,sizeof(buf)))>=0) { if (n ==0) { printf("client EOF,its use shutdown soc

netty-Netty服务端和客户端的连接保持只有一个

问题描述 Netty服务端和客户端的连接保持只有一个 在实现了服务端和客户端的连接后,客户端每次重启后都和服务端进行重连,导致了一堆的channle的出现.但是只有一个最后一次的channel是有用的,其他都在timeout的时候回收.但是本身建立这么多channel是很费资源的,我如何保证一个客户端只和服务端建立一个长连接,其他都无法建立起来呢.我现在实现的框架是netty,请高手指点 解决方案 http://www.open-open.com/lib/view/open14288901877

tcp协议 udp协议-C#服务端请求客户端数据

问题描述 C#服务端请求客户端数据 我想在客户端安装一个服务后,能够向客户端请求数据,返回数据给服务器,这样用什么协议要好,socket行吗?服务端怎么发起这个请求,麻烦各位大神帮帮忙? 我不清楚的地方,如果用socket,保存客户端连接后,我要请求客户端数据,只能是客户端请求服务端,而我换成服务端请求客户端好像只能是客户端请求后服务端回复. 如果是UDP的话好定义请求和回复问题吗? 解决方案 ok,既然是.net,就有.net的最佳做法,wcf双工通讯或signalr.我在论坛都分享过例子.