欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2022-05-08 22:25:56
...

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