开发过程中,有时需要将生产数据整体导出并重新导入开发环境,下面我把我删除数据库中用户并重新导入.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;