脱机备份和恢复
步骤:
1、关闭数据库。
2、将数据文件、控制文件、参数文件复制到备份设备上。
3、重新启动数据库。
例如27:脱机备份数据库
答:
第一步:确定要备份的文件名称和路径
A、确定要备份的数据文件的名称和路径。
SQL> SELECT FILE_NAME FROM DBA_DATA_FILES;
FILE_NAME
--------------------------------------------------------------------------------
G:\APP\ORA\ORADATA\TEST\USERS01.DBF
G:\APP\ORA\ORADATA\TEST\UNDOTBS01.DBF
G:\APP\ORA\ORADATA\TEST\SYSAUX01.DBF
G:\APP\ORA\ORADATA\TEST\SYSTEM01.DBF
B、确定要备份的控制文件的名称和路径。
SQL> SELECT NAME FROM V$CONTROLFILE;
NAME
--------------------------------------------------------------------------------
G:\APP\ORA\ORADATA\TEST\CONTROL01.CTL
G:\APP\ORA\FLASH_RECOVERY_AREA\TEST\CONTROL02.CTL
C、确定要备份的日志文件的名称和路径
SQL> SELECT MEMBER FROM V$LOGFILE;
MEMBER
--------------------------------------------------------------------------------
G:\APP\ORA\ORADATA\TEST\REDO03.LOG
G:\APP\ORA\ORADATA\TEST\REDO02.LOG
G:\APP\ORA\ORADATA\TEST\REDO01.LOG
第二步:关闭数据库
SQL> SHUTDOWN IMMEDIATE;
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
第三步:复制数据库文件
SQL> $COPYG:\APP\ORA\ORADATA\TEST\USERS01.DBF F:\BACKUP\;
第四步:恢复数据库
关闭数据库,将复制出来的文件,复制回原来的位置,重启数据库。
联机备份数据库
步骤:
1、切换到归档模式,数据库实现联机备份必须在归档模式下运行。如果不是归档模式,可以使用以下方式切换至归档模式。
A、关闭数据库
SQL>SHUTDOWN IMMEDIATE;
B、使用STARTUP MOUNT启动例程,装载数据库。但此时数据库还没有打开,要切换运行模式,数据库必须处在装载但不打开的状态。
SQL>STARTUP MOUNT;
C、切换到归档模式
SQL>ALTER DATABASE ARCHIVELOG;
D、打开数据库
SQL>ALTER DATABASE OPEN;
E、确认是否成功
SQL>ARCHIVE LOG LIST;
2、联机备份
A、备份表空间
a)、设置表空间为热备份模式。
例如28:将表空间USERS设置为热备份模式。
答:SQL>ALTER TABLESPACE USERS BEGIN BACKUP;
b)、复制处于热备份模式下的表空间所对应的所有数据文件。
c)、设置表空间为非热备份模式。
SQL> ALTER TABLESPACE USERS END BACKUP;
d)、对每个表空间都执行上诉步骤。
e)、强制进行一次日志切换,归档当前的联机重做日志文件。
SQL> ALTER SYSTEM SWITCH LOGFILE;
B、备份控制文件
备份控制文件要以SYSDBA的身份登录数据库。
a)、直接复制控制文件
SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'F:\BACKUP\';
b)、生成跟踪文件的方式复制控制文件。
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
此时ORACLE会在USER_DUMP_DEST指定的目录下生成一个跟踪文件,可根据下列语句查看跟踪文件的物理位置,该文件记录了重建控制文件的SQL语句。
SQL> SHOW PARAMETER USER_DUMP_DEST;
下列语句可以查询SPID,获得SPID之后到上面查询的路径下找到ORCL_ORA_[SPID].TRC文件,此文件便记录了重建控制文件的SQL语句。
SQL> SELECT SPID FROM V$PROCESS WHERE ADDR = (SELECTPADDR FROM V$SESSION WHERE SID =(SELECT SID FROM V$MYSTAT WHERE ROWNUM = 1));
C、备份日志文件
a)、强制转换
SQL> ALTERSYSTEM ARCHIVE LOG CURRENT;
b)、使用$COPY命令。
联机恢复数据库
A、关闭数据库
SQL>SHUTDOWN IMMEDIATE;
B、在V$RECOVER_FILE中查找损坏的文件
SQL> SELECT * FROM V$RECOVER_FILE;
C、恢复数据库
a)、以STARTUP MOUNT方式启动。
b)、查询V$DATAFILE列出所有数据文件的状态,确保左右数据文件都处于联机状态,根据恢复需要执行不同的RECOVER命令。
SQL>RECOVER DATABASE恢复整个数据库。
SQL> RECOVER TABLESPACE表空间名恢复某一个表空间。
SQL> RECOVER DATAFILE数据文件名恢复某一个数据文件。
D、打开数据库
SQL>ALTER DATABASE OPEN;