这几年做数据恢复单子,经常碰到Oracle案例,当我们把数据恢复出来以后,我们怎样才能让用户看到oracle数据库里的东西,而不是一个一个oracle数据文件,以下是我总结出来的,对oracle初学者以及从事数据恢复业务的工程师会很有用的,这是我当年花了很多精力总结出来的一些经验,零零散散,都是我一点一滴做出来的。
1、冷备份需要的是在数据库shutdown的情况下,拷贝controlfile,pfile,datafile,redo logfile。
2、按照同样的目录结构,在新的机器做好,拷贝相应的文件到相应的目录。
3、假设pfile文件在:D:Oracleadmindsserverpfileinit.ora,在新的机器上运行:
oradim -NEW -SRVC OracleServiceDSSERVER -STARTMODE manual -PFILE "D:Oracleadmindsserver1pfileinit.ora"
在服务里生成一个新的实例管理服务,启动方式为手工。
4、然后在D:oracleora81networkADMINlistener.ora添加
(SID_DESC =
(GLOBAL_DBNAME = dsserver)
(ORACLE_HOME = D:oracleora81)
(SID_NAME = dsserver)
)
5、运行lsnrctl,stop,然后start,看看dsserver监听情况
6、运行:oradim -STARTUP -SID dsserver -STARTTYPE srvc,inst 启动数据库实例
7、用原来dsserver用户登陆:
在D:oracleora81networkADMINtnsnames.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:oracleadmindsserver1pfileinit.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:oracleoradatadsserverDBSTAR_IND_L.ORA' to 'D:oracleoradatadsserverdbfDBSTAR_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:oracleora81DATABASEPWDorcl.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:oracleoradatadsserver1/log1.log',
'D:oracleoradatadsserver1log101.log')size 50m;
总结步骤:
1、sqlplus /nolog
2、SQL>connect as sysdba
3、SQL>startup mount pfile=D:oracleadmindsserverpfileinit.ora
4、SQL> select name from v$datafile; //查看原来数据文件位置
5、alter database rename file 'D:oracleoradatadsserverDBSTAR_IND_L.ORA' to 'D:oracleoradatadsserverdbfDBSTAR_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