学习《Oracle 9i10g编程艺术》的笔记 (九) 进程
1.Oracle 实例主要有3 类进程
Oracle 中的各个进程要完成某个特定的任务或一组任务,每个进程都会分配内部内存(PGA 内存)来
完成它的任务。Oracle 实例主要有3 类进程:
服务器进程(server process):这些进程根据客户的请求来完成工作。我们已经对专用服
务器和共享服务器有了一定的了解。它们就是服务器进程。
后台进程(background process):这些进程随数据库而启动,用于完成各种维护任务,如
将块写至磁盘、维护在线重做日志、清理异常中止的进程等。
从属进程(slave process):这些进程类似于后台进程,不过它们要代表后台进程或服务
器进程完成一些额外的工作。
2.Oracle 术语中连接和会话之间的区别
连接(connection)就是客户进程与Oracle 实例之间的一条物理路径(例如,客户与实例之间的一个网络连接)。会话(session)
则不同,这是数据库中的一个逻辑实体,客户进程可以在会话上执行SQL 等。多个独立的会话可
以与一个连接相关联,这些会话甚至可以独立于连接存在。
在一条连接上可以建立0 个、一个或多个会话。各个会话是单独而且独立的,即使它
们共享同一条数据库物理连接也是如此。一个会话中的提交不会影响该连接上的任何其他会话。实际上,
一条连接上的各个会话可以使用不同的用户身份!
连接(connection):连接是从客户到Oracle 实例的一条物理路径。连接可以在网络上建
立,或者通过IPC 机制建立。通常会在客户进程与一个专用服务器或一个调度器之间建立连接。
不过,如果使用Oracle 的连接管理器(Connection Manager ,CMAN),还可以在客户和CMAN
之间以及CMAN 和数据库之间建立连接
会话(session):会话是实例中存在的一个逻辑实体。这就是你的会话状态(session
state),也就是表示特定会话的一组内存中的数据结构。提到“数据库连接”时,大多数人首
先想到的就是“会话”。你要在服务器中的会话上执行SQL、提交事务和运行存储过程。
3.进程任务
专用服务器进程和共享服务器进程的任务是一样的:要处理你提交的所有SQL。当你向数据库提交一
个SELECT * from EMP 查询时,会有一个Oracle 专用/共享服务器进程解析这个查询,并把它放在共享池
中(或者最好能发现这个查询已经在共享池中)。这个进程要提出查询计划,如果必要,还要执行这个查询
计划,可能在缓冲区缓存中找到必要的数据,或者将数据从磁盘读入缓冲区缓存中。
相关文档:
经常做一些数据库操作,在建立表的时候,选择字段类型时,有关字符串类型的选择总是有些模糊。
。char
。varchar2
。nvarchar2
。nchar
关于上面两个我有点印象。CHAR的长度是固定的,而VARCHAR2的长度是可以变化的,比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符)� ......
虽然网上有很多,但还是在这里记下方便查找:
SELECT i.ksppinm NAME, i.ksppity TYPE, v.ksppstvl VALUE, v.ksppstdf isdefault
from x$ksppi i, x$ksppcv v
WHERE i.indx = v.indx
AND i.ksppinm LIKE '\_%&par%' ESCAPE '\';
......
完全卸载Oracle
软件环境:
1、Windows 2000+ORACLE 8.1.7
2、ORACLE安装路径为:C:\ORACLE
实现方法:
1、 开始->设置->控制面板->管理工具->服务
停止所有Oracle服务。
2、 开始->程序->Oracle - OraHome81->Oracle Installation Products->
Universal Installer
卸装所有Oracle产品, ......
1.数据库独立性
将应用从数据库A 移植到数据库B 时,我时常遇到这种问题:应用在数据库A 上原本无懈可击,到了
数据库B 上却不能工作,或者表现得很离奇。看到这种情况,我们的第一个想法往往是,数据库B 是一个
“不好的”数据库。而真正的原因其实是数据库B 的工作方式完全不同。没有哪个数据库是错的 ......
今天做了1个数据导入需求,文本记录有12万多条,TXT文件大小6M多,因为以前都是用oracle的text import方式导入,刚试验了一下,不灵验,当导入到2万多条的时候,PLSQL就当掉了,走不动了。
因为考虑到1次导入,所有决定采用SQLLOADER的方式。 ......