oracle 疑问
我使用如下exp命令导出:
c:\exp username/userpasswd@SID tables= ( mytable )
然后用如下语句导入:
c:\imp username/userpasswd@SID tables= ( mytable ) ignore=yes
imp之后表的记录没有恢复exp前的状况,而是记录数成倍的增加。插入了重复的记录!
如何让imp先清除原有表的记录,再进行导入?
几乎用遍了imp.exe的参数,还是有这样的问题。
请大侠指教!
谢谢!
先删掉表记录,我觉得用删用户的方式比较方便 |
解决方案 :
ORACLE数据库删除用户,重新创建用户并导入.dmp文件
开发过程中,有时需要将生产数据整体导出并重新导入开发环境,下面我把我删除数据库中用户并重新导入.dmp数据文件的全过程做了整理,为需要的同学提供参考,有不对的地方还请指教。
一。用xshell登陆oracle 用户
二。登陆sqlplus:
sqlplus /nolog;
connect / as sysdba;
三。用约束方式重新启动数据库:
shutdown abort;
startup restrict;
注:如果不用约束方式启动数据库,则会有连接访问此数据库,下面步骤执行用户删除时会报错
四。删除用户
drop user username cascade;
注:若没执行上面第三步骤,仍会有用户连接,删除用户时报错:ORA-0194:cannot drop a user that is currently connected。
上面错误是试过kill用户进程,再删除用户,仍然报错,所以用约束模式启动数据库比较保险
五。创建用户
create user username identified by password;//创建用户并设置密码
六。给用户赋予权限
grant create session to sun; //授予sun用户创建session的权限,即登陆权限
grant unlimited tablespace to sun; //授予sun用户使用表空间的权限
grant create table to sun; //授予创建表的权限
grant drop any table to sun; //授予删除表的权限
grant insert any table to sun; //插入表的权限
grant update any table to sun; //修改表的权限
grant dba to username; //授予用户dba权限
注:若不授予用户dba权限,则数据导入时会报错:IMP-00013:only a DBA can import a file exported by another DBA
因为只有 DBA 才能导入由其他 DBA 导出的文件
七。用户解锁
alter user username account unlock;
八。服务重起
shutdown abort;
startup;
九。exit退出sqlplus
十。开启监听端口
lsnrctl start;
十一。导入数据
imp username/password@ORCL file=/home/oracle/***.dmp log=/home/oracle/***.log full=y;
备注
密码过期修改:alter user username identified by password;
---------------------
作者:STIll_clx
来源:CSDN
原文:https://blog.csdn.net/STIll_ly/article/details/78170454
版权声明:本文为博主原创文章,转载请附上博文链接!