我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SNAPSHOT CONTROLFILE有什么用途

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SNAPSHOT CONTROLFILE有什么用途

本篇内容介绍了“SNAPSHOT CONTROLFILE有什么用途”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

根据我的理解:
snapshot control file只有在同步catalog的时候用到或者在控制文件备份的时候用到
(在备份控制文件之前会备份一个 SNAPSHOT CONTROLFILE )
----------------------------------------------------------
SNAPSHOT CONTROLFILE 的用途,顾名思义,应该是用来恢复控制文件的,下面是我的测试结果:
结论是:
1.SNAPSHOT CONTROLFILE 不能直接copy成control file,如果数据库已经shutdown
2.可以通过rman,将SNAPSHOT CONTROLFILE 恢复成控制文件
3.如果数据库没有shutdown,可以直接copy SNAPSHOT CONTROLFILE 成控制文件,但仍需要恢复(因为他是旧的)

下面是我的测试步骤:
---------------------------------------
查看snapshot controlfile的备份设置:
RMAN> SHOW SNAPSHOT CONTROLFILE NAME;

RMAN configuration parameters are:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/ora9a/product/9.2/dbs/snapcf_tt9a.f'; # default

RMAN>

下面模拟控制文件丢失的恢复
$ ls
control01.ctl  cwmlite01.dbf  indx01.dbf     redo02.log     temp01.dbf     users01.dbf
control02.ctl  drsys01.dbf    odm01.dbf      redo03.log     tools01.dbf    xdb01.dbf
control03.ctl  example01.dbf  redo01.log     system01.dbf   undotbs01.dbf
$ rm cont*  --删除控制文件
$ ls
cwmlite01.dbf  example01.dbf  odm01.dbf      redo02.log     system01.dbf   tools01.dbf    users01.dbf
drsys01.dbf    indx01.dbf     redo01.log     redo03.log     temp01.dbf     undotbs01.dbf  xdb01.dbf
$
在控制文件被删除后,数据库还能正常操作:
SQL> insert into test(no) values(4);

1 row created.

SQL> commit;

Commit complete.

SQL> alter system switch logfile;

System altered.

SQL> alter system checkpoint;

System altered.

SQL> /

System altered.

SQL>
SQL> select no,to_char(vdate,'yyyy-mm-dd hh34:mi:ss') from  test;

NO TO_CHAR(VDATE,'YYYY-MM-DDHH24:MI:SS')
---------- ---------------------------------------------------------
        1 2009-02-24 10:16:09
        2 2009-02-24 10:25:30
        3 2009-02-24 10:26:56
        4 2009-02-24 10:30:59

SQL>
重新启动数据库:
SQL> connect /as sysdba
Connected.
SQL> shutdown immediate
ORA-00210: cannot open the specified controlfile
ORA-00202: controlfile: '/u01/ora9a/oradata/tt9a/control01.ctl'
ORA-27041: unable to open file
IBM AIX RISC System/6000 Error: 2: No such file or directory
Additional information: 3
没有了控制文件了,shutdown immediate出错
SQL>
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  320569400 bytes
Fixed Size                   741432 bytes
Variable Size             285212672 bytes
Database Buffers           33554432 bytes
Redo Buffers                1060864 bytes
ORA-00205: error in identifying controlfile, check alert log for more info

SQL>
没有控制文件,数据库不能mount,现在把SNAPSHOT CONTROLFILE copy到对应目录
$ cp /u01/ora9a/product/9.2/dbs/snapcf_tt9a.f /u01/ora9a/oradata/tt9a/control01.ctl
$ cp /u01/ora9a/oradata/tt9a/control01.ctl /u01/ora9a/oradata/tt9a/control0t.ctl
$ cp /u01/ora9a/oradata/tt9a/control01.ctl /u01/ora9a/oradata/tt9a/control03.ctl
$ ls -lrt /u01/ora9a/oradata/tt9a/contr*      
-rw-r-----   1 ora9a    dba         1531904 Feb 24 10:36 /u01/ora9a/oradata/tt9a/control01.ctl
-rw-r-----   1 ora9a    dba         1531904 Feb 24 10:36 /u01/ora9a/oradata/tt9a/control0t.ctl
-rw-r-----   1 ora9a    dba         1531904 Feb 24 10:36 /u01/ora9a/oradata/tt9a/control03.ctl
$
SQL> startup
ORACLE instance started.

