准备工作:
1.查询所有用户
select * from dba_users
2.查询表空间的文件目录及大小(maxbytes为零的表空间不可以自动扩展)
SELECT FILE_NAME,TABLESPACE_NAME,BYTES,MAXBYTES FROM DBA_data_files
3.生成对应目录
可手动添加,也可以用命令添加
4.查看生产环境数据库字符集
select userenv('language') from dual;
5.修改目的服务器数据库字符集
(1)目的服务器数据库环境
操作系统:win10(Oracle服务端在本机)
编码格式:UTF-8
需要改成的格式:ZHS16GBK
(2)修改步骤
①在SQL*PLUS 中,以DBA登录
sqlplus 用户名/密码 as sysdba
②然后依次执行以下命令修改字符集:
shutdown immediate;
startup mount;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
alter database character set utf8;
③如果上一句执行报错:(ORA-12712: 新字符集必须为旧字符集的超集),执行:
alter database character set internal_use ZHS16GBK;
④重启数据库
shutdown immediate;
startup;
6.查看修改后的编码格式
SELECT value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET' ;
7.在目的服务器创建表空间
CREATE TABLESPACE DW DATAFILE 'D:\TABLESPACE\DATAFILES\DW.DBF' size 30G
8.将DW用户导入目的服务器dw表空间
(1)在目标库对应表空间创建DW用户
create user DW identified by 123456 default tablespace DW
(2)授权(可以先在原数据库查看用户权限,查看命令:select * from user_role_privs;)
grant dba to DW
(3)用exp命令导出用户下文件
Exp DW/password@localhost:1521/orcl file=D:\SJQY\DW.dmp log=D:\SJQY\DW.log
(4)用imp命令导入文件及日志到目标库用户
imp DW/123456@localhost:1521/orcl file=D:\SJQY\DW.dmp fromuser=(DW) touser=(DW) log=D:\SJQY\DW.log