Oracle常????}集(三)数据库教程

2024-06-09

Oracle常????}集(三)数据库教程(精选9篇)

Oracle常????}集(三)数据库教程 第1篇

Oracle 9i共提供了16种标量数据类型,如表7.4所示,

Oracle 9i的数据类型数据库教程

表7.4 Oracle 9i的标量数据类型名称含义Char用于描述定长的字符型数据,长度<=字节varchar2用于描述变长的字符型数据,长度<=4000字节nchar用来存储Unicode字符集的定长字符型数据,长度<=1000字节nvarchar2用来存储Unicode字符集的变长字符型数据,长度<=1000字节number用来存储整型或者浮点型数值Date用来存储日期数据Long用来存储最大长度为2GB的变长字符数据Raw用来存储非结构化数据的变长字符数据,长度<=2000字节Long raw用来存储非结构化数据的变长字符数据,长度<=2GBrowid用来存储表中列的物理地址的二进制数据,占用固定的10个字节Blob用来存储多达4GB的非结构化的二进制数据Clob用来存储多达4GB的字符数据nclob用来存储多达4GB的Unicode字符数据Bfile用来把非结构化的二进制数据存储在数据库以外的操作系统文件中urowid用来存储表示任何类型列地址的二进制数据float用来存储浮点数

 

Oracle常????}集(三)数据库教程 第2篇

(2)出现如图6.45所示的【数据库】界面,

(3)出现如图6.46所示的【概要】界面。

(4)出现如图6.47所示的【删除确认】界面。

Oracle常????}集(三)数据库教程 第3篇

系统环境:

1、操作系统:Windows 2000 Server,机器内存128M

2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版

3、安装路径:D:ORACLE

卸载步骤:

1、开始->设置->控制面板->管理工具->服务

停止所有Oracle服务,

2、开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer

卸装所有Oracle产品

3、运行regedit,选择HKEY_LOCAL_MACHINE OFTWAREORACLE,按del键删除这个入口,

4、运行regedit,选择HKEY_LOCAL_MACHINE YSTEMCurrentControlSet ervices,滚动这个列表,删除所有Oracle入口

5、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标

6、重新启动计算机,重起后才能完全删除Oracle所在目录

7、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:Oracle,删除这个入口目录及所有子目录,

并从Windows 2000目录(一般为C:WINNT)下删除以下文件

ORACLE.INI、oradim80.INI

Oracle常????}集(三)数据库教程 第4篇

需求前提:数据每年变化1~2次,软件预计生命周期50年

实践环境:Oracle Spatial

术语表:时空对象,快照

时空对象:一个地理目标从诞生到消亡所经历的空间和时间范围及其属性信息,这是一个为处理时空数据方便而抽象出来的概念,相当于全信息模型中的全信息对象。为了理解时空对象,我们以二维地物为例。二维地物在二维空间中占据一定的空间范围,表现为一个二维几何体,也就是它的几何属性。如果再增加一条时间轴,成为(x,y,t)坐标系,并认为任何的空间对象都有诞生和消亡,则这个二维地物就在(x,y,t)坐标系中占据了一定的三维空间。我们就把二维地物从诞生到消亡这一时间段所占据的空间-时间范围称之为“时空对象”。同理,也可以将时空对象扩展为三维的空间对象在时间维度上的延续,也就是四维对象。时空对象的属性信息是一张二维表。

快照:一个地理目标在某一特定时刻所占据的空间范围及其属性信息,或者说:时空对象在某一特定的时刻所占据的空间范围及其相应的属性信息。举例来说,地图上绘制了一个饭店的位置,大小,这就是饭店的一个快照。因为饭店是从某一时刻才诞生的,又会在某一时刻消亡,而在诞生和消亡之间,还可能会搬迁或扩建。所以地图上反映的仅仅是饭店在某一时刻的状态,所以称之为饭店在某一时刻的快照或时空对象在某一特定时刻的快照。注意,快照总是对应于某一特定的时刻,否则将失去快照的意义。快照的属性信息是时空对象属性信息表中的一条记录。

设计方向:

以时空对象的概念组织空间数据和属性数据,使得对地物变迁历史的查询和分析成为可能。

对应用层屏蔽历史数据的处理过程,将历史数据的处理当作数据库模块的功能之一。

技术要点:

1、 Oracle包变量的会话独立性

2、 动态视图技术(基于函数的视图)

图形解说:

时间