Total System Global Area  320569400 bytes
Fixed Size                   741432 bytes
Variable Size             285212672 bytes
Database Buffers           33554432 bytes
Redo Buffers                1060864 bytes
ORA-00205: error in identifying controlfile, check alert log for more info
照样不能mount数据库
----------------------------------------
尝试用rman恢复控制文件:
$ rman target /

Recovery Manager: Release 9.2.0.1.0 - 64bit Production

Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.

connected to target database (not started)

RMAN> startup nomount;

Oracle instance started

Total System Global Area     320569400 bytes

Fixed Size                      741432 bytes
Variable Size                285212672 bytes
Database Buffers              33554432 bytes
Redo Buffers                   1060864 bytes

RMAN>  restore controlfile from '/u01/ora9a/product/9.2/dbs/snapcf_tt9a.f';

Starting restore at 24-FEB-09

using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=13 devtype=DISK
channel ORA_DISK_1: copied controlfile copy
replicating controlfile
input filename=/u01/ora9a/oradata/tt9a/control01.ctl
output filename=/u01/ora9a/oradata/tt9a/control02.ctl
output filename=/u01/ora9a/oradata/tt9a/control03.ctl
Finished restore at 24-FEB-09

RMAN> alter database mount;

database mounted

RMAN>
ok,用rman可以进行恢复,让数据mount起来
恢复数据库
RMAN> recover database;

Starting recover at 24-FEB-09
using channel ORA_DISK_1

starting media recovery

archive log thread 1 sequence 1 is already on disk as file /u01/ora9a/oradata/tt9a/redo01.log
archive log thread 1 sequence 2 is already on disk as file /u01/ora9a/oradata/tt9a/redo02.log
archive log thread 1 sequence 3 is already on disk as file /u01/ora9a/oradata/tt9a/redo03.log
archive log filename=/u01/ora9a/oradata/tt9a/redo01.log thread=1 sequence=0
archive log filename=/u01/ora9a/oradata/tt9a/redo02.log thread=1 sequence=2
archive log filename=/u01/ora9a/oradata/tt9a/redo03.log thread=1 sequence=3
media recovery complete
Finished recover at 24-FEB-09

RMAN> alter database open;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 02/24/2009 10:47:36
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

RMAN> alter database open resetlogs;

database opened

RMAN>
查看先前insert的数据:
SQL> select no,to_char(vdate,'yyyy-mm-dd hh34:mi:ss') from  test;

NO TO_CHAR(VDATE,'YYYY-MM-DDHH24:MI:SS')
---------- ---------------------------------------------------------
        1 2009-02-24 10:16:09
        2 2009-02-24 10:25:30
        3 2009-02-24 10:26:56
        4 2009-02-24 10:30:59

SQL>
数据仍在,恢复成功!

=============================
下面仍是在数据库正常运行情况下,将控制文件删除,仍测试直接copy SNAPSHOT CONTROLFILE 的恢复方式:
SQL> insert into test(no) values(5);

1 row created.

SQL> commit;

Commit complete.

SQL>
SQL> !
$ pwd
/u01/ora9a/oradata/tt9a
$ ls
control01.ctl  control0t.ctl  example01.dbf  redo01.log     system01.dbf   undotbs01.dbf
control02.ctl  cwmlite01.dbf  indx01.dbf     redo02.log     temp01.dbf     users01.dbf
control03.ctl  drsys01.dbf    odm01.dbf      redo03.log     tools01.dbf    xdb01.dbf
$ rm contr*
$ ls
cwmlite01.dbf  example01.dbf  odm01.dbf      redo02.log     system01.dbf   tools01.dbf    users01.dbf
drsys01.dbf    indx01.dbf     redo01.log     redo03.log     temp01.dbf     undotbs01.dbf  xdb01.dbf
$
$ exit

SQL> select * from v$controlfile;

STATUS
---------------------
NAME
--------------------------------------------------------------------------------

/u01/ora9a/oradata/tt9a/control01.ctl


/u01/ora9a/oradata/tt9a/control02.ctl


/u01/ora9a/oradata/tt9a/control03.ctl


SQL> select dbid from v$database;
select dbid from v$database
                *
