当前位置: 首页 > news >正文

怎么做系统网站软考网络规划设计师

怎么做系统网站,软考网络规划设计师,做外贸雨伞到什么网站,加强学校就业信息网站建设和管理在 Oracle 和 OB Oracle 租户下调用存储过程时#xff0c;两者表现并不一致#xff0c;导致获取到的 SQL 文本拼接不完整#xff0c;影响到了业务侧的功能测试。本文将针对这个问题进行相关的测试和验证。 作者#xff1a;赵黎明#xff0c;爱可生 MySQL DBA 团队成员两者表现并不一致导致获取到的 SQL 文本拼接不完整影响到了业务侧的功能测试。本文将针对这个问题进行相关的测试和验证。 作者赵黎明爱可生 MySQL DBA 团队成员熟悉 Oracle、MySQL 等数据库擅长数据库性能问题诊断、事务与锁问题的分析等负责处理客户 MySQL 及我司自研 DMP 平台日常运维中的问题对开源数据库相关技术非常感兴趣。 爱可生开源社区出品原创内容未经授权不得随意使用转载请联系小编并注明来源。 本文约 3100 字预计阅读需要 10 分钟。 背景 最近在客户这边遇到一个故障在 Oracle 和 OB Oracle 租户下调用存储过程时两者表现并不一致导致获取到的 SQL 文本拼接不完整影响到了业务侧的功能测试。 客户的存储过程逻辑并不复杂就是通过查询系统视图 user_tab_columns 来获取用户的表名然后再进行 SQL 拼接完成后续的业务逻辑。 本文将针对这个问题进行相关的测试和验证。 问题复现 Oracle 环境中验证 -- 创建测试用户并赋权 [rootlocalhost ~]# sqlplus / as sysdba SQL create user u1 identified by u1; User created. SQL create user u2 identified by u2; User created. SQL grant connect,resource to u1; Grant succeeded. SQL grant create procedure to u1; Grant succeeded. SQL grant connect,resource to u2; Grant succeeded. SQL grant create synonym to u2; Grant succeeded. SQL grant select any table to u2; Grant succeeded.-- 创建测试表并赋权 SQL conn u1/u1 Connected. SQL create table t1(id int); Table created. SQL insert into t1(id) values(1); 1 row created.-- 创建表的同义词 SQL conn u2/u2 Connected. SQL create synonym t1 for u1.t1; Synonym created.SQL set lin 200 SQL col owner for a5 SQL col table_owner for a5 SQL col db_link for a10 SQL select * from all_synonyms where ownerU2;OWNER SYNONYM_NAME TABLE TABLE_NAME DB_LINK ----- ------------------------------ ----- ------------------------------ ---------- U2 T1 U1 T1-- 创建存储过程并赋权 SQL conn u1/u1 Connected. SQL create or replace procedure proc_case1 as v_str varchar2(10); begin select table_name into v_str from user_tab_columns where table_nameT1; dbms_output.put_line(v_str); end; / 2 3 4 5 6 7 Procedure created. SQL grant execute on proc_case1 to u2; Grant succeeded.-- 创建存储过程同义词 SQL conn u2/u2 Connected. SQL create synonym proc_case1 for u1.proc_case1; Synonym created.SQL select * from all_synonyms where ownerU2; OWNER SYNONYM_NAME TABLE TABLE_NAME DB_LINK ----- ------------------------------ ----- ------------------------------ ---------- U2 PROC_CASE1 U1 PROC_CASE1 U2 T1 U1 T1-- 验证 SQL conn u1/u1 Connected. SQL select * from t1;ID ----------1SQL set serveroutput on; SQL call proc_case1(); T1 Call completed.SQL conn u2/u2 Connected. SQL select * from t1;ID ----------1SQL set serveroutput on; SQL call proc_case1(); T1 Call completed. SQL 由此可见在 Oracle 中无论是 u1 还是 u2 用户调用存储过程时都能正确返回表名说明两者查询 user_tab_columns 视图的返回结果是一致的这也是符合预期的。 OB Oracle 环境中验证 -- 创建测试用户并赋权 SYS[SYS] create user u1 identified by u1; Query OK, 0 rows affected (0.04 sec) SYS[SYS] create user u2 identified by u2; Query OK, 0 rows affected (0.04 sec) SYS[SYS] grant connect,resource to u1; Query OK, 0 rows affected (0.04 sec) SYS[SYS] grant create procedure to u1; Query OK, 0 rows affected (0.03 sec) SYS[SYS] grant connect,resource to u2; Query OK, 0 rows affected (0.05 sec) SYS[SYS] grant create synonym to u2; Query OK, 0 rows affected (0.03 sec) SYS[SYS] grant select any table to u2; Query OK, 0 rows affected (0.03 sec)-- 创建测试表并赋权 SYS[SYS] conn u1 Connection id: 269006 Current database: U1 SYS[U1] create table t1(id int); Query OK, 0 rows affected (0.21 sec) SYS[U1] insert into t1(id) values(1); Query OK, 1 row affected (0.03 sec) SYS[U1] commit; Query OK, 0 rows affected (0.01 sec)-- 创建表的同义词 SYS[U1] conn u2 Connection id: 50837 Current database: U2 SYS[U2] create synonym t1 for u1.t1; Query OK, 0 rows affected (0.05 sec) SYS[U2] select * from all_synonyms where ownerU2; ------------------------------------------------------- | OWNER | SYNONYM_NAME | TABLE_OWNER | TABLE_NAME | DB_LINK | ------------------------------------------------------- | U2 | T1 | U1 | T1 | NULL | ------------------------------------------------------- 2 rows in set (0.01 sec)-- 创建存储过程并赋权 SYS[U2] conn u1 Connection id: 269078 Current database: U1 SYS[U1] create or replace procedure proc_case1 as- v_str varchar2(10);- begin- select table_name into v_str from user_tab_columns where table_nameT1;- dbms_output.put_line(v_str);- end;- / Query OK, 0 rows affected (0.17 sec) SYS[U1] grant execute on proc_case1 to u2; Query OK, 0 rows affected (0.06 sec)-- 创建存储过程同义词 SYS[U1] conn u2 Connection id: 50896 Current database: U2 SYS[U2] create synonym proc_case1 for u1.proc_case1; Query OK, 0 rows affected (0.05 sec) SYS[U2] select * from all_synonyms where ownerU2; ------------------------------------------------------- | OWNER | SYNONYM_NAME | TABLE_OWNER | TABLE_NAME | DB_LINK | ------------------------------------------------------- | U2 | PROC_CASE1 | U1 | PROC_CASE1 | NULL | | U2 | T1 | U1 | T1 | NULL | ------------------------------------------------------- 2 rows in set (0.01 sec)-- 验证 SYS[U2] conn u1 Connection id: 269134 Current database: U1 SYS[U1] select * from t1; ------ | ID | ------ | 1 | ------ 1 row in set (0.01sec)SYS[U1] set serveroutput on; Query OK, 0 rows affected (0.41 sec) SYS[U1] call proc_case1(); Query OK, 0 rows affected (0.21 sec) SYS[U1] select table_name,column_name from user_tab_columns; ------------------------- | TABLE_NAME | COLUMN_NAME | ------------------------- | C | NAME | | C | ADDRESS | ------------------------- 2 rows in set (0.08 sec)此处其实已经可以发现一些端倪在 OB 中虽然可以通过 conn 进行用户切换切换后的用户也能访问自己的对象但是在访问 USER_ 等视图时返回结果与 Oracle 不同。 用户 u1 查询 user_tab_columns 表时只能看到 SYS 用户下的表 C 表是由 SYS 用户创建的所以存储过程无法返回 T1 表的表名其查询结果为空。 -- 直连 u1 用户验证 U1[U1] select * from t1; ------ | ID | ------ | 1 | ------ 1 row in set (0.01sec)U1[U1] set serveroutput on; Query OK, 0 rows affected (0.02sec)U1[U1] call proc_case1(); Query OK, 0 rows affected (0.08sec)T1 U1[U1]-- 直连 u2 用户进行验证 U2[U2] select * from t1; ------ | ID | ------ | 1 | ------ 1 row in set (0.03sec)U2[U2] set serveroutput on; Query OK, 0 rows affected (0.44 sec)U2[U2] call proc_case1(); Query OK, 0 rows affected (0.43 sec)U2[U2] select * from user_tab_columns; Empty set (0.08 sec)# 同样地u2 也无法从 user_tab_columns 视图中查询到 u1 创建的表调用存储过程返回结果为空-- 将 user_tab_columns 替换成 all_tab_columns 视图 U2[U2] select table_name,column_name from all_tab_columns where ownerU1; ------------------------- | TABLE_NAME | COLUMN_NAME | ------------------------- | T1 | ID | ------------------------- 1 row in set (0.08 sec)U2[U2] create or replace procedure proc_case2 as- v_str varchar2(10);- begin- select table_name into v_str from all_tab_columns where table_nameT1 and ownerU1;- dbms_output.put_line(v_str);- end;- / Query OK, 0 rows affected (0.17ec)U2[U2] call proc_case2(); Query OK, 0 rows affected (0.16ec)T1 U2[U2]-- 将 SELECT ANY TABLE 权限回收 SYS[SYS] revoke select any table from u2; Query OK, 0 rows affected (0.03 sec)U2[U2] select table_name,column_name from all_tab_columns where ownerU1; Empty set (0.05 sec)U2[U2] set serveroutput on; Query OK, 0 rows affected (0.01 sec)U2[U2] call proc_case2(); Query OK, 0 rows affected (0.05 sec) 当用户 u2 没有 SELECT ANY TABLE 系统权限后即使查询 all_tab_columns 视图也无法获取其他用户创建表的相关信息。 排查调用系统视图的相关对象 PL 对象 PL 对象如函数存储过程等。 -- dba_source 视图中存放了各种 PL 对象的定义 SQL select count(*),type from dba_source group by type;COUNT(*) TYPE ---------- ------------152202 PROCEDURE89318 PACKAGE31504 PACKAGE BODY1276 TYPE BODY2210 TRIGGER3895 FUNCTION7 JAVA SOURCE12338 TYPE8 rows selected.-- 创建测试存储过程大小写各1个SQL CREATE OR REPLACE PROCEDURE PROC_1 IS V_N NUMBER :0; BEGINSELECT COUNT(*) INTO V_N FROM USER_TAB_COLUMNS; END; / 2 3 4 5 6 Procedure created.SQL create or replace procedure proc_2 is v_n number :0; beginselect count(*) into v_n from user_tab_columns; end; / 2 3 4 5 6 Procedure created.-- 查询常用系统视图名此处只列举了几个与表相关的视图 select owner,object_name,object_type from dba_objects where ownerSYS and (object_name like USER_PART_% or object_name like USER_T% or object_name like ALL_PART_% or object_name like ALL_T% or object_name like DBA_PART_% or object_name like DBA_T%);-- 根据上一步获取到的系统视图名通过模糊搜索即可捕获到涉及查询这些系统视图的 PL 对象 SQL set line 200 pages 9999 long 999999 SQL col owner for a10 SQL col name for a30 SQL col text for a80 SQL select owner,name,type,text from dba_source where owner not in(SYS, SYSTEM, SYSMAN, OUTLN, DIP, TSMSYS, DBSNMP,ORACLE_OCM, WMSYS, EXFSYS, XDB, ANONYMOUS, ORDSYS,ORDPLUGINS, SI_INFORMTN_SCHEMA, MDSYS, MGMT_VIEW, PERFSTAT,DMSYS, CTXSYS, OLAPSYS, MDDATA, APPQOSSYS, XS$NULL,ORDDATA, SPATIAL_WFS_ADMIN_USR, SPATIAL_CSW_ADMIN_USR,OWBSYS, APEX_PUBLIC_USER, APEX_030200, FLOWS_FILES, SCOTT,OMS, OWBSYS_AUDIT, DSG, DBMGR, PATROL, SPA, GOLDENGATE,DBADM) and owner not like MYNET% and (text like %USER_TAB_COLUMNS% or text like %user_tab_columns% or text like %USER%TABLES% or text like %user%tables% or text like %ALL_TAB_COLUMNS% or text like %ALL_tab_columns% or text like %ALL%TABLES% or text like %ALL%tables%); 2 3 4 5 6 7 8 OWNER NAME TYPE TEXT ---------- ------------------------------ ------------ --------------------------------------------------------------------------------U1 PROC_CASE1 PROCEDURE select table_name into v_str from user_tab_columns where table_nameT1; ZLM PROC_1 PROCEDURE SELECT COUNT(*) INTO V_N FROM USER_TAB_COLUMNS; ZLM PROC_2 PROCEDURE select count(*) into v_n from user_tab_columns; 视图对象 -- 创建测试视图1 SQL create view view_1 as select * from user_tables; View created.-- 查询 dba_views 获取视图定义 SQL select owner,view_name,text from dba_views where owner not in(SYS, SYSTEM, SYSMAN, OUTLN, DIP, TSMSYS, DBSNMP,ORACLE_OCM, WMSYS, EXFSYS, XDB, ANONYMOUS, ORDSYS,ORDPLUGINS, SI_INFORMTN_SCHEMA, MDSYS, MGMT_VIEW, PERFSTAT,DMSYS, CTXSYS, OLAPSYS, MDDATA, APPQOSSYS, XS$NULL,ORDDATA, SPATIAL_WFS_ADMIN_USR, SPATIAL_CSW_ADMIN_USR,OWBSYS, APEX_PUBLIC_USER, APEX_030200, FLOWS_FILES, SCOTT,OMS, OWBSYS_AUDIT, DSG, DBMGR, PATROL, SPA, GOLDENGATE,DBADM) and (text like %USER_TAB_COLUMNS% or text like %user_tab_columns% or text like %USER%TABLES% or text like %user%tables% or text like %ALL_TAB_COLUMNS% or text like %ALL_tab_columns% or text like %ALL%TABLES% or text like %ALL%tables%);2 3 4 5 6 7 8 DBADM) and (text like %USER_TAB_COLUMNS% or text like %user_tab_columns% or text like %USER%TABLES% or text like %user%tables% or text like %ALL_TAB_COLUMNS% or text like %ALL_tab_columns% or text like %ALL%TABLES% or text like %ALL%tables%)* ERROR at line 8:ORA-00932: inconsistent datatypes: expected NUMBER got LONGdba_source 视图中的 text 列是 varchar2 类型的可以直接使用 like 进行模糊查询。 dba_views 视图中的 text 列是 long 类型的无法直接使用 like 进行模糊查询会报 ORA-00932 的错误。 workaround先创建一张表用 to_lob 函数将 text 字段转换为 clob 类型然后将 dba_views 拷贝到该表中再通过以上 SQL 进行查询。 -- 创建中间表并将系统视图 dba_views 内容拷贝到该表 SQL create table my_views as select owner,view_name,to_lob(text) text from dba_views;Table created.-- 查询中间表捕获目标视图对象 SQL select owner,view_name,text from my_views where owner not in(SYS, SYSTEM, SYSMAN, OUTLN, DIP, TSMSYS, DBSNMP, ORACLE_OCM, WMSYS, EXFSYS, XDB, ANONYMOUS, ORDSYS, ORDPLUGINS, SI_INFORMTN_SCHEMA, MDSYS, MGMT_VIEW, PERFSTAT, DMSYS, CTXSYS, OLAPSYS, MDDATA, APPQOSSYS, XS$NULL, ORDDATA, SPATIAL_WFS_ADMIN_USR, SPATIAL_CSW_ADMIN_USR, OWBSYS, APEX_PUBLIC_USER, APEX_030200, FLOWS_FILES, SCOTT, OMS, OWBSYS_AUDIT, DSG, DBMGR, PATROL, SPA, GOLDENGATE, DBADM) and (text like %USER_TAB_COLUMNS% or text like %user_tab_columns% or text like %USER%TABLES% or text like %user%tables% or text like %ALL_TAB_COLUMNS% or text like %ALL_tab_columns% or text like %ALL%TABLES% or text like %ALL%tables%); 2 3 4 5 6 7 8 OWNER VIEW_NAME TEXT---------- ------------------------------ -------------------------------------------------------------------------------- ZLM VIEW_1 select TABLE_NAME,TABLESPACE_NAME,CLUSTER_NAME,IOT_NAME,STATUS,PCT_FR EE,PCT_USED,INI_TRANS,MAX_TRANS,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTEN TS,MAX_EXTENTS,PCT_INCREASE,FREELISTS,FREELIST_GROUPS,LOGGING,BACKED _UP,NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_SPACE,CHAIN_CNT,AVG_ROW_LEN,A VG_SPACE_FREELIST_BLOCKS,NUM_FREELIST_BLOCKS,DEGREE,INSTANCES,CACHE,TA BLE_LOCK,SAMPLE_SIZE,LAST_ANALYZED,PARTITIONED,IOT_TYPE,TEMPORARY,SE CONDARY,NESTED,BUFFER_POOL,ROW_MOVEMENT,GLOBAL_STATS,USER_STATS,DURA TION,SKIP_CORRUPT,MONITORING,CLUSTER_OWNER,DEPENDENCIES,COMPRESSION, DROPPED from user_tables该方法可以满足需求但每次有新的视图被创建时需要 drop 并重建表比较繁琐。 workaround创建物化视图来代替中间表。 -- 创建物化视图 SQL create materialized view my_mviews refresh force on demand start with sysdate next sysdate 10 /(24*60) as select owner,view_name,to_lob(text) text from dba_views; 2 3 4 5 6 7 Materialized view created.-- 创建测试视图2 SQL CREATE VIEW VIEW_2 AS SELECT * FROM USER_TABLES; View created.-- 查看是否捕获到 view_2 视图 SQL select owner,view_name,text from my_mviews where owner not in(SYS, SYSTEM, SYSMAN, OUTLN, DIP, TSMSYS, DBSNMP,ORACLE_OCM, WMSYS, EXFSYS, XDB, ANONYMOUS, ORDSYS,ORDPLUGINS, SI_INFORMTN_SCHEMA, MDSYS, MGMT_VIEW, PERFSTAT,DMSYS, CTXSYS, OLAPSYS, MDDATA, APPQOSSYS, XS$NULL,ORDDATA, SPATIAL_WFS_ADMIN_USR, SPATIAL_CSW_ADMIN_USR,OWBSYS, APEX_PUBLIC_USER, APEX_030200, FLOWS_FILES, SCOTT,OMS, OWBSYS_AUDIT, DSG, DBMGR, PATROL, SPA, GOLDENGATE,DBADM) and (text like %USER_TAB_COLUMNS% or text like %user_tab_columns% or text like %USER%TABLES% or text like %user%tables% or text like %ALL_TAB_COLUMNS% or text like %ALL_tab_columns% or text like %ALL%TABLES% or text like %ALL%tables%); 2 3 4 5 6 7 8 OWNER VIEW_NAME TEXT ---------- ------------------------------ -------------------------------------------------------------------------------- ZLM VIEW_1 select TABLE_NAME,TABLESPACE_NAME,CLUSTER_NAME,IOT_NAME,STATUS,PCT_FREE,PCT_USED,INI_TRANS,MAX_TRANS,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS,PCT_INCREASE,FREELISTS,FREELIST_GROUPS,LOGGING,BACKED_UP,NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_SPACE,CHAIN_CNT,AVG_ROW_LEN,AVG_SPACE_FREELIST_BLOCKS,NUM_FREELIST_BLOCKS,DEGREE,INSTANCES,CACHE,TABLE_LOCK,SAMPLE_SIZE,LAST_ANALYZED,PARTITIONED,IOT_TYPE,TEMPORARY,SECONDARY,NESTED,BUFFER_POOL,ROW_MOVEMENT,GLOBAL_STATS,USER_STATS,DURATION,SKIP_CORRUPT,MONITORING,CLUSTER_OWNER,DEPENDENCIES,COMPRESSION,DROPPED from user_tables-- 查看物化视图刷新时间 SQL select owner,mview_name,last_refresh_type,last_refresh_date from user_mviews; OWNER MVIEW_NAME LAST_REF LAST_REFRESH_DATE ---------- ------------------------------ -------- ------------------- ZLM MY_MVIEWS COMPLETE 2023-08-03 16:07:15-- 手动刷新物化视图 SQL exec dbms_mview.refresh(my_mviews);PL/SQL procedure successfully completed.SQL select owner,mview_name,last_refresh_type,last_refresh_date from user_mviews;OWNER MVIEW_NAME LAST_REF LAST_REFRESH_DATE ---------- ------------------------------ -------- ------------------- ZLM MY_MVIEWS COMPLETE 2023-08-03 16:21:45-- 再次查询物化视图此时 view_2 也能被捕获到了这样就无需重复建表当有新视图被创建的时候只需手动刷新物化视图即可 SQL select owner,view_name,text from my_mviews where owner not in(SYS, SYSTEM, SYSMAN, OUTLN, DIP, TSMSYS, DBSNMP,ORACLE_OCM, WMSYS, EXFSYS, XDB, ANONYMOUS, ORDSYS,ORDPLUGINS, SI_INFORMTN_SCHEMA, MDSYS, MGMT_VIEW, PERFSTAT,DMSYS, CTXSYS, OLAPSYS, MDDATA, APPQOSSYS, XS$NULL,ORDDATA, SPATIAL_WFS_ADMIN_USR, SPATIAL_CSW_ADMIN_USR,OWBSYS, APEX_PUBLIC_USER, APEX_030200, FLOWS_FILES, SCOTT,OMS, OWBSYS_AUDIT, DSG, DBMGR, PATROL, SPA, GOLDENGATE,DBADM) and (text like %USER_TAB_COLUMNS% or text like %user_tab_columns% or text like %USER%TABLES% or text like %user%tables% or text like %ALL_TAB_COLUMNS% or text like %ALL_tab_columns% or text like %ALL%TABLES% or text like %ALL%tables%); 2 3 4 5 6 7 8 OWNER VIEW_NAME TEXT ---------- ------------------------------ -------------------------------------------------------------------------------- ZLM VIEW_1 select TABLE_NAME,TABLESPACE_NAME,CLUSTER_NAME,IOT_NAME,STATUS,PCT_FREE,PCT_USED,INI_TRANS,MAX_TRANS,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS,PCT_INCREASE,FREELISTS,FREELIST_GROUPS,LOGGING,BACKED_UP,NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_SPACE,CHAIN_CNT,AVG_ROW_LEN,AVG_SPACE_FREELIST_BLOCKS,NUM_FREELIST_BLOCKS,DEGREE,INSTANCES,CACHE,TABLE_LOCK,SAMPLE_SIZE,LAST_ANALYZED,PARTITIONED,IOT_TYPE,TEMPORARY,SECONDARY,NESTED,BUFFER_POOL,ROW_MOVEMENT,GLOBAL_STATS,USER_STATS,DURATION,SKIP_CORRUPT,MONITORING,CLUSTER_OWNER,DEPENDENCIES,COMPRESSION,DROPPED from user_tablesZLM VIEW_2 select TABLE_NAME,TABLESPACE_NAME,CLUSTER_NAME,IOT_NAME,STATUS,PCT_FREE,PCT_USED,INI_TRANS,MAX_TRANS,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS,PCT_INCREASE,FREELISTS,FREELIST_GROUPS,LOGGING,BACKED_UP,NUM_ROWS,BLOCKS,EMPTY_BLOCKS,AVG_SPACE,CHAIN_CNT,AVG_ROW_LEN,AVG_SPACE_FREELIST_BLOCKS,NUM_FREELIST_BLOCKS,DEGREE,INSTANCES,CACHE,TABLE_LOCK,SAMPLE_SIZE,LAST_ANALYZED,PARTITIONED,IOT_TYPE,TEMPORARY,SECONDARY,NESTED,BUFFER_POOL,ROW_MOVEMENT,GLOBAL_STATS,USER_STATS,DURATION,SKIP_CORRUPT,MONITORING,CLUSTER_OWNER,DEPENDENCIES,COMPRESSION,DROPPED from USER_TABLES解决方案 将存储过程中的 user_tab_columns 视图替换成 all_tab_columns虽然可作为临时方案不过存在以下缺点 需要修改业务代码即替换存储过程中查询相关系统视图的部分。使用同义词来访问对象的用户需要有 SELECT ANY TABLE 的系统权限否则即便使用 all_ 的视图也查询不到目标对象。赋予执行用户 dba 权限并修改原有查询 SQL增加 ownerXXX 的条件存在安全隐患不推荐。OB 能提供一个 hotfix patch 来彻底解决该问题。 问题总结 在 OB 中普通用户查询 USER_TAB_COLUMNS 系统视图权限的逻辑与 Oracle 并不一致导致查询结果有差异。 除了 USER_TAB_COLUMNS 视图还有其他以 USER_ 开头的视图也存在类似的问题比如USER_SYNONYMS、USER_TABLES 等。 对于系统中已有的对象应尽快排查并确认在哪些对象中用到了这些系统视图在该问题被彻底修复前建议先对相关代码进行临时修改使其能继续完成后续的功能验证。 更多技术文章请访问https://opensource.actionsky.com/ 关于 SQLE 爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者支持多场景审核支持标准化上线流程原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。 SQLE 获取 类型地址版本库https://github.com/actiontech/sqle文档https://actiontech.github.io/sqle-docs/发布信息https://github.com/actiontech/sqle/releases数据审核插件开发文档https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse
http://www.zqtcl.cn/news/259606/

