Heim > Datenbank > MySQL-Tutorial > Oracle教程:用户可管理的备份

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

WBOY
Freigeben: 2016-06-07 17:03:30
Original
996 Leute haben es durchsucht

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage