oracle 控制文件代码,移动控制文件

控制文件一个数据库一个就行,但一般不止一个,因为若那一个不慎坏了丢了那数据库里的数据也就差不多没了,所以一般数据库要有多个控制文件,他们都是一样的,分别放在不同的地方

查看控制文件相关信息:

SQL> conn sys/orcl as sysdba

已连接。

SQL> select type,record_size,records_total,records_used from

2  v$controlfile_record_section

3  where type in('datafile','tablespace','redo log');

未选定行

record_size:每记录字节数,records_total:记录总数,records_used:使用的记录个数

这里未选定行是因为后面where子句限制了,可能那些没有任何东东,下面演示一个不限制的。

有错误,待会。暂定问题4.

用数据字典V$parameter或v$controlfile获取控制文件的名字:

SQL> select value from v$parameter

2  where name='control_files';

VALUE

--------------------------------------------------------------------------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL, C:\ORACLE\PRODUCT\10.2.0\OR

ADATA\ORCL\CONTROL02.CTL, C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL

SQL> col name for a55

SQL> select * from v$controlfile;

STATUS  NAME                                                    IS_ BLOCK_SIZE

------- ------------------------------------------------------- --- ----------

FILE_SIZE_BLKS

--------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL     NO       16384

430

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL     NO       16384

430

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL     NO       16384

430

第一个仅仅是给出了控制文件的名字和位置,第二个明显要详细得多,大小一样,存储方式都不是BLOCK。

而且两种方法都可以看的出控制文件都存在同一个目录下,这是不必要也是非常危险的。

不过这个430是神马东东?求指导!

下面开始复制控制文件:

准备工作在cmd中:

切换到控制文件所在的目录:

C:\>cd c:\oracle\product\10.2.0\oradata\orcl

C:\oracle\product\10.2.0\oradata\orcl>dir *.ctl

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\oracle\product\10.2.0\oradata\orcl 的目录

2012-04-25  14:07         7,061,504 CONTROL01.CTL

2012-04-25  14:07         7,061,504 CONTROL02.CTL

2012-04-25  14:07         7,061,504 CONTROL03.CTL

3 个文件     21,184,512 字节

0 个目录  6,681,051,136 可用字节

C:\oracle\product\10.2.0\oradata\orcl>cd c:\

新建三个目录:

C:\>mkdir disk3\orcl

C:\>mkdir disk6\orcl

C:\>mkdir disk9\orcl

查看:

C:\>dir

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\ 的目录

2012-04-20  20:10                 0 AUTOEXEC.BAT

2012-04-20  20:10                 0 CONFIG.SYS

2012-04-25  14:53   

2012-04-25  14:53   

2012-04-25  14:53   

2012-04-20  20:15   

2012-04-20  21:43   

2012-04-23  22:45   

2012-04-25  14:05   

2012-04-25  14:51   

2012-04-20  20:20   

2 个文件              0 字节

9 个目录  6,681,042,944 可用字节

切换sqlplus窗口:

首先查看自己的数据库系统使用的是正文初始化参数文件(pfile)还是服务器初始化参数文件(spfile):

SQL> show parameter pfile

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

spfile                               string      C:\ORACLE\PRODUCT\10.2.0\DB_1\

DBS\SPFILEORCL.ORA

是后者。

SQL> select * from v$controlfile;

STATUS  NAME                                                    IS_ BLOCK_SIZE

------- ------------------------------------------------------- --- ----------

FILE_SIZE_BLKS

--------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL     NO       16384

430

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL     NO       16384

430

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL     NO       16384

430

SQL> alter system set control_files=

2  'c:\disk3\orcl\control01.ctl',

3  'c:\disk6\orcl\control02.ctl',

4  'c:\disk9\orcl\control03.ctl'

5  scope=spfile;

系统已更改。

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> host copy c:\oracle\product\10.2.0\oradata\orcl\control01.ctl c:\disk3\control01.ctl;(复制成功时会闪过一个命令提示符窗口)

SQL> host copy c:\oracle\product\10.2.0\oradata\orcl\control02.ctl c:\disk6\control02.ctl

