更新oracle目录视图和表

blpfk2vs  于 2021-07-26  发布在  Java
关注(0)|答案(4)|浏览(281)

是否可以从具有相应权限的oracle目录更新表?我已经读过很多遍了,dbms应该自己修改这些表,但是这有可能吗?
我是说,像这样做:

update all_tables
    set tablespace_name = 'whatever'
    where owner = 'whoever'
    and backed_up = 'Y'
wz8daaqr

wz8daaqr1#

想都别想。数据字典是由甲骨文维护的,如果你干扰它,你会把数据库搞砸,说再见。甲骨文将拒绝支持,所有的损害将归咎于你。
如果你必须做某事,就要经常做。否则,不要碰它。

doinxwow

doinxwow2#

表空间名称是默认情况下装箱的名称,或者可以由dba在需要时创建。但是更新oracle元数据不是正确的方法,您不应该这样做,这会导致冲突。

kg7wmglp

kg7wmglp3#

是的,从技术上讲这是可以做到的:这就是数据库创建、升级和有时数据库修补所做的。您可以在中找到许多sql脚本 ORACLE_HOME/rdbms/admin 他们正在这样做。
但正如前面所说的,除非得到oracle支持人员的通知,否则您永远不应该这样做。
如果您想了解数据库字典是如何从头开始创建的,请参见 catalog.sql 创建于32年前: Rem Grayson 03/21/88 - Creation .

yptwkmov

yptwkmov4#

哦,天哪,多简单的问题啊,又有多少令人不安的答案啊!
是的,从技术上讲,你可以更改oracle的数据字典表,不,你不应该这样做,但我理解你的好奇心。可以在引擎盖下查看,只需使用一个数据库,比如在这里,到处玩,然后扔掉它。
您将无法像这样更改datadictionary视图 ALL_TABLES 直接,因为它们是顶级表上的视图,如 SYS.TAB$ . (定义在中可见 DBA_VIEWS.TEXT ). 如果你想看电影 CREATE 它们的语句,它们在数据库服务器上的 $ORACLE_HOME/rdbms/admin 实际上很有趣。
我在网上看到的最愚蠢的事情就是有人在table上插了第二个“x” DUAL . 请不要在家里那样做!
我很确定更改那些sys表是可能的,但我永远不会这样做,因为它们会变得不一致。仔细想想,它是oracle用来保证表完整性的存储,因此存储本身的完整性不能得到完全保护。将一行插入 SYS.COL$ ,但这并不意味着您的表有一个新列,只是字典的信息有误。

相关问题