oracle job小节
一、设置初始化参数 job_queue_processes sql> alter system set job_queue_processes=n;(n>0) job_queue_processes最大值为1000 查看job queue 后台进程 sql>select name,description from v$bgprocess; 二,dbms_job package 用法介绍 包含以下子过程: Broken()过程。 change()过程。 Interval()过程。 Isubmit()过程。 Next_Date()过程。 Remove()过程。 Run()过程。 Submit()过程。 User_Export()过程。 What()过程。 [@mo
最近有点郁闷
今天同事问我什么时候能够回南京,我说6月初.他竟然说南京这边正缺人,经分2.0还在启动中.唉!当初公司安排三月到五月一二四六临时加班就是为了经分2.0项目.可现在2.0几乎还在启动阶段,我也不知道一二四六加班的制度要到什么时候能够结束.我在徐州出差的日期也快结束了,当初我还庆幸自己到徐州出差了,就不用在南京加班了,看来回南京还是躲不了加班的厄运! 最近公司走的人也蛮多的,前台应用的领头人物走了,精确营销的主力前台也走了,新大陆的前台真是前台渺茫!后台的一个在公司待了两三年的MM也走了,结果她以前的事情全部交接给了我
什么时候需要重建索引
条件1 在分析(analyze)指定索引之后,查询index_stats的height字段的值,如果这个值>=4 ,则最好重建(rebuild)这个索引。虽然这个规则不是总是正确,但如果这个值一直都是不变的,则这个索引也就不需重建。 条件2 在分析(analyze)指定索引之后,查询index_stats的del_lf_rows和lf_rows的值,如果(del_lf_rows/lf_rows)*100 > = 20,则这个索引也需要重建。 例子: SQL > analyze index IND_PK validate structure; SQL > select name,height,del_lf_rows,lf_rows,(del_lf_rows/lf_rows) *100 from index_stats; NAME HEIGHT D
关于rowdi
一.rowid简介 rowid就是唯一标志记录物理位置的一个id,在oracle 8版本以前,rowid由file#+block#+row#组成,占用6个bytes的空间,10 bit 的 file# ,22bit 的 block# ,16 bit 的 row#。 从oracle 8开始rowid变成了extend rowid,由data_object_id#+rfile#+block#+row#组成,占用10个bytes的空间, 32bit的 data_object_id#,10 bit 的 rfile#,22bit 的 block#,16 bit 的 row#.由于rowid的组成从file#变成了rfile#,所以数据文件数的限制也从整个库不能超过1023个变成了每个表空间不能超过1023个 数据文件。 说
Oracle 物化视图创建
Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。物化视图可以分为以下三种类型:包含聚集的物化视图;只包含连接的物化视图;嵌套物化视图。三种物化视图的快速刷新的限制条
关于append 提示总结
Table Mode Insert Mode ArchiveLog mode result----------- ------------- ----------------- ----------LOGGING APPEND ARCHIVE LOG redo generatedNOLOGGING APPEND ARCHIVE LOG no redoLOGGING no append ARCHIVE LOG redo generatedNOLOGGING no append ARCHIVE LOG redo generatedLOGGING APPEND noarchive log mode no redoNOLOGGING APPEND noarchive log mode no redoLOGGING no append noarchive log mode redo generatedNOLOGGING no append noarchive log mode redo generated 简单来讲,就是表的模式和归档模式具有优先决
sql的几个数据字典
v$sqltext 存储的是完整的SQL,SQL被分割 SQL> desc v$sqltext Name Null? Type ----------------------------------------- -------- ---------------------------- ADDRESS RAW(4) --------- HASH_VALUE NUMBER --------- 和 address 一起唯一标志一条sql COMMAND_TYPE NUMBER PIECE NUMBER ---------- 分片之后的顺序编号 SQL_TEXT VARCHAR2(64) -------------- 注意长度[@more@]v$sqlarea --------- 存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息 SQL> desc v$s
分析函数
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。常用的分析函数如下所列:row_number() over(partition by ... order by ...)rank() over(partition by ... order by ...)dense_rank() over(partition by ... order by ...)count() over(partition by ... order by ...)max() over(partition by ... order by ...)min() over(partition by ... order by ...)sum() over(partition by ... order by ...)avg() over(partition by .
行分链与行迁移
行分链与行迁移----------------如果经常删除,那么可能不能重用块中的自由空间,所以对于这种情况,我们要利用空间的话,可以把pctused设置高点主要是在INSERT操作期间引发行分链操作。而行的迁移主要由UPDATE操作引起。行链接-- 行链接: Insert or Update引起,一个Row存在不同的block中, 行不同部分通过不同块地址(ROWID)链成一个链,可以通过设置大的DB_BLOCK_SIZE来减少行链接的发生,但无法避免(LOB) -- 行迁移: Update引起,由于PCTFREE过小,ROWID未变, 可以通过增大PCTFREE的值减少行迁移的发生 ------行分链是DB_BLOCK_SIZE设置不够大,
oracle中的角色
安全的实现 在多用户环境中,有效管理Oracle数据库最重要的方面就是创建一个安全模式来控制对数据库的访问和更改。在一个Oracle中,可以对单独的用户或数据库角色授予安全许可。 安全管理一般在3个级别中执行: ·数据库级 ·操作系统级 ·网络安全级 用户名、权限、组和角色 DBA或数据库安全管理员创建用户名(username)来提供有效的用户标识符,用来和数据库连接。在安装过程中自动创建两个赋予DBA角色的用户账号:SYS和SYSTEM。 角色(role)是权限的命名组,可以被创建、更改
外连接的两种写法的总结
最近发现自己对外关联比较模糊,特别是使用oracle老风格的(+)与ANSI风格的外关联的时候。今天下午没什么事情自己整理了一下子。--无其他条件select * from n_fwy_a a left join n_fwy_b b on a.id=b.id order by a.id;select * from n_fwy_a a ,n_fwy_b b where a.id=b.id(+) order by a.id;这两重写法的查询的结果一致--在主表加附加条件select * from n_fwy_a a ,n_fwy_b b where a.id=b.id(+) and a.id >5 order by a.id;select * from n_fwy_a a left join n_fwy_b b on a.id=b.id where a.id>5 order by a.id;select * from n_
好长时间没有写日记了!
唉!好久没有写日记了! 也好久没有更新我的博客了! 最近对自己的未来和职业方向,突然感到比较迷茫。在新大陆也待了快半年了,总是觉得现在从事的工作与我想从事的工作方向有所偏离。常常关注51job上的工作机会,又发现南京的工作机会不是很多,唉!郁闷中! 最近发现自己顾着一些琐事而没有去学习新的东西,有点颓废哟!现在发现自己一看到英文就头疼,想想大学里,花了那么多的时间和精力去学的东西,现在却很少用到,真有点遗憾! Pick up English, and keep on good good study and day day up ,please ! [@more@]
dbms_stats包介绍
ORACLE数据库的PL/SQL语句执行的优化器,有基于代价的优化器(CBO)和基于规则的优化器(RBO)。oracle推荐使用CBO优化器,RBO基于一套严格的语法规则,sql只要按照严格的语法规则书写,不管表和索引是否改变,都不影响PL/SQL的执行计划。CBO自ORACLE 7版被引入,ORACLE自7版以来采用的许多新技术都是只基于CBO的,如星型连接排列查询,哈希连接查询,反向索引,索引表,分区表和并行查询等。CBO计算各种可能"执行计划"的"代价",即cost,从中选用cost最低的方案,作为实际运行方案。各"执行计划"的cost的计
关于dbms_stats和Analyze的比较分析
1. 对于分区表,建议使用DBMS-STATS,而不是使用Analyze语句。a) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区 b) 可以倒出统计信息 c) 可以用户自动收集统计信息 2. DBMS_STATS的缺点 a) 不能Validate Structure b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句。c) DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True 3. 对于oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息。[@more@]
修改列
数据库中存储数据的方式:规则表---〉分区表索引组织表簇 修改列名alter table 表明 rename column rename 老列名 to 新列名添加 字段alter table 表名 add(字段名 类型);删除字段alter table 表名 drop column 字段名修改列属性alter table 表名 modify (字段名 新属性)设置某一个字段为无用状态alter table 表名 set unuesed column 字段名删除无用字段alert table 表名 drop unused cloumns添加主键alert table 表名 add constraint pkKey primary key(字段列表)表分区oracle 允许用户对标进一步的规划,即对标进一步的拆分,将表
SQL*Plus常用命令
show和set命令是两条用于维护SQL*Plus系统变量的命令 SQL> show all --查看所有68个系统变量值 SQL> show user --显示当前连接用户 SQL> show error --显示错误 SQL> set heading off --禁止输出列标题,默认值为ON[@more@]show和set命令是两条用于维护SQL*Plus系统变量的命令 SQL> show all --查看所有68个系统变量值 SQL> show user --显示当前连接用户 SQL> show error --显示错误 SQL> set heading off --禁止
一个有趣的左链接问题!
select /*parallel(t1,10) parallel(t2,10)*/ t1.stat_day, t1.service_code, t1.user_id,t2.area_id,t2.product_id, t2.consume_day,t2.min_call, t2.change_brand_time, t2.away_time,t2.status from mm_md_newservice_day t1 , mm_md_user_day t2 where t1.user_id=t2.user_id(+) and t1.apply_date=20070528 and t1.day_number=28 and t1.stat_day=20070528 and t2.day_number(+)=28 and t2.stat_day(+)=20070528; select /*par
用户在存储过程中拥有role的权限 的特殊性
在oracle中用户拥有的role权限在存储过程是不可用的。SQL> select * from dba_role_privs where grantee='TEST';GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE------------ ------------ ------------ ------------TEST DBA NO YES--用户拥有DBA这个role--再创建一个测试存储过程:create or replace procedure p_create_table isbeginExecute Immediate 'create table create_table(id int)';end p_create_table;--然后测试SQL> exec p_create_table;begin p_create_table; end;ORA-01031: 权限不足ORA-06512: 在"TEST.P_C
CREATE DATABASE LINK
CREATE DATABASE LINK PurposeUse the CREATE DATABASE LINK statement to create a database link. A database link is a schema object in one database that enables you to access objects on another database. The other database need not be an Oracle Database system. However, to access non-Oracle systems you must use Oracle Heterogeneous Services.Once you have created a database link, you can use it to refer to tables and views on the other database. In SQL statements, you can refer to a table or view on
建dblink语法!
CREATE [ SHARED ] [ PUBLIC ] DATABASE LINK dblink [ CONNECT TO { CURRENT_USER | user IDENTIFIED BY password [ dblink_authentication ] } | dblink_authentication ] [ USING 'connect_string' ] ; [@more@]