Oracle数据接口
Oracle数据接口(精选11篇)
Oracle数据接口 第1篇
关键词:VFP数据,ORACLE数据库,程序设计
ORACLE是以高级结构化查询语言(SQL)为基础的大型关系数据库,因其可以支持多用户和在数据库管理功能、完整性检查、安全性、一致性、稳定性方面的良好性能,使其成为目前最流行的客户服务器(CLIENTSERVER)体系结构的数据库之一。
在企业日常生产中,有时需要调用每天存放在ORACLE服务器上的生产数据,采用VFP软件实现方便的生产查询或汇总,因为VFP(VisualFoxPro)是一个功能强大的小型数据库管理系统,它能迅速而又简单地建立用户的数据库,从而方便地使用和管理数据;利用其提供的对象和事件处理模式和面向对象的编程方法,使用户能够快速地建立应用程序。同时,VisualFoxPro是MicrosoftOffice的兼容产品,用VFP开发的出的应用软件很受大型企业低端用户的欢迎,所以,VFP是大型企业解决数据处理问题时,作为应用程序前端开发工具的理所当然的选择。首先,VFP系统小巧玲珑,不占太多的存储空间,数据建立表容易,操作简单,用它存储中间数据,成果数据,图表信息非常合适,1992年6月Microsoft购买Fox公司以来,对VFP作了控制操作Oracle的接口,用户很容易的在VFP平台下,通过ADO,ODBC等方式完成这项工作。
为此设计了VFP数据库与ORACLE数据库接口程序,以实现ORACLE数据向VFP数据库的自动转换,以下是程序设计思路:
1 总体设计思想
为使用户能够调用服务器上的数据体,首先在ORACLE服务器上根据用户需要建立了可以调用的ORACLE存储过程,用户在远端的客户机上只要调用相应的存储过程就能够获得想要的数据,而不会影响服务器本身的数据库运行。在客户机上编写数据库接口程序,数据库接口程序的主要内容为调用存储过程和将调用的信息转入DBF数据库表,程序编写完成后,利用windows操作系统里的计划任务,按时自动执行数据库接口程序,实现调用ORACLE存储过程,并通过执行VFP的execute和Fields("XX")value、INSERT等函数,将获得数据信息逐条送入VFP数据库已存在的DBF表中,实现ORACLE数据库内容向VFP数据表的自动转换。
2 程序设计
程序是在Windows操作平台上采用VisualFoxPro9.0开发完成。
3 实现
程序通过系统A D O配置和登录ORACLE信息设置、程序参数设置、数据监测四个阶段实现其数据转换功能。
3.1 ADO配置
为实现V F P数据与O R A C L E数据库之间的通讯,要在数据转换服务器上安装o r a c l e 9.0或以上版本的MicrosoftODBCDriverforOracle(假设安装了oracle9.0),以取得ORACLE的SQL*NET软件层支持,并通过ADO配置使VisualFoxPro能够与ORACLE数据库相连,访问库中的数据。在oracle9.0安装目录中找到tnsnames.ora文件,将文件内容中的IP地址和SERVICE_NAME改为所要调用的ORACLE数据库的IP地址和服务器名称。
3.2 登录ORACLE信息设置界面
在WINDOWS操作系统的控制面板里,选择管理工具,并在其中选择ODBC数据源管理器,在其界面菜单里选文件DSN,点击添加,填写一个名称,如:yc,该界面用于设置登录ORACLE数据库所必需的用户名、口令和数据库别名三个参数据,以供程序调用。界面如图示。
3.3 程序参数设置
关键语句格式:首先建立一个远程连接,连接的名称就是上述ADO配置中填写的名称,如yc:
这里“jh”为ORACLE存储过程里的字段。再应用INSERT into VALUES语句向已经建好的DBF表写入jh等字段的数据。
3.4 数据监测
在程序运行的最后阶段执行数据监测模块,设计思路类似学校班级点名册,通过在建立的文件记录统计表(该表的字段设定为日期和所要调用的表名)中做相应记录来区别数据的调用成功与否:若某日没有从ORACLE数据库调用到相关数据,在该日该数据所对应的表名记录号写上F,若某天DBF表已经建立,则在当天该记录号写上T。下次运行调用存储过程时首先检查该表,如果该表上有F标志,则从F标志对应的那天开始调用数据,表的格式如下图所示:
4 结语
该接口程序实现了定时从ORACLE数据库向VFP数据自动转换功能,满足了企业数据库建设和自动化管理要求,极大地提高了数据库利用效率。为技术、决策人员及时掌握企业各类数据,创造了条件。
参考文献
[1]张洪举.Visual Fox Pro程序设计参考手册.人民邮电出版社,2004
简介Oracle的数据字典 第2篇
1.1 X$表
这一部分表是Oracle数据库的运行基础,在数据库启动时由Oracle应用程序动态创建。
这部分表对数据库来说至关重要,所以Oracle不允许SYSDBA之外的用户直接访问,显示授权不被允许。
如果显示授权你会收到如下错误:
SQL>grant select on x$ksppi to eygle;grant select on x$ksppi to eygle*ERROR at line 1:ORA-02030: can only select from fixed tables/views
1.2 GV$和V$视图
从Oracle8开始,GV$视图开始被引入,其含义为Global V$.
除了一些特例以外,每个V$视图都有一个对应的GV$视图存在。
GV$视图的产生是为了满足OPS环境的需要,在OPS环境中,查询GV$视图返回所有实例信息,而每个V$视图基于GV$视图,增加了INST_ID列判断后建立,只包含当前连接实例信息。
注意,每个V$视图都包含类似语句:
where inst_id = USERENV(’Instance’)
用于限制返回当前实例信息。
我们从GV$FIXED_TABLE和V$FIXED_TABLE开始
SQL>select view_definition from v_$fixed_view_definition
where view_name=’V$FIXED_TABLE’;
VIEW_DEFINITION
----------------------------------------------------------
select NAME , OBJECT_ID , TYPE , TABLE_NUM from GV$FIXED_TABLE
where inst_id = USERENV(’Instance’)
这里我们看到V$FIXED_TABLE基于GV$FIXED_TABLE创建。
SQL>select view_definition from v_$fixed_view_definition
where view_name=’GV$FIXED_TABLE’;
VIEW_DEFINITION
-----------------------------------------------------------
select inst_id,kqftanam, kqftaobj, ’TABLE’, indx from x$kqfta
union all
select inst_id,kqfvinam, kqfviobj, ’VIEW’, 65537 from x$kqfvi
union all
select inst_id,kqfdtnam, kqfdtobj, ’TABLE’, 65537 from x$kqfdt
这样我们找到了GV$FIXED_TABLE视图的创建语句,该视图基于X$表创建。
1.3 GV_$,V_$视图和V$,GV$同义词
这些视图是通过catalog.ql创建,
当catalog.sql运行时:
create or replace view v_$fixed_table as select * from v$fixed_table;
create or replace public synonym v$fixed_table for v_$fixed_table;
create or replace view gv_$fixed_table as select * from gv$fixed_table;
create or replace public synonym gv$fixed_table for gv_$fixed_table;
我们注意到,第一个视图V_$和GV_$首先被创建,v_$和gv_$两个视图。
然后基于V_$视图的同义词被创建。
所以,实际上通常我们访问的V$视图,其实是指向V_$视图的同义词。
而V_$视图是基于真正的V$视图(这个视图是基于X$表建立的)。
而v$fixed_view_definition视图是我们研究Oracle对象关系的一个入口,仔细理解Oracle的数据字典机制,有助于深入了解和学习Oracle数据库知识。
1.4 再进一步
1.4.1 X$表
关于X$表,其创建信息我们也可以从数据字典中一窥究竟。
首先我们考察bootstrap$表,该表中记录了数据库启动的基本及驱动信息。
SQL>select * from bootstrap$;LINE# OBJ# SQL_TEXT-------------------------------------------------------------------1 -1 8.0.0.0.00 0 CREATE ROLLBACK SEGMENT SYSTEM STORAGE ( INITIAL 112K NEXT 1024K MINEXTENTS 1 M8 8 CREATE CLUSTER C_FILE#_BLOCK#(”TS#“ NUMBER,”SEGFILE#“ NUMBER,”SEGBLOCK#“ NUMBER)9 9 CREATE INDEX I_FILE#_BLOCK# ON CLUSTER C_FILE#_BLOCK# PCTFREE 10 INITRANS 2 MAXT14 14 CREATE TABLE SEG$(”FILE#“ NUMBER NOT NULL,”BLOCK#“ NUMBER NOT NULL,”TYPE#“ NUMBE5 5 CREATE TABLE CLU$(”OBJ#“ NUMBER NOT NULL,”DATAOBJ#“ NUMBER,”TS#“ NUMBER NOT NULL6 6 CREATE CLUSTER C_TS#(”TS#“ NUMBER) PCTFREE 10 PCTUSED 40 INITRANS 2 MAXTRANS 2557 7 CREATE INDEX I_TS# ON CLUSTER C_TS# PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (....
这部分信息,在数据库启动时最先被加载,跟踪数据库的启动过程,我们发现数据库启动的第一个动作就是:
create table bootstrap$ ( line# number not null, obj# number not null, sql_text varchar2(4000) not null) storage (initial 50K objno 56 extents(file 1 block 377))
创建Oracle数据库的原则 第3篇
关键词:Oracle;数据库;原则
中图分类号:TP311.13 文献标识码:A文章编号:1007-9599 (2010) 14-0000-03
The Principle of Creating Oracle Database
Liu Yin
(China Airlines Clearing Co.,Ltd.,Beijing100028,China)
Abstract:In the China Aviation Clearing Corporation six years of work has been engaged in the Oracle applications database development and maintenance.Application process in the establishment of a database and found that many applications do not meet the Oracle database creation application of the principle database settings. This problem is prevalent in many systems,we consider the availability of more,while ignoring the performance of the database problems.I would like to work according to their own practical experience,according to Oracle applications to talk about the process of database creation and consideration should be noted that some basic principles and requirements.
Keywords:Oracle;Database;Principle
首先我想要申明的是,这个过程是根据NT上Oracle应用数据库建立过程来说明的,但是所说的原则同样适用于其他的操作系统平台(如UNIX)。虽然对于Oracle方面的高手来说,有一点班门弄斧的嫌疑,但是对于一个需要全面了解Oracle建立过程的初、中级用户,仍然还是大有益处的(这个例子中将要建立的实例名和数据库名设为VETO)。
一、初始化文件(initSID.ora)的建立
大家都知道要建立一个初始化文件(例如initAOMN.ora),这个文件可以用写字板进行编辑和修改。这个文件决定了实例的基本配置和性能,中间参数的大小需要根据具体的应用要求决定。用户还可以根据情况的变化,以后进行调整修改。
许多关键的参数Oracle公司都给了大、中、小三个标准,用户可以根据需要确定。除了要修改DB_NAME,将它改为将要建立的数据库名外,还有以下的几个参数要注意:
(一)CONTROL_FILES是指定控制文件的名称和位置。控制文件必须小于8个。但是为了防止控制文件毁坏而导致数据库的崩溃,建议将控制文件指定在不同硬盘上互做备份。文件名最好让人望名知意。
(二)SHARE_POOL_SIZE指的是共享池的大小,如果想加快SQL语句的处理速度,而且操作系统的内存足够的话,可以开大些加快速度
(三)DB_BLOCK_SIZE这个参数设置Oracle块的大小。对于OLTP(在线事务处理系统),应该设置得小点,而对于DDS(数据仓库)而言,应该设置得大点。一旦设定并且数据库建立以后时没有办法修改的。这个问题值得注意。
二、建立实例(Instance)
数据库的实例指的是为处理数据库而分配的内存结构和后台处理过程,它的配置和性能由上面的初始化文件决定的。为了在操作系统中建立这个实例,必须使用Oracle提供的Oradim工具。我们可以在NT Windows菜单的运行中输入:
ORADIM73 -NEW -SID VETO -USRPWD VETO -STARTTYPE SVRC,INST -STARTMODE AUTO -PFILE=D:ORANTDATABASEVETOINITVETO.ORA
这个命令的结果是在操作系统中建立了一个实例,并且实例的启动方式是自动。internal用户的密码是VETO,在系统的服务中建立了OracleStartVeto和OracleServiceVeto两个服务。在开始的时候OracleServiceVeto已经启动,但是OracleStartVeto可能没有启动。所以可用Net Start OralceStartVeto直接将OralceStartVeto和OralceServiceVeto启动,确保这个实例所需的服务都正常启动。即:C:NET START OracleServiceVeto
三、建立数据库(database)
实例的建立只是为数据库的建立做了一个准备,我们可以将实例付给任何一个数据库使用,只要数据库的参数MaxInstances没有被超过。建数据库需要用CREATE DATABASE命令,最好事先将参数写入一个SQL文件中,以被使用和今后的维护。我们需要了解建立数据库时,一些参数的意义,有利于我们对数据库性能的把握。
例如:这里用到的CREATE_DB_VETO.SQL
CREATE DATABASE VETO
CONTROLFILE REUSE
MAXLOGFILES 32MAXLOGMEMBERS 5MAXDATAFILES 50 MAXINSTANCES 2
LOGFILE GROUP 1 ('D:ORANTDATABASEVETOLOGVETO11.RDO',
'D:ORANTDATABASEVETOLOGVETO12.RDO')SIZE 1M,
GROUP 2 ('D:ORANTDATABASEVETOLOGVETO21.RDO',
'D:ORANTDATABASEVETOLOGVETO22.RDO')SIZE 1M
DATAFILE 'D:ORANTDATABASEVETOSYSTEMVETO.DBF' SIZE 100M
CHARACTER SET ZHS16cgb231280;
在这里我们需要注意以下几点要求:
(一)如果initVeto.ora文件中指定的controlfile已经存在才可以在建立数据库时使用CONTROLFILE REUSE,否则不能使用.
(二)MAXLOGFILES指最大的redo log file的group数。MAXLOGMEMBERS指最大的redolog file的group中的member数。MAXDATAFILES指数据库中最大的datafile数。MAXINSTANCES指数据库可被多少个instance使用数。这五个参数将会影响controlfile的大小
(三)LOGFILE指的是redo log file的设置,每个GROUP中的MEMBER文件的大小必须是大小相同的。由于redo log file是循环使用的,所以最少必须有两个GROUP,否则数据库无法建立。虽然每个GROUP的MEMBER文件可以只有一个,但是为了防止某个MEMBER文件的毁坏而导致数据库的不可用,必须在每个GROUP中有多个MEMBER,最好是每个GROUP有相同数目的MEMBER文件。建立数据库的SQL语句写好后,以internal用户进入,重新启动实例并进入数据库的nomount状态,建立数据库并打开数据库。
结果:INSTANCE启动,数据库是OPEN状态,数据库可以被使用。在建立数据库的过程中,数据库中所用到的基表都在这个过程由系统运行sql.bsq自动建立了。
四、建立动态性能视图(data dictionary view)
当数据库建立后,用户仍然不能用system用户的身份进入系统。这是由于数据库的基表虽然已经建立,但是动态性能视图没有建立,所以system的身份无法被系统确认。必须以sys或者internal用户的身份重新进入系统,运行catalog.sql和catproc.sql(这两个文件存在于目录%Oracle_homerdbms73admin中)。catalog.sql的目的是建立动态性能视图。catproc.sql的目的是建立运行SQL,PL/SQL所需的一些函数包和其他帮助工具包。虽然这个时候system用户可以登录数据库,但是可能系统要求运行pupbld.SQL,目的是防止系统设置的确省的profile不能被访问。
五、建立监听器(LISTENER.ORA)
数据库的基本结构已经建立,但是用户仍然无法远程访问数据库,因为操作系统,需要为新建的实例建立一个监听器,监听用户发出的连接请求。首先,我们必须手动的修改D:ORANTNTWORKADMINLISTENER.ORA的最后部分,然后,我们进入操作系统的服务中重启OracleTNSListener服务使修改生效,新的监听器建立。但是我们还是不能远程访问数据库,必须建立数据库别名。
六、建立数据库别名
监听器中的SID_NAME指的VETO是监听器监听的连接串的值。这个值必须等于数据库别名,所以我们必须在SQL NET EASY CONFIG中建立数据库别名,使数据库的能被远程访问数据库。例如:VETOTCP/IP10.1.3.57VETO。上面句中的前一个VETO指的是数据库别名,而后一个VETO指的是实例名。由于为了方便使用和理解,推荐使数据库别名等于实例名。
七、表空间(tablespace)
上面的六步将数据库建立了起来,但是对于一个Oracle应用数据库来说仅仅是将基本的结构建立了起来,为了使数据库能够被应用程序所使用,必须为不同的应用建立不同属性的表空间。首先,建立一个存放应用程序的数据的表空间,在建立这类表空间的时候存在很多问题。我们先来建立一个数据表空间,再讨论一下建立的原则,这些原则是避免问题的关键:
create tablespace DATA
datafile 'd:orantdatabasevetodatveto.ora' size 600M
storage(initial 1600K next 1600K pctincrease 100 minextents 1 maxextents unlimited)autoextend on next 100M maxsize 1000M;
(一)由于许多系统在建表生成的SQL语句中并没有指定表的存储参数, 建表时会使用表空间的存储参数,所以并且在建立表空间时最好指定存储参数。这需要根据具体系统的特点来设置,对于一个数据表空间,由于不同的表的定义和存放的数据量一般有很大的差异,所以建议采取中等的值。
(二)为了防止在分配extent时在表空间的数据文件中产生碎片,initial和next的值必须是db_block_size的整数倍。而且是db_file_multiblock_read_count*db_block_size的整数倍,目的是在全表搜索时速度快。
(三)数据表空间中的数据表比较多,而大量的表的数据比较小,所以initial和next不能太小,也不能太大,minextents设置为1。而且个别表中的数据多,所以maxextents设置为unlimited,pctincrease=100保证数据可以全部导入表中。pctincrease的设置必须满足上面的第二条,也就是接下来建立的extent不会在数据文件中建立碎片,在这里设为100,设所有的分配的EXTENT满足条件。
接下来建立一个存放应用程序代码的表空间,这类表空间中的数据变化不大,并且数据量不大,所以initial和next也不必太大,pctincease设置为0.其他的原则与建立数据表空间的原则一致.
八、建会滚表空间和回滚段(rollback segment)
回滚段是用来记录是数据被DML(数据处理语言)处理前的值,如果事务被回滚,可以将数据恢复到修改前。它还为其他的用户提供读一致性(read consistency),就是数据被一个用户进行DML处理但还没有提交时,其他用户读取数据时看到的值。数据库建立时,会在system表空间中建立一个系统回滚段,这个回滚段是为system/sys/internal用户操作动态性能视图及其基表而使用,其他用户不能使用这个回滚段。所以我们必须为其他用户操作数据库数据而建立回滚段。为了减少因使用回滚段产生的碎片,最好建立一个专门的回滚段表空间。然后就可以建立回滚段了,但有几点必须注意:
(一)在创建时回滚段可以指定为PUBLIC或PRIVATE(默认),在创建后不能更改。一般建立的回滚段为PUBLIC。不能为回滚段指定PCTINCREASE参数,总是设置为0。这一点很多时候都被忽略了。对于回滚段而言,总是使用INITIAL=NEXT,以保证所有的扩展有相同的大小。
(二)OPTIMAL参数,如果设置了,必须至少和回滚读段的初始值相等,而且最好设置,可以保证回滚段在没有事务处理时可以自动的回到OPTIMAL指定的值,释放空间。
(三)按照事务所需的平均空间设置OPTIMAL参数。如果没有适当的数值,把它设置为初始值,以后再调整。不要把MAXEXTENTS设置为UNLIMITED。这可能会导致不必要的回滚段扩展,可能会由于程序错误造成数据文件的扩展。
(四)总是把回滚段放在分离的、独占的表空间中,以便把竞争和碎片降到最低。所以必须专门的建立一个回滚段表空间。回滚段的数量没有详细的规定,但是对于OLTP系统,一般四个事务对应使用一个回滚段。回滚段必须ONLINE后才可以被使用。
九、建临时表空间
很多时候我们忽略了临时表空间的建立,因为它的影响仅仅限于排序查询时,对速度的影响。临时段是在排序结果大于PGA中SORT_AREA_SIZE指定的排序区,在指定的临时表空间存放排序的中间结果时产生的,在实例关闭时才释放。由于临时段产生的碎片比任何段都多,所以必须建立一个专门的临时表空间,虽然在临时表空间中只有一个临时段。
十、建立用户并授权
对于一个应用程序,必须建立不同于SYSTEM用户的其他用户来管理应用程序的数据和代码。所以我们将上面建立的数据表空间和代码表空间分别给用户DATA和CODE,如下:
CREATE USER UNIFACE IDENTIFIED BY ACCA DEFAULT TABLESPACE DATA TEMPORARY TABLESPACE TMP PROFILE DEFAULT;
GRANT RESOURCE TO UNIFACE;
CREATE USER CODE IDENTIFIED BY ACCA DEFAULT TABLESPACE CODE TEMPORARY TABLESPACE TMP PROFILE DEFAULT;
GRANT RESOURCE TO CODE;
要求和原则:
(一)建用户时必须指定用户的确省表空间和临时表空间,确省表空间保存用户所有对象。临时表空间是在排序时作为当排序所需的空间大于SORT_AREA_SIZE时存放临时过程使用的。
(二)用户建立时,系统自动将角色CONNECT付给用户,但是用户如果想拥有建立对象的权利,就必须将角色RESOURCE付给用户。
虽然第二步到第四步在NT上都可以在INSTANCE MANAGER中完成,但是由于不能给大家更加清晰和灵活的配置,建议不要用。而且根据以上十步关于建立Oracle应用数据库的过程,可以将这个过程写成批处理过程,这样不仅有助于保留建立应用数据库的参数,加快数据库的建立过程,而且还有助于日后的对数据库进行性能调整。所以我推荐根据具体的应用系统要求,建立一套标准的建立过程,是很有必要。
Oracle数据接口 第4篇
空中交通管制系统需要采集、存储及维护诸如设备信息、地图信息、雷达信息、飞行情报等大量的数据。这就要求系统中配备具有高效处理能力的数据库服务器处理并保存这些数据,因此空管系统常常采用Oracle作为数据库服务器。某空中交通管制系统中现有的基于OCI7.3的数据库访问接口虽然在很长一段时间内满足了系统稳定运行的要求,但随着时间的推移数据库的更新换代,基于OCI7.3接口已不能使用数据库的许多新特性,比如:即时客户端(Instant client),大数据对象(Large Objects LOBs)等。因此ATC系统中的数据库访问接口也应做相应的更新。考虑到原系统中还在使用Oracle 8i的数据库,所以选择OCI 9i版本作为基础而不是OCI 10i或者更高的OCI 11i。
2 OCI简介及版本7.3与9i的对比
OCI(Oracle Call Interface,即Oracle调用层接口)是Oracle公司提供的一种访问Oracle数据库的应用程序编程接口(application programming interface API),它允许开发人员在第三代编程语言(包括C,C++,COBOL与FORTRAN)中通过SQL来操纵Oracle数据库[1],并在一定程度上支持第三代编程语言的数据类型和语法等。作为一种Oracle数据库的访问方法,它比ODBC(open database connectivity)更为灵活,访问和执行速度也更快。
OCI7.3中使用宿主语言定义变量存储空间[2],这些变量主要有三种:
(1)CDA(Cursor Data Area):为程序的用户游标和服务器的sql语句的解析表达式之间提供一种映射。
(2) LDA(logon data area):是olog调用时与活跃的oracle连接关联的数据区域。
(3) HDA(Host Data area):当连接oracle 服务器时必须在程序里申请的数据结构,一般是256字节,当使用olog连接数据库时为每个oracle连接申请的LDA和HDA把这些数据区域地址传递给服务器。
OCI9中已不在使用原有的变量结构来初始化及维护数据库的信息,而改用句柄的形式来和Oracle数据库进行交互。常用的句柄有:环境句柄OCIEnv、服务句柄OCISvcCtx、错误句柄OCIError、语句句柄OCIStmt、服务器句柄OCIServer、会话句柄OCISession、变量绑定句柄OCIBind和输出参数句柄OCIDefine等。几乎所有的OCI9的函数的参数都是句柄或描述符[3]。OCI9编程的一般步骤有:初始化环境句柄、生成其他各类句柄、建立数据库连接进行登录、执行SQL语句,对返回的结果进行处理、终止用户会话,断开连接,释放各种句柄。OCI9相对于OCI7.3来说最大的变化就是没有了游标的概念,虽然灵活性降低,但封装性和安全性都有提高。
表1中对比列出了OCI7.3和OCI9中编程中常用到的一些函数名及它们的作用,由表可以看出OCI9提供了更多和数据库交互的接口。
3 Oracle数据库调用接口的实现
进行OCI9接口设计的时候,首先要考虑与原有的7.3版本要无缝兼容即外部调用程序无需做大修改就能使用新接口,其次还要为外部调用程序提够使用新功能的接口函数。因此,新接口应具备一些的一些特点:
(1)对外隐藏复杂的OCI函数调用,只提供初始化、连接、执行、查询、断开等直观的数据库访问方法;
(2)调用过程简洁、方便,函数参数少,参数的含义明确;
(3)接口具有跨平台的特性可以在Windows和多种UNIX平台上使用;
(4)执行查询语句时,每次取100行放入缓冲区直至去完,不满100行时取实际的行数放入缓冲区;
(5)在网络突然断开的情况下能及时返回错误,并提够重连机制;
(6)能够对大数据对象类型(Large Objects LOBs)进行操作;
3.1 接口的实现
调用接口采用C++语言开发,以动静态库的形式和相应的头文件一起提供给接口的使用者,主要实现三个类:COciInterface、COciBase和OraErr。为了隐藏接口的内部实现COciInterface类被设计为纯虚类,只提供头文件给接口使用者。COciBase是接口的具体实现类它继承了COciInterface。在COciBase类中使用OraErr类的实例m_oraErr作为错误处理对象。三个类之间的关系及主要的成员函数、成员变量如图1所示:
COciBase类在使用OCI库时需要初始化和维护多个句柄,程序实现时把常用的句柄放入_OCI_HANDLE结构体中,这样易于检查和管理。_OCI_PERCOLINFO结构中存放执行查询语句时需要的数据库表的列信息(如图1)。
3.2 SQL语句的执行过程和单次查询返回多行结果的实现
一条SQL语句在OCI应用程序中的执行步骤一般如下:①准备SQL语句。②在SQL语句中绑定需要输入到SQL语句中的变量。③执行SQL语句。④获取SQL中的输出描述。⑤定义输出变量。⑥获取数据。具体过程及过程中调用的函数如图2所示。
对于SQL中的定义语句(如CREATE,DROP)和控制语句(如GRANT,REVOKE),由于没有数据的输入输出,只需要图2中第一步和第三步即可。操作语句(如INSERT,DELETE,UPDATE)则需要执行前三步。而查询语句(如SELECT)不仅可能有数据输入,而且也有数据的输出,因此需要执行六个步骤。
为了提高查询效率,接口设计时要求单次查询如果结果大于一百行时每次返回一百行直至返回所有结果,不足一百行时返回所有的结果。这就需要在定义变量和获取数据时做相应的处理:
(1)根据步骤4所得的一行总长度来分别一个足够大的缓冲区m_pData = new char[m_DataLen * ROW_NUM]。
(2)根据各列的长度来定义各列在缓冲区中的位置:
m_vecColInfo为_OCI_PERCOLINFO类型的vector,用于保存各列的信息。值得注意的是OCIDefineByPos函数的第八和第九个参数:第八个参数是指示器参数,在OCIStmtFetch后指示所取数据是否完整(0表示完整),由于每次最多取100行的数据因此在_OCI_PERCOLINFO结构体中应设为indp[100]的数组。第九个参数用于返回所取数据的实际长度,因此_OCI_PERCOLINFO结构体中也应设为rlenp[100]的数组。
(3)获取数据:OCIStmtFetch(m_hOCI.phStmt,m_hOCI.phErr,100,//每次最多取100行的数据OCI_FETCH_NEXT, OCI_DEFAULT);第三个参数设置为100后执行OCIStmtFetch完毕后数据就填充到缓冲区中。
(4)当结果已不足100行时,执行OCIStmtFetch函数会返回OCI_NO_DATA的错误,这时调用OCIAttrGet可以得到实际处理的行数。
3.3 网络断开的错误处理
OCI9可以通过OCIAttrSet函数将会话设置为非阻塞模式,但文档中并没有说明在断网情况下那些操作将受到影响,不知道那些操作会受影响,错误处理就无从下手。为了解决这个问题,在进行多次了断网测试后得出以下函数将受到断网的影响并列出错误信息:
(1) OCIServerAttach:错误码12560,错误信息“TNS协议适配器错误”。
(2) OCISessionBegin:错误码12571,错误信息“TNS包写入程序失败”。
(3) OCIStmtExecute:如果在此函数执行前断网则返回错误码12571,错误信息“TNS包写入程序失败”,如果在此函数第一次执行(返回OCI_STILL_EXECUTING)到第二次执行之间断网则返回错误码03113,错误信息“通信信道的文件结束”。
(4) OCIStmtFetch:错误码12571,错误信息“TNS包写入程序失败”。
知道那些函数会受到断网影响后,处理起来就比较简单,即增加对这四个函数返回失败时的错误码判断,在断网时返回相应的错误返回给接口使用者,在接口调用者再次执行SQL语句时自动重新初始化各个句柄并自动连接数据库。
3.4 LOB的操作
Oracle中char,varchar的最大长度是4000B,超过4000B的字段需要使用LOB类型。LOB分为内部LOB(Internal LOBs 如CLOB,BLOB,NCLOB等)和文件LOB(File LOBs 如BFILE)[5]。考虑到LOB类型不是经常使用,因此接口实现中使用通过OCILobLocator定位符处理LOB数据,而不是用直接加载的方式。
使用OCILobLocator定位符与执行SQL语句类似主要步骤:①初始化OCILobLocator的描述符,OCILobLocator * m_pLobLocator; OCIDescriptorAlloc(m_hOCI. phEnv, (dvoid **)&m_pLobLocator, OCI_DTYPE_LOB, 0, 0);②对输出变量进行定义,OCIDefine * pdefineLob;OCIDefineByPos(m_hOCI.phStmt, &pdefineLob, m_OCI.phErr, 1, &m_LobLocator, -1, SQLT_CLOB, 0, 0, 0, OCI_DEFAULT);③执行OCIStmtExecute;④读取LOB数据,OCILobRead(m_hOCI.phService, m_hOCI.phErr, m_pLobLocator, 2000, 1, (dvoid *)buffer, 2000, 0, 0, 0, 0);⑤写入LOB数据,需要先用“selectfor update”的SQL语句锁定Lob列,再使用OCILobWrite写入数据。
处理文件LOB则要在初始化定位符指定OCI_DTYPE_FILE类型。然后使用OCILobFileOpen,OCILobLoadFromFile,OCILobFileGetName,OCILobFileSetName等函数进行操作。
4 实验对比
为检验基于OCI9的新接口对比原OCI7.3接口性能上有无提高,特设计一组实验:使用两台主机作为客户端,其中一台安装H PTru64操作系统,另一台安装WindowsX PSP2操作系统,选用Oracle9i为数据库安装在Linux Red Hat 2.6.9 EL系统的主机上,测试的SQL语句采用“insert into flow_test(Time, type, dev_code, process_num, flow, default_code) values (to_date(2008-11-12 12:30:11’,’yyyy-mm-dd hh:mi:ss’), 2’, 15100’, 1124’, 1541’, 0’)”。两台客户端主机使用OCI9新接口和OCI7.3接口分别执行上述插入语句50组每组5000次,计算出总运行时间后做平均得到最后的结果:①在H PTru64系统的主机上,OCI7.3接口执行上述插入语句5000次平均用时4.7168秒,OCI9接口平均用时4.6865s。②在WindowsX PSP2系统主机上,OCI7.3接口执行上述插入语句5000次平均用时10.7456s,OCI9接口平均用时10.5973s。
经过上述实验可以看出OCI7.3和OCI9在性能并没有太大的差异,但使用OCI9接口能使用Oracle数据库的新功能,这满足了空管系统数据库调用接口的更新要求。
5 结束语
本文设计并实现了一种基于OCI9的数据库调用接口,接口封装了复杂的OCI函数调用,现已逐步代替原有的基于OCI7.3的接口应用于某大型空中交通管制系统。本文介绍的接口中采用单次查询返回多行的方式大大提高了查询速度,而网络断开的错误处理及LOB数据操作在使用过程中效果也比较明显。接口现在只支持单线程的版本,向接口中引入多线程或线程池功能有待进一步的研究。
本文作者创新点:①OCI的官方文档中提到可以使用OCIStmtFetch函数一次取多行结果,但没有给出具体的使用方法,众多的开源的OCI接口中也没有使用返回多行的方式,本文详细给出单次查询返回多行结果的实现;②本文指出在非阻塞状态下,网络断开后那些OCI函数会受到影响,并详细列出它们返回的错误码,这些在官方文档及大多数OCI相关的论文资料中都没有给以说明。
参考文献
[1]马锐,汪林林.用OCI开发ORECLA数据库的方法.重庆邮电学院学报(自然科学版),2003,15(3):68~71
[2]王敦,白学仲.ORACLE的OCI调用接口.铁路计算机应用,1997,6(4):14~16
[3]岳键,刘梁.Visual C++开发ORACLE应用程序的方法与技术.微计算机应用,2002,23(4):251~254
Oracle数据接口 第5篇
关键词:Data Guard数据安全;主数据库;备用数据库
中图分类号:TM769 文献标识码:A 文章编号:1009-2374(2013)20-0042-02
Data Guard是管理、监控和自动化软件的基础架构,它创建、维护和监控一个或多个备用数据库。通过提供日志传送服务、日志应用服务和角色装换服务,Data Guard简化了备用数据库的建立、维护和管理,并且Data Guard使用产品数据库的事物变化来维护备用数据库。如果因不可预计的故障导致产品数据库宕机,则Data Guard可以切换备用数据库,并将其转变为产品数据库,以最小化故障停机
时间。
1 Data Guard配置环境
Data Guard由一个产品数据库和一个或多个备用数据库组成,数据库之间的互联通过Oracle Net来完成。
主数据库:主数据库是指用于存放应用系统数据库的Oracle数据库。
备用数据库:备用数据库是主数据库的事务一致性副本,是使用主数据库备份建立的数据库。
2 备用数据库
备用数据库通过应用主数据库的重做数据,与主数据库保持同步。在将归档日志传送到备用数据库之后,备用数据库可以直接应用这些事务变化,从而保持与主数据库的同步性。
3 备用数据库的建立
当使用备用数据库时,要求必须激活主数据库的强制日志特征,并且数据库必须处在归档模式。
下面以我公司ERP系统数据库为例,在不同服务器上使用RMAN备份建立备用数据库的方法。
具体步骤如下:
(1)建立存放备用数据库相关文件的OS目录。
(2)建立例程服务。示例如下:
C:\oradim-new-sid msbakerp-intpwd oracle
(3)配置监听程序和网络服务。因为主数据库和备用数据库的交互是通过Oracle Net来完成的,所以必须在主数据库和备用数据库服务器上进行网络配置并配置监听程序、网络服务名。
(4)准备主数据库的参数文件。具体步骤如下:
建立参数文件。示例如下:
sql>create pfile from spfile;
编辑文本参数文件initcsrerp.ora。示例如下:
db_unique_name=ncmserp
log_archive_dest_1='location=d:\product\10.2.0\flash_recovery_area\ncmserp\archivelog
valid_for=(all_logfiles,all_roles)
db_unique_name=ncmserp'
log_archive_config='dg_config=(ncmserp,msbakerp)'
fal_server=msbakerp
fal_client=ncmserp
standby_file_management=auto
建立服务器参数文件。在编辑了文本参数文件之后,使用Create Spfile命令为主数据库建立Spfile文件。示例
如下:
Sql>create spfile from
‘%oracle_home\database\initncmserp.ora%
Sql>startup
(5)准备备用数据库参数文件。具体步骤如下:
建立参数文本文件。示例如下:
C:\>Sqlplus /nolog
Sqlplus>connect /as sysdba
Sqlplus>create pfile=
%oralce_home\database\initmsbakerp.ora% from spfile;
编辑文本参数文件initmsbakerp.ora。如下所示:
db_unique_name=msbakerp
service_names=msbakerp
instance_name=msbakerp
fal_client=msbakerp
fal_server=ncmserp
db_file_name_convert='s:\oradata\ncmserp','D:\product\10.2.0\oradata\msbakerp'
log_file_name_convert='s:\oradata\ncmserp','D:\product\10.2.0\oradata\msbakerp'
log_archive_config='dg_config=(ncmserp,msbakerp)'
log_archive_dest_1='location=D:\product\10.2.0\flash_recovery_area\msbakerp\archivelog
valid_for=(all_logfiles,all_roles)
db_unique_name=msbakerp'
standby_file_management=auto
standby_archive_dest='d:\product\10.2.0\flash_recovery_area\msbakerp\archivelog'
建立服务器参数文件。示例如下:
Sql>create spfilemsbak.ora from
‘%oracle_home\database\initmsbakerp.ora%
(6)复制相关文件到备用主机。为了建立备用数据库,必须将主数据库的数据文件备份集、控制文件备份集、参数文件复制到备用数据库所在服务器。
(7)启用备用例程,并建立备用数据库。示例如下:
C:>Rman target sys/change_on_install@csrerp auxiliary sys/change_on_install@msbakerp
Rman>Duplicate target database for standby dorecover;
当执行了DUPLICATE命令之后,Rman会建立备用控制文件、装载备用数据库、转储所有数据文件备份,并应用归档日志恢复备用数据库。
5 备用数据库的管理
(1)启动备用数据库。示例如下:
C:\>sqlplus/nolog sys/change_on_install@msbakerp as sysdba
Sql>startup mount
(2)开始应用归档日志。当备用数据库处于MOUNT状态时,为了使两个数据库保持同步,应该使备用数据库应用归档1日志的事务变化。示例如下:
Sql>alter database recover managed standby database disconnect from session;
(3)关闭备用数据库。当备用数据库处于重做应用状态时,它不能被关闭,必须先取消重做应用状态,然后才能关闭备用数据库。示例如下:
Sql>alter database recover managed standby database cancel;
Sql>shutdown immediate;
(4)激活备用数据库。当主数据库出现重大故障时,可以激活备用数据库,并将其转化为主数据库。示例
如下:
C:\>sqlplus /nolog
Sql>connect /as sysdba
Sql>alter database activate standby database;
Sql>startup force.
参考文献
[1] 精通Oracle10g备份与恢复.
Oracle数据接口 第6篇
1 影响查询优化器决策的因素
Oracle数据库引擎访问数据基本上有两种方式, 一种是扫描整个表, 一种是基于冗余访问结构 (如索引) 进行查找或基于表本身的机构 (比如哈希聚簇) 进行查找。查询优化器对于访问数据选用全表扫描还是索引扫描, 基于对这两种访问方式相应开销的估算, 影响优化器决策的因素主要有以下几个:
1) 进行全表扫描需要读取的数据块数目。
2) 进行索引查询需要读取的数据块数目, 这主要基于对WHERE子句谓词返回的记录数目的估计。
3) 进行全表扫描时多块读的相关开销以及为满足索引查询进行的单块读的开销。
4) 内存缓存中的索引块和数据块数目的假设。
当查询优化器正确的选择执行计划后, 并不意味着特定执行计划一定运行良好。所以有时可以通过调整SQL语句或访问结构, 来达到优化的目的。判断数据访问最有效的标准是处理数据时消耗的资源最少, 当然最有效不一定是最快。
2 影响数据访问的因素
一般对全表扫描和索引扫描来说, 在WHERE子句的条件选择性不是很高时, 全表扫描是最合适的检索路径, 而在条件的选择性很高时, 索引或聚簇方法将更合适。
其中影响索引的因素主要有缓存区高速缓存区的命中率、记录大小和数据的分布情况。索引检索有助于获得更高的高速缓存命中率;就IO而言, 无论记录多大, 索引访问的开销几乎是相同的, 而记录越大, 全表扫描必须读取的数据块就越多, 代价越高。对于数据的分布, 如果表中记录大体按照索引列的顺序存储, 那么索引访问需要更少的数据库并大大减少逻辑IO的开销。而对于全表扫描, 如果需要访问表的所有或大部分记录的话, 那么全表扫描是最合适的方法。
3 全表扫描避免的优化
对于这两种访问方式的优化就是对于该使用索引的, 却使用了全表扫描, 而应该使用全表扫描的却使用了索引。因此对应的优化方法主要有两类, 一类是让索引起到该起的作用, 避免意外的表扫描, 一类优化必要的全表扫描。
即使存在适当的索引或散列检索路径, 由于SQL语句的写法, 优化器也可能无法利用这些访问路径, 因此避免意外的表扫描主要有以下几个原则及解决方法:
1) 避免使用不等条件。如果使用不等条件, Oracle一般不会使用索引, 因此如果认为某个查询使用索引更加高效, 那么请使用IN、OR或>来重写查询。
2) 空值查询。当索引中列的数据都为空值时, B*树索引中的条目将不会创建, 因此不能使用某列的B*树索引查找空值, 而应该将列定义成非空并设置默认值, 而后用默认值检索。
3) 在列上使用函数或表达式而无意中禁用了索引, 因此应避免在WHERE子句中的索引列应用函数或操作, 而是在与索引进行比较的值上应用函数或操作。
4) 对于无法避免在索引列使用函数或表达式是, 可以考虑使用基于相同函数或表达式的函数索引。
5) 对于多列查询可以对多列使用组合索引或使用多个索引合并。
6) 利用Oracle的统计信息或创建虚拟列等技术, 帮助优化器做出精确的估算, 从而更准确的选择出数据的访问方式。
4 全表扫描的优化
以上讨论的避免全表扫描的方法并不总是能获得最优的访问, 尤其是访问表的大部分数据时, 更是如此。有许多的全表扫描优化技术, 主要的几个技术包括:
1) 通过让表变小来减少扫描所需要的逻辑读取的数量。通过提高数据库IO的效率降低扫描所需要的物理块读取的数量。
2) 通过缓存或抽样降低扫描的开销。
3) 通过使用并行查询选项为扫描分配更多的资源。
4) 执行快速的全索引扫描来代替全表扫描。
5) 对表进行分区, 只读取所选择的分区。
特别需要注意的是, 完成全表扫描的工作数量主要取决于需要扫描的数据块数量, 因此也有很多有效的方法来减少扫描的数据块数量, 主要有以下四种方式:
1) 通过重建表来降低高水位线。当需要进行全表扫描时, Oracl会去读取从第一个被分配的块到曾经包含数据的最高那个块之间的每一个块。因此如果一张表上经常发生大量的删除操作, 高水位线将比实际需要的位置更高, 每块里的记录条数减少, 检索时IO的开销就会增加。
2) 通过修改PCTFREE和PCTUSED参数来向每个块里放入更多的记录。该方法由于自动段存储管理的广泛使用, 而现在几乎没有意义, 但是对使用早期的数据库版本来说有一定的作用。
3) 减少记录的长度, 可能是通过将大的且并不常访问的列迁移到独立的表中。如果表经常进行全表扫描而且包含大量的不常访问的列, 就可以将这些列迁移到其他的表中来减少需要扫描的块, 尤其是很少访问的长列。
4) 压缩表中的数据, 压缩表也能生成更小的表, 从而使扫描速度更快。
5 总结
大多数情况下, 优化器会自动选择好数据的访问方式, 但是当优化器不能选择最优的访问路径时或需要一个不同的访问路径, 需要系统管理维护人员能够评估优化器的选择, 并给出一个更优的访问路径, 这就需要利用以上的优化方法如创建索引、聚簇或表分区等来影响优化器做出更正确的决策。
同时在索引访问和全表扫描之间没有通用的一个平衡点, 如果需要访问表的所有或大部分记录, 那么全表扫描时最快的方式, 如果从大表里检索一条记录, 那么基于该列的索引将提供更有效的访问路径, 在这两个极端之间, 要预见哪种方式更高效是很难的。
参考文献
[1]Sam R.Alapati, Darl Kuhn, Bill Padfield.Oracle Database 11g性能优化攻略[M].朱浩波, 译.北京:人民邮电出版社, 2013:50.
[2]Christian Antognini.Oracle性能诊断艺术[M].童家旺, 胡怡文, 冯大辉, 译.北京:人民邮电出版社, 2009:269-274.
[3]GuyHarrison.Oracle性能优化求生指南[M].郑勇斌, 胡怡文, 童家旺, 译.北京:人民邮电出版社, 2012:197-209.
[4]李展涛, 曹英忠.基于Oracle数据库的SQL语句优化[J].微型机与应用, 2011, (21) :11.
Oracle数据接口 第7篇
关键词:医院数据中心,Oracle数据库集群,数据仓库,联机分析处理
1 引言
医院数据中心的研究与应用是为了充分利用好数据信息资源, 解决“信息孤岛”问题, 挖掘出对医院管理有用的模型、规律和知识, 并作为管理者决策支持的依据。通过研究通过建设全医院数据管理平台, 形成直观的数据视图和综合决策分析支持系统, 为各部门所需的管理决策、临床决策及科研决策等信息挖掘提供基础数据支持。
2 医疗数据中心基础架构
Oracle数据库集群是基于Oracle数据库的多节点分布式计算集群, 高性能的数据库服务能力, 成为搭建医院数据中心数据库平台的理想选择。本文将讨论搭建在以Oracle数据库集群为数据平台上的医院数据中心建设, 实现医院信息资源的高效使用, 把历史数据归集到的数据医院数据中心, 从业务数据中获取有用信息, 使医院在管理决策支持、临床决策支持和绩效评价管理上做出及时、有效、合理的判断。
智能数据作为建设医院数据中心时所采用的关键技术。运用其指导思想, 建设的医院数据中心主要涵盖以下几大内容, 第一是数据归集与汇总;第二是数据的多维度分析与展现;第三是数据分析的展现与决策支持应用, 包含了临床决策、绩效评价管理应用多维分析报表展示。
3 医疗数据中心的核心技术
常用的数据库建模方式有两种:关系数据库和多维数据库。医院信息系统中采用关系数据库进行建模, 而数据中心的数据仓库则采用多维数据库进行建模。
在建设医院数据中心过程中, 所设计的数据仓库可以满足以下功能:开放性的数据体系结构;安全性的数据归档、备份;服务性的日程安排、存储管理、性能检测、报警/时间和通知。DW的构建要遵循规划分析、设计实施、实际应用三个阶段。DW系统在螺旋循环中循序渐进不断完善。我们归类出费用、医疗和耗材三个核心数据集, 以此为基础分门别类进行数据分析。
为了实现上述的联机分析处理, 多维分析报表, 决策支撑应用, 数据仓库必须具备相应的高性能处理能力才能满足复杂的业务需求, 从技术层面, 采用Oracle数据库集群的数据中心, 可将不同数据整合到统一的数据平台, 通过集群中多台服务器分布式并行计算, 从而达到及时响应大并发的数据访问和快速数据分析处理的技术要求。
4 联机分析处理
Oracle多维分析工具与Discoverer通过图形化的前端, 支持交互式查询, 图形化的业务数据显示功能。Oracle的多维数据模型拥有分析、预测、建模, 以及对数据进行统计和时间序列管理和如果会怎么样 (what-if) 智能询问等功能。
应用多维数据集使得医院管理者可以从不同角度 (维度) 、通过不同的度量值来观察分析所关心的实际数据。数据仓库中所储存的大都是由各种信息系统所采集的事务型数据, 以医院物质耗材信息为例, 数据仓库中存放的是医疗耗材费用记录, 医嘱记录、产品厂家等字段。联机分析处理能够藉由这些明细记录上再进行多种精细低粒度的汇总、统计、分析等处理, 最后将结果体现在医院需要的各种报表之中。
Oracle express Server工具能够存储和管理多维数组, 或者通过一种只需很少、甚至不需检索的复杂的多维高速缓存方案, 提供直接的关系数据分析。
5 多维报表展现与分析应用
医院数据中心建设多维分析报表的展现与应用是将数据分析的最终体现。多维组织为用户从不同角度观察数据提供了灵活性。多维分析报表工具能够让分析者透过透视表、仪表板、统计分析图、KPI计分卡、智能地图、掌握医院的整体绩效, 能让分析者快速掌握管理的重点。医院可从时间、地域、身份、费别等不同角度来深入医院的经营情况。通过时间维度可绘制出院患者就诊时间峰值图, 帮助决策者有效的调用医疗资源。通过研究专科疾病绘制出疾病发生和流行规律, 为疾病治疗和预防提供决策支持。
维的不同组合和所考察的度量指标构成的多维数组, 采取切片、切块、钻取、旋转等各种分析模型把收集到的数据透过ETL集成到数据仓库, 并从业务数据中利用OLAP提取有用的信息外, 最重要的就是要应用在各个不同的管理领域, 帮助各级管理者在管理决策支持、临床诊断和绩效评价管理上做出及时、准确、有效的判断与决策。
6 结束语
通过医院数据中心的建设, 医院将能够以现有的业务系统为主要数据源, 逐步建立起跨应用、跨平台的统一的医院数据仓库, 在此之上开发更丰富的应用, 包含管理决策支持、临床诊断、与绩效评价管理等。同时, 应用商业智能先进的信息技术, 提供强大的数据查询、统计、汇总及分析等功能, 并建立各种分析和决策数学模型, 开展跟踪预测, 为医院管理和决策提供可信度高的数据和数据分析结果。
参考文献
[1]闫莅荣, 戴健.医疗信息孤岛与信息标准[J].中国数字医学, 2010, 5 (9) :101-102.
[2]Oracle真正应用集群11g Oracle白皮书[Z].2007 (4) .
[3]W H Inmon.Building the Data Warehouse[M].India:John Wiley, 2002.
[4]刘佳, 兰顺碧, 张晓祥, 等.基于数据仓库的分析决策系统住院病人费用[J].计算机工程, 2007, 33 (19) :267-269.
[5]刘晓茜, 杨寿保, 郭良敏, 等.雪花结构:一种新型数据中心网络结构[J].计算机学报, 2011, 34 (1) :77-86.
[6]Umeshwar Dayal.An Overview of Data Warehousing and OLAP Technology[C].Palo Alto:ACM Sigmod Record, 1997, 26 (1) :65-74.
[7]严丽平.数据仓库的构建及其多维数据集分析[J].科技广场, 2007, (6) :22-27.
[8]何莎莎, 冯占春.公立医院组织绩效的内涵探析[J].医学与社会, 2010, 23 (1) :30-32.
Oracle数据库软件研究 第8篇
1Oracles数据库的安装配置与安全卸载
1.1Oracle数据库最为数据库领域的最优秀最流行的数据库, 了解其安装配置对管理和维护数据库非常重要
Oracle数据库的安装分为服务器端和客户端, 按照安装流程安装完毕后, 打开【windows】->【控制面板】->【管理工具】->【服务】, 在windows运行进程中, 会出现以Oracle这几个字母开头的进程, 默认情况下, OracleServerOracle进程是没有启动的, 开启后将大量占用系统的内存资源, 造成系统运行缓慢, 建议在不使用数据库的情况下, 关闭这个进程。
1.2Oracle数据库的卸载
当我们要卸载重新安装Oracle数据库的时候, 我们要把系统中残留的Oracle注册信息删除干净, 以免占用系统资源而带来意想不到的困难。要想彻底删除系统中的Oracle残余信息, 光通过Oracle软件中自带的卸载功能是不够的, 而要从几个方面入手:
(1) 关闭所有的应用程序, 停止Oracle的所有服务。调用“控制面板”一“管理工具”一“服务”, 将以Oracle开始的服务全部停止。
(2) 执行0racIe数据库的常规卸载功能调用“开始”一“程序”一“Orade170 02/2005Pc WORLO cHINAUniversal Installer”, 在“Oracle UniversalInstaller”对话框中选择“卸装产品”。
(3) 修改Windows注册表调用“开始”一“运行”, 在运行对话框的“打开”文本框中输入“regedit”, 单击“确定”按钮, 将显示“注册表编辑器”窗口。删除注册表左窗格“我的电 一脑HKEY_LOCAL_MACHINESOFTWAREORACLE”中的全部文件及 “ 我的电脑HKEY-LOCAL-MACHINESYSTEMCurrentControlSetServices”中所有Oracle开头的文件夹。 (4) 删除残留在机器中的所有Oracle物理文件夹一般在两个位置上:系统目录 (C:Program FilesOrade) 和安装目录 (如:f:Oracle) 。其中的一个文件夹bin里的ociw32.d11可能删不掉, 此时可重新启动机器或在Windows的安全模式下将其删除。
2 Oracle数据库的优势
随着信息技术的不断发展, 数据库技术在各类领域得到非常快的发展, 对大量而又繁杂的信息进行有效的管理, 对领导者的决策起到一个参考作用。而在众多数据库软件中。Oracle数据库又是最受青睐的大型数据库软件。oracle数据库应用程序开发主要包括如下五个阶段: 建模、开发、测试、部署和监视, Oracle ApplicationExpress 与oracleSqlDeveloper则是整个应用程序开发中最重要的两款产品。oracleSqlDeveloper是一个免费的图形化数据库开发工具, 开发人员可以浏览数据库对象、运行SQL 语句和Sql 脚本, 并且还可以编辑和调试P L/SQL 语句。开发人员还可以运行所提供的任何数量的报表, 以及创建和保存自己的报表。SQL Developer 可以提高工作效率并简化数据库开发任务, 可以连接到任何9.2.0.1 版和更高版本的Oracle 数据库, 并且可以在Window s、Linux 和Mac OS X 上运行。Oracle Applic ation Express 是一个用于Oracle 数据库的快速Web 应用程序开发工具, 仅使用Web 浏览器以及有限的编程经验, 数据库开发人员就可以开发和部署具有快速、安全的专业应用程序, 它结合了个人数据库的质量, 企业数据库的生产效率、易用性和灵活性, 以及Web 的安全性、集成性、可伸缩性和可用性。Application Express 是一个构建基于Web 的应用程序的工具, 应用程序开发环境也基于Web, 非常方便。
3Oracle数据库的安全性和完整性
Oracle作为企业级的应用数据库软件, 管理和维护好其数据的安全性和完整性非常重要。为了防止不法分子企图破坏数据的安全。我们要对数据进行加密。数据库的加密就是对系统的密码文件进行管理与维护。Oracle数据库系统中, 用户如果要以特权的身份登陆, 其有两种身份验证的方法:即使用与操作系统集成的身份验证或使用Oracle数据库的密码文件进行验证。数据库的密码文件存有超级用户internal/sys的口令及其特权用户的用户名/口令, 它一般存放在Oracle_homedatabase目录下。数据的完整性就是对数据的一种备份, 数据的备份也就是对数据信息的一种拷贝, 是预防介质、操作系统、软件数据或损坏的一种措施。Oracle的备份信息包括控制文件、数据文件以及重做日志文件等。Oracle数据库备份方法:
(1) 冷备份, 即数据库关闭的情况下, 将关键性的文件拷贝到另外一个位置的做法;
(2) 热备份, 即数据库在运行的情况下, 采用archivelogmode方式备份数据库的方法;导出/导入备份, 即采用数据库软件本身进行导出/导入备份。
4 Oracle数据库开发工具
Oracle开发工具利用基于模型的方法设计和实现实际应用, 多用户、共享式的Oracle信息仓储为业务、应用模型和规则提供了一个中央存储场地, 能够提供最具生产力的数椐库应用开发环境。Oracle工具采用了与数椐库相同的语言, 它允许对应用进行高效分割和高度, 利用Oracle工具构建的应用可以自动且充分地利用网络带宽, 并充分利用Oracle企业级平台各级特性, 具有较强的可伸缩性、高可靠性。其常用的开发工具有:
(1) Oracle Designer , 一个基于共享信息仓储的建模和生成工具, 设计和建立应用与数椐库定义的高效开发环境;
(2) Oracle Developer, 一个用于建立企业级客户/服务器和Web数椐库应用的、易于使用的集成式快速应用开发环境;
(3) Oracle JDeveloper , 在个利用java来建立基于部件的数椐库应用的最具生产力的开发环境;
(4) Oracle Reporls, 一个用于发布和报告的解决方案, 部门可以利用它在其企业内部网或Internet上动态地发布信息。
5 结语
Oracle数据库作为功能最强大, 应用最广泛的数据库软件, 其操作的复杂难度也相对比较大。在使用Oracle数据库的过程中, 要多查阅ORACLE技术文档, 理清思路, 在遇到问题、排查故障原因时更要多查看技术文档, 从不同的角度分析、判断故障的原因。
摘要:随着信息技术的飞速发展, 许多大型的应用管理软件都需要数据库软件的支持, 主要讲述的是Oracle数据库软件, 简述了Oracle数据库在管理和维护上的一些基本应用方法和技巧。
关键词:Oracle,配置,备份,开发工具
参考文献
[1]王彤.Oracle数据库应用技巧[J].电脑知识与技术, 2004, (5) .
[2]潘东升.Oracle数据库应用系统[J].黑龙江水利科技, 2005, (4) .
ORACLE数据库的管理 第9篇
根据ORACLE数据库存储和查询的特点, 对其管理需要从以下几方面入手:
1 ORACLE数据库的日常维护
1.1 定期检查数据库表空间
表空间是存储信息的逻辑实现。在表空间和存储信息的数据文件之间有着直接的关联。当创建一个表空间时, 就明确了ORACLE数据库初始化文件支联系表空间的位置和这个数据文件的大小。由于数据库内数据的日益增多, 所使用的表空间也随之减少, 因此需要定期对表空间进行检查。如出现数据库表空间不够的情况, 暂时关闭应用程序, 添加新的数据文件。
1.2 定期跟踪警告日志
ORACLE数据库对所有的关键性问题均在警告日志中记录, 所列出的信息真实地反映出紧急事件的发生, 并记录其发生时间。警告日志可以帮助数据库管理员规范数据库的历史记录, 并允许数据库管理员对事件的整个生命周期进行跟踪。ORACLE数据库全天候不停地将信息写入警告日志, 这些信息有可能是发生中断性事件的警告信息。如果不及时查看就有可能没有充分的时间对态势发展做出及时的反应, 致使应用程序中断。
2 ORACLE数据库的日常处理
除了每日监视数据库的运行外, 还需要对数据库发生的问题进行处理, 主要有以下几种情况:
2.1 修改参数文件
在参数文件init.ora中定义了数据文件的个数, 如果在增加新的数据文件时报错, 说明参数文件中定义的数据文件个数过小需要修改。修改过参数文件后需要关闭数据库重新启动, 再增加新的数据文件即可。
2.2 重新建立回滚段
在ORACLE数据库中, 有关先前的信息将保留在一个回滚段中, 这样ORACLE数据库能够在事务没有完成的情况下重新显示“前映像”或数据外观。随着应用程序开始在数据库中改变数据, ORACLE数据库也在改变其保存信息的物理块。在将更改后的信息输入到系统全局区 (SGA) 的数据缓冲区或磁盘时, ORACLE数据库将首先把事务分配到一个回滚段中, 然后在这个回滚段中做一个原始信息的副本。在应用程序处理数据时出错, 在警告日志中记录是回滚段的问题, 此时需要重新建立回滚段。
2.3 数据库关闭
在遇到有长事务影响应用程序中需要关闭数据库。在做数据库关闭时有两种选项, 一是shutdown, 二是shutdown immediate。第一种选项执行时间较快, 可以立即关闭数据库, 第二种方式执行时间较长, 这是因为进行长事务处理时, 即使是在关闭数据库的情况下, 数据库还是会将长事务处理完毕后才能将数据库空间释放, 这样就会影响到应用程序的使用。
3 ORACLE数据库的保护
由于金融系统的特殊性, 要求数据库不间断地运行, 因而对数据库的保护是非常重要的。
3.1 数据库备份
随着数据库数据和日益增加, 数据库可能会面临系统数据流失的问题, 这就需要对数据库进行备份。数据库备份分为脱机数据库备份和联机数据库备份。联机数据库备份是在执行数据库备份的同时, 数据保持运行状态, 只对数据文件和控制文件进行同样的文件级复制, 不需要备份重做日志。脱机数据库备份时必须立刻备份数据库中的所有文件, 而在联机数据库备份中, 可以在任何时候备份部分文件或是全部文件。
3.2 逻辑的数据库备份
类似于脱机备份, 备份的实际上是一个时间上的快照。通过它可以给对象及其数据进行二进制复制。备份整个数据库时, 相当于给组成数据库的每个单独表、索引、视图、同义词、包、过程和触发器等对象做了一个拷贝。这种方式的最大优点在于可以方便地根据需要恢复一个或多个表, 或是整个模式。逻辑的数据库备份也相当于对数据库空间碎片进行了整理。
4 ORACLE数据库的安全管理
在ORACLE数据库安装成功后, 会产生三个自动生成的用户, 权限分别为超级用户权限、数据库管理者权限和普通用户权限。这三个用户的进入口令也是为大家熟知的, 因此在应用系统的开发过程中最好新建用户并设置新的密码使用, 同时最好将超级用户权限和数据库管理者权限这两个用户的口令进行定期或不定期地更换, 避免有人恶意地进入到数据库中进行破坏活动, 从而造成整个系统的瘫痪。另外, ORACLE数据库用户的口令也要定期或不定期地进行更换, 而且用户口令要避免使用简单的字母来进行设置。
5 ORACLE数据库的性能优化
随着数据库规模的扩大, 数据和实例的增多, 应用程序可能会变得更加分散, 这就需要对数据库进行优化。一方面需要修改应用程序为表建立合理的索引, 另一方面要从硬件考虑, 对CPU的反应时间进行相应地调整。
ORACLE数据库为应用系统提供了强大的数据存储和查询功能, 对它的管理是否到位也势必影响着应用系统的上正常运行。只有合理地规划才能让其发挥出最大的作用, 从而保证应用系统的快速反应。
参考文献
[1]王兰成等译.Marlene Theriault, Rachel Carmichael, James Viscusi.oracle数据库管理员基础教程[M].北京:机械工业出版社, 2000.
[2]李逸波等译.Eyal Aronoff, Kevin Loney, Noorali Sonawalla.oracle8性能优化和管理手册[M].北京:机械工业出版社, 2000.
Oracle数据接口 第10篇
关键词:空间影像数据 分块技术 索引 Spatial组件 元数据
中图分类号:P23文献标识码:A文章编号:1674-098X(2012)04(a)-0210-01
1 前言
随着卫星遥感观测、地理信息系统、航空摄影等技术的快速发展,采集高分辨率的空间影像数据不是什么难事。但是影像数据的分辨率越高意味着数据量越大,比如采集相同地段的遥感影像数据时,分辨率越高,需要存储、管理的影象数据量相应越大,它们之间是非线性增长的量化关系。
任何空间影像数据管理系统都将涉及到影像数据的存储、访问、显示、管理等等问题,尤其对于显示模块来说,由于影像数据量巨大,加之计算机系统有限的内存等诸多瓶颈,使得计算机面临着内存供需和影像数据量增长之间的矛盾。因此为了能够实现海量影像数据高效管理,必须在考虑现有计算机软硬件配置的基础上,研发可行的影像数据处理解决方案。一种常规的做法是在软件算法层面探索可行的处理方法,比如中间图像处理技术就是其中的一种。这种中间图像实质是通过和原始图像和最终图像进行交换实现提升计算机图像显示速度的方式来实现的。
事实上,分块技术类似于中间图像技术,分片处理可以将海量的影像数据拆分成很多个数据量相对较小的数据块,通过对这些数据块编号并建立索引的方式,通过检索编号、索引的方式快速检索到各个数据块从而提高访问和管理海量空间影像数据的效率。本文正是在这个基础上探讨了基于Oracle提供的Spatial组件技术实现管理海量空间影像数据的管理。
2 影像数据管理
2.1 Spatial 组件
Oracle公司推出了一种空间数据库组Spatial,是一种用来实现存储、管理空间数据的组件技术。自Oracle9i后,Oracle开始对三维空间影像数据的处理提供了强有力的支持接口。Spatial组件内部包含了元数据表、空间数据字段(简称:SDO_GEOMETRY)和空间索引,为实现空间影像数据和Oracle数据库表的映射奠定基础,Oracle Spatial组件还开放了一系列空间影像数据查询、分析的API接口,这些接口使得用户具备开发三维影像管理系统的能力,比如GIS地理信息系统。Spatial组件的空间数据字段SD_GEOMETRY可以用来存储空间数据,而元数据表则管理包含SDO_GEOMETRY字段的空间数据表;如果有必要,Oracle完全可以采用索引技术(R树索引,四叉树索引)来提高检索速度。Oracle Spatial组件主要可以解决两类问题:一类是满足需要提高Oracle数据库数据检索查询速度的客户;另一种需求是为了提供高效地存储、访问、管理海量空间影像数据库数据的用户。
2.2 空间影像数据库建模
在Oracle数据库中,数据以记录(records)的方式的存储,一条记录对应一个对象实例,比如一幅影像。记录包括基本元素影像数据,当然还有其它的元素:坐标标尺、宽、高。假设我们直接如果将影像数据文件全部存到插数据库表中,这个操作是很简单的,可是传输效率很低,同时很难发挥Oracle提供的多线程并发访问能力。考虑到这些因素,本文采用按照一定的规则对影像进行分块,同时话可以建立数据快的索引,从而为实现并发访问、管理海量影像数据奠定了基础。
2.2.1 数据分块
计算机系统读取图象数据是顺序行的读取。一般情况下,计算机会在顺序读取图像数据并与所需检索的数据进行比较,如果找到所需的数据就停止或到了文件末尾没有找到。可以考虑另外的方法,比如我们编写程序算法,将影像数据文件按照一定的拆分比例分块,程序读取一定长度的数据并存储到缓冲区,以下我们简称中间图像,这时中间图像直接送入处理系统,处理系统将处理完成的信息送到显示系统显示。然后程序继续读取数据,当再一次到达设定长度的一段数据时,再存放到刚才的文件里,这样中间图像里面包含很多数据块,如此反复,就可以按照预定的比例将图象分块了。后面,我们将为这些数据库编号,方便检索。
2.2.2 数据分块
通常分块是有原则的,考虑到计算机的性能问题,比如磁盘读写速度和网络传输延迟,分块过小或过大都会增加数据管理操作(磁盘读写、内存拷贝、网络传输)的时间。其次是对于多分辨率的层次模型, 不规范的分块方式不利于建立影像数据金字塔和索引,一般建议块尺寸取128*128或256*256像素。
2.2.3 影像空间数据文件索引的建立与检索
空间影像数据的数据量日益增长,为了提高空间影像管理系统的性能和速度,通常将整幅图像划分为较小的数据块,每个块在整个图像中有位置标示,将每个小块的数据和位置标识存储起来,这样就建立了数据块的空间索引数据库了,方便快速定位图像数据。
2.3 数据库建模
2.3.1 影像数据建模
为了能使用Oracle数据库存储和管理空间影像数据,需要
用到Spatial组件内部的元数据表,主要用来实现空间影像数据到数据库表的映射。空间影像数据包括图象属性信息描述信息(图象的大小、色彩值)以及图元灰度值(图象数据)。通过对空间影像数据进行数据库建模分析,了解到影像数据主要包括以下元素:影像标识,通常是唯一的,主要用来标识引用影像数据对象;影像类型标识,包含IMG、DEM两种;影像编码,标识影像数据信息;影像数据包括某分辨率下的像素的行数和列数。
2.3.2 数据分块建模
通过分析我们知道影像数据块主要包括以下元素:影像块的数量,表示所分块的数目;影像块标记,用来区分影像块;影像块所在影像的行号;影像块所在影像的列号;影像块的数据。Spatial组件提供了将空间影像数據映射到几何图形元的能力,我们称之为元数据,这种与影像数据相关的几何图形元包括维数、边界等。
2.4 影像空间数据的访问和管理
一方面,通过使用数据分块的策略并结合Oracle数据库Spatial组件现有的内置的元数据库表对影像空间数据和影像空间数据块进行数据库建模,这样可以在Oracle数据库中存储空间影像数据;另一方面,通过使用对影像空间数据块建立索引的方式大大提高Oracle数据库管理影像空间数据的效率。
3 结语
通过上文的论述,证明了分块技术和索引技术可以提高Oracle数据库存储、管理影像空间数据的效率,同时也进一步发掘了Oracle对于海量空间影像数据管理的能力。
参考文献
[1] 钱慎一,张素智.Oracle 11g从入门到精通.中国水利水电出版社.
[2] 刘南,刘仁义.地理信息系统.高等教育出版社.
[3] 汤国安.ARCGIS地理信息系统空间分析实验教程.科学出版社.
[4] 邬伦,刘瑜,张晶,等.地理信息系统-原理、方法和应用[M].北京:科学出版社,2001.
Oracle数据接口 第11篇
Oracle的数据库在正常情况下能够保证数据的安全与稳定,但是由于在其长期的使用过程中难免会存在一些安全隐患,例如,硬件故障、软件故障、网络通信故障、外部原因(用户操作失误、黑客攻击和病毒感染),这些都会影响数据库中的数据的可靠性和正确性,严重情况可能破坏数据库,造成数据的丢失。为了在数据库发生故障后快速有效的恢复数据库的正常运行,建立完善的安全隐患处理机制就显得尤为重要。Oracle数据库的备份与恢复就是保证数据库安全的基本措施。任何的数据库,安全是第一位的。数据库管理员如何更好的做好数据库的备份,提供稳定可靠的灾难恢复策略就显得更加重要。
2 Oracle数据库提供的备份方式
Oracle数据库目前有三种常规的备份方式,它们分别为Exp/Imp (导出/导入) 、冷备份、热备份。下面分别进行介绍。
2.1 导入/导出 (Imp/Exp)
Oracle导入/导出实用工具 (Imp/Exp) 主要是用来对数据库进行逻辑备份,首先利用Exp工具导出数据库的转储二进制文件,然后利用Imp工具从转储文件中读取对象定义及表数据,并在另一个Oracle数据库中重建这些对象,从而实现数据的迁移,达到备份和恢复的目的。
2.2 冷备份(NonArchivelog-style)
冷备份是利用操作系统的拷贝功能来实现的。在数据库关闭的情况下,可以将数据库中的所有文件进行复制。一旦数据库出现故障,我们可以采取将这些拷贝过的文件重新覆盖到原文件位置。这种备份可将数据库恢复到它被关闭的状态。数据库可使用的每个文件都被备份下来,这些文件包括所有数据文件、所有控制文件、所有联机日志文件及INIT.ORA文件。冷备份必须是数据库关闭的情况下完成,当数据库运行的时候,执行数据库文件冷备份无效。
2.3 热备份 (Archivelog-style)
通常情况下,数据库需要每天24小时运行。由于随时都有新的数据加入,数据丢失将影响整个项目运作,因此在保证用户访问的同时,也要实现备份的要求。在这种情况下,我们一般就采取热备份的方式,这种备份可将数据库恢复到任一时间点的状态,前提是数据库要处于自动归档 (Archive Log) 的模式下运行。
导出/导入备份是属于逻辑备份,冷备份和热备份是物理备份,这些主要是使用SQL脚本结合OS命令备份数据库,统称为用户管理备份与恢复。
2.4 RMAN (Recovery Manager, 恢复管理器)
Oracle公司从Oracle8.0版本开始提供了实用程序RMAN,它有不依赖于操作系统的强大命令语言,可以协助DBA管理备份、执行转储和恢复操作,拥有两种使用界面:图形用户界面 (GUI) 和命令行界面 (CLI) 。
RMAN由可执行部分 (Recovery Manager Executable) 、服务器会话 (Server Sessions) 、恢复管理器仓库 (RMAN Repository) 、目标数据库 (Target Data Base) 、通道 (Channel) 、介质管理库 (Media Management Library) 几部分组成,各部分功能介绍如下。
(1)目标数据库
要执行备份、转储和恢复操作的数据库。RMAN可以备份除了联机日志、配置文件、密码文件之外的数据文件、控制文件、归档日志。
(2)服务进程
执行备份、转储和恢复操作前,必须先要连接到目标数据库,当连接到目标数据库时,会建立两个连到目标数据库的服务进程。
(3)通道
从目标数据库到备份介质的通信途径。
(4)恢复管理器
通过启动操作系统里程将数据备份到磁盘或磁带上。
(5)恢复目录
RMAN在目标数据库之外的另一个数据库,用于存放数据文件、控制文件、归档日志和SPFILE和备份集和备份信息片信息,恢复目录是一个可选项。通过恢复目录,恢复管理器通过可以从目录数据库中自动获得信息,用于维护历史备份信息。使用恢复目录是为了保证目标数据库控制文件不是备份信息的唯一贮藏点。
通过可执行恢复管理器调用RMAN的命令行界面,RMAN解释用户命令并适当调用服务器进程对目标数据库执行备份或恢复操作等相应的任务,要执行和记录备份与恢复操作,RMAN需要与目标数据库连接,这个连接就是通过通道来实现的,通道既可以通过手工分配,也可以通过自动通道分配预先设置的通道。RMAN在从磁带设备进行读写操作时需要用到介质管理库,所需的附加介质管理软件由相关的介质或存储系统供应商负责提供。
3 Oracle DB的改造实例
3.1 Oracle DB改造背景
在此,以一次实际的数据库改造案例为例,首先,假设该数据库的两台主机的ip地址分别为10.10.2.3和10.10.2.1,其中,前者作为主数据库,后者作为备用数据库。两台主机均为HP DL380机架式服务器,2.4GHz主频CPU, 8G内存,硬盘容量600G。数据库以前使用的Oracle DB备份方式为EXP/IMP(导入导出方式),利用legato软件做了双机热备份。但是整个数据库运行于非归档模式,数据库中的数据的导入导出,主备机之间的数据备份的具体参数均是通过legato软件手动设置,存在很大的不合理性,根本就没有实现真正意义上的合理化的双机热备效果。曾经就有过一次,由于对历史数据的清理工作处理不当,发生了因为数据库溢出而宕机的事故。所以此次我们要完成数据库备份方式从EXP/IMP到RMAN的改造,改用归档模式下RMAN备份方式。
3.2 Oracle DB改造计划及具体的实施步骤
计划对该数据库的改造分两部分完成,第一步,计划完成对该数据库的升级(安装升级包),并且修改其运行模式为归档模式,然后对其进行RMAN和DATAGUARD的备份设置,配置各项参数;第二步,在完成对数据库的升级和配置更改后,该数据库的改造基本完成,接下来进入测试阶段,进行DATAGUARD主备机切换测试。
由于条件限制,此次改造都只能采取远程登陆方式进行。具体实施步骤如下:
(1)修改主数据库(10.10.2.3)为归档模式。在此阶段,主数据库停机时间大约在5分钟左右。
(2)配置主备数据库的详细参数,使之达到在归档模式下的热备份效果。配置STANDBY DATABASE,配置阶段前期很顺利,但是因为主数据库通过安装升级程序后,升级到了9204,而新安装的备用数据库(10.10.2.1)仍然是采用9201的版本,在最后配置的时候报错,遂怀疑是版本差异造成此情况的发生,于是立即给备用数据库安装升级包,使之达到9204版本,错误随即消失,DATAGUARD工作正常。
(3)进行主备数据库切换测试,用以验证此次改造的成功。但在进行DATA-GUARD切换测试时,遇到两例小问题,一个是由于备用数据库的SERVICE_NAME与主数据库的SERVICE_NAME不相同,所以导致切换后应用程序无法连接上备用数据库。同时在备库往主库切换回来的过程中,由于误操作将两台主机均变成备库。最后通过_allow_resetlogs_corruption参数才成功打开数据库。登录过后,重新配置DATAGUARD数据库,修改备用库参数,即把DATAGARD的SID配置成和主库的SID一样,这样在主备切换过后,备用数据库通过更改IP地址和监听地址,顺利地完成了备库接管主库,数据无丢失。
做完上述操作过后,更改备库的IP地址为主库的IP地址(10.10.2.3),然后修改备库的监听文件,修改地址为10.10.2.3,重启监听。
当新的备用数据库切换回来的时候,再重复执行上面的过程,但因为此时的备库 (之前的主库) 监听地址仍为10.10.2.3,所以不需要执行最后更改监听地址的一步。通过这两个步骤的验证过后,该数据库改造顺利完成,并且DATAGUARD切换测试成功通过。
通过此次改造我们总结出,在利用oracle的RMAN进行数据库备份的时候,首先要保证主备库的oracle版本必须相同,而且都运行在归档模式。主备数据库各项参数必须完全一致,任何细小的差错或差异都可能造成严重后果。
另外,在改造过程中,发现原始查询语句存在明显的不合理情况,故对数据库查询语句进行了优化。通过优化SQL语句,使应用程序在访问该数据库时的查询效率大大提高。效率提高到原来的5至8倍左右。
4 总结
与传统的手工管理的备份恢复相比,RMAN具有更多的优越性:支持在线备份,在块水平上实现多级增量备份,支持并行备份;可以压缩空块,恢复减少所需要备份量,功能类似物理备份,但比物理备份强大;可以把备份的输出打包成备份集,也可以按固定大小分割备份集,备份与恢复的过程可以自动管理,可以使用脚本 (存在Recovery catalog中) ,可以做坏块监测;使用简单等。
而且Oracle的新版本提供了比以前与执行备份和恢复相关更易懂的命令行语法。RMAN的易用性和高稳定性在选择RMAN进行备份与恢复时,能够更好地保证数据库的可靠性和稳定性。Oracle数据库管理员应熟练掌握这种工具的使用方法, 同时还应深入理解RMAN内在运行机制, 依据数据库运行工况和任务要求, 有针对性地采取备份与恢复策略, 不仅有助于降低备份和恢复操作的复杂程度, 减少工作量, 也有助于从整体上提升系统的安全可靠性。
摘要:在目前的数据库管理中, 数据库备份是保证数据库安全的一项重要措施。本文首先对Oracle提供的备份功能作了整体介绍, 然后通过实际案例分析, 具体介绍了如何使用RMAN进行备份与恢复, 以及dataguard的配置方式。通过实际案例, 比较出不同备份方式的优缺点, 最后阐述了使用RMAN的优势以及存在的不足和隐患。
关键词:Oracle,数据备份,dataguard
参考文献
[1] (美) Robert G.Freeman, Matthew Hart.Oracle9iRMAN备份与恢复技术-配置和使用Oracle恢复管理器[M].北京:清华大学出版社, 2004.
[2] (美) Doug Stuns等编著, 赵军锁等译.OCP:Oracle9iDBA基础II[M].北京:电子工业出版社, 2002.
[3]李海波.Oracle数据库的安全及备份恢复[J].电脑知识与技术, 2004, (11) 13-15.
Oracle数据接口
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


