oracle公司开发的软件里,经常会遇到类似物理删除和逻辑删除这样一对概念,比如oracle数据库软件、oracle virtual box等。这个应该他们开发软件时的一管理对象的方法。
物理删除,就是在操作系统级别上将如数据文件给删除了,即这样一个删除操作后,操作系统知道了该数据文件被删除了,但是oracle数据库软件不一定知道该数据文件被删除了,比如,你此时查看V$datafile,被删除的数据文件的记录还在。 oracle数据库软件要如何知道如一个数据文件给删除了呢?这就需要逻辑删除。逻辑删除,就是在oracle数据库软件系统级别上将如一个数据文件给删除了,即这样一个删除操作后,oracle数据库软件系统知道了该数据文件被删除了,具体的说就是,oracle数据库软件有一张上面写有各种存在的可以被oracle数据库软件利用的对象的清单(其实表现形式为一个配置文件),故在oracle数据库软件上执行一条删除命令,实际上,就是在该清单上将该对象的那一条记录删除,这样,oracle数据库软件系统就认为该数据文件被删除了,当然该数据文件此时没有被物理删除。只有当你在操作系统级别上,执行一条删除命令后,操作系统才认为该数据文件被删除了,具体的说就是,操作系统也有一张上面写有各种存在的可以被操作系统利用的对象的清单(其实表现形式为一个配置文件),故在操作系统上执行一条删除命令,实际上,就是在该清单上将该对象的那一条记录删除,并且此时真的将该数据文件删除(即将该数据文件的所占用的空间收回),这样,操作系统就认为该数据文件被删除了。有时候,在oracle数据库软件上执行的有些删除命令,包含操作系统级别的删除命令,这样,在oracle数据库软件上执行这些删除命令后,数据文件,就被同时被物理删除和逻辑删除。