ORACLE管理---备份

备份恢复


(项目中一般是冷备+热备结合)

一、物理备份:


将系统中的文件从一个地方拷到另外的地方
1.冷备:将数据库关闭,将文件从一个地方拷到另一个地方,一般情况不使用,只能恢复到时间点的状态去(系统级别的备份)
2.热备:数据库运行中,将文件从一个地方拷到另一个地方,必须在archived mode,支持表空间级的备份,还可以按用户分配,冻结表空间的SCN号不管用户在做什么操作,不能有一点错,有一点错备份就无效,项目中很少用(系统级别的备份)windows系统中会用到,或数据库中的数据不是特别重要时可以用
1)表空间级别
alter tablespace <> begin backup; //冻结scn号
cp ... //将文件从一个地方拷到另一个地方
alter tablespace <> end backup ; //解冻SCN号

2)拷贝成脚本文件
alter database backup controlfile to trace as '/';
alter database backup controlfile to '/' ;
archivelog cp ../ ....../
3)数据文件级别
alter database beging backup;
cp .../.../ //拷贝数据文件,密码文件参数文件.......
alter database end backup

>>> select checkpoint_change from v$database ; //查看SCN号
>>>select online_change ,offline_change from v$datafile;//查看SCN号

3.rman(recover manager管理恢复目录):备份用户使用过的数据块,属于热备

1>.备份的原理
备份---------还原-------恢复
backup restore recover
2>.备份信息的存放
rman工具存放的地方
$ORACLE_HOME/bin/rman
/opt/u01/oracle/11g/bin/rman ----

$rman //只是用rman登录了,并未连接数据库
$rman target / ; //给出一个连接的目标 / 等价于sys/oracle 只有sys用户能够调用rman
>>>select dbaid from v$database
1)、使用管理恢复目录
rman / nolog catalog -----使用一个管理恢复库,使用一个数据库来存放rman数据库备份的信息,备份文件是集中存放的
2).不使用管理恢复目录
rman / nolog nocatalog ----所有的备份信息写入到当前的控制文件当中,备份文件是分散存放的

RMAN> 

RMAN> show all;

RMAN configuration parameters for database with db_unique_name MAXDB are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default //表示有效的备份,数字1表示有1个,一般项目中是两个,照着命令敲一次,然后就可以修改我们的备份的有效数
CONFIGURE BACKUP OPTIMIZATION OFF; # default     //如果有表空间或数据文件是离线的,是否需要跳过他
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default //备份好的放到磁盘,如果放到磁带机中,将disk进行修改
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default //自动备份控制文件
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default  //自动备份控制文件,并指定路径
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default  //用户在进行备份时,需要多少个进程来服务,工作中一般会多开几个进程
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default   //数据文件备份片的个数
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default  //归档的备份放到几个数据片中
CONFIGURE MAXSETSIZE TO UNLIMITED; # default  //备份文件的大小
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default  // 备份出来的文件是否需要加密
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default   //如果要加密,加密的方式
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZ E FOR LOAD TRUE ; # default    //
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default  //不删除备份
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/opt/u01/oracle/11g/dbs/snapcf_maxdb.f'; # default  //文件快照的地方


 



3>.rman备份
1)完全备份 (不能备份联机日志,不能备份pfile)
database 备份整个数据库
tablespace
datafile
users
spfile
controlfile
archivelog


backup database (数据文件,控制文件,spfile)
backup tablespace <>,<>;
backup datafile <>,<>....;
backup user<>;
backup spfile;
backup current controfile; //备份当前控制文件
backup archivelog ; //备份归档日志
backup archivelog all ;//备份所有的归档
backup database plus archivelog all; //(数据文件,控制文件,参数文件,归档日志)

//所有的备份都放到默认路径中-闪回区中,如果要跟路径,就在命令后加上fomat ‘路径’ ;


RMAN> backup spfile format '/tmp/spfile.bkp' ;

