在AnySQL.net中搜索标签(Tags) 'LOB' 的结果:
容易遗忘的手工并行
去查询一个大表时, 大家都不会忘记Oracle的并行(Parallel)操作, 比如: CREATE TABLE xxx PARALLEL 4 AS SELECT /*+ PARALLEL(...) */ SELECT /*+ PARALLEL(...) */ FROM ... 但手工并行则易被忘记, 一个朋友花了28小时导出300多G的带BLOB的表, 我的第一反应就是为什么不用并行? 这时是指手工并行. 使用exp的Query参数. exp ... query=\"where mod(pk,4) = 0\" exp ... query=\"where mod(pk,4) = 1\"...
无SYSTEM时的LOB恢复
本想将这种情况下的恢复步骤永远藏在心中的, 因为它在实际生活中太难以恢复了. 看到有人真的遇到了这种情况, 我还是将恢复的步骤写一下吧. 先来创建一个表空间及带BLOB字段表. SQL> CREATE TABLESPACE LOBDATA 2 DATAFILE 'C:\oracle\oradata\db10g\lobdata01.dbf' size 24m 3 extent management local uniform size 128K 4 segment space management manual; Tablespace created. SQL> CREATE TABLE T_LOB (COL1 NUMBER, COL2 BLOB) TABLESPACE LOBDATA; Table created. ...
能在SQL Server上做点事了
经过几个小时的努力, AnySQL连上SQL Server后已经能做点事了, 比如, 操作Text和Image字段, 和操作Oracle的LONG/LONG RAW是一码子事, 不知道SQL Server有没有BLOB/CLOB类型? 有的话也能操作, 比如将内容取出来, 或将一个文件塞进去. 不用bcp也可以将数据导出成文本文件, 或导入文本文件中的数据到表里. 当然如果是Sybase数据库, 我也一样能干这些活了. 如果有人问如何将SQL Server或Sybase数据中存放的图片文件移到Oracle或相反, 则可以联系我看看. 不过基本的功能还没有做好, 如: Oracle中的DESCRIBE命令, sp_columns或sp_help的输出实在是看不习惯. 如何在字符界面下查看一个SQL语句的执行计划, 也有Explain Plan语句吗? 如何列出当前活动的会话, 在执行什么SQL, 在等什么资源? sp_who的输出中没有这些, sp_lock能反映出锁的等待关系吗? 如何找出Top SQL, 如逻辑读最多的? 物理读最多的? 等等....
aul4b不再是Beta版了, 这里的B指的是LOB的支持
当你下载AUL的可执行文件, 你会发现Windows下是aul4b.exe, Linux下是aul4b_linux, 而Solaris下是aul4b_solaris, 一很多人认为这是一个Beta版本, 但其实不是了. 这里的4b指的是带LOB支持的版本4. 从发行的版本号4.0.2开始, 就不再是Beta版本了, 因为它已经通过了两次正式的LOB恢复考试. 如果b加在版本号之后, 如下所示的则是Beta测试版. Register Code: TRBR-CCPF-F6KJ-ALTT-MNGQ AUL : AnySQL UnLoader(MyDUL) for Oracle 8/8i/9i/10g, release 4.0.1B (C) Copyright Lou Fangxin 2005-2007 (AnySQL.net), all rights reserved. AUL> exit ...
AUL恢复LOB类型的速度之谜, 慢还是快?
有人用了AUL去恢复LOB数据, 说是速度很慢, 在每份钟只生成了10M数据, 我不是很相信的. 这中间他们可能在估计速度时估计错了. 以我去过两次恢复LOB的经历, 我恢复15000个LOB值, 生成后的大小是600MB, 大约是花了不到5分钟的(记不清了). AUL在恢复LOB数据时, 有两种方式: Inline方式和File方式. 在Inline方式下, LOB的数据和表的记录是放在一个文件中的(默认), 在这种情况下恢复的速度不太可能是1分钟10MB的数据, 因为恢复一般的表时的速度是一秒钟8MB左右(我用SYS.SOURCE$做测试的), 有LOB的情况下, 文件的增长速度应当更快. 在File模式下, 每个LOB值都被存放成一个单独的文件(LOB_xxxxxxxx_xxxx.dat), 然后文本文件中相应的列则记录了这个文件名, 在这种情况下, 1分钟10MB我同意, 可是在计算恢复速度时, 应当加上生成的这些LOB文件的大小. 或者你去计算一下文件文件的记录数, 这表示有多少个LOB值被恢复了, 可以仔细看一下这儿. 如果AUL给人家留下这样错误的印象, 那这是相当不幸的, 对我而言到还好, 对他们而言则是他们错过了最好的恢复数据的方法,...
由一个目录下可以存放多少文件引出的问题
一个目录下(没有子目录)最多可以存放多少个文件? 我现在也不知道答案. 只不过文件太多时, 很不方便, 不能进行ls等操作, 而且访问可能会很慢. 今年总共进行过两次LOB数据类型的恢复, 而且都是恢复成文本格式的, 这样的话, 每一个数据库中的LOB值都被恢复成一个文件, 存放在运行AUL的目录下. 还好这两次恢复出来的文件数不多, 都只有1.2万条左右的记录, 恢复后生成了1.2万和1.5万个文件, 就这样已经让某些目录操作不太方便了. 遇到更多的LOB记录要恢复怎么办? 遇到更多的LOB记录怎么办? 为此在AUL中新增了一个设置选项, 用于设置恢复时LOB文件存放的子目录的个数, 默认值是500, 也就是恢复出来的LOB文件会被存放在最多500个子目录中. 这个值是可以调整的(范围: 100-2000), 采用记录所在的块号和这设置值的余数来确定存放的目录, 这样的话对于同一个设置的恢复, 生成的文件位置是固定的, 但问题可能是不够随机, 不能让LOB文件平均分配到各子目录. 如下所示: AUL> set MAXLOBDIR 1000 Current...
Enable/Disable行内存贮的LOB字段性能分析
定义LOB字段时可以加上ENABLE/DISABLE STORAGE IN ROW的存贮属性, 默认情况下是ENABLE STORAGE IN ROW的, 这种情况除了在值小于4000字节时会将值直接存在行内以提高性能外, 对于再大一点的LOB值的存取也是有性能影响的, 请看下面的在10g版本中做的测试例子, 先建一个表, 包括两个CLOB字段, 并插入一样一样的大于4000字节的值. SQL> create table t_lobtest (col1 clob, col2 clob) 2 lob (col2) store as (disable storage in row); Table created. ASQL> SELECT DBMS_LOB.GETLENGTH(COL1) COL1_LEN, 2 DBMS_LOB.GETLENGTH(COL2) COL2_LEN...
宣布AUL 3退役, AUL 4开始工作.
AUL 4是在AUL 3的基础上加上了对Oracle BLOB/CLOB数据类型的支持, 于2006年12月份开始修改工作, 于2007年1月份发布了Beta版本. 在经历一次正式的恢复需求后会将Beta版本发布为正式版本, 现在已经到时间了. 不久前成功地为一个外国客户恢复了一个有BLOB字段的表, 总共恢复了12922个图片/PDF/DOC等文件, 恢复出来的数据成功地得到了客户的认同, 图片打开没有问题, 只有少数(小于10个)的PDF文件打开后是空白页, 这就不确定是谁的问题了. 因此郑重宣布AUL 3退役, AUL 4版本正式开始战斗, 最新的版本是4.0.2. 需要非常感谢客户对我的支持, 在这一次恢复中, 原来用的是Beta版本直接拷贝出来的4.0.1版本, 在恢复过程中遇到了两处Bug问题, 客户很仔细很耐心地支持我对Bug的修改, 这种配合精神我在国内的客户中少有遇到. 除了遇到Bug找过我之外, 这位国外客户仔细阅读我的英文Blog上的文档, 没有问过我什么问题, 这一点我们更需要向他们学习了. 这次修复的Bug主要有两处: 1, 在Chained或Migrated行中存放的LOB字段不能恢复. 原因: 没有将LOB索引的信息传给处理Chained和Migrated记录的子程序....
AUL 4中如何恢复分区表的LOB字段?
当遇到分区表的LOB字段时, 不能直接进行恢复, 需要修改一下AULOBJ.TXT中的LOB索引分区的名称, 这是由于LOB索引的分区名和表的分区名不同引起的, 而我的程序是假定是具有相同的分区名的. 请看下面的演示, 先创建一个有LOB字段的分区表: SQL> CREATE TABLE T_HASHLOB (COL1 NUMBER, COL2 CLOB) 2 LOB(COL2) STORE AS (DISABLE STORAGE IN ROW) 3 PARTITION BY HASH(COL1) PARTITIONS 2; Table created. 接下来插入几条记录, 交提交, 到SYS用户下进行CHECKPOINT. 在AUL 4中重新UNLOAD系统数据字典后, 用DESC来看一下T_HASHLOB表的情况: AUL>...
AUL 4 Beta程序更新情况 - 2006.12.21
这几天对AUL 4继续进行完善, 比刚发布Beta时的程序已经好多了, 不过版本号还是没有变化. 先来重温一下刚发布时的一些限制吧. 没有经过足够多的测试. 目前的测试仅在10g上进行. 对于CLOB的字符集转换还有些问题. 对LOB Index的访问用Index Full Scan的算法, 需要改进. 对于CHUNK SIZE大于一个数据块的情况还不支持. 到现在又有那些改进呢? 做了更多的测试, 不同大小的CLOB/BLOB, Inline或Outline的 在8i上也做了一些测试 CLOB的字符集转换支持GBK和UTF8. 对LOB Index的访问已经采用Index Range Scan的算法. 可以指定CHUNK SIZE了. 已经对现在的程序充满信心了, 正在等待实践的检验. 留下仅有的一个问题是, 如何支持同一表的LOB的CHUNK大小不同的情况....
为什么LOB或LOB Index的分区名称和表的分区名不同?
当我们创建一个LOCAL的索引时, 这个索引各个分区的名称和表的相应分区的名称是相同的, 但LOB分区及LOB Index分区的名称则是系统产生的. 不知道Oracle为什么顺道改一下? 下面的查询结果是在10g上进行的, 创建了一个有CLOB字段的分区表, 然后到OBJ$中去查询: SQL> select obj#,name, subname from obj$ 2 where owner#=25 and obj# > 10000 order by obj#; OBJ# NAME SUBNAME ---------- ------------------------------ --------------- 10006 T_PRTLOB 10007 T_PRTLOB SYS_P21 ...
AUL 4现阶段对LOB CHUNK的支持情况
通过试验, 发现LOB的一个CHUNK中的所有块必须是在一个Extent中的, 并且是连续的, 不相信的话你可以试试能不能指定CHUNK的大小的值为大于表的Next Extent的值? 基于这个规律, 在AUL 4中增加了对CHUNK的有限支持. 下面上用于测试的两张表, 只有一个字段, 为CLOB类型, 表中只有有一条记录, 内容相同: SQL> SELECT TABLE_NAME,COLUMN_NAME,CHUNK FROM USER_LOBS; TABLE_NAME COLUMN_NAME CHUNK --------------- ------------ ---------- T_CHUNK2 COL1 32768 T_CHUNK1 COL1 16384 接下来用新增的CHUNK选项指定表中所有LOB的CHUNK大小, 单位是数据块, 默认值是1, 从这儿我们可以看出如果一个表中有多个LOB字段, 且CHUNK大小不一样, AUL 4现在还是不支持的. 下面我们将LOB内容导出成独立的文件: AUL> set clob_edian...
在10g(Windows)上测试LOB数据的DMP格式恢复
现在我们将两张LOB的演示表, 用AUL 4.0.0 Beta恢复成DMP格式, 然后看看能不能成功导入到数据库中: AUL> set clob_edian big Current CLOB_EDIAN is : BIG AUL> set lob_convert 1 Current LOB_CONVERT is : 1-GBK AUL> set charset 852 Current CHARSET is : 0x0354 AUL> set output_style dmp Current OUTPUT_STYLE...
在10g(Windows)上测试BLOB数据恢复
下面是用AUL 4.0.0 Beta版本恢复Windows上10g R2数据库BLOB数据的一个演示, 首先是创建测试表: SQL> CREATE TABLE T_BLOBDEMO 2 ( 3 ID NUMBER, 4 BLOB1 BLOB, 5 BLOB2 BLOB, 6 BLOB3 BLOB 7 ) 8 LOB(BLOB3) STORE AS (DISABLE STORAGE IN ROW) 9 / Table created. SQL> INSERT INTO T_BLOBDEMO VALUES (1, '3031323334', NULL, NULL);...
在10g(Windows)上测试CLOB数据恢复
下面是用AUL 4.0.0 Beta版本恢复Windows上10g R2数据库CLOB数据的一个演示, 首先是创建测试表: SQL> CREATE TABLE T_CLOBDEMO 2 ( 3 ID NUMBER, 4 CLOB1 CLOB, 5 CLOB2 CLOB, 6 CLOB3 CLOB 7 ) 8 LOB(CLOB3) STORE AS (DISABLE STORAGE IN ROW) 9 / Table created. SQL> INSERT INTO T_CLOBDEMO VALUES (1,'INLINE CLOB', NULL,NULL); 1...
AUL4中几个和LOB有关的选项
AUL 4.0.0将正式支持LOB数据类型, 包括Inline LOB, In row LOB和Out of Row LOB. 这里面需要先介绍一下和LOB有关的几个选项. 首先是只和CLOB有关的两个选项: 1, SET CLOB_EDIAN {BIG | LITTLE} 当数据库中的字符集为固定长度时(如单字节字符集和那些字符集名字中后缀是FIXED), 存贮在CLOB中的数据的字符集和数据库的字符集相同. 然而当数据库的字符集为变长时, CLOB中的数据以固定的Unicode格式存贮, Unicode字符集包括两个字节, 因此就有高位优先(Big Edian)和低位优先(Little Edian)的问题. 在10g以前, CLOB的字节优先和机器的硬件相同, 从10g开始, CLOB中的Unicode则总是高位优先(Big Edian)的. 因此增加这个选项来指定CLOB的字节顺序. ...
AUL/MyDUL 4.0.0 Beta发布了
去年我曾经说, 如果AUL能支持LOB或压缩块的任一功能, 都会将版本升一级. 今天发布4.0.0 Beta版本, 是对LOB的支持有了进一步的突破. 你可以下载Beta版本进行LOB恢复测试. 恢复LOB需要设置很多的选项, 这些选项会在以后的文章中介绍. 为什么是Beta版本, 有如下原因: 没有经过足够多的测试. 目前的测试仅在10g上进行. 对于CLOB的字符集转换还有些问题. 对LOB Index的访问用Index Full Scan的算法, 需要改进. 对于CHUNK SIZE大于一个数据块的情况还不支持. 当然也有一些目前同类软件还不具有的特点, LOB的数据可以恢复成DMP格式, 以方便装载. 同其他恢复软件一样, 要利用这个功能, AUL所需的字典信息必需存在(有System表空间或手工编辑它们). 将会在以后的二到三个月时间内进行最大程度的改进, 和足够多的测试, 希望能在农历年后发布4.0.0正式版本....
如何将BLOB的内容转到LONG RAW中
PL/SQL基本上对于LONG RAW和BLOB无能为力, 对于这两种需要自已写程序来实现. 在AnySQL中就可以将BLOB的内容转换成LONG RAW, 下面是一个例子. 先来建一张测试表: ASQL> SET QUERYONLY FALSE ASQL> CREATE TABLE T_BLOB (ID NUMBER NOT NULL, IMAGE BLOB); Create Table Succeed. ASQL> VAR P_IMAGE BLOB ASQL> DEFINE P_IMAGE=ASQL.EXE ASQL> INSERT INTO T_BLOB VALUES (1, :P_IMAGE);...
AnySQL中的特色功能介绍(八) -- 更新LONG/LOB列
常看到有人问如何更新LOB或LONG类型的字段中的内容, 在SQL*Plus中是不容易的, 在AnySQL小工具中, 除了可以用LOB类型的主机变量, 我设计了LOB和LOBIMP命令来对这些数据类型进行查询操作, 这些命令可以将运行AnySQL的机器(非服务器端)上的文件上传更新到LONG/LOB字段中. LOB命令语法, 这里面query应当只返回一行及一列(LONG或LOB类型), 在SELECT中应当加上"FOR UPDATE"子句表示锁定LOB进行更新. Usage: LOB query << file Note : << mean import a file to blob/clob field, the query should include the for update clause ...
AnySQL中的特色功能介绍(七) -- 查询LONG/LOB列
常看到有人问如何查看LOB或LONG类型的字段中的内容, 在SQL*Plus中是不容易的, 在AnySQL小工具中, 我设计了LOB和LOBEXP命令来对这些数据类型进行查询操作, 这些命令都将LONG/LOB字段中的内容检索到客户端的机器(非服务器端). LOB命令语法, 这里面query应当只返回一行及一列(LONG或LOB类型). Usage: LOB query >> file Note : >> mean export long/long raw/blob/clob to a file LOBEXP命令语法, 这里面query应当只返回两列, 第一列为文件名, 第二列为LONG或LOB字段. Usage: LOBIMP query Note : Query should return...
AnySQL中的特色功能介绍(五) -- 更新插入LONG/LOB
在AnySQL中可以比较方便地操作LONG/LONG RAW类型, 将客户端文件插入或更新到这些字段中, 这是SQL*Plus没有办法做到的. 首建来建一个包括一个LONG字段的测试表, 如下所示: ASQL> DESC T_LONG NO# NAME NULLABLE TYPE --- ---------------- -------- ---- 1 COL1 LONG 接下来我们来插入一个Shell文件到一条新的记录中, 你也可以用Update语句来更新一个LONG/LONG RAW字段, 只需要声明一个CLOB(更新LONG)或BLOB(更新LONG RAW)类型的AnySQL宿主变量(Host Vairable), 并赋给一个文件名作为值, 在Insert/Update语句中直接引用就可以了, 如下所示: ASQL> VAR P_LONG CLOB ASQL> define...
用SQLLDR来装载CLOB/BLOB列的控制文件例子
Oracle的SQLLDR是用来将文本文件中的记录装载到数据库中的工具, 其并行(Parallel),直接(Direct)的装载模式是目前所知最快的方式. 不过用于指定文本格式的控制文件有点难于写, 我在写时也经常需要查阅文档. 为了方便我还是在这儿写一个例子吧, 下面是样表的结构: SQL> create table test( 2 num_col number(10), 3 char_col char(10), 4 var_col varchar2(10), 5 date_col date, 6 blob_col blob, 7 ...
Oracle 9i临时LOB对象过多使用临时表空间的一个错误设计
这是一个在Oracle 9i上的Bug, 问题发现于数据库从8i升级到9i时, 发现占用了大量的临时段. 与其说是Bug, 更不如说Oracle故意如此, 因为Oracle说这不是Bug, 而是其设计上如此. 我们在一个Session中做实验(9i)就可以了, 你可以想象一下如果你有几百个会话都在调用有临时LOB对象的角本, 而TEMP表空间的UNIFORM SIZE设得又比较大时, 总共需要多少临时空间?. ASQL> declare 2 a clob; 3 begin 4 a := 'abc'; 5 end; 6 /...
站内搜索 | Search
总数: 512 | 留言: 1562
- Name: Fangxin Lou
- MSN: anysql©live.com
- Mail:anysql©yahoo.com
anysql©gmail.com - Skype: anysql
- AIM: loufangxin
- Mobile:008615925611590
分类 | Categories
软件下载:
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql