数据库(Oracle基础)
Aug 10
itlife365 分享Oracle SQL命令通解三步曲 第三步了解Oracle各版本新增SQL命令 being

Oracle从版本6到目前最新的版本12c,期间经历了:版本7,版本8,版本8i,版本9i,版本10g,版本11g,每一次版本发布都出现了或多或少的新命令,下面逐一介绍。



Oracle 版本7新增SQL命令

版本7引入了众多新概念及相关SQL命令,包括过程化SQL、触发器、安全管理、对象管理、系统控制等一共30个新命令。


Oracle版本8新增SQL命令

版本8引入了目录、库、物化视图、类型等概念及18个相关命令。

 

Oracle8i新增SQL命令

8i版本引入了上下文、维度、Java、统计信息等概念以及18个相关命令。


Oracle 9i
新增SQL命令

9i版本引入了服务器参数文件的概念,新增了3个命令。


Oracle 10g
新增SQL命令

10g版本引入了ASM磁盘组以及闪回数据库的概念及9个相关新命令。

 

Oracle 11g新增SQL命令

11g版本引入了闪回数据归档模式对象多版本的概念,以及相关的7个命令。

 
Oracle 12c新增SQL命令

12c版本为了支撑软件即服务的应用模式,提供了多租户架构的数据库支撑,引入可插拔式数据库的概念以及相关的安全审计策略,包含了10个新增命令。


至此,我们简单介绍了Oracle各个版本引入的关键概念,并通过这些概念来把握相关的SQL命令,从而对整个SQL命令体系有了大致了解。

itlife365 分享Oracle SQL命令通解三步曲 第三步了解Oracle各版本新增SQL命令 end

Tags:
Aug 10
itlife365 分享Oracle SQL命令通解三步曲 第二步了解Oracle版本6的SQL命令 being

事物的发展是循序渐进的,因此认识事物也应如此。

为了全面了解SQL命令,我们从Oracle版本6开始,构建一个最初的SQL命令清单,然后不断扩充其内容。

OracleSQL命令按功能分为六大类:

1数据定义语言命令Data Definition Language commands,简称DDL命令)

2数据操纵语言命令Data Manipulation Language commands,简称DML命令)

3事务控制命令Transaction Control commands

4会话控制命令Session Control commands

5系统控制命令System Control commands

6嵌入式SQL命令EmbeddedSQL commands

其中,DDL命令又分为如下细类:

·  对象的创建、修改与删除相关命令(create, alter, and drop objects

·  授权、权限回收以及角色管理相关命令(grant and revoke privileges and roles

·  表、索引及簇统计信息分析命令(analyze information on a table, index, orcluster

·  数据库安全审计相关命令(establish auditing options

·  数据库对象备注相关命令(add comments to the data dictionary


首先看DDL命令。

还记得我们前面介绍的那些Oracle基本概念吗?这些概念对应了如下27DDL命令:


 

上述命令的含义无须过多解释,大家一看自明。

值得关注的是,为什么没有DROP DATABASEALTER DATABASE LINKALTERSYNONYMCREATE USERDROP USER这些命令呢?

我猜测,Oracle一开始不提供DROP DATABASE命令的原因,是觉得这个命令过于危险;不提供ALTER DATABASE LINKALTER SYNONYM这两个命令,是因为数据库链接和同义词本身结构简单,没有修改的必要;而不提供CREATE USERDROP USER命令的原因,是早期的Oracle采用系统用户登录的方式(和DB2类似)。(注意:Oracle在后续版本中陆续补充了CREATE USER,DROP USER, DROP DATABASEALTER DATABASE LINK这些命令。)

与授权及权限回收相关的DDL命令有2个:GRANTREVOKE。前者用于授权,后者用于收回权限。

与数据库安全审计相关的DDL命令也有2个:AUDIT (Traditional Auditing)NOAUDIT(Traditional Auditing),前者用于开启审计,后者用于取消审计。

COMMENT命令用于给数据库对象添加备注,RENAME命令用于重命名数据库对象,二者亦为DDL命令。


再看DML命令。

版本6中提供了如下6DML命令:

·        INSERTUPDATEDELETE三个命令用于插入、修改及删除表中的行;

·        SELECT命令用于从表中检索行

·        LOCKTABLE命令以显式的方式给表和视图加锁

·        EXPLAINPLAN命令用于查看Oracle优化器预期的执行计划

剩下5个命令是事务控制和会话控制命令:

1COMMITROLLBACKSAVEPOINTSETTRANSACTION4个命令用来控制事务

2ALTER SESSION命令用于控制会话

(注意,Oracle版本6中还没有系统控制命令,该命令在Oracle版本7中首次出现)


至此,我们构建了一个Oracle版本6的命令清单:


itlife365 分享Oracle SQL命令通解三步曲 第二步了解Oracle版本6的SQL命令 end

Tags:
Aug 10
itlife365 分享 Oracle SQL命令通解三步曲 第一步 了解Oracle基本概念 begin

SQL语法与Oracle基本概念紧密相关,在为数众多的SQL命令中,大部分命令是围绕Oracle基本概念设计的。比如CREATE TABLEALTERTABLEDROP TABLE这三个命令,围绕TABLE(表)这个概念来设计,用于定义TABLE的结构。类似的SQL命令还有很多很多。所以我们要掌握SQL命令,首先应理解Oracle的基本概念。


让我们从关系数据库最基本、同时也是最核心的概念开始,分析几个Oracle基本概念的由来及含义。


首先,为了在数据库中存放数据,Oracle定义了。表是数据的集合,由行和列组成。


当一个表很大的时候(包含成千上万的行),为了提升数据检索的速度,Oracle引入了索引。索引是实现数据高效检索的基础,也是SQL调优的最基本手段。


表中包含行,不同的行代表不同的实体。行不允许相同,否则无法代表不同实体,这就是实体的完整性约束。为了实现完整性约束,Oracle引入了
序列:序列用来在整个数据库范围内产生唯一的顺序编号。


关系数据库的基本目的是在不同的用户间共享数据。表级别的授权无法实现行粒度和列粒度的权限管理,为此Oracle引入了视图。视图对表的行和列进行帅选,实现了行粒度和列粒度的权限管理目的。


有时我们要频繁地从多个表检索数据。各个表的数据默认存放到不同的段中,这意味着要到不同的数据块获取数据。为了加快检索速度,Oracle把若干个表的行存放到相同的数据块,这就是。簇提高了多表关联的性能,Oracle内部的数据字典表设计就用到了簇。


有了表、索引、序列和视图之后,Oracle把这些对象聚合在一起,形成数据库。表和索引之类的东西最终会存放到磁盘,其存在形式就是数据库文件。


让我们思考一个问题:如果定义表时,直接把表关联到文件会有什么问题?答案很明显:如果数据文件位置发生变化,就得修改表的定义。为了解决此问题,Oracle引入了表空间。表空间是多个文件的集合,实现了数据库的逻辑表现与数据存储的分离,使之更易于管理。


大机构的数据很多,通常会分散到不同的数据库中。为了在不同数据库之间访问彼此的数据,Oracle引入了数据库链接。数据库链接是不同数据库间互相访问的通道。


如果应用程序访问了多个数据库,当某个库的部署发生变动时,如何避免对应用程序的代码做更改呢?和表空间类似,Oracle引入了同义词来解决该问题。同义词是模式对象的别名,提供了数据独立性和位置透明性的功能

上述概念是Oracle早期版本就具有的。在后续各个版本中,Oracle不断补充新概念,功能不断增强,Oracle数据库管理系统就像一棵树一样茁壮成长,枝繁叶茂。


上面简单地引出了几个Oracle基本概念,对于概念本身的阐述只是点到为止,未做深入解释。为了准确理解这些概念,我们看看Oracle是如何定义这些概念的:



表(table):Basic unit of data storage in Oracle Database. Data in tables is storedin rows and columns.

索引(index):Optional schema object associated with a nonclustered table, tablepartition, or table cluster. In some cases indexes speed data access.

序列(sequence):A schema object that generates a serial list of unique numbers for tablecolumns.

视图(view):A custom-tailored presentation of the data in one or more tables. Theviews do not actually contain or store data, but derive it from the tables onwhich they are based.

簇(cluster):Optional structure for storing table data. Clusters are groups of one ormore tables physically stored together because they share common columns andare often used together. Because related rows are physically stored together,disk access time improves.

数据库(database):Organized collection of data treated as a unit. The purpose of adatabase is to store and retrieve related information. Every Oracle databaseinstance accesses only one database in its lifetime.

表空间(tablespace):A database storage unit that groups related logical structures together.The database data files are stored in tablespaces.

数据库链接(database link):A named schema object that describes a pathfrom one database to another. Database links are implicitly used when areference is made to a global object name in a distributed database.

同义词(synonym):An alias for a schema object. You can use synonyms to provide dataindependence and location transparency.

注:以上内容来自Oracle手册《DatabaseConcepts》。


要注意的是,应结合实际例子来理解这些概念,而不能只停留在文字上。Oracle在不同版本中对某个概念的定义可能不同,若想透彻理解其本质,应仔细阅读《Database Concepts》相关内容。很多DBA反复阅读该文档,就是为了把握概念的本质。
itlife365 分享 Oracle SQL命令通解三步曲 第一步 了解Oracle基本概念 end

Tags:
Aug 10

itlife365 分享Oracle SQL命令通解三步曲(收藏于itpub)
你知道吗?Oracle 11g(11g Release 2)的SQL语言参考(SQL Language Reference)一共有1522页,其中CREATE TABLE这个命令的语法图解就有20页之多,而整个命令的说明更是达到了76页!

到了Oracle 12c(12c Release 1),整个手册的页数则达到1824页,CREATE TABLE命令的语法图解是21页,整个命令的说明则达到87页!Oracle语法是如此繁杂,简直让人望而却步!

你可能会说,我知道啊!我看过这个手册,而且CREATE TABLE 这个命令其实还不是最复杂的,最复杂的命令是ALTER TABLE,12c中占据了103页的篇幅,其中语法图解就有34页!

对,如果你知道,那说明你蛮厉害,你对Oracle的SQL语法不陌生。

可是如果我告诉你,在Oracle 版本7中,CREATE TABLE和ALTER TABLE这两个命令的语法图解都不足一页!你会不会感到惊讶?

选择了Oracle,就得去面对它繁杂的语法文档。但是一个人的精力是有限的,要想又快又好地掌握Oracle语法,就得讲究方式方法了。

《Oracle SQL命令通解三步曲》将引领大家从Oracle基本概念入手,了解某个早期版本语法命令,而后逐步了解各版本新增命令,从而建立起一个SQL命令的完整视图。

第一步:了解Oracle基本概念
第二步:了解Oracle版本6的SQL命令
第三步:了解Oracle各版本新增SQL命令
至此,我们简单介绍了Oracle各个版本引入的关键概念,并通过这些概念来把握相关的SQL命令,从而对整个SQL命令体系有了大致了解。
3-understand-for-oracle-sql
--itlife365 分享Oracle SQL命令通解三步曲(收藏于itpub) end

Tags: ,
Jul 30

近期美国签证系统瘫痪 或因Oracle升级故障
【IT168 专稿】从7月19日开始,美国签证系统出现技术故障,全球上万名赴美申请者因此受到影响。此次出现故障的美国领事综合数据库(CCD,Consular Consolidated Database)是基于Oracle研发出的最大的数据库系统之一,肩负着美国国务院审批、记录并打印签证及其他赴美入境材料的重任。
    据了解,在该领事综合数据库中存有上亿的签证记录、7500万份照片资料,平均每天能办理3.5万份签证业务。美联社称,数据库的运行故障最早出现在本月19日,经检测、排查后该系统于23日恢复使用,但运作效率仍呈现出“大幅下降”的状态。

  美国签证系统瘫痪 或因Oracle升级故障

  对于此次事件,微博认证为甲骨文(中国)软件系统有限公司资深主任技术分析师的博友称,CCD平台曾获美国政府大数据解决方案大奖,而此次出现故障的美国签证系统是CCD平台170多个软件应用的其中之一。此次事故的起源是visa应用故障,是由于美国领事局升级其中一个Oracle RAC系统,但没有经过仔细演练上线而造成的。领事局方面的信息技术人员折腾一个礼拜后,7月25号才报告给甲骨文,造成了故障的延误。
  ITPUB资深版主吕海波(VAGE)认为,Oracle对于规模一般、繁忙程度一般的数据库,支持的还是可以的;但对于规模极大、极为繁忙的数据库,缺乏有力的支持。这也是阿里系去IOE的主要原因之一。

"去IOE"中的I,在阿里巴巴内部代表者为IBM,真实含义是去掉以IBM为代表的小型机硬件设备,不再使用集中式技术架构,改为开放式X86硬件平台的分布式技术架构提供数据服务;“去IOE”中的O,在阿里巴巴内部代表着甲骨文,真实含义是去掉Oracle数据库,也即以开源数据库产品替代甲骨文、IBM等为典型代表的商业数据库产品;“去IOE”中的E,在阿里巴巴内部代表者为EMC,真实含义是去掉以数据储存的存储设备,也即不再使用EMC、HP、戴尔等公司提供的中高档存储设备,改为使用开放通用的X86主机的本地存储。更多什么是去IOE http://itlife365.com/blog/post/qu-IOE.php
集中式部署(IOE架构)很难适应互联网大规模应用对扩展性的要求,所以所谓去IOE,其实质是分布式架构+开源系统替代了集中式架构+商用系统
他从以下四个方面分析了此次美国签证系统瘫痪事件背后的原因:
 一、对闭源的系统,support全靠厂商。随着用户规模扩大,support力度肯定越来越薄弱。但Oracle RDBMS本身已经有数十年的运营基础、众多DBA大力研究、第三方技术人员能力并不逊于原厂。因此采用它还是相对安全的。
  二、但对于极为庞大、繁忙的系统,Oracle的support能力毕竟有限,系统稳定性的保证主要靠甲方公司自己的DBA团队。一旦DBA团队能力稍弱,系统问题再所难免
  三、oracle最近如火如荼推出内存数据库组件,如果要使用,一定要小心。如果的确需要内存层做缓存,选择Redis、Memcached或CouchBase等或许是更好的选择。Oracle内存组件不像Oracle RDBMS有数十年的运行基础,又是闭源,一旦出现问题,Oracle是否能及时解决,尚未可知。
  四、在初期的架构阶段,由于不了解其内部技术原理,仅像工地工人一样“搭建”着使用,没有根据原理,扬长避短真正的“架构”着使用,又如何保证这样使用是最好的?如何保证出现问题后尽量减少线上应用的影响?
  截至今天上午,美国签证系统已逐渐恢复,美国驻华使馆签证处重新开始受理签证申请,但故障的影响还在继续。美国哥伦比亚广播公司(CBS)称,因签证系统故障造成大范围影响的事例在美国并非首次出现,2003年9月,该国签证系统遭遇电脑病毒袭击陷入瘫痪状态。

-->>转载于:http://tech.it168.com/a2014/0728/1650/000001650506.shtml

Tags: ,
分页: 1/14 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页