SQL> host copy c:\oracle\product\10.2.0\oradata\orcl\control03.ctl c:\disk9\control03.ctl;

切换cmd查看:

C:\>dir disk3 disk6 disk9

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\disk3 的目录

2012-04-25  15:01   

2012-04-25  15:01   

2012-04-25  14:56         7,061,504 control01.ctl

2012-04-25  14:53   

1 个文件      7,061,504 字节

C:\disk6 的目录

2012-04-25  15:02   

2012-04-25  15:02   

2012-04-25  14:56         7,061,504 control02.ctl

2012-04-25  14:53   

1 个文件      7,061,504 字节

C:\disk9 的目录

2012-04-25  15:02   

2012-04-25  15:02   

2012-04-25  14:56         7,061,504 control03.ctl

2012-04-25  14:53   

1 个文件      7,061,504 字节

3 个目录  6,637,502,464 可用字节

切回:

SQL> startup

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1247900 bytes

Variable Size              88081764 bytes

Database Buffers           75497472 bytes

Redo Buffers                2945024 bytes

ORA-00205: ?????????, ??????, ???????

38b60838d1db12c3364acf2e3d940b63.png

这里出现了一个问题3,我就怕这个问题,上回就是这个练习折腾了好久说。。。这次不知会怎样了又。。

好了,是因为将新的控制文件名添加到参数文件的control_file参数中时出错了,导致数据库启动时找不到控制文件而失败。现改正如下:

启用DOS窗口(我前面都是说cmd窗口,我说的是一个意思,只是忘了专有名词了。。。)先登录sqlplus /nolog

SQL> host copy c:\disk3\control01.ctl c:\disk3\orcl\control01.ctl

已复制         1 个文件。

SQL> host copy c:\disk6\control02.ctl c:\disk6\orcl\control02.ctl

已复制         1 个文件。

SQL> host copy c:\disk9\control03.ctl c:\disk9\orcl\control03.ctl

已复制         1 个文件。

再调用一个DOS窗口或先退出sql,查看一下:

C:\>dir disk3\orcl disk6\orcl disk9\orcl

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\disk3\orcl 的目录

2012-04-25  19:50   

2012-04-25  19:50   

2012-04-25  14:56         7,061,504 control01.ctl

1 个文件      7,061,504 字节

C:\disk6\orcl 的目录

2012-04-25  19:51   

2012-04-25  19:51   

2012-04-25  14:56         7,061,504 control02.ctl

1 个文件      7,061,504 字节

C:\disk9\orcl 的目录

2012-04-25  19:51   

2012-04-25  19:51   

2012-04-25  14:56         7,061,504 control03.ctl

1 个文件      7,061,504 字节

2 个目录  6,603,849,728 可用字节

好了,正常。直接在硬盘上也可以找到的。

SQL> conn sys/ as sysdba

输入口令:

已连接到空闲例程。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1247900 bytes

Variable Size              88081764 bytes

Database Buffers           75497472 bytes

Redo Buffers                2945024 bytes

数据库装载完毕。

数据库已经打开。

检查一下:

SQL> col name for a55

SQL> select * from v$controlfile;

STATUS  NAME                                                    IS_ BLOCK_SIZE

------- ------------------------------------------------------- --- ----------

FILE_SIZE_BLKS

--------------

C:\DISK3\ORCL\CONTROL01.CTL                             NO       16384

430

C:\DISK6\ORCL\CONTROL02.CTL                             NO       16384

430

C:\DISK9\ORCL\CONTROL03.CTL                             NO       16384

430

一切正常。

最后一步,把原来的、搞错的控制文件删除。可以手动,可以代码。

代码:

切换目录:C:\Documents and Settings\Administrator>cd c:\oracle\product\10.2.0\oradata\or

查看:C:\oracle\product\10.2.0\oradata\orcl>dir

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\oracle\product\10.2.0\oradata\orcl 的目录

2012-04-20  21:50   

2012-04-20  21:50   

