首頁  >  文章  >  資料庫  >  丢失所有控制文件,noresetlogs重建控制文件,alterdatabaseopen

丢失所有控制文件,noresetlogs重建控制文件,alterdatabaseopen

WBOY
WBOY原創
2016-06-07 15:57:18981瀏覽

测试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/*.

测试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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn