
oracle sql plsql
数据库人生
专注于数据库
PostgreSQL;Oracle 11G OCA、OCP;OceanBase V2 OBCA、OBCP
展开
-
oracle 稳定执行计划 spm 之三 模拟生产环境使用固定sql执行计划
os: centos 7.6.1810db: oracle 19.3版本# cat /etc/centos-releaseCentOS Linux release 7.6.1810 (Core)## # su - oracleLast login: Thu Aug 19 08:23:16 CST 2021 on pts/2$$$ sqlplus / as sysdba;SQL*Plus: Release 19.0.0.0.0 - Production on Thu Aug 19 0原创 2021-08-19 09:31:14 · 416 阅读 · 0 评论 -
oracle 12c 原生实现结果集的随意获取(类似 mysql 的 limit、offset )
os: centos 7.4db: oracle 12c版本# cat /etc/centos-releaseCentOS Linux release 7.4.1708 (Core) # su - oracle$ sqlplus / as sysdbaSQL> set lines 500;set pages 500;SQL> select * from v$version;BANNER CON_ID--------------------原创 2020-11-24 15:10:26 · 380 阅读 · 0 评论 -
oracle 稳定执行计划 spm 之二 自主绑定、解绑
os: centos 7.4db: oracle 11.2.0.4版本# cat /etc/centos-releaseCentOS Linux release 7.4.1708 (Core) # # su - oracleLast login: Tue Jan 21 03:40:05 CST 2020 on pts/0$ sqlplus / as sysdba;SQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 3 10:29:09 2原创 2020-07-03 15:17:02 · 1132 阅读 · 1 评论 -
oracle 执行计划中出现 merge join cartesian
instance禁用SQL> alter system set "_optimizer_mjc_enabled" = false;session禁用SQL> alter session set "_optimizer_mjc_enabled" = false;sql添加 hintselect/*+ OPT_PARAM('_optimizer_mjc_enabled','false') */原创 2020-06-09 10:57:05 · 1472 阅读 · 0 评论 -
oracle 数据库 long 类型转换为 varchar 类型
all_tab_columns.data_default 的类型为 long,查看时不太方便,需要做个转换。CREATE OR REPLACE FUNCTION ALL_TAB_COLUMNS_DATA_DEFAULT( in_owner varchar2, in_table_name varchar2, in_column varchar2)RETURN...原创 2020-04-14 09:59:05 · 3951 阅读 · 0 评论 -
ORA-12838: cannot read/modify an object after modifying it in parallel
os: centos 7.4db: oracle 12.1.0.2今天在调优一个存储过程是,提示如下错误:ORA-12838: 无法在并行模式下修改之后读/修改对象ORA-12838: cannot read/modify an object after modifying it in parallel分析后,还是增长了些知识。版本# cat /etc/centos-release...原创 2019-10-24 23:21:14 · 2183 阅读 · 1 评论 -
oracle 函数属性 parallel_enable
oracle函数的其中一个属性就是 parallel_enable。并行执行 select 语句,在执行用户自定义函数,就不会并行。启用自定义函数的并行写法如下create or replace function f1 ( p1 number) return number parallel_enableisbegin return p1 * 2;end;/参考:htt...原创 2019-10-24 14:45:05 · 2470 阅读 · 1 评论 -
oracle 函数属性 deterministic
oracle函数的其中一个属性就是 deterministic。它表示一个函数在输入不变的情况下输出是否确定,像oracle的内置函数 UPPER,TRUNC 等都是 deterministic 函数,而像 DBMS_RANDOM.VALUE 就不是。写法如下create or replace function f1 ( p1 number) return number determi...原创 2019-10-24 14:25:49 · 1344 阅读 · 0 评论 -
oracle table 碎片化整理及查看函数 show_space
tom 大神写的,有空再翻翻 tom 的书。CREATE OR REPLACE NONEDITIONABLE PROCEDURE show_space ( p_segname_1 IN VARCHAR2, p_type_1 IN VARCHAR2 DEFAULT 'TABLE', p_space IN VARCHAR2 DEFAULT 'M...原创 2019-10-16 17:35:05 · 464 阅读 · 0 评论 -
oracle 递归 with
创建表结构-- Create tablecreate table TMP_DEPARTMENT( department_id VARCHAR2(40) not null, depart_name VARCHAR2(64), parent_id VARCHAR2(40)); 插入数据Insert into TMP_DEPARTMENT(DEPARTMENT_I...原创 2019-10-15 10:30:55 · 459 阅读 · 0 评论 -
emcc 捕获到的一个 plsql 匿名块
os: centos 7.6db: oracle 19.3emcc: 13-- ============================================================================================== ---- This file is generated by EM Database Express. ...原创 2019-08-12 17:18:10 · 410 阅读 · 0 评论 -
oracle 稳定执行计划 spm 之一
os: centos 7.6db: oracle 19.3spm 的全称是 sql plan management,是 oracle 11g 中推出的一种主动稳定执行计划的手段,能够保证只有被验证过的执行计划才会被启用.启动 spm查看默认值SQL> show parameter sql_plan;NAME TYPE VALUE--------...原创 2019-08-16 08:21:06 · 513 阅读 · 0 评论 -
oracle 查看执行计划的几种方法
os: centos 7.6db: oracle 19.3PLSQL Developer这个工具是oracle环境下最常用的工具.简单强大.选中具体的sql,默认按F5 就可以看到执行计划explain planexplain plan set statement_id='explain_tmp_t0_tmp_t1' forselect t0.*,t1.* from tmp_t...原创 2019-08-15 16:30:53 · 536 阅读 · 0 评论 -
oracle update 操作一二
os: centos 7.6db: oracle 19.3准备数据创建表-- drop table tmp_t0;create table tmp_t0( id VARCHAR2(100), name VARCHAR2(100), memo VARCHAR2(100));-- drop table tmp_t1;create table tmp_t1( ...原创 2019-08-01 10:52:21 · 1748 阅读 · 0 评论 -
oracle 批处理 bulk collect into 带来的性能优势
os: centos 7.6db: oracle 19.3参考<<oracle 批处理 forall 带来的性能优势>>生成 tmp_20190704_220000,再往该表插入 1000W条数据。create table-- drop table tmp_20190706_220000-- truncate table tmp_20190706_220000...原创 2019-07-06 17:29:34 · 3423 阅读 · 3 评论 -
oracle 批处理 forall 带来的性能优势
os: centos 7.6db: oracle 19.3create table-- drop table tmp_20190704_220000-- truncate table tmp_20190704_220000create table tmp_20190704_220000 ( id integer, name varchar(100), memo varchar...原创 2019-07-05 00:36:08 · 663 阅读 · 0 评论 -
oracle pls_integer and binary_integer data types
在写 plsql 匿名块的时候经常会碰到如下写法:declare type type_order_id is table of order_header.id%TYPE index by pls_integer; 或者declare type type_order_id is table of order_header.id%TYPE index ...原创 2019-07-07 22:09:24 · 364 阅读 · 0 评论 -
数据库表在join时的三种方式
sql 执行时最重要的两步: 1)通过什么方式获取到数据(index only scan、index scan、table full scan) 2)获取到数据后用什么方式join出结果。下面说的是第二步nested loops 嵌套循环对于被连接的数据子集较小的情况,nested loop连接是个较好的选择。 nested loop就是扫描一个表,每读到一条记录,就根据索引去另...原创 2018-08-01 16:11:27 · 743 阅读 · 0 评论 -
oracle 递归查询 connect by start with
在业务系统经常会看到有层级关系的表设计,比如行政区域,组织结构等。oracle 提供了connect by start with 来快速处理这种需求。创建表结构-- Create tablecreate table TMP_DEPARTMENT( department_id VARCHAR2(40) not null, depart_name VARCHAR2(64...原创 2016-05-18 11:40:06 · 485 阅读 · 0 评论