丢失全部控制文件,noresetlogs重建控制文件,alter database open

測试2:
(1)一致性的全备
SQL> shutdown immediate;

$ cp -rf $ORACLE_BASE/oradata/boss/*.dbf /oradata/bossbak/20140610allbackup
$ cp -rf $ORACLE_BASE/oradata/boss/*.log /oradata/bossbak/20140610allbackup
$ cp -rf $ORACLE_BASE/oradata/boss/*.ctl /oradata/bossbak/20140610allbackup
$ cp -rf /oradata/boss/control01.ctl /oradata/bossbak/20140610allbackup
$ cp -rf $ORACLE_HOME/dbs/spfileboss.ora /oradata/bossbak/20140610allbackup
$ cd /oracle/flash_recovery_area/BOSS/archivelog/2014_06_10/
$ rm -rf *

(2)查看数据库的信息
SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE
TESTTBS01                      ONLINE
TESTTBS02                      OFFLINE
TESTTBS03                      READ ONLY

SQL> select table_name,status,tablespace_name from user_tables where tablespace_name like 'TESTTBS%';

TABLE_NAME                     STATUS   TABLESPACE_NAME
------------------------------ -------- ------------------------------
TEST01                         VALID    TESTTBS01
BOSS_NEW_TEST                  VALID    TESTTBS01

SQL> select
  2    ts.name "表空间名"
  3    , df.file# "文件号"
  4    , df.checkpoint_change# "检查点"
  5    , df.name "文件名称"
  6    from v$tablespace ts,v$datafile df
  7  where ts.ts#=df.ts#
  8  order by df.file#;

表空间名                           文件号     检查点 文件名称
------------------------------ ---------- ---------- ----------------------------------------
SYSTEM                                  1     708505 /oracle/oradata/boss/system01.dbf
UNDOTBS1                                2     708505 /oracle/oradata/boss/undotbs01.dbf
SYSAUX                                  3     708505 /oracle/oradata/boss/sysaux01.dbf
USERS                                   4     708505 /oracle/oradata/boss/users01.dbf
EXAMPLE                                 5     708505 /oracle/oradata/boss/example01.dbf
TESTTBS01                               6     708505 /oracle/oradata/boss/testtbs01_01.dbf
TESTTBS01                               7     708505 /oracle/oradata/boss/testtbs01_02.dbf
TESTTBS02                               8     652783 /oracle/oradata/boss/testtbs02_01.dbf
TESTTBS03                               9     652799 /oracle/oradata/boss/testtbs03_01.dbf

(3)备份控制文件的trace文件
SQL> alter database backup controlfile to trace as '/oradata/bossbak/20140610allbackup/control1.trace' noresetlogs;
SQL> alter database backup controlfile to trace as '/oradata/bossbak/20140610allbackup/control2.trace';
SQL> alter database backup controlfile to trace as '/oradata/bossbak/20140610allbackup/control3.trace' resetlogs;

(4)创建表空间testtbs04,在表空间testtbs04创建表test02,然后直接shutdown abort
SQL>
create tablespace testtbs04
  datafile '/oracle/oradata/boss/testtbs04_01.dbf' size 10m
  autoextend on next 1m maxsize unlimited
  logging
  extent management local autoallocate
  blocksize 8k
  segment space management auto
  flashback on;

Tablespace created.

SQL> create table test02 (id number, name varchar2(30)) tablespace testtbs04;

SQL> insert into test02 values(1,'nnnnn');
SQL> insert into test02 values(2,'mmmmm');
SQL> commit;

(5)删除全部控制文件
$ rm -rf *.ctl

SQL> shutdown abort;
ORACLE instance shut down.

SQL> startup open;
ORA-00205: error in identifying control file, check alert log for more info

(6)编辑trace文件
$ cp -rf control1.trace control.trace
CREATE CONTROLFILE REUSE DATABASE "BOSS" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/oracle/oradata/boss/redo01.log'  SIZE 50M,
  GROUP 2 '/oracle/oradata/boss/redo02.log'  SIZE 50M,
  GROUP 3 '/oracle/oradata/boss/redo03.log'  SIZE 50M
DATAFILE
  '/oracle/oradata/boss/system01.dbf',
  '/oracle/oradata/boss/undotbs01.dbf',
  '/oracle/oradata/boss/sysaux01.dbf',
  '/oracle/oradata/boss/users01.dbf',
  '/oracle/oradata/boss/example01.dbf',
  '/oracle/oradata/boss/testtbs01_01.dbf',
  '/oracle/oradata/boss/testtbs01_02.dbf',
  '/oracle/oradata/boss/testtbs04_01.dbf'
CHARACTER SET ZHS16GBK
;

SQL> CREATE CONTROLFILE REUSE DATABASE "BOSS" NORESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 '/oracle/oradata/boss/redo01.log'  SIZE 50M,
  9    GROUP 2 '/oracle/oradata/boss/redo02.log'  SIZE 50M,
 10    GROUP 3 '/oracle/oradata/boss/redo03.log'  SIZE 50M
 11  DATAFILE
 12    '/oracle/oradata/boss/system01.dbf',
 13    '/oracle/oradata/boss/undotbs01.dbf',
 14    '/oracle/oradata/boss/sysaux01.dbf',
 15    '/oracle/oradata/boss/users01.dbf',
 16    '/oracle/oradata/boss/example01.dbf',
 17    '/oracle/oradata/boss/testtbs01_01.dbf',
 18    '/oracle/oradata/boss/testtbs01_02.dbf',
 19    '/oracle/oradata/boss/testtbs04_01.dbf'
 20  CHARACTER SET ZHS16GBK
 21  ;

Control file created.

SQL> alter system archive log all;  ##假设没有运行归档,那么不须要recover database

SQL> select status from v$instance;

STATUS
------------
MOUNTED

SQL> recover database;
Media recovery complete.

SQL> alter database open;

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE
TESTTBS01                      ONLINE
TESTTBS02                      OFFLINE
TESTTBS03                      READ ONLY
TESTTBS04                      ONLINE

SQL> select * from test02;

        ID NAME
---------- ------------------------------
         1 nnnnn
         2 mmmmm

你可能感兴趣的:(database)