`
helloyesyes
  • 浏览: 1333989 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Oracle 小知识 总结(一)

阅读更多

Oracle是一个庞大的系统,里面的知识点很多,在学习的时候,看到一些知识点,就贴了下来,尽不知中贴了这么多,就先做个小结吧。里面有的知识点已经单独拿出来写成单篇的blog(http://blog.csdn.net/tianlesoftware)了。有的还没有进行整理。好记性不如烂笔头,不过我用的不是笔。^_^...

这里面大部分内容都是我泡CSDN论坛的时候整理的,现在要忙其他的事,就很少去了。泡论坛的那段时间,是我进步最快的时间,所以如果想在Oracle上有所发展的朋友,建议也可以去论坛泡泡。看到自己会的知识点,就帮别人解答,不会的就自己研究学习,一段时间下来,会有很大的进步。而且还能认识很多朋友。实在是一举两得的事。

1.每天的8002300每隔5分钟执行一个sql语句的JOB

--建立一个存储过程

CREATEORREPLACEPROCEDUREp_jobtestIS

v_hhVARCHAR2(2);

BEGIN

v_hh:=to_char(SYSDATE,'hh24');

IFv_hh>='08'ANDv_hh<='22'THEN

--你的sql语句

NULL;

ENDIF;

END;

/

--提交一个JOB

DECLARE

v_jobnoNUMBER;

BEGIN

dbms_job.submit(v_jobno,

'p_jobtest;',

trunc(SYSDATE,'mi')+1/1440,

'trunc(SYSDATE,''mi'')+5/1440');

END;

/

2.RMAN中的list命令显示的信息是从控制文件里获取的,如果使用rm等命令手工的删除备份文件,这个动作不会同步到控制文件,造成不一致,这种不一致会导致使用rman时报错。可以使用delete删除这些过期的记录,在用就不会报错了。

RMAN>crosscheckcopy;

RMAN>listcopy;

RMAN>deleteexpiredcopy;

3.触发LGWR进程的条件有:

1.用户提交

2.1/3重做日志缓冲区未被写入磁盘

3.有大于1M的重做日志缓冲区未被写入磁盘

4.3秒超时

5.DBWR需要写入的数据的SCN大于LGWR记录的SCNDBWR触发LGWR写入。

4.触发DBWR进程的条件有:

1.DBWR超时,大约3

2.系统中没有多余的空缓冲区来存放数据

3.CKPT进程触发DBWR

5.每隔3秒钟ckpt会去更新控制文件和数据文件,记录checkpoint执行的情况。

当发生checkpoint时,会把SCN写到四个地方去。

三个地方于controlfile内,一个在datafileheader

6.触发CheckPoint(检查点)条件有很多,比如:

1.通过正常事务处理或者立即选项关闭例程时(shutdownimmediate或者Shutdownnormal),

2.当通过设置初始化参数:

LOG_CHECKPOINT_INTERVAL,

LOG_CHECKPOINT_TIMEOUT,

FAST_START_IO_TARGET强制时;

3.当数据库管理员手动请求时:

ALtersystemcheckpoint;

altertablespace...offline;

4.每次日志切换时;

altersystemswitchlogfile

注意:

1.altersystemswitchlogfile也将触发完全检查点的发生。

2.alterdatabasedatafile...offline不会触发检查点进程。

7.RECOVERDATABASEUNTILCANCELRECOVERDATABASEUNTILCANCELUSINGBACKUPCONTROLFILE;区别

1)RECOVERDATABASEUNTILCANCEL==>OPENDATABASERESETLOG

==>DATAFILEHEADERSCN一定会小于CONTROLFILEDATAFILESCN

如果你有进行RESTOREDATAFILE,则该RESTOREDATAFILEHEADERSCN一定会小于目前CONTROLFILEDATAFILESCN,此时会无法开启数据库,必须进行mediarecovery。重做archivelog直到该datafileheaderSCN=currentscn

8.建表前判断表是否存在的存储过程。

Oracle中没有droptable...ifexists语法。所以我们可以在创建表之前用如下存储过程来判断。

createorreplaceprocedureproc_dropifexists(

p_tableinvarchar2

)is

v_countnumber(10);

begin

selectcount(*)

intov_count

fromuser_objects

whereobject_name=upper(p_table);

ifv_count>0then

executeimmediate'droptable'||p_table||'purge';

endif;

end;

9.表属性中pctused,pctfree作用

表示数据块什么时候移入和移出freelist

pctused:如果数据块的使用率小于pctused的值,则该数据块重新加入到fresslist中。

pctfree:如果数据块的使用率高于pctfree的值,则该数据块从freelist中移出。

10.oracle表空间大小没有限制,根存储空间而定。

oracle9i或以下,单个数据文件最大32G(对于8K的数据块),整个数据库最多有64K个数据文件.单个表空间的数据文件数量没有具体的限制,也应该是在64K以下.oracle10g以上,引入了bigfiletablespace,bigfiletablespace只有一个数据文件,最大为4G*8k=32Tdatabasefilesize:Operatingsystemdependent.Limitedbymaximumoperatingsystemfilesize;typically222(222次方)or4Mblocks

11.Oracle利用现有的表创建一张新表,只要表结构相同
createtabledavidasselect*fromall_userswhere1<>1;

12.循环插入数据
declareiinteger;
begin
foriin1..100000loop
insertintotestvalues(i);
endloop;
commit;
end;

13.开发人员通常习惯赋予所有用户DBA权限,查看权限
Select*FromUser_Role_Privs
Select*FromUser_Sys_Privs

14.看数据文件大小,单位是M
selectround(bytes/(1024*1024),0)total_spacefromdba_data_files
selectsum(bytes/(1024*1024))total_spacefromdba_data_files

15控制文件大小
selectsum(block_size*file_size_blks)/1024/1024fromv$controlfile

16.建立表空间
CREATETABLESPACEdata01
DATAFILE'/oracle/oradata/db/DATA01.dbf'SIZE500M
UNIFORMSIZE128k;#指定区尺寸为128k,如不指定,区尺寸默认为64k删除表空间
DROPTABLESPACEdata01INCLUDINGCONTENTSANDDATAFILES;
修改表空间大小
alterdatabasedatafile'/path/NADDate05.dbf'resize100M

查看表空间:

selecttablespace_name,file_name,sum(bytes)/1024/1024table_sizefromdba_data_filesgroupbytablespace_name,file_name;

17.有没有被lock,可以通过这2dynamicview来确定:
v$locked_object,V$session

可以把该session杀掉。
selectsid,serial#fromv$sessionwhereusername='XXXX'
把得到的sidserial#号替换到下面的语句中:
altersystemkillsession'SID,SERIAL#'

18.PL/SQLoracle查询前10条信息
SELECT*FROMtableWHEREROWNUM<11
select*from(select*fromtableorderbydesc)whererownum<=5
==selecttop5*fromtable;

19.查看表上是否存在的索引
select*fromuser_indexeswheretable_name='yourtablename'
createindexIX_Tablename_columnontablename(column)

20.selectid,id2,round((id/id2)*100,2)||'%'percentfromtest;

21.查询表的行数
selectcount(*)fromtable_name;全表扫描,会自已找表有索引列并且该列为非空的(因为只有非空才能确保记录数是全的),INDEX_FFS.
selectcount(1)fromtable_name;不走索引,效率要高,但在表中有非空索引时也是走INDEX_FFS

22.function来查看当前sessiontrace文件的文件名
如下
createorreplacefunctiongettracenamereturnvarchar2is
v_resultvarchar2(200);
begin
SELECTd.VALUE
||'/'
||LOWER(RTRIM(i.INSTANCE,CHR(0)))
||'_ora_'
||p.spid
||'.trc'intov_result
FROM(SELECTp.spid
FROMv$mystatm,v$sessions,v$processp
WHEREm.statistic#=1ANDs.SID=m.SIDANDp.addr=s.paddr)p,
(SELECTt.INSTANCE
FROMv$threadt,v$parameterv
WHEREv.NAME='thread'
AND(v.VALUE=0ORt.thread#=TO_NUMBER(v.VALUE)))i,
(SELECTVALUE
FROMv$parameter
WHERENAME='user_dump_dest')d;

returnv_result;
endgettracename;

运行SQL>selectgettracename()fromdual;即可
GETTRACENAME()
-----------------------------------------------------------------------

F:\DEVELOPER\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\UDUMP/orcl_ora_3800.trc


23.selectcasewhen(a>b)thenaelsebendfromTableA;
selectgreatest(a,b)fromtb

24.TRUNCATETABLETable_name
使用truncate时,速度比delete,但是系统不做Log。清空表的数据,仅保留类别结构,被删除的数据不能ROLLBACK,这点是与DELETE的主要差别.不能Rollback也就是会删除log文件.SQLServer里面如果你用Truncate,自动增长的行又会从1开始

25.selectsubstrb('大小abc',1,6)fromdual;


26.表中的数据如下图所示
abc
1PP41982SO90029
2PP41982SO90029
只取出字段bc不重复的字段,

selectb,cfromtgroupbyb,chaving(count(b)<2)

27.查询锁的情况
1).insertintotestvalues(1);
2).selectuserenv('sid')fromdual;
3).select*fromv$lockwheresid=''
sidv$session中有这个列,可以结合v$session查询更多的信息

28.删除重复行:
SQL>DELETEFROMaWHEREROWIDIN(SELECTMAX(ROWID)FROMa);
已删除1行。
SQL>select*froma;
NAMEIDORDER_TITLE
--------------------------------------------------
中国科学技术大学1科学
中国科学技术大学1科学
SQL>

29.查看索引信息

--查看索引名称
SELECT*FROMUSER_INDEXES;
--查看索引列名
SELECT*FROMDBA_IND_COLUMNS;
SELECT*FROMUSER_IND_COLUMNS;
SELECT*FROMALL_IND_COLUMNS;

30.oracletrunc()函数用法


1.TRUNC(fordates)
TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:
TRUNCdate[,fmt]
其中:
date一个日期值
fmt日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去
下面是该函数的使用情况:
TRUNCTO_DATE(’24-Nov-199908:00pm’,’dd-mon-yyyyhh:miam’)
=’24-Nov-199912:00:00am’
TRUNCTO_DATE(’24-Nov-199908:37pm’,’dd-mon-yyyyhh:miam’,’hh’)=’24-Nov-199908:00:00am’

2.TRUNC(fornumber); font-siz

分享到:
评论

相关推荐

    oracle知识点总结.txt

    oracle知识点总结.txt 个人对oracle的一些总结

    oracle 基础知识总结初学者必备

    ### Oracle基础知识总结初学者必备 Oracle数据库作为一款广泛使用的数据库管理系统,在企业和开发领域扮演着重要的角色。对于初学者而言,掌握其基础知识是非常必要的。本文将根据提供的内容进行深入解析,并结合...

    Oracle知识点总结

    ### Oracle知识点总结 #### 1. 创建与删除用户 **创建用户** - **命令格式**:`CREATE USER 用户名 IDENTIFIED BY 密码;` - 示例:`CREATE USER cht IDENTIFIED BY cht;` - **注意事项**: - 在创建用户时,...

    Oracle学习笔记(Oracle知识点总结)

    Oracle知识点总结,适合初学者,平时多联系,放在手机上,当做电子书来看。

    Oracle重要知识总结

    Oracle是世界上最广泛使用的数据库管理系统之一,它在企业级应用中占据着重要地位。本文将针对“Oracle重要知识总结”这一主题,深入探讨Oracle的核心...以上只是Oracle知识海洋中的一小部分,更多宝藏等待你去探索。

    oracle知识总结

    oracle系统学习总结包涵oracle的语法if else case when,触发器 游标函数等常用知识总结,希望对你有帮助!

    oracle小常识oracle小常识

    在这个场景中,我们主要讨论Oracle的一些基础知识,特别是与数据导入导出、表空间管理和自动化备份恢复相关的操作。 1. 数据导入导出工具`exp`和`imp` Oracle提供了`exp`(Export)和`imp`(Import)工具,用于...

    oracle数据库知识点总结.txt

    中软工作总结一:oracle

    oracle学习心得总结

    本文将根据提供的文档内容,总结和扩展Oracle数据库的基础知识点,帮助初级程序员更好地理解和掌握Oracle。 #### 一、Oracle 用户管理 1. **创建用户** - 命令格式:`CREATE USER 用户名 IDENTIFIED BY 密码;` ...

    oracle总结oracle总结面试必备

    以下是对Oracle数据库一些关键知识点的详细阐述,这些内容对于面试和日常开发工作都非常关键。 一、SQL基础 Oracle SQL是用于操作Oracle数据库的语言,包括数据查询、数据插入、更新和删除。掌握SQL的基础语法,如...

    Oracle数据库学习总结

    在Oracle数据库的学习中,SQL*Plus...通过学习这些基本概念和操作,你可以开始掌握Oracle数据库的基础知识,为进一步深入学习和应用Oracle打下坚实的基础。随着经验的积累,你将能够处理更复杂的数据库管理和优化任务。

    oracle常用知识总结

    oracle常用知识总结 Oracle 数据库常用的数据类型 number 数字类型 number(12) 最大位数为 12 位的数字 number(10,2) 最大位数 10 位的数字 (整数 8 位,小数位 2 位,最大有效位为 10 位)

    Oracle核心基础总结

    "Oracle核心基础总结"涵盖了Oracle数据库系统的基础知识,对于初学者和需要巩固基础的IT从业者来说,是非常宝贵的资源。以下是Oracle核心基础的一些关键知识点: 1. 数据库概念:了解数据库的基本构成,如表、索引...

    Oracle数据库知识总结.mm

    Oracle数据库知识总结.mm

    Oracle 基础知识总结

    以下是对Oracle基础知识的详细总结: 第一章:Oracle概述 Oracle数据库是Oracle公司的产品,提供了一整套数据管理解决方案。它支持多种操作系统平台,如Windows、Linux、Unix等。Oracle采用SQL作为查询语言,并提供...

    oracle学习总结(适合刚学习oracle的人)

    本文将根据"oracle学习总结(适合刚学习oracle的人)"这一主题,深入探讨Oracle数据库的基础知识,帮助初学者建立起对Oracle的基本理解。 1. **Oracle简介**:Oracle数据库是由美国甲骨文公司开发的一款产品,它...

    Oracle知识点总结(吐血推荐).doc

    Oracle知识点总结 本文档旨在总结Oracle数据库的相关知识点,涵盖了Oracle数据库的安装和配置、开发工具、数据库设计、事务处理、函数和存储过程等方面的内容。 一、Oracle数据库的安装和配置 Oracle数据库的安装...

    Oracle数据库知识点总结 Oracle数据库架构与组件学习攻略

    Oracle数据库知识点总结 章节目录 一、Oracle数据库概述 二、Oracle数据库架构与组件 三、SQL语言基础 四、PL/SQL编程 五、数据库对象管理 六、数据备份与恢复 七、性能优化与安全管理 八、如何学习Oracle数据库 九...

    Oracle Form 实战总结.pdf

    ### Oracle Form 实战总结知识点详解 #### 一、概述 《Oracle Form 实战总结》文档主要介绍了Oracle Forms的实战经验和技巧,特别强调了如何通过具体的步骤来创建一个客户化的Oracle应用。这对于那些希望深入理解...

    oracle精品实例,练习总结

    这个"oracle精品实例,练习总结"的压缩包文件显然包含了nickcheng个人整理的一系列关于Oracle数据库的操作实例和学习心得,旨在帮助用户深入理解和应用Oracle技术。下面我们将深入探讨Oracle数据库的一些关键知识点。...

Global site tag (gtag.js) - Google Analytics