Search results for: “sql profile”

  • SQL 自动调优以及 SQL Profile (Doc ID 2331566.1)

    适用于:   Oracle Database – Enterprise Edition – 版本 10.1.0.2 和更高版本 本文档所含信息适用于所有平台 用途   SQL Profiles 是10g 引入的新特性,它通过 DBMS_SQLTUNE 包来管理,您也可以通过 Oracle Enterprise Manager 的自动 SQL 调优流程的功能来管理。这个 FAQ 回答关于 SQL profile 基本的问题,并且提供了一个使用 DBMS_SQLTUNE 包的例子。   提问,获得帮助,并分享您对于这篇文档的经验。   您是否希望与其他 Oracle 客户、Oracle 员工和业内专家进一步探讨此主题?   请点击这里 进入 Oracle 社区(中文). 请点击这里进入My Oracle Support 社区的数据库安装/升级(英文)主页发现更多的话题和讨论。 问题和答案   什么是自动 SQL 调优?   有时候,因为缺乏相关的统计信息,会导致…

  • Oracle Acs资深顾问罗敏 老罗技术核心感悟:牛! 11g的自动调优和SQL Profile

    作者为:  SHOUG成员 – ORACLE ACS高级顾问罗敏       多年前的一段往事 记得多年以前在一个10g平台的数据仓库项目上遇到一个非常难优化的SQL语句,当时即便我采集了统计信息、甚至在语句中增加了HINT,Oracle产生的执行计划都不如人意。最后,不得不通过SR寻求老外高手的指点,他建议我采用10g刚出炉的一个新技术,即让我为该语句生成SQL Profile信息,然后再执行该语句。一切OK了,太神了! 也记得当时我问老外,以后是不是遇到非常复杂的、优化难度很大的SQL语句,就扔给Oracle,特别是产生一遍SQL Profile来辅助优化器时?鬼子不无得意地回答:“That’s right!”   再次感叹SQL Profile的牛! 若干年之后的2014年,在面对一条将近200行的SQL语句进行优化时,发现该语句执行计划已经基本找不出明显问题,例如既没有全表扫描,也没有全索引扫描,甚至语句的Cost也非常低(当然Cost并不十分准确)。但是语句执行效率并不高,达到30秒,资源消耗也非常高,例如Buffer Gets达到1,246,155次。客户当然不满意,如何进一步优化? 山穷水尽之际,想起了上述多年前的往事,更想起了神奇的SQL Profile技术。于是,在搜索到最新的11g文档《Automatic SQL Tuning and SQL Profiles (Doc ID 271196.1)》之后,照猫画虎般地开练了。效果如何?以下就是优化前后的对比: 这是优化之前的各项指标: Stat Name Statement Total Per Execution % Snap Total Elapsed Time (ms) 30,273 30,272.96 17.76 CPU Time (ms) 29,968 29,968.19 17.79 Executions 1 Buffer Gets…

  • 如何验证SQL PROFILE的性能?

    如何检验sql profile的性能 10g以后的sql tuning advisor(可以通过Enterprise Manager或DBMS_SQLTUNE包访问)会给出对于SQL的建议包括以下四种: 1. 收集最新的统计信息 2. 彻底重构该SQL语句 3. 创建推荐的索引 4. 启用SQL TUNING ADVISOR找到的SQL PROFILE 这里我们要注意的是在production环境中显然不可能让我们在没有充分测试的前提下随意为SQL接受一个PROFILE,因为这可能为本来就性能糟糕而需要调优的系统引来变化。 但是如果恰巧没有合适的TEST环境,而你的SQL PROFILE又可能是性能压力的救命稻草时,我们可以使用以下方法在production环境中局部测试SQL PROFILE,仅在session级别生效:     Oracle Database 12c Enterprise Edition Release 12.1.0.0.2 – 64bit Beta With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create table profile_test tablespace users as select * from dba_objects;…

  • MySQL 5.7在Ubuntu 18.04上重新初始化mysqld –initialize mysqld: Can’t create directory (Errcode: 13 – Permission denied)

    注意在ubuntu上mysqld –initialize ,要配置apparmor,可以通过修改参数文件 vim /etc/apparmor.d/usr.sbin.mysqld, 也可以像我一样直接禁用mysql的apparmor profile。 否则会出现 Can’t create directory (Errcode: 13 – Permission denied) 错误   su – root systemctl stop mysql mkdir -p /d01/mysql #这里重新初始化的目标目录是/d01/mysql chown mysql:mysql /d01 chown mysql:mysql /d01/mysql #一些权限设置 mkdir /var/run/mysqld chown mysql:mysql /var/run/mysqld chown mysql:mysql /var/log/mysql chown mysql:mysql /var/log/mysql/* 修改 /etc/mysql/mysql.conf.d/mysqld.cnf datadir = /d01/mysql 下面 禁用mysql的apparmor profile aa-status…

  • MySQL 5.7在Ubuntu 18.04上移动数据文件目录DATADIR

    注意由于apparmor的存在,以及mysql-systemd-start脚本的影响,导致在Ubuntu上移动MYSQL DATADIR有一些小问题。   步骤0 创建目标目录; 移动数据文件目录,常见的原因有 移动数据到新磁盘或逻辑卷等 例如目标目录路径是 /m01/mysql mkdir -p /m01/mysql chown mysql:mysql /m01 chown mysql:mysql /m01/mysql 步骤1 确认datadir su – root mysql -u root -p select @@datadir; +—————–+ | @@datadir | +—————–+ | /var/lib/mysql/ | +—————–+ 1 row in set (0.00 sec) 关闭MYSQL实例守护进程 systemctl stop mysql 确认状态 systemctl status mysql 步骤2 同步数据文件到新目录 rsync…

  • PostgreSQL 参数列表

    postgres=# SHOW all; name | setting | description —————————————-+—————————————————–+——————————————————————————————————————————- allow_system_table_mods | off | Allows modifications of the structure of system tables. application_name | psql | Sets the application name to be reported in statistics and logs. archive_cleanup_command | | Sets the shell command that will be executed at every restart point. archive_command | (disabled) |…

  • Oracle Acs资深顾问罗敏 老罗技术核心感悟: 11g性能优化新技术: SQL Query Result Cache

      作者为:  SHOUG成员 – ORACLE ACS高级顾问罗敏 第一次听说SQL Query Result Cache这个11g新技术,是在2007年11月的Oracle公司内部11g培训课程中。可能是因为11g新特性太多,而且那次连续几天的培训,被老师轰炸得审美疲劳了,对这个新技术并没有留下太深印象。当时只是感觉Oracle又多了个什么Cache,也没完全弄明白其原理,也不知道与传统Buffer Cache有什么区别,更不知道这个技术适合于什么场景。 待日后有精力再深入研究该技术,特别是结合客户相关实际问题,才猛然发现Oracle这个新技术太牛了!Oracle公司也太富有创新能力了,居然在几十年难得一动的SGA和Shared_Pool内存架构中增加了Result Cache结构,并提供了新的SQL Query Result Cache技术,解决了很多重复查询语句导致资源开销过大的典型问题。 Result Cache到底是什么新技术?如何使用?适合于什么应用场景?… …。希望本章的内容能回答这些问题,更希望您别像我当年一样,仅仅是走马观花地了解一下而已,而是能立马激动起来,并能运用到您的实际应用开发工作中去。呵呵。 Result Cache原理 基本原理 11g出了个SQL Query Result Cache的新特性,简称Result Cache技术吧。其基本原理就是将SQL语句查询结果数据直接存储在内存中,这样后续相同查询语句就直接从该内存中读取了,这将极大地提高该类语句重复查询性能。 为此,Oracle在SGA的Shared Pool内存中专辟了一个Result Cache内存,如下图所示:                     以下就是Result Cache的工作原理图:       即: 当第一个会话进行第一次查询时,将首先从硬盘读取数据 。 第一个会话同时将该数据存储在SQL Query Result Cache区域 。 第二个会话进行相同语句查询时,Oracle直接从SQL Query…

  • Oracle SQL CBO 优化器/优化程序 统计信息

    收集优化程序统计信息 收集系统统计信息 设置统计信息首选项 使用动态采样 处理优化程序统计信息   SQL CBO 优化器/优化程序 统计信息   优化程序统计信息描述有关数据库及其中对象的详细资料。查询优化程序使用这些统计信息,为每个 SQL 语句选择最佳的执行计划。 由于数据库中的对象经常发生更改,所以必须定期更新统计信息,以使它们能够准确地描述这些数据库对象。统计信息由 Oracle DB 自动进行维护,您也可以使用 DBMS_STATS 程序包手动维护优化程序统计信息。 描述数据库以及数据库中的对象 查询优化程序使用以下信息进行评估: –谓词的选择性 –每个执行计划的成本 –访问方法、联接顺序和联接方法 –CPU 和输入/输出 (I/O) 成本 与收集优化程序统计信息相比,对过时的统计信息进行刷新同样重要。 –由系统自动收集 –用户使用 DBMS_STATS 手动收集   优化程序统计信息的类型 表统计信息: –行数 –块数 –平均行长度 索引统计信息: –B* 树级别 –唯一键 –叶块数量 –聚簇因子 系统统计信息: –I/O 性能及利用率 –CPU 性能及利用率 列统计信息: –基本统计信息:相异值数量、空值数量、平均长度、最小值、最大值 –直方图(列数据有偏差时的数据分布) –扩展的统计信息…

  • Oracle Acs资深顾问罗敏 老罗技术核心感悟:自动扫描SQL语句工具?

    作者为:  SHOUG成员 – ORACLE ACS高级顾问罗敏     问题和需求 “你们Oracle公司有这样的自动扫描SQL语句工具吗?通过这个工具,把我们的应用软件输进去,就能扫出SQL语句的大部分问题。这样就可以减少我们测试和性能优化工作量,更能避免投产之后才暴露性能问题。” — 来自某移动客户的需求。 “老罗,XX移动公司希望我们Oracle公司提供自动扫描SQL工具,我们有吗?听说第三方公司有这样的产品,已经在客户那儿试用了。” — 来自Oracle服务销售同事的担忧。 是啊,客户的需求再合理不过。但据我所知,Oracle公司好像没有这样包治百病的神奇工具。第三方公司居然有这样的工具,太吸引客户眼球了,一方面让人感到质疑,另一方面也令人感到一种竞争压力。   初识庐山真面目 于是,我和销售同事趁去该客户现场拜访、调研的机会,对该客户的上述需求和第三方公司的自动化工具一探究竟了。客户的需求不必多言了,我们关键是对所谓自动化工具充满好奇。因商务因素,客户并没有给我们直接展示该工具的使用过程和界面,但告诉我们大致原理:原来该工具首先通过定义一组评分规则,例如:SQL语句是否使用绑定变量;条件字段前是否有函数;多表连接是否超过4个表… …,然后将输入的SQL语句进行评判,若违反这些规则,扣分!最后给该SQL语句和整个应用模块打分。 原来如此!这些规则在大部分情况下不无道理,例如,条件字段加函数,特别是在日期字段前加to_char函数: to_char(DJ_SZ.JDRQ, ‘YYYY.MM.DD’) BETWEEN ‘2014.04.01’ AND ‘2014.04.17’ 就是一种非常初级、业余、错误的编程方式。正确方式应该是: DJ_SZ.JDRQ BETWEEN to_date(‘2014.04.01’,’YYYY.MM.DD’) AND to_date(‘2014.04.17’,’YYYY.MM.DD’) 但是,更多的规则值得商榷。例如,在Oracle公司推荐的编程规范中,并不是所有SQL语句都应该使用绑定变量的,而只是针对并发量大的小事务SQL语句才应该使用绑定变量,而针对并发量小的大事务SQL语句,特别是非常复杂SQL语句,Oracle公司建议是不要使用绑定变量。第三方的自动工具能分析出SQL语句是高并发量还是低并发量访问,以及大事务和小事务吗?值得怀疑。 更为典型的例子是,其实Oracle公司从来没有官方正式建议:一个SQL语句不能超过4个表的连接。的确,多表连接可能导致性能不佳,但问题不在于连接表的多和少,而在于编程人员是否理解了Oracle的Nested Loop、Hash Join等多种表连接技术原理和适应场景,以及在表连接中索引的设计原理。以下就是一个国内著名财务软件的典型SQL语句: select * from (select rownum num, temp.* from (select a.fid, … … a.playdeptname as playdeptNameCode from t_claim_remittancerecord a left…

  • SHIA ::ORA-15063 :: Duplicate disk due to wrong asm resource profile value

    如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复! 诗檀软件专业数据库修复团队 服务热线 : 13764045638    QQ号:47079569    邮箱:[email protected]   适用于: Oracle Database – 企业版 – 版本11.2.0.1及以后 本文献的信息适用于任何平台。 症状   没有ASMlib ,本地多路径到位。 这是一个独立的环境。 尝试安装磁盘组时,磁盘组安装由于复制磁盘而失败。 SQL> ALTER DISKGROUP ALL MOUNT /* asm agent call crs *//* {0:0:431} */ NOTE: Diskgroups listed in ASM_DISKGROUPS are FRA DATA_02 … WARNING: detected duplicate paths to the same disk: ‘/dev/sdan’…