65535条Oracle记录从0到9999的秘密(65535 oracle)

在Oracle中,有一个非常神奇的数字——65535。在Oracle的系统表中,有一种叫做“obj$”表,它记录着数据库中的所有对象信息,比如表、索引、序列等等。这张表最多能记录65535条记录,而在这65535条记录中,隐藏着一个神秘的秘密。下面就让我们一起来揭开这个秘密的面纱。

我们先来看一下“obj$”表的结构:

CREATE TABLE obj$ (

obj# NUMBER NOT NULL,

dataobj# NUMBER DEFAULT 0 NOT NULL,

owner# NUMBER NOT NULL,

name VARCHAR2(30) NOT NULL,

namespace NUMBER DEFAULT 0 NOT NULL,

subname VARCHAR2(30),

type# NUMBER NOT NULL,

ctime# DATE,

mtime# DATE,

stime# DATE,

status# NUMBER DEFAULT 0 NOT NULL,

spare1 NUMBER(4) DEFAULT 0 NOT NULL,

spare2 VARCHAR2(21) DEFAULT NULL,

spare3 NUMBER DEFAULT 0 NOT NULL,

spare4 NUMBER DEFAULT 0 NOT NULL,

spare5 NUMBER DEFAULT 0 NOT NULL,

spare6 NUMBER DEFAULT 0 NOT NULL,

spare7 VARCHAR2(20) DEFAULT NULL,

spare8 NUMBER(8) DEFAULT 0 NOT NULL,

spare9 NUMBER(8) DEFAULT 0 NOT NULL,

flags# NUMBER DEFAULT 0 NOT NULL

)

其中,最重要的字段就是“obj#”字段,它表示对象的唯一标识符。在Oracle中,每个对象都有一个唯一的标识符,“obj#”就是这个标识符。而我们刚刚提到的65535,就是这个标识符的最大值。

那么,在这65535条记录中,隐藏着什么神秘的秘密呢?其实,这个秘密非常简单:从0到9999的数字,分别对应了Oracle中的不同对象类型。具体的对应关系如下表所示:

类型编号 | 类型名称 | 对象类型

——–|——–|——–

1 | TABLE | 表

2 | INDEX | 索引

3 | CLUSTER | 群集表

4 | VIEW | 视图

5 | SYNONYM | 同义词

6 | SEQUENCE | 序列

7 | PROCEDURE | 存储过程

8 | FUNCTION | 函数

9 | PACKAGE | 包

10 | TRIGGER | 触发器

11 | TYPE | 类型

12 | LIBRARY | 库

13 | DIRECTORY | 目录

14 | QUEUE_TABLE | 队列表

15 | JAVA CLASS | Java 类型

16 | JAVA RESOURCE | Java 资源

17 | INDEXTYPE | 索引类型

18 | OPERATOR | 运算符

19 | TABLE PARTITION | 表分区

20 | INDEX PARTITION | 索引分区

22 | LOB | 大对象类型

23 | HIERARCHY | 层次类型

24 | MATERIALIZED VIEW | 材料化视图

通过上述对应关系,我们可以很方便地查找到某个对象的类型。比如,在查询表的信息时,我们就可以通过以下SQL语句来获取:

SELECT * FROM obj$ WHERE obj#

结果中的“type#”字段就是表示对象类型的编号,这里的“1”对应的就是“TABLE”。

另外,还要注意的是,如果你的数据库中有65535个对象,那么你将无法再创建新的对象了。因为“obj$”表已经满了,无法再添加新的记录了。

总结一下,虽然这个秘密看起来并不是非常神秘,但它确实隐藏在Oracle的系统表中,默默地影响着Oracle数据库的使用。了解了这个秘密,我们可以更加熟练地使用Oracle,同时也能更好地维护我们的数据库。


数据运维技术 » 65535条Oracle记录从0到9999的秘密(65535 oracle)