行链接产生在第一次插入数据的时候如果一个block不能存放一行记录的情况下。这种情况下,Oracle将使用链接一个或者多个在这个段中保留的block存储这一行记录,行链接比较容易发生在比较大的行上,例如行上有LONG、LONG RAW、LOB等数据类型的字段.
创新互联建站致力于网站设计制作、网站设计,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择创新互联建站,就选择了安全、稳定、美观的网站建设服务!
有的,和oracle一样,SQL中也有行迁移
行迁移记包含forwarding_stub 和forwarded 两种类型。这两类记录是因为数据页不能容纳更新后的记录而产生的,不是因为记录长度超过8060B引起的,所以这两类记录依然是行内记录,与行溢出记录是不同的。
这两种记录总是成对出现的,当出现forwarding_stub时,在别的页面中一定有与之对应的一条forwarded记录。
forwarding记录也叫forwarding_stub记录,记录头标志为0x04,它是一条完整的数据记录。虽然结构看起来特殊,但还是符合一般记录的结构,记录中主要内容就是在行中用8字节保存了指向移出后的记录的位置指针。
forwarded 记录,有时直接叫做迁移记录。记录头部标志为0x32. 它也是一条完整记录,格式跟一般记录略有差异,大体结构还是相同的。这里是存储了溢出前的那条记录的真实数据。
这两种记录的具体存储结构比较简单和直观,其逻辑结构会在下面的实例列举中结合具体数据记录来分析说明。
测试这种的方法太长了,不在这里具体列出,你可以到51CTO里面找一下,搜索SQL行迁移有具体的测试方法
1、在数据库中创建相应的表。
如,文本文件内容为:
create table test
(id int,
name varchar2(10),
sex varchar2(10));
2、在电脑中某路径下编写ctrl文件,以c盘data目录为例,添加如下文本。如,被导入的文件名为load.txt
load data
infile 'load.txt' --被导入文件名
replace into table test
(id char terminated by ',',
name char terminated by ',',
sex char terminated by whitespace)
编写后,将文件保存成load.ctrl
3、然后打开命令提示符,并进入到文本文件和ctrl文件所在目录。
4、输入以下语句,并执行。
sqlldr userid=用户名/密码@数据库实例名 control=load.ctl log=load.log
5、导入后,test表中数据如下:
select * from test;
这里面没有比较详细的资料!
如果一块数据磁盘空间无法保存某个数据时(比如以前是1k,现在update到2k,而当前块的空闲空间不足1k),则会将新的数据保存到另外一个新的块里,然后在以前的块保存一个新位置的地址连接。