ORACLE导入导出及字符集问题
1.导出dump数据文件
expdp schemas=RBMS directory=DATA_PUMP_DIR dumpfile=RBMS_20160412.dmp
schemas=模式,可以理解为用户 RBMS 是用户名
directory=目录,DATA_PUMP_DIR是创建数据库默认创建的目录,用于存放数据库导入导出的文件及日志
dumpfile=dump文件名,RBMS_20160412.dmp是我们自己定义的导出文件ming名称
2.查询DATA_PUMP_DIR的具体路径。
select * from dba_directories;
例如:C:\04-database\admin\rbms\dpdump\
3.导入dump文件
impdp RBMS/RBMS@RBMS schemas=RBMS dumpfile =RBMS.DMP directory=DATA_PUMP_DIR
RBMS/RBMS@RBMS 指定了用户名、密码及数据库,这个用户可以是未创建的,导入时会自动创建此用户
4.解决导入数据乱码问题
简单来说,就是要确定server端(oracle本身)、client端(windows系统)、dmp文件这三者字符集是否一致。
这个乱码折腾了我好长时间,说下乱码的原因:
(1)公司的破电脑是英文系统,第一创建数据库忘了改oracle的字符集,默认不是ZHS16GBK。
(2)window 7 系统 新建的oracle数据库,注册表中没有oracle相关信息。
唯一欣慰的是我的文件的字符集可以确定是ZHS16GBK。
原因(1)解决问题最快的办法就是删了数据库,重新建,慎重选择了字符集ZHS16GBK。
原因(2)配置oracle系统环境变量:
变量名 ORACLE_HOME
变量值 E:\Oracle\product\11.2.0\dbhome_1 -- 根据自己的路径修改
变量名 TNS_ADMIN
变量值 E:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN -- 根据自己的路径修改
变量名 NLS_LANG。
变量值 SIMPLIFIED CHINESE_CHINA.ZHS16GBK -- 改成跟server端一样的字符集
变量名 ORACLE_SID。
变量值 RBMS -- RBMS是我自己的sid,可以查看tnsnames.ora
ps:
(1)要是只用Oracle自带的sql*plus的话,只要启动OracleServiceORCL即可,要是使用PL/SQL Developer等第三方工具的话,OracleOraDb11g_home1TNSListener服务也要开启。OracleDBConsoleorcl是进入基于web的EM必须开启的,其余服务很少用。
(2)oracle的需要了解的配置文件,listener.ora 和tnsnames.ora。