Stored Outline
存储概要(stored outline) 是固定执行计划的一种传统技术。在Oracle 11g以前要固定执行计划只能使用outline,Oracle11g中引入了SPM来固定执行计划,创建stored outline需要有create any outline权限,为了管理还需要有对dba_outlines的查询权限。创建stored outline在会话级outlineALTER SESSION SET CREATE_STORED_...
dbms_outln.create_outline在10.2.0.5中创建outline所包含的执行计划并不正确
Oracle 10g中想要固定执行计划只能使用outline,sql profile不能起固定sql执行的效果,但是在Oracle 10.2.0.5中使用dbms_outln.create_outline通过使用共享池中的游标来创建outline,发现创建的outline与游标中的执行计划并不一致,而在oracle 10.2.0.4与oracle 11.2.0.4中是通过游标来创建的outline与cursor的实际执行计划...
Query Using Bind Variables Suddenly Starts to Perform Slowly
有时SQL语句在没有明显原因的情况下,突然变得执行缓慢,SQL语句所引用的对象的统计信息,对象数据,SQL都没有改变。SQL语句的游标由于某些原因生成了新的执行计划。出现这种情况的原因至少为以下一种:.数据库重新启动.由于任何原因游标没有被使用,并且因为LRU算法被aged out.SQL语句所引用的任何对象的统计信息发...
使用 DBMS_SQLDIAG诊断各种查询问题
这篇文章主要介绍通过dbms_sqldiag来解决与SQL相关的各种问题。dbms_sqldiag是与标准版本数据库软件一起发布,使用它并不需要额外的许可。dbms_sqldiag可以用于以下问题类型的诊断:.problem_type_performance 怀疑是性能问题.problem_type_wrong_results 怀疑查询返回了不一致的结果.problem_type_compilation_error ...
Oracle Column Group Statistics
基数是CBO通过行资源或行资源组合评估出来的操作将产生的行数。在有些情况下,结果集的基数可能被评估错误。最常见的是使用复杂谓词且统计信息不能精确反映出谓词相关联的数据。例如:select ename from emp where sal >= 25000 and job = 'PRESIDENT';在这个例子中,在sal与job列中的数据存在一种隐藏的关联。只有董事长...
Automatic SQL Tuning and SQL Profiles
SQL Profiles是在Oracle 10g中就引入的,并且通过dbms_sqltune包或EM来进行管理是自动SQL调整进程的一部分。自动SQL调整查询优化器会有时会因为缺少信息而对语句的一个属性产生不精确的评估,进而导致低效的执行计划传统上来说,用户不得不通过手动增加hint到代码中来修改这个剖从而指导优化器产生正确的决定。对于...
SQL Plan Management
任何数据库应用程序的性能都严重依赖于它的查询执行。当没有任何用户介入时Oracle优化器是完全能够评估最优执行计划的,SQL语句的执行计划因为各种原因,比如:重新收集优化器统计信息,改变优化器参数或方案/元数据定义而可能会出现改变。但是不能保证执行计划的改变总是会提高性能,因此会导致有些管理员会锁定SQL的执行...
dbms_sqltune.create_stgtab_sqlset需要注意的问题
今天在使用dbms_sqltune.create_stgtab_sqlset来创建staging table时由于表名使用的是小写,发现创建之后,并不能查询到该表,但通过视图进行查看发现又确实存在这个表,这个问题在oracle 10.2..0.5与11.2.0.4中都存在,其它的版本没有测试过。SQL> exec dbms_sqltune.create_stgtab_sqlset(table_name => 'stgtab_...
logminer来恢复在表DDL之前被删除的数据
做这个测试是因为前同事(开发人员)在客户现场做维护误删除了一张表的记录,但在删除表之后修改了表的结构(修改了字段的精度),发现误删除记录后,想通对表执行闪回查询来恢复被删除的记录发现不能闪回了,因为表结构发现了修改(ORA-01466: unable to read data - table definition has changed)。而且这个数据库没有备份...
How restore CBO statistics
从Oracle10g开始,当对一个表收集统计信息时,旧的统计信息会被保留了,因此当出现新收集的统计信息引起性能问题时,可以还原旧统计信息。缺省情况下统计信息会被保留31天,但可以执行execute DBMS_STATS.ALTER_STATS_HISTORY_RETENTION (days)来进行修改,days为你所指定的天数。SQL> select DBMS_STATS.GET_STATS_HIS...
opatch auto将11.2.0.4 rac升级到11.2.0.4.160419
之前执行patch都是选择手动执行,由于有升级需求,所以测试一下patch auto方式一.生产环境1.数据库环境操作系统版本 : RedHat 5.4数据库版本 : Oracle 11.2.0.4 RACGrid : 11.2.0.4Oracle database: 11.2.0.42.准备内容GI PSU : p22646198_112040_LINUX.zipOPatch : p6880880_112000_Linux.zip二、更新OP...
Linux 格式化分区 报错Could not stat /dev/sda3 --- No such file or directory
执行分区过程如下:[root@jyrac2 ~]# fdisk /dev/sdaThe number of cylinders for this disk is set to 3002.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and...
使用dbms_transaction来获得事务ID
一般找出当前事务ID与回滚段最常见的方法就是执行以下SQLSQL> select xidusn, xidslot, xidsqn from v$transaction, v$session where saddr=ses_addr; XIDUSN XIDSLOT XIDSQN---------- ---------- ---------- 6 27 9338而最简单与最容易的方法是使用dbms_transaction PL/SQ...
Oracle Database Service
数据库服务(Database Services)数据库服务是表示一个或多个数据库实例的命名方式。服务能让你组合数据库工作负载并将一个特定的工作请求分发到一个合适的实例。一个数据库服务代表了一个单独的数据库。这个数据库可以是单实例数据库或者RAC数据库。一个全局数据库服务通过数据复制的多数据库同步机制来提供服务。数...
Oracle的并行
当我们要在操作中处理大量数据,比如全表扫描大表或者创建一个大的索引,可以将这个工作通过使用多个进程来分成多个小任务来完成,这就叫作并行执行或者并行处理。并行执行当要访问大量数据时能够减少响应时间,但不是任何时候并行执行都比串行执行快。并行执行在以下情况下是非常有用的:查询要使用大表扫描,连接或分区...
位图索引
常规的B树索引对包含每行记录的ROWID与索引键值。位图索引不会直接存储ROWID,每个不同的键值都有一个位图,这就是为什么创建位图索引的列要有较少的distinct值的原因。位图中的每一位映射到一个可能的ROWID,位图中每一位的特定值代表是否存在有价值的记录,因此位图中存储了关于特定行和相关的ROWID。如果ROWID的值与条...
Linux 11G RAC启用HugePages与AMM的禁用
HugePages是集成到Linux kernel 2.6中的一个功能。启用HugePages可以使用操作系统来支持比缺省的内存页(4KB)更大的内存页。使用非常大的内存页大小可以通过减少访问页表条目所需要的系统资源数量而提高系统性能。HugePages对于32位与64位系统都是有效的。HugePage的大小范围从2MB到256MB,依赖于内核版本和硬件架构。对于...
Oracle 11g RAC跨实例控制并行
在Oracle 10g RAC中的并行执行是由两个参数来控制的:instance_groups和parallel_instance_group这两个参数在Oracle 10g RAC中必须同时设置。instance_groups可以有多个值但是静态值,parallel_instance_group可以在系统级别与会话级别进行修改。在Oracle 10g RAC中,为了使用并行执行需要设置parallel_instance_g...
Oracle 10g RAC跨实例控制并行
在Oracle 10g RAC中的并行执行由两个参数:instance_groups和parallel_instance_group来控制。并且这两个参数必须同时使用才能生效。instance_groups可以设置多个参数值,但它是静态参数,parallel_instance_groups可以在系统级别和会话级别运态进行修改。在Oracle 10g RAC中,为了让并行执行可以在设置了parallel...
Oracle 11.2中控制并行的新参数
在Oracle 11.2中引入了几个新的并行查询参数。对于数据仓库应用来说经常利用并行处理来快速有效地处理信息,尤其是查询非常大的表或加入了复杂的算式更应该使用并行查询。在Oracle之前的版本中,我们不得不或多或秒的来决定自动并行度。决定一个最佳并行度是非常困难的。真实最佳并行度依赖于数据块在磁盘上的物理位置以...