create control file 测试3种情况

本文详细介绍了在Oracle数据库中,针对正常关闭、Abort关闭和正常关闭但使用RESETLOGS选项创建控制文件的三种不同情况,包括操作步骤、状态检查和可能遇到的问题。通过案例展示了CREATE CONTROL FILE命令在不同场景下的应用和影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Case 1: 正常关闭的DB-create control file noresetlogs

Case 2: Abort关闭的DB-create control file noresetlogs

Case 3: 正常关闭的DB-create control file resetlogs

 

-->Case 1: 正常关闭的DB-create control file noresetlogs


SQL> select  checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2641197

SQL> select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
2641197
2641197
2641197
2641197
2641197
2641197


已选择6行。

SQL>  select  checkpoint_change#,last_change# from v$datafile;

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
           2641197
           2641197
           2641197
           2641197
           2641197
           2641197

 

SQL>   shutdown immediate


从 Oracle Database 11g Release 11.2.0.1.0 - Production 断开

C:\Users\qiang>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期五 7月 5 17:07:34 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> startup nomount
ORACLE 例程已经启动。

Total System Global Area  820236288 bytes
Fixed Size                  1377700 bytes
Variable Size             633342556 bytes
Database Buffers          180355072 bytes
Redo Buffers                5160960 bytes
SQL>
SQL>
SQL>
SQL>
SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 'D:\APP\QIANG\ORADATA\TEST\ONLINELOG\O1_MF_1_79WCZTZ7_.LOG'  SIZE 50M BLOCKSIZE 512,
  9    GROUP 2 'D:\APP\QIANG\ORADATA\TEST\ONLINELOG\O1_MF_2_79WCZW77_.LOG'  SIZE 50M BLOCKSIZE 512,
 10    GROUP 3 'D:\APP\QIANG\ORADATA\TEST\ONLINELOG\O1_MF_3_79WCZXB3_.LOG'  SIZE 50M BLOCKSIZE 512
 11  -- STANDBY LOGFILE
 12  DATAFILE
 13    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_SYSTEM_8MYLM5WJ_.DBF',
 14    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_SYSAUX_79WD0G6D_.DBF',
 15    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_UNDOTBS1_79WD0RDG_.DBF',
 16    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_USERS_79WD155G_.DBF',
 17    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_APEX_TBS_88B844KR_.DBF',
 18    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_APEX_TEM_88B84R4Z_.DBF'
 19  CHARACTER SET ZHS16GBK
 20  ;

控制文件已创建。

SQL> select status from v$instance;

STATUS
------------
MOUNTED

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2641572

SQL> select  checkpoint_change# , last_change# from v$datafile;

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
           2641572      2641572
           2641572      2641572
           2641572      2641572
           2641572      2641572
           2641572      2641572
           2641572      2641572

已选择6行。

SQL> select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
           2641572
           2641572
           2641572
           2641572
           2641572
           2641572

已选择6行。

SQL> alter database open;

数据库已更改。

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME
---------------- ------------- -------------- ------------ --------------
         1          1        259   52428800        512          1 YES
INACTIVE               2635135 05-7?  -13          2640457 05-7?  -13

         2          1        260   52428800        512          1 YES
INACTIVE               2640457 05-7?  -13          2641575 05-7?  -13

         3          1        261   52428800        512          1 NO
CURRENT                2641575 05-7?  -13       2.8147E+14

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_TEMP_79WD0W1J_.TMP'
  2       SIZE 93323264  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

 


-->Case 2: Abort关闭的DB-create control file noresetlogs

SQL> select  checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2641576

SQL> select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
           2641576
           2641576
           2641576
           2641576
           2641576
           2641576

已选择6行。

SQL> select  checkpoint_change#,last_change# from v$datafile;

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
           2641576
           2641576
           2641576
           2641576
           2641576
           2641576

已选择6行。

SQL>  select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME
---------------- ------------- -------------- ------------ --------------
         1          1        259   52428800        512          1 YES
INACTIVE               2635135 05-7?  -13          2640457 05-7?  -13

         2          1        260   52428800        512          1 YES
INACTIVE               2640457 05-7?  -13          2641575 05-7?  -13

         3          1        261   52428800        512          1 NO
CURRENT                2641575 05-7?  -13       2.8147E+14

SQL> shutdown abort


SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。

Total System Global Area  820236288 bytes
Fixed Size                  1377700 bytes
Variable Size             633342556 bytes
Database Buffers          180355072 bytes
Redo Buffers                5160960 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 'D:\APP\QIANG\ORADATA\TEST\ONLINELOG\O1_MF_1_79WCZTZ7_.LOG'
  9    GROUP 2 'D:\APP\QIANG\ORADATA\TEST\ONLINELOG\O1_MF_2_79WCZW77_.LOG'
 10    GROUP 3 'D:\APP\QIANG\ORADATA\TEST\ONLINELOG\O1_MF_3_79WCZXB3_.LOG'
 11  -- STANDBY LOGFILE
 12  DATAFILE
 13    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_SYSTEM_8MYLM5WJ_.DBF',
 14    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_SYSAUX_79WD0G6D_.DBF',
 15    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_UNDOTBS1_79WD0RDG_.DBF',
 16    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_USERS_79WD155G_.DBF',
 17    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_APEX_TBS_88B844KR_.DBF',
 18    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_APEX_TEM_88B84R4Z_.DBF'
 19  CHARACTER SET ZHS16GBK
 20  ;

控制文件已创建。

SQL> select  checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2641575

SQL>  select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
           2641576
           2641576
           2641576
           2641576
           2641576
           2641576

已选择6行。

SQL> select  checkpoint_change#,last_change# from v$datafile;

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
           2641576
           2641576
           2641576
           2641576
           2641576
           2641576

已选择6行。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01113: ?? 1 ??????
ORA-01110: ???? 1:
'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_SYSTEM_8MYLM5WJ_.DBF'


SQL> recover database;
完成介质恢复。
SQL> alter database open;

数据库已更改。

SQL>

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_TEMP_79WD0W1J_.TMP'
  2       SIZE 93323264  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

 


--> Case 3: 正常关闭的DB-create control file resetlogs


SQL> select  checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2665508

SQL> select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
           2665508
           2665508
           2665508
           2665508
           2665508
           2665508

已选择6行。

SQL> select  checkpoint_change#,last_change# from v$datafile;

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
           2665508
           2665508
           2665508
           2665508
           2665508
           2665508

已选择6行。

SQL>  select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME
---------------- ------------- -------------- ------------ --------------
         1          1        262   52428800        512          1 NO
CURRENT                2665099 05-7月 -13       2.8147E+14

         2          1        260   52428800        512          1 YES
INACTIVE               2640457 05-7月 -13          2641575 05-7月 -13

         3          1        261   52428800        512          1 YES
INACTIVE               2641575 05-7月 -13          2665099 05-7月 -13


SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。

Total System Global Area  820236288 bytes
Fixed Size                  1377700 bytes
Variable Size             633342556 bytes
Database Buffers          180355072 bytes
Redo Buffers                5160960 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" RESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 'D:\APP\QIANG\ORADATA\TEST\ONLINELOG\O1_MF_1_79WCZTZ7_.LOG'  SIZE 50M BLOCKSIZE 512,
  9    GROUP 2 'D:\APP\QIANG\ORADATA\TEST\ONLINELOG\O1_MF_2_79WCZW77_.LOG'  SIZE 50M BLOCKSIZE 512,
 10    GROUP 3 'D:\APP\QIANG\ORADATA\TEST\ONLINELOG\O1_MF_3_79WCZXB3_.LOG'  SIZE 50M BLOCKSIZE 512
 11  -- STANDBY LOGFILE
 12  DATAFILE
 13    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_SYSTEM_8MYLM5WJ_.DBF',
 14    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_SYSAUX_79WD0G6D_.DBF',
 15    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_UNDOTBS1_79WD0RDG_.DBF',
 16    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_USERS_79WD155G_.DBF',
 17    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_APEX_TBS_88B844KR_.DBF',
 18    'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_APEX_TEM_88B84R4Z_.DBF'
 19  CHARACTER SET ZHS16GBK
 20  ;

控制文件已创建。

SQL>  select  checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
                 0

SQL>  select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
           2669160
           2669160
           2669160
           2669160
           2669160
           2669160

已选择6行。

SQL> select  checkpoint_change#,last_change# from v$datafile;

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
           2669160
           2669160
           2669160
           2669160
           2669160
           2669160

已选择6行。

SQL> recover database;
ORA-00283: ????????????????????
ORA-01610: ???? BACKUP CONTROLFILE ????????????????????


