批量插入数据时主键冲突的处理
客户有这样一个需求:有一个大表A,有主键,经常需要往这个表中批量插入大量数据,但插入的数据可能自身重复或者跟表A重复。下面测试几种插入的方法:DB:ORACLE 11.2.0.4新建测试表:新建表scott.tb_01create table scott.tb_01 as SELECT level c1,level c2,level c3 FROM DUAL...
oracle实用sql(15)--查看SQL执行计划的顺序
Adrian Billington提供了一个xplan.sql在dbms_xplan.display_XXX的基础上增加了执行计划的顺序号,这个对于分析特别复杂的执行计划有时会派上用场。如果只想简单一点看一下执行计划的顺序,我们可以参考xplan.sql中build_order_map过程的排序SQL实现。查看SQL的执行计划+执行计划顺序:with sql...
oracle ora-60 deadlock发生在多个会话的情况
ora-60错误可以发生在两个会话之间,即两个会话之间互相持有一个对方等待的资源(A deadlock occurs when a session (A) wantsa resource held by another session (B) , but that session also wants a resourceheld by the first session (A). )。如果几个会话之间的资源争用是环形,这也是...
oracle存储过程中authid current_user和authid definer
DB Version :11.2.0.4用户system:create or replace procedure p_test asbegin dbms_output.put_line(v_count);用户system授权scott有执行这个存储过程system.p_test的权限。用户scott:beginend;ORA-00942: table or view does not exist...
oracle自动化同步两库用户的统计信息
一些测试需求,需要同步两库用户的统计信息,例如需要生产环境的统计信息同步到测试库,可以通过dbms_stats下的包export_*/import_*配合dblink来实现。以下举例:DB VERSION:11.2.0.4源库:ct6601目标库:ct6602步骤1:源库,新建用于导出用户统计信息的表begin dbms_stats.create_...
通过dbms_backup_restore修改oracle的dbid
某些应用场景需要修改oracle的dbid,oracle自带的nid工具可以修改dbname,产生新的dbid,但不能直接指定dbid。通过跟踪nid的执行过程,发现它主要是调用了dbms_backup_restore下的存储过程,而dbms_backup_restore.nidbegin是可以指定新的dbid的。跟踪的方法:--测试前请做好备份1.关闭数据库...
oracle实用sql(14)--查询分区表的分区列和子分区列
SELECT * FROM (SELECT B.OWNER, B.TABLE_NAME, B.PARTITIONING_TYPE, &nb...
oracle实用sql(13)--并发简单模拟
1.准备并发测试的内容create or replace procedure p_task isbegin for i in 1 .. 5000 loop for j in (select * from scott.emp where empno=7369) loop null; end loop; end loop;end;2.通过JOB的形式实现并发--JOB的并发度依...
oracle实用sql(12)--查询数据是否在某个用户下各个表的各个列
--存放用户的用户名,表名,列名,列类型,批次号(表中50个列分一个批次)。owner根据自己的需求改--drop table tb_all_columncreate table tb_all_column as select owner, table_name, column_name, data_type,trunc(row_number() over (partition by owner,table_name order by 1)/50) lot from dba_tab_c...
ORACLE通过BIND_AWARE+SQL PATCH解决SQL绑定变量中数据倾斜的问题
绑定变量在OLTP系统中是解决硬解析问题的有利手断,但如果某SQL使用的索引中过滤字段存在数据倾斜(数据分布不均匀)的问题,就可能造成数据库性能异常。从Oracle 9i引入的BIND PEEK不能解决这个问题,因为bind peek只是发生在第一次硬解析;从11G引入了ACS(adaptive cursor sharing)...
Oracle安装Patch相关笔记
Patch Set是在大版本上来修复多个bug的补丁集,例如11.2是一个大版本,11.2.0.4就是一个Patch sets。PSU(Patch Set Updates)是Oracle比较推荐的补丁更新集,包括了CPU以及一些影响比较严重的补丁。例如11.2.0.4.x就是一个PSU。它有RDBMS PSU和GI PSU,GI PSU中包含了RDBMS PSU。CPU(Critical Patch Update)/SPU(Securi...
ORACLE 通过SPM为SQL语句加HINT
一个SQL,通过SPM固定它的执行计划,可以通过DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE实现。也可以通地此功能在不修改原SQL的情况下对其加HINT来固定执行计划。DB VERSION:ORACLE 11.2.0.4OS:CENTOS 6.6例如:原SQL走索引:SELECT * FROM SCOTT.TB_SPM WHERE OBJECT_ID=10;想通过加HINT让其走全表扫描:SELECT /*+...
Oracle 物化视图快速刷新对性能的影响
一个表上存在物化视图日志和基于物化视图日志快速刷新的物化视图,如果对这个表进行DML操作,则Redolog产生量将翻数倍,并且执行时间加长,影响并发操作。下面主要通过在Redolog产生量和执行时间上做对比:DB Version:12.1.0.2.0OS:CentOS 6.6[oracle@ct6603 ~]$ sqlplus system/systemSQL*Plus: Release 12.1.0.2....
oracle update操作的优化一例
客户的每小时redolog日志量大,配合AWR和LOGMINER检查发现是由一条update语句引起。这条语句大概每小时执行80次左右,不仅产生了大量的重做日志,而且逻辑读也很高。 语句类似update tb_test_log set object_id=1 where owner='SYS',是对表tb_test_log按一定的频率,把满...
Oracle文档转载 博客
http://blog.itpub.net/31393455/
通过STANDBY数据库实现读写分离时索引过多的问题
ORACLE 11G的物理STANDBY数据库可以只读打开并实时应用,可以满足很多应用更改为读写分离的架构。但业务上将主库主要做DML操作,备库上做SELECT操作,可能存在的一个问题就是,备库上的SELECT可能需要大量的索引,而这些索引在主库上实际是没有意义的,并且还影响主库DML操作的性能和日志量。但物...
ORACLE SQL过滤条件是IS NULL or !=的优化
通常情况下is null或者!=这些条件如果不是具有很强的过滤性,可以先关注其它的过滤条件。但有些SQL这两种条件具有很强的过滤性,就可以考虑用以下方法。下面先讨论is null的优化,再讨论!=的优化,最后讨论is null or !=一起使用的优化。以下测试:oracle version:11.2.0.4#新建测试表create table scott.tb_s...
普通索引转HASH分区索引报ORA-01408
ORA-01408:such column list already indexed问题的原因是当新建一个索引时,索引对应的字段和字段顺序和已经存在的索引相同。 最近一个需求,是将主键索引转成HASH分区的主键索引,需要新建一个索引,然后将现有的主键索引去掉。如果直接新建...
oracle dataguard 备库参数db_file_name_convert/db_create_file_dest注意事项
在dataguard的配置中,db_file_name_convert/log_file_name_convert是比较常用的参数。如果备库中参数db_create_file_dest未设置,则数据文件路径转换是由参数db_file_name_convert决定。但如果参数db_file_name_convert和db_create_file_dest都设置时,要注意:测试环境:oracle version:11.2.0...
oracle实用sql(11)--收集一周各时段的load profile
工作中需要对近一周每小时的db time,db cpu,logical read,physical read,transactions等信息做成EXCEL图表的形式,如果这些数据从awr报告中一个一个产生来收集就有些浪费时间了.可以通过以下查询,直接获取数据库各实例中按默认快照间隔的load profile,然后将查询...