热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle数据文件编号,Oracle中表空间与数据文件编号的连续性

表空间被删除时ts$表中并不会删除相关表空间的记录。只是把表空间的状态置为3,即INVALID状态。如果再次创建同名的表空间,则oraOracle中表空

表空间被删除时ts$表中并不会删除相关表空间的记录。只是把表空间的状态置为3,即INVALID状态。如果再次创建同名的表空间,则ora

Oracle中表空间编号与数据文件编号都是连续的,不会断号。如果TS$中表空间出现了断号,

oracle在启动时会进行数据字典和控制文件的校验,发现不一致时,数据库不能正常启动。

表空间被删除时ts$表中并不会删除相关表空间的记录。只是把表空间的状态置为3,即INVALID状态。

如果再次创建同名的表空间,则oracle会把TS$表中同名表空间的状态由3置为1,ONLINE状态。以此

来保证表空间号的连续。

ORACLE 10g中sql.bsq记录了ts$的online$列与file$的status$列的含义:

ts$

online$ /* 1 = ONLINE, 2 = OFFLINE, 3 = INVALID */

file$

status$ /* 1 = INVALID, 2 = AVAILABLE */

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as SYS

UNDOTBS2,,LIANG,Liang这三个表空间被删除,但ts$中并没有删除相关记录。只是把ONLINE$状态置为3(INVALID)

SQL> SELECT ts#,name ,online$ FROM ts$;

TS# NAME ONLINE$

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

0 SYSTEM 1

1 SYSAUX 1

2 UNDOTBS1 1

3 TEMP 1

4 USERS 1

5 UNDOTBS2 3 6 EXAMPLE 1

7 TBS_REPORT 1

8 LIANG 39 Liang 310 rows selected

-- 数据文件编号一样不会被删除,将删除的数据文件编号置为1(INVALID状态)。

SQL> SELECT file#,status$ FROM file$;

FILE# STATUS$

----- ------

1 2

2 2

3 2

4 2

5 2

6 2

7 17 rows selected

SQL> SELECT d.file_id,d.tablespace_name, d.file_name FROM dba_data_files d

2 order by d.file_id;

FILE_ID TABLESPACE_NAME FILE_NAME

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

1 SYSTEM D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\SYSTEM01.DBF

2 SYSAUX D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\SYSAUX01.DBF

3 UNDOTBS1 D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\UNDOTBS01.DBF

4 USERS D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\USERS01.DBF

5 EXAMPLE D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\EXAMPLE01.DBF

6 TBS_REPORT D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\TBS_REPORT1.DBF

6 rows selected

SQL> CREATE tablespace test DATAFILE 'D:\ORACLE\TEST02.DBF' SIZE 10M;

Tablespace created

重新创建数据文件时,如果没有状态为1(INVALID)的数据文件,oracle会新分配一个数据文件编号。

如果有状态为1(INVALID)的数据文件编号,不管新创建的数据文件是否与被删除的数据文件同名。

oracle都会重新利用被设置为状态为1(INVALID)的数据文件编号。以保证数据文件编号的连续性。

新创建数据文件后,发现7号数据文件编号被设置为2(AVAILABLE)

SQL> SELECT file#,status$ FROM file$;

FILE# STATUS$

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

1 2

2 2

3 2

4 2

5 2

6 2

7 2

7 rows selected

SQL> SELECT d.file_id,d.tablespace_name, d.file_name FROM dba_data_files d order by d.file_id;

FILE_ID TABLESPACE_NAME FILE_NAME

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

1 SYSTEM D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\SYSTEM01.DBF

2 SYSAUX D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\SYSAUX01.DBF

3 UNDOTBS1 D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\UNDOTBS01.DBF

4 USERS D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\USERS01.DBF

5 EXAMPLE D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\EXAMPLE01.DBF

6 TBS_REPORT D:\ORACLE\LIANGWEI\ORADATA\LIANGWEI\TBS_REPORT1.DBF

7 TEST D:\ORACLE\TEST02.DBF

7 rows selected

新建表空间时,如果ts$中没有同名,且状态为3的表空间。oracle会重新分配一个连续的表空间编号。

SQL> SELECT ts#,name ,online$ FROM ts$;

TS# NAME ONLINE$

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

0 SYSTEM 1

1 SYSAUX 1

2 UNDOTBS1 1

3 TEMP 1

4 USERS 1

5 UNDOTBS2 3

6 EXAMPLE 1

7 TBS_REPORT 1

8 LIANG 3

9 Liang 3

10 TEST 1

11 rows selected

如果创建同名的表空间,oracle会利用原有状态为3的表空间,同时将状态置为1.

SQL> CREATE tablespace LIANG DATAFILE 'D:\ORACLE\TEST01.DBF' SIZE 10M;

Tablespace created

创建同名表空间LIANG后,8号表空间状态由3变为1.

SQL> SELECT ts#,name ,online$ FROM ts$;

TS# NAME ONLINE$

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

0 SYSTEM 1

1 SYSAUX 1

2 UNDOTBS1 1

3 TEMP 1

4 USERS 1

5 UNDOTBS2 3

6 EXAMPLE 1

7 TBS_REPORT 1

8 LIANG 1

9 Liang 3

10 TEST 1

11 rows selected

新创建的表空间不能与数据库中已有的表空间同名。

SQL> CREATE tablespace TEST DATAFILE 'D:\ORACLE\TEST02.DBF' SIZE 10M;

CREATE tablespace TEST DATAFILE 'D:\ORACLE\TEST02.DBF' SIZE 10M

*

第 1 行出现错误:

ORA-01543: 表空间 'TEST' 已存在

新创建的数据文件也不能与数据库中已有的数据文件同名。SQL> CREATE tablespace TEST2 DATAFILE 'D:\ORACLE\TEST02.DBF' SIZE 10M;

CREATE tablespace TEST2 DATAFILE 'D:\ORACLE\TEST02.DBF' SIZE 10M

*

第 1 行出现错误:

ORA-01537: 无法添加文件 'D:\ORACLE\TEST02.DBF' - 该文件已是数据库的一部分

本文原创发布php中文网,转载请注明出处,感谢您的尊重!



推荐阅读
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • 在使用STM32Cube进行定时器配置时,有时会遇到延时不准的问题。本文探讨了可能导致延时不准确的原因,并提供了解决方法和预防措施。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ... [详细]
author-avatar
暖暖252
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有