haijiang的博客

欢迎来到haijiang的博客>>   | 首页 资源中心 | 一般分类 | oracle数据库系统篇 | aix | linux | 品味人生 | ITPUB论坛

Oracle中利用Rowid查找和删除表中重复记录

发表人:haijiang | 发表时间: 2008年二月26日, 20:43

平时工作中可能会遇到当试图对库表中的某一列或几列创建唯一索引时,系统提示 ORA-01452 :不能创建唯一索引,发现重复记录。   下面总结一下几种查找和删除重复记录的方法(以表CZ为例):   表CZ的结构如下:   SQL> desc cz   Name Null? Type   C1 NUMBER(10)   C10 NUMBER(5)   C20 VARCHAR2(3)   删除重复记录的方法原理:   (1).在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。   (2).在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中那些具有最大rowid的就可以了,其余全部删除。   重复记录判断的标准是:   C1,C10和C20这三列的值都相同才算是重复记录。   经查看表CZ总共有16条记录:   SQL>set pagesize 100   SQL>select * from cz;   C1 C10 C20   1 2 dsf   1 2 dsf   1 2 dsf   1 2 dsf   2 3 che   1 2 dsf   1 2 dsf   1 2 dsf   1 2 dsf   2 3 che   2 3 che   2 3 che   2 3 che   3 4 dff   3 4 dff   3 4 dff   4 5 err   5 3 dar   6 1 wee   7 2 zxc   20 rows selected.   1.查找重复记录的几种方法:   (1).SQL>select * from cz group by c1,c10,c20 having count(*) >1;   C1 C10 C20   1 2 dsf   2 3 che   3 4 dff   (2).SQL>select distinct * from cz;   C1 C10 C20   1 2 dsf   2 3 che   3 4 dff   (3).SQL>select * from cz a where rowid=(select max(rowid) from cz where c1=a.c1 and c10=a.c10 and c20=a.c20);   C1 C10 C20   1 2 dsf   2 3 che   3 4 dff   2.删除重复记录的几种方法:   (1).适用于有大量重复记录的情况(在C1,C10和C20列上建有索引的时候,用以下语句效率会很高):   SQL>delete cz where (c1,c10,c20) in (select c1,c10,c20 from cz group by c1,c10,c20 having count(*)>1) and rowid not in   (select min(rowid) from cz group by c1,c10,c20 having count(*)>1);   SQL>delete cz where rowid not in(select min(rowid) from cz group by c1,c10,c20);   (2).适用于有少量重复记录的情况(注意,对于有大量重复记录的情况,用以下语句效率会很低):   SQL>delete from cz a where a.rowid!=(select max(rowid) from cz b where a.c1=b.c1 and a.c10=b.c10 and a.c20=b.c20);   SQL>delete from cz a where a.rowiddelete from cz a where rowid create table test as select distinct * from cz; (建一个临时表test用来存放重复的记录)   SQL>truncate table cz; (清空cz表的数据,但保留cz表的结构)   SQL>insert into cz select * from test; (再将临时表test里的内容反插回来)   (4).适用于有大量重复记录的情况(Exception into 子句法):   采用alter table 命令中的 Exception into 子句也可以确定出库表中重复的记录。这种方法稍微麻烦一些,为了使用“excepeion into ”子句,必须首先创建 EXCEPTIONS 表。创建该表的 SQL 脚本文件为 utlexcpt.sql 。对于win2000系统和 UNIX 系统, Oracle 存放该文件的位置稍有不同,在win2000系统下,该脚本文件存放在$ORACLE_HOMEOra90rdbmsadmin 目录下;而对于 UNIX 系统,该脚本文件存放在$ORACLE_HOME/rdbms/admin 目录下。   具体步骤如下:   SQL>@?/rdbms/admin/utlexcpt.sql   Table created.   SQL>desc exceptions   Name Null? Type   ROW_ID ROWID   OWNER VARCHAR2(30)   TABLE_NAME VARCHAR2(30)   CONSTRAINT VARCHAR2(30)   SQL>alter table cz add constraint cz_unique unique(c1,c10,c20) exceptions into exceptions;   *   ERROR at line 1:   ORA-02299: cannot validate (TEST.CZ_UNIQUE) - duplicate keys found   SQL>create table dups as select * from cz where rowid in (select row_id from exceptions);   Table created.   SQL>select * from dups;   C1 C10 C20   1 2 dsf   1 2 dsf   1 2 dsf   1 2 dsf   2 3 che   1 2 dsf   1 2 dsf   1 2 dsf   1 2 dsf   2 3 che   2 3 che   2 3 che   2 3 che   3 4 dff   3 4 dff   3 4 dff   16 rows selected.   SQL>select row_id from exceptions;   ROW_ID   AAAHD/AAIAAAADSAAA   AAAHD/AAIAAAADSAAB   AAAHD/AAIAAAADSAAC   AAAHD/AAIAAAADSAAF   AAAHD/AAIAAAADSAAH   AAAHD/AAIAAAADSAAI   AAAHD/AAIAAAADSAAG   AAAHD/AAIAAAADSAAD   AAAHD/AAIAAAADSAAE   AAAHD/AAIAAAADSAAJ   AAAHD/AAIAAAADSAAK   AAAHD/AAIAAAADSAAL   AAAHD/AAIAAAADSAAM   AAAHD/AAIAAAADSAAN   AAAHD/AAIAAAADSAAO   AAAHD/AAIAAAADSAAP   16 rows selected.   SQL>delete from cz where rowid in ( select row_id from exceptions);   16 rows deleted.   SQL>insert into cz select distinct * from dups;   3 rows created.   SQL>select *from cz;   C1 C10 C20   1 2 dsf   2 3 che   3 4 dff   4 5 err   5 3 dar   6 1 wee   7 2 zxc   7 rows selected.   从结果里可以看到重复记录已经删除。

