代码改变世界

10月14日~15日Oracle培训日记

2006-10-17 21:31  java ee spring  阅读(151)  评论(0编辑  收藏  举报

这两天由Oracle专家石雨博士为大家讲解Oracle,大概内容如下:
Oracle体系结构:Oracle实例与database
Oracle实例包括多个进程与数据内存区
数据内存区包含Data Buffer Cache、Redo Log buffer,shared pool(library cache,Data dictionary),
数据文件、控制文件、日志文件,参数文件,Archive文件
sql plus语法
sql plus中操作的行的概念是指一条sql命令分成的多行,sql plus中缓存的是最后的一条sql命令的所有行。
日期和字符串都要用单引号(')引起来,日期格式用select sysdate form dual;可以看到。
基于select 列中没有出现的字段进行排序也是可以的。

字符串连接符(||),在sql plus中执行DML语句时,别忘了commit;

select SYSDATE from dual 可以查询系统的当前时间,从而也可以了解当前的缺省日期格式。dual伪表
日期的算数运算举例:
SELECT ename, (SYSDATE-hiredate)/7 WEEKS
  2  FROM   emp
  3  WHERE  deptno = 10;
日期,字符串,数字的转换函数:to_Number,to_date,to_char等.

各种数据库管理工具的介绍

nvl将NULL转变为一个指定的值,因为null与任何类型计算的结果都是null。其有用之处,计算平均值。null的行是否计算的那个语句是什么?忘了。
decode相当于if...else,swith...case。对比学习

Archive记录的是Redo log的本分,redo log文件再被循环使用时,会将原来的内容复制到Archive文件中,Archive是在线log的离线拷贝。
数据库很重要的一个概念:把磁盘文件中的数据调入内存中,数据库实例操作的是内存中的数据,内存中的数据往往是最近使用过的数据块。

如果自己不创建自己的表空间,那就用缺省的表空间,当数据库用了很长时间后,会在系统表空间中产生很多碎片,将导致系统性能下降。也就是自己的数据影响了系统的表空间。

connect / as SYSDBA,/表示本机的SYS帐户,as 表示以哪种身份连接数据库。
startup启动之前,已经有instance实例(可以是空闲的,即没有mount database的进程),然后用startup mount了一个数据库实例。

自连接的另一个例子:查询出员工的名称及其上级的名称,上级名称是根据上级的id查询出来的。计算平均值时是根据该字段的非空记录进行计算的。group可以对多列进行分组,两列之间用逗号分隔。
谁的薪水比王淘的高,可以用子查询来实现。select .. from where salary>(slect 王涛的薪水),在有条件的地方都可以使用子查询。
emp.Empty%TYPE,可以将%理解成‘的’,某个表中的某列‘的’类型。编程时想定义一个变量,而让这个变量的类型等于某一字段的类型,用这个%就很省事。
database->Tablespace->segment->extent->block,可以将segment理解成数据库中的表(觉得有点不妥,例如,有回滚段)
只读表空间,不能修改和删除这个表空间中的表中的数据,但可以删除这个表的定义,因为表的定义在系统表空间中。
产生多组日志文件组,怎么理解?
个人理解:oracle中的表空间相当于文件组。

如果用户创建了自己的表空间,那么用户创建的表将自动在这个表空间上创建。

如何理解v$datafile?存在硬盘数据字典中的信息,在运行时读取到内存中的参数信息临时变量,即动态性能视图。

创建用户,创建角色,授予权限。