login.sql所在的位置 显示当前连接的oracle SID及用户命令 转载
http://blog.csdn.net/yabingshi_tech/article/details/8979377当退出或关闭sqlplus的时候,之前设置的命令就不再被保留了。为了避免每次使用SQLPLUS时都重新敲入一遍这些设置命令,可以创建一个login.sql文件。这个文件必须放在sqlplus的启动文件夹中或者包含在环境变量sqlpath所指向的文件夹路径中。glogin.s...
dbms_flashback中enable_at_time(scn)用法测试
其实就是临时restore point的思想,有了enable_at_time(scn)我们在执行flashback query或者flashback versions query时就不需要写as of 和versions between 子句了。[@more@]SQL> select * from tt;ID NAME---------- --------------------1 a2 e4 dSQL> select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER------------------------8504779SQL> exec dbms_flashback.enable_at_system_change_number(8504779);PL/SQL procedure successfully completed.SQL> select * from tt;ID NAME------
segment advisor:no segment found
在em中使用segment advisor的时执行完毕查看结果的时侯收到no segment found,原因是当segment 里面的free space小于10m的时侯oracle可能认为这个segment 里的free space太小了,可能没有必要处理,所以也不会给出任何建议,最后就是这个提示。[@more@]SQL> select type,message,more_info from dba_advisor_findings2 where task_name in ('SEGMENTADV_4328829','SEGMENTADV_9662658','SEGMENTADV_9854361');TYPE MESSAGE MORE_INFO---------------------- ---------------------------------------- -------------------------------
grouping sets的作用
grouping sets的作用是对cube的子集处理,查了一下发现oracle从9i开始支持grouping sets,但是在10.2.0.1的时侯发现grouping sets还是比较弱的,在我接触的版本中发现从10.2.0.5开始就很完善了[@more@]cube是对分组字段的所有组合分组,grouping sets是对cube所有组合分钟种子集的分组显示,不同的版本语法也略有差别。select owner,status ,count(*)from dba_objectsgroup by grouping set(owner,status,()|null)10.2.0.5之前只能是grouping set((owner,status),status,()),后续的版本可以是grouping set(owner,status,null),10.2.0.5之
flashback versions query中常用的伪列
flashback versions query中出现的伪列比较多,不容易记住,放在这里备查。[@more@]scn:select versions_operation,versions_startscn,versions_endscn,versions_starttime,versions_endtime,versions_xid,id,namefrom t versions between scn minvalue and maxvalue--=========================================timestamp:select versions_operation,versions_startscn,versions_endscn,versions_starttime,versions_endtime,versions_xid,id,namefrom t versions between timestamp minvalue and maxvalue
表与表之间连接式on,using以及自然连接的区别
群内经常有人问,简单总结一下,刚接触时可能有些不太好理解:[@more@]on比较好理解,on后面可以出现关联条件也可以出现非关联条件:SQL> create table t1(id int) tablespace users;表已创建。SQL> create table t2(id int,name varchar2(10)) tablespace users;表已创建。SQL> select t1.*,t2.* from t1 join t2 on t1.id=t2.id and t2.name='a';未选定行SQL> insert into t1 values(1);已创建 1 行。SQL> insert into t2 values(1,'a');已创建 1 行。SQL> insert into t2 values(2,'b');已创建 1 行。SQL> insert
语句审计相关的表是stmt_audit_option_map
和权限审计相关的表是system_privilege_map,和对象审计相关的表是table_privilege_map,和语句审计相关的表是stmt_audit_option_map,有关语句审计oracle的描述SQL statement auditing: The statement shown in the slide can audit any data definitionlanguage (DDL) statement that affects a table, including CREATE TABLE, DROP TABLE,TRUNCATE TABLE, and so on. SQL statement auditing can be focused by username or bysuccess or failure:SQL> AUDIT TABLE BY hr WHENEVER NOT SUCCESSFUL;[@more@]
insert all和insert first测试
oracle从9i支持insert all和insert first,对涉及到多个表的批量数据插入有很大帮助。下面看看基本语法以及他们之间的区别。[@more@]C:>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 木 10月 20 08:39:58 2011Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options--===============================--不带条件的insert all测试SQL> create table t_tab(table_n
如何理解树状sql中ORDER SIBLINGS BY排序的含义
SIBLINGS 是兄弟姐妹的意思,那么ORDER SIBLINGS BY的意思就是在兄弟姐妹之间的排序,和order by所表示的含义绝对不同,针对树状sql,我觉得ORDER SIBLINGS BY更有意义,树状sql查询出来的结果本身就是按照层次(hierarchy)结构排好序的,而加上关键字SIBLINGS 其实是在hierarchy内部进行排序。[@more@]You have to be careful when trying to order the rows of output in a hierarchicalquery. By default, if you omit the ORDER BY clause altogether, the query attemptsto sort rows in an order that’s reflective of the hierar
group by中cube含义解析
理解了rollup,那么cube相对就好理解了,cube是对rollup的深度使用。cube是group by中几个字段的组合分组,其实要表示的典型的意思是dw中转取的概念,每一个group by中要分组的字段本身就是dw中的一个维度,而cube的出现把dw的含义体现的淋漓尽致. rollup和grouping总结如下:http://warehouse.itpub.net/post/777/524442[@more@]SQL> select status,owner,object_type,count(*) from dba_objects2 where owner not in ('SYS','SYSMAN','SYSTEM','DBSNMP','WMSYS')3 group by cube(status,owner,object_type)4 order by status,owner,o
group by中rollup的以及grouping含义解析
rollup是对group by分组子句的扩充和延伸,最终的结果就是求小计和总计,其实是从多角度来分析和统计数据,是对dw业务的支持。[@more@]下面看几个rollup使用的例子就清楚了:SQL> select status,owner,object_type,count(*) from dba_objects2 where owner not in ('SYS','SYSMAN','SYSTEM','DBSNMP','WMSYS')3 group by rollup (status,owner,object_type)4 order by status,owner,object_type5 ;STATUS OWNER OBJECT_TYPE COUNT(*)------- ------------------------------ ------------------- ----------INVALID PUBLIC SYNONYM 19I
约束的DEFERRABLE and DEFERRED特性
看到经常有人问这个东西,doc看到了,随手记录一下。[@more@]DEFERRABLE and DEFERREDYou can temporarily set a constraint to DEFERRED so that a large set of data might beprocessed without any constraint checking until after the transaction is completed. Todo this, create the constraint with the DEFERRABLE clause, as follows:ALTER TABLE SHIPS DROP CONSTRAINT FK_SHIPS_PORTS;ALTER TABLE SHIPS ADD CONSTRAINT FK_SHIPS_PORTS FOREIGN KEY (HOME_PORT_ID)REFERENCES PORTS (PORT_ID) DEFERRABLE;The default settin
错误ORA-02067的艰难模拟
客户系统经常报错误ORA-02067,搜了一下,有关这个错误的解释几乎都是:Cause: A failure (typically a trigger or stored procedure with multiple remote updates) occurred such that the all-or-nothing execution of a previous Oracle call cannot be guaranteed.Action: rollback to a previous savepoint or rollback the transaction and resubmit.[@more@]下面是我的一个模拟过程:C:>sqlplus system/system@orclSQL*Plus: Release 10.2.0.1.0 - Production on 星期六 9月 3 21:33:32 2011Copyright (c) 1982, 2005, Oracle.
伪行列转换!
不知道该起个怎样的标题,讲课时一位学员提出了这样一个需求,搜了一下可以通过wmsys.wm_concat来实现,但是客户使用的是9i,于是在群里的一个哥们的帮助下,通过树状sql结合分析函数实现了客户的要求,不过客户反应看不懂,后来我还是用cursor笨办法来实现一下:[@more@]SQL> select * from t;ID NAME AGE---------- ---------- ----------2 b 302 a 301 a 301 b 30SQL> select id,name_path from (select id,name_path,2 row_number() over(partition by id order by id,curr_level desc) name_path_rank3 from (select id,name,ra
audit时的by session和by access选项的区别!
不知道该起一个怎样的标题,总之写这个文章的目的是源于一个从我这儿报名考ocp的哥们的问题,他做了一个针对042题库上第12题的测试然后向我求证答案是否正确,很显然答案A是不正确的,原因就像下面doc说的在语句审计和权限审计审计DDL语句时只能使用by access,可语法上oracle并没有限制,也就是说使用by session时也不会报错,这样很容易引起误导,感觉oracle在很多地方都不够严谨。Number of Audit Records from Multiple Executions of a StatementIf an audited statement is issued multiple times in a single user session, then y
oracle 10g分析函数最终版(转)
http://wenku.baidu.com/view/b799103567ec102de2bd89c0.html[@more@]http://wenku.baidu.com/view/b799103567ec102de2bd89c0.html
树状sql中connect by里prior的含义!
搜集了几篇和树状sql相关的几篇文章...http://www.bithink.cn/bbs/viewthread.php?tid=87&extra=page%3D2&sid=lyPZPphttp://www.cnblogs.com/ZHF/archive/2008/09/10/1288101.html在树状sql里其实最难理解的我觉得就是connect by之后的prior关键字了,就像外联接字段边上的+,其实prior和+的意思非常相似,如果我们希望从start with 后面字段提供的值作为节点检索它的孩子,那么就把prior写在connect by 中关联条件start with 后面字段等式的另外一侧;如果我们希望从start with 后面字段提供的值作为节点检索它的父亲,那么就把p
oracle 多表连合修改----BYPASS_UJVC(转)
原文连接:http://blog.chinaunix.net/u/28618/showart_347103.html这就是oracle中支持的多表关联更新中的语法,这种语法比使用子查询更新效率更高。[@more@]方法一:ORA-01779: cannot modify a column which maps to a non-key-preserved table例如,使用以下的更新查询就会出现该错误。CREATE TABLE test1 ( id integer primary key, num integer );INSERT INTO test1 VALUES (1,0);INSERT INTO test1 VALUES (2,0);INSERT INTO test1 VALUES (3,0);INSERT INTO test1 VALUES (4,0);CREATE TABLE test2 ( id integer, num integer, upd
和外键相关的一点性能问题总结!
当存在主外键关系的时候,如果外键上没有索引,而且从表(有外键的表)又比较大时,一些操作主表的动作,如delete可能会消耗很大的资源,因为在操作主表的同时oracle内部需要访问从表。[@more@]SQL> create table t tablespace users as select * from dba_objects;表已创建。SQL> alter table t add constraint pk_t primary key (object_id);alter table t add constraint pk_t primary key (object_id) *第 1 行出现错误:ORA-01449: 列包含 NULL 值; 无法将其变更为 NOT NULLSQL>
系统权限ADMINISTER DATABASE TRIGGER的作用
基于database创建一个系统trigger,遇到了权限问题,查了一下原来是需要ADMINISTER DATABASE TRIGGER权限[@more@]SQL> create or replace trigger trigg_db 2 after logon on database 3 -- for each row 4 declare 5 -- local variables here 6 begin 7 insert into t_trace values(sys_context('userenv','ip_address'), 8 sys_context('userenv','terminal'), 9 sys.login_user, 10 sysdate, 11 sys.sysevent); 12 end trigg_db; 13 / after logon on d