oracle中dump函数
问题:
1. oracle中number,char/varchar,date等数据类型是怎么存储的?字节流是什么样的?
2. 各种数据类型占用的字节长度是多大?
SELECT dump(1), DUMP(123456), DUMP(-123456), DUMP(1234567890123456) -- 整数
--SELECT DUMP(123456.789), DUMP(-123456.789), dump(1.234567890123456789E15), dump(123456789012345678901234567890123456789) -- 浮点数
SELECT DUMP('a'), DUMP('abcdefghijklmn'), DUMP(CAST('abc' AS CHAR(20))), DUMP(CAST('abc你' AS VARCHAR(20)))
--SELECT sysdate, DUMP(SYSDATE)
from dual;
结论:
1. number类型的字节流是不定长的,并且正负数会用不同的标志位(正数:数字1 >= 193,负数:数字1 <= 62,差额恰好是指数大小)
2. char是定长的,长度不足最大长度会填充尾空格,varchar是不定长的(即给多长存多长)
3. date类型定长,占8个字节
-- 附录为常见数据类型的存储方式说明,可参见oracle官方文档,或各种技术blog
http://blog.oracle.com.cn/index.php/12012/action_viewspace_itemid_4684.html(附录的来源)
http://zhouwf0726.itpub.net/post/9689/196733
笔者在做实验过程(oracle9i2版本)中,发现实际Date类型与附录中的不一样,估计附录中是对oracle8以前版本的说明。
Date(长度 7 类型 12)
col dump_date form a35col real_date form a35
select dump(last_ddl_time) dump_date, to_char(last_ddl_time,'yyyy-mm-dd hh24:mi:ss') real_date
from user_objects
where rownum=1;
DUMP_DATE REAL_DATE
----------------------------------- ---------------------
Typ=12 Len=7: 120,102,4,13,16,48,53 2002-04-13 15:47:52世纪 120 - 100 = 20 世纪和年份加100后存储
年份 102 - 100 = 2
月份 4 月份和日期按原值存储
日期 13
小时 16 - 1 = 15 时间均加1后存储
分钟 48 - 1 = 47
秒 53 - 1 = 52
--------------------------------------------------------------------------------
Number(类型 2)
<[长度]>,符号位/指数 数字1,数字2,数字3,......,数字20
正数:指数=数字1 - 193 (最高位为1是代表正数)
负数:指数=62 - 第一字节
数字1是最高有效位
正数:加1存储
负数:被
相关文档:
Oracle Flashback 技术总结
Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。
在Oracle 10g中, Flash back家族分为以下成员: Flashback Database, Flashback Drop,Flashback Query(分Flashback Query,Flashback Version Query ......
要找Oracle 9i for Linux挺麻烦的,干脆自己留个记录比较方便。
Oracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XP
http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk1.zip
http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk2.zip
http://downlo ......
应用系统不能运行,告警日志报告临时表空间不能扩展,估计是业务sql存在大量排序,只能增加临时表空间缓解这个问题。
另外还可能要清理临时段重整临时表空间释放空间:
查看一下认谁在用临时段:
SQL> SELECT /*+ rule */ se.username,se.sid,se.serial#,se.sql_address,se.machine,se.program,
su.tablespace,su.se ......
在J2EE应用程序开发中,应用程序与数据库连接的建立是我们经常遇到的问题之一。在这里我主要谈谈在本地应用程序中通过OCI方式、thin方式和JdbcOdbc桥方式连接Oracle数据库,在iPlanet Application Server 6.5和Sun ONE Application Server 7中对Oracle数据库连接池的配置以及应用中如何从连接池中获得连接。
一、本地通过J ......
管理表
表是真正存储信息的对象。
1 数据类型
(1)数值类型:用于存储整数、浮点数、实数。
number(精度,范围)精度是指数字个数总和,范围是指小数点右边的位数。
(2)字符类型:声明包含了字母、数字数据的列。
char:存储固定长度字符串
&n ......