随笔分类 -  Oracle

摘要:在微博上看到dbsnake 有一个培训,因为是在北京举办的,过去不。所以问dbsnake 能否把相关的文档传我一份。 dbsnake 邮件给我时说有些东西没有写到文档里。 这个文档也是dbsnake 对Oracle 的一个经验的积累的过程,全部写出来也不实际,所以有机会还是多参加这类培训,这对技术提高还是很有帮助的。在这个文档里dbsnake 整理了一个PL/SQL 的开发文档。 贴过来,共享之。常用的PL/SQL开发原则 bysnake: (1)广泛使用绑定变量,特别是批量绑定,因为这可以有效的避免sql的硬解析和PL/SQL引擎和SQL引擎的上下文切换! (2)广泛使用UROWID来处理D 阅读全文
posted @ 2012-08-23 15:57 TonyWu 阅读(275) 评论(0) 推荐(0)
摘要:Oracle在9i以后,可以利用DBMS_METADATA.GET_DDL包得到数据库的对象的ddl脚本。如下(SQLPLUS中执行):1.获取单个的建表、视图和建索引的语法setpagesize0setlong90000setfeedbackoffsetechooffspoolDEPT.sqlselectdbms_metadata.get_ddl('TABLE','TAB_NAME','SCOTT')fromdual;selectdbms_metadata.get_ddl('VIEW','VIEW_NAME',& 阅读全文
posted @ 2012-08-23 15:08 TonyWu 阅读(637) 评论(0) 推荐(0)
摘要:根据NULL的定义,NULL表示的是未知,因此两个NULL比较的结果既不相等,也不不等,结果仍然是未知。根据这个定义,多个NULL值的存在应该不违反唯一约束。CREATE TABLE TESTAA (ID NUMBER)SELECT * FROM TESTAA;ALTER TABLE TESTAA ADD UNIQUE (ID);INSERT INTO TESTAA VALUES (NULL);单个值NULL可以随意插入进去,不报错。但是当唯一约束为复合字段时,则情况发生了变化。根据Oracle文档的描述,对于复合字段的唯一约束,不为空字段的值是不能重复的。也就是说,如果两个字段构成了一个唯一 阅读全文
posted @ 2012-08-23 14:42 TonyWu 阅读(5999) 评论(1) 推荐(0)
摘要:1. 先通过top命令查看产用资源较多的pid号, 注意:top命令的user的oacle的,关注pid2.查询当前耗时的会话ID,用户名,sqlID等:其中top中的pid就是v$process的spid字段值。不是v$process视图中的pid值。select sid,serial#,machine,username,program,sql_hash_value,sql_id, to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') as login_time from v$sessionwhere paddr in (select add 阅读全文
posted @ 2012-08-23 11:15 TonyWu 阅读(5157) 评论(1) 推荐(0)
摘要:在写SQL 执行过程中,需要停掉部分session或者session失效,需要KILL 掉。首先通过v$session视图查找到需要的KILL的session的值。1.杀死对应的进程(上述的sid与serial#参数传入)alter system kill session 'sid,serial#';上述步骤完成之后,若还是无法释放对应的资源,进行下一步操作:2. 取得语句的进程号select spid,osuser,s.program from v$session s,v$process pwhere s.paddr=p.addr and s.sid=&sid;3.在 阅读全文
posted @ 2012-08-22 10:19 TonyWu 阅读(1280) 评论(0) 推荐(0)
摘要:Data Guard是Oracle提供的一种高可用性解决方案,用于数据保护和容灾,通过日志同步来把数据及时传送到备用节点,现总结一下Data Guard环境下常用的维护命令:1、在生产库停止Data Guard操作:SQL> show parameter log_archive_destSQL> alter system set log_archive_dest_state_2=defer;2、在生产库开启Data Guard操作:SQL> alter system set log_archive_dest_state_2=enable;3、在备份库查看生产库传过来的归档应用 阅读全文
posted @ 2012-01-17 17:26 TonyWu 阅读(635) 评论(0) 推荐(0)
摘要:有时候为了两个Oracle数据库部分表的同步,我们可以采用从源库exp需要的表再在本地执行imp导入。操作的思路:首先从远程数据库exp需要的表到本地,然后在本地执行drop table命令把要替换的表删除,这里要注意那些主外键关联的表的删除的顺序,最后再执行imp导入即可。脚本如下:首先建立执行命令的.sh文件:[oracle@erpdevdb ~]$ cat erpupdate.shecho "----------------------------------------------------------------" >>/home/oracle/er 阅读全文
posted @ 2012-01-17 17:25 TonyWu 阅读(3245) 评论(0) 推荐(0)
摘要:一、windows环境1、开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。2、开始->程序->Oracle >Oracle Installation Products-> Universal Installer 勾选卸装所有的Oracle产品,但不删除Universal Installer本身。5、运行regedit,选择HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE,按del键删除这个入口。6、运行regedit,选择HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services,滚动这个列表,删除所有O 阅读全文
posted @ 2012-01-17 17:24 TonyWu 阅读(250) 评论(0) 推荐(0)
摘要:Logminer是oracle从8i开始提供的用于分析重做日志信息的工具,它包括DBMS_LOGMNR和DBMS_LOGMNR_D两个package,后边的D是字典的意思。它既能分析redo log file,也能分析归档后的archive log file。在分析日志的过程中需要使用数据字典,一般先生成数据字典文件后使用,10g版本还可以使用在线数据字典。Logminer可以分析其它数据库的重做日志文件,但是必须使用重做日志所在数据库的数据字典,否则会出现无法识别的乱码。另外被分析数据库的操作系统平台最好和当前Logminer所在数据库的运行平台一样,且block size相同。1、运行以下 阅读全文
posted @ 2012-01-17 17:22 TonyWu 阅读(532) 评论(0) 推荐(0)
摘要:在平时的oracle建库中我们一般都是采用GUI建库方式,所以手工建库相对来说比较有些难度,这个也是OCM考试中需要关注的地方,特别做了测试,主要是版本是9i, 10g1.修改/etc/orataboral:/opt/oracle/database:N2.创建sys口令认证文件orapwd file=$ORACLE_HOME/dbs/orapworal password=system entries=53.设置oracle用户环境变量实例名vi .bash_profileexport ORACLE_SID=oralexport ORACLE_BASE=/opt/oracleexport ORA 阅读全文
posted @ 2012-01-17 17:03 TonyWu 阅读(4616) 评论(0) 推荐(0)
摘要:前几天大家讨论一个问题,oracle 11g data guard分为哪几种,本来只想到还是物理standby和逻辑standby2种,没想到今天在查阅了oracle 11g的在线文档后发现,实际上载oracle 11g中已经分了三种类型的standby,当然以前听说oracle 11g支持叫做active standby的功能,仔细研究后发现只不过是一种在只读模式下就可以应用恢复,这样在很多设计中可以将备库来做一些报表功能,减少主库的查询带来的一些负载和性能问题,当然这个功能其实也不是什么新技术了,早在informix 7的HDR就做到了,看来相对来说,oracle在这块的功能也比较滞后了些 阅读全文
posted @ 2012-01-17 17:01 TonyWu 阅读(489) 评论(0) 推荐(0)
摘要:锁是并发访问的时候用于保护不共享资源不被同时并发修改的机制。oracle锁分为DML锁,DDL锁,内部锁和latchDML锁确保一次只能只有一个人修改某一行(TX锁),而且正在处理一个表时别人不能删除(TM锁)。DDL锁,在DDL操作是系统会自动为对象加上DDL锁,保护这些对象不被其他会话锁修改。latch是轻量级的串行化设备,用于协调对共享数据结构、对象、文件的多用户访问,一般都是保护共享内存结构使用的锁,在此不做讨论。一般的锁管理器工作过程:1.找到想要锁定的那一行地址2.在锁管理器排队3.锁定列表4.搜索列表,查看别人是否锁定这一行5.在列表中创建一个新的条目,表明已经锁定这一行6.对列 阅读全文
posted @ 2012-01-17 16:58 TonyWu 阅读(5749) 评论(1) 推荐(1)
摘要:,今天开发人员问我如何快速并方便的查出一张表最近被更改的记录,这个需求很简单,由于是查最近被更改的数据,查回滚段就可以,下面是我做的小实验。SQL> create table test(id number,name varchar2(10),gender varchar2(5)); 表已创建。 SQL> insert into test values(1,'宋春风','男'); 已创建 1 行。 SQL> insert into test values(2,'叶民','男'); 已创建 1 行。 SQL> 阅读全文
posted @ 2012-01-17 16:18 TonyWu 阅读(27933) 评论(0) 推荐(2)
摘要:优化索引的规则如下:If 一个表中有两个索引 ( I1 and I2 ) andI1索引所涉及的列数<=I2索引所涉及的列数 and I1索引中列的顺序与I2索引中列的顺序相同Then IfI1索引是 UNIQUE then IfI2索引是一个外键的参考列 then Do Nothing Else 删除I2 End If Else 删除I1 End IfEnd If用下面的语句查询出SCOTT模式下面重复的索引:conn sys/sys as sysdbaSELECT /*+ RULE */ tab_owner.name owner, t.name table_name, o1... 阅读全文
posted @ 2012-01-17 13:38 TonyWu 阅读(189) 评论(0) 推荐(0)
摘要:概述在oracle安装目录$HOME/network/admin下,,经常看到sqlnet.ora tnsnames.ora listener.ora这三个文件,除了tnsnames.ora,其他两个文件详细的用途很多人都不太了解。sqlnet.ora 用在oracle client端,用于配置连接服务端oracle的相关参数.tnsnames.ora 用在oracle client端,用户配置连接数据库的别名参数,就像系统中的hosts文件一样。listener.ora 用在oracle server端,配置oracle服务端程序的监听办法,比如限制某些ip等参数。在安装目录$HOME/ne 阅读全文
posted @ 2011-12-30 20:59 TonyWu 阅读(1069) 评论(0) 推荐(0)
摘要:oracle blogDAVE:http://blog.csdn.net/tianlesoftwarehttp://blog.csdn.net/luojun198610http://space.itpub.net/9182041/spacelist-bloghttp://space6212.itpub.net/categoryhttp://blog.csdn.net/47522341盖国强:http://www.eygle.com/http://space.itpub.net/老熊:http://www.laoxiong.net/大话RAC作者HTTP://space.itpub.net/75 阅读全文
posted @ 2011-12-24 14:54 TonyWu 阅读(333) 评论(0) 推荐(0)
摘要:我们在部署服务器时通常都免不了RAID阵列级别的选择,RAID技术发展到今天已经有数十种之多了,但我们在生产系统上常用的也就只有几种,如 0,1,5,0+1。读者朋友可能对各个级别的RAID原理已经非常熟悉了,甚至能背诵出来,但面临真正在生产系统中选择最适合应用系统的RAID级别 时,可能没多少心理有底,本文就oracle数据库服务器在选择RAID阵列级别时做一个介绍,希望对还心存疑虑的人们吃一粒定心丸。首先,还是来看看常用的几个RAID级别之间的优缺点。RAID级优缺点描述不用RAID任何RAID都有一定的管理开销,如果你最需要的是数据写入速度,且不需要为保护数据,那么 你就可以选择不使用R 阅读全文
posted @ 2011-12-21 18:35 TonyWu 阅读(2286) 评论(0) 推荐(0)