oracle:数据库mount状态是什么意思啊?

oracle:数据库mount状态是什么意思啊?,第1张

数据库mount状态是加载控制文件,让度实例和数据库相关联。

nomount状态:启动实例。

Reading the initialization file from $ORACLE_HOME/dbs in the following order:

从环境变量下dbs目录按如下顺序读取初始化文件:

-first  spfileSID.ora

首先,读取spfile+实例名.ora

-if not found then, spfile.ora

若未发现文件则读取spfile.ora

-if not found then, initSID.ora

若未发现文件则读取init+实例名.ora

Specifying the PFILE parameter with STARTUP overrides the default behavior.

扩展资料

后台进程是数据库和 *** 作系统进行交互的通道,后台进程的命名由ORACLE_SID决定,ORACLE根据ORACLE_SID来寻找参数文件启动实例。

是Oracle数据库为保持最佳性能和协调多用户请求而设置的,主要有DBWR(将Database Buffer Cache数据写入Data Files)、LGWR(将Redo Log Buffer数据写入Redo Log Files)、CKPT(协调数据文件、控制文件和重做日志。

将System Change Number即SCN写入到控制文件和数据文件头部,促使DBWR、LGWR执行)、SMON(System Monitor,3方面作用:instance recovery实例故障数据恢复、合并空闲碎片空间、回收临时段)、PMON(用户例程意外终止时处理事务。

如回退事务、释放锁及其他资源等)、ARCH(将Redo Log Files写入Archive Log Files)、CJQ0(job queue coordinator)、RVWR(recover writer,为flashback database提供日志记录)等进程。

关于这个问题,要看损坏的是什么文件,以ORACLE数据库为例1控制文件,每个数据库默认有三个控制文件内容一样(比如CTRL01.DBF,CTRL02.DBF,CTRL03.DBF),损坏其中两个,只需把好的那个拷贝成另外两个的名称即可。如果所有控制文件都坏了,需要启动实例到nomount状态重建控制文件,前提是之前最好做过alterdatabasebackupcontrolfiletotrace会得到一个重建控制文件的脚本2在线日志(redolog),如果每个日志组(group)的member(成员)不止一个,同一组内的在线日志只要有一个完好,同样可以通过拷贝方式(停止数据库后)恢复。3TEMP表空间数据文件,可以理解为数据库用的临时文件,损坏后基本无数据损失,可以通过重建temp表空间恢复4.SYSTEM系统表空间,这个挂了基本上必须靠恢复了,前提是要有备份4.其它数据表空间4.1.有备份,可以恢复,但可能丢失数据4.2.未备份,无法恢复该表空间数据,可以选择使该表空间离线(offline),恢复其它数据

环境:

OS:Red Hat Linux As 5

DB:10.2.0.4

在全部控制文件丢失或损坏,而且没有备份的情况下,可以使用重建控制文件的办法打开数据库.以下模拟所有的控制文件丢失的情况下重建控制文件.

1.备份控制文件(数据库mount或是open状态)

SQL>select status from v$instance

STATUS

------------

OPEN

SQL>alter database backup controlfile to trace as '/u01/ftp/bak_controlfile'

2.删除控制文件

[oracle@hxl oracl]$ rm control01.ctl

rm: remove regular file `control01.ctl'? y

[oracle@hxl oracl]$ rm control02.ctl

rm: remove regular file `control02.ctl'? y

[oracle@hxl oracl]$ rm control03.ctl

