livepps

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

用户管理的备份

用户管理的备份

1) 查看视图获得备份信息

再做一个备份之前,必须要确定数据库中的所有文件并且决定哪些需要备份,可以通过V$视图来获得这些信息.

列出数据库文件

使用V$DATAFILE和视图来确定数据库中数据文件和控制文件,联机重做日志文件不要备份。

select FILE#,STATUS,NAME from V$DATAFILE;

 

FILE#

STATUS

NAME

1

1

SYSTEM

E:\APP\ORADATA\TEST\SYSTEM01.DBF

2

2

ONLINE

E:\APP\ORADATA\TEST\SYSAUX01.DBF

3

3

ONLINE

E:\APP\ORADATA\TEST\UNDOTBS01.DBF

4

4

ONLINE

E:\APP\ORADATA\TEST\USERS01.DBF

还可以使用以下语句,连接V$TABLESPACE和V$DATAFILE视图来显示数据文件关联的表空间:

SELECT t.NAME "Tablespace", f.NAME "Datafile"

FROM V$TABLESPACE t, V$DATAFILE f

WHERE t.TS# = f.TS#

ORDER BY t.NAME;

 

 

Tablespace

Datafile

1

SYSAUX

E:\APP\ORADATA\TEST\SYSAUX01.DBF

2

SYSTEM

E:\APP\ORADATA\TEST\SYSTEM01.DBF

3

UNDOTBS1

E:\APP\ORADATA\TEST\UNDOTBS01.DBF

4

USERS

E:\APP\ORADATA\TEST\USERS01.DBF

查看控制文件:

SELECT NAME,IS_RECOVERY_DEST_FILE FROM V$CONTROLFILE;

 

NAME

IS_RECOVERY_DEST_FILE

1

E:\APP\ORADATA\TEST\CONTROL01.CTL

NO

2

E:\APP\CHENWEIJIE\FLASH_RECOVERY_AREA\TEST\CONTROL02.CTL

NO

2)确定Data file状态

检查数据文件是否属于当前在线表空间备份,使用V$BACKUP视图。

这个视图只适用于用户管理的在线表空间备份,因为RMAN备份和离线表空间备份都不需要表空间的数据文件处于backup mode。将表空间置于backup mode可以避免数据块的损坏。

V$BACKUP这个视图在数据库打开的时候非常有用,在实例失败后也是有用的,因为它显示了实例失败时文件的备份状态。通过这些信息可以确定你是否让表空间处于backup mode。

注意:假如当前的控制文件是被恢复的或者是介质失败之后创建的新控制文件,那么V$BACKUP视图没用。一个恢复的或者重新创建的控制文件不包含V$BACKUP视图的准确信息。还有加入你恢复了一个文件,则这个文件在V$BACKUP视图中的状态原来那个文件的状态,而不是当前的状态,因此,这个视图包含的被恢复文件的状态是错误的。

例如以下视图全部表空间的backup mode状态:

SELECT t.name AS "TB_NAME", d.file# as "DF#", d.name AS "DF_NAME", b.status

FROM V$DATAFILE d, V$TABLESPACE t, V$BACKUP b

WHERE d.TS#=t.TS#

AND b.FILE#=d.FILE#

AND b.STATUS='NOT ACTIVE';

 

TB_NAME

DF#

DF_NAME

STATUS

1

SYSTEM

1

E:\APP\ORADATA\TEST\SYSTEM01.DBF

NOT ACTIVE

2

SYSAUX

2

E:\APP\ORADATA\TEST\SYSAUX01.DBF

NOT ACTIVE

3

UNDOTBS1

3

E:\APP\ORADATA\TEST\UNDOTBS01.DBF

NOT ACTIVE

4

USERS

4

E:\APP\ORADATA\TEST\USERS01.DBF

NOT ACTIVE

3)生成用户管理的整个数据库备份

