1、如果当前用户在旧数据,可以用
sql命令:drop user username cascade;删除
cascade表示删除用户及用户所有表。
2、碰到环境不一致的情况,有几个坑
a、可以重置后使用不同的 sid或name并且创建不任意的空间,要检查.bash_profile中的原来值。
b、检查etc/otatab文件
c、数据库要在监听后启动,要不动不会主动注册。
lsnrctl start lsnrctl stop lsnrctl status
dbstart dbshut
3、imp exp 备份恢复
exp ecology/ecology file=sys.dmp buffer=80960
imp ecolog/ecology file=sys.dmp
恢复后有些视图有问题,用Navicat Premium 12打开视图刷新一下即可。impdp恢复一样的。
4、用impdp expdp
备份
sql:
create directory mybak as '/bak';
// /bak为实际目录,需要当前用户有读写权限
expdp stplm/stplm schemas=stplm dumpfile=stplmexpdp1.dmp directory=mybak logfile=stplmpdp1.log; //导出用户stplm下的所有数据
恢复
create tablespace mytest datafile '/u01/app/oracle/oradata/mytest/mytest.dbf' size 20M
AutoExtend On Next 10M
segment space management auto;
//创建空间
CREATE USER user1 IDENTIFIED BY user1 DEFAULT TABLESPACE mytest TEMPORARY TABLESPACE Temp; //创建用户
create directory mybak as '/bak';
// /bak为实际目录,需要当前用户有读写权限
grant connect,resource to user1;
grant create view to user1;
grant DATAPUMP_EXP_FULL_DATABASE ,DATAPUMP_IMP_FULL_DATABASE to user1;
grant read,write on directory mybak to user1; //用户附权
改入,改空间,改用户
impdp user1/user1 directory=mybak dumpfile=stplmexpdp1.dmp remap_schema=stplm:user1 remap_tablespace=stplm:mytest logfile=impdp.log;
如果环境相同不改用户,
impdp stplm/stplm directory=mybak dumpfile=stplmexpdp1.dmp schema=stplm logfile=impdp.log;