oracle数据库导入导出
oracle数据库导入导出时注意点:
- 目标数据库要与源数据库有着名称相同的表空间。
- 目标数据在进行导入时,用户名尽量相同(这样保证用户的权限级别相同)。
- 目标数据库每次在进行数据导入前,应做好数据备份,以防数据丢失。
- 使用数据泵时,一定要现在服务器端建立可用的逻辑目录,并检查是否可用。
- 弄清是导入导出到相同版本还是不同版本(oracle10g版本与oracle11g版本)。
- 目标数据导入前,弄清楚是数据覆盖(替换),还是仅插入新数据或替换部分数据表。
- 确定目标数据库磁盘空间是否足够容纳新数据,是否需要扩充表空间。
- 导入导出时注意字符集是否相同,一般Oracle数据库的字符集只有一个,并且固定,一般不改。
- 确定操作者的账号权限,一般需要dba权限操作。
oracle数据库导出格式介绍
- Dmp格式:.dmp是二进制文件,可跨平台,还能包含权限,效率好;
- Sql格式:.sql格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种,
适合小数据量导入导出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,会报错;
- Pde格式:.pde格式的文件,.pde为PL/SQL Developer自有的文件格式,只能用PL/SQL Developer工具
导入导出,不能用文本编辑器查看;
传统方式导出(exp)和导入(imp)
命令格式:
exp(imp) 用户名/密码@连接地址:端口/服务名 file=“路劲/文件名.dmp” full=y|tables(tablename1,tablename2...)|owner(username1,username2...)|tablespaces= (tablespace1,tablespace2...);exp:导出命令,导出时必写。imp:导入命令,导入时必写,每次操作,二者只能选择一个执行。username:导出数据的用户名,必写;password:导出数据的密码,必写;@:地址符号,必写;SERVICENAME:Oracle的服务名,必写;1521:端口号,1521是默认的可以不写,非默认要写;file=“文件名.dmp” : 文件存放路径地址,必写;full=y :表示全库导出,此时的账号需要dba权限。可以不写,则默认为no,则只导出用户下的对象,;tables:表示只导出哪张表owner:表示导出某些用户的对象tablespaces:表示导出某些表空间下full|tables|owner|tablespaces只能使用一种
本文中数据库字符集为AL32UTF8并以这个字符集举例说明,备份还原前一定要核查数据库字符集,字符集的不同会造成数据乱码。$ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8导出数据 注意结尾不要些;否则分号会变成文件后缀 即db.dmp;如果只想导入结构或者数据,可以使用参数CONTENT,默认值为ALL CONTENT={ALL | DATA_ONLY | METADATA_ONLY}当设置CONTENT为ALL 时,将导出对象定义及其所有数据.为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象结构$ exp usr_xg/usr_xg2016@x.x.x.x:1521/orcl file=/tmp/db.dmp log=/tmp/db.log只导出数据结构$ exp usr_xg/usr_xg2016@x.x.x.x:1521/orcl file=/tmp/db.dmp log=/tmp/db.log CONTENT=METADATA_ONLY导入数据$ imp usr_xg/usr_xg2016@x.x.x.x:1521/orcl file=/tmp/db.dmp log=/tmp/db.log使用数据泵导出(expdp)和导入(impdp)
数据泵与传统导入导出区别:
exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
-
expdp和impdp是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
-
expdp或impdp命令时,可暂不指出用户名/密码@实例名 as 身份,然后根据提示再输入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dir;
-
数据泵包含了 exp/imp实用程序的功能:
1.高效处理大量数据的功能, 可以高效导出和导入大量数据。
2.交互式命令行使用程序,使用它可以先断开连接,然后恢复连接活动的数据泵作业。
3.在不创建数据泵文件的情况下,从远程数据库导出大量数据,并将这些数据直接导入本地数据库。
4.通过导入和导出工作,在运行时更改方案,表空间,数据文件和存储位置;
5.精细过滤对象和数据;
6.对目录对象应用受控安全模式(通过数据库);
7.高级功能,如压缩和加密。
使用方法:
通过expdb命令备份必须要有DIRECTORY目录(转储文件和日志文件所在的目录),11G中默认会有这个目录。我们通过以下命令可以查询出转储文件和日志文件所在的位置:
SQL> select * from dba_directories t where t.directory_name='DATA_PUMP_DIR'; OWNER DIRECTORY_NAME DIRECTORY_PATH ------------------------------ ------------------------------ ------------------------------ SYS DATA_PUMP_DIR /opt/oracle/admin/orcl/dpdump/
如果您不想放在这个默认目录下你也可以手工创建转储文件和日志文件所存放的目录(不推荐自己建目录):
SQL> create or replace directory dump as '/opt/sudytech/oracle/app/oracle/admin/sudy/dump/'; 用sys管理员给你的指定用户赋予在该目录的操作权限: SQL> grant read,write on directory DATA_PUMP_DIR to 用户名;
命令格式:
expdp(impdp) 用户名/密码@连接地址:端口/服务名 schemas=用户名 dumpfile=file1.dmp logfile=file1.log directory=testdata1 remap_schema=test:test; exp:导出命令,导出时必写。 imp:导入命令,导入时必写,每次操作,二者只能选择一个执行。 username:导出数据的用户名,必写; password:导出数据的密码,必写; @:地址符号,必写; SERVICENAME:Oracle的服务名,必写; 1521:端口号,1521是默认的可以不写,非默认要写; schemas:导出操作的用户名; dumpfile:导出的文件; logfile:导出的日志文件,可以不写; directory: 如果手工创建了转储文件和日志文件,通过本命令指定导出位置 remap_schema=源数据库用户名:目标数据库用户名,二者不同时必写,相同可以省略;
本文中数据库字符集为AL32UTF8并以这个字符集举例说明,备份还原前一定要核查数据库字符集,字符集的不同会造成数据乱码。
导出数据
$ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
导出数据,12.1版本之前会导出大量的统计数据,这会在导入时占用大量的内存,所以导出或导入时可以使用EXCLUDE=STATISTICS
$ expdp test8/sudy12344 schemas=test8 dumpfile=file1.dmp logfile=file1.log directory=DATA_PUMP_DIR exclude=STATISTICS
$ cd /opt/oracle/admin/orcl/dpdump/
$ ls
dp.log file1.dmp file1.log
导出数据 注意结尾不要些;否则分号会变成文件后缀 即db.dmp;
如果只想导入结构或者数据,可以使用参数CONTENT,默认值为ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
当设置CONTENT为ALL 时,将导出对象定义及其所有数据.
为DATA_ONLY时,只导出对象数据,
为METADATA_ONLY时,只导出对象结构
当使用超管账号备份整个数据库 $ su - oracle $ sqlplus / as sydba; SQL> select * from dba_directories; 查看DIR_DUMP目录 DIRECTORY_PATH -------------------------------------------------------------------------------- SYS DIR_DUMP /u/logic_backup/zs/dump 注意要加上转义符 $ expdp \'sys/admin222@ip:1521/zs(服务名) as sysdba\' directory=DIR_DUMP dumpfile=20230206.dmp logfile=20230206.log full=y
导入数据 $ impdp test8/sudy12344 schemas=test8 dumpfile=file1.dmp logfile=file1.log directory=DATA_PUMP_DIR 当使用IMPDP完成数据库导入时,如遇到表已存在时,Oracle提供参数TABLE_EXISTS_ACTION TABLE_EXISTS_ACTION: SKIP:跳过这张表,继续下一个对象,默认值。 REPLACE:先drop已存在的表,然后create并加载数据。 APPEND:追加数据,但不会影响已存在的行,即2行变4行。 TRUNCATE:删除已存在的行,然后加载所有的数据。 $ impdp test8/sudy12344 schemas=test8 dumpfile=file1.dmp logfile=file1.log directory=DATA_PUMP_DIR TABLE_EXISTS_ACTION=TRUNCATE|REPLACE|APPEND SKIP|TRUNCATE|REPLACE|APPEND只能出现一种
expdp/impdp不同用户,不同表空间的转换
1、假设a用户的默认表空间是a,导出用户a所有数据: $ expdp a/密码 schemas=a directory=DATA_PUMP_DIR dumpfile=data.dmp logfile=data.log 如果只拿到了dmp文件并不知道用户和表空间,可以使用以下命令获取 $ impdp system/oracle directory=data_pump_dir dumpfile=data.dmp show=y content=metadata_only 此时当前目录下会产生一个data.sql文件,查看sql文件即可获取用户和用户的表空间 2、创建表空间和用户并授权 CREATE TABLESPACE b DATAFILE '/u01/app/oracle/oradata/b.dbf' SIZE 1048M AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; create user b identified by 密码 default tablespace b; 授予目标用户所需的表空间(例如users)和权限。 grant connect ,resource ,dba to b; 3、导入a用户所有数据到b,并且转换表空间a为b: $ impdp b/密码 directory=DATA_PUMP_DIR dumpfile=data.dmp remap_schema=a:b remap_tablespace=a:b logfile=data.log remap_schema=a:b 将数据的schema从a转换为b remap_tablespace=a:b 将数据的tablespace 从a 转换为b
plsql工具导出
导出dmp后缀文件

导入数据

导出sql后缀文件

导入数据

导出pde后缀文件

导入数据

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/d30a123773.html