使用NORMAL, IMMEDIATE, 或者TRANSACTIONAL选项关闭数据库,保证一致性,所有的文件都具有相同的SCN。在重建备份以后不需要进一步的恢复,如果是在ARCHIVELOG模式下,则重建备份以后,要进一步恢复使所有文件同步到最新状态。控制文件非常重要,如果运行在ARCHIVELOG模式下,最好备份控制文件ALTER DATABASE BACKUP CONTROLFILE TO 'filename'。

1. 关闭数据库

2. 操作系统命令复制数据文件和控制文件

3. 重新启动数据库,STARTUP

4)生成用户管理的表空间和数据文件备份

备份离线表空间的注意事项:

你不能离线SYSTEM表空间或者正在活动的undo segments的表空间;

假设一个表在Primary表空间,它的索引在Index表空间,离线Index表空间将导致Primary表空间中的表执行DML指令时发生错误。

--在开始备份前,先确定表空间的数据文件:

SELECT TABLESPACE_NAME, FILE_NAME

FROM DBA_DATA_FILES

WHERE TABLESPACE_NAME = 'USERS';

 

TABLESPACE_NAME

FILE_NAME

1

USERS

E:\APP\ORADATA\TEST\USERS01.DBF

--将表空间离线

SQL> ALTER TABLESPACE users OFFLINE NORMAL;

Tablespace altered.

--操作系统命令,复制USERS01.DBF文件

--将表空间恢复在线

SQL> ALTER TABLESPACE users ONLINE;

Tablespace altered.

--归档未归档的重做日志,使恢复表空间需要的重做已归档。

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

System altered.

注意:如果使用temporary或者immediate的优先级将表空间离线,只能使用回复表空间命名才能使其回到在线状态。

5)生成用户管理的在线表空间和数据文件备份

备份Online Read/Write表空间

--在备份前,先通过视图查看表空间中的数据文件

SELECT TABLESPACE_NAME, FILE_NAME

FROM SYS.DBA_DATA_FILES

WHERE TABLESPACE_NAME = 'USERS';

 

TABLESPACE_NAME

FILE_NAME

1

USERS

E:\APP\ORADATA\TEST\USERS01.DBF

--标记表空间开始备份

SQL> ALTER TABLESPACE users BEGIN BACKUP;

Tablespace altered.

--通过操作系统命令备份表空间的数据文件

略过

--备份完毕后,标记为结束备份

SQL> ALTER TABLESPACE users END BACKUP;

Tablespace altered.

--归档未归档的重做日志,以便恢复表空间需要

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

System altered.

注意:可以使用以下语句使所有备份模式的数据文件,退出backup mode:ALTER DATABASE END BACKUP;

备份Read-Only表空间

备份只读表空间时,你可以简单地备份在线数据文件,不用让表空间进入backup mode因为数据库不允许更改这些数据文件。

--==备份在线的只读表空间

--查看DBA_TABLESPACE视图来确定哪些表空间只读

SELECT TABLESPACE_NAME, STATUS

FROM DBA_TABLESPACES

WHERE STATUS = 'READ ONLY';

 

TABLESPACE_NAME

STATUS

1

USERS

READ ONLY

--查看需要备份的表空间的数据文件

SELECT TABLESPACE_NAME, FILE_NAME

FROM SYS.DBA_DATA_FILES;

 

TABLESPACE_NAME

FILE_NAME

1

SYSTEM

E:\APP\ORADATA\TEST\SYSTEM01.DBF

2

SYSAUX

E:\APP\ORADATA\TEST\SYSAUX01.DBF

3

UNDOTBS1

E:\APP\ORADATA\TEST\UNDOTBS01.DBF

4

USERS

E:\APP\ORADATA\TEST\USERS01.DBF

--操作系统命令复制数据文件

--END

6)生成用户管理的控制文件备份

--备份控制文件到一个二进制文件

SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'E:\app\oradata\test\CONTROL02.bak' REUSE;

Database altered.

--备份控制文件到跟踪文件

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

Database altered.

posted on 2013-10-04 16:33  livepps  阅读(192)  评论(0)    收藏  举报