Oracle导入dmp文件
导入之前要新建数据库实例。
1、打开命令提示符窗口,win + r,cmd,enter;
2、连接数据库(ip端口不写时默认localhost:1521)
? ? 使用命令“sqlplus”,命令格式:sqlplus 用户名/口令@数据库名 as sysdba;
? ? 例:C:\Documents and Settings\admin>
? ? sqlplus sys/sys@orcl as sysdba
? ? sqlplus sys/sys@localhost:1521/orcl as sysdba
? ?
3、创建directory
? ? 在电脑任意位置手动创建文件夹,如:D:\dmp,再把xxx.dmp文件放D:\dmp下,
? ? 使用命令“create directory”,命令格式:create directory 文件名 as 物理地址;
? ? SQL>create or replace directory dmp as 'D:\app\dmp';
4、创建用户
? ? 使用命令“create user”,命令格式:create user 用户名 identified by 用户密码;
? ? SQL>create user orcl identified by orclorcl;
? ?
5、授权用户
? ? 使用命令“grant”,命令格式:grant dba to 用户名;
? ? SQL>grant dba to orcl;
? ? SQL>grant read,write on directory dmp to orcl;
? ?
6、建立表空间(不建似乎也可以)
? ? 在数据库安装目录(例:D:\app\admin\oradata\orcl)下新建文件夹 tablespaces。命令行切换orcl用户,执行“建立表空间”的sql语句;
? ? SQL>connect orcl/orclorcl@orcl;
? ? SQL>建立表空间的sql语句
create tablespace DATA_ORCL?datafile 'D:\app\admin\oradata\orcl\tablespaces\DATA_ORCL.ora' size 1m autoextend on;
7、退出数据库
? ? 使用命令“exit”;
? ? SQL>exit;
? ?
8、导入数据库
? ? 使用命令“impdp”,命令格式:impdp 用户名/口令@数据库 directory=文件夹 dumpfile=xx.dmp文件 logfile日志
? ? C:\Documents and Settings\admin>
? ? impdp orcl/orclorcl@orcl directory=dmp dumpfile=orcl.dmp full=y transform=segment_attributes:n logfile=impdp_orcl_20220101.log
table_exists_action
? ? skip 是如果已存在表,则跳过并处理下一个对象;
? ? append 是为表增加数据;
? ? truncate 是截断表,然后为其增加新数据;
? ? replace 是删除已存在表,重新建表并追加数据。
--ORA-14460: 只能指定一个 COMPRESS 或 NOCOMPRESS 子句
--添加参数:transform=segment_attributes:n
--该参数可与忽略expdp导出时附带的相关表空间和存储子句约束。
?
注:若导入时出现问题
ORA-39001: 参数值无效
ORA-39000: 转储文件说明错误
ORA-39143: 转储文件 “XXX.dmp” 可能是原始的导出转储文件
原因分析:
.dmp文件是使用exp命令导出的,而使用
impdp 无法识别exp命令导出的文件,需要使用imp命令进行导入
?
1. 切换 root,su - root,输入密码(若是root则忽略)。创建目录,授权,上传xxx.dmp到目录,并授权;
? ? [root@localhost ~]$ mkdir /home/oracle
? ? [root@localhost ~]$ chmod 777 /home/oracle
? ? [root@localhost ~]$ chmod 777 /home/oracle/xxx.dmp
2. 切换 oracle,su - oracle。登录数据库。
? ? [root@localhost ~]$ su - oracle
? ? [oracle@localhost ~]$ sqlplus / as sysdba
? ? SQL>create or replace directory dmp as '/home/oracle';
?
1、打开命令提示符窗口;
2、连接数据库
? ? 使用命令“sqlplus”,命令格式:sqlplus 用户名/口令@数据库名 as sysdba
? ? 例:C:\Documents and Settings\admin>sqlplus sys/sys@orcl as sysdba
3、创建用户
? ? 使用命令“create user”,命令格式:create user 用户名 identified by 用户密码;
? ? SQL>create user orcl identified by orclorcl;
? ?
4、授权用户
? ? 使用命令“grant”,命令格式:grant dba to 用户名;
? ? SQL>grant dba to orcl;
? ?
5、连接数据库
? ? 使用命令“connect”,命令格式:connect 用户名/口令@数据库名;
? ? SQL>connect orcl/orclorcl@orcl;
? ?
6、建立表空间(不建似乎也可以)
? ? 在数据库目录下新建文件夹tablespaces,用数据库连接工具登录该账户,执行“建立表空间”的sql语句
? ? 例:D:\app\admin\oradata\orcl,在此目录下新建文件夹tablespaces
? ?
7、导入数据库
? ? 使用命令“imp”,命令格式:imp 用户名/口令 file=数据库文件路径 fromuser=用户名 touser=用户
? ? C:\Documents and Settings\admin>
? ? imp orcl/orclorcl@orcl file=D:\orcl.dmp full=y ignore=y
? ? imp orcl/orclorcl@orcl file=D:\orcl.dmp full=y ignore=y fromuser=orcl touser=orcl
?
1、打开命令提示符窗口,win + r,cmd;
2、连接数据库
? ? 使用命令“sqlplus”,命令格式:sqlplus 用户名/口令@数据库名 as sysdba
? ? 例:C:\Documents and Settings\admin>
? ? sqlplus sys/sys@orcl as sysdba
? ? sqlplus / as sysdba
? ?
3、创建directory
? ? 在电脑任意位置手动创建文件夹,如:D:\dmp,再把xxx.dmp文件放D:\dmp下,
? ? 使用命令“create directory”,命令格式:create directory 文件名 as 物理地址;
? ? SQL>create or replace directory dmp as 'D:\app\admin\dmp\orcl';
? ? SQL>exit;
? ? SQL>create or replace directory dmp as '/u01/expdp';
4、导出数据库
? ? 使用命令“expdp”,命令格式:expdp 用户名/口令@数据库 directory=文件夹 dumpfile=xx.dmp文件 full=y
? ? C:\Documents and Settings\admin>
? ? expdp orcl/orclorcl@orcl directory=dmp dumpfile=orcl.dmp schemas=orcl logfile=expdp_orcl_20220101.log
? ? 若高版本导出,低版本导入,可加上参数 version=11.2.0.1.0(低版本号)
? ? 6选1:
? ? 1)整个数据库:full=y
? ? 2)对象模式:schemas=orcl
? ? 3)指定表空间:tablespaces=temp,log
? ? 4)指定表:tables=user,org
? ? 5)按查询条件:tables=user query='user:"where id>1"'
? ? 6)仅表结构:content=metadata_only
? ?
? ? EXCLUDE=TABLE:" IN('TABLE1','TABLE2')"
?
解锁用户
? ? ALTER USER 用户名 ACCOUNT UNLOCK;
? ?
授权
? ? grant select any table to orcl;
? ? exp orcl/orclorcl@orcl file=e:/orcl.dmp owner=orcl
? ? 全部:full=y
? ? 指定库:owner=orcl
? ? 指定表:tables=table1,多个 tables=(table1,table2)
? ? 1、FULL,用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。
? ? 2、OWNER和TABLE,这两个选项用于定义EXP的对象。OWNER定义导出指定用户的对象,TABLE指定EXP的table名称。
? ? 3、BUFFER和FEEDBACK,在导出比较多的数据时,考虑设置这两个参数。
? ? 4、FILE和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录。
? ? 5、COMPRESS参数不压缩导出数据的内容。用来控制导出对象的storage语句如何产生。默认值为Y,使用默认值,对象的存储语句的init extent等于当前导出对象的extent的总和。推荐使用COMPRESS=N。
? ? 6、FILESIZE该选项在8i中可用。如果导出的dmp文件过大时,最好使用FILESIZE参数,限制文件大小不要超过2G。
?
通过输入 EXP 命令和您的用户名/口令, 导出
操作将提示您输入参数:
? ? ?例如: EXP SCOTT/TIGER
或者, 您也可以通过输入跟有各种参数的 EXP 命令来控制导出
的运行方式。要指定参数, 您可以使用关键字:
? ? ?格式: ?EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
? ? ?例如: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
? ? ? ? ? ? ? ?或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
USERID 必须是命令行中的第一个参数。
关键字 ? 说明 (默认值) ? ? ? ? 关键字 ? ? ?说明 (默认值)
--------------------------------------------------------------------------
USERID ? 用户名/口令 ? ? ? ? ? FULL ? ? ? ?导出整个文件 (N)
BUFFER ? 数据缓冲区大小 ? ? ? ?OWNER ? ? ? ?所有者用户名列表
FILE ? ? 输出文件 (EXPDAT.DMP) ?TABLES ? ? 表名列表
COMPRESS ?导入到一个区 (Y) ? RECORDLENGTH ? IO 记录的长度
GRANTS ? ?导出权限 (Y) ? ? ? ? ?INCTYPE ? ? 增量导出类型
INDEXES ? 导出索引 (Y) ? ? ? ? RECORD ? ? ? 跟踪增量导出 (Y)
DIRECT ? ?直接路径 (N) ? ? ? ? TRIGGERS ? ? 导出触发器 (Y)
LOG ? ? ?屏幕输出的日志文件 ? ?STATISTICS ? ?分析对象 (ESTIMATE)
ROWS ? ? ?导出数据行 (Y) ? ? ? ?PARFILE ? ? ?参数文件名
CONSISTENT 交叉表的一致性 (N) ? CONSTRAINTS ?导出的约束条件 (Y)
OBJECT_CONSISTENT ? ?只在对象导出期间设置为只读的事务处理 (N)
FEEDBACK ? ? ? ? ? ? 每 x 行显示进度 (0)
FILESIZE ? ? ? ? ? ? 每个转储文件的最大大小
FLASHBACK_SCN ? ? ? ?用于将会话快照设置回以前状态的 SCN
FLASHBACK_TIME ? ? ? 用于获取最接近指定时间的 SCN 的时间
QUERY ? ? ? ? ? ? ? ?用于导出表的子集的 select 子句
RESUMABLE ? ? ? ? ? ?遇到与空格相关的错误时挂起 (N)
RESUMABLE_NAME ? ? ? 用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT ? ?RESUMABLE 的等待时间
TTS_FULL_CHECK ? ? ? 对 TTS 执行完整或部分相关性检查
TABLESPACES ? ? ? ? ?要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE ? ? ? ? ? ? 调用 iAS 模式导出的模板名