我正在做一个目标很简单的项目。我们有一个代理键,其数据类型需要从整数更改为十进制(18,0),以适应业务增长导致的更多事务。显然,这个字段非常重要,被成千上万的对象引用。
我想找出一种自动化方法来识别该字段存在或引用的所有对象。字段名称是 SRV_ACCS_XXX。那就是引用该字段的表/视图/宏等等。
想到会使用目录/系统系统表:)。这是我面临的问题。dba_col_comments 中有引用字段 SRV_ACCS 的对象,但是这些对象没有进入 dba_objects - 所以我最终将对象类型设为空。对象名称就像"BIN$01gtIjJPB0vgRAALXeCowg==$0"
但是它们具有有效的数据库模式名称。
我的做法对吗?如果是这样,这些类型的对象是什么 - 名称为“BIN$01gtIjJPB0vgRAALXeCowg==$0”?如何从结果中消除临时对象/易失对象以仅获取永久创建的对象?因为每次我在不做任何修改的情况下运行查询都会产生不同的结果。
请阅读以下查询。
select
current_date "Load_date",
NULL "Tower_owner",
'Oracle Production' as "Environment_Name",
Object_Details_Tbl.TABLE_NAME "Object_Name",
object_typ_tbl.object_type "Object Type",
1 "Num Occurances",
Object_Details_Tbl.Owner "Database Schema",
'p1etl1d8.edc.cingular.net' "Server",
'N/A' "Object_Repository",
'Oracle Table' "Object_Description",
'N/A' "Object_Folder_Name",
'N/A' "Object_Directory_Name",
'A' AS "Object_Status"
from dba_col_comments Object_Details_Tbl
left outer join
dba_objects Object_Typ_Tbl
on
object_details_tbl.table_name = object_typ_tbl.object_name
and
object_details_tbl.owner = object_typ_tbl.owner
where Object_Details_Tbl.column_name like('%SRV_ACCS_%')
谢谢马尔科夫。