Welcome 微信登录

首页 / 数据库 / MySQL

Oracle增强型日期函数

Oracle增强型日期函数

--修改数据库时区为东八区ALTER DATABASE SET TIME_ZONE="+08:00";/*在修改过程中可能会出现错误提示:ORA-30079: 当数据库有TIMESTAMP WITH LOCAL TIMEZONE列时不能变更数据库时区这是因为当前数据库中已有的表中存在列,列的类型定义为了TIMESTAMP WITH LOCAL TIME ZONE所以数据库不允许修改数据库时区接下来需要通过语句找到是哪些表的列引起的这个问题,查询语句如下:*...
如何避免 MySQL 修改表结构时导致表无法使用的问题

如何避免 MySQL 修改表结构时导致表无法使用的问题

MySQL 在修改表结构的时候可能会中断产品的正常运行影响用户体验,甚至更坏的结果,丢失数据。不是所有的数据库管理员、程序员、系统管理员都非常了解MySQL能避免这种情况。DBA会经常碰到这种生产中断的情况,当升级脚本修改了应用层和数据库层,或者缺乏经验的管理员、开发在不是很了解Mysql内部工作机制的情况下修改了规范文件。真相是:直接修改表结构的过程中会锁表(在5.6版本之前)在线的数据定义语言在5.6版本不总是在线的而且也会锁表就算使用Percona工...
MySQL数据库InnoDB存储引擎在线加字段实现原理详解

MySQL数据库InnoDB存储引擎在线加字段实现原理详解

腾讯互娱内部维护了一个MySQL分支,基于官方5.5.24,实现了类似于Oracle 11g的快速加字段功能,这个分支我们内部称为TMySQL。该功能通过扩展存储格式来实现,原理类似于Oracle 11g,以下介绍下其实现原理。1. GCS行格式需要在innodb中实现类似oracle的快速加字段功能,仅仅基于原来的行格式是不行的,必须对其进行扩展。为了保证原MySQL和innodb的兼容性,不改变原存储格式的行为,在线加字段功能是通过新增一种innodb...
以交互方式使用exp/imp的演示

以交互方式使用exp/imp的演示

总所周知,用exp/imp对数据库进行逻辑备份,包括表,用户,整个数据库,我们通常所熟悉的是使用命令行指定参数的方式来做的。下面我来演示一下不太常用的以交互方式的操作,操作很简单,就是只要输入exp/imp的命令,以交互方式提供导入导出所需的参数来完成。虽然这种方式没有实际的应用意义,但作为Oracle提供的一种方法,我们也是有必要熟悉一下的。----------------------------华丽丽的分割线----------------------...
ORA-28547 故障处理一例

ORA-28547 故障处理一例

上周去给客户培训Oracle,讲到DG部分做实际配置演示的时候,碰到了ORA-28547故障,客户的数据库时11.2.0.1的版本,Window平台。之前已经按照步骤把DG全部配置完成了,当准备在备库启用redo apply的时候,照例先检查一下两边远程归档路径是否有效:select dest_name,status,error from v$archive_dest where dest_id<3;此时备库的本地和远程归档路径状态都是VALID,但...
Oracle控制文件多路复用时要注意的问题

Oracle控制文件多路复用时要注意的问题

由于控制文件对于数据库的重要性很高,所以通常在dbca建库以后,都会对控制文件多路复用。如,在Oracle10g中,默认控制文件有3份,内容完全一致,通常位于$ORACLE_BASE/oradata/SID/下面,名字为control01.ctl,control02.ctl,control03.ctl,而到了11g,默认只有2个份,一个位于$ORACLE_BASE/oradata/SID/下面,名字为control01.ctl,另一份位于$ORACLE_B...
Oracle 使用with要小心了--谓词不能推进

Oracle 使用with要小心了--谓词不能推进

今天看到一条SQL大量使用了with,开发人员为了逻辑清晰,把一些结果集先用with缓存起来,后面还有很多地方用到这个结果集,原始的SQL需要执行2个多小时。优化方法是将把最先缓存的SQL放到用的地方,优化后12s。下面来模拟这个场景,不用纠结SQL的意义,把当时的SQL抽象就是这样的。可以看到SQL1中先把语句a中的结果缓存起来,当语句b要用的时候,object_id上的索引是用不到的,它只有在结果集中过滤。简单点说,SQL1相对于SQL2来说,谓词没有...
Oracle自动统计信息的收集原理及实验

Oracle自动统计信息的收集原理及实验

从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启。 调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息。该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。收集的规则是user_tab_modif...
Oracle 11g系统自动收集统计信息的一些知识

Oracle 11g系统自动收集统计信息的一些知识

在11g之前,当表的数据量修改超过总数据量的10%,就会晚上自动收集统计信息,如何判断10%,之前的帖子有研究过:Oracle自动统计信息的收集原理及实验。这个STALE_PERCENT=10%,是无法修改的,如果表非常大,10%是非常多的数据,非常有可能造成统计信息不准确。 在11g之后,STALE_PERCENT=10%是可以修改的,分为全局(DBMS_STATS.SET_GLOBAL_PREFS )和表级别(DBMS_STATS.SET_TABL...
Oracle 锁定临时表统计信息及锁住后是否能用动态采集的hint

Oracle 锁定临时表统计信息及锁住后是否能用动态采集的hint

全局临时表的统计信息是不能被收集的,如果被收集,它的统计信息肯定为0,会造成执行计划不准,所以要锁定它的统计信息,禁止系统自动收集。--先解锁表的统计信息,然后删除表的统计信息,最后锁住表的统计信息declare v_sqlvarchar2(500); cursor rowList1 isselect"begin dbms_stats.unlock_table_stats(user,""" || table_name ||"""); end;" from ...
<< 811 812 813 814 815 816 817 818 819 820 >>