1冷备份
Oracle的备份与恢复有三种标准的模式,大致分为两大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style)和归档模式(Archivelog-style),通常,我们把非归档模式称为冷备份,而相应的把归档模式称为热备份,他们的关系如下所示:
冷备份是指非归档模式的将Oracle服务器数据恢复回来。同时也可以将服务器A的数据恢复到服务器B中。
2备份
以oracle11g为例。
2.1使用coldbak脚本备份。
操作步骤:
a)编写如下脚本,保存为*.sql:
--connect database connect sys/你设定的密码 as sysdba; --shutdown database shutdown immediate; --Copy Data file Host xcopy d:\Oracle\product\11.2.0\oradata\orcl\*.dbf d:\DbBakup; --Copy Control file Host xcopy d:\Oracle\product\11.2.0\oradata\orcl\*.ctl d:\DbBakup; --Copy Log file Host xcopy d:\Oracle\product\11.2.0\oradata\orcl\*.log d:\DbBakup; --startup database startup;
使用以上脚本将oracle的oradata文件夹下的数据备份出来。
注:以上代码拷贝到记事本中保存为*.sql即为冷备份脚本。其中控制文件(*.ctl),数据文件(*.dbf),日志文件(*.log)的路径依自己的路径修改。“d:\DbBakup”为备份路径,可以自己修改。要备份所有的数据文件,可能有的dbf并不是都在一个目录中,这个就要在EM中查看一下所有的数据文件路径了。
b).在运行中输入cmd。
c).在cmd界面中输入sqlplus/nolog进入sql*plus。
d).以dba身份连接数据库conn sys/你设定的密码 as sysdba。
e).执行冷备份操作。@冷备份角本路径。
2.2使用手动备份
1)停掉Oracle中的所有有关Oracle的服务。
2)将oracle安装目录下的oradata文件夹备份出来。
3本地恢复
1.在运行中输入cmd。
2.在cmd界面中输入sqlplus/nolog进入sql*plus。
3.以dba身份连接数据库conn sys/你设定的密码 as sysdba。
sql> conn sys//你设定的密码 as sysdba
4.输入:shutdown immediate。
sql> shutdown immediate;
5.把备份的文件手工逆拷贝到相对应的oracle目录中。
6.在命令窗口中sql>光标处输入:startup。
sql> startup;
4异地恢复
注:把备份的文件拷贝到另一台机器上(确保与备份机器安装的是同一版本oracle,并且安装目录相同,并且拥有相同的服务名SID)。
正常恢复步骤:
1.在运行中输入cmd。
2.在cmd界面中输入sqlplus/nolog进入sql*plus。
3.以dba身份连接数据库conn sys/你设定的密码 as sysdba。
sql> conn sys//你设定的密码 as sysdba
4.输入:shutdown immediate。
sql> shutdown immediate;
5.把备份的文件手工逆拷贝到相对应的oracle目录中。
6.在命令窗口中sql>光标处输入:startup。
sql> startup;
注:如无法登录EM,请重启oracle服务。以上为正常本机恢复过程。如果异地恢复只执行以上步骤,数据库的主机连接字符串则会是备份机器的主机名。所以我们在异地恢复时除了正常恢复步骤还要重建EM。
重建EM步骤:
建议关闭下EM服务。
1.删除EM
A.在cmd命令窗口输入:emca -repos drop
B.在接下来的信息中按自己的数据库信息输入。
2.创建EM
A.在cmd命令窗口输入:emca -repos create
B.在接下来的信息中按自己的数据库信息输入。
3.配置EM
A.在cmd命令窗口输入:emca -config dbcontrol db
B.在接下来的信息中按自己的数据库信息输入。
----------------------------------------------------------------------------------------------------------------------其它注意事项:
1) 重新设置控制文件:
SQL> conn sys as sysdba SQL> startup nomount SQL> alter system set control_files='D:\ORACLE\ORADATA\ORA10\CONTROL02.CTL' scope=spfile; SQL> alter database mount SQL> alter database open
2) 重新设置服务名
SQL> show parameter db_name; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_name string DEFAULT SQL> alter system set db_name=新服务名 scope=spfile; System altered. SQL> alter database mount; alter database mount * ERROR at line 1: ORA-01103: database name 'ORCL' in controlfile is not 'DEFAULT' SQL> shutdown immediate ORA-01507: database not mounted ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 88080384 bytes Fixed Size 777812 bytes Variable Size 87040428 bytes Database Buffers 0 bytes Redo Buffers 262144 bytes Database mounted. Database opened.