oracle第二天

来源:互联网 发布:奋斗拼搏的诗句 知乎 编辑:程序博客网 时间:2024/05/16 11:09
 

数据库

 

 

数据文件  控制文件  重做日志文件

体系结构

 

 

 

 

 

 

数据 文件:用户的表,索引等数据

服务器进程,随时准备为你服务完成,人和死的数据的交互。----用户怎样读取数据

Some other process like :PMON,SMON DBWR LGWR CKPT etc.

Ps –ef用来查看进程,ps –ef|grep 过滤 ps –ef|grep dbw 查看 DBWR oracle中进程的名字是以ora_开头的如  ora_dbw0_prod

服务器进程会显示为一个连接的形式,若(DESCRIPTION=(LOCAL=YES)(ADDRESS=(….))

Kill主要进程可以使数据库异常宕机。是一种比较好的黑。

大部分服务器进程是空闲的。

PGA,每个进程只能看到自己的PGA,PGA program global area进程相当的大 ,比SGA大。private

SGA  System Global Area Shared ,公共资源,所以存在相当多的锁,会消耗很多的资源。

SGA有以下 几个部分:

共享池:share pool 包括:库高速缓存liberary cache 保存执行计划 存储有关最近使用的SQL/PLSQL语句的信息。可以直接使用,如第一次执行了一条SQL第二次可以将执行计划缓存起来,以备第二次使用。当执行时,首先由hash算法寻找SQL如果寻找不到,就执行当前SQL并将此SQL存入liberary cache。库缓存是有大小限制,所以用改进的LRU算法来清除数据。 数据库字典缓存:用来保存元数据的。

Buffer cache :保存块,当用户读取时,看看在buffer cache 中有咩有,如果有的话,取出相应的行,给用户。如果没有的话,从磁盘读,并将相应的块放在buffer cache。主要目的,尽量减少物理I/O。这里有两个概念:物理读和逻辑读。

Java pool

Redo log cache

大型共享池

重做日志缓存

Java pool

Buffer cache

Sga

 

 

 

Dictionary cache

Share pool

 

 

 

 

Liberary cache

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Show sga;

Show parameter 参数

Alter system set 参数=值 scope =BOTH|MEMORY|SPFILE(参数文件,本次不生效,下次启动的时候生效,暂时先不生效)

              SID=….

Show db_cache

显示:db_cache_size   big integer 0

Alter system set  Db_cach_size=10M;for instance

进程介绍

DBWn:脏块有DBWn后台进程负责刷新进数据文件。作用:把用户修改的数据写回磁盘。内存和磁盘不一致的块称作脏块。用户只是产生一个脏块,所以,必须将数据从内存同步进磁盘。这个同步的过程是由DBWn来实现的。DBWn会收集一定数量的块后才会工作。工作模式:自觉、呼叫。

Show parameter mttr来设置DBWn恢复,或者写脏块的速度,频率。

LGWR:把用户的修改操作

SNON:process monitor

CKPT:check point,主要用来保证数据不丢失。

ARCn:每切换一次,ACRn将日志文档归档到其他位置。归档:所有的record

 数字型函数

ROUND(column|expression.n)对列或表达式的值

RRUNC(column|expression.n)

Select Round(135.14,-1) from dual;   135

MOD

日期函数

日期:世纪,年,月,日,时,分,秒。

可以只根据格式显示

Alter session set nls_date_format=”yyyy-mm-dd hh24:mi:ss”;只在当前会话中生效,也就是只针对当前连接。常用sysdate;

所有依赖环境的SQL尽量不要用  如’08-08-08’;

日期的计算。TO_DATE(DATE,FORMAT);这样用的话,比较严谨。与环境变量无关。

Select to_date(‘2008-08-08 8:00:00’,’yyyy-mm-dd hh24:mi:ss’)+10 from dual;

这样就加上了十天。

当添加小时的时候用  1/24代表一个小时 继续除 即可得到相应的 分钟-----

ADD_MONTHS可以实现不用管本月是多少天的问题。

Next_day下一周的第几天是几号。

Last_day 本月最后一天

日期的四舍五入

Round对年月日开始对日期进行四舍五入。

如果是半年,则月和天变为一号。

对月四舍五入 则天被四舍五入。

对天 则是星期。

还有时分秒。

默认没有参数的情况是:小时。

Trunk 截断

字符转换

To_char变成任何自己想要的格式。当转换过短的时候,结果会变成#########很多的################转换不了,宽度不够,需要调整。

To_number(字符,格式) to_number(字符)

Nvl 空值可以转换为零的函数。

Coalesce(expression…..)第一个不为空的值

Case看做一个函数,并不是一个语句流的控制。以为其总会返回值。

Case  expression  when expression then result1

                    When expression then resullt2;

Select Case nvl(sal,0) when 0 then ‘new guy’||name else name end from t1;如果是工资为0则显示为新员工new guy。

Decode(判断表达式,判断结果1|判断结果2…….)判断表达式和结果表达式相等,则满足条件。

Decode(nvl(sal,0),0,’new’||name,1000,’leader’||name)

等值连接

 笛卡尔乘积。一个表的一行和另一个表的所有行相连。

列和表的后面加空格 跟别名。

两表相连  然后生成新表和第三个表相连。

普通连接:等值连接,不等值连接。

外连接:在进行连接的时候,即使某个表的条件不满足 ,仍然让其显示出来。在少的后面添加(+)少行的后面:

Select spbh,mc from sp,lx where sp.lxbh(+)=lx.lxbh;

Select nvl(spbh,’empty’),mc from sp,lx where sp.lxbh(+)=lx.lxbh;让空的地方有显示的东西。更适合判断。

其实做外连接和右外连接没有根本型的区别。

、不能有IN,不能有OR但可以有and、

自连接:自己连接自己。


函数

字符函数、数字函数、日期函数、转换函数

函数都返回结果。

单行函数:只对某行的值操作、多行函数:对多行的值进行操作如sum(salary)。

函数的嵌套形式。

数据类型的自动转换。Select pow(‘2’,’10’)form dual;这个时候会自动转换的。

函数的使用位置非常灵活。Sql reference.包括所有的函数和所有的命令。

SUBSTR

Lengthb  返回字节 

Instr出现位置。V$dbfile 常用的一个视图。LPAD RPAD  用来凑总字符数.
Trim(leading|trailing|both from)

Replace

 

组函数

有叫多行函数。

Sum avg 求和时空值被忽略,求平均时空值亦被忽略。当想用的时候可以提那家nvl来转化。Max min也不会考虑空值。处理空就用nvl

Count 仍然不考虑空值。当count(*)的时候会把空值考虑进去。

Distinct

 

 

分组命令:group by。分组之后空值是可以显示出来的。分组之后加条件,用having。在分组之后 才会由意义。Where在分组前  having在分组后  尽量用where去过滤数据。

原创粉丝点击