35岁前必须做好的十件事(转载)

发表人:haijiang | 发表时间: 2008年二月25日, 12:37

35岁是青春的后期,

35岁以后是收获的季节,

如果你没有资格说这句话,你将会憎恨自己。

所以在35岁以前,

在烂漫蓬勃的青春年华里,

你最好把下面十件事做好!

第一,学会本行业所需要的一切知识并有所发展。

已故零件大王布鲁丹在他35岁时,已经成为零件行业的领袖,

并且组建了年收入达千万美元的海湾与西部工业公司。

每个人在年轻时都可能有过彻夜不眠、刻苦攻读,这在20岁甚或30岁都没有问题,

但到了35岁,就不应该再为学习基本技能而大伤脑筋了。

35岁之前是一个人从事原始积累的阶段,35岁之后就应该勃发了。

第二,养成个人风格。

在35岁以前,找出你所喜欢的,不论是衣着或是爱好,哪怕是与众不同的小习惯也好。

20岁、30岁时你可以不断尝试、不断改变,但是到了35岁,你便要明确地建立个人风格。

一位男士或女士在事业中途改变自己的形象,就会让人觉得很不可靠。

你喜欢穿西装吗?好!就把西装当作你的商标吧!

办公桌上摆些鲜花会令你工作更有效率吗?那就每天都摆些鲜花吧!

第三,在感情生活方面平和安定。

在攀登事业的高峰时,如果私人生活不愉快,陷入感情危机,对你会产生很大的干扰,

甚至会逐渐令你对别的事物失去兴趣。那些在35岁之前私人生活已经平和安定的人,

一般都比生活动荡不安的人有更大的机会获得成功。因此,如果你想结束一段没有结果的恋情,

或者你想和女友结婚,那就赶快行动吧,免得把问题拖到生命的第35个春秋。

在35岁以后,你应该专注地看着你对事业的投资开始获利。

第四,明白自己的短处。

承认有些事情你的确做不好,或者不愿做。如果你讨厌数字而喜欢创作,

