一、检查环境一致性
需检查数据库客户端与服务端字符编码,以避免后续各种各样的问题
查询服务端编码
注意最好用sqlplus查询,用plsql有时候会出现查询不一致问题,如下图同一个语句在plsql和sqlplus中获得了不同的查询结果
也可以在NLS_DATABASE_PARAMETERS中查询,如下字符集为AMERICAN_AMERICA.AL32UTF8
查询客户端编码(环境为WINDOWS)
环境变量之中字符集变量设置,变量名NLS_LANG 值设置与服务器端字符集编码一致
注册表中的Oracle字符集设置,NLS_LANG 值设置与服务器端字符集编码一致
二、数据导出:
1、运行cmd;
2、登录数据库,输入命令:sqlplus
使用管理员角色登录需要在用户名后加“ as sysdba” 例如:sys as sysdba,也可以输入sqlplus 非用户密码登陆也可以 sqlplus / as sysdba
3、同样创建目录路径:输入命令:create directory data_dir as 'D:\ora\data' ;
1)、data_dir为路径名称,可自命名,D:\ora\data为数据库导出文件存放路径(路径必须存在)
2)、使用命令:select * from dba_directories可查询用户创建目录。
4、为oracle用户授予访问数据目录的权限,输入命令:Grant read,write on directory data_dir to dbuser;
dbuser为数据库用户名
5、导入导出操作授权,输入命令:grant exp_full_database,imp_full_database to dbuser;
6、数据导出,执行命令:expdp dbuser/123456@orcl schemas=dbuser dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
注意该命令是在cmd下执行,不是在sqlplus窗口中执行
命令详情:
expdp [为用户名]/[密码]@[服务名]
schemas=[用户名]
dumpfile=[导出数据库文件名]
directory=[设置目录名]
logfile=[日志文件文件名]
三、数据导入:
1、运行cmd;
2、登录数据库,输入命令:sqlplus;
使用管理员角色登录需要在用户名后加“ as sysdba” 例如:sys as sysdba
非用户密码登陆也可以sqlplus / as sysdba
3、创建表空间,用户以及用户授权dba(本地测试) 如单独授予权限 导入导出操作授权,输入命令:grant exp_full_database,imp_full_database to user;
create tablespace table_space
logging
datafile 'E:\app\oradata\orcldb\space.DBF'
size 50m
autoextend on
next 50m maxsize 30000m
extent management local;
create user user
identified by "123456"
default tablespace table_space
temporary tablespace TEMP
profile DEFAULT;
grant dba to user;
后期如果需要扩充表空间可以用:
alter tablespace table_space add datafile 'E:\app\oradata\orcldb\space1.DBF'
size 50m
autoextend on
next 50m maxsize 30000m;
4、创建目录路径:输入命令:create directory data_dir as 'D:\ora\data' ; 路径里存放之前导出的数据库dmp文件
1)、data_dir为路径名称,可自命名,D:\ora\data为数据库导出文件存放路径(路径必须存在);
2)、使用命令:select * from dba_directories可查询用户创建目录。
5、为oracle用户授予访问数据目录的权限,输入命令:Grant read,write on directory data_dir to user;
user为之前建立的导入数据库用户名。
6、数据导入,执行命令:impdp user/123456@orcl REMAP_SCHEMA = dbuser:user table_exists_action = replace directory=data_dir dumpfile=expdp.dmp logfile=expdp.log
命令详情:
impdp [用户名]/[密码]@[服务名]
REMAP_SCHEMA=[源用户名1]:[目标用户名2]
table_exists_action=replace /*存在的表动作(覆盖)*/
directory=[创建目录名]
dumpfile=[.dmp文件名]
logfile=[.log文件名]