![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ORACLE数据库
张振磊
系统架构师,软件设计师,oracle认证专家
展开
-
ORACLE11g“空表”无法导出的深入分析
我觉得将空表无法导出描述为没有使用过的表无法导出应该更确切一些。oralce11g为了节省存储空间,新建表的时候默认是不分配segment的。既然segment都没有,就不用谈exp了。但是oracle还是预留了系统参数DEFERRED_SEGMENT_CREATION(延迟创建segment)。这个参数,默认是true。我们可以将他改成false。这样的话,再创建表的时候就会立即分配segmen原创 2016-03-01 20:38:19 · 676 阅读 · 2 评论 -
oracle培训第二天
1.空值空值的数据行将对算数表达式返回空值select ename,sal,comm,sal+comm from empselect sum(sal),sum(sal+comm) from emp比较表达式有空值时返回假select ename,sal,comm from emp where sal >=comm非空值与空值做||时,nu原创 2017-05-06 14:37:50 · 244 阅读 · 0 评论 -
oracle培训第三天
1.约束约束是数据库能够实现业务规则以及保证数据遵循ER模型的一种手段。约束的语法列级约束:只能引用一个列,表中可以有多个列级约束表级约束:引用一个或多个列,通常用来定义主键追加约束:建表后,再通过alter table追加约束select * from user_constraints;select * from user_cons_colum原创 2017-05-06 14:38:36 · 298 阅读 · 0 评论 -
oracle培训第四天
1.DML操作及名称空间模式与对象名称空间的关系模式(schema)是一种逻辑结构,它对应于用户,每建一个用户就有一套模式与之对应。我们通常说对象的唯一标识符是前缀为模式名加上对象名称,如scott.emp同一模式下的对象是不可以重名的。比如在scott模式里,表emp是唯一的,不能还有另外对象叫emp。但不同的模式下可以重名。create table em原创 2017-05-06 14:39:21 · 283 阅读 · 0 评论 -
oracle培训第五天
1.oracle体系架构实例和数据库oracle server :database + instancedatabase :data file ,control file ,redolog fileinstance:an instance access a databaseoracle memory:sga + pgainstan原创 2017-05-06 14:40:44 · 255 阅读 · 0 评论 -
频繁更新基础数据表造成的数据库死锁
最近,有个比较大的项目出现数据库死锁。经过分析数据库trace文件,发现死锁的是基础数据表疾病诊断。根据对应的sql语句找到了问题所在,门诊医生录入诊断时,程序里面同时去更新疾病诊断基础表,造成诊断基础表被锁。 经过分析,诊断基础表共27886条记录,分布在312个数据块中,每个数据块包含75到114条不等的记录。由于数据库服务器安装的oracle rac, 共两个节点,or原创 2017-05-18 22:18:51 · 4988 阅读 · 0 评论 -
oracle存储过程自治事务
pb调用存储过程的时候,使用了事务,为了存储过程的逻辑功能完整,往往在存储过程中也会使用事务。如何保证存储过程内外的事务合理使用显得尤为重要。pb调用存储过程的事务,我们称其为主事务。他与存储过程内的事务关系,无非就两种情况。两个事务是同一个事务或者两个事务是独立的两个事务。存储过程中的事务要不要作为独立的一个事务要根据情况而定。oracle提供了参数PRAGMA AUTONOMOUS_TRA原创 2017-07-07 21:31:50 · 3954 阅读 · 0 评论 -
到底应该使用count(*) 还是count(1)
关于count方法一直存在争议,count(*)、count(列名)、count(常量),到底应该使用哪个?我认为应该是count(*),count(*)是SQL92定义的标准统计数的方法。我曾经有幸阅读过阿里巴巴的开发规范,里面提到强制使用count(*)。 我通过以下四个查询命令来说明三个方法的区别: 1.select count(*) from emp;原创 2017-09-21 21:05:31 · 2269 阅读 · 0 评论 -
单行子查询返回多个行
大家是不是也经常碰到单行子查询返回多个行的错误提示。我已经碰到数次这种错误了,这种错误是基于数据存在的,开发人员也许在最初写这个查询语句的时候没有合适的数据,所以没有发现错误,当满足条件的数据出现后才会给出这种错误提示,特别是非常复杂的查询语句,排查原因变得非常困难。 我列举两条简单的查询语句供读者学习。1.select * from emp where job =(sel原创 2017-09-21 21:47:02 · 50596 阅读 · 8 评论 -
null的比较
Null的含义是不确定的意思,在oracle数据库中 ‘’代表的也是null。由于null的特殊性,null有着自己的判断方法。下面两条查询语句相信很多读者都碰到过,甚至无意写过。当null跟在等于后面时,是查询不到记录的。select * from emp where job = null or job =’’;select * from emp where job ‘’;正确的写原创 2017-09-21 21:51:15 · 905 阅读 · 0 评论 -
分组函数的嵌套太深
分组函数最多嵌套两层,当三层或者三层以上时,就会出现分组函数的嵌套太深的提示。我通过下面一条查询一句进行分析。select count(avg(sum(sal)))from emp group by deptno; 这条查询语句,是根据部门号进行分组,第一层分组函数是求每个部门的工资支出和,当第一层分组函数再嵌套一层分组函数求所有部门工资支出的平均值时,结果就只剩一行了原创 2017-09-21 22:10:08 · 6565 阅读 · 0 评论 -
oracle培训第一天
0.常用命令tnsping orcl(Transparent Network Substrate透明网络底层)查看监听状态lsnrctl status监听停止 lsnrctl stop监听启动 lsnrctl startsqlplus /nologconn /as sysdba数据库关闭 shutdown immediate,shutdown原创 2017-05-06 14:36:29 · 305 阅读 · 0 评论 -
oracle五天培训之培训大纲
主讲:张振磊(oracle认证专家,系统架构师,软件设计师)第一天(2016.10.10 19:30-21:30)1.sql命令类别(DML数据操纵语言,DDL数据定义语言,事务控制语言TCL,数据控制语言DCL)2.常用函数3.数据类型4.where子句中常用的运算符5.分组函数6.数据限定与排序第二天(2016.10.11原创 2017-05-06 14:34:06 · 1038 阅读 · 0 评论 -
纪念OCP到手
今年年初的时候,记得自己说过要考ocp,经过努力,终于在2016年11月11号,32岁生日这天,拿到了ocp。没有参加培训,完全凭借自学通过了考试。三门科目的成绩也不算很糟。047得了100%,052得了93%,053得了92%。原创 2016-12-29 20:52:35 · 667 阅读 · 0 评论 -
oracle参数之DEFERRED_SEGMENT_CREATION
众所周知,在清空表内所有数据时,truncate比delete要快很多,原因是,delete语句每次删除一行,都在事务日志中为所删除的每行记录一项。truncate通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。但是如果表存在外键的话,是不能使用truncate的 。 在使用的过程中,我发现某个存在外键的表,使用truncate提示成功了。一开始,我在怀原创 2016-02-18 19:42:17 · 7483 阅读 · 2 评论 -
oracle11g密码效期及用户锁定
出于安全考虑,oracle11g密码默认的效期为180天,超过180天,用户将无法连接到数据库。默认密码尝试次数为10次,超过10次,用户将被锁定。具体参数可以通过下列语句查看:1.select * from dba_profiles where profile ='DEFAULT' and resource_name ='PASSWORD_LIFE_TIME';2.selec原创 2016-02-18 20:28:13 · 982 阅读 · 3 评论 -
PL/SQL Developer在64位操作系统上通过instantclient连接到oracle数据库
Instant Client下载地址http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html。原创 2016-03-04 20:25:18 · 774 阅读 · 2 评论 -
sqlplus连接到远程数据库
我一直以为sqlplus是服务器端的软件,今天我才知道sqlplus是客户端软件,用sqlplus也能连接到远程数据库。原创 2016-03-06 18:54:41 · 32307 阅读 · 5 评论 -
ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist的原因分析
今天突然接到同事电话,说oracle数据库连接不上了,我远程过去用pl/sql developer登录,提示ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist.意思是oracle无法使用,共享内存领域不存在。原创 2016-03-07 22:35:45 · 14385 阅读 · 1 评论 -
oracle和sqlserver中空值的区别
空值在sqlserver里面并不是NULL,可以填入非空的列中,但是在oracle中里面空值会自动转换为NULL,所以不能插入非空的列中原创 2016-03-10 22:31:36 · 706 阅读 · 0 评论 -
ORACLE中SID和SERVICE_NAME的区别
在讲解SID和SERVICE_NAME之前,先说一下实例。实例是操作系统中访问数据库所需要的一系列的进程和内存的集合。没有任何数据文件,实例也可以启动。但是要想访问数据库,必须把数据库文件加载进实例中。实例和数据库的区别可以简单概括为:实例是临时的,它只在相关的进程和内存集合存在时存在,而数据库是永久的,只要文件存在它就存在。一个实例只能对应一个数据库,但是一个数据库可以由多个实例对应(如RAC)原创 2016-02-26 21:26:37 · 52108 阅读 · 12 评论 -
ORACLE的dblink突然连不上的问题分析
昨天中午10点,突然接到总经理电话,说有客户反应LIS和PACS无法收费了,必须马上给处理掉。但是客户端PC却能连接到oracle服务器,没有使用dblink的业务运行都正常。LIS和PACS计费由于要连接不同的数据库,使用了dblink。经过初步排查发现dblink无法连接了,重新创建dblink也不好用。突然想到,会不会是服务器的所有端口号被占满了呢?因为以前有家客户的服务器就是由于所有端口号原创 2016-02-28 12:19:31 · 11189 阅读 · 2 评论 -
oracle编译存储过程提示表或视图不存在的问题分析
今天有同事跟我反映有个存储过程编译报错,提示表或视图不存在。存储过程中调用的那个表t是另一个用户b的表。但是当前用户a已经拥有dba角色了,为什么访问不到用户b的表t呢?另一同事说,只要给用户a分配操作用户b的表t的权限就可以了。他的解释是用户即便拥有dba的角色也不一定能操作别的用户的对象。很明显这个解释是错误的。dba角色是数据库管理员的角色,肯定能操作数据库中所有用户的对象。我开始怀疑问题是不是出在存储过程上了。原创 2016-03-25 22:39:32 · 21511 阅读 · 0 评论 -
flashback table to before drop外键约束无法恢复的原因分析
flashback table to before drop外键约束无法恢复的原因分析原创 2016-07-20 18:57:58 · 1184 阅读 · 0 评论 -
触发器里面before和after的区别
关键字before和after用于标识触发时间,顾名思义,before代表触发器里面的命令在DML修改数据之前执行,after代表触发器里面的命令在DML修改数据之后执行。 读者可以结合应用场景选择使用before或者after。 下面编者分别给出before和after的举例。 before举例: 在emp表上面创建触发器,当原创 2017-10-09 22:29:59 · 37266 阅读 · 0 评论