空间

对象诞生时间

观察方向

当前观察时间

对象消亡时间

快照3

快照2

快照1

时空对象(对象一)

对象三

对象二

从以上示意图中可以清晰地看出,每一个时空对象都是由多个快照记录所描述的。观察者的每一次观察都是基于一个特定的观察时间的。例如,图示中的观察者应该看到对象一的快照2和对象三的快照2,而无法看到对象二和对象一、三的其他快照记录。看不到对象二是因为在此观察时间之前,对象二已经消亡。看不到对象一的快照1是因为对象一有更新的观察数据快照2可以更好地近似反映对象二在当前观察时间所处的状态。

数据表:数据表的设计基于以上概念

对象表

Obj_id

NUMBER

时空对象标识号

Start_time

DATE

对象诞生时间

End_time

DATE

对象消亡时间

Obj_Attr

VARCHAR2(100)

对象属性数据

会因时间的流逝而发生变化的属性信息。

快照记录表

Obj_id

NUMBER

时空对象标识号

Snap_id

NUMBER

快照数据的唯一序号

Snap_time

DATE

快照时间

Snap_end

DATE

快照结束时间

属于同一时空对象的最近的下一条快照的快照时间,

设置此列的目的是为了查询方便。

Geom.

MDSYS.SDO_GEOMETRY

快照几何数据

Attr

VARCHAR2(100)

快照属性数据

会因时间的流逝而发生变化的属性信息。

存储过程:

利用Oracle中包变量的会话独立性,在包中建立以下几个基本的存储过程:设置当前观察时间,获取当前观察时间,利用当前观察时间和传入的Snap_time,Snap_end参数判断快照记录是否可见(Snap_Filter)。

视图:建立在快照记录表上的视图,基于存储函数Snap_Filter实现对表中记录的筛选。传入参数为:Snap_time,Snap_End.,返回值为此快照是否可见。

SELECT Obj_id, Snap_time, Geom, Attr

FROM 快照记录表

WHERE Snap_Filter(Snap_time, Snap_end) >0;

Obj_id

NUMBER

时空对象标识号

Snap_time

DATE

快照时间

Geom.

MDSYS.SDO_GEOMETRY

快照几何数据

Attr

VARCHAR2(100)

快照属性数据

触发器:

视图上的触发器,使应用层用户可以在视图中插入,修改,删除数据。

要点:   1、维护表中数据时要避免出现时间悖论,造成时间逻辑混乱。

2、快照记录表中的Snap_end列的维护稍微麻烦一些,应小心谨慎。

扩展与变化:

1、 支持多种观察模式。

为了查询功能的灵活性,可以增加几个扩展功能的存储过程:设置当前的观察模式,获取当前的观察模式,重写Snap_Filter函数以支持多种观察模式。

例如:

【对象历史追溯模式】此时当前观察时间这一参数失效,Snap_Filter的行为发生变化,视图中看到的是某一(或某几个)指定对象的所有快照。这种模式便于对单个对象的整个历史变迁过程加以追踪。

【时间段观察模式】此时需要设置的观察时间不是一个时间点,而是一个时间段。Snap_Filter的返回值也有了更丰富的含义,可以用不同的数字(例如:1,2,4)表示某一快照记录在当前时间段开始,结尾,中间的可见性。这种模式可以用于需要对两个不同时间点的数据进行比较的场合。

2、 增加对象关系表以描述时空对象之间的联系

时空对象之间可能会有各种各样的联系,例如:变化,融合,分裂等。可通过以下表格加以描述。

时空对象关系表

Obj_1

NUMBER

时空对象标识号

Obj_2

NUMBER

时空对象标识号

Relation_type

NUMBER

关系类型

使用方法:

如果是查询最新信息,即观察时间为系统当前时间,则直接访问视图即可。

Oracle常????}集(三)数据库教程 第5篇

通常情况下,Oracle数据库会先将这些临时数据存放到内存的PGA(程序全局区)内。在这个程序全局区中有一个叫做排序区的地方,专门用来存放这些因为排序操作而产生的临时数据。但是这个分区的容量是有限的。当这个分区的大小不足以容纳排序后所产生的记录时,数据库系统就会将临时数据存放到临时表空间中。这就是临时表空间的来历。看起来好像这个临时表空间是个临时工,对于数据库的影响不会有多大。其实大家这是误解这个临时表空间了。在用户进行数据库操作时,排序、分组汇总、索引这些作业是少不了,其会产生大量的临时数据。为此基本上每个数据库都需要用到临时表空间。而如果这个临时表空间设置不当的话,则会给数据库性能带来很大的负面影响。为此管理员在维护这个临时表空间的时候,不能够掉以轻心。要避免因为临时表空间设置不当影响数据库的性能。具体来说,主要需要注意如下几个方面的内容。

