索引是一般索引还是分区索引,可以看dba_indexes的partitioned字段。 如果partitioned字段是YES,说明是分区索引,那么,这个索引是global还是local,可以看dba_part_indexes的LOCALITY字段。 另外,我们还可以看ALIGNMENT字段,看这个 […]
再谈sharding database的一些概念
在继『Oracle sharding database的一些概念』和『sharding database的一些概念的补充』之后,我觉得还是有些概念需要谈一下。 1.shard prune(分片裁剪): 这个概念类似分区裁剪(partition prune),是指根据sql语句会到对应的分片上去。 但 […]
Mode=4的TX锁小结
1. bitmap索引
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
--session 1 SQL> create table t1_tx(id number,name varchar2(20)) ; Table created. SQL> insert into t1_tx select rownum,chr(97+mod(rownum,2)) from dual connect by level<=10; 10 rows created. SQL> commit; Commit complete. SQL> select * from t1_tx; ID NAME ---------- ---------------------------------------- 1 b 2 a 3 b 4 a 5 b 6 a 7 b 8 a 9 b 10 a 10 rows selected. SQL> create bitmap index idx_bitmap_name on t1_tx(name); Index created. SQL> select sid from v$mystat where rownum=1; SID ---------- 63 SQL> update t1_tx set name='tx' where id=3; 1 row updated. SQL> -- not commit -- session 2: SQL> select sid from v$mystat where rownum=1; SID ---------- 5 SQL> update t1_tx set name='bitmap' where id=5; --hang ---session 3 SQL> select sid, 2 chr(bitand(p1, -16777216) / 16777215) || 3 chr(bitand(p1, 16711680) / 65535) "Name", 4 (bitand(p1, 65535)) "Mode", 5 event, 6 sql_id, 7 FINAL_BLOCKING_SESSION 8 from v$session 9 where event like 'enq%'; SID Name Mode EVENT SQL_ID FINAL_BLOCKING_SESSION ---------- ---------------- ---------- ------------------------------ -------------------------- ---------------------- 5 TX 4 enq: TX - row lock contention 1qtvgrv88q2dj 63 SQL> |
2. 主外键关系,主键表插入数据不提交,外键表插入数据被阻塞
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
--session 1 SQL> create table parent(id number primary key); Table created. SQL> create table child(id number references parent,name varchar2(20)); Table created. SQL> insert into parent values(1); 1 row created. SQL>--not commit; --session 2: SQL> insert into child values(1,'a'); --hang --session 3: SQL> l 1 select sid, 2 chr(bitand(p1, -16777216) / 16777215) || 3 chr(bitand(p1, 16711680) / 65535) "Name", 4 (bitand(p1, 65535)) "Mode", 5 event, 6 sql_id, 7 FINAL_BLOCKING_SESSION 8 from v$session 9* where event like 'enq%' SQL> / SID Name Mode EVENT SQL_ID FINAL_BLOCKING_SESSION ---------- ---------------- ---------- ------------------------------ -------------------------- ---------------------- 5 TX 4 enq: TX - row lock contention d8gc19unfrcsw 63 SQL> |
3.插入主键同一值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
--session 1: SQL> create table mytab(id number primary key); Table created. SQL> insert into mytab values(1); 1 row created. SQL> --session 2: SQL> insert into mytab values(1); --hang --session 3: SQL> l 1 select sid, 2 chr(bitand(p1, -16777216) / 16777215) || 3 chr(bitand(p1, 16711680) / 65535) "Name", 4 (bitand(p1, 65535)) "Mode", 5 event, 6 sql_id, 7 FINAL_BLOCKING_SESSION 8 from v$session 9* where event like 'enq%' SQL> / SID Name Mode EVENT SQL_ID FINAL_BLOCKING_SESSION ---------- ---------------- ---------- ------------------------------ -------------------------- ---------------------- 5 TX 4 enq: TX - row lock contention 2srnv7c1ummk0 63 SQL> |
关于几个工具的替代版本
最近看到由于使用盗版的PL/SQL Developer,导致PL/SQL Developer的登录脚本afterconnect.sql被注入的情况: 『针对最近黑客攻击数据库的解决方案和预防建议』 『知己知彼-关于Oracle安全比特币勒索问题揭秘和防范』 『plsql dev引起的数据库被黑勒索比 […]
shard node的outage测试
shard node的路由方式有直接路由和代理路由,之前我们已经说过,由于我没有connection pool,我们只能来测试一下,在代理路由的情况下,连接shardcat的情况下,当shard node出现意外,连接在shardcat上的操作会发生什么问题。 这里我们要注意下,查询分如下几种情况: […]
sharding database的一些概念的补充
在继『Oracle sharding database的一些概念』之后,我觉得还有一些关于sharding的概念,是值得理解的。 (1) shardgroup:
1 |
In system-managed and composite sharding, the logical unit of replication is a group of shards called a shardgroup. |
也就是说,在逻辑上,将一组相同复制属性的shard称作shard gro […]
Step by Step建立带ADG的sharding db
上次的文章,我们说到sharding其实是非常需要HA架构的,我们今天来安装一个带ADG的sharding node的sharding database。 (我只是把shard node做成了ADG,且没有加RAC架构,shardcat也没有做ADG,因为……我的虚拟机实在吃不消了!) 1.大致环境 […]
sharding db的HA架构
sharding database最大的特点是可以横向扩展。但是横向扩展不是RAC的横向扩展,纯sharding db是没有HA架构的。即一个shardcat db,多个shard node db。无论是谁down了,都会造成不可用。 我们从上往下捋一下,看看哪里有单点故障,这个单点可以通过什么方式 […]
关于config shard的状态不正常的处理
我写关于12.2 sharding database的文章已经好久了,今天再次把环境启动了起来,启动了主机之后,依次启动了listener和shardcat数据库和shard node数据库实例。检查shard状态的时候,发现报错: (a)问题一:status显示warnings: [crayon- […]
SQL Plan Directives的一些相关知识点
继上次聊SQL Plan Directives(SPD)可能会造成过量的动态采样之后,我再小结一些关于SPD的使用方法。 (1)SPD的信息,有MMON每隔15分钟刷进数据字典,如果要在15分钟不到前,查询dba_sql_plan_dir_objects和dba_sql_plan_directive […]
SQL Plan Directives与过量的动态采样
在12c中,优化器进行了较大的改变,推出了Adaptive query optimization,从整体上说,Adaptive query optimization可以看作如下两部分: 一部分是自适应执行计划,一部分是自适应统计信息。 这里注意一下, • Adaptive Plans – 是在第一次 […]
关于兼容性的一些文档
RMAN Compatibility Matrix (Doc ID 73431.1) rman的target/aux端,和rman可执行文件,和rman的catalog,以及Catalog Schema之间的版本关系。 Oracle Clusterware (CRS/GI) – ASM […]