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 条评论
登录 后参与评论

相关文章

来自专栏木头编程 - moTzxx

PHP 学习筆記[1] —— ThinkPHP 公共函数整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

944
来自专栏Java帮帮-微信公众号-技术文章全总结

solr使用教程【面试+工作】

solr使用教程一【面试+工作】 Solr调研总结 开发类型全文检索相关开发 Solr版本4.2文件内容本文介绍solr的功能使用及相关注意事项;主要包括以下内...

2.7K6
来自专栏信安之路

SQL 注入类型详解

笔者最初学习 SQL 注入时,大家对于 SQL 注入类型的归类让我头脑一片混乱,后来笔者发现其实大家都是根据 sqlmap 上给出的“类型”来划分的。所以,今天...

1300
来自专栏皮皮之路

【MySQL】通过Binary Log简单实现数据回滚(一)

37711
来自专栏我的博客

TP入门第三天

1、系统常量 TP2.1版本:(蓝色是3.0中去掉) __ROOT__  : 网站根目录地址  __APP__  : 当前项目(入口文件)地址  __GROUP...

2625
来自专栏程序猿

SQL注入与XSS漏洞

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求 的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网 站泄...

4355
来自专栏hbbliyong

ShellExecute 启动外部程序 参数详细介绍

ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。 目录 1基本简介 2...

4299
来自专栏web编程技术分享

【Java框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作

3685
来自专栏IT可乐

mybatis 详解(八)------ 懒加载

  本章我们讲如何通过懒加载来提高mybatis的查询效率。   本章所有代码:http://pan.baidu.com/s/1o8p2Drs 密码:trd6 ...

2529
来自专栏蓝天

一个简单的支持MySQL和SQLite3的DB接口

simple_db.zip 相关联代码:https://github.com/eyjian/mooon/tree/master/common_library/...

902

扫码关注云+社区