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,同时也能更好地维护我们的数据库。