一、创建用户时要记得为用户创建临时表空间。

最好在创建用户时为用户指定临时表空间。如可以利用语句default temporary table space语句来为数据库设置默认的临时表空间。不过在Oracle数据库中这个不是强制的。但是笔者强烈建议这么做。因为如果没有为用户指定默认临时表空间的话,那么当这个用户因为排序等操作需要使用到临时表空间的话,数据库系统就会“自作聪明”的利用系统表空间SYSTEM来创建临时段。众所周知,这是一个系统表空间。由于在这个表空间中存放着系统运行相关的数据,一般的建议是用户的数据不能够保存在这个表空间中。那么如果将用户的临时表空间防止在这个系统表空间之内,会产生什么负面影响呢?

由于临时表空间中的数据是临时的。为此数据库系统需要频繁的分配和释放临时段。这些频繁的操作会在系统表空间中产生大量的存储碎片。当这些存储碎片比较多时,就会影响系统读取硬盘的效率,从而影响数据库的性能。其次系统表空间的大小往往是有限制的。此时临时段也来插一脚,就会占用系统表空间的大小。

为此数据库管理员需要注意一点,当没有为用户指定临时表空间时,用户排序等操作仍然需要用到临时段。此时数据库系统就会将临时段放入到系统表空间中。为此就会对数据库的性能产生不利的影响。所以笔者建议各位读者与数据库管理员,在创建用户的时候同时为用户指定一个默认的表空间,以减少临时段对系统表空间的占用。

二、合理设置PGA,减少临时表空间使用的几率。

当排序操作产生临时数据时,数据库并不是马上将其存储在临时表空间中。通常情况下,会先将这些临时数据存储在内存的PGA程序全局区内。只有当这个程序全局区无法容纳全部数据时,数据库系统才会启用临时表空间中的临时段来保存这些数据。但是众所周知,操作系统从内存中读取数据要比从硬盘中读取数据块几千倍。为此比较理想的情况是,这个程序全局区足够的大,可以容纳所有的临时数据。此时数据库系统就永远用不到临时表空间了,

从而可以提高数据库的性能。

但是这毕竟只是一个理想。由于内存大小等多方面的限制,这个PGA程序区的大小往往是有限制的。所以在进行一些大型的排序操作时,这个临时表空间仍然少不了。现在数据库管理员可以做的就是合理设置这个PGA程序全局区的大小,尽量减少临时表空间使用的几率。如在实际工作中,数据库管理员可以根据需要来设置初始化参数SORT_AREA_SIZE参数。这个参数主要控制这个PGA程序全局区内排序区的大小。通常情况下,如果这个数据库系统主要用来查询并且需要大量的排序、分组汇总、索引等操作时,那么可以适当调整这个参数,来扩大PGA分区的大小。相反,如果这个系统主要用于更新操作,或者在这个数据库服务器上还部署由其他的应用程序,那么这个PGA分区就不能够占用太多的内存,以防止对其他应用程序产生不利的影响。所以说,数据库官员不能够一刀切,需要根据实际情况来调整。在必要的情况下,可以增加系统内存来增加PGA分区的大小,从而降低临时表空间的使用几率,以提高数据库的排序、分组汇总等操作的性能。

总之,如果临时段被频繁使用的话,由于内存与硬盘在性能上的差异,从而会降低数据库的性能。为此在平时工作中,数据库管理员还需要监控临时表空间的使用情况,以判断是否需要采取措施来减少临时表空间的使用来提高数据库的查询性能。为了实现这个目的,笔者建议数据库管理员可以查看v0_segment这张动态性能视图。通过这张动态性能视图可以查看系统排序段(临时段的一种)的使用情况。另外通过动态性能视图v0_usage还可以查询使用排序段的用户与会话信息。从而为数据库管理员优化数据库性能提供数据上的支持。对于这个排序段,笔者还要说明一点。对于排序段来说,同一个例程的所有SQL语句(如果需要排序操作的话)都将共享同一个排序段。并且排序段在第一次需要用到时被创建。排序完成后这个排序段不会被释放,只有在这个历程关闭后排序段才会被释放。为此以上两张视图要综合起来分析,才能够得到数据库管理员想要的信息。

