是否可以从具有相应权限的oracle目录更新表?我已经读过很多遍了,dbms应该自己修改这些表,但是这有可能吗?我是说,像这样做:
update all_tables set tablespace_name = 'whatever' where owner = 'whoever' and backed_up = 'Y'
wz8daaqr1#
想都别想。数据字典是由甲骨文维护的,如果你干扰它,你会把数据库搞砸,说再见。甲骨文将拒绝支持,所有的损害将归咎于你。如果你必须做某事,就要经常做。否则,不要碰它。
doinxwow2#
表空间名称是默认情况下装箱的名称,或者可以由dba在需要时创建。但是更新oracle元数据不是正确的方法,您不应该这样做,这会导致冲突。
kg7wmglp3#
是的,从技术上讲这是可以做到的:这就是数据库创建、升级和有时数据库修补所做的。您可以在中找到许多sql脚本 ORACLE_HOME/rdbms/admin 他们正在这样做。但正如前面所说的,除非得到oracle支持人员的通知,否则您永远不应该这样做。如果您想了解数据库字典是如何从头开始创建的,请参见 catalog.sql 创建于32年前: Rem Grayson 03/21/88 - Creation .
ORACLE_HOME/rdbms/admin
catalog.sql
Rem Grayson 03/21/88 - Creation
yptwkmov4#
哦,天哪,多简单的问题啊,又有多少令人不安的答案啊!是的,从技术上讲,你可以更改oracle的数据字典表,不,你不应该这样做,但我理解你的好奇心。可以在引擎盖下查看,只需使用一个数据库,比如在这里,到处玩,然后扔掉它。您将无法像这样更改datadictionary视图 ALL_TABLES 直接,因为它们是顶级表上的视图,如 SYS.TAB$ . (定义在中可见 DBA_VIEWS.TEXT ). 如果你想看电影 CREATE 它们的语句,它们在数据库服务器上的 $ORACLE_HOME/rdbms/admin 实际上很有趣。我在网上看到的最愚蠢的事情就是有人在table上插了第二个“x” DUAL . 请不要在家里那样做!我很确定更改那些sys表是可能的,但我永远不会这样做,因为它们会变得不一致。仔细想想,它是oracle用来保证表完整性的存储,因此存储本身的完整性不能得到完全保护。将一行插入 SYS.COL$ ,但这并不意味着您的表有一个新列,只是字典的信息有误。
ALL_TABLES
SYS.TAB$
DBA_VIEWS.TEXT
CREATE
$ORACLE_HOME/rdbms/admin
DUAL
SYS.COL$
4条答案
按热度按时间wz8daaqr1#
想都别想。数据字典是由甲骨文维护的,如果你干扰它,你会把数据库搞砸,说再见。甲骨文将拒绝支持,所有的损害将归咎于你。
如果你必须做某事,就要经常做。否则,不要碰它。
doinxwow2#
表空间名称是默认情况下装箱的名称,或者可以由dba在需要时创建。但是更新oracle元数据不是正确的方法,您不应该这样做,这会导致冲突。
kg7wmglp3#
是的,从技术上讲这是可以做到的:这就是数据库创建、升级和有时数据库修补所做的。您可以在中找到许多sql脚本
ORACLE_HOME/rdbms/admin
他们正在这样做。但正如前面所说的,除非得到oracle支持人员的通知,否则您永远不应该这样做。
如果您想了解数据库字典是如何从头开始创建的,请参见
catalog.sql
创建于32年前:Rem Grayson 03/21/88 - Creation
.yptwkmov4#
哦,天哪,多简单的问题啊,又有多少令人不安的答案啊!
是的,从技术上讲,你可以更改oracle的数据字典表,不,你不应该这样做,但我理解你的好奇心。可以在引擎盖下查看,只需使用一个数据库,比如在这里,到处玩,然后扔掉它。
您将无法像这样更改datadictionary视图
ALL_TABLES
直接,因为它们是顶级表上的视图,如SYS.TAB$
. (定义在中可见DBA_VIEWS.TEXT
). 如果你想看电影CREATE
它们的语句,它们在数据库服务器上的$ORACLE_HOME/rdbms/admin
实际上很有趣。我在网上看到的最愚蠢的事情就是有人在table上插了第二个“x”
DUAL
. 请不要在家里那样做!我很确定更改那些sys表是可能的,但我永远不会这样做,因为它们会变得不一致。仔细想想,它是oracle用来保证表完整性的存储,因此存储本身的完整性不能得到完全保护。将一行插入
SYS.COL$
,但这并不意味着您的表有一个新列,只是字典的信息有误。