我和我的同事维护的应用程序在后端有一个Oracle数据库.我们正在考虑偶尔以"受限"模式运行应用程序,其中一个数据库表空间设置为只读.我们可以轻松地将必要的表和索引移到单独的表空间,这些表空间可以在"受限"模式下写入.但是,尽管有几次Google搜索,但我无法确定Oracle存储序列的表空间.
这个答案提到序列值存储在SYSTEM.SEQ $表中.我现在无权访问Oracle数据库,但我猜这个表存在于一个系统表空间中.我们使只读的表空间不是系统表空间,它是我们自己的数据表空间之一.
在dev数据库中,我可以从序列中成功地进行SELECT,并将相关的表空间设置为只读.
我怀疑将这个表空间设置为只读是不会有问题的,但我更倾向于通过临时实验证实我的怀疑.有人可以赐教吗?
序列(大部分)在SEQ $中.零件将在OBJ $(并在其他地方授予).但是所有这些表都在SYSTEM表空间中.一些SYSTEM对象在SYSAUX中.DBA_SEGMENTS是一个很好的视图,用于标识对象(例如SEQ $)所在的表空间.
我怀疑Oracle不会让这些表空间进入READ ONLY模式,因为要这样做,它需要将该表空间标记为只读,该表空间记录在该表空间的SYSTEM表中.有点像锁定它解锁的保险箱中的钥匙.