那就不要因为待遇高或顺从别人的期望而强迫自己做数字工作。在35岁之前,

一定要投入你所喜爱、所擅长的那种工作。否则,35岁之后必然会有一段郁郁不乐的日子。

而且,真正的成功可能因为活力的消退而丧失。

第五,知道自己的长处。

你应该知道自己擅长什么,并且清楚你所喜欢做而又做得比别人好的事情。

不管你目前担任什么样的角色,知道自己的长处对成功都很重要。
第六,储备辞职另谋生路的钱。

在这个多变的职业世界里,你也许不会永远在一个地方工作,

或者永远在一个位置上淋漓尽致地发挥自己,当你感到无法施展时,你很可能会想到辞职,

或者开辟第二职业,如果你事先储蓄了足够的钱,你便有了一个安全的后盾。

第七,建立人际关系网。

如果到了35岁你仍未建立起牢固的人际关系网,那你就有麻烦了。

这个人际关系网包括你的朋友、亲人,最低限度包括所有可以互相帮助的人。

这些人有的是你的同事,有的受过你的恩惠,有的你倾听过他们的问题,

有的你和他有着相同的爱好。人际关系网不是一朝一夕就能建立起来的,

它需要几年甚至十几年的培养。一个人在事业上、生活上的成功其实如同一个政党的成功,

你要有许多人散布在适当的地方,你可以依赖他们,他们也可以依赖你。

第八,学会授权他人。

许多人不肯或不能这样做,因此始终被钉在从属的职位上。授权他人是成功的一半,

一个事无巨细,不能将工作授权别人的人,注定会遇到极大的障碍。到了35岁,

你最好已成为这方面的专家。换言之,你懂得挑选合适的人并信任他们。

第九,学会在什么时候三缄其口。

因说话不小心而自毁前程的人,比因为任何其他原因丧失成功的人都多。

要学会保持沉默而且看起来机智--别人自然以为你知道的比实际还多。

别讲别人的闲话,别谈论你自己的大计,守口如瓶所赢得的声誉,

远比讲人闲话所带来的东西更加珍贵。你在事业上越成功,这一点就越重要。

第十,对人要忠诚。

如果你到了35岁仍未能建立起坚如磐石的忠诚信誉,这一缺点将会困扰你一生。

不忠诚的恶名必然会使你在事业上到处不受欢迎。

你不能靠暗箭伤人爬到事业的顶峰,而要靠在早期树立起来的真诚刚直和不可动摇的声誉。

35岁以前,忠诚只是投资;35岁以后,你会作为一个可以信赖的人收到忠诚的回报。

让你收益终身的四个人生故事(转载)

发表人:haijiang | 发表时间: 2008年二月25日, 12:32

1.误会:       

早年在美国阿拉斯加地方,有一对年轻人结婚,婚后生育,他的太太因难产而死,遗下一孩子。他忙生活,又忙于看家,因没有人帮忙看孩子,就训练一只狗,那狗聪明听话,能照顾小孩,咬着奶瓶喂奶给孩子喝,抚养孩子。有一天,主人出门去了,叫它照顾孩子。他到了别的乡村,因遇大雪,当日不能回来。第二天才赶回家,狗立即闻声出来迎接主人。他把房门开一看,到处是血,抬头一望,床上也是血,孩子不见了,狗在身边,满口也是血,主人发现这种情形,以为狗性发作,把孩子吃掉了,大怒之下,拿起刀来向着狗头一劈,把狗杀死了。之后,忽然听到孩子的声音,又见他从床下爬了出来,于是抱起孩子;虽然身上有血,但并未受伤。他很奇怪,不知究竟是怎么一回事,再看看狗身,腿上的肉没有了,旁边有一只狼,口里还咬着狗的肉;狗救了小主人,却被主人误杀了,这真是天下最令人惊奇的误会。       注:误会的事,是人往往在不了解、无理智、无耐心、缺少思考、未能多方体谅对方,反省自己,感情极为冲动的情况之下所发生。误会一开始,即一直只想到对方的千错万错;因此,会使误会越陷越深,弄到不可收拾的地步,人对无知的动物小狗发生误会,尚且会有如此可怕严重的后果,这样人与人之间的误会,则其后果更是难以想象。       

