你的位置:首页 > 数据库

[数据库]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。