实验:创建一个控制文件,删除控制文件并测试数据库运行情况
一:创建一个控制文件
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.