我如何从dmp文件创建数据库?我没有在我的系统上具有相同结构的现有数据库,因此必须完成作业,事件,表等。
我将dmp和日志文件放在E:drive
中我尝试过导入实用程序
E:/>impdp system/tiger@oratest FILE=WB_PROD_FULL_20MAY11.dmp
但是我收到了错误
invalid argument value
bad dump file specification
unable to open dump file "E:\app\Vensi\admin\oratest\dpdump\WB_PROD_F
ULL_20MAY11.dmp" for read
unable to open file
unable to open file
(OS 2) The system cannot find the file specified.
当我在Windows资源管理器中看到dmp文件(取自Linux服务器)显示为崩溃转储文件
我不明白如何解决这个问题。请帮我解决这个问题。
我是甲骨文的新手......
答案 0 :(得分:99)
数据库是如何导出的?
如果使用exp
导出并导出了完整架构,那么
创建用户:
create user <username> identified by <password> default tablespace <tablespacename> quota unlimited on <tablespacename>;
授予权利:
grant connect, create session, imp_full_database to <username>;
使用imp
开始导入:
imp <username>/<password>@<hostname> file=<filename>.dmp log=<filename>.log full=y;
如果使用expdp
导出,则使用impdp
开始导入:
impdp <username>/<password> directory=<directoryname> dumpfile=<filename>.dmp logfile=<filename>.log full=y;
查看错误日志,似乎您没有指定目录,因此Oracle尝试在默认目录中找到dmp
文件(即E:\app\Vensi\admin\oratest\dpdump\
)。
将导出文件移动到上述路径或创建目录对象以指向dmp
文件所在的路径,并将对象名称传递给上面的impdp
命令。
答案 1 :(得分:7)
所有这些代码的和平放入* .bat文件并立即运行:
我在oracle中创建用户的代码。 crate_drop_user.sql文件
drop user "USER" cascade;
DROP TABLESPACE "USER";
CREATE TABLESPACE USER DATAFILE 'D:\ORA_DATA\ORA10\USER.ORA' SIZE 10M REUSE
AUTOEXTEND
ON NEXT 5M EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
/
CREATE TEMPORARY TABLESPACE "USER_TEMP" TEMPFILE
'D:\ORA_DATA\ORA10\USER_TEMP.ORA' SIZE 10M REUSE AUTOEXTEND
ON NEXT 5M EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 1M
/
CREATE USER "USER" PROFILE "DEFAULT"
IDENTIFIED BY "user_password" DEFAULT TABLESPACE "USER"
TEMPORARY TABLESPACE "USER_TEMP"
/
alter user USER quota unlimited on "USER";
GRANT CREATE PROCEDURE TO "USER";
GRANT CREATE PUBLIC SYNONYM TO "USER";
GRANT CREATE SEQUENCE TO "USER";
GRANT CREATE SNAPSHOT TO "USER";
GRANT CREATE SYNONYM TO "USER";
GRANT CREATE TABLE TO "USER";
GRANT CREATE TRIGGER TO "USER";
GRANT CREATE VIEW TO "USER";
GRANT "CONNECT" TO "USER";
GRANT SELECT ANY DICTIONARY to "USER";
GRANT CREATE TYPE TO "USER";
创建文件import.bat并将这些行放入其中:
SQLPLUS SYSTEM/systempassword@ORA_alias @"crate_drop_user.SQL"
IMP SYSTEM/systempassword@ORA_alias FILE=user.DMP FROMUSER=user TOUSER=user GRANTS=Y log =user.log
如果要从一个用户导入到另一个用户,请小心。例如,如果您的用户名为user1,并且您将导入到user2,则可能会丢失所有授权,因此您必须重新创建它。
祝你好运,伊万答案 2 :(得分:1)
如果您使用@ sathyajith-bhat响应中的 impdp 命令示例:
impdp <username>/<password> directory=<directoryname> dumpfile=<filename>.dmp logfile=<filename>.log full=y;
您将需要使用必填参数目录,并将其创建并授予为:
CREATE OR REPLACE DIRECTORY DMP_DIR AS 'c:\Users\USER\Downloads';
GRANT READ, WRITE ON DIRECTORY DMP_DIR TO {USER};
或使用以下定义的其中之一:
select * from DBA_DIRECTORIES;
我的ORACLE Express 11g R2默认名为 DATA_PUMP_DIR (位于{inst_dir} \ app \ oracle / admin / xe / dpdump /),您需要为用户授予它。