三、要为临时表空间保留足够的硬盘空间。

其他表空间对应的数据文件,在其创建时就会被完全分配和初始化,即在其创建时就会被分配存储空间。但是临时表空间对应的临时文件则不同。如在Linux操作系统中,临时表空间创建时系统是不会分配和初始化临时文件的。也就是说,不会为临时文件分配存储空间。只有临时数据出现需要用到临时文件的时候,系统才会在硬盘上分配一块地方用来保存临时文件。此时就可能会产生一个问题,即当需要用到临时文件系统为其分配空间的时候,才会先系统分区中没有足够的存储空间了。此时就会产生一些难以预料的后果。

为此对于这些临时文件,数据库管理员最好能够预先为其保留足够的空间。如在Linux操作系统中,可以将其防止在一个独立的分区内,不允许其他应用程序使用。如此的话,就不用担心临时文件没有地方存储了。另外由于临时表空间主要用来存放一些排序用的临时文件。为此如果能够将这个临时表空间存放在性能比较好的分区中,还可以提高数据库系统读取临时表空间中数据的速度。另外由于系统需要频繁分配临时表空间中的数据,为此临时表空间所在的分区会出现比较多的碎片。此时如果将临时表空间存放在一个独立的分区内,那么数据库管理员就可以单独对这个分区进行碎片整理,从而提高这个分区的性能。所以无论出于什么原因,将临时表空间防止在一个独立的分区内,是一个不错的想法。不仅可以保证临时文件有存储的空间,而且还可以提高数据库的性能。

Oracle常????}集(三)数据库教程 第6篇

只要拥有管理员权限就可以通过net start 启动一个服务,或者通过net stop 命令停止一个服务,从而控制以下服务中的任何一个。在Windows XP 中,可以通过在控制面板的服务中改变想要禁用的服务(OracleOraHome...)的启动类型(Startup Type)参数,双击某个服务查看其属性,然后将启动类型属性从自动改为手动。

使数据库在本地工作唯一需要运行的服务是OracleServiceORCL 服务(其中ORCL 是SID)。这个服务会自动地启动和停止数据库(使用shutdown 中断)。如果安装了一个数据库,它的缺省启动类型为自动。如果主要是访问一个远程数据库,那么可以把启动类型由自动改为手动。

OracleOraHome92HTTPServer 服务(OraHome92 是Oracle Home 的名称)是在安装Oracle 时自动安装的Apache 服务器。一般情况下我们只用它来访问Oracle Apache 目录下的Web 页面,比如说JSP 或者modplsql 页面。

OracleOraHome92TNSListener 服务只有在数据库需要远程访问时才需要(无论是通过另外一台主机还是在本地通过 SQL*Net 网络协议都属于远程访问)。不用这个服务就可以访问本地数据库。

OracleOraHome92ClientCache 服务缓存用于连接远程数据库的Oracle Names 数据。正常情况下该服务的启动类型是配置为手动的。然而,除非有一台Oracle Names 服务器,否则没有必要运行这个服务。

有四个服务是Oracle 企业管理器所必须的(Oracle Enterprise Manager),这个服务分别为:OracleOraHome92Agent(智能代理),该服务监视数据库和企业管理器请求,缺省启动类型为自动。OracleOraHome92SNMPPeerEncapsulator 和OracleOraHome92SNMPPeerMasterAgent,处理安全网络管理协议服务。OracleOraHome92PagingServer 通过一个使用调制解调器的数字传呼机或者电子邮件发出警告。

OracleMTSRecoveryService 是可选的,该服务允许数据库充当一个微软事务服务器、COM/COM+对象和分布式环境下的事务的资源管理器。

如果只是偶尔使用一下数据库,那么可以创建一个简单的脚本任务来启动和关闭服务器,这样每次只要双击脚本就可以了,可以不使用图形界面。

1. 保存一个快捷方式自动地装载这些文件。

2. 将Oracle 服务设为手动避免在Windows 启动时启动。

REM “dbstart.cmd”

@echo off

set RAHOME=“OraHome92”

set RASID=“ORCL”

net start OracleService%ORASID%

REM net start Oracle%ORAHOME%HTTPServer

REM net start Oracle%ORAHOME%TNSListener

