专栏首页杨建荣的学习笔记关于查看dba_data_files的一个小问题(r7笔记第72天)

关于查看dba_data_files的一个小问题(r7笔记第72天)

今天帮一个朋友看一个pl/sql的问题,他已经钻到一个死胡同里列,可能明眼人一看就知道哪里有问题,但是当局者迷,所以我抽空看了一下这个pl/sql块。 pl/sql的内容大体如下: declare TYPE new_type IS TABLE OF VARCHAR2(30) ; v_tab new_type:=new_type('DBIMISHLS','ICU','INFOCAST','INFOCAST_V2','MSG','NMS','TS_CONFIG','TS_DOC','TS_PATIENT','TS_WARD'); position varchar2(1000); v_sql_user varchar2(4000); v_sql_tablespace varchar2(4000); v_res_tablespace varchar2(4000); v_res_user varchar2(4000); begin select substr(file_name,1,29) into position from dba_data_files where rownum=1; for i in 1..v_tab.count loop v_sql_tablespace:='create tablespace '||v_tab(i)||' datafile '||''''||position||v_tab(i)||'01.dbf'||''''||' size 1G autoextend on;'; ---EXECUTE immediate v_sql_tablespace into v_res_tablespace; dbms_output.put_line(v_sql_tablespace); end loop; end; 当然简单调试了一下就可以了,看起来语法就没有任何问题了。其实是几个结束符的问题。 当然语句的问题改好了。为了保险起见,我得测试一下,刚好手头没有测试环境了,生产环境不能尝试,所以就在备库中进行了测试,发现是一台11gR2的备库。 运行的时候结果提示dba_data_files不存在 SQL> desc dba_data_files ERROR: ORA-04043: object dba_data_files does not exist 这个时候才意识到备库是在mount阶段。 然后把备库启动到open阶段,自动开启了read only with apply,这个时候运行那个Pl/sql还是有问题,这就奇怪了。 看报错是指到dba_data_files了,手工desc了一下,发现确实访问不了,这个时候就有些奇怪了。怎么会访问不了了,难道是备库有问题。 这个数据字典的信息不存在那就严重了。 SQL> desc dba_data_files ERROR: ORA-04043: object dba_data_files does not exist 这个测试做得我有点心虚,赶紧找了另外几套环境做比对,都没有问题。所以我初步怀疑,可能是碰到一个bug了。 当然有了基本的思路之后,查看mos,马上就锁定一篇文章 ORA-4043 On DBA_* Views If They Are Described In Mount Stage (Doc ID 296235.1) 确实有这么一个bug,2365821 如果在数据库mount阶段尝试使用desc访问dba_相关的数据字典,在open阶段就会抛出上面的错误信息。 当然解决方法也很简单,一个就是flush shared pool,另外一个就是重启。 当然在备库我还是愿意在线修复。 SQL> Alter system flush shared_pool; System altered. SQL> desc dba_data_files Name Null? Type ----------------------------------------- -------- ---------------------------- FILE_NAME VARCHAR2(513) FILE_ID NUMBER TABLESPACE_NAME VARCHAR2(30) BYTES NUMBER BLOCKS NUMBER STATUS VARCHAR2(9) RELATIVE_FNO NUMBER AUTOEXTENSIBLE VARCHAR2(3) MAXBYTES NUMBER MAXBLOCKS NUMBER INCREMENT_BY NUMBER USER_BYTES NUMBER USER_BLOCKS NUMBER ONLINE_STATUS VARCHAR2(7) 所以这个问题的分析就告一段落。所以这些细节真是很折磨人,最近和bug比较有缘,总是有意无意会碰到。

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes),作者:杨建荣

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-01-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • DBA和开发同事的代沟(二)(r7笔记第18天)

    参考:DBA和开发同事的一些代沟(一)(r7笔记第17天) 有些朋友给我反馈了他们遇到的小故事,我后续再整理整理,看看有多少。 我还是继续来分享我这边碰到的一些...

    jeanron100
  • 性能下降的不定时炸弹_过旧的sql_profile(r3笔记第9天)

    最近这一周以来,生产环境像是得了重病的病人一样,小问题没有修好,大问题不断。IO的等待极为严重。数据库的负载达到了几十倍,上百倍。 weblogic和tuxed...

    jeanron100
  • 浅谈pl/sql (r3笔记第14天)

    关于pl/sql,可能大家熟悉而又陌生,熟悉是因为大家在工作中老是写sql,如果稍微改动一些,加入begin,end和控制结构,就是pl/sql了。:) 今...

    jeanron100
  • Python链接数据库,SQL语句查询这样操作!

    Python链接数据库的方式有几种,但是原理都是一样的,总共可以分为两个步骤,第一步是与数据库建立链接,第二步执行sql查询语句,这篇将分别介绍如何与数据库链接...

    用户2769421
  • MyBatis系列第1篇:MyBatis未出世之前我们那些痛苦的经历

    MyBatis系列目标:从入门开始开始掌握一个高级开发所需要的MyBatis技能。

    路人甲Java
  • Python连接数据库,SQL语句查询这样操作!

    Python链接数据库的方式有几种,但是原理都是一样的,总共可以分为两个步骤,第一步是与数据库建立链接,第二步执行sql查询语句,这篇将分别介绍如何与数据库链接...

    1480
  • JDBC的基本使用流程

    JDBC的基本使用流程: 1 导入jar包: 导入ojdbc6.jar,在项目上右键 builder path–>add to builder path. ...

    葆宁
  • sql格式化工具

    该工具支持oracle、mysql、sql server等关系型数据库,能让你看到sql美化后的清晰的结构,可运用于对复杂SQL语句的分析或者是程序代码优化上,...

    ixiaoyang8
  • 第33次文章:SORM框架(三)

    本周将SORM框架的基本功能已经全部填充起来了,形成了SORM框架的1.0版本,有兴趣的同学可以通过下面的链接获取源码哟!下周将进入SORM框架的升级阶段,在现...

    鹏-程-万-里
  • python实现一次性封装多条sql语句(begin end)

    因为业务需求,优化模型运行时间。考虑到sql语句每一次执行都要建立连接,查询,获取数据耗时过多。就想到将sql一起提交上去运行,能够节省很多时间。原本1.6-2...

    砸漏

扫码关注云+社区

领取腾讯云代金券