SQL> recover database using backup controlfile;
ORA-00279: ?? 2669160 (? 07/05/2013 17:30:07 ??) ???? 1 ????
ORA-00289: ??:
D:\APP\QIANG\ORADATA\TEST\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG\2013_07_05\O1_MF_1
_262_%U_.ARC
ORA-00280: ?? 2669160 (???? 1) ??? #262 ?


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: ????????????????
'D:\APP\QIANG\ORADATA\TEST\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG\2013_07_05\O1_MF_
1_262_%U_.ARC'
ORA-27041: ????????????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????


ORA-00308: ????????????????
'D:\APP\QIANG\ORADATA\TEST\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG\2013_07_05\O1_MF_
1_262_%U_.ARC'
ORA-27041: ????????????
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????


SQL> recover database using backup controlfile;
ORA-00279: ?? 2669160 (? 07/05/2013 17:30:07 ??) ???? 1 ????
ORA-00289: ??:
D:\APP\QIANG\ORADATA\TEST\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG\2013_07_05\O1_MF_1
_262_%U_.ARC
ORA-00280: ?? 2669160 (???? 1) ??? #262 ?


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
D:\app\qiang\oradata\TEST\ONLINELOG\O1_MF_1_79WCZTZ7_.LOG
已应用的日志。
完成介质恢复。
SQL>
SQL>  select  checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
                 0

SQL>  select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
           2669161
           2669161
           2669161
           2669161
           2669161
           2669161

已选择6行。

SQL> select  checkpoint_change#,last_change# from v$datafile;

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
           2669161      2669161
           2669161      2669161
           2669161      2669161
           2669161      2669161
           2669161      2669161
           2669161      2669161

已选择6行。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: ??????????? RESETLOGS ? NORESETLOGS ??


SQL> alter database open resetlogs;

数据库已更改。

SQL>  select  checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           2669165

SQL>  select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
           2669165
           2669165
           2669165
           2669165
           2669165
           2669165

已选择6行。

SQL>  select  checkpoint_change#,last_change# from v$datafile;

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
           2669165
           2669165
           2669165
           2669165
           2669165
           2669165

已选择6行。

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\APP\QIANG\ORADATA\TEST\DATAFILE\O1_MF_TEMP_79WD0W1J_.TMP'
  2       SIZE 93323264  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

 

 

### 解决 Extension Control File "No Such File or Directory" 错误 当遇到 `ERROR: could not open extension control file` 的错误提示时,这通常意味着 PostgreSQL 尝试加载一个不存在或无法访问的扩展控制文件。以下是几种常见情况及其解决方案: #### 1. 文件路径配置错误 如果指定的路径确实存在该文件,则可能是由于路径配置有误造成的。确认数据库服务器启动时所使用的共享库路径是否正确指向了包含 `.control` 文件的位置。 对于手动编译安装的情况,请确保环境变量 `$LD_LIBRARY_PATH` 已经包含了正确的目录,并且在postgresql.conf 中设置 shared_preload_libraries 参数也指定了相应的绝对路径[^4]。 ```bash export LD_LIBRARY_PATH=/path/to/postgresql/lib:$LD_LIBRARY_PATH echo &#39;shared_preload_libraries = \&#39;/path/to/postgresql/lib/pldbgapi\&#39;&#39; ``` #### 2. 特殊字符干扰 SQL 语句解析 有时复制粘贴操作可能会引入不可见字符或者不同编码下的标点符号(比如全角分号),从而导致语法分析失败并引发此类异常。仔细检查输入命令中的每一个细节,特别是结尾处的分隔符应为标准ASCII 半角形式;即`;`而非中文状态下的`;`. 例如,在尝试创建名为 pldebugapi 的扩展时应该使用如下格式: ```sql CREATE EXTENSION pldbgapi; ``` 而不是带有全角分号的形式[^3]. #### 3. 缺失必要的依赖项 某些情况下,即使`.control` 文件存在于预期位置,但如果缺少其他必需的支持组件也可能触发相同类型的报错信息。因此建议先按照官方文档说明完成整个扩展包的部署过程后再继续测试其功能可用性. 针对具体版本缺失特定模块的情形可以考虑重新下载完整的发行版压缩包来获取丢失的部分,或者是单独寻找第三方资源站点补全相应部分. #### 4. 权限不足 还需注意操作系统层面的安全策略可能阻止PostgreSQL进程读取目标文件夹内的内容。此时应当赋予适当的操作权限给相关用户账号以及调整SELinux/AppArmor等相关安全机制以便允许正常访问所需资源[^1]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值