2.钉子:       

有一个男孩有着很坏的脾气,于是他的父亲就给了他一袋钉子;并且告诉他,每当他发脾气的时候就钉一根钉子在后院的围篱上。第一天,这个男孩钉下了37根钉子。慢慢地每天钉下的数量减少了。他发现控制自己的脾气要比钉下那些钉子来得容易些。终于有一天这个男孩再也不会失去耐性乱发脾气,他告诉他的父亲这件事,父亲告诉他,现在开始每当他能控制自己的脾气的时候,就拔出一根钉子。一天天地过去了,最后男孩告诉他的父亲,他终于把所有钉子都拔出来了。父亲握着他的手来到后院说:你做得很好,我的好孩子。但是看看那些围篱上的洞,这些围篱将永远不能回复成从前。你生气的时候说的话将像这些钉子一样留下疤痕。如果你拿刀子捅别人一刀,不管你说了多少次对不起,那个伤口将永远存在。话语的伤痛就像真实的伤痛一样令人无法承受。       注:人与人之间常常因为一些彼此无法释怀的坚持,而造成永远的伤害。如果我们都能从自己做起,开始宽容地看待他人,相信你(你)一定能收到许多意想不到的结果....帮别人开启一扇窗,也就是让自己看到更完整的天空....       

3.且慢下手:       

大多数的同仁都很兴奋,因为单位里调来一位新主管,据说是个能人,专门被派来整顿业务;可是日子一天天过去,新主管却毫无作为,每天彬彬有礼进办公室,便躲在里面难得出门,那些本来紧张得要死的坏份子,现在反而更猖獗了。他哪里是个能人嘛!根本是个老好人,比以前的主管更容易唬!四个月过去,就在真正努力为新主管感到失望时,新主管却发威了--坏份子一律开革,能人则获得晋升。下手之快,断事之准,与四月表现保守的他,简直像是全然换个人。       年终聚餐时,新主管在酒过三巡之后致词:“相信大家对我新到任期间的表现,和后来的大刀阔斧,一定感到不解,现在听我说个故事,各位就明白了:‘我有位朋友,买了栋带着大院的房子,他一搬进去,就将那院子全面整顿,杂草树一律清除,改种自己新买的花卉,某日原先的屋主回访,进门大吃一惊的问:那最名贵的牡丹哪里去了?我这位朋友才发现,他竟然把牡丹当草给铲了。后来他又买了一栋房子,虽然院子更是杂乱,他却是按兵不动,果然冬天以为是杂树的植物,春天里开了繁花;春天以为是野草的,夏天里成了锦蔟;半年都没有动静的小树,秋天居然红了叶。直到暮秋,它才真正认清哪些是无用的植物,而大力铲除,并使所有珍贵的草木得以保存。’说到这儿,主管举起杯来:‘让我敬在座的每一位,因为如果这办公室是个花园,你们就都是其间的珍木,珍木不可能一年到头开花结果,只有经过长期的观察才认得出啊!’”       

4.宽大:       

