junsansi的博客
自我介绍
切换风格
订阅我的Blog
博客日历
文章归档...
最新发表...
最新评论...
最多阅读文章...
最多评论文章...
博客统计...
网站链接...
资源
===========================================================
快速搭建streams表级复制环境
===========================================================

一、要求
1.初始化参数的修改
a.global_names必须设置为true,global_name=db_name+db_domain。
b.job_queue_processes必须>2
c.compatible,必须高于10.2.0,并且target中该参数值不能低于source database.
d.streams_pool_size,指定适当的大小,当然如果设置了sga_target,该参数也可由系统自动调节

2.source database必须启用归档模式
3.双机互相创建database link

 查看全文

junsansi 发表于:2008.09.02 16:56 ::分类: ( 三思笔记 ) ::阅读:(10次) :: 评论 (0) :: 引用 (0)
===========================================================
Solaris 10下安装ORACLE10G
===========================================================

注:#为root用户操作 $为oracle用户操作 ##为注释

一、系统要求

1、至少512M物理内存;检查命令:# /usr/sbin/prtconf | grep "Memory size"

2、交换空间的设置;检查命令:# /usr/sbin/swap -s

实际内存建议交换空间大小

-------------------------------------------

不超过1G2倍于内存

1G-2G1.5倍于内存

2G-8G与内存相同

超过8G0.75倍于内存

3、/tmp目录至少400M空闲空间;检查命令:# df -k /tmp

4、oracle软件所需空间大约3G,详细可见如下;检查命令:# df -k

企业版 2G空间

标准版 1.5G空间

自定义(最大) 2.5G空间

5、数据库文件默认所需空间1.2G左右(视你的实际情况而定);检查命令:# df -k

6、确认系统架构(主要确认是装32bit还是64bit版本);检查命令:# /bin/isainfo -kv

返回的结果应该是"32-bit i386 kernel modules"

 查看全文
junsansi 发表于:2008.08.28 16:54 ::分类: ( 三思笔记 ) ::阅读:(6次) :: 评论 (0) :: 引用 (0)
===========================================================
solaris下安装应用包~~
===========================================================

以top为例:

下载top安装包:
ftp://ftp.sunfreeware.com/pub/freeware/intel/10/top-3.6.1-sol10-x86-local.gz

解压缩
bash-3.00# gzip -d top-3.6.1-sol10-x86-local.gz

然后用pkgadd安装:
bash-3.00# pkgadd -d ./top-3.6.1-sol10-x86-local all

top默认安装到/usr/local/bin目录下,一般该目录并不在用户默认path中,两种解决方式:
a.修改用户path变量
b.创建一个链接:
bash-3.00# ln -s /usr/local/bin/top top

然后top即可使用。


junsansi 发表于:2008.08.25 16:53 ::分类: ( 三思笔记 ) ::阅读:(9次) :: 评论 (0) :: 引用 (0)
===========================================================
Oracle RAC之名词解惑~~
===========================================================

什么是RAC
传说中的RAC,做为我们本文的主角,其全称是Real Application Cluster,官方的中译是真正应用集群,听起来和叫起来都很别扭是不是,我们还是就叫它RAC吧。RAC并非是个新技术,其前身叫OPS(Oracle Parallel Server),从9i开始才改名叫RAC(回头有空俺再写篇blog跟大伙数道数道rac的前世今生),这属于oracle的老把戏了,它的不少产品都是边做边改名,比如Oracle Data Guard在9i之前叫做Standby,对于这些知识大家不妨也多了解了解,如果你的就业经历足够长,俺觉着你就一定能理解俺所说的,有时候资深并不代表着技术有多牛,而是说人家待的年头够久,对于历史那是相当熟悉啊,所以资深也能理解成资历的嘛,对于后来者而言怎样快速获得资历呢,黑黑,你也去熟悉历史呗(en,俺晓得,俺又跑题鸟)~~~

RAC不仅仅是个组件,就我理解,它更应该被称之为一种体系,因为它不是单单由某项特性组成,而是一堆特性应用的集合。该体系实现了多个实例同时访问和管理同一数据库,多个实例可以存在于不同节点,也可以在相同的节点上(从提升性能的角度来看,并不推荐这样),彼此通过内网连接交换数据,并且能够自动平衡负载,如果其中某个节点发生故障,RAC能够通过后台的监控进程将连接自动切换到另外一个或多个节点上,从而实现应用的无缝切换,对实例的高可用提供保护。

因此,我们也能够得出结论,RAC保护的是实例,而并非数据,这点一定要明确(对数据进行冗余的特性在oracle中叫Data guard,详细请见:一步一步学Dataguard)。

什么是CRS
Cluster Ready Service是oracle集群件的软件架构,提到架构我们一般都会下意识觉着,哇这东西真牛啊,事实也确实如此,CRS可以说是RAC环境稳定运行的基础,但平常呢你又感受不到它的存在。做为框架,它有多个组成部分,包括一系列的进程和一堆的服务,后面我们将会一一了解,总之它不是一个在战斗,它不是一个人。。。

什么是CVU
全称Cluster Verification Utility,CVU是oracle专门为RAC提供的一个检查工具,目的是期望在安装前就你的安装环境进行检查,看看软硬件环境是否已就绪,该工具功能非常强大,通过搭配不同参数可以检查安装RAC所需环境的方方面面(后文详绪)。不过,该工具所显示的检查结果也仅供参考,具体情况需要具体分析,并非说其检查报错,你就不能成功配置RAC了。另外由于oracle自身的一些bug等原因,可能也会造成CVU给出错误的信息。

什么是OUI
说起OUI大家应该都不会陌生,其全称是Oracle Universal Installer,就是图形化的安装助手,这个就不多说什么了。

什么是ASM
做为oracle当前主推的一种存储特性,在oracle官方文档中处处都能看到Oracle recommends using ASM之类的字眼,其实这并不奇怪,就像刚生完孩子的母亲抱着孩子出门遛弯,逢人就想跟人说:看看我家孩子多漂亮的心理是一样的,毕竟是人家自己的东西,如果它自己都不推广还能靠谁去推广呢,与何况这里头还有着更重要的经济利益和长远战略,oracle不仅建议你存储用asm,它还有n多别的建议,比如管理用em,存储用asm,表空间管理用local,undo管理用auto等等。扯远了,回到主题,啥是ASM呢,其全称是:Automatic Storage Management。可以把它理解成oracle自己设计的,用软件实现的,用于存储的黑匣子。

什么是OMF
Oracle Manage File 的简写,一般在创建数据库-指定数据文件路径时你会见到它的身影。一旦你选择了该种路径方式,在创建表空间,控制文件,日志文件时就不需要指定位置和文件名了,Oracle会根据一些初始化参数的设置自动分配和命名,其通常与ASM搭配使用。

什么是OCR
Oracle Cluster Registry用于保存集群和数据库的配置信息,做为CRS的关键组件,,因此,OCR必须保存于共享磁盘(但不能是ASM,asm毕竟只是一个软件实现的集群文件系统,在读取集群信息时,可能连asm实例都还没启动呢),大概需要100M左右的空间。

什么是Voting Disk
用于保存集群中各节点信息并确保各节点的一至性状态,同样也必须保存于共享磁盘(也不能是asm),大概需要20M左右的空间。

什么是VIP
即虚拟IP,Oracle推荐客户端连接时通过指定的虚拟IP连接,这也是Oracle10g新推出的一个特性。其本质目的是为了实现应用的无停顿(虽然目前还是有点小问题,但离目标已经非常接近)。用户连接虚IP,这个IP并非绑定于网卡,而是由oracle进程管理,一旦某个用户连接的虚IP所在实例宕机,oracle会自动将该IP映射到状态正常的实例,这样就不会影响到用户对数据库的访问,也无须用户修改应用。


junsansi 发表于:2008.08.15 13:01 ::分类: ( 三思笔记 ) ::阅读:(23次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习oracle flashback特性(3.2)--Flashback Database操作示例
===========================================================

Flashback database即可以在rman中执行,也可以在sql*plus中执行,其命令格式都是一样的,在这个示例中,我们所有操作都是在sql*plus中执行

 查看全文
junsansi 发表于:2008.07.09 13:19 ::分类: ( 三思笔记 ) ::阅读:(82次) :: 评论 (1) :: 引用 (0)
===========================================================
全面学习oracle flashback特性(3.1)--Flashback Database介绍
===========================================================

如果说flashback query可用来恢复指定时间点的记录,flashback table可用来恢复被删除或指定时间点的表,而flashback database,则直接提供一个数据库级别的恢复,可将数据库恢复到指定的时间点,相对于前两者,其粒度是最大的。

数据库级别的恢复,大家可能会想到我们通常所用的方式:借助备份。那借助flashback database来做恢复相比通过备份恢复,有哪些优势呢?三思个人看法认为主要有两点:速度和恢复方式。

 查看全文
junsansi 发表于:2008.07.08 14:22 ::分类: ( 三思笔记 ) ::阅读:(79次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习oracle flashback特性(2.3)--Flashback Table之注意事项
===========================================================

a.基于undo的表恢复,被恢复的表必须启用row movement,不然会报ORA-08189错误,关于row movement的相关知识,三思在"全面学习分区表及分区索引"一文中有过阐述,这里就不多费口舌了。

 查看全文
junsansi 发表于:2008.07.07 13:36 ::分类: ( 三思笔记 ) ::阅读:(58次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习oracle flashback特性(2.2)--Flashback Table之从UNDO中恢复
===========================================================

某些时候,我们要处理的表并不是被意外删除,而是被反复修改过多次,希望能回复到之前的某个时间点,通过前面的学习,你一定会说没问题啊,借助flashback query就可以,没错,flashback query确实可以,但flashback query只是查询出记录,如果想做恢复还需要写出相应的insert或update,也许还需要相当多的where条件做判断,一个不甚,可能恢复的数据就是错误的。老板又没在跟儿前站着,我们没必要在这个时刻用这种方式展示我们娴熟的指法,因此,我们需要更高效更严谨更简便的方式:flashback table tbname to scn/timestamp,助你达成梦想,详情请咨询,o错了,应该是详情请接着往下看。

 查看全文
junsansi 发表于:2008.07.04 13:48 ::分类: ( 三思笔记 ) ::阅读:(51次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习oracle flashback特性(2.1)--Flashback Table之RECYCLEBIN
===========================================================

简单来讲,如果我们把flashback query看做是恢复记录,则flashback table就是用来恢复表的(由于记录是以表为载体存储,因此flashback table也应该看做是恢复记录,只不过相对于flashback query而言,其粒度更大一些),同时呢,在Oracle10g中又新引入了一个叫做Recycle Bin的功能(主要针对表及其关联的对象,比如索引约束啥的),被删除的表并非真正删除,而是先通过修改数据字典的方式,将其改名并放入recyclebin,如果要恢复recycle bin中对象的话,借助flashback table是最简便的方式。除此之外,flashback table也提供了类似flashback query中as of scn/timestamp的方式,借助undo数据,直接将现有的表恢复到某个指定的时间点或scn时的状态。

 查看全文
junsansi 发表于:2008.07.03 13:11 ::分类: ( 三思笔记 ) ::阅读:(54次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习oracle flashback特性(1.5)--闪回查询之制约因素
===========================================================

制约Flashback Query特性应用的有三方面的因素~

 查看全文
junsansi 发表于:2008.07.02 15:13 ::分类: ( 三思笔记 ) ::阅读:(62次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习oracle flashback特性(1.4)--闪回查询之Transaction query
===========================================================

Flashback的事务查询是通过查询flashback_transaction_query视图来实现的。通过查询该视图能够获得一些事务执行时的信息,甚至包括UNDO语句。

 查看全文
junsansi 发表于:2008.07.01 15:11 ::分类: ( 三思笔记 ) ::阅读:(54次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习oracle flashback特性(1.3)--闪回查询之Versions between
===========================================================

Versions between版本查询:

功能更加强大,通过versions between能够查看指定时间段内undo表空间中记录的不同版本(注意,只包括被提交的记录)。

 查看全文
junsansi 发表于:2008.06.30 13:00 ::分类: ( 三思笔记 ) ::阅读:(57次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习oracle flashback特性(1.2)--闪回查询之As of scn
===========================================================

仍以前文中创建的表为例,既然是基于scn的查询,我们首先就需要得到scn,这里我们通过dbms_flashback.get_system_change_number函数来获取oracle当前的scn,之后再执行数据的修改操作。

 查看全文
junsansi 发表于:2008.06.27 12:51 ::分类: ( 三思笔记 ) ::阅读:(120次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习oracle flashback特性(1.1)--闪回查询之As of timestamp
===========================================================

Flashback是ORACLE自9i就开始提供的一项特性,在9i中利用oracle查询多版本一致的特点,实现从回滚段中读取表一定时间内操作过的数据,可用来进行数据比对,或者修正意外提交造成的错误数据,该项特性也被称为Flashback Query。在10g中Flashback又得到了相当大的增强,利用回收站和闪回区的特性实现快速恢复删除表(Flashback Table)或做数据库时间点恢复(Flashback Database)的功能。本文将分三个部分分别介绍!

提示:

关于flashback这个词的翻译呢,有很多:有叫回闪的,有叫闪回的。虽然三思个人认为相对来说闪回更通行一些,但在本系列文章中,我将坚持不做翻译,而直称为flashback。我觉着某些词汇不应做翻译,一方面是由于找不着合适的词来做转换,另一方面也有使用习惯的原因,比如oracle公司虽然大家都知道其中文名称叫甲骨文,但日常交流中大家都习惯说oracle就是这个道理。

 查看全文
junsansi 发表于:2008.06.26 09:25 ::分类: ( 三思笔记 ) ::阅读:(146次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware安装oracle10g RAC(9)-创建数据库和asm实例
===========================================================

千辛万苦,终于到了这一步啦~~~~

本节演示数据库和asm实例的创建~~

 查看全文

junsansi 发表于:2008.06.25 13:23 ::分类: ( 三思笔记 ) ::阅读:(59次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware安装oracle10g RAC(8)-安装database软件
===========================================================

成功完成clusterware安装之后,你距离成功安装rac就已经不远了,本节继续演示安装database软件

 查看全文

junsansi 发表于:2008.06.24 13:27 ::分类: ( 三思笔记 ) ::阅读:(49次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware安装oracle10g RAC(7.3)-安装Clusterware
===========================================================

安装RAC clusterware第三步,这一步可能会遇到一些问题,最主要的表现是在最后一台节点执行root.sh时,本文列出了最有可能遇到的错误,和可能的处理方式

 查看全文

junsansi 发表于:2008.06.23 14:01 ::分类: ( 三思笔记 ) ::阅读:(102次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware安装oracle10g RAC(7.2)-安装Clusterware
===========================================================
安装clasterware2,主要演示软件安装及复制过程~ 查看全文
junsansi 发表于:2008.06.23 13:51 ::分类: ( 三思笔记 ) ::阅读:(61次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware安装oracle10g RAC(7.1)-安装Clusterware
===========================================================

本步演示安装clusterware,由于可能遇到的问题较多,本步演示分三篇来介绍~~

注意,在这项配置中,除非特别说明,所有操作都是基于oracle用户的。

 查看全文
junsansi 发表于:2008.06.23 13:47 ::分类: ( 三思笔记 ) ::阅读:(73次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware在linux下安装oracle10g RAC(6)-配置Clusterware安装环境
===========================================================

本节演示如何配置clusterware的安装环境

 查看全文

junsansi 发表于:2008.06.20 12:39 ::分类: ( 三思笔记 ) ::阅读:(78次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware在linux下安装oracle10g RAC(5)-配置第2台节点
===========================================================

关闭节点1,通过vmware复制一个新节点出来,操作非常简单,如果希望界面方式的话,就点击Clone this virtual machine,按照提示下一步即可。如果希望更快捷,直接将rac1目录复制一份到rac2,然后修改.vmx文件中的配置,将路径rac1相关的改成rac2,将RHEL5_NODE1改成RHEL5_NODE2,然后用vmware打开rac2目录中的vmx文件即可,这里三思采用的就是这种方式。

 查看全文
junsansi 发表于:2008.06.19 12:49 ::分类: ( 三思笔记 ) ::阅读:(87次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware在linux下安装oracle10g RAC(4)-配置linux环境
===========================================================

以下脚本操作较多,不再频繁截图,仅贴出操作脚本供参考。

另,所有操作如非特别注明,均为root用户(注意看操作符前缀),建议通过ssh远程操作。

 查看全文

junsansi 发表于:2008.06.18 13:50 ::分类: ( 三思笔记 ) ::阅读:(166次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware在linux下安装oracle10g RAC(3)-安装linux系统
===========================================================

点击Power ON,即菜单上面绿色的三角图标,启动虚拟机~~~

 查看全文
junsansi 发表于:2008.06.16 14:12 ::分类: ( 三思笔记 ) ::阅读:(110次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware在linux下安装oracle10g RAC(2)-设置vmware环境
===========================================================
用vmware主要是创建虚拟机,这个过程比较简单。 查看全文
junsansi 发表于:2008.06.13 16:20 ::分类: ( 三思笔记 ) ::阅读:(136次) :: 评论 (0) :: 引用 (0)
===========================================================
手把手教你用VMware在linux下安装oracle10g RAC(1)
===========================================================

提示:

本文在写作过程中除脚本配置及执行输出外,全程图文,如果你的操作系统,oracle版本与本例中相同,按照步骤操作一定可以配置成功。如果你在配置过程中出错,注意查看图文下方的提示信息,对于某些常见错误或俺在安装过程中遇到的错误,俺都会在提示信息中注明!

但是~~rac安装非常繁琐也很复杂,影响和制约的因素非常多,有时甚至系统版本稍有差异安装过程就会有不同,因此本文中提到的错误或bug不过沧海一栗罢了,如果你走狗屎大运遇到了本文没有提示到的错误信息,黑黑,别灰心,google吧,我相信你一定能够解决问题,收获成功的喜悦,迈向成长的新高峰:)

 查看全文
junsansi 发表于:2008.06.12 18:46 ::分类: ( 三思笔记 ) ::阅读:(125次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(17)--其它索引分区管理操作
===========================================================

其它索引分区管理操作

 查看全文

junsansi 发表于:2008.06.03 12:58 ::分类: ( 三思笔记 ) ::阅读:(27次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(16)--增加和删除索引分区
===========================================================

从本节开始,介绍索引分区的管理操作~~

本节将分别介绍如何增加和删除索引分区~

 查看全文

junsansi 发表于:2008.05.30 13:02 ::分类: ( 三思笔记 ) ::阅读:(46次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(15)--修改表分区属性和模板
===========================================================

本节主要介绍:

修改表分区默认属性

修改分区当前属性

修改表子分区模板

 查看全文

junsansi 发表于:2008.05.29 13:09 ::分类: ( 三思笔记 ) ::阅读:(33次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(14)--截断、移动和重命名
===========================================================

本节分三个主题分别讲解truncate partition,move partition和rename partition

 查看全文

junsansi 发表于:2008.05.28 12:48 ::分类: ( 三思笔记 ) ::阅读:(37次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(13)--分隔表分区
===========================================================

如果你对我们前面讲到过的merge partition还有印象的话,那么学习Split partition也不会遇到什么障碍,split partition的功能与merge partition功能正好相反:后者是将两个全区合并成一个,前者则是将一个分区分隔成两个。其用途非常广泛,比如通常见你发现某个分区过大,你就可以通过这种方式将该分区分解成多个小分区,对我而言最常用到的,当然还是split maxvalue/default的分区。

 查看全文
junsansi 发表于:2008.05.27 09:56 ::分类: ( 三思笔记 ) ::阅读:(34次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(12)--修改list表分区
===========================================================

对于已存在的list表分区修改包含两类操作:添加value值和删除value值,下面分别介绍:

 查看全文

junsansi 发表于:2008.05.23 12:49 ::分类: ( 三思笔记 ) ::阅读:(35次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(11)--合并表分区
===========================================================

合并两个分区成一个,适用于除hash之外的其它所有分区形式(hash分区有coalesce partition的嘛,前头刚刚讲过)。

语法很简单:alter table tbname merge partitions/subpartitions pt1,pt2 into partition/subpartition pt3;

同样也支持update indexes子句以避免单独执行造成索引失效的问题。

 查看全文
junsansi 发表于:2008.05.22 09:47 ::分类: ( 三思笔记 ) ::阅读:(40次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(10)--交换分区
===========================================================

直白的说就是迁移数据。迁移数据的方式很多,为什么要使用exchange partition的方式呢,表急,听三思慢慢道来。

 查看全文
junsansi 发表于:2008.05.20 11:07 ::分类: ( 三思笔记 ) ::阅读:(40次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(9)--删除表分区
===========================================================

删除表分区(drop partition)

删除表分区包含两种操作,分别是:

Ø 删除分区:alter table [tbname] drop partition [ptname];

Ø 删除子分区:alter table [tbname] drop subpartition [ptname];

除hash分区和hash子分区外,其它的分区格式都可以支持这项操作。

 查看全文
junsansi 发表于:2008.05.19 15:35 ::分类: ( 三思笔记 ) ::阅读:(59次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(8)--增加和收缩表分区
===========================================================

增加表分区适应于所有的分区形式,其语法是alter table tbname add partition .....

但是,需要注意对于像list,range这种存在范围值的分区,所要增加的分区值必须要大于当前分区中的最大值(如果当前存在maxvalue或default的分区,add partition会报错,这种情况只能使用split,后面会讲到),hash分区则无此限制。

 查看全文
junsansi 发表于:2008.05.16 12:50 ::分类: ( 三思笔记 ) ::阅读:(49次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(7)--怎样管理
===========================================================

对于分区的表的操作很多,其中某些操作仅针对某些分区有效,为了避免在演示过程中浪费过多口水标注哪些操作适用于哪些分区,咱们先在这儿列个表,哪个操作适用于哪种分区格式具体可以先参考下面这个表格:

 查看全文
junsansi 发表于:2008.05.15 12:56 ::分类: ( 三思笔记 ) ::阅读:(48次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(6)--创建range-list组合分区
===========================================================
Range-list组合分区的创建与range-hash极为相似,只是子分区为list分区,当然同样也可以应用分区模板,下面也举一个示例: 查看全文
junsansi 发表于:2008.05.14 12:48 ::分类: ( 三思笔记 ) ::阅读:(36次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(5)--创建range-hash组合分区
===========================================================

创建range-hash组合分区

组合分区相对于普通分区,语法上稍稍复杂了一些,但也正因如此,其子分区的创建可以非常灵活,下面分别举几个例子(注:仅示例,并非穷举所有形式)

 查看全文
junsansi 发表于:2008.05.13 09:21 ::分类: ( 三思笔记 ) ::阅读:(56次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(4)--创建list分区
===========================================================
list分区与range分区非常相似~~ 查看全文
junsansi 发表于:2008.05.12 09:37 ::分类: ( 三思笔记 ) ::阅读:(47次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(3)--创建hash分区
===========================================================
hash分区的语法看起来比range复杂,其实使用起来比range更简单~~~ 查看全文
junsansi 发表于:2008.05.08 13:02 ::分类: ( 三思笔记 ) ::阅读:(34次) :: 评论 (0) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(2)--创建range分区
===========================================================

HOW

一、如何创建

如果想对某个表做分区,必须在创建表时就指定分区,我们可以对一个包含分区的表中的分区做修改,但不能直接将一个未分区的表修改成分区表(起码在10g是不行的,当然你可能会说,可以通过在线重定义的方式,但是这不是直接哟,这也是借助临时表间接实现的)。

创建表或索引的语法就不说了,大家肯定比我还熟悉,而想在建表(索引)同时指定分区也非常容易,只需要把创建分区的子句放到";"前就行啦,同时需要注意表的row movement属性,它用来控制是否允许修改列值所造成的记录移动至其它分区存储,有enable|disable两种状态,默认是disable row movement,当disable时,如果记录要被更新至其它分区,则更新语句会报错。

下面分别演示不同分区方式的表和索引的创建:

 查看全文
junsansi 发表于:2008.05.07 09:21 ::分类: ( 三思笔记 ) ::阅读:(76次) :: 评论 (2) :: 引用 (0)
===========================================================
全面学习分区表及分区索引(1)
===========================================================

关于分区表和分区索引(About Partitioned Tables and Indexes)

对于10gR2而言,基本上可以分成几类:

v R ange(范围)分区

v H ash(哈希)分区

v L ist(列表)分区

v 以及组合分区:R ange- H ash, R ange- L ist

对于表而言(常规意义上的堆组织表),上述分区形式都可以应用(甚至可以对某个分区指定compress属性),只不过分区依赖列不能是lob,long之类数据类型,每个表的分区或子分区数的总数不能超过1023个。

对于索引组织表,只能够支持普通分区方式,不支持组合分区,常规表的限制对于索引组织表同样有效,除此之外呢,还有一些其实的限制,比如要求索引组织表的分区依赖列必须是主键才可以等。

注:本篇所有示例仅针对常规表,即堆组织表!

对于索引,需要区分创建的是全局索引,或本地索引:

l 全局索引(global index):即可以分区,也可以不分区。即可以建range分区,也可以建hash分区,即可建于分区表,又可创建于非分区表上,就是说,全局索引是完全独立的,因此它也需要我们更多的维护操作。

l 本地索引(local index):其分区形式与表的分区完全相同,依赖列相同,存储属性也相同。对于本地索引,其索引分区的维护自动进行,就是说你add/drop/split/truncate表的分区时,本地索引会自动维护其索引分区。

Oracle建议如果单个表超过2G就最好对其进行分区, 对于大表创建分区 的好处 是显而易见的,这里不多论述why,而将重点放在when以及how。

WHEN

一、When使用Range分区

Range分区呢是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存放到列值所在的range分区中,比如按照时间划分,2008年1季度的数据放到a分区,08年2季度的数据放到b分区,因此在创建的时候呢,需要你指定基于的列,以及分区的范围值,如果某些记录暂无法预测范围,可以创建maxvalue分区,所有不在指定范围内的记录都会被存储到maxvalue所在分区中,并且支持指定多列做为依赖列,后面在讲how的时候会详细谈到。

二、When使用Hash分区

通常呢,对于那些无法有效划分范围的表,可以使用hash分区,这样对于提高性能还是会有一定的帮助。hash分区会将表中的数据平均分配到你指定的几个分区中,列所在分区是依据分区列的hash值自动分配,因此你并不能控制也不知道哪条记录会被放到哪个分区中,hash分区也可以支持多个依赖列。

三、When使用List分区

List分区与range分区和hash分区都有类似之处,该分区与range分区类似的是也需要你指定列的值,但这又不同与range分区的范围式列值---其分区值必须明确指定,也不同与hash分区---通过明确指定分区值,你能控制记录存储在哪个分区。它的分区列只能有一个,而不能像range或者hash分区那样同时指定多个列做为分区依赖列,不过呢,它的单个分区对应值可以是多个。

你在分区时必须确定分区列可能存在的值,一旦插入的列值不在分区范围内,则插入/更新就会失败,因此通常建议使用list分区时,要创建一个default分区存储那些不在指定范围内的记录,类似range分区中的maxvalue分区。

四、When使用组合分区

如果某表按照某列分区之后,仍然较大,或者是一些其它的需求,还可以通过分区内再建子分区的方式将分区再分区,即组合分区的方式。

组合分区呢在10g中有两种:range-hash,range-list。注意顺序哟,根分区只能是range分区,子分区可以是hash分区或list分区。

提示:11g在组合分区功能这块有所增强,又推出了range-range,list-range,list-list,list-hash,这就相当于除hash外三种分区方式的笛卡尔形式都有了。为什么会没有hash做为根分区的组合分区形式呢,再仔细回味一下第二点,你一定能够想明白~~。


junsansi 发表于:2008.05.05 13:11 ::分类: ( 三思笔记 ) ::阅读:(40次) :: 评论 (0) :: 引用 (0)
===========================================================
My_add_months,开发版nyfor版版的小游戏:)
===========================================================

需求很简单,就是要模拟出 Oracle 中 Add_Months 函数功能的一个自定义函数,函数中不能够调用任何oracle日期相关的函数,一切要靠自己计算,不考虑效率,只要求代码尽可能短~

就像nyfor版版说的,过程很有意思,就像玩游戏~~

只是,这个游戏花了我太多的时间了,从最初的1xxx字节到现在的405字节,这一个礼拜的心思全花在这上头了,周末也木有过好,晚上睡觉都在想着哪能再优化个把字节~~~

眼瞅5.1都到了,俺不玩鸟,给再多pub$俺也不玩鸟,俺要过个好五一啊~~~,现将代码贴出,供有心人士参考,希望能助有心人,踩着俺的肩膀更上一层楼~~

create or replace function my_add_months(p_date_string varchar2,
p_months number)
return varchar2 as
n int := p_date_string;
s int := 100;
y int := n / s / s;
m int := mod(n / s, s);
d int := mod(n, s);
begin
if d > 30 or d = 30 and m in (4, 6, 9, 11) or
m = 2 and d || mod(y, 4) > 280 then
d := 31;
end if;

n := m + p_months;
m := MOD(MOD(n, 12) + 11, 12) + 1;
y := Y + (n - m) / 12;

return y * s * s + m * s + case when m in (4, 6, 9, 11) and d > 30 then 30
when m != 2 or d < 29 then d
when mod(y / s, 4) = 0 or mod(y, 4) = 0 and mod(y, s) > 0 then 29
else 28 end;
end;

详情可见: 最小源代码擂台(测试结果收集中...)


junsansi 发表于:2008.04.30 11:19 ::分类: ( 三思笔记 ) ::阅读:(20次) :: 评论 (0) :: 引用 (0)
===========================================================
升级oracle10g到10.2.0.4步骤简记~
===========================================================

近日,将本机windows平台下10gr2升级至最新的patchset4,简单记录一下升级过程:

1.下载补丁包并解压

2.检查环境变量,停止相关服务,包括OracleService(注意是停止服务,不是仅把库shutdown就可以了的),Listner,ASM(如果用了的话),RAC节点等等

3.备份数据库,冷备热备均可,但必须是完全备份。推荐冷备,一旦有问题恢复也快。

4.安装补丁包:

执行setup,按照提示点击下一步(如果升级程序默认指定的路径信息不准确的话注意修正)

升级过程中多了一个Oracle Configuration Manager,图:001

不启用,直接下一步,然后安装,图:002

安装完成之后,点击退出,软件升级结束。

5.下面升级数据库

为了省事儿,这里我们选择通过界面方式进行数据库的升级,执行DBUA,基本不需要过多操作,直点下一步就是,不过注意在第三步的地方如果开了归档,最好选择升级期间关闭归档功能,避免不必要的磁盘空间占用。图:003

这个过程会比较长,耐心等候就是,如果一切顺利,你就能看到这个界面了:图004

6.升级完成,开个sqlplus连接进去看看

SQL> select *from v$version;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod

PL/SQL Release 10.2.0.4.0 - Production

CORE 10.2.0.4.0 Production

TNS for 32-bit Windows: Version 10.2.0.4.0 - Production

NLSRTL Version 10.2.0.4.0 - Production

竣工~~~


junsansi 发表于:2008.04.11 09:49 ::分类: ( 三思笔记 ) ::阅读:(79次) :: 评论 (0) :: 引用 (0)
===========================================================
一步一步学DataGuard(26)RMAN备份来创建之实践2
===========================================================

standby已经创建,最后的工作,完成善后操作~~~

 查看全文

junsansi 发表于:2008.04.10 12:43 ::分类: ( 三思笔记 ) ::阅读:(59次) :: 评论 (0) :: 引用 (0)
===========================================================
一步一步学DataGuard(25)RMAN备份来创建之实践
===========================================================

连载第25篇

目标:通过rman备份,在同一台服务器创建standby,primary数据库名为jssweb,要创建的standby,db_unique_name命名为jssrman,因为是在同一台服务器,所以需要对standby的数据文件和日志文件路径做下重定义,这里我们选择通过初始化参数的形式重定义文件路径。

 查看全文
junsansi 发表于:2008.04.09 12:31 ::分类: ( 三思笔记 ) ::阅读:(66次) :: 评论 (1) :: 引用 (0)
===========================================================
一步一步学DataGuard(24)RMAN备份来创建之热身
===========================================================

连载第24篇

如果你看过三思之前的几个笔记系列,那么对于rman想必已经非常熟悉,操作这个必然也不成问题,如果你还没有看过,建议你先回去看看,然后再回来操作必然也没有问题,如果你一定不准备看,没关系,只要你严格按照实践部分的步骤操作,我相信你一定也可以创建成功,操作应该也没有问题,不过如果这样你也觉着没有问题,那么我要告诉你,可能就这是最大的问题:不知道做过什么,不知道该做什么,不知道为什么要做,一旦需求稍变,你甚至什么都不敢做。