冷备份:把C:\oracle\product\10.1.0\oradata\orcl下的所有文件拷贝到别的地方去当成备份,比如我的放在D:\share\bak下,当以后数据库遇到问题是,把备份的文件再复制回来即可。如果不能复制,可能的原因是oracle服务没有关闭,可以sysdba的身份进入,然后执行shutdown immediate命令。
热备份:将日志置为“归档”方式。
1.以sysdba的形式进入数据库:
C:\>sqlplus sys/sys as sysdba
2.显示当前的归档模式
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 10
Current log sequence 12
其中第一行表示当前数据库日志的为不归档模式,第二行表示不自动归档,第三行表示归档的默认路径。
在C:\oracle\product\10.1.0\oradata\orcl下,.CTL是控制文件,.LOG是日志文件,.DBF是数据文件。日志文件一共有三个,特点是当第一个文件写满之后接着写第二个,第二个文件写满之后接着写第三个,第三个文件写满之后返回去写第一个。当Database log mode 设置为不归档模式(No Archive Mode)时,如果第三个文件写满了,接下来的记录将会覆盖原来第一个文件中的内容,这也是Oracle数据库的默认情况。而热备份就是把Database log mode设置为归档模式,会在覆盖之前把写满的文件备份到一个指定的路径下,以便日后进行恢复。因此选择热备份就要设置日志归档。
alter system set log_archive_start=true scope=spfile;
启动数据库时打开控制文件但是不打开数据文件。
3.把自动归档改为启用
SQL> alter system set log_archive_start=true scope=spfile;
4.关闭数据库
SQL> shutdown immediate
5.启动数据库,启动时打开控制文件但是不打开数据文件。
SQL> startup mount
6.把数据库切换到归档方式
SQL> alter database archivelog;
7.打开数据库
SQL> alter database open;
8.查看当前的归档模式,发现已经更过来了。
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 10
Next log sequence to archive 12
Current log sequence 12
9.以下将对scott用户的数据文件进行备份和恢复,先查找scott用户所属的命名空间,为users
SQL> select username,default_tablespace from dba_users;
……
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SCOTT USERS
……
10.更改表空间,开始备份
SQL> alter tablespace users begin backup;
11.将C:\oracle\product\10.1.0\oradata\orcl目录下的USERS01.DBF文件拷贝到别的地方去,当作备份,不同人机器上的目录可能不一样。
12.备份结束
SQL> alter tablespace users end backup;
13.将当前的联机日志进行归档
SQL> alter system archive log current;
14.切换日志文件
SQL> alter system switch logfile;
15.再切换一次日志文件,这样就已经将三个日志文件都切换了一次
SQL> alter system switch logfile;
16.关闭数据库
SQL> shutdown immediate;
17.删除C:\oracle\product\10.1.0\oradata\orcl目录下的USERS01.DBF文件
18.重新启动数据库时会提示出错
SQL> startup
……
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF'
19.查看哪个文件出了问题,发现是4号文件找不到
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_
---------- ------- -------
ERROR CHANGE#
----------------------------------------------------------------- ----------
TIME
--------------
4 ONLINE ONLINE
FILE NOT FOUND 0
20.将数据库中的第4号文件脱机并删除
SQL> alter database datafile 4 offline drop;
21.打开数据库
SQL> alter database open;
22.把备份的USERS01.DBF文件拷贝到C:\oracle\product\10.1.0\oradata\orcl目录下
23.现在如果select * from scott.emp;会出错,因为还没有恢复datafile 4
SQL> recover datafile 4;
…
Specify log: {=suggested | filename | AUTO | CANCEL}
auto
24.第20步让第4号文件脱机了,现在要恢复成联机状态
SQL> alter database datafile 4 online;
25.现在查询scott用户的表就可以正确地得到数据了
SQL> select * from scott.emp;
阅读(1465) | 评论(0) | 转发(0) |