2012-04-25  14:56         7,061,504 CONTROL01.CTL

2012-04-25  14:56         7,061,504 CONTROL02.CTL

2012-04-25  14:56         7,061,504 CONTROL03.CTL

2012-04-25  20:09       104,865,792 EXAMPLE01.DBF

2012-04-25  20:09        52,429,312 REDO01.LOG

2012-04-25  20:09        52,429,312 REDO02.LOG

2012-04-25  20:09        52,429,312 REDO03.LOG

2012-04-25  20:09       251,666,432 SYSAUX01.DBF

2012-04-25  20:09       503,324,672 SYSTEM01.DBF

2012-04-23  22:20        22,028,288 TEMP01.DBF

2012-04-25  20:09        41,951,232 UNDOTBS01.DBF

2012-04-25  20:09         5,251,072 USERS01.DBF

12 个文件  1,107,559,936 字节

2 个目录  6,601,113,600 可用字节

3个控制文件。删除:

C:\oracle\product\10.2.0\oradata\orcl>del contro*

查看:

C:\oracle\product\10.2.0\oradata\orcl>dir

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\oracle\product\10.2.0\oradata\orcl 的目录

2012-04-25  20:19   

2012-04-25  20:19   

2012-04-25  20:09       104,865,792 EXAMPLE01.DBF

2012-04-25  20:09        52,429,312 REDO01.LOG

2012-04-25  20:09        52,429,312 REDO02.LOG

2012-04-25  20:09        52,429,312 REDO03.LOG

2012-04-25  20:09       251,666,432 SYSAUX01.DBF

2012-04-25  20:09       503,324,672 SYSTEM01.DBF

2012-04-23  22:20        22,028,288 TEMP01.DBF

2012-04-25  20:09        41,951,232 UNDOTBS01.DBF

2012-04-25  20:09         5,251,072 USERS01.DBF

9 个文件  1,086,375,424 字节

2 个目录  6,622,322,688 可用字节

没了

切换目录,这回是搞错的。。。:

C:\oracle\product\10.2.0\oradata\orcl>cd c:\disk3

C:\disk3>del contro*

C:\disk3>dir

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\disk3 的目录

2012-04-25  20:20   

2012-04-25  20:20   

2012-04-25  19:50   

0 个文件              0 字节

3 个目录  6,629,384,192 可用字节

C:\disk3>cd orcl

C:\disk3\orcl>dir

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\disk3\orcl 的目录

2012-04-25  19:50   

2012-04-25  19:50   

2012-04-25  20:09         7,061,504 control01.ctl

1 个文件      7,061,504 字节

2 个目录  6,629,384,192 可用字节

C:\disk3\orcl>cd disk6

系统找不到指定的路径。

C:\disk3\orcl>del control*

手贱删错了。。。暂定问题5。。。

C:\disk3\orcl>dir

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\disk3\orcl 的目录

2012-04-25  20:20   

2012-04-25  20:20   

0 个文件              0 字节

2 个目录  6,636,445,696 可用字节

C:\disk3\orcl>cd disk9

系统找不到指定的路径。

C:\disk3\orcl>cd disk9

系统找不到指定的路径。

C:\disk3\orcl>cd c:\disk9

C:\disk9>del contro*

C:\disk9>cd c:\disk6

C:\disk6>del contro*

C:\disk6>dir

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\disk6 的目录

2012-04-25  20:29   

2012-04-25  20:29   

2012-04-25  19:51   

0 个文件              0 字节

3 个目录  6,649,733,120 可用字节

C:\disk6>cd orcl

C:\disk6\orcl>dir

驱动器 C 中的卷没有标签。

卷的序列号是 F858-0D2D

C:\disk6\orcl 的目录

2012-04-25  19:51   

2012-04-25  19:51   

2012-04-25  20:09         7,061,504 control02.ctl

1 个文件      7,061,504 字节

2 个目录  6,649,667,584 可用字节

气死我啦!!!

所以啊,手动吧亲!!!

还有啊,备份啊备份啊亲,很重要!!我居然漏了这一步。。。。我恨啊!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值