oracle手册索引
记录常用的语法对应的oracle手册[@more@]1,Net Services Reference -- 网络配置,listener.ora、tnsnames.ora、sqlnet.ora里参数定义2,SQL Reference -- oracle内置函数,各类DML、DDL语句语法3,Utilities -- sql*load,data pump(数据泵),exp/imp,external table(外部表)
OCP-FLASHBACK
OCP考点之FLASHBACK[@more@]对flashback还不熟,看到ocp上一个关于flashback的题目,下面针对题目的一点内容做了一下测试。题目是考关于对一个表做了flashback之后,主键约束、唯一索引、外键约束是否会自动恢复。以下是测试过程:SQL> DESC TEST_1Name Type Nullable Default Comments ----- ------------ -------- ------- -------- SID VARCHAR2(10) SNAME VARCHAR2(20) Y SQL> DESC T_TEST_FKName Type Nullable Default Comments ----- ------------ -
OCP-NEXT_DAY()函数
NEXT_DAY()函数用法中除了可用星期名外,还可以用1-7的数字[@more@]查询下一个周一的日期:select next_day(sysdate,'MONDAY') from dual还可以写为:select next_day(sysdate,2) from dual1 -- 周日2 -- 周一3 -- 周二4 -- 周三5 -- 周四6 -- 周五7 -- 周六其它数字参数无效
OCP-ROLLUP & CUBE
OCP考点之ROLLUP和CUBE[@more@]可以理解为将ROLLUP/CUBE后跟的参数作为维度,依次分层进行汇总,最后将索引层次的汇总进行union all 例子:select sid,sclass,sum(score) from test_6 group by rollup(sclass,sid); 该语句将先按sclass和sid汇总,然后按sclass汇总(sid字段填null),最后将两个结果集进行union all 例子:select sid,sclass,sum(score) from test_6 group by cube(sclass,sid); 该语句将先按sclass和sid汇总,然后按sclass汇总(sid字段填null),然
OCP-主键知识
OCP考点之主键知识[@more@]创建主键时,可以使用using index子句自定义索引 例子:ALTER TABLE test_6 ADD CONSTRAINT pk_test_6 PRIMARY KEY(sid,sclass) USING INDEX (CREATE UNIQUE INDEX uk_test_6 ON test_6(sid,sclass)); 删除主键时,如果需要连带删除索引则需要加drop index选项 例子:ALTER TABLE test_6 DROP PRIMARY KEY DROP INDEX; 当表的主键是复合主键的时候,如果需要删除主键字段,则需要加cascade constraint连带删除相关约束 例子:ALTER TABLE test_6 DROP COLUMN sclass CASCADE C
OCP-正则表达式
OCP考点之正则表达式[@more@]相关函数:REGEXP_LIKE、REGEXP_SUBSTR、REGEXP_INSTR、REGEXP_REPLACE表达式规则同标准正则表达式规则[[:alpha:]] 表示字母例子:ALTER TABLE CUSTOMERS ADD CONSTRAINT cust_f_name CHECK(REGEXP_LIKE(cust_first_name,'[[:alpha:]]'))NOVALIDATE;[[:digit:]] 表示数字
dba_dependencies的使用
最近数据中心数据库需要做清理,把一些不用的数据或表清理掉,但涉及到的应用又比较多,需要先了解应用之间的关系,使用dba_dependencies视图来查看各个表对应的应用程序。[@more@]常用的有几种情形:1、批量查看视图所依赖的表,当需要查看很多视图的时候,就会发现一个一个视图点开来看是一件多么痛苦的事。2、对于某些表,有哪些存储过程、函数、包引用了它,如果你想都不想就把一个自认为没人用的表给删除掉了,说不准马上就会有人来骂你了。在删除或清理某个表的数据之前,最好检查一下有谁的程序在用它。select *from dba_dependenc
ORA-06508 处理及心得
原本没问题的程序执行的时候报错ORA-06508,全局变量的问题[@more@]今天在测试代码时,原本执行正常的程序报了一个错:ORA-06508: PL/SQL: 无法找到正在调用 的程序单元我具体的操纵是这样几步:1、打开一个session执行测试程序。2、打开另一个会话修改测试程序并编译。3、回到第一个会话继续执行测试程序,这个时候程序里没有改动过的部分也会报错。出现这种情况的原因是因为,对于全局变量,每一个session会生成一个本地copy,如果程序重新编译的话,就会因程序里原变量找不到而丢弃该变量,继而导致这个错误。所以上述操作解释为:1、新
统计表的大小--按大小倒序
统计表的大小--按大小倒序[@more@]select dense_rank() over(order by max(sizepertab) desc,segment_name asc) rank,segment_name,segment_type,tablespace_name,max(sizepertabpar)||'M',max(sizepertab)||'M'from (SELECT t1.segment_name,t1.segment_type,t1.tablespace_name,SUM(t1.bytes/1024/1024) over(partition by t1.segment_name,t1.segment_type) sizepertab,SUM(t1.bytes/1024/1024) over(partition by t1.segment_name,t1.segment_type,t1.tablespace_name) sizepertabparFROM User_Segments t1WHERE t1.segment_type like
统计当前用户所有索引的大小--按大小倒序
统计当前用户所有索引的大小--按大小倒序[@more@]SELECT t1.segment_name,t1.segment_type,t1.tablespace_name,SUM(t1.bytes)/1024/1024||'M' as "size",t2.table_owner,t2.table_nameFROM User_Segments t1,user_indexes t2WHERE (t1.segment_type = 'INDEX' or t1.segment_type = 'INDEX PARTITION')and t1.segment_name = t2.index_name(+)GROUP BY t1.segment_name,t1.segment_type,t1.tablespace_name,t2.table_owner,t2.table_nameORDER BY SUM(t1.bytes) DESC