[Oracle学习笔记] 控制文件管理:创建控制文件

 控制文件是一个二进制文件,在数据库创建时自动创建,用于记录数据库名称、创建时间、表空间名、数据文件和日志文件位置等等。控制文件对于数据库非常重要,一旦受损,那么数据库将无法正常工作。

一、创建控制文件

因为某些原因可能需要重建控制文件,例如,控制文件中的参数设置不合理等等,创建控制文件的语法:

CREATE CONTROLFILE

REUSE DATABASE "database_name"

[NORESETLOGS | RESETLOGS]  //不清空日志,清空日志

[NOARCHIVELOG] //非归档

MAXLOGFILES integer //最大日志文件个数

MAXLOGMEMBERS integer //日志组中最大成员人数

MAXDATAFILES integer //最大数据文件个数

MAXINSTANCES integer //最大实例个数

MAXLOGHISTORY integer //最大历史日志文件个数

LOGFILE

GROUP group_number log_file_name [SIZE size] [, GROUP group_number log_file_name [SIZE size] [,...]]

DATAFILE datafile_name [, ... ];

 

创建控制文件,需要事先查询数据日志文件和数据文件信息

1. 查询日志文件 V$LOGFILE, V$LOG

示例:

SQL> select group#, member from v$logfile;

    GROUP# MEMBER
---------- ----------------------------------
         1 D:\ORACLE\TEST\REDO01.LOG
         3 D:\ORACLE\TEST\REDO03.LOG
         2 D:\ORACLE\TEST\REDO02.LOG

 

查询日志文件大小:日志组#1, #2, #3大小为50M,组内每个日志文件大小与组大小相等。

SQL> select group#, bytes/1024/1024 from v$log;

    GROUP# BYTES/1024/1024
---------- ---------------
         1              50
         3              50
         2              50

2. 查询数据文件 V$DATAFILE

SQL> select name from v$datafile;

NAME
--------------------------------------

D:\ORACLE\TEST\SYSTEM01.DBF
D:\ORACLE\TEST\UNDOTBS01.DBF
D:\ORACLE\TEST\SYSAUX01.DBF
D:\ORACLE\TEST\USERS01.DBF
F:\UNTOTBS01.DBF

查询当前使用的控制文件,参数control_files记录当前控制文件位置(多路复用,三个文件为同一个文件,放在不同的地方)

SQL> show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      D:\ORACLE\TEST\CONTROL01.CTL,
                                                       D:\ORACLE\TEST\CONTROL02.CTL,
                                                       D:\ORACLE\TEST\CONTROL03.CTL

 

3. 关闭数据库

4. 备份数据文件和日志文件,以免创建控制文件出错导致数据文件和日志文件受损,直接复制数据文件和日志文件到其他位置

5. 启动数据库实例 STARTUP NOMOUNT

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount;
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             239078276 bytes
Database Buffers          364904448 bytes
Redo Buffers                7135232 bytes

 6. 创建新的控制文件

SQL> CREATE CONTROLFILE
  2  REUSE DATABASE "test"
  3  NORESETLOGS
  4  NOARCHIVELOG
  5  MAXLOGFILES 50
  6  MAXLOGMEMBERS 3
  7  MAXDATAFILES 50
  8  MAXINSTANCES 5
  9  MAXLOGHISTORY 500
 10  LOGFILE
 11  GROUP 1 'D:\ORACLE\TEST\REDO01.LOG' size 50M,
 12  GROUP 2 'D:\ORACLE\TEST\REDO02.LOG' size 50M,
 13  GROUP 3 'D:\ORACLE\TEST\REDO03.LOG' size 50M
 14  DATAFILE
 15  'D:\ORACLE\TEST\SYSTEM01.DBF',
 16  'D:\ORACLE\TEST\UNDOTBS01.DBF',
 17  'D:\ORACLE\TEST\SYSAUX01.DBF',
 18  'D:\ORACLE\TEST\USERS01.DBF',
 19  'F:\UNTOTBS01.DBF'
 20  ;

控制文件已创建。

查询控制文件:

SQL> select name from v$controlfile;

NAME
-----------------------------------------

D:\ORACLE\TEST\CONTROL01.CTL
D:\ORACLE\TEST\CONTROL02.CTL
D:\ORACLE\TEST\CONTROL03.CTL

这里控制文件与之前旧的控制文件位置相同,新建的控制文件覆盖了已有的控制文件。如果需要在其他地方创建新的控制文件,在这一步之前修改参数CONTROL_FILES的值,如从D盘改到E盘

SQL> alter system set control_files=
  2  'E:\ORACLE\TEST\CONTROL01.CTL',
  3  'E:\ORACLE\TEST\CONTROL02.CTL',
  4  'E:\ORACLE\TEST\CONTROL03.CTL'
  5  scope=spfile;

系统已更改。

重启数据库:shutdown immediate; startup nomount;

然后执行上述脚本,创建新的控制文件

再此查询控制文件参数,控制文件路径发生了变化,同时在新的路径下生成了3个控制文件。

SQL> select name from v$controlfile;

NAME
----------------------------------------------------

E:\ORACLE\TEST\CONTROL01.CTL
E:\ORACLE\TEST\CONTROL02.CTL
E:\ORACLE\TEST\CONTROL03.CTL

7. 打开数据库

SQL> alter database open;

数据库已更改。

如果创建控制文件使用RESETLOGS选项,则打开数据库用:alter database open resetlogs

 

转载于:https://www.cnblogs.com/happyking/archive/2013/01/03/2843108.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值