用重建控制文件的方法修改oracle文件路径

用重做控制文件方法修改oracle文件路径

 

1、这里第一步,当然是查到数据在哪了

sql>col file_name format a55    

sql>set line 120 pagesize 2000  ——设置输出格式

sql>select file_name,tablespace_name from dba_data_files;

2、这里我们知道数据文件在哪里了,现在就可以开始迁移数据文件了(当然这里我们需要先进行关机,不然会有数据文件在运行,造成不必要的麻烦)

sql>shutdown immediate  关闭数据库

sql>!mv /disk/* /u02/app/oracle/oradata/test/  这里我所有的控制文件都放在/disk目录,当然是可以直接用*号代替

3、做一下控制文件的备份(产生track文件)

做控制文件的备份,这里我们要先进入mount状态

sql>startup mount

sql>alter database backup controlfile to trace

当然这里track文件已经产生,每个人的track文件路径不同,所以我们可以用如下命令进行查看track文件路径

SELECT VALUE  FROM V$PARAMETER WHERE NAME = 'user_dump_dest'; 

4、重建控制文件

这里,如果我们是重建控制文件,肯定是不能再mount状态下的,所以我们又需要关机,进入nomount状态

sql>shutdown immediate    关闭数据库转换为nomount状态

sql>startup no mount      nomount

下面开始重建控制文件:

CREATE CONTROLFILE REUSE DATABASE "TEST" RESETLOGS ARCHIVELOG  (这两句是归档,如果没开切记换成NORESETLOGS NOARCHIVELOG)
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u02/app/oracle/oradata/orcl/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/u02/app/oracle/oradata/orcl/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u02/app/oracle/oradata/orcl/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/disk/system01.dbf',
'/disk/sysaux01.dbf',
'/disk/undotbs01.dbf',
'/disk/users01.dbf'
CHARACTER SET ZHS16GBK    (字符集,这里也不要弄错了,当然这所有的,你可以进入3中备份的track查看到这所有的)

如上执行控制文件创建成功

5、启动数据库

sql>alter database open resetlogs  将nomount状体转换为open状态,启动数据库

这一步很有可能会报如下错误,这里日子文件时间产生差异,会报错  

ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

解决办法(进行介质恢复):

sql>recover database using backup controlfile 

如下,第一种/disk/redo02.log,这里说明redo02.log是对的,而erdo01.log完成介质恢复,说明redo01.log在重建控制文件时是当前日志文件,恢复时产生了时间差异

sql>alter database open resetlogs 这时我们启动数据库,可以看到启动成功

 

6、查看修改后的数据文件的路径和状态:

SQL> select file_name,tablespace_name,status from dba_data_files;

至此,/opt/oracle/db02/oradata/ORCL目录下的数据文件路径全部修改成功

 

 

 

 

 

RMAN 控制文件的备份与恢复

 

rman target /

RMAN> show all  这里第一步,看一下当前控制文件保存的路径

db_unique_name 为 TEST 的数据库的 RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/orabackup/%F';  这里/代表oracle的家目录
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u02/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_test.f'; # default

上面我们可以看到控制文件备份的路径

这里也可以修改控制文件为自动备份(当数据文件备份时,会自带备份一份控制文件)

configure controlfile autobackup on;启动控制文件自动备份

configure controlfile autobackup format for device type disk to '/orabackup/%F';修改控制文件备份路径

这时候,我们就可以进行备份了  

backup current controlfile  就可以备份了,当然如果你想另指路径,可以在后面加上format和路径

list backup of controlfile;  查看备份后的控制文件

RMAN> RESTORE CONTROLFILE FROM '/u01/oracle/fast_recovery_area/JUSTDB/backupset/2013_12_11/o1_mf_ncsnf_TAG20131211T162913_9bj8m1gt_.bkp';  还原

  

 

 

 

 

 

 

posted on 2016-06-24 15:59  immortality  阅读(1044)  评论(0)    收藏  举报

导航