数据导出
账号赋权,文件目录创建
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;
例如 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 旧表空间名:新表空间名