Oracle

阅读 / 问答 / 标签

oracle数据库中nvl可以用于insert语句中吗?

可以,但很少这样用,实际pkg编写中,都是声明个变量,对变量赋值时做个nvl,insert插入变量

oracle nvl 可以返回null吗

nvl是把一个空值返回成其他值,怎么可能还返回null呢,不能

oracle 中 nvl 的问题

问题应该出在这一段where t.pd_project_code=PROJECT_CODE and t.PD_VERSION_ID=VERSION_CODE;如果有NULL值的话就会导致条件不成立,NULL不好做比较,比如NULL=NULL的结果也是FALSE的也可以参考我的日志http://hi.baidu.com/kywinder/blog/item/dae7bfadcf2218f7faed5045.html

oracle语法nvl,sign与round什么意思

这些都是oracle内置函数nvl带两个参数 nvl(n1,n2):当n1为‘null"时 返回n2;sign 带一个参数 sign(n),当n<0 ,返回-1,当n=0返回0,当n>0返回1;round带一个参数(或者两个) round(n,m)/round(n)当m>0四舍五入为m位小数,如果m小于0则四舍五入到小数点向左第m位(第二个参数m如果不为整数如2.1,则截取m整数部分)这些函数你可以用这样的语句测试下,印象会更深刻select 函数 from dual;

Oracle中nvl和nvl2这两个函数的区别

NVL2(expr1,expr2,expr3) 功能:如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。需要注意的是value1和value2要保持字段类型相同。NVL( string1, replace_with) 功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。需要注意的是参数value2 value3可以是除了LONG类型之外的任意数据类型。

在oracle中NVL是什么意思?

这是个Oracle函数。意思;如果FieldName为Null,那么返回2,否则返回FieldName的值。

oracle的nvl

oracle中对于nvl有如下用法:【语法】NVL (expr1, expr2) 【功能】若expr1为NULL,返回expr2;expr1不为NULL,返回expr1。注意两者的类型要一致【语法】NVL2 (expr1, expr2, expr3) 【功能】expr1不为NULL,返回expr2;expr2为NULL,返回expr3。 expr2和expr3类型不同的话,expr3会转换为expr2的类型

oracle的nvl和nvl2是什么函数,两者区别是什么呢

