① Oracle开发艺术的序
本书是ITPUB技术丛书中第一本专注于Oracle开发的书籍。长久以来,数据库后台开发一直是应用开发行业的一项核心工作,能否正确设计一个数据库的架构,并写出合理、高效的SQL,决定了一个应用的效能,也在相当大的程度上影响了项目的成败。而在表象的背后,数据库开发又远远不止表面看到的那么简单,用作者们的话来说只是冰山一角。除了SQL或PL/SQL以外,我们还可能面对算法、架构、规范等问题。作者们都曾经在各行业的第一线战斗过,长期从事数据库开发各个方面各种细节的工作,由他们去分享10多年来的心得,对于读者来说是极好的知识共享。以前ITPUB技术丛书中有许多关于数据库管理的内容,由于所提供的案例许多属于极端而难以重现,但这本书里的很多例子,读者都可以很简单地重现并且自我尝试,领会其中的精粹,这也是本书和以前DBA方面书籍的一大差异之处。
我和本书的作者们大多在ITPUB上相识了很长时间,他们都是具有丰富行业经验的专家,也非常热心。苏旭晖(newkid)和卢涛(〇〇)Oracle是开发方面的行家,记得当初我在社区里推崇Joe Celko的《SQL puzzles and Answers》一书,结果newkid很快指出这本书里的例子的很多错误或者愚笨之处,还专门给出一个帖子来指出书中的错误,让人叹服。他对技术精益求精,非常关心国内的开发社团,解决了许多网友提出的疑难的实际问题,还经常订购国内原创的技术书籍。有一次newkid君在论坛上出了一道用SQL去求解四皇后问题的题,不久〇〇就给出了答案,我才第一次知道SQL除了可以用来查询数据外,还可以有这样的用途。王保强(bq_wang)、怀晓明(lastwinner)是ITPUB中的元老级会员,bq_wang在项目管理、数据库、数据仓库、系统架构应用上很有经验,在过去几年中一直担任大型开发项目的manager,而lastwinner在应用测试和编码上的能力让人印象深刻,他是那种天生对问题有灵敏嗅觉的人,解决问题的能力非常强,并带队完成了几个大型开发项目。丁俊(dingjun123)在电信领域有多年系统架构设计和管理经验,对Oracle数据库开发很有研究,梁敬彬(wabjtam123)对数据库管理、设计、开发均有较为深入的研究,同时有着多年的电信行业相关经验和丰富的培训经验,二人在社区中积极热心帮助别人解决疑难问题,并总结了很多精华内容,得到社区大众的认可。贾书民则早在20年前就开始使用Oracle数据库,参加了多个国家级项目的设计和开发,技术功底与行业经验相当丰厚。由这么多高手呕心沥血写出来的经验之作,我相信一定能让读者读后有所裨益。
最后我要说从2004年ITPUB第一本技术图书面世以来,6年过去了,丛书也出版到第10本。2001年9月ITPUB刚刚建立的时候,会员只有一万多人,经过9年的发展,ITPUB已拥有技术板块100多个,注册会员数量超过240万,每天更新的讨论帖数以万计。感谢苏旭晖、卢涛、王保强、怀晓明、梁敬彬、丁俊、贾书民在ITPUB即将步入第10个年头的时候,创作了这本重量级的技术图书。ITPUB的发展与这样的专家、第一线技术工作者的长期支持是分不开的,真挚感谢你们对ITPUB的支持!
——ITPUB 创始人 tigerfish 这是一本我期待已久的书,ITPUB论坛已经出版了一系列的数据库管理书籍,但是开发书籍还是第一本,我一直关注着开发板块关于SQL方面的技术讨论,其涉及技术内容的往往极其精深、有趣、广泛,将技术玩得有趣是一门艺术,这本书在我看来就是一本关于开发和SQL的艺术之书。
——盖国强(eygle) Oracle ACE Director,恩墨科技创始人,ITPUB论坛超级版主
开发,总被很多人当做是一个简单的事情,其实,若干年前我也是这么认为的,但这么多年与各种应用软件打交道,发现原来我们所需要诊断、调整、处理的大部分问题,其实,基本上都源于开发,开发看来并不是我们想象中那么浅显,就像书中所说,我们所用的,其实仅仅是浮在水面上的冰山一角,如果真的认为开发如此简单,迟早会如泰坦尼克号一般撞得头破血流,而如果早些挖掘出开发深藏的矿脉,就会找到传说中的开发宝典,而这本书,应该是我们开始寻宝之旅的钥匙了。
——李轶楠(ora-600) Oracle ACE,ITPUB Oracle入门与认证版资深版主
如果有人问我学习Oracle的经验,我会告诉他先去看Oracle的官方文档,但是如果是学习Oracle开发方面的知识,那么我会建议他找本好书去读。一本好的开发方面的书籍会包括大量生动的例子和实用的案例,这是枯燥和晦涩的官方文档所不能比拟的。
可惜国内数据库开发方面的书籍很少,精品更是凤毛麟角。幸运的是,ITPUB上几位资深的版主联手带来了这本《剑破冰山——Oracle开发艺术》,书中涵盖了开发各个方面的内容;介绍了开发易犯的错误;展示了如何合理利用现有功能来巧妙地解决复杂问题。更难得的是书中很多例子都是真实的案例,阅读的过程彷佛就是在与高手一起解决问题的过程,自然受益匪浅。
——杨廷琨(yangtingkun) Oralce ACE,海虹医药电子商务有限公司首席DBA,ITPUB Oracle数据库管理版资深版主
尽管与本书的诸位作者大多从未见过面,但几乎每天都能在Oracle开发版见到他们的身影,最深的印象就是他们对Oracle开发的沉迷,从对每个问题的认真回复、深入讨论,到在问题不多时甚至组织一些趣味开发比赛的活动,不难看出他们在Oracle开发方面沉浸多年,功力非凡。虚拟平台里交流的点点滴滴已经让诸多朋友受益匪浅,这次能够联袂出书,更是广大网友早就期待的事。
有幸在本书出版之前先睹为快,看到部分精彩章节,本书有别于目前市面上能够买到的Oracle开发类的书籍,该书并未着眼于普通开发的SQL语法、数据结构等方面,而是从作者多年来对Oracle开发技术的研究及实际开发工作经验中,选取了一些具有较强代表性的案例,比如where IN LIST、号段选取应用等这些大家在开发中都会遇到的开发需求来进行详细分解。对于IN LIST问题我们也曾详细考虑过多种处理方案,最终因数据库兼容问题选择了临时表替代方案,此案例中的cardinality HINT与Oracle版本的问题也曾困扰过我。号段选取应用实际上对应于我们应用中的断号管理,也是ERP系统中单据号管理的一个常用需求,尽管由于数据库兼容考虑我们没有使用分析函数,但本书中对分析函数的使用及处理也能为其他解决方案提供有益的参考。看似每个案例处理了一个问题,实际包含了诸多的知识点、设计思想和技巧,作者通过对这些案例的详细分析与读者分享了自己的心得、体会与技能技巧,相信每一位从事数据库开发的读者都能从中找到自己想要的信息。希望早日看到全书。
——李奎阳(anlinew) 用友资深数据库专家、产品性能主设计师,ITPUB Oracle专题深入讨论版资深版主
你很幸运拿到这本书,从本书你可以学到几位作者的数据库开发经验、开发技巧及数据库编程思想。几位作者均是ITPUB开发版资深版主,我深知他们的开发功底相当雄厚,几位作者聚在一起将自己多年工作中积累总结的精髓分享给大家,这是件值得我们欣喜的事儿。此书包括数据库开发规范、开发方法,以及数据库开发设计和数据库优化等精彩内容。作者们以通俗易懂、幽默风趣的语言将自己多年的工作经验展示给我们。除开发知识外,作者们还详细讲解了 AWR、SQL Trace等Oracle数据库优化工具。相信作者,相信此书,能给Oracle数据库开发者很好的帮助。不要犹豫了!拿起这本书,按照书中所分享的去实践吧,相信聪明的你一定会有所收获的!
——杨向勇(yxyup) 51JOB系统经理兼首席DBA,ITPUB Oracle数据库管理版资深版主
② Oracle数据库开发基础教程的目录
第1章Oracle基础1
1.1关系数据库概述1
1.1.1目前主流的两类关系数据库1
1.1.2关系数据库的基本数据库
对象1
1.2Oracle简介2
1.2.1Oracle的发展简史2
1.2.2Oracle的特点2
1.2.3Oracle的工作模式2
1.3安装与配置Oracle3
1.3.1安装Oracle的环境需求3
1.3.2Oracle的安装工具3
1.3.3Oracle服务器的安装与配置3
1.3.4Oracle客户端的安装8
1.3.5为客户端配置网络服务连接9
1.4Oracle的常用工具11
1.4.1企业管理器11
1.4.2SQLPlus12
1.4.3SQLPlusWorksheet13
1.5Oracle常用对象的创建与管理14
1.5.1Oracle表空间与常用
对象简介14
1.5.2数据表14
1.5.3数据完整性约束16
1.5.4索引的管理17
1.5.5视图的管理与使用18
1.5.6存储过程与触发器19
1.6Oracle的数据类型20
1.6.1数据类型的分类20
1.6.2字符数据类型20
1.6.3数字数据类型21
1.6.4日期数据类型21
1.6.5其他数据类型21
1.7SQL语言基础22
1.7.1基本的SELECT查询22
1.7.2用WHERE子句设定数据
筛选条件23
1.7.3用ORDERBY子句排序
结果集23
1.7.4多表连接查询24
1.7.5用UNION子句连接两个
结果集24
1.7.6统计函数24
1.7.7用GROUPBY子句分组
统计数据25
1.7.8使用子查询25
1.7.9用INSERT语句向表中
插入数据26
1.7.10用UPDATE语句修改表中
的数据26
1.7.11用DELETE语句删除表中
的数据27
1.8PL/SQL简介27
1.8.1PL/SQL的基本特性27
1.8.2在PL/SQL中使用SELECT27
1.8.3PL/SQL中的常用SQL函数28
1.8.4游标29
1.8.5PL/SQL中的子程序30
1.9Oracle的安全性管理31
1.9.1用户31
1.9.2角色32
1.9.3概要文件33
1.10Oracle数据库的备份与恢复34
1.10.1Oracle数据库备份简介34
1.10.2EXP命令与IMP命令34
1.11Oracle与高级语言37
1.11.1使用ADO连接Oracle37
1.11.2使用Oracle的专有接口
连接Oracle38
1.12小结38
第2章考勤管理系统39
2.1系统设计39
2.1.1系统的设计目标39
2.1.2设计思想39
2.1.3系统功能模块划分39
2.2数据库设计40
2.2.1数据库需求分析40
2.2.2数据库结构设计41
2.3数据库对象的创建44
2.3.1创建考勤类型表44
2.3.2创建员工表45
2.3.3创建考勤管理表45
2.4设计系统的界面46
2.4.1窗口的设计46
2.4.2菜单的设计51
2.5系统的编程实现52
2.5.1员工信息的管理模块53
2.5.2考勤类型的设定模块57
2.5.3员工考勤信息手工录入模块61
2.5.4经考勤机生成并处理过的
考勤信息导入模块64
2.5.5员工出勤情况统计报表
生成模块66
2.5.6数据库维护模块69
2.6系统的测试运行70
2.7小结73
第3章费用收缴管理系统74
3.1系统设计74
3.1.1系统的设计目标74
3.1.2设计思想74
3.1.3系统功能模块划分74
3.2数据库设计75
3.2.1数据库需求分析76
3.2.2数据库结构设计76
3.3数据库对象的创建80
3.3.1收费员信息表80
3.3.2收费员任务表81
3.3.3燃气价格表82
3.3.4预存款表82
3.3.5居民区信息表83
3.3.6住户信息表83
3.3.7收缴情况表84
3.4设计系统的界面86
3.4.1窗口的设计86
3.4.2菜单的设计93
3.5系统的编程实现94
3.5.1住户信息管理模块94
3.5.2收费员所辖范围及收费
任务设定模块99
3.5.3燃气价格管理模块103
3.5.4住户预存款管理模块104
3.5.5收费情况录入模块107
3.5.6查询及报表模块112
3.5.7数据库维护模块115
3.6系统的测试运行117
3.7小结119
第4章仓库管理系统120
4.1系统设计120
4.1.1系统的设计目标120
4.1.2设计思想120
4.1.3系统功能模块划分120
4.2数据库设计121
4.2.1数据库需求分析121
4.2.2数据库结构设计122
4.3数据库对象的创建125
4.3.1物品表125
4.3.2提货部门表126
4.3.3入库单表127
4.3.4出库单表127
4.3.5物品库存表128
4.4设计系统的界面129
4.4.1窗口的设计129
4.4.2菜单的设计135
4.4.3数据窗口的设计136
4.5系统的编程实现141
4.5.1仓库物品设定模块142
4.5.2提货部门设定模块144
4.5.3物品出库模块145
4.5.4查询及作废出库单模块149
4.5.5出库单汇总查询模块152
4.5.6物品库存查询模块153
4.5.7单品明细账查询模块154
4.5.8数据维护模块156
4.6系统的测试运行157
4.7小结160
第5章人事管理系统161
5.1系统设计161
5.1.1系统的设计目标161
5.1.2设计思想161
5.1.3系统功能模块划分162
5.2数据库设计162
5.2.1数据库需求分析162
5.2.2数据库结构设计164
5.3数据库对象的创建168
5.3.1系统用户表168
5.3.2员工资料表169
5.3.3部门资料表170
5.3.4岗位资料表170
5.3.5状态资料表171
5.3.6员工调动记录表172
5.3.7员工状态调整记录表172
5.4设计系统的界面174
5.4.1窗口的设计174
5.4.2菜单的设计180
5.4.3数据窗口的设计181
5.5系统的编程实现186
5.5.1用户及权限管理模块187
5.5.2基本资料管理模块190
5.5.3录用新员工模块192
5.5.4员工调动模块193
5.5.5信息查询模块195
5.6系统的测试运行199
5.7小结204
第6章论坛系统205
6.1系统设计205
6.1.1系统的设计目标205
6.1.2设计思想205
6.1.3系统功能模块划分205
6.2数据库设计206
6.2.1数据库需求分析206
6.2.2数据库结构设计207
6.3数据库对象的创建211
6.3.1用户信息表211
6.3.2版面信息表212
6.3.3等级称号表213
6.3.4内容信息表213
6.3.5改动记录表214
6.4系统页面的编程实现217
6.4.1论坛首页及用户注册
与登录218
6.4.2版面管理222
6.4.3等级称号管理226
6.4.4论坛内容的查询发布
与管理230
6.4.5查询内容改动记录242
6.5系统的测试运行244
6.5.1建立运行的环境244
6.5.2系统测试245
6.6小结248
第7章采购订单管理系统249
7.1系统设计249
7.1.1系统的设计目标249
7.1.2设计思想249
7.1.3系统功能模块划分249
7.2数据库设计250
7.2.1数据库需求分析250
7.2.2数据库结构设计251
7.3数据库对象的创建254
7.3.1用户信息表254
7.3.2供应商信息表255
7.3.3商品信息表256
7.3.4采购订单表头表256
7.3.5采购订单明细表257
7.4系统页面的编程实现258
7.4.1首页及用户登录259
7.4.2用户管理263
7.4.3供应商管理266
7.4.4商品管理269
7.4.5订单录入272
7.4.6订单查询打印278
7.4.7密码修改284
7.5系统的测试运行287
7.5.1建立运行的环境287
7.5.2系统测试287
7.6小结290
第8章招聘求职管理系统291
8.1系统设计291
8.1.1系统的设计目标291
8.1.2设计思想291
8.1.3系统功能模块划分291
8.2数据库设计292
8.2.1数据库需求分析292
8.2.2数据库结构设计293
8.3数据库对象的创建298
8.3.1个人用户资料表298
8.3.2企业用户资料表299
8.3.3求职信息表300
8.3.4招聘信息表301
8.3.5交流意向信息表301
8.4系统页面的编程实现302
8.4.1系统首页及用户注册303
8.4.2用户资料修改311
8.4.3信息发布317
8.4.4信息搜索及意向投递320
8.4.5用户自有信息管理324
8.5后台数据管理程序的编制331
8.6系统的测试运行333
8.6.1建立运行的环境333
8.6.2系统测试333
8.6.3后台数据维护程序测试335
8.7小结336
第9章供求信息发布系统337
9.1系统设计337
9.1.1系统的设计目标337
9.1.2设计思想337
9.1.3系统功能模块划分337
9.2数据库设计338
9.2.1数据库需求分析338
9.2.2数据库结构设计339
9.3数据库对象的创建342
9.3.1用户资料表342
9.3.2版面资料表343
9.3.3供求信息表343
9.3.4回复信息表344
9.4系统页面的编程实现345
9.4.1系统首页及用户注册348
9.4.2用户资料修改356
9.4.3信息发布359
9.4.4信息搜索及回复360
9.4.5自有信息管理365
9.5后台版面管理程序的编制367
9.6系统的测试运行370
9.6.1建立运行的环境370
9.6.2系统测试371
9.6.3后台数据维护程序测试374
9.7小结375
……
③ Oracle开发艺术的内容简介
一个好的Oracle开发人员不仅要知道一些基本语法和常见用法,还需要知道何时用、如何用、怎么避免相关误区、写出高质量的代码。本书面向有Oracle使用经验或有其他数据库使用经验的人,重点讲述利用好Oracle的特色功能进行高效开发的思路和技巧,帮助读者快速掌握中高级Oracle开发技术。
本书主要覆盖Oracle开发必备的重要知识点:数据库编程规范、Oracle开发常用工具及使用、MERGE方法、神秘的NULL和讨厌的CHAR、扩展GROUP BY、Oracle自动类型转换、Oracle分析函数、Oracle层次查询、11g R2新特性之递归WITH编程、动态SQL扩展。此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免重复启动同一程序、不可能的任务?超越Oracle等。
本书作者均有多年Oracle开发管理实战经验,他们期望以自己的经验和教训,分享分析和解决问题的方法,探讨如何用相关的技术去解决特定的需求。希望读者在看完本书后,能受到良好的启迪,进而能极大地提升自己在Oracle数据库开发方面的能力!
④ 关于Oracle数据库编程题的解答。谢谢各位!
1、查询姓“李”的老师的个数;
SELECT COUNT(Tno) FROM Teacher WHERE Tname LIKE '李%'
2、查询学过“c001”并且也学过编号“c002”课程的同学的学号、姓名;
SELECT Sno, Sname
FROM Student
WHERE sno IN(SELECT sno
FROM (SELECT Sno FROM SC WHERE Cno = 'c001') t1
(SELECT Sno FROM SC WHERE Cno = 'c002') t2
WHERE t1.sno = t2.sno)
3、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
SELECT Sno, Sname
FROM student
WHERE Sno IN(SELECT SC
FROM SC
WHERE CNO IN (SELECT CNO FROM Course WHERE Cname = '叶平')
GROUP BY SC HAVING COUNT(CNO) = (SELECT COUNT(CNO) FROM Course WHERE Cname = '叶平'))
4、查询“c001”课程比“c002”课程成绩高的所有学生的学号
SELECT C1.SC
FROM (SELECT SC, Score FROM SC WHERE Cno = 'c001') c1
(SELECT SC, Score FROM SC WHERE Cno = 'c002') c2
WHERE c1.SC = c2.SC
AND c1.Score > c2.Score
如果只有C1,而没有C2成绩,用这个好一点
SELECT SC
FROM (SELECT SC, Score FROM SC WHERE Cno = 'c001') c1
left join (SELECT SC, Score FROM SC WHERE Cno = 'c002') c2
ON c1.SC = c2.SC AND c1.Score > c2.Score
5、查询平均成绩大于60分的同学的学号和平均成绩;
SELECT Sno, AVG(score)
FROM SC GROUP BY Sno Having AVG(score) > 60
6、查询所有同学的学号、姓名、选课数、总成绩;
SELECT stu.Sno, stu.Sname, COUNT(Cno), SUM(score)
FROM Student stu, SC
WHERE stu.Sno = Sc.sno
GROUP BY stu.sno, stu.Sname
7、查询没有学全所有课的同学的学号、姓名;
SELECT Sno, Sname
FROM SC
WHERE Sno NOT IN (SELECT Sno
FROM SC
GROUP BY SC
HAVING COUNT(CNO) < (SELECT COUNT(DISTINCT CNO) FROM SC))
⑤ oracle数据库在开发中用到最多的几个知识点.我学java的.
知识点太多了啊
增删改查最基本的要会,还有复杂的要会
其实这里最主要的就是查,多学习点oracle里的各种函数吧还有各种连接查询,各种统计查询(网络文库里搜索:oracle函数大全)
还有触发器,存储过程,函数得自己会写会看
存储过程里特别需要知道的是变量、游标、数组、循环、动态sql的执行等等
至于索引,不太属于数据库开发范畴吧,需要了解,譬如一个查询怎么用到索引这样子,其实这个最主要是dba的工作
⑥ oracle怎样创建样例数据库
Oracle数据库实例的创建、删除、修改
以SUSE10SP2、Oracle10gR2为例。
本文中的数据库实例这一称谓应该换做数据库更为准确,数据库可以理解为是一个物理的静态概念,主要包括一些物理存在的数据库文件,而数据库实例则是一个动态概念,包括一些内存区域以及若干进程,数据库实例是对数据库进行操作的执行者。(20090714修改)
安装完Oracle数据库系统的安装后,需要创建数据库实例才能真正开始使用Oracle数据库服务。
总结起来,Oracle有三种创建数据库实例的方法。
第一种,最常用也最简单,那就是通过DBCA(Database Configuration Assistant),这是Oralce提供的一个图形界面的数据库实例配置工具,通过它可以创建、删除和修改数据库实例,它的使用也比较简单、易懂,交互式的图形界面操作,非常准确有效的提示与配置,是一个比较方便的创建数据库实例的方式。
按照DBCA给出的提示,很容易创建一个新数据库实例。
在创建数据库的时候,DBCA还提供了两个选项,让你可以根据刚刚设置好的参数生成一个数据库实例模板和一份数据库实例创建脚本。这两个东西是非常好,非常有用的东西,数据库模板由Oracle自己管理维护,已经创建好的数据库实例模板可以在DBCA图形程序新建数据库实例时作为模板来使用,另外在DBCA使用responseFile文件或者命令行参数创建数据库时也需要用到(见后面介绍);数据库创建脚本是一组脚本,包括shell脚本和sql脚本,这些脚本共同实现一个功能,那就是按照你之前在DBCA中设置好的那样创建一个数据库实例(后面也会有介绍),你需要做的只是将这些脚本在你的代码中调用起来。当然,你也可以选择只生成数据库模板或者数据库脚本,而不用去创建一个真的数据库(这通常很费时间)。
Oracle数据库实例的创建、删除、修改
DBCA是一个非常强大的工具,上面看到的只是DBCA最常用的创建一个数据库实例的使用,其实DBCA还提供另外两种使用方法,分别是responseFile和命令行带参调用。
先说DBCA的responseFile使用方法,responseFile这个东东并不陌生,前文讲的Oracle自动安装就是使用responseFile完成的,DBCA的responseFile使用方法和Oracle安装程序的responseFile使用方法基本一致。但DBCA的responseFile的来源只能是Oracle安装包中提供的模板文件,而不能向Oracle安装程序的responseFile一样,先自己record一个,然后再用这个record去指导Oracle的自动安装。从Oracle安装包中获取到DBCA的responseFile模板文件后,你可以根据自己的需要编辑修改该模板文件,以完成对数据库实例的某些参数设置(DBCA图形界面所提供的参数设置,responseFile中都可以设置,而且该responseFile模板文件的注释写的很好,你完全不用担心无法搞定那些繁杂的数据库实例参数设置,赞Oralce一个!)。该模板文件在Oracle安装包中的位置一般在${ORACLE_PACKAGE}/response目录下。
有了responseFile之后,你只需在调用DBCA的时候指定responseFile的位置和另外一些参数:
dbca [-silent|-progressOnly] -responseFile responseFile名称
其中-silent|-progressOnly选项意义和Oracle安装程序命令行参数中的同名选项一样,表示完全字符界面自动安装或者带图形提示界面的半自动化安装。
responseFile名称当然就是responseFile的具体位置了。
但是,有一点不是很好,那就是使用DBCA的responseFile方式创建Oracle数据库实例,需要事先已经存在一个数据库实例模板了,在responseFile中再指定该数据库实例模板名,然后DBCA再依据这个已有的数据库实例模板完成新数据库实例的创建,所以就会有前面讲到的DBCA图形界面创建数据库实例时提供生成数据库实例模板的选项(数据库实例模板也可以从一个已有数据库实例生成),就是在这要用到的。
从上面调用DBCA使用responseFile的命令中,应该已经看到了DBCA是提供一些命令行参数选项的,其实DBCA提供的命令行参数选项远比你想象的强大,甚至可以这么说,所有DBCA图形界面和responseFile能够办到的事,通过DBCA丰富的命令行参数选项都可以办到。你在DBCA图形界面上设置的参数或者在responseFile中指定的参数值都可以通过DBCA的命令行参数选项来进行设置,所以你完全可以只通过DBCA的命令行带参调用来完成一个数据库实例的创建(当然也包括删除、修改数据库实例等所有DBCA图形界面所能提供的功能)。其实,我更愿意这样认为,DBCA的responseFile应用也是一种DBCA命令行带参调用的使用。需要注意的是,当DBCA的命令行参数和responseFile同时设置一个参数时,命令行参数的优先级是比responseFile要高的。另外,使用DBCA命令行带参调用新建数据库实例和使用responseFile新建数据库实例一样,也是需要事先已经存在一个数据库实例模板,才能完成新数据库实例的创建。一份非常详细的DBCA所有命令行参数选项列表,你可以通过执行dbca -help获得。
到现在你可能已经发现,DBCA图形界面、DBCA的responseFile使用以及DBCA的命令行带参调用,其实是三个分别具备完全数据库实例设置功能的工具或者接口,分别对应不同的应用场景,它们可以满足你几乎所有的应用需求(使用这样的工具来帮助构建自己的软件真是非常惬意的一件事情,再赞Oracle一个!)。
第二种是通过脚本(是否称为命令行方式更合适,下文描述的脚本方式其实都是命令行方式的非交互式方法,或者说命令行的自动化方式,但其实所有脚本方式都可以将shell脚本或sql脚本中的shell命令、sqlplus命令拆分出来,手工在shell中或者sqlplus界面中进行交互式的输入执行,这可以称为命令行的手工方式)来完成数据库实例的代码中自动创建。这里说的脚本包括shell脚本和sql脚本,这种方式可以说是最适合与编程结合的,因为这些shell脚本或者sql脚本都可以直接在shell命令中调用执行,所以可以很好与shell编程相结合。而这其实是基于一个非常重要的事实,即Oracle提供了一个交互式的命令行工具sqlplus(类似与DB2的db2cmd),这个工具可以认为是一个Oracle数据库管理工具,通过它可以执行一些Oracle的数据库管理命令,来完成一些数据库管理工作(这当然就包括数据库实例的创建),同时你也可以把它当作一个SQL语句执行器,直接在里边执行你想要执行的SQL语句或者存储过程等,并获取执行结果。并且,更重要的是,sqlplus可以直接在shell命令行中进行非交互式的调用执行(通常是调用执行一段sqlplus语句,或者是一个由一些sqlplus语句组成的sql脚本,我所说的sqlplus语句包括Oracle数据库管理维护命令、SQL语句和存储过程等),这就为在shell编程中使用sqlplus完成数据库实例自动创建工作提供了可能。
shell命令行中非交互式调用sqlplus执行一段sqlplus语句是利用shell编程中重定向命令的一个特性,即分隔符重定向输入。一般用法如下:
command<<任意自定义分隔符
>(换行)内容
>(换行)内容
>自定义分隔符
shell中遇到<<则会自动将下一个单词认作分隔符,并将分隔符后面的文本当作command命令执行的内容传递给command依次全部执行直至遇到下一个分隔符单词才结束。这里的分隔符可以是任意自定义的单词,通常使用EOF,举例:
sqlplus / as sysdba<<EOF
startup nomount;
select * from v$version;
shutdown immediate;
exit;
EOF
这段shell程序调用sqlplus执行了若干sqlplus语句,用来启动数据库实例,查询数据库版本信息,然后关闭数据库实例,退出sqlplus。
shell命令行中非交互式调用sqlplus执行一个sql脚本是利用sqlplus本身提供的命令行参数。在sqlplus界面中可以通过start命令和@命令来执行一个sql脚本,两者功效相同,用法如下:
SQL>start sql脚本绝对路径;
SQL>@sql脚本绝对路径;
而在shell命令行中可以使用@来完成sqlplus对sql脚本的调用执行,举例:
sqlplus / as sysdba @./MySQL.sql
以上命令会调用sqlplus执行当前目录下的MySQL.sql脚本。
使用脚本来完成数据库实例的创建工作,也分为两种情况。
一种是诚如前文所述的那样,在使用DBCA图形工具创建数据库实例的同时生成一份数据库实例创建脚本(包括若干shell脚本和sql脚本),那么你就可以使用这份脚本,在shell中进行调用,完成数据库实例的代码自动创建。使用这份数据库实例创建脚本创建的新数据库实例和原数据库实例是完全一样,当然,你可以将生成的脚本进行修改,以完成你对数据库实例的某些设置,但是请在你对脚本内容已经足够了解,并且知道你自己在干什么的情况下修改脚本,否则你很有可能使用修改后的脚本无法正确创建数据库实例。这种方法中shell脚本对sqlplus的使用,更多的是使用sqlplus来执行一些Oracle生成的sql脚本(这些sql脚本的内容是就是一些sqlplus语句的集合,它们的任务就是完成数据库实例的创建以及设置)。
另一种情况则是不依靠DBCA生成的脚本,完全由自己来编写实现一份shell脚本,在脚本中你可以调用sqlplus执行一段sqlplus语句或者其它一些sql脚本,以完成数据库实例的创建和设置,这完全取决于你的实现;而最常用的用来创建数据库实例的一个方法就是在sqlplus中使用create database语句,create database语句提供了许多丰富的选项和参数设置,确保你能完全创建一个自己所需要的数据库实例。当然,还有一些其它方法可以创建数据库实例,比如调用执行oracle提供某些存储过程等。
至于create database语句的详细介绍可以参考oracle的sql reference。
第三种严格来说不能算作一种创建Oracle数据库实例的方法,它是通过已有的数据库实例为基础来完成新数据库实例的创建的。这种方法是首先通过第一种或者第二种方法来创建好一个数据库实例,然后将该数据库实例的物理文件进行备份,然后直接使用备份的物理文件恢复出一个与原数据库实例完全一样新的数据库实例,所以这种方法需要和第一、二种方法相配合才能使用。这种方法其实已经属于Oracle数据备份与恢复的范畴了,就是Oracle数据备份恢复方式中的物理备份恢复,所以这种方法可以叫做物理恢复法。
简单介绍物理恢复法,首先将一个已经存在数据库实例(最好已关闭)进行物理备份,所谓物理备份其实就是复制该数据库实例所使用的操作系统文件,这些文件主要包括DataFiles、RedoLogs、ControlFiles和UndoFiles(这些文件一般存在于$ORACLE_HOME/oradata目录下),进行数据库实例恢复的时候只需将备份的操作系统文件复制到新的oradata目录下即可,可以直接启动使用恢复后的该数据库实例。不难看出,这种备份恢复是依赖于操作系统平台的。
详细的物理备份和恢复介绍可以参考oracle的backup and recovery basics以及backup and recovery advanced user's guide。
说完了数据库实例的创建,现在来说说数据库实例的删除和修改。其实介绍完了数据库实例的创建,数据库实例的删除和修改就非常简单了。基本和前文数据库实例创建的内容相一致,且比较而言更简单。
数据库实例的删除从上文中数据库实例的创建不难得到,大致有两种方法,DBCA工具和命令行方式。
DBCA工具除了能够用来创建数据库实例,当然也能够用来删除数据库实例了,且同样可以用使用responseFile或者命令行带参调用等方法来完成数据库实例的删除,请参考数据库实例创建部分。
命令行删除数据库实例的方式,严格来讲,是使用一组sqlplus命令来完成数据库实例的删除,这组sqlplus命令可以组织在一个sql脚本中,然后在shell命令行中调用sqlplus程序来执行该sql脚本,或者直接在shell命令行中利用shell程序重定向特性调用sqlplus依次完全执行这组sqlplus命令,再或者使用手工的交互式输入执行,使用方法请参考数据库实例创建部分。
其中涉及到的sqlplus命令参考以下:
SQL>startup restrict mount;
SQL>drop database;
使用sqlplus命令删除数据库实例,必须先以restrict mount方式将数据库实例加载(但不打开),然后使用drop database语句删除该数据库实例。
数据库实例的修改和数据库实例的创建,情况类似,DBCA方式或者命令行方式。只要是DBCA方式能够修改的数据库实例参数,命令行方式也都能办到。
⑦ oracle 有哪些知识点呀 该怎么使用呀
基本操作的软件嘛, oracle sql developer 基本上也够用了。
如果是用于开发操作的话,如果 SQL Server 学得差不多了。
学 Oracle 问题不大。
只要找个 Oracle SQL Server 操作对比的文档, 就可以了。
也就是 某个功能, SQL Server 里面是这么处理, 而 Oracle 是这么处理。 这样的文档。
基本上就够了。
你要是需要的话, 发一个 电子邮件地址给我, 我发邮件给你。
⑧ 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 ChangeNumber):系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。
⑨ 使用oracle数据库总结
去ORACLE的网站下载一个个人版本的ORACLE安装程序,下个10G版本吧
然后安装,全点下一步,或者你看他给你的中文提示下一步安装就可
建立数据库的话安装会给你装的
装完要配置NET MANAGER里的监听程序 点添加数据库 输服务名和路径
然后还要配置服务名
然后就可以用SQL PLUS登陆了
默认的帐户
sys 密码 change_on_install
system密码 manager
装完cmd sqlplus /nolog 然后conn sys/change_on_stall as sysdba
默认的话会有个样本用户scott下面有一些表 里面还有数据,但是scott用户默认是锁定的,上面conn sys/change_on_stall as sysdba以后,再输alter user scott account unlock;然后就可以conn scott/tiger了,然后就可以select * from emp;了记得连接完后一般SQL语句都要用‘;’分号结束。
简单说了下,里面还有很多细节,可以加我HI BAIDU
最好找本oracle 10g入门的书看看
⑩ Oracle数据库编程问题
1.在你自己的oracle数据库上建一个目标数据库的dblink。
2.在你直接的数据库里写一个procere,用dblink将目标数据库的数据读取并插入你自己的数据库表中
3.在你的数据库里定义一个job来定时执行你所编写的procere即可
附:以上所涉及到的dblink和job的建立方法可以直接网络下或给我留言!