您的位置:首页 > 数据库 > Oracle

Oracle数据文件的备份与恢复

2013-05-23 15:36 716 查看
Oracle数据文件的备份与恢复数据文件中包含数据库中的用户数据或应用程序数据。是oracle体系结构中非常重要要的一部分。因此对数据文件的备份与恢复时每一位DBA的必修课。本次测试的思路是分为4个步骤1.通过增加数据文件的大小,向表空间中添加新表新数据来调整数据库结构。2.备份数据文件和控制文件。3.删除数据文件,然后进行恢复。4.确认恢复过来的数据文件中是否完整,先前添加的表和数据是否完整。第一步:1.增加表空间大小。首先我们先查看一下每个表空间的大小。SQL> selecttablespace_name,sum(bytes/1024/1024) as FreeSize
2 from dba_free_space
3 group by tablespace_name;

TABLESPACE_NAME FREESIZE
------------------------------ ----------
SYSAUX 31.1875
UNDOTBS1 77.75
USERS .5625
SYSTEM 6.5625
EXAMPLE 21.25

由上可知:目前5个表空间基本空间都不足,因为我们基本不会使用example例子表空间,所以接下来只为其他4个表空间添加数据文件。
我们先查一下每一个表空间和数据文件的对应关系和位置。
SQL> Select tablespace_name, file_namefrom dba_data_files;
TABLESPACE_NAME
------------------------------
FILE_NAME
-------------------------------------------------------------------------------
EXAMPLE
C:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF
USERS
C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
UNDOTBS1
C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
TABLESPACE_NAME
------------------------------
FILE_NAME
-------------------------------------------------------------------------------
SYSAUX
C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
SYSTEM
C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF

接下来就开始添加128M数据文件。
SQL> alter tablespace system add datafile'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SY
STEM02.DBF ' size 128M;
altertablespace system add datafile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM0
2.DBF
*
第 1 行出现错误:
ORA-01119: 创建数据库文件 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM02.DBF
' 时出错
ORA-27040: 文件创建错误, 无法创建文件
OSD-04002: 无法打开文件
O/S-Error: (OS 123) 文件名、目录名或卷标语法不正确。
实际操作时容易出现了如上错误,原因是:'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SY
STEM02.DBF ' 两个单引号之间(尤其是头和尾)存在空格,所以在word编辑后再往数据库中执行时一定要格外小心。
接下来就很顺利了
SQL> alter tablespace system add datafile'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM02.DBF' size 128M;
Tablespace altered.
SQL> alter tablespace sysaux add datafile'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX02.DBF' size 128M;
Tablespace altered.
SQL> alter tablespace undotbs1 add datafile'C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS02.DBF' size 128M;
Tablespace altered.
SQL> alter tablespace users add datafile'C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS02.DBF' size 128M;
Tablespace altered.
查看一下表空间是否已经变大。
SQL> selecttablespace_name,sum(bytes/1024/1024) as FreeSize
2 from dba_free_space
3 group by tablespace_name;

TABLESPACE_NAME FREESIZE
------------------------------ ----------
SYSAUX 157.75
UNDOTBS1 205.75
USERS 127.5625
SYSTEM 133.5625
EXAMPLE 21.25

由上结果可知:已经添加数据文件成功,表空间已经变大。

2.接下来我们继续在表空间中创建新的表,并添加数据。
2.1首先是创建一个账户,并赋权。
SQL> create user test identified byszc12345 default tablespace users temporary
tablespace temp;
用户已创建。
SQL> grant connect,resource to test;
授权成功。
2.2 创建一个testtable表,并添加数据
鉴于方便,我们直接复制scott用户的dept表中的数据。
首先是赋权test可以select scott用户的dept表。
SQL> grant select on scott.dept to test;
授权成功。
然后创建testtable表,内容为dept的表内容。
SQL> create table testtable as select *from scott.dept;
表已创建。
SQL> select * from testtable;

DEPTNO DNAME LOC
---------- -------------- -------------
90 tec guangzhou
70 tec beijing
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
60 tec shanghai

已选择7行。

接下来我们先备份数据文件和控制文件,下面的是一位大牛的原话,我直接粘贴了:
“切记:每次对数据库结构(调整表空间,增减数据文件)后,最好能立即备份一次数据库,并备份一次控制文件!一个好的DBA不是会多少奇怪的花样,弄一些稀奇古怪的参数来显示自己的博学,而是踏踏实实的做好每个简单的细节!细节决定成败!”

第二步:备份数据文件和控制文件。

1.先查看数据文件的位置,为备份做准备
Select tablespace_name, file_name fromdba_data_files order by tablespace_name;
2.表空间设置为热备份模式。
SQL> alter tablespace SYSAUX beginbackup;
表空间已更改。
SQL> alter tablespace SYSTEM beginbackup;
表空间已更改。
SQL> alter tablespace UNDOTBS1 beginbackup;
表空间已更改。
SQL> alter tablespace USERS beginbackup;
表空间已更改。
3.将数据文件复制一份到备份目录中。
4.关闭表空间的热备份模式。
SQL> alter tablespace SYSAUX end backup;
表空间已更改。
SQL> alter tablespace SYSTEM end backup;
表空间已更改。
SQL> alter tablespace UNDOTBS1 endbackup;
表空间已更改。
SQL> alter tablespace USERS end backup;
表空间已更改。
5.日志切换
SQL> Alter system switch logfile;
系统已更改。
6.备份控制文件
SQL> Alter database backup controlfileto 'c:\oracle\orcl\control02.bak';
数据库已更改。
7.再日志切换
SQL> Alter system switch logfile;
系统已更改。

第三步:删除users表空间的数据文件

Shutdown immediate;然后删除USERS01.DBF和USERS02.DBF,然后startup。

第四步:恢复数据文件并测试数据完整性
重启后会提示:
SQL> startup
ORA-32004: obsolete or deprecatedparameter(s) specified for RDBMS insta
ORACLE 例程已经启动。

Total System Global Area 778387456 bytes
Fixed Size 1374808 bytes
Variable Size 260048296 bytes
Database Buffers 511705088 bytes
Redo Buffers 5259264 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 4: 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF'

这时就先将之前的备份,复制到数据文件指定的目录。
之后执行命令恢复即可。
SQL> recover database;
完成介质恢复。
通过上述结果会看到,恢复的售后不需要手工干预,是以因为这里没有提示手工干预,是因为我提前早已设置到归档目录,并将配置添加到spfile文件中,所以默认情况下就可以找到,否则还是会提示手工输入的。
验证一下数据文件是否完整。
SQL> conn sys/oracle as sysdba;
已连接。
SQL> alter database open;
数据库已更改。
SQL> conn test/szc12345
已连接。
SQL> select * from testtable;

DEPTNO DNAME LOC
---------- -------------- -------------
90 tec guangzhou
70 tec beijing
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
60 tec shanghai
已选择7行。由上可知:数据很完整。整个的数据文件的备份与恢复就全部做完了,相对比较简单,就是过程感觉麻烦一点。

本文出自 “greetwin” 博客,请务必保留此出处http://greetwin.blog.51cto.com/6238812/1208043
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