oracle的NVL函数的功能室如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。NVL(E1,E2)的功能为:如果E1为NULL,则函数返回E2,否则返回E1本身。但此函数有一定局限,所以就有了NVL2函数。NVL2函数的格式如下:NVL2(expr1,expr2,expr3)含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。NVL2函数:Oracle/PLSQL中的一个函数,NVL2(E1,E2,E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。扩展资料:NVL函数的功能是实现空值的转换,根据第一个表达式的值是否为空值来返回响应的列名或表达式,主要用于对数据列上的空值进行处理,语法格式如:NVL(string1,replace_with)如果第一个参数的值为空值,则返回第二个参数的值,否则返回第一个参数的值。如果两个参数的值都为空值,则返回空值。第一个参数和第二个参数可以是任何类型的数据,但两个参数的数据类型必须相同(或能够由Oracle隐式转换为相同的类型)。参考资料来源:百度百科--nvl函数

Oracle中nvl函数的用法和作用是什么?

用法:查询不相等数据功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值用法:如果是空值就替换成另一个值如nvl(字段,‘x")字段值等于null就这个函数得到的结果就是"x",一般用于存在空值比较的情况下,比如字段a与字段b都是int型,其中一个等于null另一个为非空值,你使用a<>b是不成立的。使用此条件查询你将丢失这条本来不相等的数据,可以如此用法nvl(字段,-1)<>nvl(字段,-1),这样就可以得到想要查询的数据,当然查询数据的前提是此字段值不能有-1值才能用这种写法功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,例:nvl(yanlei777,0) > 0NVL(yanlei777, 0) 的意思是 如果 yanlei777 是NULL, 则取0值通过查询获得某个字段的合计值,如果这个值为null将给出一个预设的默认值。

在oracle数据库中nvl()是什么函数?

网页链接

oracle中nvl()函数有什么用啊?

作用:判断某个值是否为空值,若不为空值则输出,若为空值,返回指定值。详细解释如下:1、nvl()函数的格式如下:NVL(expr1,expr2);2、含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。3、例:select name,NVL(name,-1) from user;运行后,结果返回两列数值,若name为空,则返回-1,若name不为空值,则返回其自身。拓展资料Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。参考资料: 百度百科:nvl函数

SQL和oracle 建立同义词

sqlserver 2005支持同义词CREATE SYNONYM [schema_name.]synonym_name FOR object_name --补充SQL Server 2005引入了一个同义词的概念,这是一个单部分的名字,它可以替换在许多SQL语句中的一个两、三或四部分的名字。使用同义词可以让你减少输入,而且还能提供一个抽象层来为你保护底层对象的改变。为了理解其工作原理,让我们先看一下创建同义词的语法。下面是CREATE SYNONYM语句的语法: CREATE SYNONYM [schema_name.]synonym_name FOR object_name 在此,object_name是一个SQL Server对象(全称限定已经足以能够标识出这个对象)的名字,而synonym_name是你想赋给它的新名字。如果你不想为同义词指定一种模式,那么SQL Server使用当前的用户的默认模式。当你创建同义词时,相应的对象不需要存在,因为同义词是迟绑定的:当你实际上使用同义词时,SQL Server仅仅检查基对象。

oracle 怎样查看同义词的创建语句

1.你可能需要在user用户中给当前用户(user2)授权: grant select/delete/update on user2  创建同义词:create public synonym table_name for user.table_name;2.删除同义词:   drop public synonym table_name;   3.查看所有同义词:   select * from dba_synonyms

oracle 怎么给存储过程建立同义词

函数创建不了同义词表、视图、同义词、序列、存储过程、包可以

oracle中如何修改同义词

create or replace synonym 同义词名 for 表名;

oracle同义词

Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义创建同义词CREATE SYNONYM SYSN_TEST FOR TEST;查看同义词SELECT * FROM USER_SYNONYMS使用同义词SELECT * FROM SYSN_TEST;删除同义词DROP SYNONYM SYSN_TEST;

Oracle中使用同义词介绍

   一、背景   有两个sid:Asid,Bsid,在Asid下有两个用户Auser1,Auser2,在Bsid下有一个用户Buser1。其中Auser2和Buser1建立了dblink。现希望通过登录Buser1访问Auser1上的三张表table1,table2,table3信息和函数function1。    二、步骤   ①登录Auser1对Auser2授权(若需要删除则加上)   grant ,select,on table1 to Auser2;   grant ,select,on table2 to Auser2;   grant ,select,on table3 to Auser2;   grant execute on function1 to Auser2;   ②登录Auser2建立同义词   create synonym table1 for Auser1.table1;   create synonym table2 for Auser1.table1;   create synonym table3 for Auser1.table1;   create synonym function1 for Auser1.function1;   ③登录Buser1查找db_link名(例如查出来的db_link名为mydblink1)   select username,db_link from user_db_links   ④建立Buser1的同义词   create synonym table1 for Auser2.table1@mydblink1;   create synonym table2 for Auser2.table2@mydblink1;   create synonym table3 for Auser2.table3@mydblink1;   create synonym function1 for Auser2.function1@mydblink1;   ⑤测试   此时登录Buser1通过select * from table1就可以访问table1了。    三、注意点   也可以建立procedure的`同义词,但是这样执行的过程中不允许commit。如果要提交的话请在如JDBC中commit()。

oracle 怎么给存储过程建立同义词

函数创建不了同义词表、视图、同义词、序列、存储过程、包可以

oracle 查看同义词

1.你可能需要在user用户中给当前用户(user2)授权:grantselect/delete/updateonuser2创建同义词:createpublicsynonymtable_nameforuser.table_name;2.删除同义词:droppublicsynonymtable_name;3.查看所有同义词:select*fromdba_synonyms

ORACLE同一用户下同义词与视图名称一样?

同一个schema下同名的视图和同义词不能同时存在

oracle 同义词

Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义创建同义词CREATE SYNONYM SYSN_TEST FOR TEST;查看同义词SELECT * FROM USER_SYNONYMS使用同义词SELECT * FROM SYSN_TEST;删除同义词DROP SYNONYM SYSN_TEST;

Oracle中视图和同义词的区别

1、 视图 视图是从一个表或多个表中导出的虚表,它与常规表不同之处在于它并不存储数据—它只是在一个存储的查询中定义.视图同真实表一样,也包含一系列带有名称的列和数据。 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句. 视图向用户提供基表数据的另一种表现形式2,同义词 同义词是表,索引,视图等模式对象的一个别名。同义词只有是数据库对象的一个替代名词,在使用同义词是,Oracle 会将其翻译为对应的对象名称。同义词只在oracle数据库的数据词典中保存器定义的描述,因此同义词并不占用任何实际的存储空间。 Oracle 中的同义词分为两种:公有同义词和 私有同义词;公有同义词在数据库中所有的用户都可以使用;私有的同义词由创建它的用户所拥有,用户名可以控制其他用户是否有权使用属于自己的同义词。

oracle如何访问与表相同的public同义词?

首先,你在用户A下是不能访问与表名相同的公共同义词的。原因是Oracle在对象的选择顺序造成,Oracle的选择原则是先Schema后Public。你这个问题的解决方法是更改用户A下的同名表名或在另一个用户下,通过用户A.表名解决。

Oracle中创建同义词

  create synonym table_name for user table_name;   其中第一个user_table和第二个user_table可以不一样   此外如果要创建一个远程的数据库上的某张表的同义词 需要先创建一个Database Link(数据库连接)来扩展访问 然后在使用如下语句创建数据库同义词 create synonym table_name for table_name@DB_Link;   当然 你可能需要在user用户中给当前用户(user )授权 grant select/delete/update on user   创建好同义词之后 你可以对它进行DML(insert update delete)操作 当然select语句时肯定支持的 删除同义词 drop synonym table_name;这里的table_name是指同义词的表名   同义词拥有如下好处 节省大量的数据库空间 对不同用户的操作同一张表没有多少差别 扩展的数据库的使用范围 能够在不同的数据库用户之间实现无缝交互 同义词可以创建在不同一个数据库服务器上 通过网络实现连接   查看所有同义词   select * from dba_synonyms   在oracle中创建同义词我们都知道 在oracle中对用户的管理是使用权限的方式来管理的 也就是说 如果我们想使用数据库 我们就必须得有权限 但是如果是别人将权限授予了我们 我们也是能对数据库进行操作的 但是我们必须要已授权的表的名称前键入该表所有者的名称 所以这就是比较麻烦的 遇到这种情况 我们该怎么办呢?创建个同义词吧!这样我们就可以直接使用同义词来使用表了   创建同义词的具体语法是 create [public] SYNONYM synooym for object;其中synooym表示要创建的同义词的名称 object表示表 视图 序列等我们要创建同义词的对象的名称   CREATE PUBLIC SYNONYM public_emp FOR jward emp; jward 用户名   删除同义词   使用DROP SYNONYM语句删除不再需要的同义词 要想删除私有同义词 就省略 PUBLIC 关键字要想删除公共同义词就要包括PUBLIC 关键字   DROP SYNONYM emp; 删除名为emp 的私有同义词 lishixinzhi/Article/program/Oracle/201311/18310

oracle 中怎么创建同义词?

同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。Oracle的同义词有两种类型:公有同义词与私有同义词。1:公有同义词由一个特殊的用户组Public所拥有。2:私有同义词是由创建他的用户所有。创建同义词的语法: Create [public] synonym 同义词名称 for [username.]objectName删除同义词的语法: Drop [public] synonym 同义词名称 查看所有同义词: select * from dba_synonyms

Oracle中视图和同义词的区别

Oracle中视图和同义词的区别如下:视图和同义词分别都是数据库中的对象名称,它们都不对应实际的数据存储,都依赖其他对象的存在而存在。一、视图:视图可以被看成是虚拟表或存储查询。除非是索引视图,否则视图的数据不会作为非重复对象存储在数据库中。一般是基于一个或多个数据表经数据查询语句构建而成;视图可以再被用于数据查询语句中。二、同义词:是架构范围内的对象的另一名称。通过使用同义词,客户端应用程序可以使用由一部分组成的名称来引用基对象,而不必使用由两部分、三部分或四部分组成的名称。可以理解为是对数据库中一个对象的快捷方式或者在特定范围内的别名;不限于数据表,几乎所有的数据库对象都可以建立同义词。1.视图可以对应一张或多张表,同义词只能对应一张表名称2.视图可以设置其他约束条件3.可以在同义词上建立视图:例如,已经存在一个名为synonym_city的同义词和一个名为table_citys的表,可以创建视图:CREATEORREPLACENOFORCEVIEWview_cityASSELECT*FROMsynonym_city,table_citys;4.可以通过对同义词进行任何DML操作,对表数据进行插入、更新、删除,通过对视图只能进行更新和删除操作。值得注意的是:视图和同义词都可以屏蔽用户访问其他用户拥有的表。例如:现在存在两个用户:scott、sys,以sys用户登录创建跨用户表的同义词:CREATEORREPLACEPUBLICSYNONYMSYN_EMPforscott.emp;创建跨用户的表的视图:CREATEORREPLACEVIEWview_EMPASSELECT*FROMscott.emp然后进行查询操作:SELECT*FROMSYN_EMP;SELECT*FROMview_EMP;查询结果是一样的。

oracle里synonym的作用是什么?

是表的同义词, 作用跟 查询里面的 为字段定义的别名差不多。比如a用户的表aa,你是b,本来查询他的表应该写select * from a.aa 如果给a.aa定义个同义词bb ,就可用写select * from b 。好处呢 一,手写查询时比较简便点;二,如果写程序调用的话,如果数据表啊什么的有变化了,程序不用改写,只需要重新定义个同义词就行了

oracle oms是什么

服务

oracle 12c 无法使用WM_CONCAT,求指导,以前用的11g可以使用!!!

显示赋权WMSYS对象给当前用户试试

oracle 12c 无法使用WM_CONCAT,求指导,以前用的11g可以使用!!!

显示赋权WMSYS对象给当前用户试试

IMP-00058: 遇到 ORACLE 错误 6550 ORA-06550: line 1, column 33: PLS-00302:

问题原因:imp和exp工具的版本不一致问题处理:使用低版本的exp和imp完成数据的迁移。尽量不要使用高版本的客户端去连接低版本的数据库。Subject: PLS-00302-SET_NO_OUTLINES must be declared When Using 10.2 Export Utility Doc ID: NOTE:339062.1 Applies to:Oracle Server - Enterprise Edition - Version: 10.2.0.1.0This problem can occur on any platform.SymptomsWhile trying to export 9.2.0.6 database with 10.2.0.1.0 Exp utilityreceive following errors:-Export: Release 10.2.0.1.0 - Production on Tue Oct 25 17:11:46 2005Copyright (c) 1982, 2005, Oracle. All rights reserved.EXP-00056: ORACLE error 6550 encounteredORA-06550: line 1, column 41:PLS-00302: component "SET_NO_OUTLINES" must be declaredORA-06550: line 1, column 15:PL/SQL: Statement ignoredEXP-00000: Export terminated unsuccessfullyCauseUse of Higher Version Export utility (10.2.0.1) on Lower version database(9.2.0.6).This problem occurs when using 10.2 Exp utility for 10.1,9.2,8.1.7 databases.SolutionAs per compatibility Matrix,You need to use the export utility of the lower version of source and target database.

oracle数据库和oscar数据库的区别

神舟OSCAR数据库,是拥有完全自主知识产权的企业级大型、通用对象关系型数据库管理系统。它是北京神舟航天软件技术有限公司集多年的数据库研发经验,在国家科技部和中国航天科技集团的大力支持下研制成功的,是“十五”863重大软件专项“大型通用数据库管理系统及其应用”的研制成果,是一个在功能、性能、实用性、稳定性、安全性以及可扩展性等方面能够满足电子政务、电子商务、企业信息化以及国防工业等敏感部门信息化建设需求的大型通用数据库产品。神舟OSCAR数据库系统性能稳定、功能完善,可广泛应用于各类企事业单位、政府机关,尤其是国防、军工等事关国家政治、军事、经济安全的各要害单位的信息化建设。ORACLE 就不用多说了,大家都知道,应用更广。二者没什么可比性。

ORACLE存储过程报错,出现符号)在需要下列之一时

P_NODE_LIST IN VARCHAR2 DEFAULT NULL, --计算节点列表这行多了个逗号

oracle 怎么截取一个字符串中的英文字母

[TEST@orcl] SQL>with t1 as( 2 select "PP1109" a from dual 3 union 4 select "PP1107" from dual 5 union 6 select "PVC112" from dual 7 union 8 select "PVC113" from dual) 9 select regexp_substr(a,"[A-Z|a-z]+",1) from t1;REGEXP_SUBST------------PPPPPVCPVC

有人能谈谈Oracle Workflow 和 BPEL 的区别和联系么

Oracle有两个ESB产品,一个是Oracle Service Bus (OSB),另一个是Oracle Enterprise Service Bus (ESB)。Oracle Service Bus (OSB)是AquaLogic Service Bus (ALSB)的新名称,ALSB是以前BEA公司的ESB名称。Oracle Enterprise Service Bus (ESB)是Oracle的“老”产品,与BEA没有任何的关系。ESB当前和Oracle的BPEL产品有更好的集成度,并且两个产品都使用相同的适配器框架。与ESB相比较,OSB提供更丰富的功能,更多的监控和展现能力。此外,OSB也提供更丰富的消息路由,流量控制和消息修饰。在OSB的下一个版本(11g),它将支持基于JCA标准的适配器框架,使其能够使用当前BPEL和ESB提供的适配器,同时也提高了OSB与其他系统的交互能力。11g同时也会将ESB的一些功能移植到OSB中,特别是对SCA框架的支持。安装OSB,同weblogic一样,不在说明。域建好后启动OSB时注意,比如本机安装的OSB启动进入管理配置界面:

那位oracle 大师告诉下这是什么情况?高分求教,加倍给分

是导入数据时发生的吧。数据导入语句加一个 “statistics=none ”参数能否解决。如果不行,请提供数据源和数据目标数据库的版本、数据导入语句。

oracle触发器可以修改别的用户的表不

触发器使用定义了这些权限的表的所有者的权限(而不是导致触发器触发的用户的权限,并且不是创建该触发器的用户的权限)执行。在触发器引用表时,它使用表创建者的组成员资格找到没有指定的显示所有者名称的表。例如,如果 user_1.Table_A 上的触发器引用 Table_B,并且没有指定 Table_B 的所有者,那么,Table_B 就必须已经由 user_1 创建,或者,user_1 必须(直接或间接地)是作为 Table_B 的所有者的某个组的成员。如果这两个条件都不具备,该触发器触发时将出现消息 [没有找到表]。此外,user_1 必须具有执行该触发器中指定的表的操作的权限。所以我们需要b用户给a用户‘table_B"表的操作权限.(如果在a用户的‘table_A"表上的触发器中有对b用户‘table_B"表进行增、删、改的操作,那么就需要b用户给a用户‘table_B"表的增、删、改操作权限).权限: SELECT(读), INSERT(追加), UPDATE(写),DELETEGRANT 权限 ON 表名 TO 用户名;注意:用这条语句的用户必须是表的所有者.比如上面表Table_A用户是 user_1 ,表Table_B用户是 user_2则需要登录 user_2 然后GRANT 权限 ON Table_B TO user_1 ;

Oracle用户无法打开SQL文件!提示:SP2-0310: 无法打开文件 "skeleton.sql"

1.XP里安装的Oracle10g,无法用scott/tiger登录了!!登陆时候报什么错误?2要写明sql文件的路径:SQL> @C:oracleskeleton.sql

Oracle用户无法打开SQL文件!提示:SP2-0310: 无法打开文件 "skeleton.sql"

@skeleton表示当前目录的skeleton.sql文件。你必须将skeleton.sql拷贝到你当前执行sqlplus的目录,查看你当前处于哪个目录:SQL>!pwd/home/oracleSQL>如果你的文件不是在当前目录,而你又不想拷贝文件到当前目录来,那得在执行时指定路径即可(下面假设你文件所在路径为e:oracle):SQL>@e:oracleskeleton.sql提示"用scott登录,提示如下:ERROR:ORA-28000:theaccountislocked!"是表示该用户由于登陆失败次数超出系统最大失败验证次数限制了,只需要解锁就可以了:SQL>conn/assysdba已连接。SQL>alteruserscottaccountunlock;

oracle问题。 简述shareplex工作原理。

1 体系结构, 3 queues and 4 processesRedo Log/archived log -->Capture process -->capure queue--> Read Process--> Export queue-->NETWORK-->Import process-->Post queue-->Post Process-->target DB我的测试环境:ndb1:XE -----> ndb3:DEMO2 源端进程sp_cop --> sp_ocap, sp_ordr, sp_xportCature Process(sp_ocap)从redo logs/arch logs中读取active config中变化的数据,写到capture queue每个data source有个capure processReader Process(sp_ordr)从capture queue读取数据,加上路由信息写到export queue每个data source有个read processExport Process(sp_xport)跟每个target建立一个TCP/IP连接,并从export queue读取数据,把数据传到目的端每个source-target对都有一个Export Process3目的端进程ps -fu qustsp_cop --> sp_pst_mt, sp_mport 0xc0a86e66+PI+ndb1+sp_mport+0xc0a86e65 RImport Process(sp_mport)与每个source建立一个TCP/IP连接,接受数据写到post queue中每个source-target对都有一个Import ProcessPost Process(sp_post_mt)从post queue中读取数据,apply到目标数据库中每个post queue都有一个Post Processs4网络端口lsof -i :2100源端:sp_cop TCP ndb1.test:2100 (LISTEN)sp_xport TCP ndb1.test:34347->ndb3.test:2100 (ESTABLISHED)目的端:sp_cop TCP ndb3.test:2100 (LISTEN)sp_mport TCP ndb3.test:2100->ndb1.test:34347 (ESTABLISHED)sp_mport TCP ndb3.test:2100->ndb1.test:34347 (ESTABLISHED)sp_cop在2端都监听2100端口sp_xport连接到源端2100端口,只有一个连接sp_mport连接到目的端 2100端口, 有2个连接5 Oracle的连接(正常工作状态)SQL> select username,module from v$session where username is not null order by 1,2;源端:QUEST sp_ocap@ndb1.test (TNS V1-V3)QUEST sp_ordr@ndb1.test (TNS V1-V3)QUEST sp_ordr@ndb1.test (TNS V1-V3)QUEST sp_ordr@ndb1.test (TNS V1-V3)QUEST sp_ordr@ndb1.test (TNS V1-V3)QUEST sp_ordr@ndb1.test (TNS V1-V3)QUEST sp_ordr@ndb1.test (TNS V1-V3)QUEST sp_ordr@ndb1.test (TNS V1-V3)QUEST sp_ordr@ndb1.test (TNS V1-V3)目的端:QUEST Post-2100-ndb1-XEQUEST sp_opst_mt@ndb3.test (TNS V1-V3)6 queue的情况qview list源端:o.XE+CWRITER +PA+o.XE+sp_ocap+o.XEREADER +PR+o.XE+sp_ordr+o.XEndb1+XWRITER +PR+o.XE+sp_ordr+o.XEREADER +PX+ndb1+sp_xport+0xc0a86e66 (192.168.110.102)Capture Queue(+C)用于快速存放捕捉道德变化数据每个Oracle实例只有一个cature queue,用Oracle_SID命名:O.{ORACLE_SID}Export Queue(+X)用于存放加上路由的数据缺省,一个Host/Server只有一个Export queue(多个Oracle实例共用),用hostname命名:{hostname}用named export queue来实行每个实例用独立的queue目的端:ndb1+P+o.XE-o.DEMOsubqueues range from 0 to 3WRITER +PI+ndb1+sp_mport+0xc0a86e65 (192.168.110.101)READER +PP+ndb1+sp_opst_mt+o.XE-o.DEMOPostQueue(+P)用于存放收到的数据每个source-target对都有一个Post Queue,以两个Oracle实例来命名:O.{SRC_SID}-O.{DEST_SID}再看目的端post进程的参数sp_mport 0xc0a86e66+PI+ndb1+sp_mport+0xc0a86e65 Rqueue是源端export queue的reader+目的端post queue的writer

如何判断通过程序插入oracle是否成功?

rhtrjytrruykik

如何把ORACLE数据从CLOB类型转化为BLOB类型

先删除后建立。前提:我的report_data 字段类型是CLOBalterer table REC_DOWNLOAD_LIST drop column report_data ;alterer table REC_DOWNLOAD_LIST add report_data BLOB;

Oracle 10g表空间的概念、目的和意义

概念:表空间实质是组织数据文件的一种途径,Oracle就是通过表空间这个数据库对象完成对数据的组织的。在将数据插入Oracle数据库之前,必须首先建立表空间,然后将数据插入表空间的一个对象中。解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。目的和意义:方便管理,就像每个城市会划分成很多区,每个区又有很多街道一样目的和意义具体体现在他的用途上:-目录表空间每个数据库只有一个目录表空间,它是在发出 CREATE DATABASE 命令时创建的。目录表空间被 DB2 命名为 SYSCATSPACE,它保存了系统目录表。总是在创建数据库时创建该表空间。-常规表空间常规表空间保存表数据和索引。它还可以保存诸如大对象(Large Object,LOB)之类的长数据,除非这些数据显式地存储在长表空间中。如果某些表空间是数据库管理的空间(Database Managed Space,DMS),则可以将表及其索引分别放到单独的常规表空间中。我们将在本文后面定义 DMS 和系统管理的空间(System Managed Space,SMS)之间的区别。每个数据库中必须至少有一个常规表空间。创建数据库时指定该表空间的缺省名为 USERSPACE1。-长表空间长表空间用于存储长型或 LOB 表列,它们必须驻留在 DMS 表空间中。它们还可以存储结构化类型的列或索引数据。如果没有定义长表空间,那么将把 LOB 存储在常规表空间中。长表空间是可选的,缺省情况下一个都不创建。-系统临时表空间系统临时表空间用于存储 SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据。每个数据库必须至少有一个系统临时表空间。随数据库创建的系统临时表空间的缺省名为TEMPSPACE1。-用户临时表空间用户临时表空间存储已声明的全局临时表。创建数据库时不存在用户临时表空间。至少应当创建一个用户临时表空间以允许定义已声明的临时表。用户临时表空间是可选的,缺省情况下一个都不创建。

oracle pl/sql中如何使用变量

定义并使用变量PL/SQL有四种类型:标量类型,复合类型,引用类型 (reference),LOB(Large Obejct)类型一、标量类型最常用的就是标量类型,是指只能存放单个数值的变量,包括数字类型、字符类型、日期类型和布尔类型,每种类型又包含相应的子类型。常量标量类型如下:VARCHAR2 (n) , CHAR (n), NUMBER (p,s),DATE, TIMESTAMP , LONG , LONG RAW ,BOOLEAN,BINARY_INTEGER(仅 PL / SQL使用),BINARY_FLOAT和BINARY_DOUBLE(10g新引入的)定义标量:identifier [CONSTANT] datatype [NOT NULL] [:=| DEFAULT expr]使用标量需要注意的是=号被:=取代,与delphi一样的赋值符号@_@例子:v_name VARCHAR2 ( 10 );v_rate CONSTANTS NUMBER ( 4 , 2 ) : = 3.04 ;为了防止定义的变量类型与表中的字段类型不一致,可以使用%TYPE来定义:v_name employee.name % TYPE;如上面所示,v_name的类型就与表 employee中的name字段类型一样!!二、复合变量:用于存放多个值的变量称为复合变量,包括PL/SQL记录,PL/SQL表,嵌套表和VARRAY四种类型1.PL/SQL记录类似于C/C++中的结构概念:declare TYPE employee_record is RECORD( id employee.id % TYPE, name employee.name % TYPE, email employee.email % TYPE); em_record employee_record;begin select id,name,email into em_record from employee where name =& name; dbms_output.put_line( " 雇员名: " || em_record.name || " 雇员ID: " || em_record.id);end ;2.PL/SQL表,类似于数组概念,不同的是PL/SQL表允许负值下标,而且没有上下限,如:declare TYPE employee_table is table of employee.name % TYPE index by BINaRY_INTEGER; em_table employee_table;begin select name into em_table( - 1 ) from employee where name =& name; dbms_output.put_line( " 雇员名: " || em_table( - 1 ));end ;3.嵌套表,与PL/SQL 表相似,不同的是嵌套表可以做表列的数据类型,而PL/SQL表不能,使用嵌套表作为表列时,必须为其指定专门的存储表,如:create or replace TYPE emp_type as OBJECT(name VARCHAR2 ( 10 ),salary NUMBER ( 6 , 2 ),hiredate DATE);CREATE OR REPLACE TYPE emp_array IS TABLE OF emp_type;CREATE TABLE department(deptno NUMBER ( 2 ),dname VARCHAR2 ( 10 ),employee emp_array)NESTED TABLE employee STORE as employee_dept;4.VARRAY(变长数组),与嵌套表相似,也可以做为表列的数据类型,但是嵌套表没有个数限制,而VARRAY有个数限制,如:CREATE TYPE TEST_ARRAY IS VARRAY(20) OF emp_type;三、引用变量(reference)类似于C++中的指针或者JAVA中引用的概念,用于存放数值指针的变量,使用此变量,可以使得应用程序共享相同对象,降低占用空间。此类有两种类型:游标(REF CURSOR)和对象类型(REF OBJECT)1.REF CURSOR,定义时同时指定SELECT语句的游标称为显式或者静态游标,在打开时才指定SELECT语句的游标称为动态游标,如:DECLARE TYPE c1 IS REF CURSOR ; emp_cursor c1; v_name employee.name % TYPE; v_sal employee.salary % TYPE;begin open emp_cursor for SELECT name,salary FROM EMPLOYEE ; LOOP FETCH emp_cursor INTO v_name,v_sal; EXIT WHEN emp_cursor % NOTFOUND; dbms_output.put_line(v_name); END LOOP; close emp_cursor;end ; 2.REF OBJECT,与JAVA的引用概念相同,存储的是指向对象的指针四、LOB类型LOB类型是指用于存储大批量数据的变量,包括内部的3种(CLOB,BLOB,NCLOB)和外部LOB(BFILE)。CLOB,NCLOB用于存储大量的字符数据。BLOB用于存储大批量二进制数据(如图象)。BFILE则存储指向OS文件的指针。

oracle版本有哪些?

Oracle.各版本发行时间和特性:1983年,Oracle V3数据库发布,成为当时业界第一款可同时支持PC、小型机和主机的数据库 1991年8月,Oracle在北京成立了一家独资公司,它的中文名字叫"北京甲骨文软件系统有限公司",也就是今天人们称谓的Oracle中国公司。ORACLE7.0新特性 数据库的完整性约束 存储的函数、过程、过程包 数据库触发器 视图编辑 用户定义的SQL函数 基于角色的安全性 双日志文件 资源限制 审核提高 不完全的数据库恢复 性能优化 能清空表 SQL*NET V2 检测点进程 数据复制 ORACLE7.1新特性 符合美国国家标准化组织ISO SQL92条目标准 均衡的数据复制 分布式恢复 动态SQL 分布查询优化 服务器管理 只读数据库 ORACLE7.2新特性 可以自动扩大的数据物理文件 可手工压缩的回滚段 创建的表和索引是不可回收的 FROM条件里支持子查询 PL/SQL程序包 PL/SQL游标变量 检查和 分布式地创建表 DBMS事务队列 DBMS_SPACE 1996年,Oracle7.3 通用数据库服务器发布 可分割的视图 位映象索引 在表扫描前异步读取操作 备用数据库 在实例启动时延迟事务的恢复 可以修改的连接视图 SQLDBA不是定制的 索引重建 数据库读写校验 上下文选项 空间数据选项 表空间的改变,有组合,临时或永久性。 数据库触发器的编辑和改错 存储参数支持不限数量的数据段 init.ora参数可修改 HASH的连接和反连接 信赖关系 ORACLE 的跟踪操作 高级的复制对象组 PL/SQL应用函数包 1997年,Oracle推出了面向网络计算的数据库Oracle8, 对象相关的数据库 对象类别增加(不仅仅有date, character, number三种类型) 支持SQL3国际标准 可以调用外部的过程 每个表里的LOB字段可以大于1 可以分割的表和索引 export/import各别的表分区 分区可以存在不同的表空间里 online/offline, backup/recover各别的表分区 合并和平衡分区 信息处理的高级队列管理 SQL,PL/SQL,OCI性能的提高,能有效使用内存和CPU VARCHAR2能超过4000 bytes,每个表能多余1000字段 可分布执行的DML语句 连接缓冲池能支持更多的在线人数 “STAR”查询的优化 V$试图能获取多个实例的参数,数据库失败后能透明地指向新的实例点 数据库的数据接口能处理图片、录影、上下文、时间、空间等信息 备份和恢复的性能提高 中心化管理引入安全服务 快照的快速刷新,引入了复制管理器 延迟完整性约束检查 NET8替换SQL*NET 关键字可按倒序排序 任何视图可以更改 新的ROWID格式 1999年,Oracle正式提供世界上第一个Internet数据库Oracle8i。 新功能: Internet计算  --WebDB,用于建立、部署和监视Web应用  --iMedia  --OracleInternet文件系统Java  --数据库中的JavaVM  --Java存储过程、函数和触发器  --在Java、SQL和PL/SQL之间的无缝交互  --嵌入在Java代码中的SQLJ  --增强的JDBC驱动程序数据仓库技术  --summary管理  --散列和组合分区  --资源管理  --透明的表空间  --函数索引与虚拟列  --联机索引建立与重建  --降序索引  --自动并行查询级  --联合索引和DML单表summary  --只读备用数据库  --直接的路径装载API  --新的位图索引功能  --样例函数  --并行和细粒度化ANALYZE  --取消合法限制状态  --拷贝统计数据  --MERGE划分操作  --前“n”个查询优化事务处理  --发布与订阅能力  --数据库事件触发器  --自治事务  --单表散列簇  --分区表中的对象类型列  --分区表中的LOB  --按索引组织的分区表  --稳定的优化器执行规划Oracle并行服务器  --针对可伸缩的内部实例查询的ConsistentReadServer  --安装向导  --自动的连接负载平衡机制  --在特定节点上的强制性执行作业对象关系数据库  --临时LOB  --集合无嵌套技术  --对象视图的增强  --对象Cache的增强  --增强的SQL*Loader,支持对象、集合和LOB的装载  --LOB性能的增强  --LONG到LOB的数据迁移  --用户定义的对象标识符和嵌套式标识符  --对不稳定REF的探测分析安全性  --细粒度化访问控制  --可扩展和参数驱动的应用上下文规范  --LDAP集成   N层认证与授权   SSL与X.509v3支持   PADIUS适配器系统管理与易用性  --基于Java的多用户Oracle企业管理器  --基于Java的Oracle通用安装程序  --基于Java的数据库配置助手  --利用监听程序进行自动实例注册  --并行事务的并行恢复  --取消列  --针对运行时间较长的操作的过程监视器  --恢复管理器的性能改进  --恢复管理器的磁盘亲和力探测能力  --自动式备用数据库  --对实例恢复限制恢复时间  --对受损块的探测和修复  --本地管理的表空间  --多档案过程与目标  --简单的表空间及时点恢复复制与决策自动化  --为方便繁杂部署而部署的快照模块  --脱机实例化  --在可更新的快照中列级别的子集化  --内置的申请包  --快照刷新性能的改进  --分布式查询优化  --安全模型的功能增强  --支持OracleLitePL/SQL改进  --在PL/SQL(bulkbinds)中,控制一个SQL语句中的多个数据项  --在PL/SQL中,通过引用传递参数  --在PL/SQL中的嵌入式动态SQL  --为了工具厂商而覆盖PL/SQL代码  --无限制的PL/SQL包大小可扩展性  --可扩展的索引机制  --可扩展的优化器  --数据cartridge服务  --Pro*CTM外部过程  --Oracle调用接口回调注册  --在按索引组织的表中进行二级索引  --支持外部过程中的对象其他新增功能  --支持欧元符  --临时表  --在调用程序的安全关系中执行子程序  --集成Microsoft事务服务器  --NetTM的HTTP协议适配器--RETURNING子句的性能改进 2001年6月,Oracle又推出了新一代Internet电子商务基础架构Oracle9i。 Oracle9i 的关键聚焦领域包括: u2022提供世界领先的零数据丢失保护环境 u2022通过对更多联机操作的支持来减少脱机维护的要求 u2022提供对已损坏数据库的快速而准确的修复 u2022使最终用户能够识别并更正其自身的错误 世界领先的数据保护环境 Oracle9i包括许多改进数据保护的新特性。除了对现有Standby产品进行了重点增强外,还包括了一个提供监视、自动化和控制的框架。 与管理备用数据库有关的许多任务也是自动化的,包括初始化实例、错误跳转和轻松的主从之间的来回切换。管理员也可以有选择性地指定每个备用站点滞后于生产环境的日志应用延迟(目的是在线免除人为错误或损坏错误),并选择一个零数据丢失模式,在此模式下重做日志被同步发送到备用站点。 在Oracle9i 中还增强了LogMiner ,以便提供全面的基于SQL 的Log Analysis(日志分析)。目前LogMiner 支持索引编排的集簇表、链式行、直接加载、标量对象类型、LOB、LONG 数据类型和DDL 。LogMiner 也显示主键并支持根据更改内容查询日志(例如,显示对雇员“Smith ”的所有更改)。一个新的图形用户界面以及其他数据库特性也使此产品易学、易用。 联机数据演变 Oracle9i 包含一个新的联机重新组织和重新定义体系结构,此体系结构提供了更为强大的重新组织功能。目前管理员可以对表定义执行各种联机操作,包括按堆组织的表的联机重新组织。在本质上,Oracle9i 目前允许联机“CREATE TABLE AS SELECT”操作。在此新体系结构中,表的内容被复制到一个新表中。在复制内容的同时,数据库跟踪对原始表的更新。在复制完成后,更新将被应用于新表。一旦应用了更新,就可以在新表上创建索引。在创建索引后,将应用任何其他更新,而且结果表将替代原始表。在更新字典数据的同时,仅在操作开始和结束时以独占模式锁定表。使用这一新的体系结构,可以联机更改表的任何物理属性。可以将表移动到一个新位置,可以将表分区,也可以将表从一种组织(例如堆积)转换为另一种组织(例如索引编排的)。 此外,许多逻辑属性都可以更改。例如可以更改列的名称、类型和大小并可以对列进行添加、删除或合并。主要的限制是不能修改表的主键。 目前Oracle9i 也支持索引编排表上次级索引的联机创建、重建等。目前可以联机创建索引并同时对其进行分析。次级索引支持块提示的有效使用。 管理员也能够快速地停止数据库以便执行要求非活动事务处理的操作。此外,在Oracle9i 中可以动态调整缓冲区高速缓存和共享池的大小。最后,Oracle9i 也可以在对象处于联机状态并被用户访问的同时验证对象的结构(分析验证)。 准确的数据库修复 Oracle8i 包含非常完备的恢复功能。Oracle9i 通过使这些功能更强大和更准确对它们进行了扩展。 Oracle9i 包括对磁盘损坏的2004年,发布oralce10g。2007年7月12日,甲骨文公司在美国纽约宣布推出数据库Oracle 11g现在有多个oracle12C 这是最新版本

Oracle DBMS_LOB的问题求解

"cimg" as "c:img"

ORACLE里面LOBINDEX,LOBSEGMENT类型的是什么对象

模式(schema)是数据的逻辑结构或者说模式对象的汇总。一个模式对应一个数据库用户,并且名字和数据库用户名相同。每个用户都有一个单独的模式。模式对象可以通过SQL创建(DDL)和操作(DML),包含下列类型:聚集、数据库链、数据库触发器、维度、外部过程库、索引和索引类型、Java类、Java资源和Java源代码、实体化视图和实体化视图日志、对象表、对象类型和对象视图、操作符、序列、存储函数、过程和包、同义词、表和索引组织表、视图。还有一些类型的对象可以保存在数据库中,也可以通过SQL创建和操作,但是不包含在模式中:上下文(Contexts)、目录(Directory)、概要文件(Profile)、角色(Role)、表空间(Tablespaces)、用户(User)模式对象是数据的逻辑存储结构。数据对象和磁盘上保存其信息的物理文件并不一一对应。Oracle在数据库的一个表空间上保存模式对象。每个对象的数据物理的保存在表空间的一个或者多个数据文件上。对某些对象如表、索引、聚集来说,你可以指定在表空间的数据文件上Oracle可以分配多大的磁盘空间来存储这个对象。

分页查询oracle 报错ORA-22922: 不存在的 LOB 值

你运行下sql可能查询出的数据多余你展示的查询条件不对

oracle设置过多的clob字段会不会影响数据库效率

oracle11g推出以后有了一种新的LOBS的存储模式叫做SecureFile LOBs 与之区别 把以前使用的叫做basicFile Lobs 根据官方文档上的说法 secure是哪哪都好。提供了压缩 重复消除 加密等新的功能 但是basicFile Lobs依然是default的 secureFime的用法是通过在LOB存储子句后添加SECUREFILE关键字来创建 最简单的一种写法: SQL> CREATE TABLE images ( 2 id NUMBER, 3 i_data CLOB 4 ) 5 LOB(i_data) STORE AS BASICFILE; Table created SQL> CREATE TABLE images2 (id NUMBER, 2 i_data CLOB 3 ) 4 LOB(i_data) STORE AS SECUREFILE; Table created. ——————————————————————————— Securefile列标明了是否为SecureFile类型的LOB SQL> SELECT TABLE_NAME,SEGMENT_NAME,INDEX_NAME,SECUREFILE FROM DBA_LOBS WHERE TABLE_NAME like ‘IMAGES%"; TABLE_NAME SEGMENT_NAME —————————— —————————— INDEX_NAME SEC —————————— — IMAGES SYS_LOB0000076951C00002$$ SYS_IL0000076951C00002$$ NO IMAGES2 SYS_LOB0000076948C00002$$ SYS_IL0000076948C00002$$ YES Securefile 使用Securefile LOB的表也是自动生成LOB segment和LOB index的。 但是此时LOB index只有在使用重复消除功能时才会使用,在其他情况下不会使用 SQL> CREATE TABLE images2 (id NUMBER, 2 i_data CLOB 3 ) 4 LOB(i_data) STORE AS SECUREFILE 5 ; CREATE TABLE images2 (id NUMBER, * ERROR at line 1: ORA-43853: SECUREFILE lobs cannot be used in non-ASSM tablespace “SYSTEM” 要注意,Securefile LOB只能在ASSM的表空间(自动管理的表空间)里创建, 不过既然从9i起ASSM表空间就是默认设置了,一般这里不会有多大问题。 只是要求SecureLOB所在的LOB列数据需要存放在ASSM表空间中,而包含LOB列的那个表可以不是 CREATE TABLE images2 (id NUMBER,i_data CLOB) LOB(i_data) STORE AS SECUREFILE (tablespace ucjmh); SQL> conn / as sysdba Connected. SQL> CREATE TABLE images2 (id NUMBER,i_data CLOB) LOB(i_data) STORE AS SECUREFILE (tablespace ucjmh); Table created. ————————————————————————————————– SQL> show parameter DB_SECUREFILE NAME TYPE VALUE ———————————— ———– —————————— db_securefile string PERMITTED 这个值的取值范围有: DB_SECUREFILE = { NEVER | PERMITTED | ALWAYS | IGNORE } PERMITTED 是默认的 就是当你指定是什么的时候就是什么 FORCE 是ORA-43853的来源 意思就是不管你是否指定用SecureFile 创建的时候都是用Securefile 如果不是在ASSM的表空间 那么就报ORA-43853 ALWAYS 意思就是不管你是否指定用SecureFile 创建的时候都是用Securefile 但是如果你是非ASSM的表空间 那就是BASICFILE 如果非ASSM的时候你还显示的指定了用SecureFiLE 那也报43853 NEVER 是不管怎么样都是BasicFile 如果指定了一些加密或压缩之类的参数那么就报ORA-43853 IGNORE 是不管怎么样都是BasicFile 如果指定了一些加密或压缩之类的参数也不报错。 chunk: 在BasicFile的LOB中,Chunk的大小是一定的,最小跟DB Block的大小一样,最大为32KB –一个chunk最多只保留一行LOB数据,也就是说,如果你设置了32K的CHUNK,但是如果LOB字段大小只有4K,也将占用32K的空间 而在SecureFile中,chunk的size是可变的,由Oracle自动动态分配,最小跟DB Block的大小一样,最大为64MB –指定的值最好是数据库块的倍数,而且指定的值不能大于表空间区间中NEXT的值 当指定enable storage in row的时候,当lob size =4000 bytes的时候,将存储在lob段里面,其存储方式和表段存储方式完全不一样,使用的是chunk为最小单位的存储,没有行迁移和行链接的概念。 如果设置了enable storage in row 那么oracle会自动将小于4000bytes的数据存储在行内, 这是ORACLE的默认值, 对于大于4000字节的lob字段保存在lob段(同disable storage in row),在表段将保留36-84字节的控制信息。 对于disable storage in row,Oracle将lob字段分开保存在lob段中,而仅仅在行位置保留20字节的指针。 对于相当于disable storage in row的这部分(也就是单独保存在LOB段的这部分数据),UNDO仅仅是记录指针与相关lob索引改变,如果发生更新操作等DML操作,原始数据将保留在LOB段 DISABLE STORAGE IN ROW:如果DISABLE这个属性,那么lob数据会在行外存储,行内只存储该lob值得指针,而且这个属性在表 storage as(cache|nocahce)表示是否允许lob段经过buffer cache并缓存。默认是nocache,表示直接读与直接写,不经过数据库的data buffer。所以,默认情况下,对于单独保存在LOB段的这部分数据,在发生物理读的时候,是直接读,如direct path read (lob) storage as(nocache logging |nocache nologging),logging/nologging属性只对nocache方式生效,默认是logging,如果是nologging方式,对于 保存在行外的log部分,在update等DML操作时将不记录redo日志 PCTVERSION integer、RETENTION:都是ORACLE用来管理LOB字段镜像数据的。在LOB 数据的更新过程中, ORACLE没有用UNDO TABLESPACE空间,而是从LOB字段所在的表空间里划分一段空间来做镜像空间的, 这个空间的大小由PCTVERSION参数控制,默认值为10,代表划分表空间的10%作为镜像空间, 每个镜像空间的单元大小由CHUNK参数指定,pctversion可以使用在manual undo mode和automatic undo mode 环境中 retention应用了automatic undo mode中的undo_retention通过时间来管理lob镜像空间. pctversion和retention不能同时被指定.建议数据库在automatic undo mode下使用retention参数 SecureFile的COMPRESS选项在表或分区一级上开启了对LOB内容的压缩,使用关键字MEDIUM和HIGH表示压缩的等级, 如果没有指定压缩等级,就默认为MEDIUM,对LOB内容进行压缩会增加系统开销, 因此使用高等级的压缩可能会对系统性能产生不良影响,SecureFile LOB的压缩功能不影响表压缩,反之亦然 SecureFile LOB的加密功能依赖于钱夹或硬件安全模型(HSM)掌管加密密钥,钱夹设置与透明数据加密(TDE)和表空间加密描述的一样, 因此在尝试下面的例子前先完成那两个实验。SecureFile的ENCRYPT选项执行块级别的LOB内容加密, 一个可选的USING子句定义了使用哪种加密算法(3DES168, AES128, AES192, 或AES256),默认使用AES192算法, NO SALT选项对于SecureFile加密不可用,加密是应用在每一列上的,因此它会影响所有使用LOB的分区,DECRPT选项用于明确地阻止加密 加密是不受imp/exp或表空间传输支持的,因此必须使用impdp/exddp来传输数据 BasicFile和SecureFile LOB共享了部分基础的缓存和日志选项,常见的缓存选项有: CACHE – LOB数据被放在缓冲区中。 CACHE READES – 仅读取LOB数据过程中它放在缓冲区中,写操作时不放进去。 NOCACHE – LOB数据不放在缓冲区中,这是BasicFile和SecureFile LOB的默认值。 基本的日志选项有: LOGGING – 创建和修改LOB时产生完全重做日志,这是默认设置。 NOLOGGING – 操作不记录在重做日志中,因此不能恢复,在首次创建和巨大的载入过程中有用。 而且,SecureFile LOB还有一个日志选项FILESYSTEM_LIKE_LOGGING,只记录元数据,在出现故障后仍然允许段的恢复。 CACHE选项意味着LOGGING,因此你不能将CACHE与NOLOGGING或FILESYSTEM_LIKE_LOGGING合在一起使用。 如果要移动表 ALTER TABLE table_name LOB (lob_item) STORE AS [lob_segment] ( TABLESPACE tablespace_name (STORAGE…..) ENABLE|DISABLE STORAGE IN ROW CHUNK integer PCTVERSION integer RETENTION FREEPOOLS integer CACHE|NOCACHE|CACHE READS INDEX lobindexname (TABLESPACE tablesapce_name ((STORAGE…..)) )

oracle中将几个字段拼接成超长字符串(超过4000字节)更新到lob字段中,怎么处理?

可以将拼接的内容使用to_clob(),例如:UPDATE test_table R SET R.NAME = to_clob("WITH T1 AS......(可以写很多)")||to_clob(" AND RNF.FORM_OF_WAY = 2")where r.name is null

oracle 的exp 或者expdp 在导出含有lob 字段的表的时候是怎么处理,一张表有两

IMP前先建好LOB所在的表空间,导入建表时, 若无LOB字段所在的表空间, 建表动作将失败, 不过,若是IMPDP, 可用REMAP_TABLESPACE匹配说明. IMP则必须先建好.

oracle 数据类型

按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。在讲叙字符串类型前,先要讲一下编码。字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种。数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集转换,即便是相同的字符,也可能会转换成不同的二进制编码。这也是产生乱码的原因。数据库的编码格式一般是在创建数据库时指定的。当然也可以修改数据库的编码。一 字符串类型1.1:CHAR类型 CHAR(size [BYTE | CHAR])CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR).一般来说默认是存储字节注意:数据库的NLS_CHARACTERSET 为AL32UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节。1.2: NCHAR类型这是一个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2,000字节的信息。它的最大长度取决于国家字符集。1.3 VARCHAR类型不要使用VARCHAR数据类型。使用VARCHAR2数据类型。1.4: VARCHAR2类型变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。1.5: NVARCHAR2类型这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。二. 数字类型2.1 NUMBER类型NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10130~10126(不包含此值),需要1~22字节(BYTE)不等的存储空间。P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数下面是官方文档的示例Actual Data Specified As Stored As123.89 NUMBER 123.89123.89 NUMBER(3) 124123.89 NUMBER(6,2) 123.89123.89 NUMBER(6,1) 123.9123.89 NUMBER(3) 124123.89 NUMBER(4,2) exceeds precision123.89 NUMBER(6,-2) 100.01234 NUMBER(4,5).01234 .00012 NUMBER(4,5) .00012.000127 NUMBER(4,5) .00013.0000012 NUMBER(2,7) .0000012.00000123 NUMBER(2,7) .00000121.2e-4 NUMBER(2,5) 0.000121.2e-5 NUMBER(2,5) 0.000012.2 INTEGER类型INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。2.3 浮点数Oracle 数据库提供了专为浮点数的两种数值数据类型:BINARY_FLOATBINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。BINARY_DOUBLEBINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。2.5 FLOAT类型FLOAT类型也是NUMBER的子类型。Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。若要从二进制转换为十进制的精度,请将 n 乘以 0.30103。要从十进制转换为二进制的精度,请用 3.32193 乘小数精度。126 位二进制精度的最大值是大约相当于 38 位小数精度。三. 日期类型日期类型用于存储日期数据,但是并不是使用一般的格式(2012-08-08)直接存储到数据库的。3.1 DATE类型DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。3.2 TIMESTAMP类型这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位3.3 TIMESTAMP WITH TIME ZONE类型这是TIMESTAMP类型的变种,它包含了时区偏移量的值3.4 TIMESTAMP WITH LOCAL TIME ZONE类型3.5 INTERVAL YEAR TO MOTH3.6 INTERVAL DAY TO SECOND四. LOB类型内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型4.1 CLOB 数据类型它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size) 大小的字符4.2 NCLOB 数据类型它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)大小的文本数据。4.3 BLOB 数据类型它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的二进制数据。4.4 BFILE 数据类型二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理五. RAW & LONG RAW类型5.1 LONG类型它存储变长字符串,最多达2G的字符数据(2GB是指2千兆字节, 而不是2千兆字符),与VARCHAR2 或CHAR 类型一样,存储在LONG 类型中的文本要进行字符集转换。ORACLE建议开发中使用CLOB替代LONG类型。支持LONG 列只是为了保证向后兼容性。CLOB类型比LONG类型的限制要少得多。 LONG类型的限制如下:1.一个表中只有一列可以为LONG型。(Why?有些不明白)2.LONG列不能定义为主键或唯一约束,3.不能建立索引4.LONG数据不能指定正则表达式。5.函数或存储过程不能接受LONG数据类型的参数。6.LONG列不能出现在WHERE子句或完整性约束(除了可能会出现NULL和NOT NULL约束)5.2 LONG RAW 类型,能存储2GB 的原始二进制数据(不用进行字符集转换的数据)5.3 RAW类型用于存储二进制或字符类型数据,变长二进制数据类型,这说明采用这种数据类型存储的数据不会发生字符集转换。这种类型最多可以存储2,000字节的信息六. ROWID & UROWID类型在数据库中的每一行都有一个地址。然而,一些表行的地址不是物理或永久的,或者不是ORACLE数据库生成的。例如,索引组织表行地址存储在索引的叶子,可以移动。例如,外部表的ROWID(如通过网关访问DB2表)不是u200bu200b标准的ORACLE的rowid。ORACLE使用通用的ROWID(UROWIDs)的存储地址的索引组织表和外表。索引组织表有逻辑urowids的,和国外表的外urowids。UROWID这两种类型的存储在ROWID伪(堆组织的表的物理行id)。创建基于逻辑的rowid在表中的主键。逻辑的rowid不会改变,只要主键不改变。索引组织表的ROWID伪UROWID数据类型。你可以访问这个伪列,你会堆组织表的ROWID伪(即使用一个SELECT …ROWID语句)。如果你想存储的rowid索引组织表,那么你就可以定义一列的表型UROWID到列检索值的ROWID伪。

oraclelob字段迁移到新库

1、首先在使用数据泵impdp方式导入时,出现hang。2、其次导入将近2天未完成,查看数据库impdp会话event为directpathsync。3、最后将导入job通过交互模式stop_job=immediate,重启数据库启动job导入正常。

oracle 错误:未锁定含有 LOB 值的行

朋友你好:ORACLE官方文档对该错误的说明:ORA-22920 row containing the LOB value is not lockedCause: The row containing the LOB value must be locked before updating the LOB value.Action: Lock the row containing the LOB value before updating the LOB value.===============================================参考文档如下:http://203.208.35.101/custom?q=cache:vGz-L0p1HsgJ:topic.csdn.net/t/20050216/18/3786164.html+22920+ora&hl=zh-CN&ct=clnk&cd=4&gl=cn&st_usg=ALhdy28RXpQYf4Iy278-hdaO2kT-l0trqQ文档2:http://dev.csdn.net/Develop/article/16/16522.shtm祝你成功!

oracle中如何清理LOB字段释放空间

可以truncate

oracle lob类型的索引在表迁移表空间时,索引怎样迁移到别的表空间?详细如下: 在线等 各位大侠帮忙看看

第一步:将表迁移到目标表空间第二步:重新生成索引:

oracle中lob表数据怎么清理

IMP前先建好LOB所在的表空间, 导入建表时, 若无LOB字段所在的表空间, 建表动作将失败, 不过,若是IMPDP, 可用REMAP_TABLESPACE匹配说明. IMP则必须先建好.

ORACLE LOB 整理

ALTER TABLE xxx MOVE LOB(xxx) STORE AS (TABLESPACE tbs_xxxx);这么做,整个表会被锁,不影响业务是不可能的。。。

oracle 查看如何察看lob类型的segment属于哪个表

通过dba_tab_columns可以确定lob对象的子类型,如:blob、clob、bfile等。

oracle中一个表上是否可以有多个LOB列

可以,这个没有什么特殊要求

oracledef$_lob如何删除

oracledef$_lob删除步骤如下:1、登录到Oracle数据库中,并以SYS用户身份运行脚本$ORACLE_HOME/rdbms/admin/utldtree.sql。2、该脚本将创建一个临时表(SYS.DEF$_TEMP$LOB)并将DEF$_LOB表中的所有数据移动到该临时表中。3、执行脚本$ORACLE_HOME/rdbms/admin/utlremove.sql,以从数据库中删除DEF$_LOB表。4、该脚本还将删除之前创建的临时表。

在oracle中,创建一张表,其中有个字段是LOB的类型,利用DBMS_LOB包的函数插入和获取数据,怎么做?

先说一下怎么用LOB:在Oracle中,存储在LOB中数据称为LOB的值,如使用Select 对某一LOB字段进行选择,则返回的不是LOB的值,而是该LOB字段的定位器(可以理解为指向LOB值的指针)。如执行如下的SQL语句: DELCARE AUDIO_INFO BLOB; BENGIN SELECT audio INTO AUDIO_INFO FROM view_sites_info WHERE site_id=100; END; 存储在AUDIO_INFO变量中的就是LOB定位器,而不是LOB的值。而要对某一LOB的值进行访问和维护操作,必需通过其定位器来进行。DBMS_LOB包中提供的所有函数和过程都以LOB定位器作为参数。 DBMS_LOB包中主要提供了以下几个过程供用户对内部LOB字段进行维护。 APPEND()将源LOB中的内容加到目的LOB中 COPY()从源LOB中复制数据到目的LOB ERASE()删除LOB中全部或部分内容 TRIM()将LOB值减少到指定的长度 WRITE()向LOB 中写入数据 COMPARE()比较两个同种数据类型的LOB的部分或全部值是否相同 GETLENGTH()获取LOB的长度 READ()从LOB中读出数据 1、 dbms_lob.append(dest_lob IN OUT NOCOPY BLOB,src_lob IN BLOB) dbms_lob.append( dest_lob IN OUT NOCOPY CLOB CHARACTER SET ANY_CS, src_lob IN CLOB CHRACTER SET dest_lob%CHARSET); 将源LOB变量的内容添加到目标LOB变量的尾部。 示例:dest_lob clob; src_lob clob; dbms_lob.append(dest_lob,src_lob);2、 dbms_lob.close(lob_loc IN OUT NOCOPY BLOB/CLOB/BFILE)关闭已经打开的LOB。3、 dbms_lob.compare(lob_1 IN BLOB/CLOB/BFILE,lob_2 IN BLOB/CLOB/BFILE,amount IN INTEGER:=4294967295,--要比较的字符数(CLOB),字节数(BLOB)offset_1 IN INTEGER:=1,--lob_1的起始位置offset_2 IN INTEGER:=1--lob_2的起始位置) 比较两个LOB的内容。4、dbms_lob.copy(dest_lob IN OUT NOCOPY BLOB/CLOB/NCLOB,src_lob IN BLOB/CLOB/NCOB,amount IN INTEGER,dest_offset IN INTEGER:=1,src_offset IN INTEGER:=1) 从src_lob中,以src_offset为起始位置,截取amount个字符/字节,放到dest_lob的dest_offset位置。5、dbms_lob.createtemporary(lob_loc IN OUT NOCOPY BLOB/DLOB/NCLOB,cache IN BOOLEAN,dur IN PLS_INTEGER:=10) 在用户的临时表空间中,建立临时LOB。 lob_loc:指定LOB定位符。 Cache:是否将LOB读取到缓冲区。 Dur:指定何时清除临时LOB(10:会话结束时。12:调用结束时)。6、dbms_lob.erase(lob_loc IN OUT NOCOPY BLOB/CLOB/NCLOB,amount IN OUT NOCOPY INTEGER,--字符/字节数offset IN INTEGER:=1—起始位置) 删除LOB变量的内容。7、dbms_lob.fileclose(file_loc IN OUT NOCOPY BFILE)关闭打开的BFILE定位符所指向的OS文件8、dbms_lob.filecloseall关闭当前会话已经打开的所有BFILE文件。9、dbms_lob.fileexists(file_loc IN BFILE) RETURN INTEGER确定file_loc对应的OS文件是否存在,1:存在。0:不存在。10、dbms_lob.filegetname(file_loc IN BFILE,dir_alias OUT varchar2,filename OUT varchar2) 获取BFILE定位符所对应的目录别名和文件名。11、dbms_lob.fileisopen(file_loc IN BFILE) RETURN INTEGER确定BFILE对应的OS文件是否打开。12、dbms_lob.freetemporary(lob_lob IN OUT NOCOPY BLOB/CLOB/NCLOB)释放在默认临时表空间中的临时LOB。13、dbms_lob.fileopen(file_loc IN OUT NOCOPY BFILE,Open_mode IN BINARY_INTEGER:file_readonly)打开文件。14、dbms_lob.getchunksize(lob_loc IN BLOB/CLOB/NCLOB) RETURN INTEGER当建立包含CLOB/BLOB列的表时,通过指定CHUNK参数可以指定操纵LOB需要分配的字节数(数据库尺寸的整数倍)默认为数据块的尺寸。15、dbms_lob.getlength(lob_loc IN BLOB/CLOB/BFILE/NCLOB) RETURN INTEGER获取长度。16、dbms_lob.instr(Lob_loc IN BLOB/CLOB/NCLOB/BFILE,Pattern IN RAW/VARCHAR2,Offset IN INTERGER:=1,Nth IN INTEGER:=1) RETURN INTEGER; 返回特定样式数据从LOB某偏移位置开始出现N次的具体位置。17、dbms_lob.idopen(lob_loc IN BLOB/CLOB/BFILE) RETURN INT确定LOB是否打开,打开:1,未打开:0。18、dbms_lob.istemporary(lob_loc IN BLOB/CLOB/NCLOB) RETURN INTEGER确定定位符是否为临时LOB。19、dbms_lob.loadfromfile(dest_lob IN OUT NOCOPY BLOB/CLOB,src_file IN FILE,amount IN INTEGER,dest_offset IN INTEGER:=1,src_offset IN INTEGER:=1) 将BFILE的部分或全部内容复制到目标LOB变量。20、dbms_lob.loadblobfromfile(dest_lob IN OUT NOCOPY BLOB,src_bfile IN BFILE,amount IN INTEGER,dest_offset IN OUT INTEGER,src_offset IN OUT INTEGER)将BFILE数据装载到BLOB中,并且在装载后取得最新的偏移位置。21、dbms_lob.open(lob_loc IN OUT NOCOPY BLOB/CLOB/BFILE,open_mode IN BINARY_INTEGER)打开LOB,open_mode(只读:dbms_lob.lob_readonly,读写:dbms_lob.lob_readwrite).22、dbms_lob.read(lob_loc IN BLOB/CLOB/BFILE,amount IN OUT NOCOPY BINARY_INTEGER),--IN:要读取的字符数, OUT:实际读取的字符数。Offset IN INTEGER,Buffer OUT RAW/VARCHAR2—存储数据的变量)将LOB数据读取到缓存区中(变量中)。23、dbms_lob.substr(Lob_loc IN BLOB/CLOB/BFILE,Amount IN INTEGER:=32762,Offset IN INTEGER:=1) RETURN RAW/VARCHAR2与字符处理函数SUBSTR()使用方法一样。24、dbms_lob.trim(Lob_loc IN OUT NOCOPY BLOB/CLOB/NCLOB,Newlen IN INTEGER)截断LOB到指定长度。25、dbms_lob.write(Lob_loc IN OUT NOCOPY BLOB/CLOB,Amount IN BINARY_INTEGER,Offset IN INTEGER,Buffer IN RAW/VARCHAR2)将缓冲区数据写入到LOB中的特定位置。26、dbms_lob.writeappend(Lob_loc IN OUT NOCOPY BLOB/CLOB/NCLOB,Amount IN BINARY_INTEGER,Buffer IN RAW/VARCHAR2) 将缓冲区数据写到LOB尾部。

oracle 中lob是什么意思?

(LOB)大字段 又分为:BLOB (以二进制存储数据的大字段,一般存储一些图片、电影)、CLOB(以字符储存数据的大字段,一般存储文章、博客之类的) 、 BFILE(以外部文件形式储存在硬盘上)

用PHP操纵Oracle的LOB类型的数据

《PHP+Oracle(OCI) 初步》中讲了如何用PHP中的OCI函数来连接Oracle数据库 执行一些SQL查询及关闭数据库连接 本文将讲述另一个难度稍大的问题 用PHP的OCI函数来操纵Oracle的LOB字段 阅读本文需要《PHP+Oracle(OCI) 初步》一文中的知识   用过Oracle的人都知道 Oracle有一种数据类型叫VARCHAR 用来表示不定长的字符串 VARCHAR 也是Oracle公司推荐使用的类型 但使用VARCHAR 有个问题 最大只能表示 个字符 也就相当于 个汉字 如果你的程序中某个字符的值要大于 个汉字 用VARCHAR 就不能满足要求了 这时候 你有两个选择 一是用多个VARCHAR 来表示 二是用LOB字段 这里我们来看看第二个办法   先来大体了解一下Oracle的LOB字段 Oracle的LOB类型分为三种 BLOB CLOB和BFILE CLOB称为字符LOB BLOB和BFILE是用来存储二进制数据的 CLOB和BLOB的最大长度是 GB 它们把值存放在Oracle数据库中 BFILE和BLOB类似 但它把数据放在外部的文件中 所以它又称为外部BLOB(External BLOB)   我想 我们对MYSQL应该都不会陌生 MYSQL中也有类似的数据类型 如TEXT和BLOB 在PHP的MYSQL函数中 对TEXT/BLOB的操作是直接的 就象其它类型的数据一样 但在Oracle中 情况就不一样了 Oracle把LOB当作一种特殊的数据类型来处理 在操作上不能用常规的方法 比如 不能在INSERT语句中直接把值插入到LOB字段中 也不能用LIKE进行查找   下面就通过几个例子来说明如何用PHP的OCI函数来插入 取出和查询LOB数据    一 插入   不能直接用INSERT语句向LOB字段中插入值 一般情况下 有如下的几步    .先分析一个INSERT语句 返回一个LOB的描述符    .用OCI函数生成一个本地的LOB对象    .将LOB对象绑定到LOB描述符上    .执行INSERT语句    .给LOB对象赋值    .释放LOB对象和SQL语句句柄   下面的这个例子是把用户上传的图片文件存放到BLOB(或BFILE中 操作稍有不同)中 首先要建一个表 结构如下 CREATE TABLE PICTURES ( ID NUMBER DESCRIPTION VARCHAR ( ) MIME VARCHAR ( ) PICTURE BLOB );   如果要实现ID的自动增加 再建一个SEQUENCE: CREATE SEQUENCE PIC_SEQ;   然后是用来处理数据的PHP程序代码 <?php //建立Oracle数据库连接 $conn = OCILogon($user $password $SID); //提交SQL语句给Oracle //在这里要注意的两点 一是用EMPTY_BLOB()函数 这是Oracle的内部函数 返回一个LOB的定位符 在插入LOB时 只能用这个办法先生成一个空的LOB定位符 然后对这个定位符进行操作 EMPTY_BLOB()函数是针对BLOB类型的 对应于CLOB的是EMPTY_CLOB() 二是RETURNING后面的部分 把picture返回 让PHP的OCI函数能够处理 $stmt = OCIParse($conn INSERT INTO PICTURES (id description picture) VALUES (pic_seq NEXTVAL $description $lob_upload_type EMPTY_BLOB()) RETURNING picture INTO :PICTURE ); //生成一个本地LOB对象的描述符 注意函数的第二个参数 OCI_D_LOB 表示生成一个LOB对象 其它可能的还有OCI_D_FILE和OCI_D_ROWID 分别对应于BFILE和ROWID对象 $lob = OCINewDescriptor($conn OCI_D_LOB); //将生成的LOB对象绑定到前面SQL语句返回的定位符上 OCIBindByName($stmt :PICTURE &$lob OCI_B_BLOB); OCIExecute($stmt); //向LOB对象中存入数据 因为这里的源数据是一个文件 所以直接用LOB对象的savefile()方法 LOB对象的其它方法还有 save()和load() 分别用来保存和取出数据 但BFILE类型只有一个方法就是save() if($lob >savefile($lob_upload)){ OCICommit($conn); echo 上传成功<br> ; }else{ echo 上传失败<br> ; } //释放LOB对象 OCIFreeDesc($lob); OCIFreeStatement($stmt); OCILogoff($conn); ?>   还有一个要注意的地方 LOB字段的值最少要 个字符 所以在save()或savefile()之前 要确保值不能为空 否则 Oracle会出错    二 取出   对一个LOB中取出数据 有两种办法 一是生成一个LOB对象 然后绑定到一条SELECT语句返回的定位符上 再用LOB对象的load()方法取出数据 二是直接用PHP的OCIFetch***函数 第一种方法比第二种方法要麻烦得多 所以我直接说说第二种方法 还是用上面的表 <?php $conn = OCILogon($user $password $SID); $stmt = OCIParse($conn SELECT * FROM PICTURES WHERE ID=$pictureid ); OCIExecute($stmt); //秘密就在PCIFetchInfo的第三个参数上 OCI_RETURN_LOBS 第三个参数是FETCH的模式 如果OCI_RETURN_LOBS 就直接把LOB的值放到结果数组中 而不是LOB定位符 也就不用LOB对象的load()方法了 if (OCIFetchInto($stmt $result OCI_ASSOC+OCI_RETURN_LOBS)) { echo Content type: StripSlashes($result[MIME]); echo StripSlashes($result[PICTURE]); } OCIFreeStatement($stmt); OCILogoff($conn); ?>   这个程序用来显示放在LOB中的数据(图片) 调用方法(假设脚本名是getpicture php) <IMG SRC= getpicture php?pictureid= ALT= 放在Oracle LOB中的图片 >    三 查询   前面已经提了下 对于Oracle的LOB字段是不能用LIKE进行匹配的 怎么办呢?其实并不复杂 Oracle有一个匿名的程序包 叫DBMS_LOB 里面有所有的操作LOB所需的过程   假设有象这样一个表: CREATE TABLE ARTICLES ( ID NUMBER TITLE VARCHAR ( ) CONTENT CLOB );   文章的内容放在CONTENT字段中   现在我们要找出所以内容中包含 PHP中文用户 的文章 可以这么来做 <?php $conn = OCILogon($user $password $SID); //WHERE子句中用了DBMS_LOB INSTR过程 它有四个参数 前面两个分别表示LOB的定位符(可以直接用字段表示)和要查找的字符串 后面两个分别表示开始的偏移量和出现的次数 要注意的是必须判断它的返回值 也就是要大于 $stmt = OCIParse($conn SELECT * FROM ARTICLES WHERE DBMS_LOB INSTR(CONTENT PHP中文用户 ) > ); OCIExecute($stmt); if (OCIFetchInto($stmt $result OCI_ASSOC+OCI_RETURN_LOBS)) { } OCIFreeStatement($stmt); OCILogoff($conn); ?>   Oracle还提供了许多用来操作LOB数据的过程 如LENGTH SUBSTR等等 至于它们的详细用法 可以考虑Oracle的开发手册 lishixinzhi/Article/program/PHP/201311/21377

wallet 在oracle什么目录中

这个 应该你可以试试吧 也许没有用 望采纳 那

Oracle WebLogic Server是什么意思?

WebLogic 和tomcat 一样,容器而已

oracle中怎么获取一系列字符串前N个相同的字符?

这样的?不是的话再追问。SELECT DISTINCT SUBSTR(REGEXP_SUBSTR(SR, "[^,]+", 1, LEVEL), 1, 1) SR FROM (SELECT "XYZ,XPY,XRR" SR FROM DUAL)CONNECT BY LEVEL <= LENGTH(SR) - LENGTH(REPLACE(SR, ",")) + 1;

oracle中为什么select语句时commit 和rollback按钮也会亮呢?

如果是自治事务的话 也可能 有DML 操作!

有关在Oracle里怎样捕获出错?怎样出错回滚rollback

告警日志。后面的一个问题,不知道你在说啥

为什么oracle数据库 中触发器rollback不行 ,使用了自制事物也不行啊?

你是 after触发的,也就是添加或者修改完毕后进行的触发。什么是添加或者修改完毕?如果在一个session中进行添加或者修改后,没有提交,那么仅仅在这个窗口可以查询到,你认为数据库认为修改完毕了么?明显没有,只有commit提交了,也就是事务完成了,才认为修改完毕,那么事务提交以后,怎么rollback。rollback是提交以前的动作,提交以后,rollback没有任何作用的。

oracle存储过程的commit和rollback

commit和rollback不止是存储过程中使用,所有的事务都需要用到这两个关键字commit是指将你所做的update,insert,delete数据的更改提交数据库,完成此次事务,相当于你去商场购物,售货员给你开了票后,你去收银台付款完毕,这样你才可以拿到你要买的货物.rollback是指将你所做的update,insert,delete数据的更改恢复更改前的状态,此次事务取消,相当于你去商场购物,售货员给你开了票后,你却不去收银台付款,而是离开了商场

oracle中,已commit的数据能rollback回滚吗?

commit和rollback从最终结果上讲是相反的。1、commit将数据的变化永久保留2、rollback将变化之前的数据“还原回去”3、一旦发出commit了就不能rollback了。(但是如果你想恢复数据的话还是有办法的flashback是可以的)举例讲:updateasetb=1whereb=2;commit的作用是将这个结果永久化。rollback的作用相当于updateasetb=2whereb=1后再commit;

oracle中,已commit的数据能rollback回滚吗?

分为几种不同情况。1.没有提交(commit)的数据删除后无法rollback2.提交(commit)了的数据删除后可以使用rollback恢复3.删除数据后提交(commit)则无法使用rollback恢复就是说,你提交了的数据是永久性的,rollback是在这个基础上进行备份的。

ORACLE中ROLLBACK

执行DDL时,前面的DML会自动提交。

oracle rollback是回滚整个数据库还是回滚某个用户的操作?

应该是某个用户某次操作的回滚。

oracle 怎么进入mgmtdb

  1 MGMTDB 说明  在Oracle 12.1.0.1的Grid Infrastructure 的安装中,可以选择是否安装Grid Infrastructure Management Repository (GIMR) 数据库:MGMTDB. 如下图:    在Grid Infrastructure 12.1.0.2 中,已经没有改选项,MIMR 数据库已经变成了强制选项。  在Oracle 12c 中Management Database 用来存储Cluster HealthMonitor(CHM/OS,ora.crf) ,Oracle Database QoS Management,Rapid Home Provisioning和其他的数据。  ManagementRepository 是受12c Clusterware 管理的一个单实例,在Cluster 启动的时会启动MGMTDG并在其中一个节点上运行,并受GI 管理,如果运行MGMTDG的节点宕机了,GI 会自动把MGMTDB 转移到其他的节点上。  默认情况,MGMTDB 数据库的数据文件存放在共享的设备,如OCR/Voting 的磁盘组中,但后期可以移动位置。  在12.1.0.1 中,GIMR 是可选的,如果在安装GI的时候,没有选择Management Database 数据库,那么所有依赖的特性,如ClusterHealth Monitor (CHM/OS) 就会被禁用。  当然,在12.1.0.2 中,可以忽略这个问题,因为是强制安装GIMR了。  另外,对于MGMT 数据库,在目前的版本中,也不需要手工对其进行备份。  2 MGMTDB 基本操作  2.1 查看Management DB 相关的资源:  [root@rac1 ~]# crsctl stat res -t  Name Target State Server Statedetails  Local Resources  ……  ora.MGMTLSNR  1 ONLINE ONLINE rac2 169.254.142.79 192.168.57.6,STABLE  ora.mgmtdb  1 ONLINE ONLINE rac2 Open,STABLE  ……  [root@rac1 ~]#  使用crsctl 命令可以看到ora.mgmtdb和ora.MGMTLSNR。  在操作系统层面,也可以查看到有2个对应的进程:  [root@rac2 ~]# ps -ef| grep pmon_-MGMTDB  grid 7452 1 0 14:59 ? 00:00:00 mdb_pmon_-MGMTDBroot 7756 7727 0 15:02 pts/4 00:00:00 grep pmon_-MGMTDB[root@rac2 ~]# ps -ef| grep MGMTLSNR  grid 7411 1 014:58 ? 00:00:00/u01/gridsoft/12.1.0/bin/tnslsnr MGMTLSNR -no_crs_notify -inheritroot 7758 7727 0 15:02 pts/4 00:00:00 grep MGMTLSNR[root@rac2 ~]#  2.2 启动和关闭MGMT  正常情况下,MGMTDB 会在GI 启动的时候,会自动启动,但也可以手工管理,直接使用srvctl 操作即可:  Usage: srvctl start mgmtdb[-startoption <start_option>] [-node <node_name>]  2.3 查看Management Database 的log 和trace 文件一般情况下,是不需要查看MGMT DB的trace的,如果要查看,用如下命令:  [grid@rac2 _mgmtdb]$ pwd  /u01/gridbase/diag/rdbms/_mgmtdb  [grid@rac2 _mgmtdb]$ ls  i_1.mif -MGMTDB  [grid@rac2 _mgmtdb]$  进入$ORACLE_BASE下的trace目录。但是进入-MGMTDB时,要注意,不能直接cd:  [grid@rac2 _mgmtdb]$ cd -MGMTDB  -bash: cd: -M: invalid option  cd: usage: cd [-L|-P] [dir]  [grid@rac2 _mgmtdb]$  必须使用./-MGMTDB,如:  [grid@rac2 _mgmtdb]$ cd ./-MGMTDB  [grid@rac2 -MGMTDB]$ ls  alert hm incpkg lck metadata metadata_pv sweepcdump incident ir log metadata_dgif stage trace[grid@rac2 -MGMTDB]$  [grid@rac2 trace]$ pwd  /u01/gridbase/diag/rdbms/_mgmtdb/-MGMTDB/trace[grid@rac2 trace]$ ls  alert_-MGMTDB.log -MGMTDB_ckpt_4772.trm -MGMTDB_lgwr_7475.trc -MGMTDB_m001_10288.trm -MGMTDB_ora_10486.trc -MGMTDB_p001_5645.trmcdmp_20140807064254 -MGMTDB_ckpt_7477.trc -MGMTDB_lgwr_7475.trm -MGMTDB_m001_10330.trc -MGMTDB_ora_10486.trm -MGMTDB_p001_7523.trccdmp_20141208110548 -MGMTDB_ckpt_7477.trm -MGMTDB_m000_10101.trc -MGMTDB_m001_10330.trm -MGMTDB_ora_10830.trc -MGMTDB_p001_7523.trmcdmp_20141208110550 -MGMTDB_dbrm_4764.trc -MGMTDB_m000_10101.trm -MGMTDB_m001_8055.trc -MGMTDB_ora_10830.trm -MGMTDB_rbal_10460.trccdmp_20141208110553 -MGMTDB_dbrm_4764.trm -MGMTDB_m000_10202.trc -MGMTDB_m001_8055.trm -MGMTDB_ora_3770.trc -MGMTDB_rbal_10460.trmcdmp_20141208110555 -MGMTDB_dbrm_7469.trc -MGMTDB_m000_10202.trm -MGMTDB_mark_10484.trc -MGMTDB_ora_3770.trm -MGMTDB_rbal_4782.trcMGMT DB 的日志和trace 都在这个里。  3 MGMTDB是带一个PDB的CDB数据库  前面说了,MGMTDB 是一个实例,实际上,MGMTDB是带一个PDB的CDB库,我们可以使用GI的命令直接去操作MGMTDB 对应的PDB。  --查看MGMTDB当前节点:  [grid@rac2 /]$ oclumon manage -get masterMaster = rac1  --查看状态:  [grid@rac2 /]$ srvctl status mgmtdb  Database is enabled  Instance -MGMTDB is running on node rac2  --查看配置信息:  [grid@rac2 /]$ srvctl config mgmtdb  Database unique name: _mgmtdb  Database name:  Oracle home: /u01/gridsoft/12.1.0  Oracle user: grid  Spfile:+OCR_VOTING/_mgmtdb/spfile-MGMTDB.oraPassword file:  Domain:  Start options: open  Stop options: immediate  Database role: PRIMARY  Management policy: AUTOMATIC  Database instance: -MGMTDB  Type: Management  --连接MGMTDB实例  [grid@rac2 /]$ export ORACLE_SID=-MGMTDB  [grid@rac2 /]$ sqlplus / as sysdba  SQL*Plus: Release 12.1.0.1.0 Production onMon Dec 8 15:24:37 2014Copyright (c) 1982, 2013, Oracle. All rights reserved.  Connected to:  Oracle Database 12c Enterprise EditionRelease 12.1.0.1.0 - 64bit ProductionWith the Partitioning, Automatic StorageManagement and Advanced Analytics optionsSQL> select file_name fromdba_data_files union select member file_name from V$logfile;FILE_NAME  +OCR_VOTING/_MGMTDB/DATAFILE/sysaux.258.854939615+OCR_VOTING/_MGMTDB/DATAFILE/sysgridhomedata.261.854939891+OCR_VOTING/_MGMTDB/DATAFILE/sysmgmtdata.260.854939737+OCR_VOTING/_MGMTDB/DATAFILE/system.259.854939661+OCR_VOTING/_MGMTDB/DATAFILE/undotbs1.257.854939605+OCR_VOTING/_MGMTDB/ONLINELOG/group_1.263.854940051+OCR_VOTING/_MGMTDB/ONLINELOG/group_2.264.854940053+OCR_VOTING/_MGMTDB/ONLINELOG/group_3.265.8549400578 rows selected.  这里查询的是MGMTDB的路径,也可以直接用如下命令查询:  [grid@rac2 /]$ oclumon manage -get reppathCHM Repository Path =+OCR_VOTING/_MGMTDB/DATAFILE/sysmgmtdata.260.854939737[grid@rac2 /]$  --查询MGMTDB用户:  SQL> select username,account_status fromdba_users where username like "CH%";USERNAME ACCOUNT_STATUS  ------------- ----------------  CHM OPEN  CHA OPEN

如何简化 Oracle Linux 上 Oracle Database 的安装

首先,设置一个yum配置文件,让其指向正确的信息库,然后从该信息库安装oracle-validated RPM,使用yum安装oracle-validated RPM包,主要是为了解决安装该包的依赖关系。为了简化操作,我直接将Oracle Linux系统安装光盘挂载在/mnt目录下,作为信息库,以下是针对Oracle Database安装使用oracle-validated对系统进行预配置的步骤:1.作为一个授权用户(如 root)检索配置信息库位置的文件:[root@11gR2 ~]# cd /etc/yum.repos.d/[root@11gR2 yum.repos.d]#2.在该目录下创建一个后缀为.repo任意名文件,其内容如下:[ol5_u8_base]name=Jialin.Lee Oracle Linux 5.8baseurl=file:///mnt/Server/gpgcheck=0enabled=13.使用yum install命令安装oracle-validated RPM注:清单1中的输出显示了安装过程如何检查依赖项然后下载和安装所需软件包清单1:安装oracle-validated RPM[root@11gR2 yum.repos.d]# yum install oracle-validatedLoaded plugins: rhnplugin, securityThis system is not registered with ULN.ULN support will be disabled.oel-base | 1.1 kB 00:00oel-base/primary | 1.4 MB 00:00oel-base 3298/3298Setting up Install ProcessResolving Dependencies--> Running transaction check---> Package oracle-validated.x86_64 0:1.1.0-15.el5 set to be updatedoel-base/filelists | 3.1 MB 00:00--> Processing Dependency: sysstat for package: oracle-validated--> Processing Dependency: /usr/lib/libaio.so for package: oracle-validated--> Processing Dependency: glibc-headers for package: oracle-validated--> Processing Dependency: elfutils-libelf-devel for package: oracle-validated--> Processing Dependency: unixODBC-devel for package: oracle-validated--> Processing Dependency: /usr/lib64/libodbccr.so for package: oracle-validated--> Processing Dependency: gcc-c++ for package: oracle-validated--> Processing Dependency: libaio-devel for package: oracle-validated--> Processing Dependency: gcc for package: oracle-validated--> Processing Dependency: /usr/lib/gcc/x86_64-redhat-linux/4.1.1/libstdc++.a for package: oracle-validated--> Processing Dependency: /usr/lib/libodbc.so.1 for package: oracle-validated--> Processing Dependency: /usr/lib/libc.so for package: oracle-validated--> Processing Dependency: /usr/lib64/libaio.so for package: oracle-validated--> Processing Dependency: /usr/lib64/libc.so for package: oracle-validated--> Processing Dependency: /usr/lib/libodbccr.so for package: oracle-validated--> Processing Dependency: libXp.so.6 for package: oracle-validated--> Processing Dependency: libodbc.so.1()(64bit) for package: oracle-validated--> Running transaction check

oraclelinux和linux区别

oraclelinux附属于linux。OracleLinux是Linux发行版本之一,全称为OracleEnterpriseLinux,简称OEL,是Oracle公司在2006年初发布第一个版本,以对Oracle软件和硬件支持较好见长。Oracle以RedHatLinux做为起始,移除了RedHat的商标,然后加入了Linux的错误修正。

OEL安装oracle11g时,提示缺少依赖包,怎么解决???

出现这个报错,原因是因为你的两个压缩包没有正确解压,或者解压路径不对,首先,我们从官网上下载的安装包室友两个的其次,解压的时候两个压缩包要解压到同一个database目录下你把第二个压缩包解压后的内容复制到第一个压缩包解压后的database目录下,再重新安装,问题应该就可以解决的。

linux oracle安装: Oracle Inventory Directory 干什么用的?怎么翻译好?

说白了,就是以为Oracle公司只有Oracle数据库这个产品,其实Oracle公司有大量的产品。你安装了Oracle公司的软件,都会在这个目录下有记录。类似于腾讯的目录下,会有QQ、QQ游戏大厅、QQ管家等等。
 首页 上一页  1 2 3 4 5 6 7 8  下一页  尾页