这是一个来自越战归来的士兵的故事。他从旧金山打电话给他的父母,告诉他们:“爸妈,我回来了,可是我有个不情之请。我想带一个朋友同我一起回家。”“当然好啊!”他们回答“我们会很高兴见到的。”不过儿子又继续下去“可是有件事我想先告诉你们,他在越战里受了重伤,少了一条胳臂和一只脚,他现在走投无路,我想请他回来和我们一起生活。”“儿子,我很遗撼,不过或许我们可以帮他找个安身之处。”父亲又接着说“儿子,你不知道自己在说些什么。像他这样残障的人会对我们的生活造成很大的负担。我们还有自己的生活要过,不能就让他这样破坏了。我建议你先回家然后忘了他,他会找到自己的一片天空的。”就在此时儿子挂上了电话,他的父母再也没有他的消息了。几天后,这对父母接到了来自旧金山警局的电话,告诉他们亲爱的儿子已经坠楼身亡了。警方相信这只是单纯的自杀案件。于是他们伤心欲绝地飞往旧金山,并在警方带领之下到停尸间去辨认儿子的遗体。那的确是他们的儿子没错,但惊讶的是儿子居然,只有一条胳臂和一条腿。故事中的父母就和我们大多数人一样。要去喜爱面貌姣好或谈吐风趣的人很容易,但是要喜欢那些造成我们不便和不快的人却太难了。我们总是宁愿和那些不如我们健康,美丽或聪明的人保持距离。然而感谢上帝,有些人却不会对我们如此残酷。他们会无怨无悔地爱我们,不论我们多么糟总是愿意接纳我们。今晚在你入睡之前,向上帝祷告请他赐给你力量去接纳他人,不论他们是怎么样的人;请他帮助我们了解那些不同于我们的人。每个人的心里都藏着一种神奇的东西称为“友情”,你不知道它究竟是如何发生何时发生,但你却知道它总会带给我们特殊的礼物。你也会了解友情是上帝给我们最珍贵的赠与!朋友就像是稀奇的宝物。他们带来欢笑,激励我们成功。他们倾听我们内心的话,与我们分享每一句赞美。他们的心房永远为我们而敞开。现在就告诉你的朋友你有多在乎他们。       

试想:朋友,您一路看下来之后;一定有很深的感触吧。那么,在对别人有所决定与判断之前,首先,请想想这是否是一个“误会”,然后,请考虑您是否一定要钉下这个“钉子”,如果可以的话,请“且慢下手”。因为,当您对别人“宽大”之时,即是对您自己宽大。


f5的基本操作

发表人:haijiang | 发表时间: 2008年一月31日, 10:15

F5负载均衡器简明配置手册

负载均衡器通常称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。

一、F5配置步骤:
1、F5组网规划
(1)组网拓朴图(具体到网络设备物理端口的分配和连接,服务器网卡的分配与连接)
(2)IP地址的分配(具体到网络设备和服务器网卡的IP地址的分配)
(3)F5上业务的VIP、成员池、节点、负载均衡算法、策略保持方法的确定

2、F5配置前的准备工作
(1)版本检查
f5-portal-1:~# b version
Kernel:
BIG-IP Kernel 4.5PTF-07 Build18
(2)时间检查--如不正确,请到单用户模式下进行修改
f5-portal-1:~# date
Thu May 20 15:05:10 CST 2004
(3)申请license--现场用的F5都需要自己到F5网站上申请license

3、F5 的通用配置
(1)在安全要求允许的情况下,在setup菜单中可以打开telnet及ftp功能,便于以后方便维护
(2)配置vlan unique_mac选项,此选项是保证F5上不同的vlan 的MAC地址不一样。在缺省情况下,F5的各个vlan的MAC地址是一样的,建议在配置时,把此项统一选择上。可用命令ifconfig –a来较验
具体是system/Advanced Properties/vlan unique_mac
(3)配置snat any_ip选项选项,此选项为了保证内网的机器做了snat后,可以对ping的数据流作转换。Ping是第三层的数据包,缺省情况下F5是不对ping的数据包作转换,也就是internal vlan的主机无法ping external vlan的机器。(注意:还可以采用telnet来验证。)
具体是system/Advanced Properties/snat any_ip

4、F5 的初始化配置
建议在对F5进行初始时都用命令行方式来进行初始化(用Web页面初始化的方式有时会有问题)。登录到命令行上,运行config或setup命令可以进行初始化配置。初次运行时会提示一些license的信息。
default:~# config

