实验:创建一个控制文件,删除控制文件并测试数据库运行情况
一:创建一个控制文件
1.查看当前控制文件:
SQL> startup mount
SQL> select name from v$controlfile;   ---查看控制文件

2.修改参数文件增加一条控制文件:
SQL> show parameter spfile;
SQL> create pfile from spfile;    ---生成pfile
SQL> shutdown immediate
$ cd $ORACLE_HOME/dbs
$ vi initzwb.ora   ---增加一条控制文件

3.创建一个新控制文件:
$ cp /oracle/oradata/zwb/control01.ctl /oracle/oradata/zwb/control04.ctl
注意:复制控制文件要在nomount或关闭状态

4.创建spfile并重新启动数据库:
SQL> create spfile from pfile;
SQL> startup nomount
SQL> show parameter con    ---查看参数是否有增加

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_interconnects                string
control_file_record_keep_time        integer     7
control_files                        string      /oracle/oradata/zwb/control01.
                                                 ctl, /oracle/oradata/zwb/contr
                                                 ol02.ctl, /oracle/oradata/zwb/
                                                 control03.ctl, /oracle/oradata
                                                 /zwb/control04.ctl

SQL> alter database mount;
SQL> select name from v$controlfile;   ---查看控制文件已增加

NAME
--------------------------------------------------------------------------------
/oracle/oradata/zwb/control01.ctl
/oracle/oradata/zwb/control02.ctl
/oracle/oradata/zwb/control03.ctl
/oracle/oradata/zwb/control04.ctl

实验结果:创建一个控制文件完成  

 

 

二:删除控制文件并测试数据库运行情况
1.启动数据库至OPEN状态,删除至只剩1个控制文件
SQL> alter database
$ cd /oracle/oradata/zwb/
$ cp control01.ctl control01.ctl.beifen   --先备份
$ rm -rf control02.ctl
$ rm -rf control03.ctl
$ rm -rf control04.ctl    ---删至只剩1个控制文件

2.测试建表失败,测试部分查询正常(在9i可正常建表)
SQL> conn zz/zz
SQL> create table zzz as select * from dual;    ---测试业务用户建表失败
ERROR at line 1:
ORA-00210: cannot open the specified control file


SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/oracle/oradata/zwb/control01.ctl
/oracle/oradata/zwb/control02.ctl
/oracle/oradata/zwb/control03.ctl
/oracle/oradata/zwb/control04.ctl


3.测试创建用户赋权正常:
SQL> create user zzz identified by zzz;    ---创建用户正常

User created.

SQL> grant dba to zzz;     ---赋权正常

Grant succeeded


实验结果:大部分功能已不可用

 

三.实验:创建并使用一个standby控制文件
1.查看当前为非standby控制文件及控制文件位置:
SQL> select CONTROLFILE_TYPE  from v$database;

CONTROL
-------
CURRENT

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/oracle/oradata/zwb/control01.ctl


2.在同目录下建standby控制文件:
SQL> alter database create standby controlfile as '/oracle/oradata/zwb/standby01'
Database altered.


3.修改参数文件使在mount时使用standby控制文件:
SQL> alter system set control_files='/oracle/oradata/zwb/standby01' scope=spfile;

System altered.

SQL> create pfile from spfile;    --注意权限

File created.


4.重启后查看已是standby控制文件:

SQL> startup mount
SQL> select CONTROLFILE_TYPE  from v$database;

CONTROL
-------
STANDBY


注意:如果是standby控制文件启动,10g可以SQL> startup mount ;
9i要mount必须依照如下步骤:
SQL> startup nomount
SQL> alter database mount standby database;

Database altered.