美文网首页
oracle 数据泵导入导出

oracle 数据泵导入导出

作者: TryCatch菌 | 来源:发表于2019-07-28 18:45 被阅读0次

数据导出

账号赋权,文件目录创建

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

sys /@<sid> as sysdba

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

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

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

给dump_user用户全库角色权限

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

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

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

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

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

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

数据导入

创建表空间

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

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

select * from dba_data_files

DROP TABLESPACE <table_space_name> INCLUDING CONTENTS AND DATAFILES;

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

select name from v$datafile;

select file_name from dba_data_files

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

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

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

创建用户,并赋权

如果用户存在先删除用户

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

创建用户

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

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

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

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

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

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

--赋予用户dba权限
grant dba to <user_name>;

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

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

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

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

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

ALTER USER <user_name> DEFAULT ROLE ALL;

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

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

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

相关文章

网友评论

      本文标题:oracle 数据泵导入导出

      本文链接:https://www.haomeiwen.com/subject/uvvprctx.html