数据库oracle学习之路文档格式.docx
- 文档编号:22197255
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:46
- 大小:96.17KB
数据库oracle学习之路文档格式.docx
《数据库oracle学习之路文档格式.docx》由会员分享,可在线阅读,更多相关《数据库oracle学习之路文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
TABLE'
groupbyOWNER,t.segment_name,t.segment_type
orderbymmmdesc;
4.oracle之删除重复数据
selecta.rowid,a.*from表名a
wherea.rowid!
=
(
selectmax(b.rowid)from表名b
wherea.字段1=b.字段1and
a.字段2=b.字段2
)
---删除
deletefrom表名a
5.oracle之查询数据第一条记录
select*fromtabrownum<
2
6.oracle之存储过程/函数等书写规则
7.oracle之正则表达式函数:
regexp_like、regexp_substr、regexp_instr、regexp_replace
Oracle使用正则表达式离不开这4个函数:
1。
regexp_like
2。
regexp_substr
3。
regexp_instr
4。
regexp_replace
看函数名称大概就能猜到有什么用了。
regexp_like只能用于条件表达式,和like类似,但是使用的正则表达式进行匹配,语法很简单:
regexp_substr函数,和substr类似,用于拾取合符正则表达式描述的字符子串,语法如下:
regexp_instr函数,和instr类似,用于标定符合正则表达式的字符子串的开始位置,语法如下:
regexp_replace函数,和replace类似,用于替换符合正则表达式的字符串,语法如下:
这里解析一下几个参数的含义:
(1。
source_char,输入的字符串,可以是列名或者字符串常量、变量。
(2。
pattern,正则表达式。
match_parameter,匹配选项。
取值范围:
i:
大小写不敏感;
c:
大小写敏感;
n:
点号.不匹配换行符号;
m:
多行模式;
x:
扩展模式,忽略正则表达式中的空白字符。
position,标识从第几个字符开始正则表达式匹配。
5。
occurrence,标识第几个匹配组。
6。
replace_string,替换的字符串。
8.oracle之decode函数
decode函数=java中的true?
A:
B
decode(参数,1,2,3)参数==1时结果为2否则结果为3
9.oracle之linux下启动脚本
1)启动数据库
oracle@suse92:
~>
sqlplus/nolog
SQL*Plus:
Release9.2.0.4.0–ProductiononFriJan2002:
29:
372006
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
SQL>
connect/assysdba
Connectedtoanidleinstance.
startup
ORACLEinstancestarted.
TotalSystemGlobalArea135352820bytes
FixedSize455156bytes
VariableSize109051904bytes
DatabaseBuffers25165824bytes
RedoBuffers679936bytes
Databasemounted.
2)关闭数据库:
shutdwonabort;
3)启动监听器
lsnrctlstart
4)停止监听器
lsnrctlstop
5)查看监听器状态
lsnrctlstatus
或lsnrctl命令进入监听程序后再用status
10.oracle之备份工作
背景:
Oracle10g服务器,Oracle10g客户端,windowsXP操作平台
要求:
Oracle数据库服务器对数据库ytcn每天自动备份一次。
解决方案:
利用任务计划、批处理文件和Oracle的exp导出功能,根据日期自动生成Oracle备份文件。
详细步骤:
1)创建批处理文件ytcn.bat
ytcn.bat中详细内容如下:
@echooff
echo正在备份银通网Oracle数据库,请稍等......
expuserid='
ytcn/ytcn@ytcnassysdba'
file=e:
/bak/ytcn/oracle/ytcn/ytcn%date:
~0,4%%date:
~5,2%%date:
~8,2%.dmplog=e:
~8,2%.logfull=y
echo任务完成!
其中红色部分是根据需要进行变动的地方,例如作者的项目名“银通网”,数据库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的命中率:
SQL>
select1-((physical.value-direct.value-lobs.value)/logical.value)"
BufferCacheHitRatio"
fromV$SYSSTATphysical,
V$SYSSTATdirect,
V$SYSSTATlobs,
V$SYSSTATlogical
wherephysical.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_SIZE
RecyclePool:
DB_RECYCLE_CACHE_SIZE
DefaultPool:
DB_CACHE_SIZE
在内存中缓存表:
表的CACHE选项,对优化小表的全表扫描。
正确创建索引。
4.调整LargePool和JAVAPOOL
LargePool用于共享服务器、RMAN、并行查询、DBWR的从属进程。
LargePool的大小通过init.ora参数Large_pool_size设置。
默认为8M.
从V$sgastat中监视freememory的值:
SELECTname,bytesFROMV$sgastatWHEREpool=‘largepool’;
JAVA_POOL池的默认大小为32M.对于大型Java应用程序,JAVA_POOL池的大小应大于50M.
init.ora参数java_pool_size
从V$sgastat中监视freememory的值。
SELECTname,bytes/1024/1025FROMV$sgastatWHEREpool='
javapool'
调整重做有关的性能
Oracle重做有关的组件包括:
RedoLogBuffer、OnlineRedoLog、LGWR、ArchiveLog、Checkpoint、Arch0.
1.监视RedoLogBuffer的性能
RedoLogBuffer不采用LRU(LeastRecentlyUsed)算法管理。
当下列事件发生时,RedoLogBuffer的内容存盘:
Commit时、每3秒、空间使用1/3、达到1M、检查点。
如果写入RedoLogBuffer的速度超过LGWR存盘的速度,就会因等待而降低性能。
监视RedoLogBuffer的重试率(<
1%)。
Selectretries.value/entries.value"
RedoLogBufferRetryRatio"
FromV$sysstatretries,V$sysstatentries
Whereretries.name='
redobufferallocationretries'
Andentries.name='
redoentries'
“RedoLogBufferRetryRatio”的值要<
1%.
Selectname,valuefromV$sysstatwherename='
redologspacerequests'
如果该值大,需要增加RedoLogBuffer.
2.提高RedoLogBuffer的性能
增加RedoLogBuffer的大小:
init.ora参数log_buffer.
减小重做日志的生成量。
(如果设置表的NOLOGGING属性,下列操作不记录在OnlineRedoLog中:
用SQL*Loader的直接路径加载。
NOLOGGING属性还可用于下列SQL语句:
CREATETABLEASSELECT、CREATEINDEX、
ALTERINDEXREBUILD、CREATETABELSPACE)。
3.调整检查点进程的性能
测量检查点进程的性能:
没有完成的检查点进程的次数。
select*fromV$system_event;
两个事件:
checkpointcompleted、logfileswitch(checkpointincomplete)。
Select*fromV$sysstat.
backgroundcheckpointsstarted和backgroundcheckpointscompleted.
使用Alert日志来记录检查点进程:
init.ora参数log_checkpoint_to_alert.
使用PerformanceManager来测量检查点进程的性能:
I/O中的平均灰数据队列长度(如果为0,说明检查点太频繁)。
建议调整onlineredolog的大小,使检查点进程每20-30分钟执行一次。
4.调整联机重做日志文件
使用V$system_event来监视联机重做日志文件的性能:
logfileparallelwrite、logfileswitchcompleted.
调整联机重做日志文件的方法:
与数据文件、控制文件、归档日志文件分开,放在原始设备上。
5.调整归档性能
检查归档进程的性能:
通过V$system_event中的logfileswitch(archivingneeded)事件。
检查每个归档进程的状态:
V$archive_processes.
创建多个归档进程:
init.ora参数LOG_ARCHIVE_MAX_PROCESSES(默认为2
12.oracle之数据库空间限额
revokeunlimitedtablespacefromccicjy;
alteruserccicjyquota0onJINGYOUTBS;
alteruserccicjyquotaunlimitedonJYSPACE;
空间转换
13.oracle之查询表空间文件所在路径
select
*
from
dba_data_files;
14.oracle之物化视图学习
一、环境
数据库1:
数据库:
oralceORACLE10.2.0.1.0RAC
基表用户:
WEB_USER
查询用户:
MVLOG_USER
MVLOG_USER权限如下:
grantcommentanytabletoMVLOG_USER;
grantcreateanytabletoMVLOG_USER;
grantcreatematerializedviewtoMVLOG_USER;
数据库2
物化视图用户:
QUERY_USER
网络环境:
10M光纤
目的:
将数据库1中WEB_USER用户下的表,同步到数据库2的QUERY_USER用户下,为确保数据库1的WEB_USER中数据安全性,通过MVLOG_USER创建物化视图。
二、建立物化视图日志(数据库1WEB_USER)
CREATEMATERIALIZEDVIEWLOG
ONWEB_USER.ZFZZB
TABLESPACETS_MVLOG;
--将对表及表日志查询权限给mvlog_user用户。
grantselectonWEB_USER.ZFZZBtomvlog_user;
grantselectonWEB_USER.mlog$_ZFZZBtomvlog_user;
三、创建物化视图(数据库2QUERY_USER)
1、创建DBlink
CREATEpublicDATABASELINKTJSB_LINKCONNECTTOmvlog_userIDENTIFIEDBYmvlog_userUSING'
TJDB'
2、创建表
createtableZFZZBasselect*fromWEB_USER.ZFZZB@TJSB_LINKwhere1=2;
3、建立物化视图
CREATEMATERIALIZEDVIEW
ZFZZB
onprebuilttable
REFRESHFORCEWITHprimarykey
ONDEMAND
AS
(
SELECTAAB001,AAC001,AAC002,AAC003,AAE002,AKC087,AKC087S,CAB004,CKC202,CKC205,CKC435,CKC438,CKC442,ZZ
fromWEB_USER.ZFZZB@TJSB_LINK
);
4、全量刷新
execdbms_mview.refresh('
ZFZZB'
'
Complete'
);
6、创建主键及索引
altertableZFZZB
addconstraintPK_ZFZZBprimarykey(AAC001,CKC442)
usingindex
tablespaceTJSB_TS_INDEX;
7、增量刷新
15.oracle学习之位置查询
select(length(t.a2)-length(replace(t.a2,'
_'
'
)))/length('
)fromzwj_1t
16.sql中怎样计算某个字符在字符串中有多少个
select(length('
oracle11g,oracle10goracle9i|oracle8i'
)-
length(replace('
'
oracle'
)string_count
fromdual;
17.oracle学习物化视图
物化视图,它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果。
物化视图有很多方面和索引很相似:
使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 oracle 学习