Starting backup at 01-JAN-12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=141 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 01-JAN-12
channel ORA_DISK_1: finished piece 1 at 01-JAN-12
piece handle=/tmp/spfile.bkp tag=TAG20120101T104504 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 01-JAN-


show parameter db_racovery_area ; //备份文件放到闪回区中 (**nnn****表示备份的数据文件,**ncs****c表示备份里有控制文件,s表示备份里面有spfile文件)

备份片:rman中的动态性能视图能查看到 .dbf
备份集:备份片的集合 .bkp

2)增量备份 (必须在完全备份基础上)
backup level 0 database ; //全备
backup imcremental level 0 database ; //0级的增量备份

a.差异增量备份:自上次备份以来修改过的数据
b.累积增量备份:自上次全备以后修改过的数据

11g以前: 0,1,2 ,3,4,5
11g :0级全备,1,2级增量备份
一周的备份策略
日 一 二 三 四 五 六
0全备 差异 差异 差异 累积 差异 差异
0 l1 l1 l1 l2c l1 l1
backup cumulatice incremental level 1 database ;
c.压缩备份:用在数据量很大的数据文件
backup as compressed backupset database ;//支持数据文件,表空间..的压缩
backup as compressed backupset datatable


list backup ;//查看备份信息

RMAN> list backup;


List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1       Full    80.00K     DISK        00:00:00     01-JAN-12       //full全量备份,INC表示增量备份,lv表示增量的级别
        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag:  //status 一定要是available 表示可用的,其他状态都是不正常的状态
         TAG20120101T104504
        Piece Name: /tmp/spfile.bkp
  SPFILE Included: Modification time: 01-JAN-12
  SPFILE db_unique_name: MAXDB     


list backup of spfile; //查看备份的所有的数据文件
list backup of datafile;
list backup of archivelog all;
list backup of controlfile ;
report need backup; //查看哪些需要做数据备份
delete backupset 21 ;//表示删除某一个备份21为备份片
delete backup ;// 表示删除所有的备份文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1.rm -rf //不能够去删掉磁盘文件的备份文件
2.数据恢复前,检查备份文件是否有效 crosscheck backup
3. 删除无用的备份文件 delete expried backup

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

rman备份工作的两种模式
1.mount ---
2.open---- (必须是归档模式,如没有归档,可以手动归档)
4).rman 数据库的恢复
5).rman数据库的克隆
 

二、逻辑备份


使用SQL语句进行数据备份
1.exp/imp:(导出/导入)

 

exp

$>>exp help=y //查看帮助
table
exp scott/tiger file=/tmp/emp.dmp tables=emp,dept ;
导表前要检查临时表,临时表空间一定要有数据表,状态一定要正常


SQL> select tablespace_name ,status from dba_tablespaces;

TABLESPACE_NAME         STATUS
------------------------------ ---------
SYSTEM        ONLINE
SYSAUX        ONLINE
TEMP        ONLINE
USERS        ONLINE
UNDOTBS2        ONLINE
EXAMPLE         ONLINE
CARLA        ONLINE

7 rows selected.



SQL> select file_name from dba_temp_files;

FILE_NAME
--------------------------------------------------------------------------------
/opt/u01/oracle/oradata/maxdb/temp01.dbf



$>> exp scott/tiger file=/tmp/emp.dmp tables=emp query=“where....” //按查询条件导出表
$>>exp scott/tiger file=/tmp/emp.dmp tables=emp indexes=n; //不导出索引
$>> exp scott/tiger file=/tmp/emp.dmp tables=emp rows=y;// 异库的迁移,只导数据,不导结构

user
exp \ ‘sys/oracle as sysdba\ ’ file=/tmp/scott.dmp owner=要导出的用户名 grant=n log=/tmp/scott.log //导出用户所有信息不导出索引,项目中需要加入log参数,表示将屏幕上的日志输出存放到文件中

database
exp \' / as sysdba \' file=/tmp/full.dmp full=y ; //表示导出整个数据库,包括所有的对象和权限
tablespace
exp \'/ as sysdba \' file=/tmp/users.dmp tablespace=users; //导出users表空间下的所有信息

