代码改变世界

Oracle数据库数据恢复验证笔记

2011-08-14 21:20  魔幻数据  阅读(448)  评论(0编辑  收藏  举报

这些年做数据恢复单子,经常碰到Oracle案例,当我们把数据恢复出来以后,我们怎样才能让用户看到oracle数据库里的东西,而不是一个一个oracle数据文件,以下是我总结出来的,对oracle初学者以及从事数据恢复业务的工程师会很有用的,这是我当年花了很多精力总结出来的一些经验,零零散散,都是我一点一滴做出来的。

1、冷备份需要的是在数据库shutdown的情况下,拷贝controlfile,pfile,datafile,redo logfile。

2、按照同样的目录结构,在新的机器做好,拷贝相应的文件到相应的目录。

3、假设pfile文件在:D:\Oracle\admin\dsserver\pfile\init.ora,在新的机器上运行:
oradim -NEW -SRVC OracleServiceDSSERVER -STARTMODE manual -PFILE "D:\Oracle\admin\dsserver1\pfile\init.ora"
在服务里生成一个新的实例管理服务,启动方式为手工。

4、然后在D:\oracle\ora81\network\ADMIN\listener.ora添加
(SID_DESC =
(GLOBAL_DBNAME = dsserver)
(ORACLE_HOME = D:\oracle\ora81)
(SID_NAME = dsserver)
)

5、运行lsnrctl,stop,然后start,看看dsserver监听情况

6、运行:oradim -STARTUP -SID dsserver -STARTTYPE srvc,inst 启动数据库实例

7、用原来dsserver用户登陆:
在D:\oracle\ora81\network\ADMIN\tnsnames.ora文件中添加相应的选项,如下 :
DSSERVER_QINTL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = qintl)(PORT = 1521))
)
(CONNECT_DATA = (SID = dsserver)(SERVER = DEDICATED))
)
或者oracle dba studio连接

8、顺利的话,一切ok!

*****************************************************************************************************************
对于windows,服务启动后,并不代表数据库就启动了i

解决目录结构不一样的问题
如果路径发生变化,比如controlfile发生变化,需要修改pfile中controlfile的路径,如果数据文件路径发生变化,需要在mount后,rename datafile到新路径。
connect sys/qintl@dsserver_qintl as sysdba
connect /as sysdba
startup mount pfile=D:\oracle\admin\dsserver1\pfile\init.ora
startup mount pfile=/ora/ora9/admin/gpdx/pfile/init.ora.7122005111153

startup pfile=/ora/ora9/admin/gpdx/pfile/init.ora.7122005111153

startup mount pfile=/oracle/initLYGADB.ora.112007223616

startup nomount pfile=/oracle/initLYGADB.ora.112007223616

alter database datafile '/oradata/LYGADB/LSA_IMAGE.DBF' offline drop;

移动数据文件
alter database rename file 'e:\test.dbf' to 'd:\test.dbf';
alter database rename file 'D:\oracle\oradata\dsserver\DBSTAR_IND_L.ORA' to 'D:\oracle\oradata\dsserver\dbf\DBSTAR_IND_L.ORA';

SQL> alter database rename file '/opt/oracle/test.dbf' to '/opt/oracle/oradata/conner/test.dbf';
Database altered.

重做日志文件不能更改路径?
SQL> recover database until cancel;
SQL> alter database open resetlogs;//重建日志文件

recover database;

SQL> alter database open;
Database altered.
orapwd file=/home/oracle/oracle/product/10.2.0/db_1/dbs/orapw password=oracle entries=10

orapwd file=d:\oracle\ora81\DATABASE\PWDorcl.ORA password=oracle entries=10

SQL> select name from v$datafile;

移动成功
SQL> alter database drop logfile group 1;
SQL> alter database add logfile group 1 ('D:\oracle\oradata\dsserver1/log1.log',
'D:\oracle\oradata\dsserver1\log101.log')size 50m;

总结步骤:
1、sqlplus /nolog
2、SQL>connect as sysdba
3、SQL>startup mount pfile=D:\oracle\admin\dsserver\pfile\init.ora
4、SQL> select name from v$datafile; //查看原来数据文件位置
5、alter database rename file 'D:\oracle\oradata\dsserver\DBSTAR_IND_L.ORA' to 'D:\oracle\oradata\dsserver\dbf\DBSTAR_IND_L.ORA'; //挨个更新数据文件位置
6、SQL> alter database open; //打开数据库
7、SQL> select name from v$datafile; //查看更改后的数据

rem 创建用户 DBSTAR
CREATE USER "DBSTAR" PROFILE "DEFAULT" IDENTIFIED BY "qintl"
DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "DBSTAR";
GRANT "RESOURCE" TO "DBSTAR";
ALTER USER "DBSTAR" DEFAULT ROLE ALL;


database 必须的文件:数据文件(data files),Control files,redo log files。
可选的文件:parameters file,passwordfile,archived log files。


没有重做日志文件的冷备份恢复

1) startup mount
2) alter database open resetlogs;
It will re-create redo logs based on information in control files.

本文由达思总工程师覃廷良撰写,转载请注明出处