. . exporting table BJ_AFFILIATES 37 rows exported
[oracle@ccdevsvr admin]$ exp wmap/pass@jackeydb
在学习Oracle的时候,必然会接触到sql解析的过程。这个过程大体是这样的步骤。 1.对sql的文法检查,查看是否有文法错误,比如from,select拼写错误等。 2.在数据字典里校验sql涉及的对象是否存在。 3.将对象进行名称转换,比如同义词转义成对应的对象。比如select * from t t是一个同义词指向hr.test 4.检查语句的用户是否具有访问对象的权限 5.生成执行计划 6.将游标产生执行计划,sql文本装载入library cache所在的heap中。 这个过程看起来比较容易理解,
今天快下班的时候,有个开发的同事问我一个问题,说他在客户端执行一条sql语句,里面包含子查询,如果单独执行子查询,会报"invalid identifier"的错误,但是整个sql语句一致性就没有错误,而且数据的结果还是正确的,碰到这种问题,想必都是信心满满,越是奇怪越想探个究竟。 为了能够简单说明这个问题,我使用如下下面的语句来模拟一下。 select *from test1_customer where customer_id in (select customer_id from test2_c
如果抛出一个问题,你是如何理解MySQL解析器的,它和Oracle解析器有什么差别?相信大多数同学都会比较迷茫,因为这个问题很难验证,要不是看源码,要不就是查看书上是怎么说的,其实这两种方法对我们去理解这个问题来说不是很合适,如果能够通过实践来做下理解就好了。
一般情况下,标识符错误是因为:语句中的列名在表中不存在,修改sql语句或者修改列名即可。
本来今天想继续写另一篇外传,但总是熬这么晚不是个事儿,况且今儿北京又输了,恨铁不成钢,堵得慌。。。
参考:DBA和开发同事的一些代沟(一)(r7笔记第17天) 有些朋友给我反馈了他们遇到的小故事,我后续再整理整理,看看有多少。 我还是继续来分享我这边碰到的一些小插曲,这些除非你确实碰到,想遍出来还着实需要想象力。 和开发的博弈 在Oracle中有资源管理的概念,其中一个功能就是设置每个用户可以使用的session数,即sessions_per_user,这个设置通过profile来完成。 一般的线上库都还是有一定的配额设置,保证不会出现过量的资源使用情况,这一点也和开发达成了共识。如果违反了共识,那就需要
某物化视图在增量刷新的时候报错ora-00920,尝试全量刷新的时候,报错ora-00904。
最近负责搭建某系统的用户环境,其中涉及从测试环境导入数据,由于受客观因素制约,不能使用传输表空间方法同步,因此需要用imp/exp或数据泵的方法,这里采用的是imp/exp。下面记录操作过程中碰到的问题。
C:\Documents and Settings\noah>exp system/pd0000@orcl file=d:\data.dmp wner=dev log=d:\log.log
经常会碰到开发人员给出这样的SQL脚本,如下所示,其中表名、字段名,都带了双引号,
主题:EXP导出aud$报错EXP-00008,ORA-00904 解决 环境:Oracle 11.2.0.4 问题:在自己的测试环境,导出sys用户下的aud$表报错。
1.知识点:可以对照下面的录屏进行阅读 SQL> --组函数类型:avg,count,max,min,sum SQL> --工资总额 SQL> select sum(sal) from emp; SQL> --员工人数 SQL> select count(*) from emp; SQL> --平均工资 SQL> select sum(sal)/count(*) 一, avg(sal) 二 from emp; SQL> --平均奖金的三种方式:二三方法一样,一方法不一样; SQL> select
最近有一个同事问我一个问题,说他运行一个SQL语句抛出了ORA-00600的错误,想让我帮忙分析一下,这种问题听了确实有兴趣,了解了问题的大体情 况之后,发现这个问题还是值得分析分析的,因为只是客户端调用抛出异常,没有给服务器端带来什么致命的影响,这样的问题还是很耐人寻味的。 简单沟通后,我得到了同事提供的SQL语句和执行环境,语句类似下面的形式: MERGE INTO (SELECT * FROM TEST_SERVER_LOG WHERE BUY_TIME>=TO_DATE(:1 ,'YYYY-
今天处理了几件事情,有几件还比较有意思,我拿出三件来说说。 首先是早上有一个同学打电话求助一个问题,给我的反馈是他们目前有一个表,数据量越来越大,目前数据插入变得很慢。想问问我该怎么分析。对于这个问题,听 起来还是有些模糊,稍后想他明确了数据库是10gR2的版本。至于他说的数据量是很大,目前是百万数据量,其实还可以了,不算很大,那么他说的速度很慢, 到底有多慢,是1秒钟变为2秒钟还是更大,他说大概有30秒。 通过这个问题,可以简单猜想能让insert很慢的场景其实还是比较少的,至少对于增量数据的插入这一点上
expdp/impdp是10g推出的导入导出工具,9i下是没有该工具的,有人提议用10g的expdp,通过dblink导出9i的数据,乍一听感觉是那么回事,但究竟行不行,咱们实验说明。
今天下午的时候得到反馈,说开发在导入一个dump的时候报了错误,他们尝试连接数据库,发现连接都有问题,让我们赶紧看看。 这是一个测试环境的库,在服务器上同时还跑着十多个数据库不同应用的数据库实例。 > sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon May 25 14:28:50 2015 Copyright (c) 1982, 2011, Oracle. All rights reserved. ERROR: ORA-
本文作为概要,包括如何定位SQL问题、SQL相关的问题类别以及诊断SQL性能问题需要的相关信息。
我将A服务器下的导入B服务器时其中一个表出现以下错误,出错误后我单独将这个表导出,然后导入。B服务器下已有T_CALLREORDS表,并且已有新数据,T_CALLREORDS有外键约束T_USER表。我的语句如下C:UsersAdministrator>imp gxcfkefu/gxcfkefu full=y file=e:/gxcf_T_CAL…显示全部
SELECT cust_id, cus_ last_name "Last Name"
最近同事报料,数据库无法执行一些关于数据字典的查询。即使是查询dba_users都会出现错误。从错误日志来看,全部是数据字典的一些错误信息,而用户数据还是ok的。Google了一下,看了看metalink,需要重建数据字典。那就执行catalog.sql吧。晕,竟然连执行这个SQL语句都报错!数据没有备份呢,汗!!! 如果你也是无法成功执行catalog.sql,接着往下看。
Oracle 9i执行Stackpack(10g是AWR),当前是一个普通账户,没有DBA权限。
同事前几天问到exp/expdp根据条件导出一张/多张表数据的问题,借此机会,依次对这些需求做个实验,仅供参考。
exclude和include参数能够在使用expdp或impdp是对特定的对象或对象类型进行筛选或过滤。比如因工作的需要导出特定的表或不导出特定 的表、视图以及存储过程、索引、约束、授权统计信息等等。下面将给出expdp或impdp使用exclude和include参数的方法和示例。
同一台机器上,其中一个备份正常 <1>,另外一个报错 <2>。同一台机器上导出日志显示的版本居然不一样,哪个高人给指点下。
在Oracle中,有一类特殊的索引,称为函数索引(Function-Based Indexes,FBI),它基于对表中列进行计算后的结果创建索引。函数索引在不修改应用程序的逻辑基础上提高了查询性能。如果没有函数索引,那么任何在列上执行了函数的查询都不能使用这个列的索引。当在查询中包含该函数时,数据库才会使用该函数索引。函数索引可以是一个B-Tree索引或位图索引。
因为业务需要,有个临时的活动需要DBA来支持一些数据业务,问题来了,需要从MySQL端同步一部分数据到Oracle端,然后从Oracle端匹配查 到相应的数据返回给MySQL,至于原因,也是不同的业务系统,不同的权限分配,还没法做到一个应用端去读取这些信息,而且也有安全的考虑,大体就是两部 分的数据也是互相补充,但又彼此独立,是一个全集和子集的关系。 这个流程本来从开发的角度来看似乎是一头雾水,所以交给他们来规划就容易出现问题,最后沟通后的流程是下面的形式。 下面这个图左边是Oracle的环境,右边是MyS
C:\Documents and Settings\Administrator>exp [email protected]_db file=E:\lsxy.dmp owner=lsxy
说起数据类型转换,在开发中如此,在数据库中也是如此,之前简单对比过MySQL和Oracle的数据类型转换情况,可以参见MySQL和Oracle中的隐式转换 http://blog.itpub.net/23718752/viewspace-1787973/ 不过当时写完之后,有个读者随口问了一句为什么,为什么呢?似乎自己还是一知半解,说是规则,无规矩不成方圆,倒也无可非议,不过我觉得还是要再看看,看看还能有哪些收获,接下来的内容我就不能保证正确性了,希望大家明辨,也希望提出意见,毕竟就是希望把问题搞明白而已。
ORA-00904: "wm_concat":invalid identifier错误如何解决?
null值也不支持 加减乘除 大小比较 相等比较,否则只能为空。 对于其他函数,在使用时最好测试一下null值时会返回什么结果。
系统中一些常用的监控都可以使用DDL触发器和系统触发器来实现。可以先创建一张记录DDL语句的表XB_AUDIT_DDL_LHR(由于该表记录数会很大,所以,需创建成按月自动分区的分区表),并创建合适的索引,然后创建存储过程用于插入DDL信息到该日志表中。最后再创建系统触发器就可以将DDL语句或系统事件的信息插入日志表中。下面详细说明DDL触发器和系统触发器的使用。
编辑手记:年底大家最关注数据安全,之前我们说过,数据库的风险分为外部风险和内部风险。外部风险无法预估但概率较小,平时发生最多的还是内部操作的风险,因此合理控制权限就非常重要。本文节选自《循序渐进Oracle》 正文 当一个员工被一个公司录用,要想进入公司通常你还需要得到授权,授权可能是一张ID卡或是一个工作证,当然在没有得到充分的信任之前,你能得到的权限可能还非常有限,在不断的工作和努力之后,你的权限可能会逐步提高,你可能可以翻阅公司的机密档案,还可能被授权打开公司的保险柜,然后你就可以……Ok,到这里打
今天遇到一个 OceanBase 数据库下 Oracle 租户的 PLSQL 分隔符问题,特来分享下。
1.知识点:可以对照下面的录屏进行阅读 SQL> --子查询所要解决的问题:问题不能一步求解 SQL> --查询工资比SCOTT高的员工信息 SQL> --(1)使用普通方法 SQL> --1. SCOTT的工资 SQL> select sal from emp where ename='SCOTT'; SQL> --2. 查询比3000高的员工 SQL> select * 2 from emp 3 where sal>3000; SQL> --(2)使用子查询 SQL> select *
那有没有更好的办法,其实在主语言中,这不过就是个分支语句的事情嘛,奈何SQL语言我不熟啊。。。
今天碰到一个Oracle 19.7 SYSAUX表空间暴增的的情况,记录下处理的过程。
客户的测试环境已经从10g升级到11g了。但是没过几天,数据hang住了,登都登不了了,而且通过sys,system,普通用户连接的错误都不一样 首先通过 一下命令来查看变量和进程是否都正常 ps -ef|grep smon echo $ORACLE_SID 没发现问题 --使用sys,显示连接到一个空实例 sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Tue Aug 13 14:51:25 2013 Copyright
朋友前两天问到ORA-00060错误的解决,首先,这种错误都是因为应用设计导致的,当不同的会话处理同一张表的不同行,或者不同表,或者不同事务的时候(这是比较复杂的),如果出现处理次序的交叉,Oracle就会检测到,进而对其中一个会话抛出ORA-00060,强制回滚,释放锁资源,并将相关信息,写入跟踪文件,Oracle的这种设计,既进行了自恢复,而且记录了相关的信息,便于问题跟踪,值得我们借鉴。
Oracle的STS(SQL Tuning Set)是一个种用于保存需要优化的SQL和相关信息的数据库对象。这里介绍一下它的使用方法。
为了及时共享行业案例,通告共性问题,达成知识共享和提前预防,我们整理和编辑了《云和恩墨技术通讯》(8月刊),通过对过去一段时间的知识回顾和故障归纳,以期提供有价值的信息供大家参考。 同时,我们也希望能够将热点事件、新的产品特性及其他有价值的信息聚集起来,为您提供具有前瞻性的支持信息,保持对于当前最新的数据库新闻和事件的了解,其中包括重要数据库产品发布、警报、更新、新版本、补丁等。
最近index job出现失败,于是尝试手动执行试试。收到了ORA-00054的错误消息。
关键字:Optimizer Statistics Advisor,统计信息 ,ORA-20001 ,ORA-4036,AUTO_STATS_ADVISOR_TASK
④ 此时你在查看该表,可以发现表名已经被修改,同时comm字段也被删除了;
今天早上收到邮件,说有一个很紧急的问题,是关于sequence的。 错误日志里面还有ORA的错误 ----- ... 7 more Caused by: java.sql.SQLException: ORA-08004: sequence TRX_1SQ.NEXTVAL exceeds MAXVALUE and cannot be instantiated 猛一看就是sequence的值越界了。 导致这个问题的原因主要有两个: 1)设置的maxvalue值过小了。 2)sequence
在平时的调优工作中,在11g中的新特性sql monitor可以极大的简化性能监控的工作,对于执行时间超过5秒的sql语句都会记入v$sql_monitor中。 但是如果某个sql语句还没有执行,或者执行时间已经是几天前了,等发现性能问题进行调优的话就会比较困难,采用dbms_advisor.quick_tune是一个不错的选择。如果sql语句比较庞大,比较迷茫的时候至少可以得到一些很重要的思路。 举个简单的例子。 创建一个表t create table t as select *from all_ob
这几天开发同学反映了一个问题,有一个Java写的夜维程序,用于每天定时删除历史过期数据,3月10日之前经过了内测,但这两天再次执行的时候,有一条SQL语句一直报ORA-01752的错误,由于近期做过一次开发库的迁移,从一个机房搬迁至另一个机房,而且开发同学确认这期间未变代码逻辑,所以怀疑是否和数据迁移有关,这个错误被测试同学提为了bug,卡在版本测试中,有可能造成进度延误,所以属于比较紧急的问题。
英文解析:resource busy and acquire with NOWAIT specified
领取专属 10元无门槛券
手把手带您无忧上云