rm: remove regular file `control03.ctl'? y

3.关闭数据库后尝试打开数据库

SQL>shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL>startup

ORACLE instance started.

Total System Global Area 734003200 bytes

Fixed Size 1221564 bytes

Variable Size 218106948 bytes

Database Buffers 511705088 bytes

Redo Buffers2969600 bytes

ORA-00205: error in identifying control file, check alert log for more info

这个时候数据无法打开,以为我们已经删除了控制文件.

4.查看备份控制文件的内容

[oracle@hxl ftp]$ more bak_controlfile

-- The following are current System-scope REDO Log Archival related

-- parameters and can be included in the database initialization file.

--

-- LOG_ARCHIVE_DEST=''

-- LOG_ARCHIVE_DUPLEX_DEST=''

--

-- LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf

--

-- DB_UNIQUE_NAME="oracl"

--

-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'

-- LOG_ARCHIVE_MAX_PROCESSES=2

-- STANDBY_FILE_MANAGEMENT=MANUAL

-- STANDBY_ARCHIVE_DEST=?/dbs/arch

-- FAL_CLIENT=''

-- FAL_SERVER=''

--

-- LOG_ARCHIVE_DEST_10='LOCATION=USE_DB_RECOVERY_FILE_DEST'

-- LOG_ARCHIVE_DEST_10='OPTIONAL REOPEN=300 NODELAY'

-- LOG_ARCHIVE_DEST_10='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'

-- LOG_ARCHIVE_DEST_10='REGISTER NOALTERNATE NODEPENDENCY'

-- LOG_ARCHIVE_DEST_10='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'

-- LOG_ARCHIVE_DEST_10='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'

-- LOG_ARCHIVE_DEST_STATE_10=ENABLE

--

-- Below are two sets of SQL statements, each of which creates a new

-- control file and uses it to open the database. The first set opens

-- the database with the NORESETLOGS option and should be used only if

-- the current versions of all online logs are available. The second

-- set opens the database with the RESETLOGS option and should be used

-- if online logs are unavailable.

-- The appropriate set of statements can be copied from the trace into

-- a script file, edited as necessary, and executed when there is a

-- need to re-create the control file.

--

-- Set #1. NORESETLOGS case

--

-- The following commands will create a new control file and use it

-- to open the database.

-- Data used by Recovery Manager will be lost.

-- Additional logs may be required for media recovery of offline

-- Use this only if the current versions of all online logs are

-- available.

-- After mounting the created controlfile, the following SQL

-- statement will place the database in the appropriate

-- protection mode:

-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ORACL" NORESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/u01/app/oracle/oradata/oracl/redo01.log' SIZE 50M,

GROUP 2 '/u01/app/oracle/oradata/oracl/redo02.log' SIZE 50M,

GROUP 3 '/u01/app/oracle/oradata/oracl/redo03.log' SIZE 50M

-- STANDBY LOGFILE

DATAFILE

'/u01/app/oracle/oradata/oracl/system01.dbf',

'/u01/app/oracle/oradata/oracl/undotbs01.dbf',

'/u01/app/oracle/oradata/oracl/sysaux01.dbf',

'/u01/app/oracle/oradata/oracl/users01.dbf'

CHARACTER SET WE8ISO8859P1

-- Commands to re-create incarnation table

-- Below log names MUST be changed to existing filenames on

-- disk. Any one log file from each branch can be used to

-- re-create incarnation records.

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORACL/archivelog/2012_06_12/o1_mf_1_1_%u_.arc'

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORACL/archivelog/2012_06_12/o1_mf_1_1_%u_.arc'

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORACL/archivelog/2012_06_12/o1_mf_1_1_%u_.arc'

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORACL/archivelog/2012_06_12/o1_mf_1_1_%u_.arc'

-- Recovery is required if any of the datafiles are restored backups,

-- or if the last shutdown was not normal or immediate.

RECOVER DATABASE

-- All logs need archiving and a log switch is needed.

ALTER SYSTEM ARCHIVE LOG ALL

-- Database can now be opened normally.

ALTER DATABASE OPEN

-- Commands to add tempfiles to temporary tablespaces.

-- Online tempfiles have complete space information.

-- Other tempfiles may require adjustment.

ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/oracl/temp01.dbf'

SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M

-- End of tempfile additions.

--

-- Set #2. RESETLOGS case

--

-- The following commands will create a new control file and use it

-- to open the database.

-- Data used by Recovery Manager will be lost.

-- The contents of online logs will be lost and all backups will

-- be invalidated. Use this only if online logs are damaged.

-- After mounting the created controlfile, the following SQL

-- statement will place the database in the appropriate

-- protection mode:

-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ORACL" RESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/u01/app/oracle/oradata/oracl/redo01.log' SIZE 50M,

GROUP 2 '/u01/app/oracle/oradata/oracl/redo02.log' SIZE 50M,

GROUP 3 '/u01/app/oracle/oradata/oracl/redo03.log' SIZE 50M

-- STANDBY LOGFILE

DATAFILE

'/u01/app/oracle/oradata/oracl/system01.dbf',

'/u01/app/oracle/oradata/oracl/undotbs01.dbf',

'/u01/app/oracle/oradata/oracl/sysaux01.dbf',

'/u01/app/oracle/oradata/oracl/users01.dbf'

CHARACTER SET WE8ISO8859P1

-- Commands to re-create incarnation table

-- Below log names MUST be changed to existing filenames on

-- disk. Any one log file from each branch can be used to

-- re-create incarnation records.

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORACL/archivelog/2012_06_12/o1_mf_1_1_%u_.arc'

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORACL/archivelog/2012_06_12/o1_mf_1_1_%u_.arc'

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORACL/archivelog/2012_06_12/o1_mf_1_1_%u_.arc'

-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area/ORACL/archivelog/2012_06_12/o1_mf_1_1_%u_.arc'

-- Recovery is required if any of the datafiles are restored backups,

-- or if the last shutdown was not normal or immediate.

RECOVER DATABASE USING BACKUP CONTROLFILE

-- Database can now be opened zeroing the online logs.

ALTER DATABASE OPEN RESETLOGS

-- Commands to add tempfiles to temporary tablespaces.

-- Online tempfiles have complete space information.

-- Other tempfiles may require adjustment.

ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/oracl/temp01.dbf'

SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M

-- End of tempfile additions.

--

5.从备份控制文件中提取我们需要的部分,这里我们选择RESETLOGS,将如下内容保存文件为

create_confile.sql

CREATE CONTROLFILE REUSE DATABASE "ORACL" RESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/u01/app/oracle/oradata/oracl/redo01.log' SIZE 50M,

GROUP 2 '/u01/app/oracle/oradata/oracl/redo02.log' SIZE 50M,

GROUP 3 '/u01/app/oracle/oradata/oracl/redo03.log' SIZE 50M

-- STANDBY LOGFILE

DATAFILE

'/u01/app/oracle/oradata/oracl/system01.dbf',

'/u01/app/oracle/oradata/oracl/undotbs01.dbf',

'/u01/app/oracle/oradata/oracl/sysaux01.dbf',

'/u01/app/oracle/oradata/oracl/users01.dbf'

CHARACTER SET WE8ISO8859P1

6.执行create_confile.sql

SQL>set sqlblanklines on -- 因为文件中有空行,需要将该选项打开,否则执行的时候报语法错误

SQL>@/u01/ftp/create_confile.sql

SQL>alter database open resetlogs

Database altered.

说明:

重建控制文件后,若备份信息是存储在控制文件的,该信息会丢失.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9783419.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存