windows命令创建Oracle新用户并授权导入dmp文件

 

1.打开数据库驱动

sqlplus/nolog (此处切记不能有分号)

2.以管理员权限登录

conn / as sysdba;

3.创建新用户

create user TELEMT identified by TELEMT;

4.给用户授权

grant resource,connect,dba to TELEMT;

5.创建数据表空间

create tablespace TELEMT datafile ‘D:\app\oradata\TELEMT.dbf’ size 5120M autoextend on next 100M;

6.赋予用户表空间

alter user TELEMT default tablespace TELEMT;

7.将数据导入到oracle

在导入之前将dmp文件放入oracle安装目录下的 \app\ADMIN\admin\orcl\dpdump文件夹中

或者在我的电脑里面,建立文件夹f:\tempdump,把TELEMT.DMP拷贝进该文件夹。例如:

CREATE OR REPLACE DIRECTORY tempdump AS 'f:/tempdump/';
GRANT READ, WRITE ON DIRECTORY tempdump TO TELEMT;

 

8.打开另一个cmd窗口,使用impdp导入数据库

impdp TELEMT/TELEMT@ORCL full=Y  directory=tempdump dumpfile=frameworkexpdp.dmp

有时会报ORA-31640: unable to open dump file 问题解决

设置cluster=N,再次进行导入

impdp TELEMT/TELEMT@ORCL full=Y  directory=tempdump dumpfile=frameworkexpdp.dmp cluster=N

发现日志没有导入视图的信息,不知道视图导入没有,当时忘了查看一下了,然后补充执行下面

impdp TELEMT/TELEMT directory=tempdump dumpfile=TELEMT.dmp remap_schema=原用户名:当前数据库用户名remap_tablespace=原表空间:现在数据库表空间 TABLE_EXISTS_ACTION = SKIP

 

(imp telant_test/telant_test file=telant_test_201800810_data.dmp log=C:\Users\yaoyong\Desktop\telemt190701.log grants=no full=y;)

想到会不会重复导入相同的表查了查,当使用IMPDP完成数据库导入时,如遇到表已存在时,Oracle提供给我们如下四种处理方式:

  • SKIP:跳过已经存在的表,继续导入下一个对象,如果CONTENT设置了DATA_ONLY参数,则不能使用SKIP
  • APPEND:不会影响已存在的数据,在原有数据表的基础上继续增加数据
  • REPLACE:先删除掉表,然后创建表,最后完成数据插入
  • TRUNCATE:删除已存在的行,然后插入所有的数据

补充了参数TABLE_EXISTS_ACTION = SKIP

 

最后发现没有再报错误日志,一开始导入失败时

原命名空间和现在不一样,部分表导入失败,只能删除用户

删除用户及用户下的表drop user user_name cascade;

和命名空间,重新创建用户和和DMP文件一样的命名空间就可以重新导入数据库,

暂时导入成功,发现问题再补充

impdp TELEMT/TELEMT@ORCL full=Y  directory=tempdump dumpfile=frameworkexpdp.dmp cluster=N TABLE_EXISTS_ACTION = SKIP

 在linux系统导入导出

su - oracle

expdp test1/test1@127.0.0.1:1521/orcl dumpfile=test1.dmp schemas=test1

impdp test2/test2@localhost:1521/orcl DUMPFILE=test.dmp REMAP_SCHEMA=test1:test2

 

posted @ 2020-08-12 12:08  一心二念  阅读(1595)  评论(0编辑  收藏  举报