exp和imp:
exp导出:
exp username/password file=/home/oracle/oracle_bak/V31_202010.dmp owner=V31
只导出表结构:
exp username/password file=/home/oracle/oracle_bak/V31_202010.dmp owner=username rows=n compress=n
- rows=n 代表不导出数据只导出表结构, compress=n 压缩到表的初始大小
imp导入:
1.创建表空间:
create tablespace 表空间名字 datafile '/u01/app/oracle/oradata/odsdb/planning0530.dbf' size 200M reuse autoextend on next 1m maxsize unlimited;
2.创建用户指定默认表空间:
create user username identified by 123456 default tablespace 表空间名字;
3.给新建用户授权:(若提示权限不足,执行:grant all privileges to username; )
grant create session,create table,create view,create sequence,unlimited tablespace to username;
4.导入数据:
imp username/password full=y file=/home/oracle/20201027.dmp
imp system/password@dbserver full=y file=xxx.dmp buffer=100000000 feedback=10000 ignore=y
expdp和impdp:
expdp导出:
1、创建dmp导出目录
create directory 目录名 as '目录路径'
--例:create directory expdp_dmp as 'D:/expdp_dmp'
2、查看当前创建的所有dmp导出目录 (验证看是否创建成功)
select * from dba_directories
--例:select * from dba_directories
3、为创建的目录赋权限
grant read,write on directory 目录名 to 需要赋值的用户名
--例:grant read,write on directory expdp_dmp to aaa;
4、导出
expdp 用户名/密码@数据库实例名 directory=导出目录 dumpfile=导出的文件名.dmp logfile=导出的日志名.log
1)按用户导
expdp username/password@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=data;
2)并行进程导
expdp username/password@orcl directory=data dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名导
expdp username/password@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=data;
4)按查询条件导
expdp username/password@orcl directory=data dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空间导
expdp username/password DIRECTORY=data DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)导整个数据库
expdp username/password DIRECTORY=data DUMPFILE=full.dmp FULL=y;
- USERNAME/PASSWORD:用户/密码(*)
- DUMPFILE:导出后的文件名(*)
- DIRECTORY:导出文件存放位置(位于服务器端)(*)
- CONTENT:导出文件中包含的内容(默认为:ALL,可选DATA_ONLY/METADATA_ONLY)
- FILESIZE:指定导出文件大小(单位为bytes).
- JOB_NAME:此次导出进程使用的名称,方便跟踪查询(可选)
- LOGFILE:日志文件名(默认为:export.log)
- INCLUDE:导出时包含指定的类型
- EXCLUDE:导出时排除的数据类型(例:EXCLUDE=TABLE:EMP)
- FULL:全库导出时使用(同EXP的FULL,默认为N)
- SCHEMAS:导出某一个SCHEMA下的所有数据
- TABLES:按表导出(这里的方法和EXP一样)
- TABLESPACE:指定一个表空间导出.
- QUERY:按表导出时,使用条件语句限定导出范围(同exp中的QUERY)
- CONTENT=METADATA_ONLY:只导出表结构
- PARALLEL:多进程导
impdp导入表
$ sqlplus / as sysdba
1.查询数据库中表空间对应的数据文件路径
SQL> select file_name,tablespace_name from dba_data_files;
2.创建表空间,+DATA是表空间数据文件的路径,RAC集群使用。如果是单实例需要写入具体的表空间数据文件路径,(例如:/u01/app/oracle/oradata/odsdb/数据文件名字.dbf)
SQL> create tablespace 表空间名字 datafile ‘+DATA’ size 31g autoextend on next 50m;
3.创建导入的数据库用户并指定默认的数据库表空间,双引号中的是密码,需要根据实际情况来设置复杂密码
SQL> create user username identified by “password” default tablespace 表空间名字;
4.导入数据
1)导到指定用户下
impdp username/password DIRECTORY=data DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改变表的owner
impdp username/password DIRECTORY=data DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)导入表空间
impdp username/password DIRECTORY=data DUMPFILE=tablespace.dmp TABLESPACES=example;
4)导入数据库
impdb username/password DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加数据
impdp username/password DIRECTORY=data DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION
若表已存在,覆盖导入:table_exists_action=replace
导出与导入用户不同:remap_schema=导出用户:导入用户
导入时若为rac集群:cluster=N
linux定时备份脚本:
#!/bin/bash
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:/usr/local/bin:/usr/ccs/bin:$PATH:/usr/sbin
export PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib ; export CLASSPATH
expdp username/password@orcl schemas=DAMA directory=EXP_EVERYDAY dumpfile=DAMA_$(date +%Y%m%d).dmp logfile=DAMA_$(date +%Y%m%d).log
cd /home/oracle/databak
find ./ -type f -mtime +3 -exec rm {} \;