1.su - oracle
2. sqlplus / as sysdba
create tablespace TELEMT datafile ‘\home\oracle\TELEMT.DBF.dbf’ size 5120M autoextend on next 100M;
CREATE USER telant_test IDENTIFIED BY telant_test DEFAULT TABLESPACE TELEMT TEMPORARY TABLESPACE temp;
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;
create directory dir as ‘/home/app/dpump_dir’;
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 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存在 ;
使用imp进行数据导入时,若表已经存在,要先drop掉表,再进行导入。
而使用impdp完成数据库导入时,若表已经存在,有四种的处理方式:
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