易截截图软件、单文件、免安装、纯绿色、仅160KB

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用户解锁命令的两则实现方法


在安装完Oracle 10g之后,想打开sql*plus来学习,然后按照书上的步骤用scott用户来连接数据库,可输了好几次都提示一个错误。
error: the account is locked
然后上网查了一下之后发现这个用户被锁定了,至于它为什么被锁定,可能是下面几个原因。
1.尝试多次登录未成功.(可能密码不正确)
2.此用户被管理员手工锁定. ......

oracle将字符串转换为12小时与24小时制:


oracle将字符串转换为12小时与24小时制:
--12小时制:
select hsv.mydate from huhai_seq_value  hsv
where hsv.mydate = to_date('2009-03-03 00:00:00','yyyy-mm-dd hh:mi:ss');
--24小时制:
select hsv.mydate from huhai_seq_value  hsv
where hsv.mydate = to_date('2009-03-03 00:00:00','yyyy-m ......

Oracle Flashback 技术总结

Oracle Flashback 技术总结
Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。
在Oracle 10g中, Flash back家族分为以下成员: Flashback Database, Flashback Drop,Flashback Query(分Flashback Query,Flashback Version Query ......

深刻理解Oracle数据库的启动和关闭

一、启动和关闭Oracle数据库
  要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆。一般我们常用INTERNAL用户来启动和关闭数据库(INTERNAL用户实际上是SYS用户以SYSDBA连接的同义词)。Oracle数据库的新版本将逐步淘汰INTERNAL这个内部用户,所以我们最好还是设置DB ......

oracle临时段的处理

应用系统不能运行,告警日志报告临时表空间不能扩展,估计是业务sql存在大量排序,只能增加临时表空间缓解这个问题。
另外还可能要清理临时段重整临时表空间释放空间:
查看一下认谁在用临时段:
SQL> SELECT /*+ rule */ se.username,se.sid,se.serial#,se.sql_address,se.machine,se.program,
su.tablespace,su.se ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号