1>查询数据库的字符集
SQL>select * from nls_database_parameters where parameter in ('NLS_LANGUAGE', 'NLS_TERRITORY', 'NLS_CHARACTERSET');
PARAMETER VALUE
-------------------- ---------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET ZHS16GBK
资料上说NLS_LANG = language_territory.charset
Language指的是服务器消息语言,territory指的是服务器日期、数字、货币格式,charset指字符集
2>查看客户端的字符集
SQL> select userenv('language') userenvs from dual;
USERENVS
----------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
客户端的字符集为ZHS16GBK,而数据库的字符集也为ZHS16GBK,所以不必另外设置。如果需要写入log,则需要在客户端设置相应的数据码
windows 直接在cmd中 set nls_lang=AMERICAN_AMERICA.ZHS16GBK
3>执行exp
e.g. exp sys/system as sysdba file=f:\backup\full.dmp full=y log=f:\backup\full.log consistent=y direct=y
注释:
buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统
consistent:下载期间所涉及的数据保持read only,缺省为n
direct:使用直通方式 ,缺省为n
feeback:显示处理记录条数,缺省为0,即不显示
file:输出文件,缺省为expdat.dmp
filesize:输出文件大小,缺省为操作系统最大值
indexes:是否下载索引,缺省为n,这是指索引的定义而非数据,exp不下载索引数据
log:log文件,缺省为无,在标准输出显示
owner:指明下载的用户名
query:选择记录的一个子集
rows:是否下载表记录
tables:输出的表名列表
4>执行imp
e.g.imp system/xx314159xx file=f:\backup\full.dmp fromuser=sys touser=xuxin
注释:
buffer:上载数据缓冲区,以字节为单位,缺省依赖操作系统
commit:上载数据缓冲区中的记录上载后是否执行提交
feeback:显示处理记录条数,缺省为0,即不显示
file:输入文件,缺省为expdat.dmp
filesize:输入文件大小,缺省为操作系统最大值
fromuser:指明来源用户方
ignore:是否忽略对象创建错误,缺省为n,在上载前对象已被建立往往是一个正常现象,所以此选项建议设为y
indexes:是否上载索引,缺省为n,这是指索引的定义而非数据,如果上载时索引已建立,此选项即使为n也无效,imp自动更新索引数据
log:log文件,缺省为无,在标准输出显示
rows:是否上载表记录
tables:输入的表名列表
touser:指明目的用户方