5、F5双机切换监控配置(有F5双机时需要)
(1)在web页面中选择相应的vlan,在arm failsafe选择则可。Timeout为从F5收不到包的时间起,经过多长时间就发生切换。此配置不能同步,需要在F5的主备机上同时配置。每个vlan都可以配置vlan arm failsafe。
具体在Network下
(2)在web页面中选择system,在redundant properties中把gateway failsafe选择则可。Router是需要监控的地址。此配置不能同步,需要在F5的主备机上同时配置。一套F5上只能配置一个gateway failsafe
具体在system/redundant properties/gateway failsafe

6、F5 MAC masquerade配置
Mac Masquerading是F5的Shared IP Address (Floating)的MAC地址,F5如果不配置此项,则shared IP Address的MAC地址与每台F5的vlan self IP Address的MAC地址是一样的。
一般服务器是以shared IP Address为网关,在两台F5上都配置了Mac Masquerade(相同的MAC地址),这样当F5发生切换后,服务器上shared IP address的MAC不变,保证了业务的不中断
具体在Network下

7、F5的pool配置
(1)在配置工具Web页面的导航面板中选择“Pools”中的“Pools”标签,点击“ADD”按钮添加服务器池(Pool)。
(2)在池属性(Pool Properties)中的“Load Balancing Method”表格中选择负载均衡策略,通常采用默认策略:“Round Robin”
(3)在“Resouces”表格中的“Member Address”文本框输入成员IP地址,在“Service”文本框中输入服务端口,点击“>>”添加到“Current Members”当前成员列表中。
(4)添加所有组成员,点击“Done”完成配置。
(5)在“Pools”中的“Pool Name”列选中特定池,然后池属性页面中选择“Persistence”标签。
(6)在“Persistence Type”表格中选定会话保持类型。点击“Apply”应用配置。

8、F5的virtual server配置
(1)在配置工具Web页面的导航面板中选择“Virtual Servers”中的“Virtual Servers”标签,点击“ADD”按钮添加虚拟服务器。
(2)在“Add Virtual Server”窗口的“Address”文本框中输入虚拟服务器IP地址,并在“Service”文本框中输入服务端口号或在下拉框中选择现有的服务名称,点击“Next”执行下一步。
(3)在“Add Virtual Server”窗口的“Configure Basic Properties”页面中点击“Next”执行下一步。 在“Add Virtual Server”窗口的“Select Physical Resources”页面中点击单选按钮“Pool”,并在下拉框中选择虚拟服务器对应的负载均衡池。
(4)按“Done”完成创建虚拟服务器。

9、F5的monitor的配置
(1)在配置工具Web页面的导航面板中选择“Monitor”中的“Monitors”标签,点击“ADD”按钮添加监控
(2)根据需要选择相关关联类型:“Node Associations”标签、Node Address Associations”标签、Service Associations”标签。
(3)被选关联标签中,在“Choose Monitor”表格中选择监控名称,点击“>>”按钮添加到“Monitor Rule”监控规格文本框中。监控规则可以为一条或多条。
(4)选择监控规则后,在对应节点的“Associate Current Monitor Rule”复选框中选中。如果欲删除监控关联,则选中对应节点的“Delete Existing Assocation”复选框。
(5)点击“Apply”关联监控

10、F5的SNAT配置
(1)在配置工具Web页面的导航面板中选择“NATs”中的“SNATs”标签,点击“ADD”按钮添加SNAT地址。
(2)在“Add SNAT”窗口中“Translation Address”的“IP”文本框中输入SNAT IP地址,并在“Origin List”的“Origin Address”文本框中输入节点IP地址或在“Origin VLAN”下拉框中选择VLAN名称,点击“>>”加入“Current List”列表。
(3)按“Done”完成添加SNAT IP地址。

11、F5主备机同步及切换校验
具体在system/Redundant Properties/synchonize Config...

12、业务的校验
F5主备机切换的校验
F5主备机业务运行的校验

其中1~6是基本配置,7~10业务配置,11~12校验

二、F5负载均衡器的维护

