Oracle11g还原数据库导入dmp文件最详细教程
1.首先你要知道往哪个用户里面导,先创建个用户然后授权
打开sqlplus,用system
登录(或者有dba权限的用户) 一次执行下面的命令语句
。
CREATE USER "用户名" PROFILE "DEFAULT" IDENTIFIED BY "密码" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
GRANT CREATE ANY TABLE TO "用户名";
GRANT UNLIMITED TABLESPACE TO "用户名";
GRANT "CONNECT" TO "用户名";
GRANT "RESOURCE" TO "用户名";
GRANT CREATE ANY VIEW TO "用户名";
GRANT dba TO "用户名";
2.然后打开cmd,根据自己的数据库执行下面语句
imp 刚才创建的用户名/密码@数据库实例名 full=y file=文件的绝对路径(包含文件名) ignore=y
3.导入过程中报错?怎么重新导入?
如果导入数据有问题的话,执行下面语句重新导入(慎用
,别删错了,这是删除用户和用户底下所有的数据)
drop user 用户名 cascade
4.最后记录一下导入过程中遇到的问题
1.在A用户下导入但是数据却导入到了B用户里
这是由于导入的dmp文件的原因,里面设定了自动导入A用户,这时候你需要重新创建一个Oracle实例,注意不是Oracle用户,是实例,创建过程中一定要设置数据库字符集为ZHS16GBK
如何连接到另外一个Oracle实例?
conn 用户名/密码@实例名
2.导入过程中提示: “XXXX值太大,无法执行”
这就是没有设置ZHS16GBK的原因,打开sqlplus,登录后先确定你连接的数据库是你需要修改的(别改错了),然后登录有dba权限(最高权限)的用户,依次执行以下命令语句
SQL> conn /as sysdba;
SQL> shutdown immediate;//这个可能久一点,不超过5分钟
SQL> startup mount;//归档模式
SQL> alter system enable restricted session;//数据库访问受限状态
SQL> alter system set JOB_QUEUE_PROCESSES=0;
SQL> alter system set AQ_TM_PROCESSES=0;
SQL> alter database open;
SQL> alter database character set internal_use ZHS16GBK;
SQL> alter database character set ZHS16GBK
SQL> shutdown immediate;
SQL> startup;
执行完成之后再次进行导入发现没有问题了
3.导入过程中提示: “表空间不存在”或“表不存在创建触发器失败”
这是因为dmp文件有问题,最初导出dmp文件的时候,没有提前设置好导出空表,只能去原来数据库将缺少的空表或序列手工导进来,可以用Navicat。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/35985.html