Oracle控制文件详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一、Oracle 控制文件        为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份        记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等        在参数文件中描述其位置,个数等等。

一、Oracle 控制文件

        为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份

        记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等

        在参数文件中描述其位置,个数等等。通常采用分散放开,多路复用的原则。在mount阶段被读取,open阶段一直被使用

        维护数据库一致性(数据库启动时会比较控制文件与联机日志文件中的ckpt,即起始scn号,如相等则正常启动,否则需要介质恢复)

        一个控制文件只能属于一个数据库

        控制文件的任意修改将写入到初始化参数中指定的所有控制文件中,读取时则仅读取第一个控制文件

        控制文件只能连接一个数据库,控制文件的大小一般不要超过MB,最多为个,最少一个,互为镜像

               

        控制文件中包含的内容

            数据库的名字、ID、创建的时间戳

            表空间的名字

            联机日志文件、数据文件的位置、个数、名字

            联机日志的Sequence号码

            检查点的信息

            撤销段的开始或结束

            归档信息

            备份信息

   

二、查看控制文件的相关信息

    1.使用相关视图来查看

        V$CONTROLFILE                   --列出实例中所有控制文件的名字及状态信息

        V$PARAMETER                     --列出所有参数的位置及状态信息

        V$CONTROLFILE_RECORD_SECTION    --列出控制文件中记录的部分信息

        SHOW PARAMETER CONTROL_FILES    --列出控制文件的名字、状态、位置等

2.使用STRINGS命令来查看控制文件中的具体内容

3.备份控制文件到平面文件(然后查看控制文件中的具体内容)

       

        SQL> alter database backup controlfile  to trace as '/u01/app/oracle/ctl.txt';

 

        Database altered.

 4.转储控制文件内容(查看控制文件中的具体内容)

        alter session set events 'immediate trace name CONTROLF level 12'; level表示级别

        或                     --level1  块头的内容 --level2 数据文件内容 --levle 10 |12 所有内容

        oradebug setmypid

        oradebug dump controlf 12

   

        SQL> alter system set events 'immediate trace name controlf level 10';

 

        System altered.

 

        SQL> show parameter user_dump;

 

        NAME                                 TYPE        VALUE

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

        user_dump_dest                       string      /u01/app/oracle/admin/orcl/udu

                                                         mp

