发布网友 发布时间:2022-04-22 22:25
共4个回答
懂视网 时间:2022-05-02 16:35
近日在研究v$latch视图时,发现一个从未见过的数据类型。v$latch 中ADDR属性的数据类型为RAW(4|8) 同时也发现v$process中的ADDR属性的数据类型也为RAW(4|8)。于是查了一下oracle 的SQL Language Reference文档,文档如下描述:
The RAW and LONG RAW data types store data that is notto be explicitly converted by Oracle Database when moving data between differentsystems. These data types are intended for binary data or byte strings.For example, you can use LONG RAW to store graphics,sound, documents, or arrays of binary data, for which the interpretation isdependent on the use.
Oracle strongly recommends that you convertLONG RAW columns to binary LOB (BLOB) columns. LOB columns are subject to farfewer restrictions than LONG columns. See TO_LOB for more information.
RAW is a variable-lengthdata type like VARCHAR2, except that Oracle Net (whichconnects client software to a database or one database to another) and theOracle import and export utilities do not perform character conversion whentransmitting RAW or LONG RAW data. In contrast, Oracle Net and the Oracleimport and export utilities automatically convert CHAR, VARCHAR2, and LONG databetween different database character sets, if data is transported betweendatabases, or between the database character set and the client character set,if data is transported between a database and a client. The client characterset is determined by the type of the client interface, such as OCI or JDBC, andthe client configuration (for example, the NLS_LANG environment variable).
When Oracle implicitlyconverts RAW or LONG RAW data to CHAR data, the resulting character valuecontains a hexadecimal representation of the binary input, where each character is a hexadecimal digit (0-9, A-F)representing four consecutive bits of RAW data. For example, one byte of RAWdata with bits 11001011 becomes the value CB.
When Oracle implicitly converts CHAR datato RAW or LONG RAW, it interprets each consecutive input character as ahexadecimal representation of four consecutive bits of binary data and buildsthe resulting RAW or LONG RAW value by concatenating those bits. If any of theinput characters is not a hexadecimal digit (0-9, A-F, a-f), then an error isreported. If the number of characters is odd, then the result is undefined.
The SQL functions RAWTOHEX and HEXTORAWperform explicit conversions that are equivalent to the above implicitconversions. Other types of conversions between RAW and CHAR data are possiblewith functions in the Oracle-supplied PL/SQL packages UTL_RAW and UTL_I18N
大概意思是该数据类型用于存储二进制格式的数据,像图像,声音,文档等等,但是oracle建议使用lob替代raw,LOB列比LONG受到更少的
Raw的优势: 在网络传输,或者使用导入导出工具时,oracle服务器不执行字符集转换,这样在数据库的效率上会有所提高,而且不会因为字符集不同而导致数据的不一致性
以下引用网友的测试,来说明Oracle implicitly converts RAW or LONG RAW data to CHAR data,the resulting character value contains a hexadecimal representation of thebinary input以及UTL_RAW的使用
RAW,类似于VARCHAR2,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。
LONGRAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节
测试:
SQL>create table datatype_test_raw(paddr raw(8));
Tablecreated
SQL>insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw(‘This is a rawtype test!‘));
insertinto datatype_test_raw(paddr) values(utl_raw.cast_to_raw(‘This is a raw typetest!‘))
ORA-01401:inserted value too large for column
SQL>alter table datatype_test_raw modify paddr raw(20);
Tablealtered
SQL>insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw(‘This is a rawtype test!‘));
insertinto datatype_test_raw(paddr) values(utl_raw.cast_to_raw(‘This is a raw typetest!‘))
ORA-01401:inserted value too large for column
SQL>insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw(‘This is a rawtest!‘));
1row inserted
SQL>commit;
Commitcomplete
SQL>select * from datatype_test_raw;
PADDR
----------------------------------------
54686973206973206120726177207465737421
SQL>select utl_raw.cast_to_varchar2(paddr) from datatype_test_raw;
UTL_RAW.CAST_TO_VARCHAR2(PADDR
--------------------------------------------------------------------------------
Thisis a raw test!
SQL>insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw(‘中文测试‘));
1row inserted
SQL>commit;
Commitcomplete
SQL>select utl_raw.cast_to_varchar2(paddr) from datatype_test_raw;
UTL_RAW.CAST_TO_VARCHAR2(PADDR
--------------------------------------------------------------------------------
Thisis a raw test!
中文测试
SQL>select paddr, utl_raw.cast_to_varchar2(paddr) from datatype_test_raw;
PADDR UTL_RAW.CAST_TO_VARCHAR2(PADDR
------------------------------------------------------------------------------------------------------------------------
54686973206973206120726177207465737421This is a raw test!
D6D0CEC4B2E2CAD4中文测试
这里用到了两个函数:
utl_raw.cast_to_raw([varchar2]);--将varchar2转换为raw类型
utl_raw.cast_to_varchar2([raw]);--将raw转换为varchar2类型
这里varchar2的字符集一般是GB2312。
另外:
utl_raw包的几个其他的函数用法:
utl_raw.cast_from_number([number]);
utl_raw.cast_to_number([number]);
位操作:
utl_raw.bit_or();
utl_raw.bit_and();
utl_raw.bit_xor();
另外还有转换函数:
hextoraw();--将对应16进制数转换为raw
关于raw和utl_raw的介绍到此结束。
oracle中RAW数据类型
标签:repo tween select create call different sys ast ddr
热心网友 时间:2022-05-02 13:43
RAW的原意就是“未经加工”。可以理解为:RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些元数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。RAW格式的全称是RAW Image Format,在编程中称之为原始。
文件格式:
优势
·RAW文件几乎是未经过处理而直接从CCD或CMOS上得到的信息,通过后期处理,摄影师能够最大限度地发挥自己的艺术才华。
·RAW文件并没有白平衡设置,但是真实的数据也没有被改变,就是说作者可以任意的调整色温和白平衡,并且是不会有图像质量损失的。
·颜色线性化和滤波器行列变换在具有微处理器的电脑上处理得更加迅速,这允许应用一些相机上所不允许采用的、较为复杂的运算法则。
·虽然RAW文件附有饱和度、对比度等标记信息,但是其真实的图像数据并没有改变。用户可以自由地对某一张图片进行个性化的调整,而不必基于一、两种预先设定好的模式。
·也许RAW最大的优点就是可以将其转化为16位的图像。也就是有65536个层次可以被调整,这对于JPG文件来说是一个很大的优势。当编辑一个图像的时候,特别是当你需要对阴影区或高光区进行重要调整的时候,这一点非常重要。
与JPG格式相比,强在哪里?
JPG格式的特点:JPG文件的优点是体积小巧,并且兼容性好,因为大部分的程序都能读取这种文件,这是因为JPG格式不仅是一个工业标准格式,而且更是Web的标准文件格式。不过另一方面,JPG之所以很小的原因是:当文件在创建的时候会有一些数据被遗失,即通过“有损”的压缩方式来建立文件,这就是其文件小的原因所在了。
如果数码相机采用了JPG作为照片存储的格式虽然可以节省宝贵空间,但不利的一面也必须看清:凡是可以在相机中调整的诸如色温、色彩平衡、图像锐度等经过相机的处理后都记录在文件内,后期调整只能通过Photoshop处理来进行,但是经过调整的图像质量将会有所损失。
假如你是以RAW格式来保存文件,相机便会创建一个包含锐度、对比度、饱和度、色温、白平衡等信息的页眉文件,但是图像并不会被这些设置而改变,它们只不过是在RAW文件上加以标记。随后RAW文件将同这些有关设置以及其他的技术信息一同保存至存储卡中。
有些相机压缩了这些文件,而有些没有。而只要这些压缩是“无损”的,将不会对图像质量带来任何影响,但是有些公司(尼康和柯达)却明确表示采用一种轻微损失的算法来保存RAW文件。
选择JPG格式来存储文件,结果将会怎样?
·成像芯片是线性装置。这意味着当一个像素点的采光量是另一个的两倍时,也将会产生2倍的电压。曝光中止时,亮度值是以其对数来呈现的,这就是说一个未修正的照片会看起来比较暗,因此需要通过色调曲线来调整正确。
·数码照片如果不经锐化则会看起来比较平、对比度低,因此会显得不清晰。人们希望在脱离相机的JPG文件看起来也很好,因此相机会对JPG文件进行USM(Unsharp Masking)处理。USM会找到亮暗区域之间的边缘并提高对比度,这样做会在这些边缘的附近产生光晕现象,如果锐化度设置太高的话,这些光晕将会在输出时变得非常明显,但如果他们太低则又达不到锐化的效果。
·对比度可以在相机上设定。
·色彩饱和度同样可以在相机上调节,通常有二到三个层次。
·相机将文件从12位或14位模式转化成8位模式,换句话说就是将每个像素的4096到16384个亮度层次骤减到256个。
·JPG被定义做一种有损压缩格式,尽管文件非常小,但也影响了图像质量。
一个RAW文件本质上是成像芯片所记录的并且连同一些附加信息的数据;一个JPG文件已经存在一些相机的线性变换、矩阵变换、白平衡、对比度、饱和度等应用,随后又有一些潜在的破坏性压缩被应用。
热心网友 时间:2022-05-02 15:01
Raw是一种原始的图象文件格式,一般是数码相机等设备使用的,一些专业的图象设计师也经常使用这种图象文件。
一般打开可以使用xnview、acdsee。编辑可以使用photoshop等。
http://www.xiximm.com/Article/Print.asp?ArticleID=322
看看下面的介绍吧:
---------------------------
JPG格式的优点
·文件比较小巧,采用这种格式可以在存储卡中容纳更多的照片
·图像质量满足大多数应用,比如家庭摄影、新闻摄影等。
·小的文件便于传输和在网上发表。这对摄影记者比较重要。
·许多玩家并没有时间和爱好去做后期处理。
·大多数数码相机在以RAW格式记录图片时,不能很快速地完成拍照,一些瞬间的镜头很难抓住。而低档的相机中根本无法记录RAW格式。
RAW格式的优点
·RAW文件几乎是未经过处理而直接从CCD或CMOS上得到的信息,通过后期处理,摄影师能够最大限度地发挥自己的艺术才华。
·RAW文件并没有白平衡设置,但是真实的数据也没有被改变,就是说作者可以任意的调整色温和白平衡,并且是不会有图像质量损失的。
·颜色线性化和滤波器行列变换在具有微处理器的电脑上处理得更加迅速,这允许应用一些相机上所不允许采用的、较为复杂的运算法则。
·虽然RAW文件附有饱和度、对比度等标记信息,但是其真实的图像数据并没有改变。用户可以自由地对某一张图片进行个性化的调整,而不必基于一、两种预先设定好的模式。
·也许RAW最大的优点就是可以将其转化为16位的图像。也就是有65536个层次可以被调整,这对于JPG文件来说是一个很大的优势。当编辑一个图像的时候,特别是当你需要对阴影区或高光区进行重要调整的时候,这一点非常重要。
用JPG还是RAW?
其实我们可以认为所有的数码相机都使用了RAW模式,但是当我们选择了JPG作为存储格式之后,就把图像提交给了相机中内置的RAW转换程序。如果我们允许以RAW作为存储格式,那就意味着可以在一个复杂的平台上对照片做更好的调整,即使修改不佳,也可以在将来重新调整。换句话说,二者的选择就是:你决定现在就在相机内做RAW的转换,还是以后在计算机上做?
在生成JPG文件之前必须决定一些重要的方面,即白平衡、对比度、饱和度等,而RAW的好处在于,这些都不必在当时深思熟虑,而有充分的时间来思考。
对于一些摄影师而言(体育、新闻),使用的便利与速度才是最好的,而其他人并不一定如此。当然如果你想要最好的画质,RAW便是不二之选。一些相机同时保存JPG格式和RAW格式,对于摄影师而言,这是再好不过的了,然而这也不得不占用额外的存储空间。
一些人并不喜欢RAW格式,因为这种格式的文件实在太大了,他们需要更多的空间。RAW文件确实需要更大容量和价格更便宜的存储器,同时也需要优秀的解码和编辑软件,随着技术的不断进步,相信RAW的明天会很美好。
热心网友 时间:2022-05-02 16:36
包含变长二进制数据的 Oracle LONGRAW 数据类型,其最大大小为 2 GB。在 OracleParameter.Value 中使用 .NET Framework Byte[] 或 OracleClient OracleBinary 数据类型。