您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 数据库-oracle-学习之路
年数据库-oracle-学习之路1.数据库基础2.数据库主键生成SelectSubstr(To_char(dbms_random.value),2,22)||getUUID.NextvalFromdual;3.数据库空间查询--表空间在哪些空间下selectdf.tablespace_name表空间名,totalspace总空间M,freespace剩余空间M,round((1-freespace/totalspace)*100,2)使用率%from(selecttablespace_name,round(sum(bytes)/1024/1024)totalspacefromdba_data_filesgroupbytablespace_name)df,(selecttablespace_name,round(sum(bytes)/1024/1024)freespacefromdba_free_spacegroupbytablespace_name)fswheredf.tablespace_name=fs.tablespace_name;--查用户下所用空间SELECTowner,tablespace_name,ROUND(SUM(BYTES)/1024/1024,2)USED(M)FROMdba_segmentsGROUPBYowner,tablespace_nameORDERBYSUM(BYTES)DESC;--查用户下所有表所占空间selectOWNER,t.segment_name,t.segment_type,sum(t.bytes/1024/1024)mmmfromdba_segmentstwheret.owner='JIANGSU'andt.segment_type='TABLE'groupbyOWNER,t.segment_name,t.segment_typeorderbymmmdesc;4.oracle之删除重复数据selecta.rowid,a.*from表名awherea.rowid!=(selectmax(b.rowid)from表名bwherea.字段1=b.字段1anda.字段2=b.字段2)---删除deletefrom表名awherea.rowid!=(selectmax(b.rowid)from表名bwherea.字段1=b.字段1anda.字段2=b.字段2)5.oracle之查询数据第一条记录select*fromtabrownum26.oracle之存储过程/函数等书写规则7.oracle之正则表达式函数:regexp_like、regexp_substr、regexp_instr、regexp_replace()Oracle使用正则表达式离不开这4个函数:1。regexp_like2。regexp_substr3。regexp_instr4。regexp_replace看函数名称大概就能猜到有什么用了。regexp_like只能用于条件表达式,和like类似,但是使用的正则表达式进行匹配,语法很简单:regexp_substr函数,和substr类似,用于拾取合符正则表达式描述的字符子串,语法如下:regexp_instr函数,和instr类似,用于标定符合正则表达式的字符子串的开始位置,语法如下:regexp_replace函数,和replace类似,用于替换符合正则表达式的字符串,语法如下:这里解析一下几个参数的含义:(1。source_char,输入的字符串,可以是列名或者字符串常量、变量。(2。pattern,正则表达式。3。match_parameter,匹配选项。取值范围:i:大小写不敏感;c:大小写敏感;n:点号.不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。4。position,标识从第几个字符开始正则表达式匹配。5。occurrence,标识第几个匹配组。6。replace_string,替换的字符串。8.oracle之decode函数decode函数=java中的true?A:Bdecode(参数,1,2,3)参数==1时结果为2否则结果为39.oracle之linux下启动脚本1)启动数据库oracle@suse92:~sqlplus/nologSQL*Plus:Release9.2.0.4.0–ProductiononFriJan2002:29:372006Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.SQLconnect/assysdbaConnectedtoanidleinstance.SQLstartupORACLEinstancestarted.TotalSystemGlobalArea135352820bytesFixedSize455156bytesVariableSize109051904bytesDatabaseBuffers25165824bytesRedoBuffers679936bytesDatabasemounted.2)关闭数据库:oracle@suse92:~sqlplus/nologSQL*Plus:Release9.2.0.4.0–ProductiononFriJan2002:29:372006Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.SQLconnect/assysdbaConnectedtoanidleinstance.SQLshutdwonabort;3)启动监听器oracle@suse92:~lsnrctlstart4)停止监听器oracle@suse92:~lsnrctlstop5)查看监听器状态oracle@suse92:~lsnrctlstatus或lsnrctl命令进入监听程序后再用status10.oracle之备份工作背景:Oracle10g服务器,Oracle10g客户端,windowsXP操作平台要求:Oracle数据库服务器对数据库ytcn每天自动备份一次。解决方案:利用任务计划、批处理文件和Oracle的exp导出功能,根据日期自动生成Oracle备份文件。详细步骤:1)创建批处理文件ytcn.batytcn.bat中详细内容如下:@echooffecho正在备份银通网Oracle数据库,请稍等......expuserid='ytcn/ytcn@ytcnassysdba'file=e:/bak/ytcn/oracle/ytcn/ytcn%date:~0,4%%date:~5,2%%date:~8,2%.dmplog=e:/bak/ytcn/oracle/ytcn/ytcn%date:~0,4%%date:~5,2%%date:~8,2%.logfull=yecho任务完成!其中红色部分是根据需要进行变动的地方,例如作者的项目名“银通网”,数据库ytcn用户名ytcn,密码ytcn,要在目录e:/bak/ytcn/oracle/ytcn下生成形如ytcn20090711.dmp和ytcn20090711.log的备份和日志文件,全表导出。另外:%date%的值在不同的系统、语言版本下可能是不一样的,控制面板里面区域选项的设定也会改变%date%的值。请先在命令行中测试echo%date%的返回值。%date:~4,10%是返回日期函数,~后的第一个参数是要截取的起始位置(从0开始),第二个参数是要截取的长度,如没有则是截取到最后,参数可酌情修改。如需要准确的时间做为文件名,请用%time%函数,参数同上。2)添加一个任务计划ytcn开始所有程序附件系统工具任务计划添加任务计划下一步在浏览中查找刚刚写好的ytcn.bat文件任务名输入ytcn,执行这个任务选择每天,下一步起始时间下午12:00,起始日期2009-7-11,下一步输入用户名及密码,用户名要求是管理员权限用户名,下一步完成点击完成之后,会在任务计划栏目下新增一个名为ytcn的任务计划,表明已经配置完毕。备注:有时点击完成之后,系统警告已创建新任务,但可能不能运行,因为无法设置账户信息。指定的错误是:Ox80041315:任务计划程序服务没有运行这是因为电脑的任务计划程序服务没有启动起来。开始所有程序管理工具服务,找到TaskScheduler服务,发现启动类型为已禁用,右键单击更改为自动,并把它启动起来,然后重新添加一次任务计划ytcn就可以了。11.oracle之命中率查询Buffercache由数据块组成。1.Buffercache的工作原理LRU列表:MRU………………。LRU.(全表扫描FTS放在LRU端。)缓冲区块的状态:Free、Pinned、Clean、Dirty.DirtyList或WriteList(写列表)。数据库写进程DBW0将缓冲区高速缓存中的数据写到数据文件中。2.测量Buffercache的性能测量Buffercache的命中率:SQLselect1-((physical.value-direct.value-lobs.value)/logical.value)BufferCacheHitRatiofromV$SYSSTATphysical,V$SYSSTATdirect,V$SYSSTATlobs,V$SYSSTATlogicalwherephysical.name='physicalreads'Anddirect.name='physicalreadsdirect'andlobs.name='physicalreadsdirect(lob)'Andlogical.name='sessionlogicalreads';“BufferCacheHitRatio”的值要90%.使用STATSPACK来监视Buffercache.使用REPORT.TXT来监视Buffercache.非命中率指标:FreeBufferInspected、FreeBufferWaits、BufferBusyWaits.(V$sysstat)使用PerformanceManager(数据库例程)来监视BufferCache.3.提高缓冲区高速缓存性能的方法加大BufferCache的大小:init.ora参数DB_CACHE_SIZE(动态参数)。使用BufferCacheAdvisory功能决定BufferCache的大小:首先将init.ora参数DB_CACHE_ADVICE设成ON,然后查询V$DB_CACHE_ADVICE.使用多个缓冲区池:KeepPool:DB_KEEP_CACHE_SIZERecyclePool:DB_RECYCLE_CACHE_SIZEDefaultPool:DB_CACHE_SIZE在内存中缓存表:表的CACHE选项,对优化小表的全表扫描。正确创建索引。4.调整LargePool和JAVAPOOLLargePool用于共享服务器、RMAN、并行查询、DBWR的从属进程。LargePool的大小通过init.ora参数Large_pool_size设置。默认为8M.从V$sgastat中监视freememory的值:SQLSELECTname,bytesFROMV$sgastatWHEREpool=‘largepool’;JAVA_POOL池的默认大小为32M.对于大型Java应用程序,JAVA_POOL池的大小应大于50M.init.ora参数java_pool_size从V$sgastat中监视freememory的值。SQLSELECTname,bytes/1024/1025FROMV$sgastatWHEREpool='javapool';调整重做有关的性能O
本文标题:数据库-oracle-学习之路
链接地址:https://www.777doc.com/doc-14072 .html