相关文章:

  • 哪些网站微信支付平台经营管理系统
  • 教育教学成果展示网站建设桂林网站开发公司
  • 唐山房产网站建设asp.net 网站压缩
  • 卫浴网站设计大型网站建设的必须条件
  • 肇庆制作企业网站seo网站建设课程
  • 没有公司自己做网站wordpress lms插件
  • 申请一个网站需要怎么做北京网络公司信息
  • 珠海市建设局网站分销系统价格多少
  • 杭州建网站企业seo营销工具
  • php旅游类网站开发wordpress 文章内
  • 企业管理外贸企业网站优化
  • 免费图纸网东莞百度快照优化排名
  • 南宁网站建设培训学校青海网站建设加q5299丶14602做词
  • 鱼台做网站多少钱wordpress pot
  • 招聘网站建设维护人员怎样自己开发一款软件
  • 上海网站制作怎么选泰安网红人物
  • 企业网站建设义乌南靖网站建设
  • 抖音电商网站建设如何制作app推广
  • 关键词的选择网站提示网站建设电销异议处理话术
  • 南京建设网站内容网站打开速度慢是否需要升级带宽
  • 内容类网站如何 流量厦门市建设局网站住房保障专栏
  • 朝城做网站公司网站内容建设要求age06
  • 云南省城乡建设培训中心网站备份wordpress网站
  • 快速建站公司地址vr哪家公司做得好
  • 网站空间怎么更换网站营销如何做
  • 制作单页网站要网址wordpress更新显示失败
  • 阿里巴巴网站建设公司设计网站制作
  • 泰安网站建设有哪些常见的cms网站程序有哪些
  • 九寨沟城乡建设官方网站深圳的互联网公司排名
  • app可视化开发工具seo网站推广服务