Oracle数据库
文章平均质量分 80
作为关系型数据库一哥,Oracle的体系结构、调优思想有很多值得学习和借鉴的地方
独孤清扬玩DB
这个作者很懒,什么都没留下…
展开
-
SQL 窗口函数的优化和执行
窗口函数(Window Function)是 SQL2003 标准中定义的一项新特性,并在 SQL2011、SQL2016 中又加以完善,添加了若干处拓展。窗口函数不同于我们熟悉的普通函数和聚合函数,它为每行数据进行一次计算:输入多行(一个窗口)、返回一个值。在报表等分析型查询中,窗口函数能优雅地表达某些需求,发挥不可替代的作用。本文首先介绍窗口函数的定义及基本语法,之后将介绍在 DBMS 和大数据系统中是如何实现高效计算窗口函数的,包括窗口函数的优化、执行以及并行执行。什么是窗口函数?窗口函数转载 2021-05-27 15:40:52 · 380 阅读 · 0 评论 -
Oracle 11g ADG 配置没问题,但死活不同步案例
DG处理的问题还是蛮多的,但这次遇到一个比较奇葩的事情,表面配置、网络都没啥问题,但主备的同步始终有问题,经过多次调整参数、重新部署问题依旧,最终还是求助mos问题得以解决,现将处理过程记录如下:一、问题现象偶尔发现一个主备数据库同步有问题,检查备库发现除了无法完成同步,其他无错误信息,检查主库发现错误信息如下:set line 200;set pagesize 2000;select dest_id,status,error from v$archive_dest;ORA-12154转载 2021-04-15 09:21:46 · 1619 阅读 · 0 评论 -
特殊字符ascii码
ASCII控制字符二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义 00000000 0 00 NUL ␀ 空字符(Null) 00000001 1 01 SOH ␁ 标题开始 00000010 2 02 STX ␂ 本文开始 00000011 3 03 ETX ␃ 本文结束 00000100 4 04...转载 2021-01-23 11:11:16 · 9359 阅读 · 0 评论 -
Oracle表重命名后索引、约束、权限、同义词的影响
create public synonym test01 for scott.test01; --同义词create index scott.idx_col_date on scott.test01(col_date); --索引alter table TEST01 add constraint UK_TEST01 unique (COL_DATE); --唯一约束alter table test01 modify col_date not null; --not null 约束grant sele原创 2021-01-22 18:10:32 · 2602 阅读 · 0 评论 -
Oracle添加主键和唯一约束最佳实践
经常有开发人员找DBA,需要把唯一索引改为普通索引,或者把主键改为唯一索引或普通索引...主键属性:普通索引+唯一约束+not null约束 或者唯一索引+not null约束唯一索引属性:普通索引+唯一约束最佳实践:主键用唯一索引+主键约束两步骤来创建,可直接变更为唯一索引唯一索引用普通索引+唯一约束两步骤来创建,可以直接变更为普通索引主键不同创建方式,不同的ddl变更结果:测试表如下create table TEST01( col_date date, ..原创 2021-01-22 17:44:40 · 2575 阅读 · 0 评论 -
IBM AIX RISC System/6000 Error: 110: Media surface error错误处理
Oracle备库alert日志中有如下报错:lave exiting with ORA-1115 exceptionErrors in file /u01/app/oracle/diag/rdbms/dbrsh/dbrsh/trace/dbrsh_pr0h_54461338.trc:ORA-01115: IO error reading block from file 219 (block # 1903493)ORA-01110: data file 219: '/gzdata01/YDBR/dat原创 2021-01-07 11:17:27 · 791 阅读 · 0 评论 -
Oracle11g新特性密码延迟验证的坑
在 Oracle 11g 中,为了提升安全性,Oracle 引入了『密码延迟验证』的新特性。这个特性的作用是,如果用户输入了错误的密码尝试登录,那么随着登录错误次数的增加,每次登录前验证的时间也会增加,以此减缓可能对于数据库重复的口令尝试攻击。但是对于正常的系统,由于口令的更改,可能存在某些被遗漏的客户端,不断重复尝试,从而引起数据库内部长时间的 Library Cache Lock的等待,这种情形非常常见。如果遇到这一类问题,可以通过Event 28401关闭这个特性,从而消除此类影响,以下命令将转载 2020-08-23 11:34:34 · 2093 阅读 · 0 评论 -
Oracle FGA审计的使用
文章目录0、参考资料1、FGA审计1.1、简单使用步骤:1.2、使用FGA制作蜜罐0、参考资料Oracle® Database Security Guide 11g Release 2 (11.2) E16543-059 Verifying Security Access with AuditinOracle Audit Vault Administrator’s Guid (about Oracle Audit Vault, which provides advanced auditing fe原创 2020-07-31 21:34:45 · 728 阅读 · 0 评论 -
Oracle中开启并行和相关查询
文章目录1、并行相关资料整理:2、查询并行执行情况:3、使用并行1、并行相关资料整理:官方参考:VLDB and Partitioning Guide ->How Parallel Execution Works2、查询并行执行情况:1)与并行查询相关的数据字典视图v$px_session|V$pq_sesstat|v$px_process|v$px_sysstat|v$px_process_sysstat v$session column pdml_status,pq_statusps原创 2020-07-31 21:30:07 · 1019 阅读 · 0 评论 -
Oracle中一把梭获取对象DDL创建语句
文章目录1、DBMS_METADATA.GET_DDL包详解以及使用案例1.1、官方文档参考1.2、常用获取ddl信息案例1.2.1、查看表以及对应索引创建语句1.2.2、获取用户下所有对象的ddl语句1.2.3、单独获取表上约束ddl语句1.2.4、获取创建用户以及授权ddl语句1.2.5、获取表空间ddl语句1.3、dbms_metadata.set_transform_param函数详解2、查看表上列信息,补充desc的功能吐个槽:Oracle数据库有很多地方设计的不人性化,比如,sqlplus中不原创 2020-07-31 21:21:36 · 570 阅读 · 0 评论 -
oracle中慢sql优化思路
参考资料:官方文档SQL Tuning Guidehttps://docs.oracle.com/en/database/oracle/oracle-database/12.2/tgsql/sql-performance-fundamentals.html#GUID-DD9CAA74-3E0B-48C9-8770-AADB614BC992Oracle Database 2 Day + Performance Tuning GuideOracle Performance Tuning Guide原创 2020-07-04 09:59:18 · 10047 阅读 · 1 评论 -
诊断某段时间数据库性能抖动问题思路
场景:经常有开发人员反馈,在某段时间(甚至时间精确到秒) 反馈有业务接口超时问题。并不一定是某条sql慢,而是整个应用接口上都出现了慢sql问题。这时候一般是根据精确的时间点观察等待事件和报错日志以及时间点前后数据库在干什么事情来分析问题。查看错误日志信息+监控信息重点查看的是数据库alert日志错误告警和操作系统错误日志信息:linux下举例:/u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/alert_orcl11g.log..原创 2020-07-01 17:35:38 · 2107 阅读 · 0 评论 -
数据库无响应(hang住)故障处理思路和方法
故障现象描述数据库无响应(hang住)故障,常见的就是数据库实例不能响应客户端发起的SQL语句请求,客户端提交一个SQL后,就一直处于等待数据库实例返回结果的状态。最为严重的现象是客户端根本不能连接到数据库,甚至通过操作系统本地sqlplus / as sysdba命令也不能正常访问数据库。发起一个连接请求后,一直处于等待状态。对于oracle数据库一般上面运行的业务都是比较核心,发生了数据库无响应是必须要及时发现并紧急处理的。数据库都部署有监控,一般会接收到类似这样的告警信息:无响应故原创 2020-06-29 17:34:42 · 7550 阅读 · 0 评论 -
Oracle数据库是如何执行SQL的
文章目录1、参考资料2、Oracle SQL执行过程2.1、SQL语句的执行过程2.1.1、全局角度来看SQL请求的执行过程2.1.2、数据库端处理SQL具体过程2.2、Oracle对解析过程的优化2.2.1、减少硬解析 -- 软解析(Soft parse)2.2.2、进一步减少软解析 -- 软软解析(Soft soft parse)2.2.3、一次解析,多次执行 -- 客户端语句缓存(statement cache)2.2.4、最高境界,不执行sql -- SQL结果集缓存1、参考资料oracle c原创 2020-06-07 18:53:36 · 2393 阅读 · 0 评论 -
oracle清理trace、alert、aud、listener等日志文件
文章目录0、注意事项1、数据库各项日志文件路径2、手工方式清理日志文件3、使用oracle自带工具清理0、注意事项数据库产生的运行日志不是随便可以清理的,特别是有故障或者长期分析一个妖孽的问题时,清理日志之前一定要做好备份工作。1、数据库各项日志文件路径查看oracle各类日志的方法:如果是rac,asm实例下查询方法一样1)查看诊断日志:11g以及以上版本全新的诊断信息架构,查看v$diag_info信息,展示日志目录:show parameter diag;select * from v原创 2020-05-20 16:24:09 · 14163 阅读 · 0 评论 -
揪出造成失败用户登录的应用主机名、数据库用户信息
起因: 利用zabbix部署了密码失败登录的监控,监控方法是每隔一分钟,检查user$表lcount字段,如果发现大于0,说明该用户存在错误密码登录数据库。为啥要部署这个监控呢?1)、如果启用默认的密码延迟登录,则会引起严重的性能问题,一大堆libary cache lock等待。2)、如果用户密码策略,user profile设置为failed login超过一定次数锁定,那就惨了,会锁定...原创 2020-04-26 22:50:00 · 628 阅读 · 0 评论 -
Oracle主库、备库redo日志管理
文章目录官方参考:1、添加日志组以及日志成员3、删除日志组或成员3.1、日志的重定位及重命名3.2、清空日志文件组3.3、删除日志成员3.4、删除日志组5、删除单实例数据库多余节点的日志组5、归档管理6、疑难日志清理案例7、有adg备库环境下扩大redo大小7.0、环境说明7.1、检查主备库信息7.2、主库上扩展日志操作7.3、扩展备库的日志大小官方参考:How To Add/Increase...原创 2020-04-26 22:21:30 · 1655 阅读 · 0 评论 -
Oracle expdp和impdp
文章目录1、EXPDP/IMPDP用法详解1.1、expdp/impdp模式1.2、监控expdp/impdp任务2、EXPDP/IMPDP使用技巧和案例2.0、使用技巧2.1、库、表空间、用户、表等导出导入2.2、过滤对象2.2.1、使用include2.2.2、使用query选项2.2.3、使用EXCLUDE排除对象2.2.4、使用content来过滤导出元数据还是只有数据2.3、remap对...原创 2019-12-16 15:36:49 · 2532 阅读 · 0 评论 -
TraceEvents&DB event(跟踪事件)总结
文章目录0、参考资料1、event相关查询&trace信息解读1.1、查看当前数据库设置了哪些event1.2、查看当前trc文件1.3、SQL Trace文件格式信息解读2、会话跟踪方式2.1、跟踪当前会话2.2、跟踪他人会话2.3、实例级别跟踪2.4、利用服务、模块动作去跟踪3、常用的events3.1、关闭密码延迟验证3.2、10053 跟踪sql执行计划产生过程3.3、10231 ...原创 2019-11-28 18:51:04 · 1918 阅读 · 0 评论 -
Oracle scheduler job管理
文章目录0、参考资料1、使用scheduler job1.1、创建scheduler job1.2、查询scheduler job1.3、管理scheduler job2、使用Programs2.1、 创建Programs2.2、管理Programs3、使用Schedules3.1、创建和管理Schedules3.2、Schedules调度Programs执行的Jobs3.3、设置Repeat I...原创 2019-11-21 17:37:58 · 4546 阅读 · 0 评论 -
Oracle dbms_job管理
文章目录0、参考资料&注意事项1、dbms_jobs相关视图和参数2、dbms_job管理2.1、创建 DBMS_JOB2.2、启停\修改dbms_job2.3、非job owner用户管理job3、关于 interval 的一些设置技巧0、参考资料&注意事项Oracle Database Administrator’s Guide -> Support for DBMS...原创 2019-11-21 17:29:29 · 895 阅读 · 0 评论 -
Oracle执行计划稳固
文章目录0、参考资料1、查看执行计划&指标解读1.1、查看执行计划1.1.1、explain plan命令1.1.2、DBMS_XPLAN包1.1.3、DISPLAY_SQL_PLAN_BASELINE函数1.1.4、SQLPLUS中的AUTOTRACE1.1.5、其它方式1.1.6、如何得到最真实的执行计划1.2、如何读懂执行计划1.2.1、执行计划阅读顺序1.2.2、执行计划指标解释2...原创 2019-11-18 21:15:04 · 521 阅读 · 0 评论 -
oracle查询表以及表上索引占用空间大小
var t_owner varchar2(30);var t_name varchar2(30);exec :t_owner := 'scott';exec :t_name := 'emp';select t1.owner || '.' || t1.table_name table_name, t1.tab_gb + nvl(t2.idx_gb, 0) + nvl(t3.lo...原创 2019-09-17 14:53:19 · 5638 阅读 · 1 评论 -
oracle批量导出AWR报告
工作需求:项目中需要把生产库中所有的AWR报告dump出来,然后导入到方便测试的数据库中。在测试库中的AWR报告需要根据dbid和实例名逐个导出,如果遇到很多再加上RAC系统,会很麻烦。在网上找了一些脚本,发现没有适合自己的,所以就自己学习了一个存储过程来实现这样的功能。<p></p><p>说明:在$ORACLE_HOME/rdbms/admin/awr...原创 2014-07-20 20:41:46 · 1605 阅读 · 0 评论 -
Oracle触发器6-管理触发器
1、禁用,启用,以及删除触发器alter trigger trigger_name disable;alter trigger trigger_name enable;drop trigger trigger_name;举例:禁用或者启用某个表上的全部触发器create or replace PROCEDURE settrig(tab IN VARCHAR2,sch IN V...原创 2013-04-15 17:46:09 · 929 阅读 · 0 评论 -
Oracle统计产生日志&数据增长&增量
文章目录1、如何度量增删改操作产生的日志量2、根据归档日志估算数据增量情况3、DBA_HIST_SYSSTAT计算redo产生量(AWR中profile "redo size")4、根据dba_hist_tbspc_space_usage表空间维度估算容量增长情况5、根据dba_hist_seg_stat估算对象数据增长情况1、如何度量增删改操作产生的日志量在SQL*Plus中使用autot...原创 2019-09-24 16:10:47 · 5656 阅读 · 0 评论 -
Oracle sqlplus使用总结
文章目录0、参考资料1、sqlplus使用技巧案例1.1、设置个securecrt按钮,防止误操作库1.2、Thomas Kyte大神的SQL*PLUS设置例子1.3、解决小案例汇总2、sqlplus如何优雅的输出结果为html文档3、sqlplus常用设置0、参考资料参考官方文档:SQL*Plus® User’s Guide and Referencehttps://docs.oracle...原创 2019-09-24 17:57:57 · 855 阅读 · 0 评论 -
Oracle中字符串转义问题总结
文章目录字符串like匹配遇到关键字,字符转义问题造测试数据转义字符例子查询包含语法关键字的字段值字符拼接问题字符串like匹配遇到关键字,字符转义问题在使用like匹配字符串的时候,如果字符串中有%、下划线、单引号等sql语法中保留字符串,这时候需要转义,mysql中保持和linux或某些编程语言中一致,使用反斜杠“\”来解决,Oracle中则稍显麻烦。前面说过,在字符串拼接时遇到关键字可...原创 2019-09-27 11:20:11 · 5790 阅读 · 0 评论 -
Oracle日期和时间总结
文章目录1、计算时间函数1.1、numtodsinterval函数1.2、numtoyminterval函数1.3、months_between函数1.4、add_months函数1.5、next_day函数1.6、last_day函数1.7、2、日期和字符转换函数2.1、to_char和to_date2.1.1、格式说明2.1.2、相互转换2.2、trunc()2.3、round2.4、extr...原创 2019-10-08 17:35:02 · 2093 阅读 · 0 评论 -
Oracle索引扫描方式
文章目录0、参考资料1、索引扫描方式和索引类型概述2、索引唯一扫描(index unique scan)3、索引范围扫描(index range scan)4、索引跳跃扫描(index skip scan)5、索引全扫描(index full scan)6、索引快速扫描(index fast full scan)0、参考资料Oracle Database Performance Tuning ...原创 2019-10-11 15:10:47 · 860 阅读 · 0 评论 -
让AIX下的sqlplus也支持回显功能
方法:使用rlwrap工具,步骤:1. 在AIX上安装gcc工具,在也多网站上都有介绍,gcc for aix的安装方法此处略。ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gcc/gcc-4.2.0-3.aix6.1.ppc.rpm,gcc-cplusplus-4.2.0-3.aix6.1.ppc....原创 2013-03-29 14:28:49 · 711 阅读 · 0 评论 -
Oracle数据库为何出现乱码
有时候向另外一个数据库中导入数据结果发现出现了乱码。其实这些乱码都是与oracle数据库的字符集有关。如果要避免乱码的产生只需要在使用PL/SQL导出用户数据的时候查看并设置windows客户端(oracle client)字符集是否和oracle server端字符集相匹配。 在使用PL/SQL导出用户数据时如下图:其实就是使用数据库的exp命令。如:exp datacore/...原创 2013-03-29 15:15:44 · 1264 阅读 · 0 评论 -
Oracle触发器1-介绍
Oracle官方参考:PL/SQL Language Referenc->9 PL/SQL TriggerReasons to Use Trigger:■ Automatically generate calculated column values■ Log events■ Gather statistics on table access■ Modify table dat...原创 2013-04-03 14:47:19 · 813 阅读 · 0 评论 -
Oracle触发器2-DML触发器
DML触发器是最常见的触发器类型,开发人员用的比较多;而其他类型的触发器主要是用于数据库管理或者审计,DBA用的比较多。1、DML触发器简介:BEFORE 触发器这种触发器是在某个操作发生之前触发的,比如before insert就是在插入操作之前触发。AFTER 触发器这种触发器是在某个操作发生之后触发的,比如after update就是在插入操作之前触发。语句级别...原创 2013-04-03 16:32:29 · 1054 阅读 · 0 评论 -
Oracle SQL多表查询
曾经一段时间我对oracle的多表查询搞的云里雾里,究其原因:oracle自己的语法和SQL国际标准语法混用。此文章仅适合oracle 菜鸟,老鸟直接飞过…多表连接类型(SQL 1999标准)• Cross joins • Natural joins • USING clause• Full (or two-sided) outer joins• Arbitra...原创 2013-04-07 10:09:14 · 1174 阅读 · 0 评论 -
Oracle触发器3-DDL触发器
DDL触发器,当执行DDL语句时会被触发。按照作用范围,分为schema triggers,database triggers。schema triggers作用在一个用户上,database triggers作用在整个数据库所有用户上。创建DDL触发器要创建一个DDL触发器,语法如下:1 CREATE [OR REPLACE] TRIGGER trigger name --创建一个触...原创 2013-04-07 13:51:47 · 1449 阅读 · 0 评论 -
Oracle触发器4-数据库事件触发器
创建数据库事件触发器语法1 CREATE [OR REPLACE] TRIGGER trigger_name2 {BEFORE | AFTER} {database_event} ON {DATABASE | SCHEMA}3 DECLARE4 Variable declarations5 BEGIN6 ...some code...7 END;数据库事件触发器是发生在数据...原创 2013-04-08 12:53:47 · 807 阅读 · 0 评论 -
Oracle 查找并删除表中的重复记录
案例:一个应用表中的一个字段是主键,向表中插入数据时,先把数据放在临时表中(没有主键)然后再插入应用表。这时候如果临时表中有重复数据,无论是主键字段businessid有重复,还是一整行有重复都会报出违反唯一主键约束错误。方法:group by XX having count(*)>1,rowid,distinct,temporary table,procedure1、查询表中的...原创 2013-04-15 15:14:21 · 920 阅读 · 0 评论 -
Oracle触发器5-Instead of触发器
Instead of 触发器可以在由一个以上的表组成的视图上进行insert,update,delete,merge.也可以使用instead of 来创建分区表等。创建instead of 触发器语法:1 CREATE [OR REPLACE] TRIGGER trigger_name2 INTEAD OF operation3 ON view_name4 FOR EACH ROW...原创 2013-04-15 17:28:56 · 988 阅读 · 0 评论 -
SQL执行计划错误导致临时表空间不足
故障现象:临时表空间不足的问题已经报错过3次,客户也烦了,前两次都是同事添加5G的数据文件,目前已经达到40G,占用临时表空间主要是distinct 和group by 以及Union all 表数据量在200W左右,也不至于把40G的临时表空间撑爆。原因分析:既然排序用不了这么多临时表空间应该是别的原因造成。从包含故障时间段的AWR报告中可以看出这一阶段DBtime蛮高的,并且sql e...原创 2013-03-31 21:05:59 · 1217 阅读 · 0 评论