Linux环境下导入dmp 详细步骤!

操作流程

1.su - oracle
2. sqlplus / as sysdba

3.创建表空间

create tablespace TELEMT datafile ‘\home\oracle\TELEMT.DBF.dbf’ size 5120M autoextend on next 100M;

4.新增用户

CREATE USER telant_test IDENTIFIED BY telant_test DEFAULT TABLESPACE TELEMT TEMPORARY TABLESPACE temp;

5.用户赋权

GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE SEQUENCE,UNLIMITED TABLESPACE TO telant_test;
GRANT CONNECT TO telant_test;
GRANT RESOURCE TO telant_test;
GRANT DBA TO telant_test;

6.创建dir(如果dmp放入缺省目录下,此步可省略)

create directory dir as ‘/home/app/dpump_dir’;

7.导库(impdp)

impdp telant_test/telant_test dumpfile=telant_test_201800810_data.dmp
directory=DIR
remap_schema=telant_test:telant_test
remap_tablespace=IM_DATA:TELEMT
TABLE_EXISTS_ACTION=REPLACE
logfile=telemt190227.log;

imp命令如下(impdp有时无法导入,因为使用exp导出的dmp)

imp telant_test/telant_test file=/u01/app/oracle/admin/rac/dpdump/telant_test_201800810_data.dmp log=telemt190228.log grants=no full=y

参数说明:

1.AUTOEXTEND ON NEXT 1280K 设置表空间自动扩展,每次1280K;
2. remap_schema当你从A用户导出的数据,想要导入到B用户中去,就使用这个 remap_schema=A:B ;
3. remap_tablespace 与上面类似,数据库对象本来存在于tbs_a表空间,现在你不想放那儿了,想换到tbs_b,就用这个remap_tablespace=tbs_a:tbs_b 结果是所有
tbs_a中的对象都会建在tbs_b表空间中。这样做的前提是目标用户B和目标表空间tbs_b存在 ;

4.table_exists_action参数说明

使用imp进行数据导入时,若表已经存在,要先drop掉表,再进行导入。
而使用impdp完成数据库导入时,若表已经存在,有四种的处理方式:

  1. skip:默认操作
  2. replace:先drop表,然后创建表,最后插入数据
  3. append:在原来数据的基础上增加数据
  4. truncate:先truncate,然后再插入数据

总结 :使用一些实用的sql语句验证导入情况

1.查询表空间
select tablespace_name from user_tablespaces;

2.查看oracle中创建的所有目录
select * from dba_directories;

3.select * from dba_users; 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,system
select * from all_users; 查看你能管理的所有用户!
select * from user_users; 查看当前用户信息 !

4.查询到当前连接的实例和该实例下的数据库。
select name from v$database;

select instance_name from v$instance;

5.select count(1) from user_tables ;

6.select * from dba_tables where owner=‘TELANT_TEST’;

7.select table_name,tablespace_name from dba_tables where owner = ‘TELANT_TEST’;

8.查看表空间的名称及大小
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name;

附上:
oracle 查看表空间以及剩余量

遇到的问题解决方案:

问题①最常见的目录无效:
方法1.直接将dmp文件放入缺省目录下即可(/home/oracle/app/admin/RAC/dpdump)
方法2.drop directory DPUMP_DIR;
create directory dir as ‘/home/oracle/app/dump’;
grant read,write on dir to public ;

问题②执行 impdp导入现场导回的dmp文件,导入失败。错误提示如下

$impdp sysdb/oracle directory=imp_data_dump dumpfile=sysdb.dmp remap_schema=sysdb:sysdb logfile=impdp_sysdb.log
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-39143: dump file “/home/data/sysdb.dmp” may be an original export dump file
问题分析:
sysdb.dmp文件是使用exp命令导出的,而使用impdp命令导入时无法识别exp命令导出的文件,需要使用imp命令进行导入
问题解决

方法 执行imp sysdb/oracle file=sysdb.dmp log=imp_sysdb.log grants=no full=y

你可能感兴趣的:(oracle数据库,dmp,oracle)