[转]关于authid current_user
明确定义者权限与调用者权限正如大家所知,Oracle从8i开始引入了调用者权限体系结构,之前一直使用定义者权限体系结构。关于定义者权限与调用者权限之间的相通点或者是各自优势本文不做探讨,这里仅描述调用者权限与定义者权限之间的差异,在我看来,主要有三个方面:1、执行的schema不同,操作的对象也不同在定义者(definer) 权限下,执行的用户操作的schema为定义者,所操作的对象是定义者在编译时指定的对象。在调用者(invoker)权限下,执行的用户操作的 schema为当前用户,所操作的对象是当前模式下的对象。例如:PHP code:----------
TNS监听起不来的原因分析
07.12 今天早上上班,同事小李报告说ERP上去了! 打开后,发现,TNS-12541 TNS:no listener错误,一查发现监听程序没有启动 可以在我未解决之前,他们已前将服务器重启,按理说这个服务自启动也应该是启动了! su - oracle passwd后 $shutdown immediate 正常关闭 $startup mount 正常启动 数据库正常. $ lsnrctl lsnrctl> start TNS-12540:TNS:internal limit restriction exceeded TNS-12560:
Oracle Hint的用法
SQL语句优化方法30例在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法:1. /*+ALL_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;2. /*+FIRST_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.例如:SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;3. /*+CHOOSE*/表明如果数据字典中有访问表的统计信
查看表空间和数据文件的SQL
查看表空间和数据文件的SQL.DBA经常用到的SQL[@more@] 表空间是oracle数据库中最大的逻辑单位与存储空间单位,数据库系统通过表空间为数据库对象分配空间。表空间在物理上体现为磁盘数据文件,每一个表空间由一个或多个数据文件组成,一个数据文件只可与一个表空间相联系,这是逻辑与物理的统一。了解表空间和数据文件的的属性及使用率,是数据库管理员的一项重要职责。 下面以oracle9i为例,详细介绍查询Oracle数据库表空间信息和数据文件信息的方法。一、查看Oracle数据库中表空间信息的方法1、查看Oracle数据库中表空间信息的工具方法:
使用oracle的10046事件跟踪SQL语句
使用oracle的10046事件跟踪SQL语句 [@more@]我们在分析应用程序性能问题的时候,更多地需要关注其中SQL语句的执行情况,因为通常应用程序的性能瓶颈会在数据库这边,因此数据库的sql语句是我们优化的重点。利用Oracle的10046事件,可以跟踪应用程序所执行的SQL语句,并且得到其解析次数.执行次数,CPU使用时间等信息。这对我们分析、定位数据库性能问题是非常有用的。具体的方法如下:1、首先获得spid、sid、serial#,machine为连接oracle的机器名SQL> select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.p
回复网友问题,关于一个数值和字符串一起累加的问题!
回复网友问题,关于一个数值和字符串一起累加的问题![@more@]急急急!!!请各位大哥赐教一个数值和字符串一起累加的问题!关键字: 字符串相加 一。创建测试表CREATE TABLE addtest(CODE VARCHAR2(20),MONEY NUMBER,FLAG VARCHAR2(20));INSERT INTO addtest VALUES (1001, 99.00, '新建');INSERT INTO addtest VALUES (1002, 100.00, '编辑');INSERT INTO addtest VALUES (1002, 300.00, '新建');INSERT INTO addtest VALUES (1002, 500.00, '取消');INSERT INTO addtest VALUES (1002, 700.00, '编辑');INSERT INTO addtest VALUES
关于oracle时区
关于oracle时区[@more@]商业和数据库很多时候必须跨时区工作,从9i开始,oracle环境开始有了时区意识,通过指定数据库的时区和使用TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE数据类型来实现该功能。TIMESTAMP WITH TIME ZONE不会存储数据库时区,但是有一个指示用来说明该时间所使用的时区。TIMESTAMP WITH LOCAL TIME ZONE会同时存储数据库时区,并且会根据查询客户端的时区进行相应的转换。数据库时区可以在创建时在create database命令中设置,也可以使用alter database set TIME_ZONE=...来修改。如果没有特别的指定,
Rman的备份与恢复过程[转]
Rman的备份与恢复过程[@more@]1)首先连接数据库显示数据库的运行模式C:Documents and SettingsAdministrator>sqlplus sys/sys@colin as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 7月 24 11:03:54 2007Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> archive log list;数据库日志模式 非存档模式自动存档 禁用存档终点 USE_DB_RECOVERY_FILE_DEST最早的联机日
oracle建用户ora-01045和lsnrctl问题解决 ora-12541
1.实例建立用户,表空间2.分析一下lsnrctl[@more@]电脑重装了oracle重新配置了一些都是新的create tablespace表 名datafile='路径' size 100Mcreate temporary tablespace 表名tempfile='路径' size 100Mcreate user 用户default tablespace 表名temporary tablespace 表名---------------------------------------------------------建立完之后,发现connect 用户/密码提示error : ora-01045:解决办法:grant connect,resouce to 用户用客户端:PL/SQL developer启动提示出错:ora-12541查看tnsnames.ora发现host的名字为一串字符,于是改了电
oracle利用utl_file包来读写文件
oracle利用使用utl_file包create or replace procedure loadfiledata(p_path varchar2,p_filename varchar2) isv_filehandle utl_file.file_type; --定義一個文件句柄v_text varchar2(100); --存放文本v_name test.name%type;v_id test.autoid%type;v_firstlocation number;v_secondlocation number;v_totalinserted number;beginif (p_path is null or p_filename is null) thengoto to_end;end if;v_totalinserted:=0;/*open specified file*/v_filehandle:=utl_file.fopen(p_path,p_filename,'r'); loopbeginutl_file.get_line(v_fileh
改IP后出现的tns ora-12541 问题和其他问题
服务器改为IP,用PL/SQL登录主数据库,出现的错误是:ORA-12541: TNS:no listener官方的解释如下:ORA-12541: TNS:no listener Cause: The connection request could not be completed because the listener is not running. Action: Ensure that the supplied destination address matches one of the addresses used by the listener - compare the TNSNAMES.ORA entry with the appropriate LISTENER.ORA file (or TNSNAV.ORA if the connection is to go by way of an Interchange). Start the listener on the remote machine. 可是我
oracle面试题
1、表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。 select fclass,max(fscore) from table1 group by fclass,fid2、有一个表table1有两个字段FID,Fno,字都非空,写一个SQL语句列出该表中一个FID对应多个不同的Fno的纪录。 类如: 101a1001 101a1001 102a1002 102a1003 103a1004 104a1005 104a1006 105a1007 105a1007 105a1007 结果: 102a1002 102a1003 104a1005 104a1006 select t2.* from table1 t1, table1 t2 where t1.fid = t2.fid and t1.fno <> t2.fno;3、有
网友问题摘抄,不定列转换
举例如下-------- 表1内容: ENFIELD CHNAME A 序号1 B 序号2 C 序号3 D 序号4 E 序号5 ... ... ------------ 表2内容: A B C D E ...... 值1 值2 值3 值4 值5 ...... ------------ 要求SQL查询得到如下效果:把表2中的一行数据,作为表1新增的一列(VALUES)显示出来。 ENFIELD CHNAME VALUES A 序号1 值1 B 序号2 值2 C 序号3
非常有效删除重复行
EXP:select line,value,k0 from kk1 10 A1 10 A1 10 A3 31 B3 31 B1 10 A1 10 A1 10 A3 31 B3 31 B解决快速的语句:delete from kk a where a.rowid NOT in(select max(b.rowid) from kk b where a.line=b.line and a.value=b.value and a.k0=b.k0)----------------------------------------------------------------如果表的列数少的,这个语句就好用!利用分析函数:delete from kk where rowid in(select row_id from (select rowid row_id,row_number() over(partition by line,k0,value order by rowid ) rn from kk) where rn<>
rank,dense_rank,row_number 分析函数
rank:1 A 40 11 B 32 22 B 32 23 B 31 4dense_rank1 A 40 11 B 32 22 B 32 23 B 31 3row_number1 A 40 11 B 32 22 B 32 33 B 31 4通过三个结果显示可以看出排名的时候rank dense_rank 就是在相同排名,rank是有增加 dense_rank是没有,而row_number就是按顺序排列![@more@]
分析函数rollup||cube学习
对rollup,对数据合计的功能1 101 221 312 40select nvl(line,'合计') line ,sum(value) from kk group by rollup(nvl(line,'合计'))order by lineRESULT:1 632 40103cube学习:select * from kkline value ko 1 10 A 1 22 A 1 31 B 2 40 B--cubeselect line,k0,sum(value)from kkgroup by cube(line,k0)order by lineRESULT:1 1 A 322 1 B 313 1 634 2 B 405 2 406 A 327 B 718 1031.增加按line 汇总2.按ko汇总3.总合计-------------------------------加入grouping函数:当前汇总记录是利用该字段得出,返回1,否
JOB创建,解决网友问题
1.JOB是否可以定义每月10号,20号早8点执行?如果不行,有什么建议实现此调度?--create table aa(a number,b date); create or replace procedure pro as begin insert into aa values(1,sysdate); end; declare jobno number; begin dbms_job.submit(jobno,'pro;',trunc(sysdate),'trunc(sysdate)+600/(12*60)'); commit; end;_________参数说明DBMS_JOB.SUBMIT(:jobno,//job号 'your_procedure;',//要执行的过程 trunc(sysdate)+1/24,//下次执行时间 'trunc(sysdate)+1/24+1'//每次间隔时间 ); 删除job:dbms_job.remove(jobno); 修改要
分析函数connect by | start with学习
/*某产品加工工序 当前工序,下个工序 A05,A06 A06,A07 A10,A11 A11,A12 A12,A05 用oracle-sql,求工序的顺序清单 >>> sort >> A10 A11 A12 A05 A06 A07 */create table test( aaa varchar2(10) ,bbb varchar2(10))insert into test values('A05','A06');insert into test values('A06','A07');insert into test values('A10','A11');insert into test values('A11','A12');insert into test values('A12','A05');insert into test values('A13','A14');--insert into test values('A14','A15');--insert into
学习分析函数LAG以后,马上学以致用 帮一网友解决问题.
QUOTE: 原帖由 lypch 于 2008-7-12 11:28 发表 screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new windownCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" src="http://www.itpub.net/images/common/back.gif" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new windownCTRL+Mouse wheel to zoom in/out'
学习oracle中行列互转[转]
http://www.itpub.net/thread-1017026-1-1.html[@more@]oracle行列转换总结最近论坛很多人提的问题都与行列转换有关系,所以我对行列转换的相关知识做了一个总结,希望对大家有所帮助,同时有何错疏,恳请大家指出,我也是在写作过程中学习,算是一起和大家学习吧。行列转换包括以下六种情况:*列转行*行转列*多列转换成字符串*多行转换成字符串*字符串转换成多列*字符串转换成多行下面分别进行举例介绍。首先声明一点,有些例子需要如下10g及以后才有的知识:a。掌握model子句,b。正则表达式c。加强的层次查询讨论的适用范围只包括8i,9i