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