CLUSTER内部结构的总结(4)
CLUSTER内部结构的总结(4)[@more@]以下的部分就是数据的指针地址部分:0x1a:pri[0] offs=0x1f830x1c:pri[1] offs=0x1f640x1e:pri[2] offs=0x1f450x20:pri[3] offs=0x1f26以上是c_t的数据0x22:pri[4] offs=0x1f790x24:pri[5] offs=0x1f5a0x26:pri[6] offs=0x1f3b0x28:pri[7] offs=0x1f1c以上是t1的数据0x2a:pri[8] offs=0x1f120x2c:pri[9] offs=0x1f080x2e:pri[10] offs=0x1efe0x30:pri[11] offs=0x1ef4以上是t2的数据以下的部分就是数据的实现部分:tab 0, row 0, @0x1f83 --第一个表的第一行,后面是偏移地址tl: 21 这一行的长度(
CLUSTER内部结构的总结(3)
CLUSTER内部结构的总结(3)[@more@]将这个块dump出来,这部分是数据块的头:Start dump data blocks tsn: 18 file#: 5 minblk 12 maxblk 12buffer tsn: 18 rdba: 0x0140000c (5/12)scn: 0x0000.00318001 seq: 0x01 flg: 0x02 tail: 0x80010601frmt: 0x02 chkval: 0x0000 type: 0x06=trans dataHex dump of block: st=0, typ_found=1这部分是ITL,这里需要注意的是在9i之前数据的ITL最小是1,在Oracle 10g之后默认的最小是2。但是在9i时候custer的ITL的最小是2。Block header dump: 0x0140000c Object id on Block? Y seg/obj: 0xcbcb csc
CLUSTER内部结构的总结(2)
CLUSTER内部结构的总结(2)[@more@]什么是cluster键这个很号理解,就是多个表上共有的列,cluster表是按照这个Cluster键来存储,是在添加Cluster的时候指定的。这里有一些限制:例如:1、在这个集群上的每一个表上的列必须有同样的类型和长度。2、最大是16个列(通常不会用到这么长,假如真的是这么长,性能更加无法保证了)3、键的值不能超过块可用的空间的一半。4、集群键更新是允许的,但是性能比较差如何规定集群数据块的格式:SIZE这个参数限制每一个块的键的最大数目。每一个块的最小只有一个集群键。内部结构分析建立一个测试cluste
CLUSTER内部结构的总结(1)
CLUSTER内部结构的总结(1)[@more@]总结:康标email:kang_biao@hotmail.comCluster是Oracle数据存储的一个可以选择的模式,平常我们对于数据的存储是采用一种叫做堆的方式进行存储的。所谓的cluster就是将一组表,由于他们有同样的列,而且是这些列通常在查询的时候是连接的条件之一,重要就可以将这些表按照相同的列存储在同一个数据块中。这样会带来好处,同时也会有坏处。优点是:在查询的时候在两个存储在同一个cluster的表按照cluster键连接的时候会提升性能。这个应该是很好理解的,例如我们在对两个表进行多表查询的时候,假如需要查
关于删除数据的快慢问题的分析
关于删除数据的快慢问题的分析[@more@]关于删除数据的快慢问题的分析总结:康标email:kang_biao@hotmail.com今天在ITPUB上看到一个帖子是关于删除表中数据的问题,意思是删除一个表中的数据为什么行数少的却消耗时间很长?http://www.itpub.net/783169.html其实这个问题应该说是从多个角度分析,也就是有可能多种原因都能够产生现在的这些现象:1、索引的多少。2、表每一行的大小3、外键4、触发器5、高水位一个一个解释:1、索引的多少一个表上的索引存储也是和表一样需要空间,对这个表的删除,同样也会涉及到像关联索引的删除,通俗一点
一个有用的工具文件utlrp.sql
一个有用的工具文件utlrp.sql[@more@]一个有用的工具文件utlrp.sql utlrp.sql是oracle提供的一个用于重编译数据库中处于invalid状态的对象。在数据库进行升级之后,会有不少脚本变成invalid状态。oracle推荐在升级或者打了补丁之后运行一下这个脚本。运行这个脚本需要注意的问题:1、在SQL PLUS上运行。2、需要sys as sysdba3、在运行这个脚本的时候,数据库上没有ddl运行。这个脚本是调用脚本@@utlprp.sql 0这个脚本主要是调用UTL_RECOMP包来执行。这里的0是用于控制脚本运行重新编译的并行度,如果指定为0,就是让系统UTL_RECOMP自
分区表的分区数据删除、truncate会对全局和局部索引产生什么影响
分区表的分区数据删除、truncate会对全局和局部索引产生什么影响[@more@]分区表的分区数据删除、truncate会对全局和局部索引产生什么影响总结:康标email:kang_biao@hotmail.com建立测试表t。SQL> create table t 2 partition by range (a) 3 ( 4 partition p1 values less than (10000) tablespace part1, 5 partition p2 values less than (20000) tablespace part2, 6 partition p3 values less than (30000) tablespace part3, 7 partition p4 values less than (40000) tablespace part4,
DISKRATIO的含义
DISKRATIO的含义[@more@]DISKRATIO的含义总结:康标email:kang_biao@hotmail.com这个参数是用于RMAN的备份数据文件和控制文件上使用的。目的是告诉RMAN在备份的时候,需要备份的数据文件 至少 (注意这是至少,在Oracle的文档中使用的是at least)是从几个磁盘上读取的。具体的作用是这样的,例如你需要备份集需要的数据文件分布在10个磁盘上,如果每一个磁盘的读取速率是10k/s。而你处理备份的能力是50k/s,如果是一个一个磁盘处理的话,就会浪费你的系统资源,这时候可以设置参数diskratio为5。这样就可以告诉RMAN处理这个备份集的时候
关于PUBLIC
关于PUBLIC[@more@]关于PUBLIC总结:康标email:kang_biao@hotmail.comhttp://www.oracle.com.cn/thread-119327-1-1.htmlpublic是一个特殊的角色,但是在角色的视图上是没有办法查询到的:SQL> select * from dba_roles where role='PUBLIC';ROLE PASSWORD_REQUIRED------------------------------ -----------------SQL> public应该是oracle预定义的,在sql.bsp文件中找到这个的由来:create user sys identified by "D_SYSPW" /create role public/create role connect/grant create session
关于修改数据库名称和ID的方法总结
关于修改数据库名称和ID的方法总结[@more@]关于修改数据库名称和ID的方法总结总结:康标 email:kang_biao@hotmail.com 在Oracle上修改数据库名称一般有两种方式修改,在Oracle9i之前要修改数据库的名称和ID的方式和方法是通过重建控制文件的方式来实现的。使用 alter database backup controlfile to trace ‘*****’; 来生成脚本,然后根据需要修改脚本。这一点在网上都有具体的操作方式和方法。 第二中方法就是使用Oracle9i新提供的一个工具来修改DBNEWID nid。获取帮助: E:oracleora10BIN>nid -help DBNEWID: Release 10.2.0.1.0
Oracle上的逻辑坏块和物理坏块
Oracle上的逻辑坏块和物理坏块[@more@]Oracle上的逻辑坏块和物理坏块这个问题是引自ITPUB上的一个问题。总结:康标email:kang_biao@hotmail.com从http://www.itpub.net/590361.html这个来看,所谓的物理坏块,可以从操作系统的警告文件中查找到报错的信息。逻辑坏块就是Oracle为了保持数据的一致性而设置。这样能够保证数据块不会被误操作。物理坏块的查找是通过:(AIX系统)1、检查一下操作系统的日志看是否有相关的报错。 2、dd if=报错的文件 of=/dev/null bs=db_block_size如果不报错是逻辑坏块。逻辑坏块有很多中方式,一般通过db
DML ERROR LOGGING总结
DML ERROR LOGGING总结总结:康标email:kang_biao@hotmail.com[@more@]DML ERROR LOGGING总结总结:康标email:kang_biao@hotmail.com为什么要使用DML ERROR LOGGING?在Oracle 10之前执行一些大规模的操作的时候,尤其是一些长时间bulk DML操作的时候,会发现如果在执行过程中如果有一行发生错误的时候,就会放弃这个DML操作而回滚。这样的话就会浪费大量的时间和系统资源。是不是能有一种途径使得在执行bulk DML操作,将成功的部分插入到表中,而将未能正确插入的部分的错误插入到其他表中,以后来处理。在Oracle 10g release 2:中引入
模拟在线重做日志被删除的情况恢复
模拟在线重做日志被删除的情况恢复[@more@]模拟在线重做日志被删除的情况恢复添加一个在线重做日志组4。SQL> alter database add logfile group 4 ('e:redo4.log') size 10M;数据库已更改。SQL> select * from v$log 2 ; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS---------- ---------- ---------- ---------- ---------- --- ---------------- 1 1 165 10240000 1 NO CURRENT 2 1 162 10240000 1 YES INACTIVE 3
大文件表空间
大文件表空间[@more@]大文件表空间大文件表空间是一个表空间,只是有一个数据文件,这个和其他普通的表空间不一样的地方。其他普通表空间是可以有多个数据文件中。但是文件不能太大,但是大文件表空间的数据文件在8k的数据块中可以有32T的数据文件,在32K上可以有128T的数据文件。这样大文件表空间可以减少数据文件的数目。只能使用EXTENT MANAGEMENT LOCAL and SEGMENT SPACE MANAGEMENT AUTO的方式管理表空间。由于表空间中只有一个文件,所以文件号统一为1024。还可以添加大文件临时表空间。
关于在spfile文件上修改control_files参数的问题
关于在spfile文件上修改control_files参数的问题[@more@]我在为控制文件修改路径的时候遇见一个这样的问题。本来三个控制文件的位置是:E:ORACLEORADATAORA10CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL' 我现在将控制文件的路径修改为:E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL'我开始做的时候是这样的SQL> alter system set control_files='E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL' sc
DUMP的一些用法
DUMP的一些用法[@more@]DUMP的一些用法DUMP是返回数据类型代码,长度和内部存储表达式的一个函数,有一些特殊的用法:参数return_fmt用来指定返回值的格式:8 返回8进制的结果10返回10进制的结果16返回16进制的结果17 作为单独字符作为结果例如:SQL> select a from t;A-----1111SQL> select dump(a,8) from t;DUMP(A,8)--------------------------------------------Typ=1 Len=4: 61,61,61,61SQL> select dump(a,10) from t;DUMP(A,10)--------------------------------------------Typ=1 Len=4: 49,49,49,49SQL> select dum
为什么要使用set unused 删除列?
为什么要使用set unused 删除列?[@more@]为什么要使用set unused 删除列?先总结一下set unused 这个语句的意思,在删除一个列在Oracle上有很多方式,一个是drop column另一个则是set unused。这两个是不一样的。做一个试验:SQL> create table t (a int ,b int , c int);Table createdSQL> alter table t set unused column b;Table alteredSQL> desc t; 名称 是否为空? 类型 ----------------------------------------- -------- -------------- A
DB2傻瓜1000问(三)DB2实例部分
DB2傻瓜1000问(三)DB2实例部分[@more@]DB2实例部分45、 什么是DB2实例?DB2 实例 是一种逻辑上下文,DB2 命令及函数在其中执行。。您可将实例视为管理对数据库文件的访问的服务或守护进程。在一台服务器上可定义多个实例。各实例独立于其他实例,也就是说所有实例均可分别管理、操纵及调优。46、 在WINDOWS上如何新添一个实例?db2icrt instance_name47、 在Linux 和 UNIX 中如何新添一个实例?db2icrt -u fenced_user_ID instance_name默认情况下,用户定义的函数和存储过程是在 fenced 模式下创建的,因而这些进
DB2傻瓜1000问(二)DB2数据库的安装部分
DB2傻瓜1000问(二)DB2数据库的安装部分[@more@]DB2数据库的安装部分23、 为什么要对数据库进行编目?如果没有编目信息,应用程序就无法连接数据库!DB2 有多个用来访问数据库的目录。这些目录让 DB2 能够找到已知的数据库,无论它们是在本地系统上,还是在远程系统上。系统数据库目录包含一个列表和指针,它们指出可以找到每个已知数据库的地方。节点目录包含的信息指出如何以及在哪里能够找到远程系统或实例。要在这些目录中放进一个条目,需要使用 CATALOG 命令。要删除条目,应该使用 UNCATALOG 命令。要想从客户机访问数据库,客户机
DB2傻瓜1000问(一)DB2简介、版本部分
DB2傻瓜1000问(一)DB2简介、版本部分[@more@]DB2简介、版本部分 1、 DB2的历史是怎样的? 1983年IBM发行第一版是针对MVS系统的。1996年的V5。1999年支持LINUX系统。2004年出版V8.2。06年出现V9。 2、 DB2各版本的代码是否通用? DB2的代码在LINUX,UNIX和WINDOWS上的代码大约90%的是相同的,每个操作系统都有10%的专用代码,主要是用于数据库与底层操作系统集成用的。 3、 什么是OLTP? 在线事务处理(online transactional processing,OLTP)这些应用程序的特征是进行细粒度的单行查询,可能更新少量的记录。 4、 什么是OLAP? 在线分