ERROR at line 1:
ORA-00210: cannot open the specified controlfile
ORA-00202: controlfile: '/u01/ora9a/oradata/tt9a/control01.ctl'
ORA-27041: unable to open file
IBM AIX RISC System/6000 Error: 2: No such file or directory
Additional information: 3

SQL>
没有控制文件,查询失败
现在将SNAPSHOT CONTROLFILE copy到对应目录,尝试直接恢复成控制文件:
SQL> !
$ pwd
/u01/ora9a/oradata/tt9a
$ cp  /u01/ora9a/product/9.2/dbs/snapcf_tt9a.f  control01.ctl
$ cp control01.ctl control02.ctl
$ cp control01.ctl control03.ctl
$ ls -lrt cont*
-rw-r-----   1 ora9a    dba         1531904 Feb 24 10:55 control01.ctl
-rw-r-----   1 ora9a    dba         1531904 Feb 24 10:55 control02.ctl
-rw-r-----   1 ora9a    dba         1531904 Feb 24 10:55 control03.ctl
$
注意,此时不要起停数据库,否则这样恢复的控制文件仍不可用
尝试查询control file信息
SQL> select dbid from v$database;

DBID
----------
3459515476

SQL>
ok,成功
查询数据文件头信息
SQL> select CHECKPOINT_CHANGE#   from v$datafile_header;
select CHECKPOINT_CHANGE#   from v$datafile_header
                                *
ERROR at line 1:
ORA-00600: internal error code, arguments: [2170], [], [], [], [], [], [], []

SQL>
失败
现在重新启动数据库,看看是否可以到mount状态:
SQL> shutdown immediate
ORA-00600: internal error code, arguments: [kccchb_1], [356], [353], [0], [353], [0], [], []
SQL> shutdown abort;
ORACLE instance shut down.
SQL>
SQL> startup
ORACLE instance started.

Total System Global Area  320569400 bytes
Fixed Size                   741432 bytes
Variable Size             285212672 bytes
Database Buffers           33554432 bytes
Redo Buffers                1060864 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


SQL>
ok,此时数据库可以mount起来了

SQL>
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/ora9a/oradata/tt9a/system01.dbf'
提示需要恢复
SQL> recover database using backup controlfile;
ORA-00279: change 349227 generated at 02/24/2009 10:49:58 needed for thread 1
ORA-00289: suggestion : /u01/arch/1_1.dbf
ORA-00280: change 349227 for thread 1 is in sequence #1


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00328: archived log ends at change 347581, need later change 349227
ORA-00334: archived log: '/u01/arch/1_1.dbf'


SQL> recover database using backup controlfile;
ORA-00279: change 349227 generated at 02/24/2009 10:49:58 needed for thread 1
ORA-00289: suggestion : /u01/arch/1_1.dbf
ORA-00280: change 349227 for thread 1 is in sequence #1


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/ora9a/oradata/tt9a/redo01.log
Log applied.
Media recovery complete.

SQL> alter database open resetlogs;

Database altered.

SQL>
恢复成功
SQL> select no,to_char(vdate,'yyyy-mm-dd hh34:mi:ss') from  test order by vdate;

NO TO_CHAR(VDATE,'YYYY-MM-DDHH24:MI:SS')
---------- ---------------------------------------------------------
        1 2009-02-24 10:16:09
        2 2009-02-24 10:25:30
        3 2009-02-24 10:26:56
        4 2009-02-24 10:30:59
        5 2009-02-24 10:51:01

SQL>
ok,新插入的数据也在。

“SNAPSHOT CONTROLFILE有什么用途”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SNAPSHOT CONTROLFILE有什么用途

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

wamp5是什么 wamp有什么用途

Wamp5是一个开源的软件集合,用于在Windows操作系统上搭建本地的Web服务器环境。它包括Windows操作系统(W)、Apache Web服务器(A)、MySQL数据库管理系统(M)和PHP脚本语言(P),因此被称为WAMP。Wam
2023-08-11

C#是什么?它有什么用途?

C#是一种强大而多用途的编程语言,它的应用范围广泛,能够满足各种不同的开发需求。无论您是一名初学者还是经验丰富的开发者,C#都能为您提供创造性和灵活性的开发环境。让我们来了解一下C#的基本概念:C#是一种面向对象的编程语言,由微软公司开发并
2023-10-22