1、F5节点及应用的检查
通过“System -> Network Map”页面查看节点及应用状态
绿色:节点或虚拟服务器为“UP”
红色:节点或虚拟服务器状态为“Down”
灰色:节点或虚拟服务器被禁用

2、日志的检查
(1)当天日志:从web上查看logs中的system log、bigip log、monitor log,看日志中是否有异常。
(2)7天内的日志
系统日志文件 - /var/log/messages消息, 系统消息
BIG-IP 日志文件 - /var/log/bigip
“External” BIG-IP events
Monitor 日志文件 - /var/log/bigd
“Internal” BIG-IP Events
3DNS 日志文件 - /var/log/3dns
3DNS Information
用gzcat、more、vi命令打开

3、F5流量的检查
(1)业务上的基本维护主要是在F5上查看F5分发到各节点的connect是否负载均衡,一般不应有数量级的差别
(2)通过WEB->pool-> pool statistics中查看connection项中的total和current项,不应有明显的数量级的差别
(3)F5 qkview命令
执行qkview,执行完成后将输出信息保存在文件“/var/tmp/-tech.out”中,供高级技术支持用
(4)F5 tcpdump命令
TCPDUMP是Unix系统常用的报文分析工具,TCPDUMP经常用于故障定位,如会话保持失效、SNAT通信问题等
tcpdump [ -adeflnNOpqRStvxX ] [ -c count ] [ -F file ]
[ -i interface ] [ -m module ] [ -r file ]
[ -s snaplen ] [ -T type ] [ -w file ]
[ -E algo:secret ] [ expression ]


linux 下日常命令

发表人:haijiang | 发表时间: 2007年八月08日, 09:16

我们一般使用“date -s”命令来修改系统时间。比如将系统时间设定成2005年7月26日的命令如下

数据库正在运行的模块和用户信息

发表人:haijiang | 发表时间: 2006年九月26日, 15:52

select s.serial#,s.sid,s.MACHINE, p.pid,p.spid, s.SCHEMANAME,s.PROGRAM from v$process p,v$session s where p.ADDR=s.PADDR and s.SCHEMANAME not in ('SYS') /*and s.PROGRAM like 'sv%'*//* order by s.SCHEMANAME,s.PROGRAM*/ 查看全文

检查数据库中正在运行的语句

发表人:haijiang | 发表时间: 2006年九月25日, 16:55

select bb.HASH_VALUE,bb.PIECE,bb.SQL_TEXT,aa.sharable_mem,aa.persistent_mem,aa.runtime_mem,
aa.sorts,aa.parse_calls,aa.disk_reads,aa.buffer_gets,aa.rows_processed,aa.module,aa.last_load_time from
(select address,sharable_mem,persistent_mem,runtime_mem,
sorts,parse_calls,disk_reads,buffer_gets,rows_processed,
a.module,last_load_time
from v$sql a,
v$session c
where /*a.ADDRESS=b.ADDRESS and*/ a.HASH_VALUE=c.SQL_HASH_VALUE and c.SCHEMANAME not in ('SYS','SYSTEM')) aa,
v$sqltext bb where aa.address=bb.ADDRESS and bb.HASH_VALUE='204673891'
order by aa.last_load_time,bb.hash_value,bb.piece,aa.buffer_gets,aa.disk_reads desc;

表的分区管理

发表人:haijiang | 发表时间: 2006年六月14日, 17:46

-- Create table(创建分区表)
create table BILL_MONTHFEE_ZERO
(
SERV_ID NUMBER(20) not null,
BILLING_CYCLE_MONTH NUMBER(6) not null,
DATE_TYPE NUMBER(1),
ACC_NBR VARCHAR2(80)
)
partition by range (BILLING_CYCLE_MONTH)
(partition p_200407 values less than (200407)
tablespace TS_ZIKEN
storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0),
partition p_200408 values less than (200408)
tablespace TS_ZIKEN
storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0))
;
create index idx_bill_monthfee_zero_idx01 on bill_monthfee_zero(billing_cycle_month)
tablespace TS_ZIKEN_idx
storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0) nologging;
grant all on bill_monthfee_zero to dxsq_dev;
--增加分区表
alter table BILL_MONTHFEE_ZERO add Partition p_200409
values less than (200409) tablespace ts_ziken;