REM net start Oracle%ORAHOME%ClientCache

REM net start Oracle%ORAHOME%Agent

REM net start Oracle%ORAHOME%SNMPPeerEncapsulator

REM net start Oracle%ORAHOME%SNMPPeerMasterAgent

REM net start Oracle%ORAHOME%PagingServer

REM net start OracleMTSRecoverService

REM “dbshut.cmd”

@echo off

set RAHOME=“OraHome92”

set RASID=“ORCL”

net stop OracleService%ORASID%

REM net stop Oracle%ORAHOME%HTTPServer

REM net stop Oracle%ORAHOME%TNSListener

REM net stop Oracle%ORAHOME%ClientCache

REM net stop Oracle%ORAHOME%Agent

REM net stop Oracle%ORAHOME%SNMPPeerEncapsulator

REM net stop Oracle%ORAHOME%SNMPPeerMasterAgent

REM net stop Oracle%ORAHOME%PagingServer

Oracle常????}集(三)数据库教程 第7篇

我们经常在设计数据库的时候用一个系统自动分配的ID来作为我们的主键,但是在ORACLE 中没有这样的功能,我们

可以通过采取以下的功能实现自动增加ID的功能

1.首先创建 sequence

create sequence seqmax increment by 1

2.使用方法

select seqmax.nextval ID from dual

就得到了一个ID

Oracle常????}集(三)数据库教程 第8篇

[Q]怎么样查看数据库字符集

[A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集,

客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,

表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符,

如果多个设置存在的时候,alter session>环境变量>注册表>参数文件

字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。

[Q]怎么样修改字符集

[A]8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。

Startup nomount;

Alter database mount exclusive;

Alter system enable restricted session;

Alter system set job_queue_process=0;

Alter database open;

Oracle常????}集(三)数据库教程 第9篇

我们使用的系统是windows,经过优化后,oracle数据库出现了问题,本地客户端不能连接.但远程连接是没有问题的.

经过检查,原来是oracle的TNSListener服务没有起动.用“服务”起动,或者net start 起动均失败,检查结果是注册表中

的TNSListener的执行文件路径已经被删除了.所以我们只要从其它安装oracle服务器的电脑上将部分注册表文件导出,

然后导入到本机就OK了.

下面是我本机的导入的注册表内容.

----------

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE YSTEMControlSet001 ervicesOracleOraHome92TNSListener]

“Type”=dword:00000010

“Start”=dword:00000002

“ErrorControl”=dword:00000001

“ImagePath”=hex(2):44,00,3a,00,5c,00,6f,00,72,00,61,00,63,00,6c,00,65,00,5c,00,

6f,00,72,00,61,00,39,00,32,00,5c,00,42,00,49,00,4e,00,5c,00,54,00,4e,00,53,

00,4c,00,53,00,4e,00,52,00,20,00,00,00

“DisplayName”=“OracleOraHome92TNSListener”

“ObjectName”=“LocalSystem”

[HKEY_LOCAL_MACHINE YSTEMControlSet001 ervicesOracleOraHome92TNSListener ecurity]

“Security”=hex:01,00,14,80,a0,00,00,00,ac,00,00,00,14,00,00,00,30,00,00,00,02,

00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,

00,00,02,00,70,00,04,00,00,00,00,00,18,00,fd,01,02,00,01,01,00,00,00,00,00,

05,12,00,00,00,00,00,00,00,00,00,1c,00,ff,01,0f,00,01,02,00,00,00,00,00,05,

20,00,00,00,20,02,00,00,00,00,00,00,00,00,18,00,8d,01,02,00,01,01,00,00,00,

00,00,05,0b,00,00,00,20,02,00,00,00,00,1c,00,fd,01,02,00,01,02,00,00,00,00,

00,05,20,00,00,00,23,02,00,00,00,00,00,00,01,01,00,00,00,00,00,05,12,00,00,

00,01,01,00,00,00,00,00,05,12,00,00,00

[HKEY_LOCAL_MACHINE YSTEMControlSet001 ervicesOracleOraHome92TNSListenerEnum]

“0”=“RootLEGACY_ORACLEORAHOME92TNSLISTENER000”

“Count”=dword:00000001

“NextInstance”=dword:00000001

----------

将上面的内容拷贝到.txt文件中,然后将.txt改成.reg文件,双击该文件即可.

上一篇:观《暖春》有感500字下一篇:继承和弘扬长征精神