注意:1@导出时客户端的字符集,客户端的字符集必须和要导入的数据库的字符集一致
export NLS_LANG=' simplified chinese_chain.zh16gbk' //导前可将字符集修改为一致
2@exp导出数据时,可以在客户端导出,也可以在服务端导出
 

 

imp

----导入 ,导入的数据库中不能存在名字相同的表,用户,表空间

table
$>>imp scott/tiger file=/tmp/emp.dmp to tables=emp ; //只导入数据
$>>imp scott/tiger file=/tmp/emp.dmp to tables=emp data_only=y ; //不导入数据结构,只导入数据
user
$>>imp \' / as sysdba /' file=/tmp/emp.dmp to tables=emp fromuser=scott touser=sarah; //把scott用户下的表导入到sarah用户下
$>>imp \' / as sysdba /' file=/tmp/scott.dmp fromuser=scott touser=sarah;

database
imp \'/as sysdba\' file='/' full=y

tablespace
imp \ '/ as sysdba \' file='/' tablespaces=users
传输表空间的导入导出方式,只导出表空间下面所有对象的结构,不拷数据(数据以cp的方式拷贝),使用这种方式,表空间必须是只读方式,导入的库不能存在相同的表空间
1.创建一个表空间,test
2.创建一个用户让其默认表空间为test
3.将test表空间置为只读
>>alter tablespace test read only
4.使用传输表空间技术导出test表空间
>>exp \ ' / as sysdba \' file=/tmp/test.dmp transport_tablespace=y tablespaces=test;

将test 表空间导入到另外的数据库
1.拷贝导出的文件与test表空间的数据文件
>>cp test.dbf .....
>>cp /tmp/test.dmp ..../
2.使用传输表空间技术导入
>>imp \ '/as sysdba \' file=/tmp/test.dmp tarnsport _tablespace=y tablespaces=test datafile=../test.dbf/
3.将test 表空间置为read write
alter tablespace test read write;

2. expdp/impdp:数据泵导出/导入 10g引入的新功能 服务器端,不能在客户端使用(大部分时间是用来导出的,很少用到导入)
expdp/impdp 和exp/imp 的区别
1.exp/imp 使用在客户端,而expdp/impdp只能在服务端不能在客户端
2.exp/imp 不可以做表对表的传输,而expdp/impdp可以
3.exp/imp 随便定制导入导出目录,而expdp/impdp的目录必须在数据库中创建才可以
4.exp/imp 导入的时候必须使用sys用户,而expdp/impdp只要有读写全校就可以不限制用户

$>> expdp help=y //查看帮助

 

expdp:

---导出
1. create directory <ext> as '/'
grant read ,write on directory <ext> to scott;
table:
$>> expdp scott/tiger directory=ext dumpfile=emp.dump tables=emp [indexes=n content=data_only reuse_dumpfiles=y query="'deptno=30'"] ;

user:

$>> expdp scott/tiger directory=ext dumpfile=emp.dump schma=scott logfile=log.dmp1 //logfile不要跟路径
database:
$>> exp \ '/ as sysdba \' directory=ext dumfile=emp.dump full=y
tablespace:
$>> expdp scott/tiger directory=ext dumpfile=emp.dump tablespace=users
$>> expdp scott/tiger directory=ext dumpfile=emp.dump tablespace=users transport_tablespace=y tablespaces=users //使用传输表空间方式

impdp

---导入
$>> impdp scott/tiger directory=ext dumpfile=scott.dmp remap_schema=scott:sarah schemas=scott
$>> impdp scott/tiger directory=ext dumpfile=scott.dmp remap_table=emp:emp1 table=emp
$>> impdp scott/tiger directory=ext dumpfile=users.dmp remap_schema= users:sarah tablespaces=sarah //将一个表空间导入到另一个表空间
 

转载于:https://my.oschina.net/liubaizi/blog/804586

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值