oracle数据库cp命令,Oracle数据库备份与恢复(I)

1. exp/imp(导出与导入)

1.1 基本命令:

$exphelp=y

$imphelp=y

2.三种工作方式

(1)交互方式:

$exp //然后按照提示输入所需要的参数

(2)命令行方式:

$expuser/pwd@dbname file=/oracle/test.dmp full=y

(3)参数文件方式:

$expparfile=username.par//在参数中输入所需的参数

userid=username/userpassword

buffer=8192000

compress=n

grants=y

file=/oracle/test.dmp

full=y

3.三种模式

(1)表方式,将指定表的素具导出/导入。

导出:

导出一张或几张表:

$expuser/pwd file=/dir/xxx.dmplog=xxx.logtables=table,table2

导出某张表的部分数据:

$expuser/pwd file=/dir/xxx.dmplog=xxx.logtables=table1 query\"where coll=\'...\' and col2...;

导入:

导入一张表或几张表

$imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1, table2 fromuser=dbuser touser=dbuser2 commit=y ignore=y

(2)用户方式,将指定用户的所有对象及数据导入/导出

导出:

$exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=(xx ,yy)

只导出数据对象,不导出数据:

$exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=user rows=n

导入;

$imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser-dbuser touser=dbuser2 commit=y ignore=y

(3)全库方式,数据库中的所有对象导出/导入

导出:

$exp user/pwd file=/dir/xxx.dmp log=xxx.log full=y commit=y ignore=y

导入:

$imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2

1.2高级选项

1.分割成多个文件

以多个文件固定大小文件方式导出:这种做法通常用在表数据量较大,单个dump文件可能会超出文件系统的限定的情况

$exp user/pwd file=1.dmp, 2.dmp, 3.dmp,...filesize=1000m log=xxx.log full=y

以多个固定大小文件方式导入:

$imp user/pwd file=1.dmp,2/dmp, 3.dmp.....filesize=1000m tables=xxx fromuser=dbuser touser=dbuser commit=y ignore=y

2.增量导出/导入

必须为SYS or SYSTEM 才可以增量导出/导入

增量导出:

(1)“完全”增量导出//备份整个数据库

$exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=complete

(2)增量型导出, 导出上一次备份后改变的数据

`    $exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=incremental

(3)“累计型”增量导出,只导出自上次“完全”导出之后数据库中的变化了的信息

$exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=cumulative

增量导入:

$imp user/pwd full=y unctype=system/retore/inctype

其中:

system: 导入系统对象

retore: 导入所有用户对象

3.表空间传输

1.关于表空间传输的规则:

源数据库和目标数据库必须运行在相同的硬件平台

源数据库与目标数据库一定要有相同到校的数据块

源数据库与目标数据库一定要有相同大小的数据块

目标数据库不能有与迁移表空间相同的表空间

SYS的对象不能迁移

必须传输自包含的对象集

有一些对象,如视图,基于函数的索引等不能被传输

2.检测一个表空间是否符合标准的方法:

SQL> exec sys.dbms_tts.transport_set_check('tablespace_name', true);

SQL>select * from sys.transport_set_Violations;

3.步骤:

1) 设置表空间为只读(空间名字假设:APP_Data and APP_Index)

SQl>alter tablespace app_data read only;

SQL>alter tablespace app_index read only;

2)发出EXP Command

SQL>host exp userid=''''''sys/password as sysdba''''''transport_tablespace=y

tablespaces=(app_data,app_index)

3)拷贝.dbf数据文件(及.dmp文件)到另一个地点,及目标数据库

cp(unix) or copy(Win)or 通过ftp传输文件

4)把本地的表空间设置为读写

$alter tablespace app_data read write;

$alter tablespace app_index read write;

5)在目标数据库附加数据文件(直接指定数据文件名)

transport_tablespace=y datafiles=("a:\app_data.dbf,C:\app_index.dbf")

tablespace=app_data,app_index tts_owner=hr,oe

6)设置目标数据库表空间读写

$alter tablespace app_data read write

$alter tablespace app_index read write

4.优化

1. 加快exp速度

加大large_pool_size,可以提高exp 的速度

采用直接路径的方式(direct=y),数据不需要经过内存进行整合和检查.

设置较大的buffer,如果导出大对象,小buffer 会失败。

export文件不在ORACLE 使用的驱动器上

不要export到NFS 文件系统

UNIX环境:用管道模式直接导入导出来提高imp/exp 的性能

2. 加快imp速度

建立一个indexfile,在数据import完成后在建立索引

将import 文件放在不同的驱动器上

增加DB_BLOCK_BUFFERS

增加LOG_BUFFER

用非归档方式运行ORACLE:ALTER DATABASE NOARCHIVELOG;

建立大的表空间和回滚段,OFFLINE 其他回滚段,回滚段的大小为最大表的1/2

使用COMMIT=N

使用ANALYZE=N

单用户模式导入

UNIX环境:用管道模式直接导入导出来提高imp/exp 的性能

3. 通过unix/Linux PIPE管道加快exp/imp速度

通过管道导出数据:

1.通过mknod -p 建立管道

$ mknod /home/exppipe p // 在目录/home下建立一个管道exppipe注意参数p

2.通过exp 和gzip 导出数据到建立的管道并压缩

$ exp test/test file=/home/exppipe & gzip < /home/exppipe > exp.dmp.gz

$ exp test/test tables=bitmap file=/home/newsys/test.pipe &

gzip < /home/newsys/test.pipe > bitmap.dmp.gz

3.导出成功完成之后删除建立的管道

$ rm -rf /home/exppipe

导出脚本:

###UNIX 下ORACLE 数据库通过PIPE 管道进行备份

###### using "export" and "tar" command to bakup oracle datebase #######

trap "" 1 #nohup

LOGFILE=/opt/bakup/log/bakup_ora.log

export LOGFILE

DUMPDIR=/archlog_node1

export DUMPDIR

exec >$LOGFILE 2>&1

echo

echo ' Begin at ' `date`

echo

# clear old result file

cd $DUMPDIR

if [ -f exp.dmp.Z ]

then

echo "clear old result file"

rm exp.dmp.Z

fi

# make pipe

mkfifo exp.pipe

chmod a+rw exp.pipe

# gain the dmp.Z file

compress < exp.pipe > exp.dmp.Z&

su -u oracle -c "expuserid=ll/ll file=$DUMPDIR/exp.pipe full=y buffer=20000000

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值