Windows上Oracle冷备过程

来源:互联网 发布:江汉大学教务网络管理 编辑:程序博客网 时间:2024/04/30 15:48

 Oracle冷备,这里我说的是很特别的,是在Windows上面跑的Oracle。当前在9i和10g上进行测试无误

 

1、备份

 关闭原来的数据库,使用shutdown(如果共享模式的数据库可能报错,可以更改dispatcher系统值,或者在tns内将dedicated加入连接串重新加载数据库即可关闭)。然后将oracle本机的所有服务停掉,注意这里应该停掉,否则可能造成冷备失败。

 

关闭后,将数据文件,包括控制文件等等都拷贝到需要恢复的机器,注意还要拷贝一个PWD<sid>.ora文件需要拷贝,以防密码错误而无法启动。这个文件在ORACLE_HOME/database里面。

 

2、恢复

在恢复的机器上面要安装相同版本的数据库,切记这是冷备,不是迁数据,尽量跟原来一样的环境。

新建一个相同的SID的数据库,sys、system密码尽量设置相同。

关闭数据库及系统服务,将数据拷贝到SID生成的数据目录处。同时可以将上面PWD文件拷贝到database里面覆盖。

启动oracle的服务,然后使用sysdba的用户进入。若发现启动不起来,代表文件地址跟原来存储位置不同,需要修改datafile。

改数据文件地址,如下:

alter database rename file 'D:/ORACLE/ORADATA/GLOBAL/SYSTEM01.DBF'   to 'E:/oracle/oradata/global/SYSTEM01.DBF'    ;
alter database rename file 'D:/ORACLE/ORADATA/GLOBAL/UNDOTBS01.DBF'  to 'E:/oracle/oradata/global/UNDOTBS01.DBF'   ;
alter database rename file 'D:/ORACLE/ORADATA/GLOBAL/CWMLITE01.DBF'  to 'E:/oracle/oradata/global/CWMLITE01.DBF'   ;
alter database rename file 'D:/ORACLE/ORADATA/GLOBAL/DRSYS01.DBF'    to 'E:/oracle/oradata/global/DRSYS01.DBF'     ;
alter database rename file 'D:/ORACLE/ORADATA/GLOBAL/EXAMPLE01.DBF'  to 'E:/oracle/oradata/global/EXAMPLE01.DBF'   ;

.........

 

修改Temp文件就比较麻烦了,要先创建,然后再改了之后,再删除改回。请看下面:

--1、--创建中转临时表空间  
create temporary tablespace TEMP2 TEMPFILE 'E:/oracle/oradata/global/temp02.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED;
--2、--改变系统默认临时表空间   为刚刚创建的新临时表空间temp2  
alter database default temporary tablespace temp2;
--3、--删除原来临时表空间temp  
drop tablespace temp including contents and datafiles;
--4、--重新创建临时表空间temp  
create temporary tablespace TEMP TEMPFILE 'E:/oracle/oradata/global/temp01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED;
--5、   --重置系统默认临时表空间  
alter database default temporary tablespace temp;
--6、删除中转临时表空间temp2  
drop tablespace temp2 including contents and datafiles;

 

这就迁移完成了。然后再打开进行查看如果启动时候出现systmp文件错误等等,请重新备份再恢复。

 

在安装完成Oracle以后,为了避免版本的字符冲突,需要跑一下下面两个系统sql文件。按照规定,应该先扫描是否有INVALID的对象。

SQL> select owner, object_name, object_type, status from dba_objects where status = 'INVALID';

SQL> select count(*) from dba_objects where status = 'INVALID';

 

不过由于新安装的一般不会有这个问题,我们就要按照下面步骤进行。

a、用dba角色登录

b、执行下面命令

SQL> STARTUP MIGRATE
SQL> SPOOL patch.log
SQL> @ORACLE_HOME/rdbms/admin/catpatch.sql
SQL> SPOOL OFF

C、关闭重启后执行下面脚本,即完成了数据库字符集重置。运行脚本utlrp.sql, 重新编译失效脚本

SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql

 

原创粉丝点击