oracle12c新特性之APPROX_COUNT_DISTINCT函数
oracle 12c新特性之APPROX_COUNT_DISTINCT函数在进行sql优化时经常要统计某一列不同的值的个数,进而计算该列的选择性。但是在表体量很大,并且列上又没有索引时,count(distinct column)经常要花费很长的时间。12c提供了一个近似去重的新函数approx_count_distinct。这个函数的返回值是不准确的,不统计null值,但是胜在速度快。SQL&g
oracle数据泵导入遭遇bug记录
下午收到了一个导数据的需求,一张表,20多万数据,小case,却遇到了问题。关键报错:ORA-39097 ORA-39065 ORA-01427 ORA-39126 ORA-06502 LPX-00225导入语句:impdp "'/as sysdba'" directory=DATA_PUMP_DIR dumpfile=NCHATTAG1.dmp logfile
oracle查找一段时间内的非绑定变量的sql
查找一段时间内的非绑定变量sql的方法v$SQL动态性能视图中的FORCE_MATCHING_SIGNATURE列,可以帮助我们快速定位到非绑定变量的sql。该列的含义是"The signature used when the CURSOR_SHARING parameter is set to FORCE".意思就是如果将CURSOR_SHARING参数设置为force,sq
oracle18c&&12c新特性之alter system cancel sql
alter system cancel sql 'sid,serial#';这条命令是oracle 18c的新特性,但是实际上12c里面就已经存在了。这条命令可以终止某条sql的运行,类似手动Ctrl+C。与kill会话是不同的。kill session是修改session的paddr进程地址,多个session被kill的话,这些session的paddr会被标记为同一个。这条命
oracle12c之表级别恢复
oracle12c之表级别恢复表/表分区级别的恢复存在如下限制:1.SYS用户下的表/表分区无法进行恢复。2.SYSTEM/SYSAUX表空间中的表/表分区无法进行恢复。有的文章说带有非空约束的表在用remap参数时无法恢复,12.2亲测是可以的。最后有测试结果。创建表SQL> sho user con_nameUSER is "MING"CON_NAME--------
oracle优化之改写exists降低逻辑读
通过将exists改写成in或这inner join优化sql。Sql_id:056bs9dzz8mwy问题简述:逻辑读高。Sql文本:SELECT A.*, a.rowid FROM WBANK.WD_BANK_BASEINFOMATION A WHERE EXISTS (SELECT 1
oracle基于增量备份解决dataguard gap问题
Dataguard alert日志中报错:2018-07-31T18:10:11.540837+08:00Primary database is in MAXIMUM PERFORMANCE modeRFS[6]: Assigned to RFS process (PID:18880)RFS[6]: No standby redo logfiles ava
一则oracle 12c的bug问题解决过程记录
一套新安装的12c的主库和dataguard库中发现alert日志报错:2018-07-30T22:04:17.522506+08:00Non critical error ORA-48913 caught while writing to trace file "/opt/app/oracle/diag/rdbms/mingdb_dg/mingdb_dg/t
oracle sql优化之 not in子句包含null返回结果为空的研究
开发人员说一条sql说没有返回值,但是子查询和外部单独执行,能看到有结果集,我在解决这个问题的时候发现了一个关于null的很有意思的问题。现在还原整个过程。 简化后的sql本质实际上是很简单的一条,这里就不贴了,实验环境直接还原过程: 创建测试表:create table t_dept as select * from scott.dept;create tabl
oracle自动收集AWR报告脚本(for 11g && 12c)
AWR报告收集过程需要进行交互,有的数据库收集频率是15分钟,范围大了之后寻找snap id是一件非常头痛的事。所以我用shell写了一个自动收集AWR的脚本。脚本在11个和12c都可以使用。本来想构造函数进行迭代判断时间的合法性的,但是后来觉得自己管理的数据库收集频率自己应该清楚,而且输入的时候尽量输入15min的倍数是不会有什么问题的,不用花太多
oracle sqlloader导入时报ORA-01830解决过程
目标:将/home/oracle/xfsqlldr.csv导入到新建的CHOICE.T_LOAN_ANNUAL_CUSTNO表中。新建表:create table CHOICE.T_LOAN_ANNUAL_CUSTNO(LOANNO VARCHAR2(200) ,FUNDCUSTNO VARCHAR2(200) ,DATEDATE DATE ,DATETYPE
oracle 异步IO简述
在同步IO中,线程启动一个IO请求之后就进入等待状态,知道IO结束后线程才结束等待,转而去处理其他请求。异步IO将IO请求发送到内核后就不管了,无需等待IO操作完成,就去处理其他事情了。异步IO可以提高性能。但是显而易见的是对磁盘处理IO能力有较高要求,否则提交的处理请求多,处理能力跟不上,根本无法达到提高性能的要求。异步I
oracle检查scn headroom的正确方法
oracle12c新特性之异步全局索引维护
异步全局索引维护这是oracle12c的新特性。之前drop分区或者truncate分区的时候,会使得全局索引不可用,update indexes和update global indexes虽然可以维护索引的可用性,但是索引的维护是当时立刻发生的,业务高峰时刻会争夺性能。全局索引的异步维护就可以解决这个矛盾点。配合update索引的语句,表中的数据会当时就删...
模拟enq: TX – allocate ITL entry以及数据块dump文件分析
ITL的含义ITL,即Interested Transaction List,也就是事务槽,是一种数据块的内部结构,它位于数据块头中。当对数据块做修改的时候,进程需要获取一个空的事务槽。ITL事物槽由槽位号、XID、Uba、Flag、Lck、Scn/Fsc组成。ITL的个数是由参数initrans控制,maxtrans参数已经被废弃。默认initrans值是1,但是实际...
vertica使用vsql导数据
vertica用vsql导出数据要导出的表:dbadmin=> select count(*) from test.t1; count ------- 9998(1 row)dbadmin=> select * from test.t1; id | name | b ------+----------+--- 1 | mingshuo | 2 | mingshuo | ...
vertica数据库copy命令实现数据加载
vertica数据加载创建外部数据文本:[dbadmin@verticatest ~]$ for((i=1;i<10000;i++))> do> echo "$i,mingshuo">>0629.txt> done修改不满足格式数据sed -i 's/9998/ms/' 0629.txt[dbadmin@verticatest ~]$ tail 0629.txt 9990,mingshuo9991,mingshuo9992,mingshuo9993,mingshuo9994,mingshuo9995,mingshuo...
oracle11g模拟OCR和voting disk损坏恢复实验
1.检查ocr备份[root@rac1 ~]# ocrconfig -showbackupPROT-24: Auto backups for the Oracle Cluster Registry are not availablerac1 2018/06/24 01:56:51 /tpsys/app/11.2.0/grid/cdata/rac-cluster/backup_20180624_015651.ocrrac1 2018/06/24 01:55:41 /t...
oracle分区交换(exchange)技术
分区交换技术可以实现数据快速转移,所以在数据加载提速,历史数据清理等方面特别有用。分区交换技术实际上只修改了数据字典中的数据物理段位置,而不是实际的移动数据,所以速度很快。 创建分区表: create table t_exchange ( sno number not null primary key, oitime date DEFAULT sysdate, word varchar2...
oracle sql优化之基数反馈(Cardinality feedback)问题
开发突然说一条sql执行的巨慢无比,大概要不到20分钟才能出来,需要紧急优化一下。 Sql_id: a491fmrds02ra处理过的Sql文本:SELECT ...