--删除一分区
alter table part_tbl drop Partition part_tbl_08;
--将一个分区分为两个分区
alter table bill_monthfee_zero split Partition p_200409 at (200409)
into (Partition p_200409_1 tablespace ts_ziken,
Partition p_200409_2 tablespace ts_ziken_idx);
--合并分区ALTER TABLE bill_monthfee_zero
MERGE PARTITIONS p_200408, p_200409 INTO PARTITION p_all
--将分区改名
alter table bill_monthfee_zero rename Partition p_200408 to p_fee_200408
--将分区改表空间
alter table bill_monthfee_zero move Partition p_200409
tablespace ts_ziken_01 nologging
--查询特定分区
select count(*) from BILL_MONTHFEE_ZERO partition (p_200407);
--添加数据
insert into bill_monthfee_zero select * from bill_monthfee_zero partition (p_200407)
--分区表的导出
userid=dxsq/teledoone@jndxsq154
buffer=102400
tables=bill_monthfee:P_200401,
file=E:exp_paraexp_dxsq_tables.dmp
log=E:exp_paraexp_dxsq_tables.log
技巧:
删除表中一个字段:
alter table bill_monthfee_zero set unused column date_type;
添加一个字段:alter table bill_monthfee_zero add date_type number(1);
 查看全文

数据库系统之联接篇

发表人:haijiang | 发表时间: 2006年四月30日, 09:56

1察看

1. 察看连接数据库的机器和该机器上连接数据库程序

select program,machine,count(*) from v$session group by program,machine;

2. 察看某个机器连接数据库的详细信息

select .serial#,s.sid,s.MACHINE,p.pid,p.spid,p.PROGRAM,p.username,s.username,s.SCHEMANAME from v$process p,v$session s where p.ADDR=s.PADDR and s.MACHINE like '%HAIJIANG%';

3. 察看某个进程的db信息

select b.PROGRAM,b.MACHINE,a.SPID,a.USERNAME from v$process a,v$session b where a.ADDR=b.PADDR and a.SPID='&1';

4. 察看某个用户的数据库联接进程信息

select b.PROGRAM,b.MACHINE,a.SPID,a.USERNAME from v$process a,v$session b where a.ADDR=b.PADDR and B.SCHEMANAME='&1';

5. 察看用户连接情况

select b.PROGRAM,b.MACHINE,a.SPID,a.USERNAME from v$process a,v$session b where a.ADDR=b.PADDR

6. sfd

杀掉某模块的session

SELECT 'ALTER SYSTEM KILL SESSION '''||SESSION_ID||','||SERIAL#||''';'
FROM V$LOCKED_OBJECT A,V$SESSION S ,dba_objects o
WHERE A.SESSION_ID=S.SID
and a.OBJECT_ID =o.OBJECT_ID and s.PROGRAM like
'&1%';

杀掉某台机器的session

SELECT 'ALTER SYSTEM KILL SESSION '''|| S.SID||','||S.SERIAL#||''';'
FROM V$SESSION S
WHERE s.terminal like '%HAIJIANG%';

对上面问题的补充,当上面语句不能解决问题时

select 'kill -9 '||p.spid
from v$process p,v$session s where p.ADDR=s.PADDR and s.PROGRAM like
'&1%';

select s.sid,p.pid,p.spid,p.username,s.username,s.SCHEMANAME from v$process p,v$session s where p.ADDR=s.PADDR and s.schemaname='&1';

 查看全文

恭喜您成功申请ITPUB BLOG

发表人:haijiang | 发表时间: 2006年四月30日, 09:33

恭喜您成功申请ITPUB BLOG。 查看全文

Valid XHTML 1.0 Strict and CSS. Powered by pLog
Design by Blog.lvwo.com