Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2981502
  • 博文数量: 412
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 7374
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-25 15:15
个人简介

学习是一种信仰。

文章分类

全部博文(412)

文章存档

2014年(108)

2013年(250)

2010年(11)

2009年(43)

我的朋友

分类: Oracle

2013-11-30 19:54:10

第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管理控制文件
阅读(863) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~