第6章 管理控制文件
----控制文件的增(多元化)、删(有损坏时)、改(改文件、改参数)、查
一、控制文件简介
1、控制文件较小,一般2M—10M之间,主要记录了以下信息:
数据库名称;
数据文件名称及位置;
日志文件名称及位置;
表空间名称;
当前日志序列号;
检查点信息;
日志历史信息;
RMAN信息;
2、如果不使用RMAN,在不改变永久参数的情况下,控制文件的大小保持不变,个数最多为8个;
二、多元化控制文件
1、使用pfile多元化控制文件:
(1)手工修改初始化参数:control_file
启动OracleServiceDEMO服务;
D:\>set oracle_sid=DEMO
D:\>sqlplus sys/DEMO as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 12月 30 10:26:51 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到空闲例程。
SQL> show parameter instance
ORA-01034: ORACLE not available
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size 1251196 bytes
Variable Size 637536388 bytes
Database Buffers 838860800 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL>
修改C:\oracle\product\10.2.0\db_1\database\initDEMO.ora:
control_files='D:\Oracle_Database\DEMO\control01.ctl','E:\Oracle_Database\DEMO\control02.ctl','F:\Oracle_Database\DEMO\control03.ctl'
(2)关闭数据库
SQL> shutdown immedi
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
(3)复制控制文件
安装数据库时的三个控制文件时互为镜像的;
SQL> host copy D:\Oracle_Database\DEMO\control02.ctl E:\Oracle_Database\DEMO\control02.ctl
系统找不到指定的路径。
已复制 0 个文件。
SQL> host mkdir E:\Oracle_Database\DEMO
SQL> host mkdir F:\Oracle_Database\DEMO
SQL> host copy D:\Oracle_Database\DEMO\control02.ctl E:\Oracle_Database\DEMO\control02.ctl
已复制 1 个文件。
SQL> host copy D:\Oracle_Database\DEMO\control03.ctl E:\Oracle_Database\DEMO\control03.ctl---------导致后面ora-00205错
已复制 1 个文件。
SQL>
(4)启动数据库
使用修改过的pfile启动数据库;
SQL> startup pfile=%oracle_home%\database\initDEMO.ora
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size 1251196 bytes
Variable Size 637536388 bytes
Database Buffers 838860800 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter controlfile
SQL> show parameter control_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string D:\ORACLE_DATABASE\DEMO\CONTRO
L01.CTL, D:\ORACLE_DATABASE\DE
MO\CONTROL02.CTL, D:\ORACLE_DA
TABASE\DEMO\CONTROL03.CTL
SQL>
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
SQL> host set oracle_home
环境变量 oracle_home 没有定义
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup pfile=C:\oracle\product\10.2.0\db_1\database\initDEMO.ora
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size 1251196 bytes
Variable Size 637536388 bytes
Database Buffers 838860800 bytes
Redo Buffers 7135232 bytes
ORA-00205: ?????????, ??????, ???????
The system could not find a control file of the specified name and size.
SQL> show parameter control_file
NAME TYPE VALUE
------------------------------------ ---------------------- --------------------
----------
control_file_record_keep_time integer 7
control_files string D:\ORACLE_DATABASE\DEMO\CONTRO
L01.CTL, E:\ORACLE_DATABASE\DE
MO\CONTROL02.CTL, F:\ORACLE_DA
TABASE\DEMO\CONTROL03.CTL
SQL>
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> host copy D:\Oracle_Database\DEMO\control02.ctl E:\Oracle_Database\DEMO\control02.ctl
已复制 1 个文件。
SQL> host copy D:\Oracle_Database\DEMO\control03.ctl F:\Oracle_Database\DEMO\control03.ctl
已复制 1 个文件。
SQL> startup pfile=C:\oracle\product\10.2.0\db_1\database\initDEMO.ora
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size 1251196 bytes
Variable Size 637536388 bytes
Database Buffers 838860800 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter control_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string D:\ORACLE_DATABASE\DEMO\CONTRO
L01.CTL, E:\ORACLE_DATABASE\DE
MO\CONTROL02.CTL, F:\ORACLE_DA
TABASE\DEMO\CONTROL03.CTL
SQL>
2、使用spfile多元化控制文件
执行startup 命令时(无参数),Oracle启动的顺序是
1 寻找spfile.ora 如果没有
2 寻找spfile.ora 如果没有
3 寻找init.ora 如果没有
4.报错
(1)修改初始化参数control_files
SQL> alter system set control_files='D:\Oracle_Database\Demo\Control01.ctl','D:\Oracletest\Control02.ctl' SCOPE=SPFILE;
系统已更改。
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string D:\ORACLE_DATABASE\DEMO\CONTRO
L01.CTL, E:\ORACLE_DATABASE\DE
MO\CONTROL02.CTL, F:\ORACLE_DA
TABASE\DEMO\CONTROL03.CTL
SQL>
(2)关闭数据库
(3)复制文件
(4)启动数据库
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string C:\ORACLE\PRODUCT\10.2.0\DB_1\
DATABASE\SPFILEDEMO.ORA
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string D:\ORACLE_DATABASE\DEMO\CONTRO
L01.CTL, D:\ORACLETEST\CONTROL
02.CTL
SQL>
三、建立控制文件
1、控制文件全部丢失
把d盘的两个控制文件损坏(改后缀);
启动时报ora-00205错:The system could not find a control file of the specified name and size.
(1)nomount状态下修改参数control_files参数
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size 1251196 bytes
Variable Size 637536388 bytes
Database Buffers 838860800 bytes
Redo Buffers 7135232 bytes
ORA-00205: ?????????, ??????, ???????
SQL> startup nomount
ORA-01081: ????????? ORACLE - ??????
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size 1251196 bytes
Variable Size 637536388 bytes
Database Buffers 838860800 bytes
Redo Buffers 7135232 bytes
SQL> alter system set control_files='d:\Oracle_database\demo\control01.ctl','d:\
oracletest\control02.ctl' scope=spfile;
系统已更改。
SQL>
(2)重启数据库至nomount状态
SQL> shutdown immediate
ORA-01507: ??????
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size 1251196 bytes
Variable Size 637536388 bytes
Database Buffers 838860800 bytes
Redo Buffers 7135232 bytes
SQL> show parameter control_files
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_files string
D:\ORACLE_DATABASE\DEMO\CONTRO
L01.CTL, D:\ORACLETEST\CONTROL
02.CTL
SQL>
(3)建立控制文件
SQL> CREATE CONTROLFILE DATABASE demo NORESETLOGS
LOGFILE
GROUP 1 'D:\Oracle_Database\DEMO\redo01.log' size 10M,
GROUP 2 'D:\Oracle_Database\DEMO\redo02.log' size 10M
DATAFILE
'D:\Oracle_Database\DEMO\system01.dbf',
'D:\Oracle_Database\DEMO\sysaux01.dbf',
'D:\Oracle_Database\DEMO\undotbs1.dbf',
'D:\Oracle_Database\DEMO\temp.dbf'
CHARACTER SET ZHS16GBK;
----------ORA-01967 invalid option for CREATE CONTROLFILE
SQL> CREATE CONTROLFILE DATABASE demo NORESETLOGS
LOGFILE
GROUP 1 'D:\Oracle_Database\DEMO\redo01.log' size 10M,
GROUP 2 'D:\Oracle_Database\DEMO\redo02.log' size 10M
DATAFILE
'D:\Oracle_Database\DEMO\system01.dbf',
'D:\Oracle_Database\DEMO\sysaux01.dbf',
'D:\Oracle_Database\DEMO\undotbs1.dbf'
CHARACTER SET ZHS16GBK;
(4)打开数据库
SQL> alter database open;
数据库已更改。
SQL>
(5)建立临时文件
SQL> alter tablespace temp add tempfile 'd:\Oracle_Database\DEMO\temp.dbf'
2 size 10M REUSE AUTOEXTEND OFF;
表空间已更改。
SQL>
2、修改永久参数
(1)nomount状态下重建控制文件
CREATE CONTROLFILE REUSE DATABASE "demo" NORESETLOGS
MAXLOGFILES 10
MAXLOGMEMBERS 4
LOGFILE
GROUP 1 'D:\Oracle_Database\DEMO\redo01.log' size 10M,
GROUP 2 'D:\Oracle_Database\DEMO\redo02.log' size 10M
DATAFILE
'D:\Oracle_Database\DEMO\system01.dbf',
'D:\Oracle_Database\DEMO\sysaux01.dbf',
'D:\Oracle_Database\DEMO\undotbs1.dbf'
CHARACTER SET ZHS16GBK;
(2)打开数据库
(3)建立临时文件
3、修改数据库名称
----修改初始化参数db_name;重建控制文件;
(1)修改初始化参数db_name;
db_name不能通过alter database修改spfile,只能通过编辑pfile修改;
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size 1251196 bytes
Variable Size 637536388 bytes
Database Buffers 838860800 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string C:\ORACLE\PRODUCT\10.2.0\DB_1\
DATABASE\SPFILEDEMO.ORA
SQL> create pfile from spfile;
文件已创建。
----修改生成的initDEMO.ora,db_name改为example;
生成临时spfile:
SQL> create spfile='spfiletemp.ora' from pfile='initDEMO.ora';
文件已创建。
(2)使用新的spfile重启数据库至nomount状态;
SQL> host copy C:\oracle\product\10.2.0\db_1\database\spfiletemp.ora C:\oracle\product\10.2.0\db_1\database\spfiledemo.ora
已复制 1 个文件。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size 1251196 bytes
Variable Size 637536388 bytes
Database Buffers 838860800 bytes
Redo Buffers 7135232 bytes
SQL> show parameter db_name
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_name string
example
SQL>
(3)建立控制文件;
SQL> CREATE CONTROLFILE REUSE SET DATABASE "example" RESETLOGS
LOGFILE
GROUP 1 'D:\Oracle_Database\DEMO\redo01.log' size 10M,
GROUP 2 'D:\Oracle_Database\DEMO\redo02.log' size 10M
DATAFILE
'D:\Oracle_Database\DEMO\system01.dbf',
'D:\Oracle_Database\DEMO\sysaux01.dbf',
'D:\Oracle_Database\DEMO\undotbs1.dbf'
CHARACTER SET ZHS16GBK;
----REUSE:覆盖现有控制文件
(4)打开数据库
SQL> alter database open resetlogs;
数据库已更改。
(5)增加临时文件
SQL> alter tablespace temp add tempfile 'd:\Oracle_Database\DEMO\temp.dbf'
2 size 10M reuse autoextend off;
表空间已更改。
4、删除控制文件
(1)修改初始化参数control_files
SQL> show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string D:\ORACLE_DATABASE\DEMO\CONTRO
L01.CTL, D:\ORACLETEST\CONTROL
02.CTL
SQL> alter system set control_files='d:\Oracle_database\demo\control01.ctl' scop
e=spfile;
系统已更改。
(2)重启数据库
SQL> show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string D:\ORACLE_DATABASE\DEMO\CONTRO
L01.CTL
(3)多元化控制文件
5、使用OEM管理控制文件
阅读(838) | 评论(0) | 转发(0) |