关闭数据库的模式:

shutdown normal;最慢。禁止新连接,等待所有用户和事务完成并用户自动退出。
shutdown transactional;较慢。禁止新连接,等待所有用户和事务完并强行断开用户连接。
shutdown immediate;较快。禁止新连接,中断事务并回滚,并强行断开用户连接。
shutdown abort最快,但是它相当于断电,会造成数据库不一致,启动时较慢(需要自动恢复)。

一、冷备份

    1.首先关闭oracle数据库:
    SQL>shutdown immediate;
    2.将你所知道的,必须备的文件有:   
     数据库“控制文件->扩展名为CTL”
    “数据文件->扩展名是DBF或ORA"
    “重做日志文件->扩展名是LOG"。
    可选的文件有:
    init.ora:初始参数文件或pwd<实例名>密码文件。
    备份到其它位置或其它服务器中,即可实现冷备份。

1、数据库实例名:

SQL> select name from v$database;

NAME
---------
TEST

2、数据库控制文件位置:

SQL> select name from V$controlfile;

NAME
----------------------------------------------------
D:\WINSERVER\ORACL11\ORADATA\TEST\CONTROL01.CTL
D:\WINSERVER\ORACL11\ORADATA\TEST\CONTROL02.CTL
D:\WINSERVER\ORACL11\ORADATA\TEST\CONTROL03.CTL

3、数据文件的位置:

SQL> select name from v$datafile;

NAME
------------------------------------------------
D:\WINSERVER\ORACL11\ORADATA\TEST\SYSTEM01.DBF
D:\WINSERVER\ORACL11\ORADATA\TEST\SYSAUX01.DBF
D:\WINSERVER\ORACL11\ORADATA\TEST\UNDOTBS01.DBF
D:\WINSERVER\ORACL11\ORADATA\TEST\USERS01.DBF
D:\WINSERVER\ORACL11\ORADATA\TEST\EXAMPLE01.DBF

4、日志文件的位置:

SQL> select member from v$logfile;

MEMBER
------------------------------------------------
D:\WINSERVER\ORACL11\ORADATA\TEST\REDO03.LOG
D:\WINSERVER\ORACL11\ORADATA\TEST\REDO02.LOG
D:\WINSERVER\ORACL11\ORADATA\TEST\REDO01.LOG
二、冷恢复
    1.在新服务器中安装oracle数据库程序,为保持最简便,请将新安装路径与原数据安装路径保持一致。并创建与原数据库一模一样名称的“实例”。
    2.将新数据库的表空间、数据文件与原来的保持一致。例如原来的USERS表空间下对应着两个数据文件USERS01.DBF和USERS02.DBF你也得创建相应的数据文件。
    3.关闭数据库,命令同上。
    4.重命名或删除原数据文件,控制文件,日志文件,将之前备份的这些文件再按安置路径拷备回去。
    5.启动数据库:
      sqlplus /nolog
      connect sys/密码@实例 /as sysdba
      startup
    数据库报错:ORA-01991:???????'x:\oracle\ora92\DATABASE\PWDXXXX.ORA'如下图所示

oracle备份_it
    此时,再次关闭数据库,退到DOS提示符下,删除pwdXXXX.ora文件
    6.键入命令:orapwd file=你oracle安装的路径\DATABASE\PWDxxxx.ORA password=你的初始密码,重新生成密码文件
    7.启动数据库,你发现已经能成功打开数据库了。
 
    至此,冷备份和恢复完成。

    该操作试用于原oracle安装与备份的数据路径和现oracle的安装和数据路径保持一致。如果不一致,你必须将init.ora先拷过来,覆盖现init.ora,同时在startup命令后需加参数,如下:
    startup pfile=具体的路径\init.ora
    打开数据库后,重新生成spfile:
    create spfile from pfile;

    这样就可以了!