数据库控制文件
㈠ Oracle参数文件和控制文件这两者之间有什么关联吗
参数文件中记录了控制文件的位置;
数据库在startup nomout时,需要读取参数文件,创建实例;
数据库在alter database mout;阶段需要通过参数文件中的控制文件的位置,找到控制文件,最终挂载数据库;
㈡ oracle数据库控制文件损坏怎么办
Oracle DBA神器:PRM-DUL灾难恢复工具,Schema级别数据恢复。PRM-DULFor Oracle Database – schema级别oracle数据库数据恢复特性 ,PRM-DUL即ParnassusData Recovery Manager是企业级别Oracle数据库灾难恢复工具。PRM可以在无备份的情况下恢复被truncated掉的表,也可以恢复无法打开的Oracle数据库(Alter Database Open失败)中的数据。
㈢ oracle数据库的控制文件包含哪些信息类型
oracle数据库的控制文件包含了以下信息:
1、数据库名称
2、数据库创建的时间戳
3、相关的数据文件、重演日志文件的名称和位置
4、表空间信息
5、数据文件脱机范围
6、日志历史
7、归档日志信息
8、备份组和备份块信息
9、文件和重演日志信息
10、数据文件拷贝信息
11、当前日志序列数
12、检查点(checkpoint)信息
(3)数据库控制文件扩展阅读
Oracle数据库中,数据库控制文件维护着数据库的全局物理结构,用以支持数据库成功的启动和运行。创建数据库时,同时就提供了与之对应的数据库控制文件。
在数据库使用过程中,Oracle不断的更新数据库控制文件,所以只要数据库是打开的,数据库控制文件就必须处于可写状态。如果,犹豫某些原因控制文件不能被访问,那么数据库也就不能正常的工作了。
每一个控制文件只能与一个Oracle数据库相关联。数据库控制文件包含了数据库实例的启动和正常操作时,访问数据库所需的关于数据库的信息。数据库控制文件的内容只有Oralce可以修改,数据库管理员和用户都不能对其进行编辑。
㈣ oracle 中的控制文件和数据文件
1、数据文件:
Oracle数据库中每个表空间(tablespace)都是由一个或多个物理数据文件(datafile)构成的。
当一个数据文件(datafile)首次被创建时,为其分配的磁盘空间被格式化为Oracle格式,此时其中尚不包含任何用户数据。Oracle将使用这些空间存储属于( 与此数据文件对应的)表空间的段(segment),这些空间专为Oracle使用。随着表空间内的数据增长,Oracle使用数据文件中的可用空间为段分配新的数据扩展(extent)。
2、控制文件
控制文件(control file)是一个二进制文件,供数据库启动及正常工作时使用。
在数据库运行过程中,控制文件会频繁地被Oracle修改,因此数据库处于开启(open)状态时控制文件必须可写。如果控制文件因故不能访问,数据库 也将无法正常工作。
每当添加,重命名,或移除数据库中的数据文件(datafile)及重做日志文件(redo log file)时,控制文件(control file)就会被更新以反映这些数据库物理结构变化。
㈤ 怎样修改oracle数据库的控制文件位置
$
sqlplus
'/as
sysdba'
#我是用的spfile启动的,spfile文件不能修改,所以要做这一步。
SQL>
create
pfile
from
spfile
#关闭数据库。
SQL>
shutdown
immediate
#cp控制文件到目标位置。
SQL>cp
/opt/oracle/oradata/control*
/opt/oracle/oratest/
修改$ORACLE_HOME/dbs/init$ORACLE_SID.ora
文件中的控制文件的位置。
#启动数据库指定参数文件。
SQL>
startup
pfile='/opt/oracle/proct/9.2.0.4/dbs/init$ORACLE_SID.ora'
#下次启动数据库是直接就可以用startup启动了。
SQL>
create
spfile
from
pfile;
㈥ 什么是控制文件
什么是控制文件:
每个ORACLE数据库都有一个控制文件。控制文件是一个小型的二进制文件,它可以记录数据库的物理结构,其中包含以下内容:
数据库名称
相关的数据文件和联机重做日志文件的名称和位置
数据库创建的时标
当前日志的序号
检验点信息
无论何时打开数据库,控制文件必须能够由ORACLE数据库服务器写入内容。没有控制文件,数据库就不能装载。
在不同的磁盘上复用控制文件
每个ORACLE数据库都应该至少有两个控制文件,它们分别存储在不同的磁盘上。当一个磁盘失败导致控制文件损坏,可以由另一个恢复损坏的控制文件。
依据数据库初始化参数文件中的初始化参数CONTROL_FILES列出的所有文件名,ORACLE会将相应的内容写入到所有这些控制文件中。
初始化参数CONTROL_FILES中列出的第一个文件是ORACLE数据库服务器在数据库运行期间惟一可以读取的文件。
在整个数据库运行期间,如果任何一个控制文件变为不可用,那么实例就不能再继续运行,而且应该中止这个实例。
联机重做日志多路复用:将控制文件的副本存储在每个存储有联机重做日志组成员的磁盘上,可以尽量减少在一个磁盘的失败中丢失所有控制文件和所有联机重做日志组的风险。
当发布CEATE DATABASE语句中,会创建ORACLE数据库的初始控制文件。
以下情况需要备份控制文件:1,添加、取消或重命名数据文件;2,添加或撤消表空间或者更改表空间的读写状态;3,添加或取消重做日志文件。 方法:关闭数据库,将现在控制文件复制到另一位置。重启数据库。
以下情况需要创建新的控制文件:1,所有数据库的控制文件都损坏,且没有备份;2,想改变其中某个数据库参数的永久性设置,这些参数最初是在CREATE DATABASE语句中指定的。
创建一个新的控制文件:
1, 制作一个包含数据库的所有数据文件和联机重做日志文件的列表。
在数据库能正常打开时,产生以下列表!
select member from v$logfile;
select name from v$datafile;
select value from v$parameter where name='control_files';
2, 关闭数据库
shutdown
3, 备份数据库的所有数据文件和联机重做日志文件。
4, 启动一个新的实例,但是不要装载或打开数据库:
STARTUP NOMOUNT;
5, 使用CREATE CONTROLFILE语句为数据库创建一个新的控制文件。
在丢失了联机重做日志组、或者重命名了数据库必须指定RESETLOGS选项。
6, 在离线存储设置上存储新控制文件的备份。
7, 为数据库编辑CONTROL_FILES初始化参数,以便指出现在所有控制文件都是第5步创建的数据库的一部分。
8, 如果有必要可以恢复数据库。
9, 打开数据库。
备份控制文件:
1,将控制文件备份为二进制文件(现有控制文件的复制品)
ALTER DATABASE BACKUP CONTROLFILE TO ‘g:\JYSH\BAK\CONTROL.BAK';
2,制作以后可用于重新创建控制文件的SQL语句:
alter dtatbase backup controlfile to trace;
此命令将SQL脚本写入数据库的跟踪文件,在这个跟踪文件中可以找到这个SQL脚本并对脚本进行编辑,以重新产生控制文件。
㈦ 数据库里的控制文件和数据文件都坏了,怎样解决
控制文件有三个,不可能同时都损坏,你用其他两个中的任意一个复制一个(原来坏的挪走或者改名,先别删除,万一其他两个也坏了呢),然后重命名为原来文件的名字,如果没有问题,那么就可以了,将坏的文件删除就可以了。
如果文件都有问题,或者其他什么问题,那么就重建控制文件。方法网上有。
㈧ 数据库必需至少拥有几个控制文件
SQL> alter database open ; alter database open * 第 1 行出现错误: ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 SQL> alter database open resetlogs; alter database open resetlogs * 第 1 行出现错误: ORA-01152: 文件 1 没有从过旧的备份中恢复 ORA-01110: 数据文件 1: 'E:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF' SQL> recover database using backup controlfile; ORA-00279: 更改 244868 (在 09/16/2007 16:00:16 生成) 对于线程 1 是必需的 ORA-00289: 建议: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_ 2_%U_.ARC ORA-00280: 更改 244868 (用于线程 1) 在序列 #2 中 指定日志: {=suggested | filename | AUTO | CANCEL} auto ORA-00283: 恢复会话因错误而取消 ORA-01244: 未命名的数据文件由介质恢复添加至控制文件 ORA-01110: 数据文件 2: 'E:ORACLEPRODUCT10.2.0ORADATAORCLTEST.DBF' ORA-01112: 未启动介质恢复 SQL> alter database open resetlogs; alter database open resetlogs * 第 1 行出现错误: ORA-01113: 文件 1 需要介质恢复 ORA-01110: 数据文件 1: 'E:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF' --我认为之所以能恢复过来的原因是执行了recover datafile 1; SQL> recover datafile 1; ORA-00283: 恢复会话因错误而取消 ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成 在执行了recover datafile 1;之后再执行 recover database using backup controlfile; oracle提示出 “'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED00002”信息,这是能恢复回来的关键! SQL> recover database using backup controlfile; ORA-00283: 恢复会话因错误而取消 ORA-01111: 数据文件 2 名称未知 - 请重命名以更正文件 ORA-01110: 数据文件 2: 'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED00002' ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件 ORA-01111: 数据文件 2 名称未知 - 请重命名以更正文件 ORA-01110: 数据文件 2: 'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED00002' SQL> alter database rename file 'E:ORACLEPRODUCT10.2.0DB_1DATABASEUNNAMED0 0002' to 'E:ORACLEPRODUCT10.2.0ORADATAORCLTEST.DBF'; 数据库已更改。 SQL> recover database using backup controlfile; ORA-00279: 更改 244905 (在 09/16/2007 16:08:37 生成) 对于线程 1 是必需的 ORA-00289: 建议: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_ 2_%U_.ARC ORA-00280: 更改 244905 (用于线程 1) 在序列 #2 中 指定日志: {=suggested | filename | AUTO | CANCEL} E:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG ORA-00279: 更改 244983 (在 09/16/2007 16:10:25 生成) 对于线程 1 是必需的 ORA-00289: 建议: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_ 3_%U_.ARC ORA-00280: 更改 244983 (用于线程 1) 在序列 #3 中 ORA-00278: 此恢复不再需要日志文件 'E:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG' 指定日志: {=suggested | filename | AUTO | CANCEL} E:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG' ORA-01756: 引号内的字符串没有正确结束 SQL> recover database using backup controlfile; ORA-00279: 更改 244983 (在 09/16/2007 16:10:25 生成) 对于线程 1 是必需的 ORA-00289: 建议: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_ 3_%U_.ARC ORA-00280: 更改 244983 (用于线程 1) 在序列 #3 中 指定日志: {=suggested | filename | AUTO | CANCEL} E:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG ORA-00279: 更改 244992 (在 09/16/2007 16:10:47 生成) 对于线程 1 是必需的 ORA-00289: 建议: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_ 4_%U_.ARC ORA-00280: 更改 244992 (用于线程 1) 在序列 #4 中 ORA-00278: 此恢复不再需要日志文件 'E:ORACLEPRODUCT10.2.0ORADATAORCLREDO02.LOG' 指定日志: {=suggested | filename | AUTO | CANCEL} E:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG' ORA-01756: 引号内的字符串没有正确结束 SQL> recover database using backup controlfile; ORA-00279: 更改 244992 (在 09/16/2007 16:10:47 生成) 对于线程 1 是必需的 ORA-00289: 建议: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2007_09_16O1_MF_1_ 4_%U_.ARC ORA-00280: 更改 244992 (用于线程 1) 在序列 #4 中 指定日志: {=suggested | filename | AUTO | CANCEL} E:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG 已应用的日志。完成介质恢复。
-
㈨ Oracle控制文件的作用
控制文件记录了如下信息:
1、数据库的创建时间
2、数据文件的位置
3、日志文件的位置
等
作用是指导数据库 找到数据文件,日志文件并将数据库启动到 open 状态。
㈩ oracle中怎么重建控制文件或是修改控制文件参数
环境:
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 Buffers 2969600 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.
说明:
重建控制文件后,若备份信息是存储在控制文件的,该信息会丢失.