oracle 12.2 local temp的原理和实现

从Oracle数据库12c开始可以将Oracle Clusterware和Oracle RAC配置在大型集群中,称为Oracle Flex集群。 这些集群包含两种类型的节点:Hub节点和Leaf节点。 Hub节点紧密连接,可以直接访问共享存储,并作为一个或多个Leaf 节点的锚点。 leaf 节点与Hub节点松动连接,可能无法直接访问共享存储。

关于Flex Cluster,详情请点击:Oracle Flex Clusters

随着12.2的发布,如果是FLEX集群,可以在LEAF NODE创建read only实例,从而引入了local temp表空间的概念。

local temp和local undo的概念不一样,首先pdb必须使用自己的temp表空间,local temp指的是RAC环境下,可以在各自的节点上创建local temp表空间,拥有各自的temp表空间就跟拥有各自的PGA一样,对于只读节点来说大的排序需要用到temp时就不需要去看这块空间另外一个节点有没有使用,另外避免了两边同时使用temp表空间产生的争用。

首先,PDB不能使用CDB的temp表空间,PDB和CDB上temp视图查出来的结果都不一样: 连接到PDB1,并查看当前的临时表空间

创建新的临时表空间,设置为默认,并删掉原来的临时表空间

测试最初的临时表空间不存在

查看当前的临时表空间

以sysdba连接,再次查询

dba_temp_files的SHARED字段中表明了类型,local有两种类型,RIM是read_only实例,ALL是所有实例

SHARED: for shared temporary tablespace LOCAL_ON_ALL: for local temporary tablespace on all instances LOCAL_ON_RIM: for local temporary tablespace on read-only instances

官方给的创建语句有两处问题,一是未指定tempfile的大小,二是local temp是BIGFILE类型,所以不能指定AUTOEXTEND,也不能添加第二个tempfile。

先来看LOCAL_ON_ALL,创建语句如下,(由于没有RAC环境只能在单实例上测试)

查询数据库当前的大文件表空间,临时文件和临时表空间

从操作系统层面查看

从上面可以看到,理论上会创建各自的tempfile,在指定文件名结尾加上_1和_2,但是不知V$TEMPFILE视图中为什么没有标明详细的文件名。 LOCAL_ON_RIM由于需要read only的实例,创建会报错ORA-32778

[oracle@orasql2 ~]$ oerr ORA 32778 32778, 00000, "DDL operations are disabled on local temporary tablespaces FOR LEAF." // *Cause: A DDL operation on a local temporary tablespace FOR LEAF was // attempted in a system without any read-only running instances. // *Action: Add at least one read-only instance to the cluster.

read writ的实例会优先使用shared的临时表空间,再使用local的临时表空间 ;read only的实例优先使用local的临时表空间,再使用shared的临时表空间 其他操作都类似,具体可以参考官方文档 http://docs.oracle.com/database/122/RACAD/introduction-to-oracle-rac.htm#RACAD-GUID-E84E3BA2-7F36-406B-B630-CD651E0C856F

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-05-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

数据中心网络虚拟化 配置管理技术

在构建虚拟网络时,管理员需要进行大量的配置工作,例如端口的ip地址和VXLAN配置等等。显然,没有人愿意在系统每次启动时都将繁琐的配置工作重复一遍,所以将配置信...

3154
来自专栏IT技术精选文摘

什么是Zero-Copy?

概述 考虑这样一种常用的情形:你需要将静态内容(类似图片、文件)展示给用户。那么这个情形就意味着你需要先将静态内容从磁盘中拷贝出来放到一个内存buf中,然后将这...

1819
来自专栏java一日一条

深入分析Java ClassLoader原理

大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用...

112
来自专栏Java呓语

代理模式(控制对象访问)

最近在读 Android Binder 部分的源码,之前三三两两的读过一些片段。但总是感觉理解的不深刻,在读源码的过程中看到了代理模式的应用,那便把代理模式单独...

641
来自专栏SDNLAB

【连载-4】数据中心网络虚拟化 配置管理技术

在构建虚拟网络时,管理员需要进行大量的配置工作,例如端口的ip地址和VXLAN配置等等。显然,没有人愿意在系统每次启动时都将繁琐的配置工作重复一遍,所以将配置信...

2615
来自专栏杨建荣的学习笔记

MySQL中的半同步复制(r11笔记第65天)

关于MySQL的复制架构,大体有下面三种方式,异步,全同步复制,半同步复制。 三种复制方式 第一种是异步复制,是比较经典的主从复制,搭建主从默认的架构方...

3366
来自专栏恰同学骚年

Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用

  应用层服务器(这里一般指Web服务器)处理网站应用的业务逻辑,应用的一个最显著的特点是:应用的无状态性。

543
来自专栏coolblog.xyz技术专栏

基于 Java NIO 实现简单的 HTTP 服务器

本文是上一篇文章实践篇,在上一篇文章中,我分析了选择器 Selector 的原理。本篇文章,我们来说说 Selector 的应用,如标题所示,这里我基于 Jav...

58412
来自专栏游戏开发那些事

【LINUX/UNIX网络编程】之使用消息队列,信号量和命名管道实现的多进程服务器(多人群聊系统)

        信号量(初值5,主进程接受一个客户连接后执行P操作判断是否超过5,转发子进程有一个客户退出后执行V操作,并发消息队列标识符)

764
来自专栏养码场

图解 & 深入浅出 JavaWeb:Servlet必会必知

今天由场子里的养码人子木为大家带来一篇关于servlet的技术专贴,希望与大家交流经验,共同进步!

591

扫描关注云+社区