Oracle数据导出导入
Oracle数据库管理,常见的操作之一就是数据导出导入。
我在DBA入门时,已经是开始用Oracle10,那会主要用imp 和 exp 导入导出(数据,表结构以及元数据等),后来oracle 11g就开始用impdp 以及expdp,效率更高,同时也兼容imp和exp。具体参数使用,请在oracle 服务器上,在oracle 用户下,运行命令 impdp -help 查看使用说明(同理expdp -help查看expdp说明)。
在expdp之前,我们需要创建数据库及Table Space(参考导出源数据库table space)。
以下举几个栗子:
- 导出导入数据库的一个schema(user)
(1)首先需要export 字符集,防止数据库导出导入过程中出现乱码,具体export字符集命令如下:NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1; export NLS_LANG
说明:
AMERICAN_AMERICA.WE8ISO8859P1 可通过sql【 select * from nls_database_parameters where PARAMETER in ('NLS_CHARACTERSET','NLS_LANGUAGE','NLSTERRITORY');】查询具体值,后续章节为大家详细介绍oracle字符集。
ARAMETER VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET WE8ISO8859P1
NLS_LANG =NLSLANGUAGE值_NLS_TERRITORY值.NLS_CHARACTERSET值得组合。
(2)其次export ORACLE_SID,命令行如下:
export ORACLE_SID=abcdb
说明:ORACLE_SID 是数据库名字,instance name,稍后介绍ORACLE名字细节。可以通过以下两个方法查找instance name,方法一: ps -ef|grep smon
方法二:cat /etc/oratab
(3)以system用户创建导入导出文件夹,并授权给相应的用户
mkdir -p /u01/dp
[oracle@ora3 dp]$ sqlplus system/password
SQL> create directory dp as '/u01/dp';
SQL> select * from dba_directories;
SQL> grant read,write on directory dp to testuser;
(4)导出一个schema的数据,表结构及元数据
expdp system/password schemas=testuser dumpfile=test.dmp logfile=exp_test.log DIRECTORY=dp;
(5)导入数据,命令如下。
impdp system/password directory=dp dumpfile=test.dmp logfile=imp_test.log REMAP_SCHEMA=test:test2
在同一个数据库下,将test schema 导入test2下。如果导入新的数据库,需要建库,建user,授权,并导入。
2.其他导出数据方式简介:
1)导整个数据库
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
2)并行进程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名导
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查询条件导
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
相关文章