ORACLE系统包介绍
- 格式:docx
- 大小:19.79 KB
- 文档页数:9
ORACLE系统概述ORACLE公司自86年推出版本5开端,体系具有分布数据库处理功能.88年推出版本6,ORACLE RDBMS(V6.0)可带事务处理选项(TPO),进步了事务处理的速度.1992年推出了版本7,在ORACLE RDBMS中可带过程数据库选项(procedural database option)和并行办事器选项(parallel server option),称为ORACLE7数据库治理体系,它开释了开放的关系型体系的真正潜力。
ORACLE7的协同开创情形供给了新一代集成的软件生命周期开创情形,可用以实现高临盆率、大年夜型事务处理及客户/办事器构造的应用体系。
协同开创情形具有可移植性,支撑多种数据来源、多种图形用户界面及多媒体、多平易近族说话、CASE等协同应用体系。
一.ORACLE体系1.ORACLE产品构造及构成ORACLE体系是由以RDBMS为核心的一批软件产品构成,其产品构造轮廓下图所示:2.ORACLE体系特点ORACLE公司于1979年,起首推出基于SQL标准的关系数据库产品,可在100多种硬件平台上运行(所括微机、工作站、小型机、中型机和大年夜型机),支撑专门多种操作体系。
用户的ORACLE应用可便利地从一种运算机设备移至另一种运算机设备上。
ORACLE的分布式构造可将数据和应用驻留在多台运算机上,而互相间的通信是透亮的。
1992年6月ORACLE 公司推出的ORACLE7协同办事器数据库,使关系数据库技巧迈上了新台阶。
依照IDG(国际数据集团)1992年全球UNIX数据库市场申报,ORACLE占市场发卖量50%。
它之因此倍受用户爱好是因为它有以下凸起的特点:●支撑大年夜数据库、多用户的高机能的事务处理。
ORACLE支撑最大年夜数据库,其大年夜小可到几百千兆,可充分应用硬件设备。
支撑大年夜量用户同时在同一数据上履行各类数据应用,并使数据争用最小,包管数据一致性。
oracle数据库体系架构详解在学习oracle中,体系结构是重中之重,⼀开始从宏观上掌握它的物理组成、⽂件组成和各种⽂件组成。
掌握的越深⼊越好。
在实际⼯作遇到疑难问题,其实都可以归结到体系结构中来解释。
体系结构是对⼀个系统的框架描述。
是设计⼀个系统的宏观⼯作。
这好⽐建⼀栋⼤楼。
你⾸先应该以图纸的⽅式把整个⼤楼的体系架构描述出来。
然后⼀点点的往⾥⾯填充东西。
下⾯我们先以⼀个图解的⽅式对oracle体系结构有⼀个基本了解根据⽰图,便于我们记忆,⽰图分三部分组成,左侧User Process、Server Process、PGA可以看做成Clinet端,上⾯的实例(Instance)和下⾯的数据库(Database)及参数⽂件(parameter file)、密码⽂件(password file)和归档⽇志⽂件(archived logfiles)组成Oracle Server,所以整个⽰图可以理解成⼀个C/S架构。
Oracle Server由两个实体组成:实例(instance)与数据库(database)。
这两个实体是独⽴的,不过连接在⼀起。
在数据库创建过程中,实例⾸先被创建,然后才创建数据库。
在典型的单实例环境中,实例与数据库的关系是⼀对⼀的,⼀个实例连接⼀个数据库,实例与数据库也可以是多对⼀的关系,即不同计算机上的多个实例打开共享磁盘系统上的⼀个公⽤数据库。
这种多对⼀关系被称为实际应⽤群集(Real Application Clusters,RAC)RAC极⼤提⾼了数据库的性能、容错与可伸缩性(可能耗费更多的存储空间)并且是oracle⽹格(grid)概念的必备部分。
下⾯我们来详细看⼀下oracle数据库的体系架构Oracle体系架构主要有两⼤部分组成:数据库实例(Instance)和数据库⽂件(database)数据库实例指数据库服务器的内存及相关处理程序,它是Oracle的⼼脏。
与Oracle性能关系最⼤的是SGA(System Global Area,即系统全局区活共享内存区),SGA包含三个部分:1、数据缓冲区,可避免重复读取常⽤的数据;2、⽇志缓冲区,提升了数据增删改的速度,减少磁盘的读写⽽加快速度;3、共享池,使相同的SQL语句不再编译,提升了SQL的执⾏速度。
什么是Oracle11g CVE-2004-2761?1. Oracle11g是什么?Oracle11g是由Oracle公司(甲骨文)开发的一款关系数据库管理系统(RDBMS),它是Oracle数据库系统的一个版本,于2007年推出。
它包含了许多高级特性,如数据压缩、增强的安全性、高级数据分析等,是业界广泛使用的数据库管理系统之一。
2. CVE-2004-2761是指什么?CVE,即“通用漏洞披露”(Common Vulnerabilities and Exposures),是一种为公众提供标准标识符以确定漏洞和公开的安全问题的列表。
每个CVE项都拥有一个唯一标识符,以便进行跟踪。
而CVE-2004-2761是指Oracle数据库系统中的一个特定漏洞。
3. Oracle11g CVE-2004-2761的描述Oracle数据库中的CVE-2004-2761是一个已知的安全漏洞,它可能允许攻击者对系统进行未经授权的访问、数据泄露或其他恶意行为。
这一漏洞被认为是比较严重的,因为它可能会影响数据库的完整性和机密性。
4. 如何防范Oracle11g CVE-2004-2761漏洞?针对CVE-2004-2761漏洞,Oracle公司推出了相关的安全补丁程序,以修复这一漏洞。
管理员和用户应该确保他们的Oracle数据库系统已经安装了最新的补丁程序。
也建议加强数据库的访问控制、监控和审计,从而降低系统遭受攻击的风险。
5. CVE-2004-2761的影响如果攻击者利用CVE-2004-2761漏洞成功攻击了Oracle数据库系统,可能会导致系统崩溃、数据泄露、信息篡改等严重后果。
受影响的组织和个人还可能面临法律责任、商业损失等问题。
6. 结语Oracle11g CVE-2004-2761是一种严重的数据库安全漏洞,可能会对受影响的系统和数据造成损害。
用户和管理员应该重视此漏洞,并采取相应的措施来确保数据库系统的安全。
Oracle 系统包DBMS_OUTPUTa)启用i. dbms_output.enable(buffer_size in integer default 20000);ii. set serveroutput on;b)禁用i. dbms_output.disable;c)PUT和PUT_LINEi. PUT:所有信息显示在同一行ii. PUT_LINE信息显示后,自动换行d)NEW_LINE用于在行的尾部追加行结束符,一般用PUT同时使用e)GET_LINE和GET_LINESi. DBMS_OUTPUT.GET_LINE(li ne 0UTVARCHAR2,status OUT INTEGER)用于取缓冲区的单行信息ii. DBMS_OUTPUT.GET_LINES(lines OUT chararr,numlies IN OUT INTEGER) 用于取得缓冲区的多行信息DBMS_JOBa)SUBMIT用于建立一个新作业语法DBMS_JOB.SUBMIT(job OUT BINARY_INTEGER,what IN VARCHAR2,next_date IN DATE DEFATULT SYSDATE, interval IN VARCHAR2 DEFAULT ' NULL' ,no_parse IN BOOLEAN DEFAULT FALSE, instance IN BINARY_INTEGER DEFAULTany_instance, force IN DEFAULT FALSE);例子VAR jobno NUMBER;BEGINDBMS_JOB.SUBMI(:jobno,'pro_hrs101d0_ins_hrs101t0', sysdate,‘sysdate+1 ');b)REMOVE!于删除作业队列中的特定作业语法:DBMS_JOB.REMOVE(jov IN BINARY_INTEGER);例子:DBMS_JOB.REMOVE(10);--删除JOB号为10 的JOBc)CHANGE用于改变与作业相关的所有信息语法:DBMS_JOB.CHANGE(job IN BINARY_INTEGER,what IN VARCHAR2,next_date IN DATE,interval IN VARCHAR2, instance IN BINARY_INTEGER DEFAULT NULL, force INBOOLEAN DEFAULT FALSE);例子:execute dbms_job.change(2,null,null, 'sysdate+7')-修改2 号job 的间隔时间为7 天d)WHA:T 用于改变作业要执行的操作语法:DBMS_JOB.WHAT(job IN BINARY_INTEGER,what IN VARCHAR2);e)NEXT_DAT:用于改变作业的下次运行日期语法:DBMS_JOB.NEXT_DATE(job in BINARY_INTEGER,next_date IN DATE);f)INSTANCE用于改变运行作业的例程语法:DBMS_JOB.INSTANCE(job IN BINARY_INTEGER, INSTANCE IN BINARY_INTEGER,force IN BOOLEAN DEFAULT FALSE);g)INTERVAL用于改变作业的运行时间间隔语法:DBMS_JOB.INTERVAL(job IN BINARY_INTEGER,interval IN VARCHAR2);h)BROKEN用于设置作业的中断标记.当中断了作业之后,作业将不会被运行语法:DBMS_JOB.BROKEN(job IN BINARY_INTEGER,broken IN BOOLEAN,next_date IN DATE DEFAULT SYSDATE);i)RUN用于运行已存在的作业语法:DBMS_JOB.RUN(jobin BINARY_INTEGER,force IN BOOLEANDEFAULTFALSE); 三、DBMS_PIPE概述:在同一例程的不同会话之间的管道通信a)CREATE_PIPE用于建立公用或私有管道.如果参数private 为TRUE则为私有管道语法:DBMS_PIPE.CREATE_TYPE(pipename IN VARCHAR2,-- 指定管道的名称maxpipesize IN INTEGER DEFAULT 8192,--指定管道消息的最大尺寸private IN BOOLEAN DEFAULT TRUE) --TRUE 为私有,FALSE 为公用REURN INTEGER;--如果返回为0,则管道建立成功,否则为建立管道失败b)PACK_MESSAG用于将消息写入到本地消息缓冲区。
语法:DBMS_PIPE.PACK_MESSAGE(item IN VARCHAR2/NCHAR/NUMBER/DATE);DBMS_PIPE.PACK_MESSAGE_RAW(item IN RAW); DBMS_PIPE.PACK_MESSAGE_ROWID(itemIN ROWID);c)SEND_MESSAG用于将本地消息缓冲区的内容发送到管道语法:DBMS_PIPE.SEND_MESSAGE(pipename IN VARCHAR2,timeout IN INTEGER DEFAULT MAXWAIT,-- 指定发送消息的超时时间maxpipesize IN INTEGER DEFAULT 8192)RETURN INTEGER;-- 如果返回为0,则发送成功,1为超时,3 为出现中断d)RECEIVE_MESSAG囲于接收管道消息,并将消息写入本地消息缓冲区语法:DBMS_PIPE.RECEIVE_MESSAGE(pipename IN VARHCAR2,timeout IN INTEGER DEFAULT MAXWAIT) RETURN INTEGER;-- 同SEND_MESSAGE表示本地缓冲区不能容纳管道消息e)NEXT_ITEM_TYPE确定本地消息缓冲区下项的数据类型,在调用RECEIVE_MESSAGE 之后调用该函数语法:DBMS_PIPE.NEXT_ITEM_TYPE RETURN INTEGEf如果返回为0,表示管道没有任何消息,6-NUMBE,R 9-ARCHAR,2 11-ROWID,12-DATE,23-RAWf)UNPACK_MESSAGE用于将消息缓冲区的内容写入到变量中,在使用函数RECEVIE_MESSAG接收管道消息之后使用取得消息缓冲区的消息,每次取一条消息语法:DBMS_PIPE.UNPACK_MESSAGE(item OUT VARCHAR2/NCHAR/NUMBER/DATE);DBMS_PIPE.UNPACK_MESSAGE_RAW(item OUT RAW);DBMS_PIPE.UNPACK_MESSAGE_ROWID(item OUT ROWID);g)REMOVE_PIPE用于删除已经建立的管道语法:DBMS_PIPE.REMOVE_PIPE(pipename IN VARCHAR2) RETURN INTEGER;h)PURG:E 用于清除管道中的内容语法:DBMS_PIPE.PURGE(pipename IN VARCHAR2);i)RESET_BUFFER用于复位管道缓冲区。
在使用新管道之前应该复位管道缓冲区语法:DBMS_PIPE.REST_BUFFER;j)UNIQUE_SESSION_NAM用于为特定会话返回唯一的名称,名称最大长度为30字节语法:DBMS_PIPE.UNIQUE_SESSION_NAME();四、DBMS_ALERT概述:适用于生成并传递数据库预警信息。
合理使用包和数据库触发器,可以使得在和生特定数据库事件时将信息传递给应用程序。
a)REGISTER注册预警事件语法:DBMS_ALERT.REGISTER(name IN VARCHAR2)b)REMOVE删除会话不需要的预警事件语法:DBMS_ALERT.REMOVE(name IN VARCHAR2);c)REMOVEALL删除当前会话所有已经注册的预警事件语法:DBMS_ALERT.REMOVEALL();d)SET_DEFAULT:S设置检测预警事件的时间间隔,默认时间间隔为5秒语法:DBMS_ALERT.SET_DEFAULTS(sensitivity IN NUMBER);e)SIGNAL指定预警所对应的预警消息事件语法:DBMS_ALERT.SIGNAL( name IN VARCHAR2,message IN VARCHAR2);f)WAITAN Y等待当前会话的任何预警事件,并且在预警事件发生时输出相应信息语法:DBMS_ALERT.WAITANY( name OUT VARCHAR2, message OUT VARCHAR2, status OUT INTEGER,-- 返回0 表示发生了预警事件,1 表示超时timeout IN NUMBERDEFAULT MAXWAIT);-- 设置等待预警事的超时时间g)WAITON:E 等待当前会话的特定预警事件,并且在发生预警事件时输出预警消息语法:DBMS_ALERT.WAITONE( name OUT VARCHAR2, message OUT VARCHAR2, status OUTINTEGER,-- 返回0 表示发生了预警事件,1 表示超时timeout IN NUMBERDEFAULT MAXWAIT);-- 设置等待预警事的超时时间五、DBMS_SESSION概述:提供使用PL/SQL实现ALTERSESSION命令,SET ROLE命令和其他会话住处的方法a)SET_INENTIFIER:该过程用于设置会话的客户ID号语法:DBMS_SESSION.SET_IDENTIFIER(client_id VARCHAR2);b)SET_CONTEX该过程用于设置应用上下文属性语法:DMBS_SESSION.SET_CONTEXT(namespace VARCHAR2,-- 指定应用上下文的命名空间attribute VARCHAR2,-- 指定应用上下文的属性value varchar2);-- 指定属性值DMBS_SESSION.SET_CONTEXT(namespace VARCHAR2, attribute VARCHAR2, value varchar2,username VARCHAR2,-- 指定应用上下文的用户名属性client_id VARCHAR2);c)CLEAR_CONTEX用:于清除应用上下文的属性设置d)CLEAR_IDENTIFIER 删除会话的set_clie nt_ide)SET_ROLE激活或禁止会话角色,与SQL语句的SET ROLE作用相同f)SET_SQL_TRAC激活或禁止当前会话的SQL>踪,同ALTERSESSIONSET SQL_TRACEg)SET_NLS设置NLS特征,同ALTER SESSION SET <nls_param>=<value>h)CLOSE_DATABASE_LINK:闭已经打开的远程数据库链i)SET_PACKAG复位当前会话的所有包,并且会释放包状态j)MODIFY_PACKAGE_STA用于修改当前会话的PL/SQL程序单元的状态k)UNIQUE_SESSIO N」D返回当前会话的唯一标识符l)IS_ROLE_ENABLED确定当前会话是否激活了特定角色m)IS_SESSION_ALIVE:确定特定会话是否处于活动状态n)SET_CL0SE_CACHED_0PEN_CURSOR或关闭close_cached_open_cursorso)FREE_UNUSED_USER_MEM在RY亍了大内存操作之后回收未用内存p)LIST_CONTEXT返回当前会话的命名空间和上下文列表q)SWITCH_CURRENT_CONSUMER_G改O!当前会话的资源使用组六、DBMS_RLS概述:用于实现清细访问控制(VPD:虚拟专用数据库),并且精细访问控制是通过在SQL 语句中动态增加谓词(where 子句)来实现。