数据库设计和基本备份规则
数据库设计和基本备份规则[@more@]数据库设计和基本备份规则(摘自《Oracle备份和恢复手册》)1、 建议将日志文件归档到磁盘,并在以后拷贝到磁带中。归档日志文件的目的地不应在与任何数据库文件或者联机重做日志文件存放在一个物理磁盘设备上。同样备份的数据库文件和联机的数据库文件不能驻留在同一个物理设备上。这一规则主要目的是为了防止当一个磁盘出现问题的时候,备份和联机的文件都在一个磁盘上,这就会造成无法将数据库进行修复的局面。这就是所谓的“不要将鸡蛋放在一个篮子里”的意思。而“建议将日志文件归档到磁盘,并在以
Data pump学习笔记
Data pump学习笔记[@more@]Data pump学习笔记综述n 是一个基于服务器的工具,用于高速的数据地移动n 底层结构是基于dbms_datapumpn 提供了新一代的导入和到处工具:expdp,impdp,基于网络的界面n 是传统导入导出工具的超集体系结构n 直接路径API(DPAPI)n 外部表服务n 包dbms_metadatan 包dbms_datapumpn Expdp和impdpData dump的导入导出综述数据泵的导入导出是Oracle10的一个新的工具,虽然和传统的导入导出命令相似,但是两个是独立的产品。数据泵的导出是一
关于数据库操作系统的讨论
关于数据库操作系统的讨论[@more@]关于数据库操作系统的讨论这个题目主要是来在ITPUB上的一个讨论:数据库操作系统平台,Linux/Unix 强在哪里?http://www.itpub.net/573121,3.html在这里大家主要集中在几个主流的操作系统上使用Oracle数据库,来讨论究竟是在那个数据库上Oracle比较好。我也结合这个问题的大家的发言和自己的看法总结一个:在主流的数据库操作系统有以下几种,UNIX,LINUX,WINDOWS,其他的例如OpenVMS,Mac OS X Server在实际的使用中相对比较少。在选择使用何种操作系统来跑数据库,我个人认为,可能从性能,可扩展性,
Histogram总结
Histogram总结[@more@]Histogram总结Histogram主要是提供数据的分布情况,以便Oracle的CBO能够做出最优的执行计划。直方图的类型:基于宽度平衡Histogram将字段的属性分成相等的宽度,称作bucket。并计算行数同样的值被放置在同一个bucket中,如果几个行是同样的值,会放置为同一个bucket中,增机bucket的高度。基于高度平衡Histogram每个bucket有几乎相同数量的同样数量的行。如果几行是相同的值,将被放置到同一个或者分散到几个bucket上,也就是说同样值得行被放置在几个bucket中,而每一个bucket的高度,就是存放的行数几乎相同。高度
关于统计数据收集的总结
关于统计数据收集的总结[@more@]关于统计数据收集的总结在Oracle9i数据库以来,收集统计信息有两种统计数据:n 数据库统计作为数据库管理员,需要收集数据库统计信息,这些数据可以量化数据的分布和表、索引和簇存储的特征。统计数据是基于成本优化器的基础,如何收集统计数据是实现成本优化器的根本。可以使用Analyze和Dbms_stats进行数据库统计的收集。n 系统统计只能使用Dbms_stats进行数据库统计的收集。这些信息被存放在数据字典中。2007-3-19新添统计信息收集的一些建议:使用dbms_stats包来收集而不是使用analyze命
Latch总结笔记
Latch总结笔记[@more@]Latch总结笔记Latch的目的n 串行访问1) 保护在SGA中的数据结构2) 保护共享内存的分配n 串行执行防止对某些关键的代码同步执行;防止corruption Latch和enqueue的区别EnqueueLatchAccessSeveral modesMostly exclusiveacquisitionFIFONondeterministicatomicityNoyes
锁的总结笔记
锁的总结笔记[@more@]锁的总结笔记数据字典锁数据字典锁是保护的是在数据字典中定义的数据库对象被引用时,保持数据的一致性,主要是保护这些对象在使用的时候,不被删除,改变。为事务提供一致性的对象定义视图。主要有三种类型的数据字典锁:n 行缓存锁n 库缓存锁n 库缓存pins行缓存锁1、 存储的是数据字典行2、 是共享池的一部分3、 可以减少对SYSSTEM表空间的IO争用4、 使用行缓存锁来实现数据字典行的find-grain锁锁的应用:1、 这些缓存的行为资源结构2、 锁结构是从共享池中被动态分配;3、 类型QA。。。QZ参数_row_cache_instance
ENQUEUE总结笔记
ENQUEUE总结笔记[@more@]ENQUEUE总结笔记Oracle锁的类型n 数据字典锁(DDL)n 数据操作锁(DML)n 内部锁和闩n 分布式锁n 并行缓存管理锁队列是一个服务,是由kernel Service Enqueues (KSQ)层来提供。其他层在使用的是调用这个层的函数来使用。队列是一种用来管理共享资源联系的机制。是一个本地的能够串行连接共享资源的锁。这些共享资源可以使重做线程,表和事务。这种管理方式可以在一个实例上使用,也可以在所有的实例上实现。 在队列的使用中,有请求,转换和释放队列的使用方式和过程。
DELETE大批量数据的性能优化
DELETE大批量数据的性能优化[@more@]DELETE大批量数据的性能优化问题的提出:一个表有上千万的数据,欲从该表中删除部分数据;在线用的生产库,不能影响生产;该表有四个索引,删除的sql语句用到了索引;正常业务不能停止-不能disable约束,也不能临时不用索引;问题的解决:这个问题中应该重点考虑的问题是这个系统是生产系统,不能离线,所以只能是根据情况考虑一些在线的删除方式。1、 如果是定期清楚历史数据的话,可以考虑用partition的方式,采用分区方式是其优点之一,能够使用其易于管理的一个方面,在这里是不是应该考虑分区时候
关于参数FIXED_DATE的使用
关于参数FIXED_DATE的使用[@more@]关于参数FIXED_DATE的使用Parameter type String Syntax FIXED_DATE = YYYY-MM-DD-HH24:MI:SS (or the default Oracle date format) Default value There is no default value. Parameter class Dynamic: ALTER SYSTEM FIXED_DATE enables you to set a constant date that SYSDATE will always return instead of the current date. This parameter is useful primarily for testing. The value can be in the format shown above or in the default Oracle date format, without a time.这是Oracle文档
关于参数O7_DICTIONARY_ACCESSIBILITY
关于参数O7_DICTIONARY_ACCESSIBILITY这个参数是控制* any table权限使用的。例如select any table,update any table,和drop any table。 若该参数为 true,则有 select any table 权限的帐号则可查看DBA_ V$等之类的数据字典,否(false),则只能看自己权限内的如:user_, all_之类的字典。但被授予了select_catalog_role 则不受此参数的控制。[@more@]关于参数O7_DICTIONARY_ACCESSIBILITY这个参数是控制* any table权限使用的。例如select any table,update any table,和drop any table。 若该参数为 true,则有 select any table 权限的
关于统计中Consistent Gets,Physical Reads和DB Block Gets的意义
关于统计中Consistent Gets,Physical Reads和DB Block Gets的意义[@more@]关于统计中Consistent Gets,Physical Reads和DB Block Gets的意义这个问题,我似乎找了很多遍,也记了很多遍,似乎现在还是搞的比较迷糊,今天看到ITPUB上的一个帖子http://www.itpub.net/showthread.php?s=9650d33f292c0cc948b9fb9ce80047f0&threadid=605100好好总结一下:在Oracle的文档中有这样的解释:db block getsNumber of times a CURRENT block was requested.consistent getsNumber of times a consistent read was requested for a block.physica
update的机制问题
update的机制问题[@more@]update的机制问题update 的时候,如果存在索引字段的更新,则删除原索引条目(不是真正的删除数据,仅仅是在该行标记为 删除)插入新的索引条目对于row本身的更新,是在行物理地更改,如果行的长度增加到当前位置无法容纳,则行的位置被提到 block的最上面一条记录的位置之上,假如该块已经无法容纳,则在原来行的物理位置保留一个指针,行被迁移到新的block,而保留的指针就是指向新的block的位置。这时索引中rowid不用发生变化,查询的时候先找到 那保留的指针,再去找 实际的新的位置。假如行迁移后再发生upda
关于块清除
关于块清除 [@more@]关于块清除 块清除是为了满足快速的当事务提交时,正常情况下应该清除影响的数据块上的ITL事务链表,更新row directory,反映出delete操作的行标识,但是如果事务较大,影响的数据块非常多,超过了缓冲区的10%,此时commit不会清除数据块上面的相关信息,而是保留到下次对这些数据块的访问的时候,这样导致下次访问数据块的速度比正常情况下慢很多(特别是大型的批处理),他要清除上面的ITL链表,row directory,SCN号等,此时还会产生redo信息(select也会)commit操作而引入的,他使得Oracle在进行数据提交时尽量快的完成,使事务提交平
使用Oracle 10g拷贝文件
使用Oracle 10g拷贝文件[@more@]使用Oracle 10g拷贝文件1、在操作系统上建立两个目录:Last login: Sun Aug 20 15:05:45 from 192.168.0.1Sun Microsystems Inc. SunOS 5.10 Generic January 2005$ /bin/bashbash-3.00$ pwd/opt/oraclebash-3.00$ cd kbbash-3.00$ mkdir s_dirbash-3.00$ mkdir d_dirbash-3.00$ ls -ltotal 72drwxr-xr-x 2 oracle oinstall 512 8月 20 15:11 d_dirdrwxr-xr-x 2 oracle oinstall 512 8月 20 15:10 s_dir2、在Oracle上创建两个directorySQL> create directory source_dir as '/opt/oracle/kb/s_dir';Dire
10g闪回总结
10g闪回总结[@more@]10g闪回总结Oracle从9i就有了闪回这个新功能,在Oracle 10g中这个功能被大大增强。在Oracle 9i中只是以闪回查询的形式查看某一时间点上的数据,就是某一时刻的数据的快照,而不是在两个时间点之间的被更改数据的运行状态的表示,在Oracle 10g中就提供了这样的功能。优点闪回应该说是一个技术革新,比传统意义上的恢复更快更加简单方便。传统意义上的恢复需要还原数据库和数据文件,而这些数据文件则是在前一阶段备份而来的。然后在通过数据库日值在数据文件上的前滚来实现数据的每一次改变。这样的过程相对而言是比较慢
关于enqueue的一些认识
关于enqueue的一些认识[@more@]关于enqueue的一些认识我也谈谈自己的想法:请大家批评指正1、enqueue是实现lock的一个机制,之所以这样说,是因为相对于latch。2、对于每一个资源就有一个Resource Structure相对应。而且每一个资源有且不只一个Resource Structure和它对应,因为同一个资源,会有不同的类型的锁,例如表就有TM和TX类型。3、Resource Structure和Lock Structures只是enqueue物理实现的形式,4、Lock Structures是和回话有关系,当一个会话发出访问资源的请求的话,就会提出一个Lock Structures。5、Resource Structure和Loc
BUFFER CACHE
BUFFER CACHE[@more@]BUFFER CACHE数据缓存区的目的是减少磁盘IO的数量,因为数据是驻留在磁盘上,而我们在访问处理数据的时候,需要将被经常性访问的数据缓存在内存中,因为访问内存要远比访问磁盘快的多,但是数据缓存区是有限的,不可能所有的数据都放到这里面,这就要求数据库能够使用一种算法优化,来确定那些数据能够长时间放置在数据缓存区中,那些就要抛出出缺。数据缓存区的使用有以下的好处:1、 能够提供更加快速的访问数据库块的一种访问方式。2、 提供了一种处理同步块的改变请求的策略。3、 保存数据库块的一致读的多版本(
数据库和表空间数据移动
数据库和表空间数据移动[@more@]数据库和表空间数据移动跨平台可传输表空间在数据仓库之间简单的数据分布允许数据库从一个平台到另一个平台的迁移最小兼容水平源数据库和目标数据库必须兼容到10.0.0或者更高数据文件头是platform-aware在Oracle中有不同的endian的区别,不同的平台有不同的endian,究竟什么是endian,在网上找到关于Big-endian和Little-endian的区别,其实Big-endian和Little-endian就是字节排序。Big-Endian 和 Little-Endian 字节排序字节排序含义Big-Endian一个Word中的高位的Byte放在内存中这个Word区域的低地址处。Lit