Oracle导入dmp文件
导入之前要新建数据库实例。
一、impdp导入(windows):
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命令进行导入
二、impdp导入(linux):
- 切换 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
- 切换 oracle,su - oracle。登录数据库。
[root@localhost ~]$ su - oracle
[oracle@localhost ~]$ sqlplus / as sysdba
SQL>create or replace directory dmp as '/home/oracle';
三、imp导入:
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
四、expdp导出:
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导出:
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 模式导出的模板名