Oracle创建新用户并将某一用户的表导进来
一、建立测试账号
进入sqlplus(以管理员身份)
sqlplus / as sysdba;
create user user1 identified by user1; //创建用户名并指定密码
授予相应权限
grant create session to user1;
grant create table to user1;
grant unlimited tablespace to user1;
grant connect to user1;
grant resource to user1;
grant dba to user1;
二、导出数据
1,导出老用户数据
shell 环境下支持exp imp命令
exp user_old/user_old_pass file=/tmp/data.dmp
将userold的数据到处到了指定目录
2,导出真个数据库的表(需要dba权限)
exp user_old/user_old_pass file=/tmp/data.dmp full=y
3,导出数据库定义而不导出数据
exp user_old/user_old_pass file=/tmp/data.dmp full=y row=n
4,导出一个或一组指定用户所属的全部表、索引和其他对象
exp system/manager file=seapark log=seapark owner=seapark
exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)
5,导出一个或多个指定表
exp seapark/seapark file=tank log=tank tables=tank
exp system/manager file=tank log=tank tables=seapark.tank
exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)
三、导入数据
1,数据导入到新用户
imp user_new/pass_user_new file=/tmp/data.dmp fromuser=user_old touser=user_new
就将老用户的数据倒进了新用户中了
2,提示无法导入,需要DBA权限之类
赋予新用户相应权限
grant sysdba to user1;
grant imp_full_database;
然后登出执行
imp user_new/pass_user_new file=/tmp/data.dmp full=y;
即可将不知道用户名的dmp导入到新用户。
3,有时总是提示无DBA权限,但实际上已经赋予了DBA权限,这是可能是这个账户的默认角色有问题
执行
ALTER USER user1 DEFAULT ROLE ALL;
然后再登出执行
imp user_new/pass_user_new file=/tmp/data.dmp full=y;
即可。