序号 |
术语 |
解释 |
范例 |
1. |
EXP/IMP |
导入/导出工具 |
|
2 |
USERID |
用户名/口令 |
|
3 |
FULL |
导出整个文件 (N) |
|
4 |
OWNER |
所有者用户名列表 |
|
5 |
FILE |
输出文件 (EXPDAT.DMP) |
|
6 |
LOG |
屏幕输出的日志文件 |
|
7 |
BUFFER |
数据缓冲区大小 |
|
8 |
ROWS |
导出数据行 (Y) |
|
9 |
TABLESPACES |
要导出的表空间列表 |
|
2. |
数据泵 |
Oracle数据库中导入/导入工具DATAPUMP的中文简称。在oracle10g诞生 |
|
3. |
EXPDP/IMPDP |
DATAPUMP中执行导出/导入操作的工具 |
|
4. |
DIRECTORY |
Oracle数据库中的一种对象类型,操作系统路径在数据库中的一种映射。 |
|
5. |
DUMPFILE |
用于指定转储文件的名称,默认名称为expdat.dmp |
|
6. |
LOGFILE |
指定导出日志文件文件的名称,默认名称为export.log |
|
7. |
SCHEMA |
该方案用于指定执行方案模式导出,默认为当前用户方案 |
|
8 |
TABLESPACES |
指定要导出表空间列表 |
|
9 |
VERSION |
指定被导出对象的数据库版本,默认值为COMPATIBLE. |
|
10 |
DATAFILE |
存放表空间的物理地址 |
|
目前在10.1.2.38服务器上已经存在一个hec2dev的数据库作为源数据库,在10.1.2.39服务器上的hec2dev的数据库作为目标数据库,作为备份。
导出源数据文件地址: /u01/oracle/oracle_dump/hec2dev1101.dmp
预期目标数据文件地址:/u01/oracle/oracle_dump/hec2dev1101.dmp
源数据库ORACLE_HOME: /u01/oracle/10gdb
预期目标数据库ORACLE_HOME: /u01/oracle/10gdb
.
命令格式: telnet <至少一个空格> <目标IP地址>
当前示例:telnet 10.1.2.38
输入用户名root和密码
例如: login: root<回车>
root's Password:handhand<回车>
/root/startdb.sh
su – oracle
[oracle@hand ~]$cd /u01/app/orcle [oracle@hand ~]$mkdir oracle_dump |
[oracle@hand ~]$cd /u01/app/orcle/oracle_dump [oracle@hand~]exp hec2dev/hec2dev file = hec2dev140701.dmp owner= hec2dev |
有三种主要的方式(完全、用户、表)
[oracle@hand ~]$cd /u01/app/orcle/oracle_dump [oracle@hand~]exp hec2dev/hec2dev file= hec2dev140701.dmp full=y |
如果要执行完全导出,必须具有特殊的权限
[oracle@hand ~]$cd /u01/app/orcle/oracle_dump [oracle@hand~]exp hec2dev/hec2dev buffer=64000 file = hec2dev140701.dmp owner= hec2dev |
这样用户hec2dev的所有对象被输出到文件中。
[oracle@hand ~]$cd /u01/app/orcle/oracle_dump [oracle@hand~]exp hec2dev/hec2dev buffer=64000 file = hec2dev140701.dmp owner= hec2dev tables=( hec2dev) |
[oracle@localhost root]$ sqlplus
User:hec2dev
Password :hec2dev
SQL>select username,default_tablespace from dba_users where username = ‘hec2dev’;
SQL>select DISTINCT owner ,tablespace_name from dba_extents where owner like ‘hec2dev’;
default_tablespace为默认表空间的名称tablespace_name为用户使用表空间的名称
SQL>select file_name,tablespace_name from dba_data_files where tablespace_name in (default_tablespace, tablespace_name);
.2.3 导入IMP
命令格式: telnet <至少一个空格> <目标IP地址>
当前示例:telnet 10.1.2.39
输入用户名root和密码
例如: login: root<回车>
root's Password:handhand<回车>
/root/startdb.sh
su – oracle
使用sys登录查看目标用户、数据库文件、表空间是否存在,如果不存在,需要创建相关对象
[oracle@hand ~]$sqlplus “/as sysdba” |
SQL>select name from v$tablespace where name in (default_tablespace, tablespace_name);
CREATE TABLESPACE hec2dev DATAFILE '/u01/app/oracle/oradata/mas/hec2dev.dbf' SIZE 50M
AUTOEXTEND ON ;
SQL> create user hec2dev identified by hec2dev default tablespace hec2dev;
SQL> grant connect to hec2dev;
grant dba to hec2dev;
grant resource to hec2dev;
grant unlimited tablespace to hec2dev;
CREATE temporary tablespace hec2dev_temp tempfile='/u01/app/oracle/oradata/mas/hec2dev_temp.dbf'
SIZE 50m AUTOEXTEND ON;
回到本机,打开CMD
[oracle@hand ~]$cd /u01/app/orcle/oracle_dump
[oracle@hand~]imp hec2dev/hec2dev fromuser=hec2dev touser=hec2dev file =hec2dev140701.dmp ignore=y
如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.导入完成后再改回来.
imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件
目前在10.12.38服务器上已经存在一个hec2dev的数据库作为源数据库,在10.1.2.38服务器上的hec2train的数据库作为目标数据库,作为备份。
源数据文件地址: '/u01/oracle/oracle_dump'(服务器)
预期目标数据文件地址:'/u01/oracle/oracle_dump'(服务器)
源数据库ORACLE_HOME: /u01/oracle/10gdb
预期目标数据库ORACLE_HOME: /u01/oracle/10gdb
查找oracle的安装路径:echo $ORACLE_HOME;
命令格式: telnet <至少一个空格> <目标IP地址>
当前示例:telnet 10.1.2.39
输入用户名root和密码
例如: login: root<回车>
root's Password:handhand<回车>
/root/startdb.sh
切换到目标用户下(通常oracle帐号管理数据库,oraias帐号管理IAS服务器)
su – oracle
[oracle@localhost root]$ sqlplus
User:hec2dev
Password :hec2dev
3.1 创建Directory
指定转储文件和日志文件所在的目录
Directory=directory_object
Directory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE Directory语句建立的对象,而不是OS目录(此命令需要dba权限,例如:在mastest数据库中,需要以masdemo用户身份登陆.)
- Create Directory
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>create or replace directory DUMP_DIR as '/u01/app/oracle/oracle_dump';
为数据库用户HEC2DEV授予使用DIRECTORY对象的权限,最好以system等管理员赋予
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>grant read,write on directory DUMP_DIR to hec2dev;
用su – oracle命令切换到oracle用户下面,执行下面的语句, schema为当前用户
[oracle@hand ~]$cd /u01/app/orcle/oracle_dump
expdp hec2dev/hec2dev directory=DUMP_DIR dumpfile= hec2dev140701.dmp logfile=DUMP_DIR:hec2dev140701.log
备注:
ORA-39070: 无法打开日志文件。
ORA-39087: 目录名 DATA_PUMP_DIR; 无效
解决方法:将编码方式由utf-8改为简体中文。
可能出现的问题:
解决方法:因为没有配置指定ORACLE_SID,可以用命令:echo $ORACLE_SID进行查看是否指定了ORACLE_SID,若没有,可以通过命令:export ORACLE_SID=mastest(要导出数据库的sid)解决。
(2)中文乱码。
解决方法:将编码方式由utf-8改为简体中文
(3)无法打开日志文件。
解决方法:这是因为由create or replace directory DUMP_DIR as '/u01/app/oracle/oracle_dump';这个命令创建的oracle_dump文件夹的user和group均为root,应该改为:oracle和dba.故可以先切换到root用户下,再调用命令:chown oracle:dba oracle_test;可以将oracle_test的用户和组改为oracle和dba.
[oracle@localhost root]$ sqlplus
User:hec2train
Password :hec2train
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>CREATE TABLESPACE hec2train_tablespace DATAFILE ‘DUMP_DIR/hec2dev.dbf’ SIZE 50M
AUTOEXTEND ON ;
创建临时表空间:
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>create temporary tablespace hec2train_temp
tempfile ' DUMP_DIR/hec2dev.dbf'
size 50m AUTOEXTEND ON;
创建物理表空间:
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>create tablespace hec2train_data
logging
datafile ' DUMP_DIR/hec2train_data.dbf'
size 50m AUTOEXTEND ON;
删除表空间:
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>drop user dev cascade;
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>create user dev identified by test default tablespace dev;
(create user username identified by password default tablespace
tablespace_name )
拥有connect权限的用户只可以登录Oracle
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>grant connect to dev
但这个时候dev还是不能登陆成功的,我们需要赋予相应的权限
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>grant alter session to dev;
grant create any context to dev;
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>grant create procedure to dev;
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>grant create sequence to dev;
[oracle@hand ~]$sqlplus “/as sysdba”
SQL>grant create session to dev;
grant create synonym to dev;
grant create table to dev;
grant create type to dev;
grant create user to dev;
grant create view to dev;
grant create any table to dev;
grant debug connect session to dev;
grant query rewrite to dev;
grant select any dictionary to dev;
grant unlimited tablespace to dev;
grant read,write on directory DUMP_DIR to dev;
注意:
如何查找目录 select * from dba_directories;
impdp hec2train / hec2train remap_tablespace=hec2dev:hec2train_tablespace remap_schema=hec2dev:dev
directory=DUMP_DIR dumpfile=hec2dev1101.dmp
logfile=DUMP_DIR:hec2train1101_imp.log
可能出现的问题:
导出类型:
expdp hec2dev/hec2dev schemas=dev directory=DUMP_DIR dumpfile=hec2dev1101.dmp
expdp hec2dev/hec2dev TABLES=emp,dept directory=DUMP_DIR dumpfile=hec2dev1101.dmp;
expdp hec2dev/hec2dev directory=DUMP_DIR dumpfile=hec2dev1101.dmp Tables=emp query='WHERE deptno=20';
expdp hec2dev/hec2dev directory=DUMP_DIR dumpfile=hec2dev1101.dmp TABLESPACES=temp,example;
expdp hec2dev/hec2dev directory=DUMP_DIR dumpfile=hec2dev1101.dmp FULL=y;
expdp hec2dev/hec2dev directory= DUMP_DIR dumpfile=hec2dev1101.dmp logfile=DUMP_DIR:hec2dev1101.log schemas=dev version='10.2.0.1.0'