<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>月影鹏鹏 &#187; databases</title>
	<atom:link href="http://jk.aiwaly.com/wp/category/it-technology/databases/feed" rel="self" type="application/rss+xml" />
	<link>http://jk.aiwaly.com</link>
	<description>不断探索,追求卓越,做快乐自己</description>
	<lastBuildDate>Thu, 29 Mar 2012 01:09:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>oracle中修改密码的方法</title>
		<link>http://jk.aiwaly.com/wp/oracle-change-password.html</link>
		<comments>http://jk.aiwaly.com/wp/oracle-change-password.html#comments</comments>
		<pubDate>Fri, 16 Sep 2011 09:17:13 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://jk.aiwaly.com/?p=3096</guid>
		<description><![CDATA[

用OS认证方式登陆，即是CONNECT / AS SYSDBA 登陆，然后修改密码就是了
ALTER USER SYS IDENTIFIED BY ****
ALTER USER SYSTEM IDENTIFIED BY ****
然后你可以改变成密码文件认证。
9i 中可以以oracle登陆操作系统，　设置好ORACLE_HOME和ORACLE_SID环境变量, 启动sqlplus
使用conn / as sysdba登陆数据库，　然后就可以用alter user sys identified by &#8220;newsyspassword&#8221;来修改sys的密码了，　修改system密码也是一样．
数据库版本：9.2.0.5
有时候我们可能不知道一个用户的密码，但是又需要以这个用户做一些操作，又不能去修改掉这个用户的密码，这个时候，就可以利用一些小窍门，来完成操作。
具体操作过程如下：
SQL*Plus: Release 9.2.0.5.0 &#8211; Production on 星期日 11月 21 13:32:34 2004
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
SQL&#62; connect sys/oracle as sysdba
已连接。
SQL&#62; select username,password from dba_users;
USERNAME                       PASSWORD
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
SYS                            8A8F025737A9097A
SYSTEM                         2D594E86F93B17A1
DBSNMP                         [...]]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/oracle-change-password.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DotProject数据库乱码处理</title>
		<link>http://jk.aiwaly.com/wp/dotproject-mysql-charset.html</link>
		<comments>http://jk.aiwaly.com/wp/dotproject-mysql-charset.html#comments</comments>
		<pubDate>Thu, 28 Jul 2011 01:10:15 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[开源软件]]></category>

		<guid isPermaLink="false">http://jk.aiwaly.com/?p=3053</guid>
		<description><![CDATA[由于项目需要，最近在需找一个比较顺手的ProjectManagement工具，但因为硬件限制，只能基于LAMP平台，对比了几个产品后，最后敲定DotProject。
但很郁闷的是，在DotProject中输入的部分中文存入数据库后会变成乱码，解决的方法也很简单，SET NAMES UTF8：

编辑includes/db_adodb.php，找到下面这行代码：


   $ADODB_FETCH_MODE=ADODB_FETCH_BOTH;


在其之前添加一行：


   $db-&#62;Execute("SET NAMES UTF8");

还有一种方法就是在 mysql的配置my.ini 文件里 增加字符集设置

[mysqld]
init_connect='SET NAMES utf8'


]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/dotproject-mysql-charset.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SqlServer数据库镜像之数据库用户问题</title>
		<link>http://jk.aiwaly.com/wp/sqlserver-mirroring-user-question.html</link>
		<comments>http://jk.aiwaly.com/wp/sqlserver-mirroring-user-question.html#comments</comments>
		<pubDate>Wed, 01 Jun 2011 03:37:54 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[question (问题)]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2967</guid>
		<description><![CDATA[数据库镜像是SQL Server 2005的一个新特性，它允许你将一个SQL Server中的数据库内容镜像到另一个SQL  Server上。它还让你可以在发生错误的时候，通过镜像数据库来进行错误恢复。镜像的拷贝是一个备用的拷贝，不能直接访问,它只用在错误恢复的情况下。 SQL2005的这一特性给数据库系统维护人员带来了不错的实惠，而给最终用户的体验也是不错的。至于如何配置数据库镜像系统，大家可以到TechNet  中文网络广播 中查找一下相关视频教程，尤其推荐大家去看看MVP牛可的相关讲座视频哦。再这里就不多说了。我们直奔主题吧！！

在使用数据库镜像功能时，如果我们使用的是工作组，那么我们需要注意一下数据库用户的问题：用普通方式创建的数据库用户，在主数据库中和镜像数据库 中是有一些差异的，而这个差异最终会造成一个“奇怪”的结果，我们在主数据库和镜像数据库中对某数据库影射的“相同用户”，在发生故障转移后数据库验证会 发生异常，称该用户无法登录我们的数据库，WHY?  原来是两个数据库中的同名用户在系统表syslogins中的sid不同造成的。解决方法就是在两个数据库上建立同名同sid的用户，具体方法如下：
假设有镜像的服务器是MIR-A和MI-B，要访问镜像数据库的登录账号是tom，使用下面这个方法就可以在MIR-A上创建登录名tom，然后在镜像数据库中创建数据库用户tom并映射到登录名tom
执行下列语句取回tom的sid


SELECT [name], sid FROM syslogins WHERE [name] = 'tom'


——   ———————————————–
tom 0xD6AABCC8F83E3243A6C3C97F28A4CB55
然后在MIR-B上用下面的语句创建登录名tom


sp_addlogin @loginame = 'tom', @passwd = 'password', @sid = 0xD6AABCC8F83E3243A6C3C97F28A4CB55


Ok,这样就没有问题了。
]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/sqlserver-mirroring-user-question.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS5 x86_64位系统中yum安装的mysql,在编译php时找不到client问题解决</title>
		<link>http://jk.aiwaly.com/wp/centos5-x86_64-mysql-php-client-question.html</link>
		<comments>http://jk.aiwaly.com/wp/centos5-x86_64-mysql-php-client-question.html#comments</comments>
		<pubDate>Mon, 03 Jan 2011 07:54:03 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[question (问题)]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2862</guid>
		<description><![CDATA[# export LDFLAGS=-L/usr/lib64/mysql \\ 定义环境变量
或者将Makefile里面的
-L/usr/lib/mysql
改为
-L/usr/lib64/mysql
或者编辑php的configure 文件找到下面的这一段 ，搜索MYSQL_LIB_DIR，加上lib64 lib64/mysql就可以啦。
for i in $PHP_LIBDIR $PHP_LIBDIR/mysql lib64 lib64/mysql; do
str=”$MYSQL_DIR/$i/lib$MYSQL_LIBNAME.*”
for j in `echo $str`; do
if test -r $j; then
MYSQL_LIB_DIR=$MYSQL_DIR/$i
break 2
fi
done
done
]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/centos5-x86_64-mysql-php-client-question.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CentOS 5  64位安装php-fpm全过程</title>
		<link>http://jk.aiwaly.com/wp/centos-5-64bit-php-fpm.html</link>
		<comments>http://jk.aiwaly.com/wp/centos-5-64bit-php-fpm.html#comments</comments>
		<pubDate>Thu, 16 Dec 2010 07:48:40 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[linux 系统]]></category>
		<category><![CDATA[开源软件]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2856</guid>
		<description><![CDATA[安装库文件
安装编译php需要的一些库文件
yum install libxml2-devel libmcrypt-devel openssl-devel  curl-devel libjpeg-devel  libpng-devel freetype-devel openldap-devel  libmhash-devel mysql-devel  libtool-ltdl-devel
如果是64位的系统，然后需要调整一下mysql的库文件，否则在64位系统下老去找32位的mysql库:
cd /usr/lib
mv mysql mysql.i386
ln -sf /usr/lib64/mysql mysql
编译php-fpm
给php打php-fpm补丁：
cd php-5.2.10
patch -p1 &#60; ../php-5.2.10-fpm-0.5.13.diff
开始编译php，注意：如果是64位的系统，建议去掉 &#8211;with-ldap-sasl，否则有可能编译不过
./configure --prefix=/opt/php --with-iconv --with-zlib  --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode  --enable-bcmath --enable-shmop --enable-sysvsem  --enable-inline-optimization --with-curl --with-curlwrappers  --enable-mbregex --enable-fastcgi --enable-fpm  --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd  --enable-gd-native-ttf --with-openssl --with-mhash [...]]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/centos-5-64bit-php-fpm.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下的Memcache安装</title>
		<link>http://jk.aiwaly.com/wp/linux-memcache-setup.html</link>
		<comments>http://jk.aiwaly.com/wp/linux-memcache-setup.html#comments</comments>
		<pubDate>Thu, 09 Dec 2010 06:53:53 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[开源软件]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2852</guid>
		<description><![CDATA[最近在研究怎么让Discuz!去应用Memcache去做一些事情，记录下Memcache安装的过程。
Linux下Memcache服务器端的安装
服务器端主要是安装memcache服务器端，目前的最新版本是 memcached-1.3.0 。
下载：http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
另外，Memcache用到了libevent这个库用于Socket的处理，所以还需要安装libevent，libevent的最新版本是libevent-1.3。（如果你的系统已经安装了libevent，可以不用安装）
官网：http://www.monkey.org/~provos/libevent/
下载：http://www.monkey.org/~provos/libevent-1.3.tar.gz
用wget指令直接下载这两个东西.下载回源文件后。
1.先安装libevent。这个东西在配置时需要指定一个安装路径，即./configure –prefix=/usr；然后make；然后make install；
2.再安装memcached，只是需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr；然后make；然后make install；
这样就完成了Linux下Memcache服务器端的安装。详细的方法如下：
1.分别把memcached和libevent下载回来，放到 /tmp 目录下：
# cd /tmp
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz
2.先安装libevent：
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure –prefix=/usr
# make
# make install
3.测试libevent是否安装成功：
# ls -al /usr/lib &#124; grep libevent
lrwxrwxrwx    1 root     root          21 11?? 12 17:38 libevent-1.2.so.1 [...]]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/linux-memcache-setup.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle 死锁的解决办法</title>
		<link>http://jk.aiwaly.com/wp/oracle-dead-locked.html</link>
		<comments>http://jk.aiwaly.com/wp/oracle-dead-locked.html#comments</comments>
		<pubDate>Sun, 21 Nov 2010 13:02:25 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2843</guid>
		<description><![CDATA[

１.查哪个过程被锁
查V$DB_OBJECT_CACHE视图:
SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER=&#8217;过程的所属用户&#8217; AND LOCKS!=&#8217;0&#8242;;

2. 查是哪一个SID,通过SID可知道是哪个SESSION.
查V$ACCESS视图:
SELECT * FROM V$ACCESS WHERE OWNER=&#8217;过程的所属用户&#8217; AND NAME=&#8217;刚才查到的过程名&#8217;;

3. 查出SID和SERIAL#
查V$SESSION视图:
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID=&#8217;刚才查到的SID&#8217;

查V$PROCESS视图:
SELECT SPID FROM V$PROCESS WHERE ADDR=&#8217;刚才查到的PADDR&#8217;;

4. 杀进程
(1).先杀ORACLE进程:
ALTER SYSTEM KILL SESSION &#8217;查出的SID,查出的SERIAL#&#8217;;

(2).再杀操作系统进程:
KILL -9 刚才查出的SPID
或
ORAKILL 刚才查出的SID 刚才查出的SPID
方法二：
经常在oracle的使用过程中碰到这个问题，所以也总结了一点解决方法：）
1）查找死锁的进程：
sqlplus &#8221;/as sysdba&#8221;
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID; 
2）kill掉这个死锁的进程：
alter system kill session ‘sid,serial#’;  （其中sid=l.session_id）
3）如果还不能解决，
select pro.spid from v$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;  
 其中sid用死锁的sid替换。
exit
ps -ef&#124;grep spid
其中spid是这个进程的进程号，kill掉这个Oracle进程。



]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/oracle-dead-locked.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下启动与关闭Oralce 10G</title>
		<link>http://jk.aiwaly.com/wp/linux-oralce-10g-start-or-stop.html</link>
		<comments>http://jk.aiwaly.com/wp/linux-oralce-10g-start-or-stop.html#comments</comments>
		<pubDate>Sun, 21 Nov 2010 12:50:53 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2840</guid>
		<description><![CDATA[启动
命令代码
1. 1.切换到oracle用户：
2.
3. su &#8211; oracle
4.
5. 2.启动监听：
6.
7. lsnrctl start
8.
9. 3.进入sqlplus：
10.
11. sqlplus / as sysdba
12.
13. 4.启动数据库：
14.
15. startup
1.切换到oracle用户：
su &#8211; oracle
2.启动监听：
lsnrctl start
3.进入sqlplus：
sqlplus / as sysdba
4.启动数据库：
startup
关闭
命令代码
1. shutdown
2.
3. shutdown的参数
4.
5. Normal 需要等待所有的用户断开连接
6. Immediate 等待用户完成当前的语句
7. Transactional 等待用户完成当前的事务
8. Abort 不做任何等待，直接关闭数据库
9. normal需要在所有连接用户断开后才执行关闭数据库任务，所以有的时候看起来好象命令没有运行一样！在执行这个命令后不允许新的连接
10. immediate在用户执行完正在执行的语句后就断开用户连接，并不允许新用户连接。
11. transactional 在拥护执行完当前事物后断开连接，并不允许新的用户连接数据库。
12. abort 执行强行断开连接并直接关闭数据库。
13. 前三种方式不回丢失用户数据。第四种在不的已的情况下，不建议采用！
shutdown
shutdown的参数
Normal 需要等待所有的用户断开连接
Immediate 等待用户完成当前的语句
Transactional 等待用户完成当前的事务
Abort 不做任何等待，直接关闭数据库
normal需要在所有连接用户断开后才执行关闭数据库任务，所以有的时候看起来好象命令没有运行一样！在执行这个命令后不允许新的连接
immediate在用户执行完正在执行的语句后就断开用户连接，并不允许新用户连接。
transactional 在拥护执行完当前事物后断开连接，并不允许新的用户连接数据库。
abort 执行强行断开连接并直接关闭数据库。
前三种方式不回丢失用户数据。第四种在不的已的情况下，不建议采用！
]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/linux-oralce-10g-start-or-stop.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>python 连接 Oracle 乱码问题（cx_Oracle）</title>
		<link>http://jk.aiwaly.com/wp/python-%e8%bf%9e%e6%8e%a5-oracle-%e4%b9%b1%e7%a0%81%e9%97%ae%e9%a2%98%ef%bc%88cx_oracle%ef%bc%89.html</link>
		<comments>http://jk.aiwaly.com/wp/python-%e8%bf%9e%e6%8e%a5-oracle-%e4%b9%b1%e7%a0%81%e9%97%ae%e9%a2%98%ef%bc%88cx_oracle%ef%bc%89.html#comments</comments>
		<pubDate>Sun, 21 Nov 2010 12:28:16 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2838</guid>
		<description><![CDATA[用python连接Oracle是总是乱码，在月影鹏鹏的博客里搜到这篇文章解决了我的问题。在此记录下来并表示感谢。
（字符集是AL32UTF8）
编写的python脚本中需要加入如下几句：
import os
os.environ['NLS_LANG'] = &#8216;SIMPLIFIED CHINESE_CHINA.UTF8&#8242;
这样可以保证select出来的中文显示没有问题。
要能够正常的insert和update中文，还需要指定python源文件的字符集密码和oracle一致。
# -*- coding: utf-8 -*-
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 
例子：
# -*- coding: utf-8 -*-
import os
os.environ['NLS_LANG'] = &#8216;SIMPLIFIED CHINESE_CHINA.UTF8&#8242;
import cx_Oracle
db = cx_Oracle.connect(username/passwd@host:port/sevicename)
cursor = db.cursor()
#其他操作
db.commit()
db.close()
]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/python-%e8%bf%9e%e6%8e%a5-oracle-%e4%b9%b1%e7%a0%81%e9%97%ae%e9%a2%98%ef%bc%88cx_oracle%ef%bc%89.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oralce 字符集浅谈</title>
		<link>http://jk.aiwaly.com/wp/oralce-charset-help.html</link>
		<comments>http://jk.aiwaly.com/wp/oralce-charset-help.html#comments</comments>
		<pubDate>Sun, 21 Nov 2010 12:24:16 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2835</guid>
		<description><![CDATA[oracle字符集是我经常遇到的问题.
设置window的字符集：regedit-&#62;HKEY_LOCAL_MACHINE-&#62;SOFTWARE-&#62;ORACLE-&#62;HOMEO-&#62;NLS_LANG
windows本身：SIMPLIFIED
AMERICAN_AMERICA.ZHS16GBK
在DOS下查看字符集：echo %NLS_LANG%
在不同数据库做数据迁移、同其它系统交换数据等，常常因为字符集不同而导致迁移失败或数据库内数据变成乱码。现在我将oracle字符集相关的一些知识做个简单总结
一、什么是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&#62;select userenv(‘language’) from dual;
结果类似如下:AMERICAN _ AMERICA. ZHS16GBK
2、如何查询dmp文件的字符集
用oracle的exp工具导出的dmp文件也包含了字符集信息，dmp文件的第2 和第3个字节记录了dmp文件的字符集。如果dmp文件不大，比如只有几M或几十M，可以用UltraEdit打开(16进制方式)，看第2第3个字节的内容，如0354，然后用以下SQL查出它对应的字符集:
SQL&#62; select nls_charset_name(to_number(&#8216;0354&#8242;,&#8217;xxxx&#8217;)) from dual;
    ZHS16GBK
如果dmp文件很大，比如有2G以上(这也是最常见的情况)，用文本编辑器打开很慢或者完全打不开，可以用以下命令(在unix主机上):
cat exp.dmp &#124;od -x&#124;head -1&#124;awk &#8216;{print $2 $3}&#8217;&#124;cut -c 3-6
然后用上述SQL也可以得到它对应的字符集。
3、查询oracle client端的字符集
这个比较简单。在windows平台下，就是注册表里面相应OracleHome的NLS_LANG。还可以在dos窗口里面自己设置，比如:
set nls_lang=AMERICAN_AMERICA.ZHS16GBK
这样就只影响这个窗口里面的环境变量。
在unix平台下，就是环境变量NLS_LANG。
$echo $NLS_LANG
    AMERICAN_AMERICA.ZHS16GBK
如果检查的结果发现server端与client端字符集不一致，请统一修改为同server端相同的字符集。
三、修改oracle的字符集
上文说过，oracle的字符集有互相的包容关系。如us7ascii就是 zhs16gbk的子集,从us7ascii到zhs16gbk不会有数据解释上的问题,不会有数据丢失。在所有的字符集中utf8应该是最大,因为它基于unicode,双字节保存字符(也因此在存储空间上占用更多)。
一旦数据库创建后，数据库的字符集理论上讲是不能改变的。因此，在设计和安装之初考虑使用哪一种字符集十分重要。根据Oracle的官方说明，字符集的转换是从子集到超集受支持,反之不行。如果两种字符集之间根本没有子集和超集的关系，那么字符集的转换是不受oracle支持的。对数据库server而言，错误的修改字符集将会导致很多不可测的后果，可能会严重影响数据库的正常运行，所以在修改之前一定要确认两种字符集是否存在子集和超集的关系。一般来说，除非万不得已，我们不建议修改oracle数据库server端的字符集。特别说明，我们最常用的两种字符集ZHS16GBK和 ZHS16CGB231280之间不存在子集和超集关系，因此理论上讲这两种字符集之间的相互转换不受支持。
1、修改server端字符集(不建议使用)
在oracle 8之前，可以用直接修改数据字典表props$来改变数据库的字符集。但oracle8之后，至少有三张系统表记录了数据库字符集的信息，只改props$表并不完全，可能引起严重的后果。正确的修改方法如下:
$sqlplus /nolog
    SQL&#62;conn / as sysdba;
若此时数据库服务器已启动，则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器，然后执行以下命令:
SQL&#62;STARTUP MOUNT;
    SQL&#62;ALTER [...]]]></description>
		<wfw:commentRss>http://jk.aiwaly.com/wp/oralce-charset-help.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

