临时表

案例:是谁用了我的临时表空间?

拥有回忆 提交于 2019-12-04 22:03:00
环境:RHEL 6.5 + Oracle 11.2.0.4 RAC + ADG 起初发现自己的ADG测试环境不再同步,进一步分析是DATA磁盘组空间耗尽导致的,可是最近在磁盘组上的数据库都没有做过什么测试,且测试磁盘组一直都留有2G+剩余空间,那是什么导致突然没空间了呢? 经过查询dba_data_files发现数据文件的确没有什么增长,但查询dba_temp_files发现临时文件空间增长严重。 sys@DEMO> set lines 180 sys@DEMO> select file_id, file_name, tablespace_name, bytes/1048576 "MB" from dba_temp_files; FILE_ID FILE_NAME TABLESPACE_NAME MB ---------- ------------------------------------------------------- ------------------------------ ---------- 1 +DATA/demo/tempfile/temp.264.1018829761 TEMP 2701 2 +DATA/demo/tempfile/temp_jingyu.258.1018830415 TEMP_JINGYU 30 sys@DEMO>

MySQL 8.0新增特性详解【华为云技术分享】

久未见 提交于 2019-12-04 13:34:30
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/devcloud/article/details/91802620 欢迎添加华为云小助手微信(微信号: HWCloud002 或 HWCloud003 ),输入关键字“ 加群 ”,加入华为云线上技术讨论群;输入关键字“ 最新活动 ”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! 1. MySQL8.0的版本历史 2016-09-12第一个DM(development milestone)版本8.0.0发布 2018-04-19第一个GA(General Availability)版本开始,8.0.11发布 2018-07-27 下一个GA版本,8.0.12发布 2018-10-22 下一个GA版本,8.0.13发布 2019-01-21 下一个GA版本,8.0.14发布 最新的GA版本为8.0.15,于2019-02-01发布 最近待GA的版本为8.0.16, 8.0.17, 从中可以看出,大概每1~3个月一个版本。 2. MySQL8.0中新增的特性 事务性数据字典 数据字典表以InnoDB表存储字典数据,位于mysql数据库下,对外不可见。有专门的表空间mysql.idb,位于数据目录下

MySQL 5.7.9 GA稳定版新特性解读

久未见 提交于 2019-12-04 13:16:50
2015年10月22日,MySQL发布5.7.9稳定版,虽然MySQL官方手册里已经有很多关于MySQL 5.7新特性的介绍,在这里,还是 让我们一起看看在MySQL 5.7里有哪些值得我们关注的新特性吧。 1、安全性 用户表 mysql .user的plugin字段不允许为空,默认值是mysql_native_password,而不是mysql_old_password,不再支持旧密码格式; 增加密码过期机制,过期后需要修改密码,否则可能会被禁用,或者进入沙箱模式; 使用mysql_install_db初始化时,默认会自动生成随机密码,并保存到/var/log/mysqld.log中(grep 'temporary password' /var/log/mysqld.log),而且不创建除root @localhost 外的其他账号,也不创建test库; 在5.7中,推荐使用mysqld --initialize对数据库进行初始化,在初始化时如果加上–initial-insecure,则会创建空密码的 root @localhost 账号,否则会创建带密码的 root @localhost 账号,密码直接写在 log-error 日志文件中(在5.6中是放在~/.mysql_secret里);在5.7中可以对普通用户进行unlock及lock操作。 2

sql(join中on与where区别)

白昼怎懂夜的黑 提交于 2019-12-04 06:46:53
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。 right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。 inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。 full join:外连接,返回两个表中的行:left join + right join。 cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。 关键字: on 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下: 1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。 假设有两张表: 表1:tab2 id size 1 10 2 20 3 30 表2:tab2 size name 10 AAA 20 BBB 20 CCC 两条SQL: 1、select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’ 2

ERROR 1114 (HY000): The table 'test1' is full

柔情痞子 提交于 2019-12-04 01:52:54
查询任何一条语句都显示 The table '/home/mysql/data3015/tmp/#sql_13975_23' is full 查看了下数据库利用磁盘空间没有满, 阿里云的处理方式: 1. 出现这个错误信息的原因 在SQL查询进行 group by、order by、distinct、union、多表更新、group_concat、count(distinct)、子查询或表连接的情况下,MySQL 有可能会使用内部临时表。MySQL 首先在内存中创建 Memory 引擎临时表,当临时表的尺寸过大时,会自动转换为磁盘上的 MyISAM 引擎临时表(当查询涉及到 Blob 或 Text 类型字段,MySQL 会直接使用磁盘临时表)。 这个错误信息,说明磁盘上的临时表 #sql_19472_5 的物理尺寸受到限制,已经无法再继续扩展了。 导致这个错误信息的原因是查询语句使用的内部磁盘临时表(MyISAM 引擎表)总大小已经达到了实例参数 loose_rds_max_tmp_disk_space 指定的限制(默认 10 GB)。 2. 如何处理该错误信息 在控制台 参数设置中根据 RDS 实例当前空闲空间和应用空间使用情况,调高参数 loose_rds_max_tmp_disk_space 的设置,建议考虑设置为略小于当前空闲空间(保留一部分空间以便 Binlog 和

Oracle的数据库的两种临时表

烈酒焚心 提交于 2019-12-03 23:50:08
我们在创建数据表的时候,若没有特殊的指明,那么我们创建的表是一个永久的关系型表格,也就是说,这个表格中对应的数据,除非是我们显示的删除的话,表中的数据是永远都存在的。 相对应的,在 Oracle 数据库中还有一种类型的表,叫做临时表。这个临时表跟永久表最大的区别就是表中的数据不会永远的存在。当一个会话结束或者事务结束的时候,这个临时表中的数据,不用用户自己删除,数据库自己会自动清除。 1 、 事务临时表的管理。 (1) 事务临时表的创建。 Oracle 数据库根据临时表的性质不同,可以分为事务临时表与会话临时表。事务临时表是指数据只有在当前事务内有效。一般情况下,如果在创建数据表的时候,没有特殊指明这表是会话临时表的话,则该表默认为事务临时表。 我们可以以下面的语句创建事务临时表。 Create global temporary table Temp_user    (ID NUMBER(12) Primary key ,name varchar2(10)); 这个创建临时表的语句中,虽然没有显性的指明该表是事务临时表,但是,默认的情况下,若没有指明是什么临时表的话, 系统默认是事务临时表 。我们要创建事务临时表时,可以不指定关键字。但是,这查看起来比较麻烦。我建议,无论在建立什么临时表,都要利用具体的关键字来显形的指明,这大家看起来都方便。一般可以利用 ON COMMIT

SQlServer使用SQl语句创建数据库

纵饮孤独 提交于 2019-12-03 22:40:25
SQlServer使用SQl语句创建数据库 原文连接:https://www.cnblogs.com/yuesebote/p/10717920.html 1.创建数据库SQL语句 use master go if exists(select * from sysdatabases where name='CommonPermission') begin select '该数据库已存在' drop database CommonPermission --如果该数据库已经存在,那么就删除它 end else begin create database CommonPermission on primary --表示属于 primary 文件组 ( name='cpDB_data', -- 主数据文件的逻辑名称 filename='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQL\MSSQL\DATA\cpDB_data.mdf', -- 主数据文件的物理名称 size=5mb, --主数据文件的初始大小 maxsize=100mb, -- 主数据文件增长的最大值 filegrowth=15% --主数据文件的增长率 ) log on ( name='cpDB_log', -- 日志文件的逻辑名称 filename='C:

Oracle 临时表创建及删除

五迷三道 提交于 2019-12-03 20:09:11
转: Oracle 临时表创建及删除 Oracle临时表 临时表分为两种 会话级别( ON COMMIT PRESERVE ROWS; ) CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> ) ON COMMIT PRESERVE ROWS; 会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。即切换到另外一个窗口查询时,数据将被清空。 事务级别( ON COMMIT DELETE ROWS; ) CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> ) ON COMMIT DELETE ROWS; 用户提交commit和回滚rollback事务的时候,临时表的数据自动清空。 创建临时表时,可以使用TYPE快捷创建,操作如下 CREATE GLOBAL TEMPORARY TABLE TEMP_TABLE OF TYPE_NAME ON COMMIT DELETE ROWS; 删除临时表 TRUNCATE TABLE <TABLE_NAME>; DROP TABLE <TABLE_NAME>; 删除临时表时,偶尔会出现 ORA-14452 的错误,意思是有资源还在占用临时表

sqlserver 的临时表

这一生的挚爱 提交于 2019-12-03 14:06:43
临时表有两种类型:本地和全局。 对于临时表有如下几个特点: 本地临时表就是用户在创建表的时候添加了“#”前缀的表,其特点是根据数据库连接独立。只有创建本地临时表的数据库连接有表的访问权限,其它连接不能访问该表; 不同的数据库连接中,创建的本地临时表虽然“名字”相同,但是这些表之间相互并不存在任何关系;在SQLSERVER中,通过特别的命名机制保证本地临时表在数据库连接上的独立性。 真正的临时表利用了数据库临时表空间,由数据库系统自动进行维护,因此节省了表空间。并且由于临时表空间一般利用虚拟内存,大大减少了硬盘的I/O次数,因此也提高了系统效率。 临时表在事务完毕或会话完毕数据自动清空,不必记得用完后删除数据。 创建方式: 方法一: create table #临时表名(字段1 约束条件, 字段2 约束条件, .....) create table ##临时表名(字段1 约束条件, 字段2 约束条件, .....) 方法二: select * into #临时表名 from 你的表; select * into ##临时表名 from 你的表; 当创建本地或全局临时表时,CREATE TABLE 语法支持除 FOREIGN KEY 约束以外的其它所有约束定义。如果在临时表中指定 FOREIGN KEY 约束,该语句将返回警告信息,指出此约束已被忽略,表仍会创建,但不具有

关系型数据库同步

牧云@^-^@ 提交于 2019-12-03 07:07:51
关系型数据库同步 1)、全量同步 比如从oracle数据库中同步一张表的数据到Mysql中,通常的做法就是分页查询源端的表,然后通过数据库引擎批量(比如JDBC)插入到目标表,这个地方需要注意的是,分页查询时,一定要按照主键id来排序分页,避免重复插入。 2)、基于数据文件导出和导入的全量同步,这种同步方式一般只适用于同种数据库之间的同步,如果是不同的数据库,这种方式可能会存在问题。 3)、基于触发器的增量同步 增量同步一般是做实时的同步,早期很多数据同步都是基于关系型数据库的触发器trigger来做的。 使用触发器实时同步数据的步骤: A、 基于原表创触发器,触发器包含insert,modify,delete 三种类型的操作,数据库的触发器分Before和After两种情况,一种是在insert,modify,delete 三种类型的操作发生之前触发(比如记录日志操作,一般是Before),一种是在insert,modify,delete 三种类型的操作之后触发。 B、 创建增量表,增量表中的字段和原表中的字段完全一样,但是需要多一个操作类型字段(分表代表insert,modify,delete 三种类型的操作),并且需要一个唯一自增ID,代表数据原表中数据操作的顺序,这个自增id非常重要,不然数据同步就会错乱。 C、 原表中出现insert,modify,delete