>  기사  >  데이터 베이스  >  Oracle教程:用户可管理的备份

Oracle教程:用户可管理的备份

WBOY
WBOY원래의
2016-06-07 17:03:30954검색

SQLgt;host 操作系统命令;在sql*plus执行操作系统命令。用户管理的备份全备:数据文件、控制文件、redo log或归档文件(可选)

SQL>host 操作系统命令;在sql*plus执行操作系统命令。
用户管理的备份
全备:
数据文件、控制文件、redo log或归档文件(可选)、参数文件、口令文件

得到数据库文件信息以待备份
v$datafile
select name,status from v$datafile;
v$controlfile
select name from v$controlfile;
v$logfile
select member from v$logfile;
DBA_DATA_FILES
select file_name,tablespace_name from dba_data_files;

查询数据文件对应的表空间
select t.name tablespace, f.name datafile
from v$tablespace t,v$datafile f
where t.ts# = f.ts#
order by t.name;

非归档模式只能冷备(关闭数据库备份),归档模式可冷备和热备。

冷备脚本(linux下)
set feedback off heading off verify off trimspool off
set pagesize 0 linesize 200
define dir='/tmp/wb'
define ws='/tmp/ws.sql'
spool &ws
select '! cp' || name || '&dir' from v$datafile order by 1;//order by 1:按第一个列排序
select '! cp' || member || '&dir' from v$logfile order by 1;
select '! cp' || name || '&dir' from v$controlfile order by 1;
select '! cp' || name || '&dir' from v$tempfile order by 1;
spool off
shutdown immediate
@&ws
startup

热备:
数据文件、控制文件、归档文件、参数文件、口令文件

热备表空间三部曲
一、alter tablespace xxwz begin backup;
二、备份表空间对应的数据文件
三、alter tablespace xxwz end backup;
最好还备份归档文件和控制文件。

alter tablespace xxwz begin backup语句做了3件事
1.表空间被checkpoint
2.这个表空间对应的数据文件的头的SCN停止增长
3.改变的数据块整个都会被写入redo log

SQL>select dbms_rowid.rowid_block_number(rowid) blk,name from bbk;使用PL/SQL查看记录的块位置;
$ dd if=example.dbf ibs=8192 skip=1011 count=2 | string;用指定大小的块拷贝一个文件。

v$backup查询备份状态

热备表空间时突然断电,数据库只能启动到mount状态,用v$backup查询备份状态,end正在备份的表空间。alter database datafile 'xxx.dbf' end backup或者alter database end backup。

只读表空间的备份
alter tablespace xxx read only;设为只读,此时控制文件被改变
备份数据文件和控制文件;

热备控制文件的备份(控制文件改变时)
alter database backup controlfile to 'D:/xxxx.ctl';

alter database backup controlfile to trace as 'd:/xxx.sql';会丢失一些信息

使用DBVERIFY检查备份文件是否损坏
dbv file=xxwz_data.dbf feedback=100 //检测数据文件
检测表的损坏
先用select segment_name,tablespace_id,header_file,header_block from sys_dba_segs where segment_name like '%FRUIT%'; FRUIT为表名,,要大写
再用dbv userid=sys/sys segment_id=4.3.395 //4为tablespace_id,3为,header_file,395为header_block。

linux

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.