三、控制文件的管理 

    规划原则:多路复用,建议存放到不同的磁盘或同一磁盘不同的分区

    个数与位置及状态管理:

        查看控制文件的状态是否与参数定义中的相吻合,当数据库发生结构修改时,将修改内容同时写入控制文件

    备份管理

    恢复管理

    新建控制文件语句

   

    spfile或pfile都可以实现对控制文件的个数及位置管理

    spfile步骤

        修改spfile参数中的control_files   -- alter system ... scope = spfile | both |memory

        一致性关闭数据库

        增加或减少控制文件(cp or mv)

        启动数据库使用spfile

        验证结果

       

    pfile步骤

        一致性关闭数据库

        修改pfile参数(vi或vim)   修改*.control_files=......这一段

        增加或减少控制文件(cp or mv)

        启动数据库使用pfile

        验证结果

       

    --演示spfile修改控制文件

        SQL> show parameter control_file

 

        NAME                                 TYPE        VALUE

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

        control_file_record_keep_time        integer     7

        control_files                        string      /u01/app/oracle/oradata/orcl/c

                                                         ontrol01.ctl, /u01/app/oracle/

                                                         oradata/orcl/control02.ctl, /u

                                                         01/app/oracle/oradata/orcl/con

                                                         trol03.ctl

        --将控制文件减少到一个

        SQL> alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl' scope =spfile;

 

        System altered.

 

        SQL> shutdown immediate;

        Database closed.

        Database dismounted.

        ORACLE instance shut down.

        SQL> startup mount

        ORACLE instance started.

 

        Total System Global Area  251658240 bytes

        Fixed Size                  1218796 bytes

        Variable Size              88082196 bytes

        Database Buffers          159383552 bytes

        Redo Buffers                2973696 bytes

        Database mounted.

       

        --再次查看参数文件,已显示为一个

        SQL> show parameter control_file

 

        NAME                                 TYPE        VALUE

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

        control_file_record_keep_time        integer     7

        control_files                        string      /u01/app/oracle/oradata/orcl/c

                                                         ontrol01.ctl

       

        --增加控制文件(在nomount状态下即可修改)

        SQL> alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl',

          2  '/u01/app/oracle/oradata/orcl/control02.ctl',

          3  '/u01/app/oracle/oradata/orcl/control03.ctl'

          4  scope = spfile;

 

        System altered.

       

        --启动时可以看到在实例阶段出现了版本号不一致的问题

        SQL> startup force

        ORACLE instance started.

 

        Total System Global Area  251658240 bytes

        Fixed Size                  1218796 bytes

        Variable Size              88082196 bytes

        Database Buffers          159383552 bytes

        Redo Buffers                2973696 bytes

        ORA-00214: control file '/u01/app/oracle/oradata/orcl/control01.ctl' version

        1051 inconsistent with file '/u01/app/oracle/oradata/orcl/control02.ctl'

        version 1049

       

        --处理办法,用版本号高的控制文件覆盖版本号低的控制文件

        SQL> host cp /u01/app/oracle/oradata/orcl/control01.ctl/u01/app/oracle/oradata/orcl/control02.ctl;

 

        SQL> host cp /u01/app/oracle/oradata/orcl/control01.ctl/u01/app/oracle/oradata/orcl/control03.ctl;

 

        SQL> alter database mount;

 

        Database altered.

 

        SQL> alter database open;

 

        Database altered.  

       

    对于控制文件丢失的情况下,通过查看参数文件中设置,使用操作系统命令逐个查看这些文件是否存在

   

        SQL> host ls /u01/app/oracle/oradata/orcl/control01.ctl

        /u01/app/oracle/oradata/orcl/control01.ctl

 

        SQL> host ls /u01/app/oracle/oradata/orcl/control02.ctl

        /u01/app/oracle/oradata/orcl/control02.ctl

   

    查看控制文件所在的目录可用空间及控制文件的大小,建议不要超过100MB

        SQL> host ls /u01/app/oracle/oradata/orcl/c*.ctl -lh

        -rw-r----- 1 oracle oinstall 6.8M May 23 10:55 /u01/app/oracle/oradata/orcl/control01.ctl

        -rw-r----- 1 oracle oinstall 6.8M May 23 10:55 /u01/app/oracle/oradata/orcl/control02.ctl

        -rw-r----- 1 oracle oinstall 6.8M May 23 10:55 /u01/app/oracle/oradata/orcl/control03.ctl

 

        SQL> ! df -h

        Filesystem            Size  Used Avail Use% Mounted on

        /dev/sda2             6.4G  3.9G  2.2G  64% /

        /dev/sdd1             6.8G  3.7G  2.8G  58% /u01

        /dev/sdc2             1.2G   34M  1.1G   3% /home

        /dev/sdc1             760M   17M  704M   3% /tmp

        /dev/sda1             456M   18M  415M   5% /boot

        tmpfs                 450M     0  450M   0% /dev/shm

        none                  450M  104K  450M   1% /var/lib/xenstored

       

    控制文件的备份

        热备:

            alter database backup controlfile to '<dir>';  --热备份控制文件

            alter database backup controlfile to trace as '<dir>' ;--得到建立控制文件的脚本

        RMAN:

            backup current controlfile;

            backup database include current controlfile;

            -- 或者设置RMAN 为自动备份

            RMAN > configure controlfile autobackup on;

           

        --演示备份

        --用于归档模式下的恢复,直接覆盖到控制文件

        SQL> alter database backup controlfile to '/u01/app/oracle/control.bak';

 

        Database altered.

       

        --用于重建控制文件

        SQL> alter database backup controlfile to trace as'/u01/app/oracle/recreate_controlfile.txt';

 

        Database altered.

      

        --使用RMAN备份

        RMAN> connect target /;

 

        connected to target database: ORCL (DBID=1242732291)

 

        RMAN> backup current controlfile;   --handle为备份文件的路径

 

        Starting backup at 23-MAY-10

        using target database control file instead of recovery catalog

        allocated channel: ORA_DISK_1

        channel ORA_DISK_1: sid=148 devtype=DISK

        channel ORA_DISK_1: starting full datafile backupset

        channel ORA_DISK_1: specifying datafile(s) in backupset

        including current control file in backupset

        channel ORA_DISK_1: starting piece 1 at 23-MAY-10

        channel ORA_DISK_1: finished piece 1 at 23-MAY-10

        piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/

              2010_05_23/o1_mf_ncnnf_TAG20100523T131841_5zkgon2l_.bkp tag=TAG20100523T131841 comment=NONE

        channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05

        Finished backup at 23-MAY-10

       

        RMAN> backup database include current controlfile;

 

        Starting backup at 23-MAY-10

        using target database control file instead of recovery catalog

        allocated channel: ORA_DISK_1

        channel ORA_DISK_1: sid=141 devtype=DISK

        channel ORA_DISK_1: starting full datafile backupset

        channel ORA_DISK_1: specifying datafile(s) in backupset

        input datafile fno=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf

        input datafile fno=00003 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf

        input datafile fno=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf

        input datafile fno=00006 name=/u01/app/oracle/oradata/orcl/tbs1_1.dbf

        input datafile fno=00007 name=/u01/app/oracle/oradata/orcl/tbs1_2.dbf

        input datafile fno=00002 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf

        input datafile fno=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf

        channel ORA_DISK_1: starting piece 1 at 23-MAY-10

        channel ORA_DISK_1: finished piece 1 at 23-MAY-10

        piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/

              2010_05_23/o1_mf_nnndf_TAG20100523T132647_5zkh4sk2_.bkp tag=TAG20100523T132647 comment=NONE

        channel ORA_DISK_1: backup set complete, elapsed time: 00:05:25

        channel ORA_DISK_1: starting full datafile backupset

        channel ORA_DISK_1: specifying datafile(s) in backupset

        including current control file in backupset

        including current SPFILE in backupset

        channel ORA_DISK_1: starting piece 1 at 23-MAY-10

        channel ORA_DISK_1: finished piece 1 at 23-MAY-10

        piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/

              2010_05_23/o1_mf_ncsnf_TAG20100523T132647_5zkhh5st_.bkp tag=TAG20100523T132647 comment=NONE

        channel ORA_DISK_1: backup set complete, elapsed time: 00:00:14

        Finished backup at 23-MAY-10

       

        RMAN> show all; 

 

        RMAN configuration parameters are:

        CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

        CONFIGURE BACKUP OPTIMIZATION OFF; # default

        CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

        CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

        CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

        CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

        CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

        CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

        CONFIGURE MAXSETSIZE TO UNLIMITED; # default

        CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

        CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

        CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

        CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/10g/dbs/snapcf_orcl.f'; # default

 

        RMAN> configure controlfile autobackup on;   --将控制文件自动备份功能置为on;

 

        new RMAN configuration parameters:

        CONFIGURE CONTROLFILE AUTOBACKUP ON;

        new RMAN configuration parameters are successfully stored

       

    控制文件的恢复管理

        控制文件版本不一致的问题

            用较新版本的控制文件覆盖旧版本的控制文件

            直接修改参数control_file

        丢失问题

            归档模式下

                当归档日志全的时候,先做全备,然后使用备份的控制文件恢复即可

                当归档日志不全的时候,先做全备,然后建立新的控制文件即可

            非归档模式下

                先做全备,然后建立新的控制文件即可

        新建控制文件语句

            数据库处于mount及open状态

            执行alter database backup controlfile to trace as '<dir>';得到建立语句

            注意[no]archievelog [no]resetlogs 两个参数的区别

           

    版本不一致演示 

        SQL> startup

        ORACLE instance started.

 

        Total System Global Area  251658240 bytes

        Fixed Size                  1218796 bytes

        Variable Size              88082196 bytes

        Database Buffers          159383552 bytes

        Redo Buffers                2973696 bytes

        ORA-00214: control file '/u01/app/oracle/oradata/orcl/control01.ctl' version

        1051 inconsistent with file '/u01/app/oracle/oradata/orcl/control02.ctl'

        version 1049

       

        --处理办法,用版本号高的控制文件覆盖版本号低的控制文件

        SQL> host cp /u01/app/oracle/oradata/orcl/control01.ctl/u01/app/oracle/oradata/orcl/control02.ctl;

 

        SQL> host cp /u01/app/oracle/oradata/orcl/control01.ctl/u01/app/oracle/oradata/orcl/control03.ctl;

 

        SQL> alter database mount;

 

        Database altered.

 

        SQL> alter database open;

 

        Database altered.  

       

        --控制文件部分丢失的演示,原本有两个控制文件,丢失一个

        --处理办法:

            1.将存在的控制文件复制到目的路径并更改控制文件名字为正确的控制文件名称

            2.修改控控文件参数将丢失的控制文件去掉(一般不建议使用)

        SQL> alter system set control_files = ' /u01/app/oracle/oradata/orcl/c ontrol01.ctl',

          2  '/u01/app/oracle/oradata/orcl/control02.ctl' scope = spfile;

 

        System altered.

 

        SQL> shutdown immediate;

        Database closed.

        Database dismounted.

        ORACLE instance shut down.

        SQL> startup

        ORACLE instance started.

 

        Total System Global Area  251658240 bytes

        Fixed Size                  1218796 bytes

        Variable Size              75499284 bytes

        Database Buffers          171966464 bytes

        Redo Buffers                2973696 bytes

        ORA-00205: error in identifying control file, check alert log for more info

               

        [oracle@robinson ~]$ tail -n 100 /u01/app/oracle/admin/orcl/bdump/alert_orcl.log

        ..........................     

        Tue Jun  8 19:03:42 2010

        starting up 1 shared server(s) ...

        MMON started with pid=11, OS id=4557

        CJQ0 started with pid=10, OS id=4555

        Tue Jun  8 19:03:44 2010

        ALTER DATABASE   MOUNT

        Tue Jun  8 19:03:44 2010

        ORA-00202: control file: '/u01/app/oracle/10g/dbs/ /u01/app/oracle/oradata/orcl/c ontrol01.ctl'

        ORA-27037: unable to obtain file status

        Linux Error: 2: No such file or directory

        Additional information: 3

        Tue Jun  8 19:03:47 2010

        ORA-205 signalled during: ALTER DATABASE   MOUNT...

 

        --从警告日志中得知,文件名为c ontrol01.ctl的文件不存在,故将其改为正确的文件名

                                                         

        SQL> alter system set control_files='/u01/app/oracle/oradata/orcl/control01.ctl',

          2  '/u01/app/oracle/oradata/orcl/control02.ctl' scope = spfile;

 

        System altered.

 

        SQL> startup force

        ORACLE instance started.

 

        Total System Global Area  251658240 bytes

        Fixed Size                  1218796 bytes

        Variable Size              83887892 bytes

        Database Buffers          163577856 bytes

        Redo Buffers                2973696 bytes

        Database mounted.

        Database opened.

 

    非归档模式下,当所有的控制文件都丢失,只能重建控制文件来解决

 

        Total System Global Area  251658240 bytes

        Fixed Size                  1218796 bytes

        Variable Size              79693588 bytes

        Database Buffers          167772160 bytes

        Redo Buffers                2973696 bytes

        ORA-00205: error in identifying control file, check alert log for more info

       

        [oracle@robinson ~]$tail -n 100 /u01/app/oracle/admin/orcl/bdump/alert_orcl.log

        ALTER DATABASE   MOUNT

        Thu Jul 15 12:13:15 2010

        ORA-00202: control file: '/u01/app/oracle/oradata/orcl/control01.ctl'

        ORA-27037: unable to obtain file status

        Linux Error: 2: No such file or directory

 

        --重建控制文件主要有三个需要考虑的是

        --搞清各个日志文件的大小及位置

        --搞清各个数据文件的位置

        --设置正确的字符集     

 

        SQL> CREATE CONTROLFILE REUSE DATABASE "orcl" NOARCHIVELOG NORESTLOGS

          2  MAXLOGFILES 16

          3  MAXLOGMEMBER 3

          4  MAXDATAFILES 20

          5  MAXINSTANCES 8

          6  MAXLOGHISTORY 3

          7  LOGFILE

          8    GROUP 1(

          9      'u01/app/oracle/oradata/orcl/redo1.log',

         10      '/u01/app/oracle/oradata/orcl/redo01.log'

         11       ) SIZE 50M,

         12    GROUP 2(

         13      '/u01/app/oracle/oradata/orcl/redo2.log',  

         14      '/u01/app/oracle/oradata/orcl/redo02.log'      

         15       ) SIZE 50M,

         16    GROUP 3(

         17      '/u01/app/oracle/oradata/orcl/redo3.log',      

         18      '/u01/app/oracle/oradata/orcl/redo03.log'    

         19       ) SIZE 100M 

         20  DATAFILE

         21    '/u01/app/oracle/oradata/orcl/tbs1_2.dbf',

         22    '/u01/app/oracle/oradata/orcl/tbs1_1.dbf',     

         23    '/u01/app/oracle/oradata/orcl/example01.dbf',

         24    '/u01/app/oracle/oradata/orcl/users01.dbf',

         25    '/u01/app/oracle/oradata/orcl/sysaux01.dbf',

         26    '/u01/app/oracle/oradata/orcl/system01.dbf',

         27    '/u01/app/oracle/oradata/orcl/undotbs01.dbf'

         28  CHARACTER SET WE8ISO8859P1;

        CREATE CONTROLFILE REUSE DATABASE "orcl" NOARCHIVELOG NORESTLOGS

                                                              *

        ERROR at line 1:

        ORA-01967: invalid option for CREATE CONTROLFILE

 

        SQL> save /u01/app/oracle/oradata/rectl.sql;

        Created file /u01/app/oracle/oradata/rectl.sql

        SQL> ho vim /u01/app/oracle/oradata/rectl.sql

 

        SQL> @/u01/app/oracle/oradata/rectl.sql

 

        Control file created.

 

        --下面给出正确执行后的语句内容

        SQL> host cat /u01/app/oracle/oradata/rectl.sql

        CREATE CONTROLFILE REUSE DATABASE "orcl" NOARCHIVELOG NORESETLOGS

        MAXLOGFILES 16

        MAXLOGMEMBERS 3

        MAXDATAFILES 20

        MAXINSTANCES 8

        MAXLOGHISTORY 3

        LOGFILE

          GROUP 1(

            '/u01/app/oracle/oradata/orcl/redo01.log'

             ) SIZE 50M,

          GROUP 2(

            '/u01/app/oracle/oradata/orcl/redo2.log',

            '/u01/app/oracle/oradata/orcl/redo02.log'

             ) SIZE 50M,

          GROUP 3(

            '/u01/app/oracle/oradata/orcl/redo3.log',

            '/u01/app/oracle/oradata/orcl/redo03.log'

             ) SIZE 100M

        DATAFILE

          '/u01/app/oracle/oradata/orcl/tbs1_2.dbf',

          '/u01/app/oracle/oradata/orcl/tbs1_1.dbf',

          '/u01/app/oracle/oradata/orcl/example01.dbf',

          '/u01/app/oracle/oradata/orcl/users01.dbf',

          '/u01/app/oracle/oradata/orcl/sysaux01.dbf',

          '/u01/app/oracle/oradata/orcl/system01.dbf',

          '/u01/app/oracle/oradata/orcl/undotbs01.dbf'

        CHARACTER SET WE8ISO8859P1

        /

       

        --将数据库切换到open 状态

        SQL> alter database open;

 

        Database altered.

 

        SQL> select * from dual;

 

        D

        -

        X

       

        --查看已经新产生了控制文件

        SQL> host ls $ORACLE_BASE/oradata/orcl/control* -l  --可以看到新增了控制文件control01.ctl和control02.ctl

        -rw-r----- 1 oracle oinstall 6012928 Jul 15 12:58 /u01/app/oracle/oradata/orcl/control01.ctl

        -rw------- 1 oracle oinstall 7389184 Jul 15 12:04 /u01/app/oracle/oradata/orcl/control01.ctl.bak

        -rw-r----- 1 oracle oinstall 6012928 Jul 15 12:58 /u01/app/oracle/oradata/orcl/control02.ctl

 

    归档模式下控制文件全部丢失的处理

        --首先将数据库切换到归档模式

        SQL> shutdown immediate;

        Database closed.

        Database dismounted.

        ORACLE instance shut down.

        SQL> startup mount;

        ORACLE instance started.

 

        Total System Global Area  251658240 bytes

        Fixed Size                  1218796 bytes

        Variable Size              79693588 bytes

        Database Buffers          167772160 bytes

        Redo Buffers                2973696 bytes

        Database mounted.

        SQL> alter database archivelog;

        Database altered.

 

        SQL> alter database open  ;

        Database altered.

 

        --查看归档的状态

        SQL> archive log list;

        Database log mode              Archive Mode

        Automatic archival             Enabled

        Archive destination            USE_DB_RECOVERY_FILE_DEST

        Oldest online log sequence     1

        Next log sequence to archive   3

        Current log sequence           3

 

        --备份控制文件

        SQL> alter database backup controlfile to '/u01/app/oracle/oradata/orcl/rectl.bak';

 

        Database altered.

 

        SQL> create table tb_temp(id int,col1 varchar2(20));

 

        Table created.

 

        SQL> insert into tb_temp select 1,'Robinson' from dual;

 

        1 row created.

 

        SQL> commit;

 

        Commit complete.

 

        SQL> alter system switch logfile;   --切换日志

 

        System altered.

 

        SQL> archive log list; --日志切换后sequence由变成

        Database log mode              Archive Mode

        Automatic archival             Enabled

        Archive destination            USE_DB_RECOVERY_FILE_DEST

        Oldest online log sequence     2

        Next log sequence to archive   4

        Current log sequence           4

 

        --模拟控制文件全部丢失

        SQL> startup

        ORACLE instance started.

 

        Total System Global Area  251658240 bytes

        Fixed Size                  1218796 bytes

        Variable Size              79693588 bytes

        Database Buffers          167772160 bytes

        Redo Buffers                2973696 bytes

        ORA-00205: error in identifying control file, check alert log for more info

 

        SQL> show parameter control

 

        NAME                                 TYPE        VALUE

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

        control_file_record_keep_time        integer     7

        control_files                        string      /u01/app/oracle/oradata/orcl/c

                                                         ontrol01.ctl, /u01/app/oracle/

                                                         oradata/orcl/control02.ctl

 

        --查看物理控制文件是否存在                                             

        SQL> ho ls /u01/app/oracle/oradata/orcl/contr*

        ls: /u01/app/oracle/oradata/orcl/contr*: No such file or directory

 

        --建议先对数据库作备份再将备份的控制文件复制到参数文件中指定的位置

 

        SQL> ho cp /u01/app/oracle/oradata/orcl/rectl.bak/u01/app/oracle/oradata/orcl/control01.ctl

 

        SQL> ho cp /u01/app/oracle/oradata/orcl/rectl.bak/u01/app/oracle/oradata/orcl/control02.ctl

 

        SQL> alter database mount;

 

        Database altered.

 

        SQL> alter database open;

        alter database open

        *

        ERROR at line 1:

        ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

 

        SQL> shutdown immediate;

        ORA-01109: database not open

        Database dismounted.

        ORACLE instance shut down.

       

        SQL> startup mount;

        ORACLE instance started.

 

        Total System Global Area  251658240 bytes

        Fixed Size                  1218796 bytes

        Variable Size              79693588 bytes

        Database Buffers          167772160 bytes

        Redo Buffers                2973696 bytes

        Database mounted.

 

        SQL> alter database open resetlogs;

 

        Database altered.

 

        SQL> select * from dual;

 

        D

        -

        X

 

        SQL> select * from tb_temp;  --表成功被恢复

 

                ID COL1

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

                 1 Robinson

 

        SQL> drop table tb_temp purge;

 

        Table dropped.

 

        SQL> archive log list;   --日志的sequence号被置为

        Database log mode              Archive Mode

        Automatic archival             Enabled

        Archive destination            USE_DB_RECOVERY_FILE_DEST

        Oldest online log sequence     1

        Next log sequence to archive   1

        Current log sequence           1


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7月前
|
存储 Oracle NoSQL
Oracle 表空间、数据文件、schema的关系
Oracle 表空间、数据文件、schema的关系
198 2
|
7月前
|
XML Java 数据库连接
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——hibernate的config文件(hibernate.cfg.xml)
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
【赵渝强老师】Oracle的控制文件与归档日志文件
|
22天前
|
SQL Oracle 关系型数据库
Oracle 从 DMP 文件中恢复指定表的步骤
Oracle 从 DMP 文件中恢复指定表的步骤
38 7
|
24天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
1月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
3月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
2月前
|
Oracle 关系型数据库 数据库
oracle数据恢复—Oracle数据库文件损坏导致数据库打不开的数据恢复案例
打开oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有:控制文件损坏、数据文件损坏、数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux01.dbf文件,启动数据库依然有许多查询报错。export和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库层面无法修复数据库。由于system和用户表空间的数据文件是正常的,
|
6月前
|
SQL Oracle 关系型数据库
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
79 0