Welcome 微信登录

首页 / 数据库 / MySQL

[Oracle] 锁(Lock)的探讨

[Oracle] 锁(Lock)的探讨

1、锁(Lock)的原则Oracle当中的锁通常是业务层面的问题,锁是为了在并发的情况下保证数据库的一致性,因此没有并发就没有锁。Oracle的锁有如下几个原则:只有被修改时,行才会被锁定,因为有UNDO的关系,读不会产生行锁。当一条语句修改了一条记录,只有这条记录上被锁定,在Oracle数据库中不存在锁升级。当某行被修改时,它将阻塞别人对它的修改。当一个事务修改一行时,将在这个行上加上行锁(TX),用于阻止其它事务对相同行的修改。读永远不会阻止写,但唯一...
MySQL 在Mac 控制台中 SQL乱码

MySQL 在Mac 控制台中 SQL乱码

1、场景:今天在upload到客户机器上,mysql数据库在备机上,备机在局域网中,需要的ssh主机,再ssh备机 (备机) 有点类似下面的架构导致我不能直接工具connection上去,只好SSH上去,然后mysql -u root -p 上去,insert update,但是在insert select 等操作数据的时候,出现了乱码。第一个想到了便是 variables 没有设置好,show了下,确实全部set character_set_client...
Oracle预处理查询异常

Oracle预处理查询异常

在工作中发现这样的问题:在Oracle的10g之前的版本,存在一个bug,即用PreparedStatement预处理去动态查询数据时,用占位符?代替的字段,如果是char类型的,那么在执行时用来代替?的变量必须和该字段的长度相同,如果字段长度不足,用空格补充够的位数,否则查询不到正确的结果。如果该字段不是char类型的就不存在这样的问题。昨天出了一个奇怪的问题,hibernate通过实体Id(char(10)型)取得数据,session.find("fr...
数据类型不一致导致的SQL不走索引

数据类型不一致导致的SQL不走索引

前几天,同事发来一条SQL,说是更新操作的时候执行的很慢,我看了下,数据量也不是很大。再查看执行计划,发现是执行路径错误导致的,可是为什么会走错误的执行路径呢?统计信息并没有太大的问题。在这里模拟下:数据准备:--1.数据准备,表一:DROP TABLE t_test_1;create table T_TEST_1( owner VARCHAR2(30), object_name VARCHAR2(128), subobject_name VAR...
学习Oracle需要掌握的重要知识点

学习Oracle需要掌握的重要知识点

学习Oracle需要掌握的重要知识点1.基础语法这个是必须要会 的,什么select,insert,update,where 等等。掌握这些知识基本上可以做一些跟验证的工作,测试的工作。目标定位于运维或是测试。2.存储过程的编写要知道如何写存储函数,存储过程。相互之间如何调用。掌握这个知识基本上可以做一些基础开发工作。目标定位位于软件开发。3.包的设计知道什么是包,如何设计包。掌握这个知识点基本上可以做数据库的设计工作。目标定位于高级软件开发。4.并发,事...
RMAN 提示符下执行SQL语句

RMAN 提示符下执行SQL语句

在手动恢复数据库时,有时候需要在SQL*Plus提示符以及操作系统提示符,RMAN提示符下来回切换显得有些繁琐。实际上RMAN为我们提供了命令行下执行一些简单的SQL语句以及PL/SQL的方法,以避免上述情形。本文描述了RMAN提示符下的一些常用命令及其用法。1、RMAN提示符下执行SQL语句语法: SQL "<command>" ;语法比较简单,就是提示符下输入SQL,后接SQL命令,命令用单引号括起来command 通常为可执行的SQL命令...
Oracle存储过程实现导出表结构

Oracle存储过程实现导出表结构

要将Oracle数据库中的表结构全部倒出来,有分区表和非分区表,涉及到的字段有number、data、timestamp、varchar2、char。所以只针对了这几个字段的表的导出,如果表有其类型字段,则需要添加代码。分区表都是以时间做分区的,所以导出来的分区表结构都是以时间分区的。只是根据了自己实际情况写的,根据不同的情况要改写!存储过程带一个参数,默认为Y,导出分区表的分区,如果指定其他值,如 execu table_frame("N"),则只导出表...
Oracle数据库名与Oracle实例名的关系

Oracle数据库名与Oracle实例名的关系

1 数据库名1.1 数据库名的概念数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。如果一台机器上装了多个数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。数据库名在$Oracle_HOME/admin/db_name/pfile/init.ora(或$ORACLE_BASE/admin/db_name/pfile/init.ora或$ORACLE_HOME/dbs/SPFILE...
Oracle客户端工具连接数据库服务器问题解决整理

Oracle客户端工具连接数据库服务器问题解决整理

经常遇到PL/SQL Developer等依赖Client的工具无法连接Oracle数据库服务器的问题。至今也没完全理清楚,先发个帖总结一下目前的方法,后面会不断完善。方法一:重启Oracle服务器端相关服务,包括...TNSListener,所用的数据库实例的服务。可直接在Windows的“服务”中重启。或者(可使用的命令):lsnrctl stoplsnrctl startlsnrctl reloadsqlplus / as s...
提高SQL查询效率

提高SQL查询效率

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!...
MySQL主外键表关联表数据的同时删除

MySQL主外键表关联表数据的同时删除

今天做了实验,要求将满足某个条件的主表和相关联的几个子表的数据全部删除,其实这个要求很简单,如果子表在创建外键的时候指定了ON DELETE CASCADE,则直接从主表中删除相关记录,子表中数据也会一起删除。但是现在的子表外键创建时候没有加此语句,如何来实现呢?条件:p(父表)没有ON DELETE CASCADE c(子表)mysql> delete a,b from p a,c b where a.id=b.id;ERROR 1451 (23...
Oracle 10g ORA-12154 TNS:无法解析指定的连接标示符

Oracle 10g ORA-12154 TNS:无法解析指定的连接标示符

自己总结和整理下:1.检查注册表,HKey_LocalMachineSoftwareOracle下面的Oracle_Home,若不对,修改成正确的;2.卸载ODP for .Net (或者卸载ODT for .Net, ODT中包含ODP, ODT 是VS.Net的一个集成插件,用于连接和浏览oracle数据库,并且提供对oracle数据库的拖拽操作,类似VS.Net对于SQL Server的资源管理器);3.如果ODT for .Net的目录依然存在,删...
<< 671 672 673 674 675 676 677 678 679 680 >>