代理ip有什么用途

这篇文章主要讲解了“代理ip有什么用途”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“代理ip有什么用途”吧!1、加快访问速度。通常代理服务器具有缓冲功能,存储空间大。当网络拥挤或系统故障时,
2023-06-20

服务器有什么用途

服务器有多种用途,包括但不限于:存储数据:服务器可以用来存储大量的数据,包括文件、数据库、多媒体内容等。提供网站和应用程序的托管服务:服务器可以用来托管网站、应用程序和服务,使其能够在互联网上运行和访问。提供云计算服务:服务器可以用来提供云
服务器有什么用途
2024-04-23

学习python有什么用途

这篇文章主要讲解了“学习python有什么用途”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“学习python有什么用途”吧!  1、web开发:Python是一种解释型脚本语言,开发效率高,
2023-06-01

云主机有什么用途

云主机有以下几个常见的用途:1. 网站托管:可以将网站的文件和数据库放置在云主机上,通过互联网访问网站。2. 应用程序部署:可以将应用程序部署在云主机上,用户可以通过互联网访问和使用应用程序。3. 数据存储和备份:可以将数据存储在云主机上,
2023-09-20

CSS animation属性有什么用途

CSS animation属性用于创建和控制动画效果。它可以使元素在页面上移动、旋转、淡入淡出等,从而增加页面的交互性和吸引力。具体来说,CSS animation属性有以下用途:1. 创建动画效果:可以通过设置关键帧(keyframes)
2023-10-10

租用服务器有什么用途

本篇内容主要讲解“租用服务器有什么用途”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“租用服务器有什么用途”吧! 租用服务器有什么用,主要用途体现在哪里?现在服务器的使用者众多,市场对服务器的需求
2023-06-07

dubbo的spi机制有什么用途

Dubbo的SPI(Service Provider Interface)机制可以实现插件化的扩展和灵活的配置,让用户可以在不修改源码的情况下改变框架的行为。具体用途包括:实现扩展点:在Dubbo中,通过SPI机制,用户可以自定义实现某个接
dubbo的spi机制有什么用途
2024-04-03

Java中的反射有什么用途

这篇文章主要讲解了“Java中的反射有什么用途”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的反射有什么用途”吧!回顾:什么是反射?反射(Reflection)是Java 程序开发
2023-06-02

win7更改配色有什么用途

这篇文章主要介绍“win7更改配色有什么用途”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win7更改配色有什么用途”文章能帮助大家解决问题。win7更改配色是干嘛的答:win7更改配色可以让用户自
2023-07-01

美国服务器有什么用途

美国服务器的用途有很多,以下是一些常见的用途:网站托管:许多网站和应用程序选择使用美国服务器来托管其网站内容,以获得更好的性能和可靠性。数据存储:许多企业和个人选择使用美国服务器来存储其重要数据,以便随时访问和备份。文件共享和传输:美国
美国服务器有什么用途
2024-04-26

云服务器都有什么用途

云服务器是一种虚拟服务器软件,通常被用于存储和管理大量的数据,以便将它们分发到远程位置。这意味着您不需要拥有一台物理服务器,只需租用一台云服务器,即可实现对资源的远程访问和管理。在使用云服务器时,您可以将数据存储在云服务器上的多个节点上,从而使您可以使用多个设备和计算资源来存储和处理数据。例如,您可以使用云服务器来存储文本、图像和音频文件,以便在本地设备上播放和共享。另一方面,云服务器通常支持
2023-10-26

独立服务器有什么用途

独立服务器是一台完全独立的服务器,不与其他服务器共享资源。它可以用于各种不同的用途,包括但不限于:托管网站:独立服务器可以用来托管大型网站和应用程序,提供更高的性能和稳定性。数据存储:独立服务器可以用来存储大量数据,如数据库、文件存储等。
独立服务器有什么用途
2024-04-30

租用云服务器有什么用途

租用云服务器有很多用途,其中包括但不限于:网站托管:可以将网站的文件、数据库等数据存储在云服务器上,确保网站的稳定运行和快速访问。应用程序部署:开发者可以将自己开发的应用程序部署在云服务器上,方便用户远程访问和使用。数据备份和存储:可以将重
租用云服务器有什么用途
2024-05-06

编程热搜

目录