
ORACLE
文章平均质量分 77
edwzhang
这个作者很懒,什么都没留下…
展开
-
在exp中使用QUERY选项的范例
昨天用了exp里面的QUERY选项,记录了一下。名称等信息,已经做了修改。 1. 取范围。[xxx]# exp user/pass@TNS_NAME FILE=/tmp/test_a.dmp TABLES=table_a QUERY=/"WHERE id# /Export: Release 10.2.0.1.0 - Production on Thu Nov 6 01:02:原创 2008-11-06 09:01:00 · 913 阅读 · 0 评论 -
PIVOT
今天有个同事,让我替他写一个SQL,将返回的行数据,拉直了,变成列来显示, 而且列的数目是不确定的。好像报表经常用到这个功能啊。数据库是MYSQL的,不熟悉,于是花了点时间研究一下。 这个需求,在SQLSERVER里面有个PIVOT函数,在ORACLE11g中,也加了这个。 因为不知道MYSQ L的匿名块怎么写,语法也不熟悉,就分步执行了。 第一步: 找出有哪些列需要显原创 2009-01-14 16:26:00 · 710 阅读 · 0 评论 -
以VARCHAR2作为key的索引表的使用
平时用ORACLE的索引表的时候,都是以数值为key的多。这次,为了将表之间的关系分组显示出来,特意用了以VARCHAR2作为key的索引表,还不错,就是有点麻烦。主要体现在不能用那个 for i in *.first .. *.last loop。只好用while循环来代替,很不爽。 思路如下: 1. 先定义两个变量: type table_group_type原创 2009-01-16 16:37:00 · 1354 阅读 · 0 评论 -
关于DUAL的“ORA-00980”错误
今天有人发现本地的测试数据库有问题。 SQL> select sysdate from dual; select sysdate from dual ORA-00980: synonym translation is no longer valid这种问题也比较常见,一般都是在sys下面重建就可以。但是仔细一看, 原来是有人在自己的用户下面,建了同名的dual原创 2009-01-19 10:03:00 · 1513 阅读 · 0 评论 -
ORACLE的递归查询
前一段时间,因为工作老大要求显示表之间的外键关系,研究了一下递归的方法。主要是新系统中,外键约束用的太多,经常会有数据不同步的现象发生,等到手工做同步的时候,就会报出外键不匹配的错误来。 写了一个脚本,会把当前schema中,所有的父表和字表按照顺序打印出来。因为不同的父子之间会有相同的表,同一个父表,被不同字表引用的深度又不同。所有,这个输出,只是做到父表在前,子表在后,前后紧跟的两张表原创 2009-01-23 21:26:00 · 708 阅读 · 0 评论 -
升级oracle10g,从10.2.0.1.0到10.2.0.4.0
因为安装Streams的一个patch,需要将DB升级到10.2.0.4.0。 1. 安装patch,使用 p6810189_10204_Linux-x86-64.zip2. 使用dbua,升级instance.3. 出错如下:DBUA thinks this is a Rerun operation and is trying to connect to the database原创 2008-11-27 15:06:00 · 3148 阅读 · 0 评论 -
关闭oracle10g的archive log
昨天有个测试的DB,做性能测试,产生了大量的archive log,磁盘空间都用完了。反正是一般的测试环境,就决定取消archive log。步骤如下: $ sqlplus "/as sysdba"SQL> archive log listDatabase log mode Archive ModeAutomatic archival原创 2008-11-28 11:05:00 · 992 阅读 · 0 评论 -
Oracle的日期数据类型
今天有个同事问了数值和日期的转换,顺便把和日期有关的几个数据类型整理了一下。文档上写的不是很详细,倒是从别人的帖子上面,看到了不少好东西。有如下两个:http://www.itpub.net/308317.htmlhttp://www.cnblogs.com/firstyi/archive/2007/09/24/903931.html 类型说明原创 2009-02-06 16:02:00 · 587 阅读 · 0 评论 -
ORA-12154的处理
创建DBLINK之后,遇到“ORA-12154: TNS:could not resolve the connect identifier specified”的错误。 其实这个时候,本机的tnsnames.ora里面已经配置好了目标数据库的TNS NAME,而且用sql*plus是可以正常访问的。注意: 所有的操作,都不是在安装了oracle的机器上执行的,因为没有登录权限。 仅原创 2008-12-22 13:56:00 · 2149 阅读 · 0 评论 -
日期的两个处理
TRUNC 对日期部分一刀切。ROUND 按指定的格式将一个日期指舍入至最近的日期。原创 2009-03-16 09:43:00 · 573 阅读 · 0 评论 -
Oracle文档关于模块重载的一个例子,其实是可以。
文档版本:Oracle® Database PL/SQL Users Guide and Reference10g Release 2 (10.2)Part Number B14261-01 文档范例如下:Example 8-9 Restrictions on Overloading PL/SQL ProceduresDECLARE PROCEDURE balan原创 2009-03-17 10:19:00 · 716 阅读 · 0 评论 -
ORA-01460 和 ORA-01461 的错误处理
前几天遇到一个错误号:ORA-01460。后来其他同事又遇到ORA-01461,于是一起看了一下。 主要原因就是因为SQL里面的VARCHAR2长度最大为4000,但是在PL/SQL中,就不同了,32767(单位都是byte)。如果用到的是SQL函数或者包含在DML里面,就会报这类错误。其中,单独用SQL函数时,超限会报 ORA-01460, 放在DML里面,会报ORA-01461。原创 2009-04-20 14:12:00 · 2520 阅读 · 0 评论 -
关于ORACLE触发器的owner
今天有同事问到触发器的owner问题,细想了一下,还不是简单的当前用户。如果有权限的话,一个用户可以在自己的schema里面,创建基于其他schema的触发器(SYS除外),owner就是自己。也可以在其他schema里面,创建属于其他schema的触发器,owner当然是别人。 小处也不能大意啊!原创 2009-04-24 11:01:00 · 1152 阅读 · 0 评论 -
Fedora 10 安装Oracle instant client
前两天装好了Fedora 10, 就想在上面访问Oracle。于是下载了一个instant client,很方便。 1、下载安装包。最新的已经是“11.1.0.7”, 但还是下个老的吧。oracle-instantclient-basic-10.2.0.4-1.i386.ziporacle-instantclient-devel-10.2.0.4-1.i386.ziporacle-原创 2009-04-29 16:01:00 · 957 阅读 · 0 评论 -
取消Oracle的flashback
前几天测试,数据量比较大,数据库经常因为设置的flashback空间小了而没有反应,就打算不用这个功能了。反正平时也不大用得上。 具体步骤如下: shutdown immediate;startup mount;alter database flashback off;alter system set db_recovery_file_dest = ; 就这原创 2009-05-05 14:48:00 · 597 阅读 · 0 评论 -
Oracle Streams学习笔记一 Capture
目前在用Streams做数据复制。前一段时间忙别的,没有时间来认真研究。现在打算学习一下,顺便把平时没有注意到的东西,列一下。 1、 Capture分两种。一种是capture process从redo log里面看到变化,生成LCR,放到queue里面,这个叫“implicit capture”。另一种是user and applications手工地把消息放到queue里面,这个叫“原创 2009-05-08 10:45:00 · 1083 阅读 · 0 评论 -
ORA-04091错误的处理
有要求如下,一个工作序列表,如果flag字段被更新为OK,则将这条记录转移到log表中。直接在触发器中,进行自身删除,报错: ORA-04091: table AAA.AAAAAA is mutating, trigger/function may not see itORA-06512: at "AAA.TR_AAAAAA", line 4ORA-04088: error durin原创 2009-06-01 16:07:00 · 1423 阅读 · 0 评论 -
SQLLDR的例子
有时需要用到SQLLDR, 把产品库或者什么其他东西,弄到本地数据库,方便测试或者检查问题。也用不了很复杂的功能。 步骤如下:1、 创建一个表,存数据用。create table uk_report_using(TABLE_OWNER varchar2(30), TABLE_NAME varchar2(30), INDEX_NAME varchar2(30), COLUMN_N原创 2009-06-10 11:18:00 · 604 阅读 · 0 评论 -
外连接的语法
平时习惯了Oracle的连接语法,每次看到join这种格式的,都要想半天。还是把它列一下,方便自己下次用。 SELECT table1.column, table2.columnFROM table1[CROSS JOIN table2] |[NATURAL JOIN table2] |[JOIN table2 USING (column_name)] |[原创 2010-01-28 09:19:00 · 1335 阅读 · 0 评论 -
All routing maps in a partition scheme must also be listed on a line in the configuration file.
昨天有人告诉我,说在配置SharePlex的水平分区复制的时候,出现问题,不能激活配置文件。错误如下: sp_ctrl (x-vip:10001)> activate config xx.cfg All routing maps in a partition scheme must also be listed on a line in the configuration file.原创 2009-12-16 09:52:00 · 869 阅读 · 0 评论 -
sqlplus输出变量到shell
有时因工作需要,得写一些脚本,都是shell和sqlplus混合的。一般情况下,shell变量带入到sql脚本,比较方便,但是把sql的一些结果,输出给shell,就比较麻烦一些了。以前用的方法比较土一点,就是在sqlplus里面,spool到一个临时文件,然后在shell里面用grep,awk一类的来分析这个输出文件。后来在网上看到一篇介绍,受益匪浅啊。在此表示感谢。http://hi.原创 2009-12-16 10:18:00 · 5372 阅读 · 1 评论 -
增加字段,对原有记录的影响
前两天看到别人脚本,有个增加字段并且提供默认值的操作发生了变化。以前是分两步写的,这次放在一个语句中,于是就触发了当前表上面的触发器。(表中已经有数据) 一个语句:alter table test_ddl add (add_c1 number(2) default 0);其实这个语句,不论新增字段是否非空,都会对原有记录进行update,从而触发器被触发。 两步执行:a原创 2009-12-21 14:00:00 · 2148 阅读 · 0 评论 -
1Z0-007题库的一个错误,关于truncate table需要的系统权限
闲看1Z0-007的题库,发现了一个错误。 Q: 14 Evaluate the SQL statement:TRUNCATE TABLE DEPT;Which three are true about the SQL statement? (Choose three.)A. It releases the storage space used by the table.B. It原创 2009-12-25 16:24:00 · 1212 阅读 · 0 评论 -
一个Oracle自定义聚集函数的例子
前天有人提了需求,想对某个字段进行按位的或操作。本来建议查询出来之后在应用程序里面处理,但是数据量比较大,觉得还是返回一个分组计算之后的值比较合适。 两个问题,一个是按为或的操作,这个参考了别人的文档,用bitand函数实现。 原文如下:http://blog.chinahr.com/blog/hewy0526/post/112968 然后就是自定义的聚集函数了。这个参考了官方原创 2009-12-24 10:16:00 · 767 阅读 · 0 评论 -
Oracle的SOME,ANY和ALL操作
平时很少用的这几个操作,今天遇到了。于是又看了一下文档。 SOME和ANY一样,是比较宽松的,类似于OR。满足其中任何一个都可以。 ALL要求严格一些,类似于AND,必须全部满足才可以。 不能单独使用: Must be preceded by =, !=, >, =. 其实更应该关注的是紧跟着的备注信息,这个一开始比较难以理解。 SOME (ANY)Ev原创 2009-12-24 14:32:00 · 2874 阅读 · 0 评论 -
Oracle的几个NULL函数
平时用的比较多的,就是NVL,没怎么在意其他几个。 NVL 就不用说了,就是判断第一个是否为NULL,是就用第二个代替,不是就返回第一个。NVL2 也是判断第一个是否为NULL,但是返回值却不同。第一个为NULL,就返回第三个,否则返回第二个。NULLIF 判断两个参数是否相等,相等返回NULL,否则返回第一个参数。COALESCE 这个不限参数数目,找到第一个不为NULL的就原创 2009-12-31 14:12:00 · 608 阅读 · 0 评论 -
V$PARAMETER和V$PARAMETER2, V$SYSTEM_PARAMETER和V$SYSTEM_PARAMETER2
前两天,看到有人讨论这几个视图的区别,也查看了一下。除了值不同,还有一个特点。XXX2里面,control_files是分开的,一个文件一行,而XXX里面,就一行,几个文件拼接在一起。 在V$PARAMETER, V$SYSTEM_PARAMETER中:NAME TYPE VALUE------------- ---------- ------------原创 2010-03-17 16:33:00 · 1039 阅读 · 0 评论 -
SharePlex的维护两例
今天,有同事在搭建测试环境的时候,遇到两个错误。 第一个是可以启动,激活文件也正常,但是修改数据的时候,source端的capture进程就挂了。log如下: 03/18/10 00:00 Process exited sp_ocap (for o.dbweb) [pid = 18381] - exit(1)03/18/10 00:00 Error: Unexpected Ora原创 2010-03-18 14:28:00 · 1290 阅读 · 0 评论 -
过了OCP的三门考试
周一考过了043。 2010/02/01 007, pass, 100%2010/03/26 042, pass, 100%2010/04/12 043, pass, 100% 从报名到三门考完,用了3个多月。春节前后都没看,平时事情也多,所以拖的时间比较长。原创 2010-04-14 16:01:00 · 793 阅读 · 0 评论 -
SQLPLUS中,多次调用需传入参数的SQL文件时,要注意变量赋值的问题
传入参数到sql文件时,要考虑覆盖问题原创 2010-11-17 15:11:00 · 3081 阅读 · 0 评论 -
drop tablespace ORA-01548: active rollback segment '_SYSSMU6$' found, terminate dropping
drop tablespace时ORA-01548错误的处理。原创 2010-11-25 16:51:00 · 2666 阅读 · 0 评论 -
IMP-00058: ORACLE error 30036 encountered ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'
重建undo tablespace原创 2010-11-25 17:02:00 · 6615 阅读 · 1 评论 -
VMware1.0.6 + CentOS5.5 + Oracle10g RAC安装成功
在xp上面,用VMware,安装Oracle10g RAC的测试环境原创 2011-01-27 11:29:00 · 1500 阅读 · 0 评论 -
使用sysresv时遇到错误: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object f
在本机装了一个测试的数据库,运行sysresv命令时报错:[oracle@ttt dbs]$ which sysresv/opt/ora10g/product/10.2.0/db_1/bin/sysresv[oracle@ttt dbs]$ sysresvsysr原创 2011-09-14 17:14:53 · 4916 阅读 · 0 评论 -
测试sqlplus连接遇到错误 syntax error near unexpected token `('
平时都是直接在sqlplus后面用TNS,后来看文档的时候,发现有好几种方法。于是就来试试“Full Connection Identifier“。 居然报错。[oracle@ttt admin]$ sqlplus test@(DESCRIPTION=(ADDRESS=(PR原创 2011-09-14 13:13:23 · 1955 阅读 · 0 评论 -
错误处理 ORA-20005: object statistics are locked (stattype = ALL)
本地测试环境,遇到错误如下: SQL> exec dbms_stats.gather_table_stats('AA','BB'); begin dbms_stats.gather_table_stats('AA','BB'); end; ORA-20005: object statistics are locked (stattype = ALL)ORA-06512:原创 2011-12-01 14:21:25 · 5441 阅读 · 0 评论 -
Oracle表的高水位信息
昨天有反馈,说是一个表的查询特别慢。就是普通的全表扫描,没有什么特殊的语句。于是想起来看看block的使用情况。 alter session set nls_date_format ='YYYY-MM-DD HH24:MI:SS';select t.num_rows, t.blocks, t.empty_blocks, t.last_analyzed from dba_tables原创 2011-12-01 14:15:37 · 1891 阅读 · 0 评论 -
读书笔记 《Oracle性能诊断艺术》
Troubleshooting Oracle PerformanceChristian Antognini 可以从 http://top.antognini.ch 下载代码 一、性能问题二、关键概念选择性和基数游标的生命周期解析的过程 三、找出性能问题 1、跟踪数据库调用2、剖析PL/SQL代码 四、系统和对象统计信息1、使用dbms原创 2011-12-01 09:35:30 · 2476 阅读 · 0 评论 -
读书笔记 《海量数据库解决方案》
这个是韩国人的一本书,不过翻译,审校的都是牛人。主要说了存储结构,执行计划。 也就是边看边记了,免得书一还,就什么都记不起了。 第一部分 影响数据读取的因素一、数据的存储结构和特征 聚簇因子(Cluster Factor)聚簇因子是指,按照索引列值进行了排序的索引行序和对应表中数据行序的相似程度。聚簇因子大小对数据读取效率有着直接的影响。数据的存储方式一旦被决定原创 2011-12-19 11:44:09 · 719 阅读 · 0 评论 -
取消Oracle后台job,做一个干净的测试环境
最近在测试redo log的抓取,发现有不少后台写入动作,干扰了测试。比如经常看到如下语句:insert into sysman.mgmt_system_performance_log(... ...) values(... ...) 网上也有类似的东西,比如:10g Archive log files fill disk http://www.orafaq.com/forum/t原创 2011-12-22 16:23:58 · 2321 阅读 · 0 评论