oracle 数据泵导入导出

数据导出

账号赋权,文件目录创建

1.sqlPlush管理员身份登录数据库,或者用plsql直接用DBA账号登录sys

sys /@ as sysdba

2.创建dump文件存储目录,目录必须系统中真实存在的

--创建dmp目录,实际中存在此目录 linux
create or replace directory  as '/u01/app/dmp'; 
--创建dmp目录,实际中存在此目录 windows
create or replace directory  as 'D:\dmp'; 

--查看是否正确创建存储目录是否成功
select * from dba_directories; 

给dump_user用户全库角色权限

 --把读写权限授予特定用户,就是登录数据的账号
grant read,write on directory  to ;
 
 --给用户赋DBA权限
grant dba to ; 

--给用户全库导出和全库导入的角色权限
grant exp_full_database,imp_full_database to ;   

  --用户在表空间所分配的空间没有限制
alter user  quota unlimited on users; 

数据泵导出数据,按照用户导出

windows 在CMD界面,linux shell 登录,如果报命令不存在,可以配置环境变量,或者cd 到expdp的目录下执行。
例如 如果expdp在这个 D:\app\Administrator\product\11.2.0\dbhome_1\BIN 目录下,就先cd到这个目录

expdp /@  directory= dumpfile=  schemas=
  • expdp 账号/密码@实例 ,就是赋予了读写权限的
  • directory = 前面创建的dump文件存储目录别名
  • dumpfile = 备份文件名
  • schemas = 用户名

数据导入

创建表空间

如果是重新导入,需要删除同名表空间

-- 查询下系统表空间,删除需要重新导入的表空间

select * from dba_data_files

DROP TABLESPACE  INCLUDING CONTENTS AND DATAFILES;

查询表空间绝对路径,两条语句都可以查询出来

select name from v$datafile;

select file_name from dba_data_files

根据查询出来的表空间路径,创建新的表空间

CREATE TABLESPACE   DATAFILE  
  '' SIZE 1800M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO   
FLASHBACK ON;

格式为 绝对路径/表空间名.dbf.
例如 C:\APP\ZHIHE\ORADATA\ORCL\name.DBF

创建用户,并赋权

如果用户存在先删除用户

-- 查询用户
select * from dba_users;
--删除用户  cascade 表示删除用户及其数据
drop user  cascade;

创建用户

CREATE USER  -- 登录名
  IDENTIFIED BY  --登录密码
  DEFAULT TABLESPACE  --表空间,前面新建立的表空间
  TEMPORARY TABLESPACE TEMP
  PROFILE DEFAULT
  ACCOUNT UNLOCK;

赋予连接数据库,创建表,创建视图,创建函数,包权限,如果不够,后期可以加

grant create session,create table,create view,create procedure to  WITH ADMIN OPTION;

赋予用户能够读取需要导入的dump文件路径的权限,就是之前我们导出的文件,放到需要导入的服务器上的路径,此路径必须系统真实存在。

--需要导入的dump文件的存放路径,必须系统真实存在
create or replace directory  as 'C:\app\impdpdump';

--赋予用户读写此目录的权限
grant read,write on directory  to ;

--赋予用户dba权限
grant dba to ;

--赋予用户导出权限
GRANT EXP_FULL_DATABASE TO ;

--赋予用户导入权限
GRANT IMP_FULL_DATABASE TO ;

--赋予用户resource权限
GRANT RESOURCE TO ;

--赋予用户系统表空间权限
GRANT UNLIMITED TABLESPACE TO ;

如果权限赋错了,可以重置后再赋权

ALTER USER  DEFAULT ROLE ALL;

数据泵导入数据,按照用户导入

windows 在CMD界面,linux shell 登录,如果报命令不存在,可以配置环境变量,或者cd 到impdp的目录下执行。
例如 如果impdp在这个 C:\app\zhihe\product\11.2.0\dbhome_1\BIN 目录下,就先cd到这个目录

impdp /@   directory= dumpfile= remap_schema=: 
 remap_tablespace= : 
  • impdp 账号/密码@实例 ,就是赋予了读写权限的
  • directory = 前面创建的dump文件存储目录别名
  • dumpfile = 备份文件名
  • expdp_schema_name = expdp 命令导出的schema值
  • impdp_schema_name = impdp 命令要导入的
  • remap_tablespace 旧表空间名:新表空间名

你可能感兴趣的:(oracle 数据泵导入导出)