Oracle知识整理笔记

小编整理的一篇关于Oracle知识的学习笔记,希望对大家有帮助。

1.简单对比一下SQL Server 和Oracle
  先给大家看一张我画得图:

安装完Sql Server后,我们打开、连接数据库引擎后可以看到很多的数据库有系统数据库也有用户数据库。而Oracle安装后,一个数据库都对应一个服务,我们在使用前需要在计算机服务中开启相应的服务,如图中所示,服务开启,用户登录后看到的是一个数据库,一个数据库中可以有表、视图、存储过程等数据对象。一个Oracle数据库可以有多个用户,用户的权限不同,进入到数据库中看到的数据对象也是不同的。

2.Oracle中基本的概念和关系
  我总结了一下Oracle中有5个必须要知道的概念:用户、权限、角色、方案和数据对象。
用户的概念大家都知道不用赘述;权限就是能不能做某一件事的证明;而角色可以看做是某些权限的集合体。在Oracle中权限有很多种,如果挨个给用户授权会很麻烦,所以就把一些权限分配给一个角色,那么给用户授予这个角色就解决挨个授予权限的麻烦。方案这里和用户相对应。一个用户,Oracle会默认给它一个方案,这个方案里会存放数据对象。那么数据对象又是什么?一想便知,数据对象就是表、视图、存储过程等的总称。他们之间的关系我用一张图来说明。

系统权限是用户对数据库的相关权限,比如:登录。对象权限是用户对其他用户的数据对象的操作权限。比如:更新其他方案的表。看到这张图不知道大家有没有疑问:Oracle的权限有哪些?角色有哪些?我们怎么操作这个数据库呢?后面的博客会介绍这些。

3.Oracle的一种管理工具pl/sql Developer 
   pl/sql developer 是用于开发pl/sql块的集成开发环境,它是一个独立的产品,而不是oracle的一个附带品。pl/sql是procedural language/sql是Oracle在标准sql语言上的扩展。pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用例外处理各种错误,使得它的功能变得更强大。
pl/sql块由三部分构成:定义部分、执行部分、例外处理部分。定义部分和例外部分可选。

Declear
/* 定义部分-----定义变量,常量,游标,例外,复杂数据类型*/
Begin
/*执行部分-----要执行的pl/sql语句和sql语句*/
Exception
/*例外处理部分-----处理运行的各种错误*/
End;
举个最简单的例子:
Begin
dbms_output.put_line('hello,world');
End; 

为什么会出现pl/sql中文乱码问题?
   前提是:本机没有安装Oracle,采用pl/sql远程访问Oracle数据库。本机安装了Oracle客户端和pl/sql。
   服务器上的Oracle有一个字符设置,比如UTF-8或者简体中文,若没有手动修改那么会有一个默认的。在本机上Oracle客户端和pl/sql也需要字符设置.如果服务器和客户端的字符编码不一致,就会出现中文乱码问题。所以,我们要做得就是修改他们使他们一致。(现在看来是如此简单,当时怎么会那么纠结!)
   怎么解决pl/sql中文乱码问题?
   首先,我们要先知道服务器端的Oracle是什么字符编码。打开你的pl/sql,在命令窗口中输入  select userenv('language') from dual;   就会先看到。如图:

然后要做的就是设置本机的字符设置为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK。办法是设置环境变量。步骤:我的电脑-->右击-->属性-->环境变量-->系统变量-->把nls_lang修改成SIMPLIFIED CHINESE_CHINA.ZHS16GBK,然后需要重启pl/sql。网上很多资料说做到这一步就可以解决问题了。但是我的乱码问题还是解决不了。若你的问题也解决不了,请这样做:打开你的注册表找到这样的目录:找到:HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE 中

设置右侧NLS_LANG,将它的值也设置为SIMPLIFIED CHINESE_CHINA.ZHS16GBK。重启pl/sql后,将已经添加进去的记录删除,重新添加一条再测试。以前添加的记录很可能就是乱码写入的,看不到效果。

4、如何分配权限和角色
1).什么是权限,什么是角色?
   权限分为系统权限和对象权限。系统权限是指执行特定类型sql命令的的权利。比如用户具有了create table的权限,可以在其方案中建表;当具有了create any table,可以在任何方案中建表。对象权限是指访问其他方案的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。比如Scott用户要访问Jane.emp表(Jane方案,emp表),则必须在Jane.emp表上具有对象权限。
  角色是相关权限的命令集合,使用角色的目的主要是为了简化权限的管理。
2).常用的权限和角色分类
  这里我们只简单介绍最常用的即可,若想了解可查阅帮助文档也可通过查询语句获得。
  a.系统权限:关于数据库连接(database link)、会话(session)、用户(User)、表空间(tablespace)、角色(role)、数据对象(表、视图、存储过程)等这些操作的create、drop和alter。
  b.对象权限:insert --添加 、delete --删除 (数据)、 Alter --修改(修改表结构) 、Update --修改(更新数据) 、Select --查询 。也就是增删改查四大类。
  c.角色分为预定义和自定义两种。预定义是指Oracle所提供的角色,常用的包括:connect,resource,dba.
    dba角色具有所有的系统权限,默认的有dba角色的用户是sys和system。 这两个用户可以将任何系统权限授予其他用户。注意一点就是:dba角色没有启动关闭数据库的权利.Connect角色具有一般开发人员需要的大部分权限,多数情况下,只要给用户授权connect和resource角色就够了。那么connect和resource角色都有什么权限呢?这里没有必要一一列举。我们可通过查询获得。那么如何查询呢?
3).查询
如何查询Oracle有多少种角色? select * from dba_roles;
如何查询Oracle有多少种系统权限和对象权限? select * from system_privilege_map order by name; select  distinct privilege  from dba_tab_privs;
如何查看某个用户有什么样的角色?  select * from dba_role_privs where grantee='用户名';
如何查看一个角色包括什么系统权限和对象权限? select * from dba_sys_privs where grantee='角色名'; select * from dba_tab_privs where grantee='角色名';
4).授予和回收
   这部分知识在学习过程中是按一条一条规则来的,学完觉得特别乱。我把这里的东西按照一个正常的操作过程编成了一条操作线。感觉知识比较清晰了。
   a.现在我要使用Oracle,必须要有用户才行。Oracle默认创建两个用户sys和system.我们可以使用这两个用户登录上去,建立自己的用户,如:create user Ken identified by ken.现在我们使用Ken来登录会给出错误信息。为什么?因为Ken用户没有登录的权限。现在我们需要给Ken授权:grant create session  to Ken  with admin option.这样Ken用户登录就ok了。那么with admin option能起到什么作用?这说明被授权的用户或者是角色还可以将该系统权限给其他用户或者角色。
    回收系统权限操作:依然采用上面的例子:回收登录权限:revoke  create session  from Ken;  系统权限的回收不是级联的。比如:Ken又将登录权限授予Jane,那么回收Ken的权限后,Jane依然可以登录。
    b.对于对象权限来说,我们举个例子:如果我的方案中有一张表emp,现在我想让Ken用户有权限来操作我的表。那我怎么办?第一种办法是用dba用户将操作我的表emp的权限给Ken,这里需要说明一点:dba用户可以将任何对象上的对象权限授予其他用户。第二种办法是我自己来做。  如何做? grant select on emp to Ken with grant option.这里我用到了 with grant option.这能起到这样的作用:Ken用户可以将操作我的表emp的权限在授予别的用户。这里注意一点。它跟with admin option 不同,with grant option只能授予用户,不能授予角色。
    回收对象权限操作:revoke select on emp from Ken ;对象权限的回收是级联的。比如:Ken将对emp表查询的权限授予Jane,那么回收Ken的权限后,Jane也不能对emp表进行查询。
    c.角色授权这里需要两步:1给角色授权2将角色给某一个用户。现在我们将登录权限给一个角色:grant  create session  to 角色名;然后把这个角色给用户Ken:grant 角色名 to Ken.删除角色采用 drop role 角色名。

总结:这篇博客侧重于介绍Oracle的基本机制,是最基本的知识,最后还介绍了如何分配权限和角色,包括它们是什么,分类以及如何去用它们。这里我们要搞明白一个前提就很好理解:我们要做某一件事必须要有权限。当我们没有权限的时候可以使用系统用户去做,如果系统授予我们权限那我们也可以做了。

以上就是对Oracle知识的整理,还有许多知识点未涉及到,在将来的文章更新中会陆续补充,希望大家继续关注。

(0)

相关推荐

  • PL/SQL Dev连接Oracle弹出空白提示框的解决方法分享

    没办法,只能自己研究,经过大概一天时间吧,还是搞好了,写个总结. 出现这种问题,解决方法大概有这几种: 1.权限不够,导致弹出空吧提示框.(直接上链接) http://jingyan.baidu.com/article/066074d6760959c3c21cb0d6.html 就PL/SQL图标上点右键---属性---兼容性--管理员身份运行此程序的勾打上,即可 2.环境变量没设对. ①在安装oracle服务器的机器上搜索下列文件,oci.dllocijdbc10.dll(其中10代表orac

  • PL/SQL数据类型及操作符

    标量(scalar)数据类型 标量(scalar)数据类型没有内部组件,他们大致可分为以下四类: . number . character . date/time . boolean 表1显示了数字数据类型:表2显示了字符数据类型:表3显示了日期和布尔数据类型. 表1 Scalar Types:Numeric Datatype Range Subtypes description BINARY_INTEGER -214748-2147483647 NATURALNATURALNPOSITIVEP

  • 基于Oracle的面向对象技术入门基础简析开发者网络Oracle

    正在看的ORACLE教程是:基于Oracle的面向对象技术入门基础简析开发者网络Oracle.一.概述 对象是Oracle8i以上版本中的一个新的特性,对象实际是对一组数据和操作的封装,对象的抽象就是类.在面向对象技术中,对象涉及到以下几个重要的特性:  封装性 通过对数据和操作的封装,将用户关心的数据和操作暴露出来作为接口,其他数据和操作则隐藏到对象内部,这样便于用户使用和维护.  继承性 对象具有继承性,通过这一特性可以增强程序的可扩展性,适合大型项目的开发.  多态性 同一操作在运行时刻有

  • Oracle PL/SQL入门案例实践

    正在看的ORACLE教程是:Oracle PL/SQL入门案例实践. 前面已经了解了关于PL/SQL编程的基础,本文将结合一个案例来加深对这些知识点的理解. 一. 案例介绍 某数据库有两张表,是关于某公司员工资料.薪水和部门信息的,它们分别是emp表和dept表,两张表的结构如下: 要求如下: 1.按照上表结构建立相应的表,并每张表写入5组合法数据. 2.操纵相关表,使得"技术部"的员工的薪水上涨20%. 3.建立日志,追踪薪水变动情况. 4.建立测试包. 二. 案例的分析与实现 从前

  • PL/SQL DEVELOPER 使用的一些技巧

    1,登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则是以毫秒计算的. Tools菜单 --> Object Brower Filters,会打开Brower Folders的定单窗口,把"My Objects"设为默认即可. Tools菜单--> Object Brower

  • PL/SQL Number数字类型函数

    ABS(x) 函数,此函数用来返回一个数的绝对值. ACOS(x)函数,返回X的反余弦值.X范围从1到-1,输入值从0到派,以弧度为单位. ASIN(x)函数,返回X的反正弦值.X范围从1到-1,输入值从-PI/2到PI/2,以弧度为单位. ATAN(x)函数,返回X的反正切值.输入值从-PI/2到PI/2,以弧度为单位. BITAND(x,y)函数,返回X和Y的与结果.X和Y必须为非负整数.注意没有BITOR函数,但是在UTL_RAW包中有用      于RAW值的位操作符. CEIL(x)函

  • Oracle存储过程入门学习基本语法

    1.基本结构 create OR REPLACE PROCEDURE存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 2.select INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN select col1,col2 into

  • Oracle PL/SQL入门慨述

    正在看的ORACLE教程是:Oracle PL/SQL入门慨述.一.PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单的调用相应语句来直接取得结果即可.显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利. 然而,对于有些复杂的业务流程又要求相应的程序来描述,那么4GL就有些无能为力了.PL/SQL的出现正是

  • PL/SQL number型数据

    number(<p>,<s>) 精度p取值范围1-38有效位s取值范围-84-127 最高整数位数=p-s s正数,小数点右边指定位置开始四舍五入s负数,小数点左边指定位置开始四舍五入s是0或者未指定,四舍五入到最近整数当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p 位必须是0,保留s位小数. --num_test start------------------------------------------------ Connected to Ora

  • oracle复习笔记之PL/SQL程序所要了解的知识点

    复习内容: PL/SQL的基本语法.记录类型.流程控制.游标的使用. 异常处理机制.存储函数/存储过程.触发器. 为方便大家跟着我的笔记练习,为此提供数据库表文件给大家下载:点我下载 为了要有输出的结果,在写PL/SQL程序前都在先运行这一句: set serveroutput on 结构: declare --声明变量.类型.游标 begin --程序的执行部分(类似于java里的main()方法) exception --针对begin块中出现的异常,提供处理的机制 --when...the

  • Oracle PL/SQL语言入门基础

    正在看的ORACLE教程是:Oracle PL/SQL语言入门基础.PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件.以及如何设计并执行一个PL/SQL程序. PL/SQL的优点 从版本6开始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的优点以及其独有的数据管理的便利性,那么你很难想象ORACLE缺了PL

  • PL/SQL 类型格式转换

    TO_NUMBER(char[,'format_model'])  字符转换到数字类型 TO_DATE(char[,'format_model'])  字符转换到日期类型   格式说明符:要与前边要转换的字符串的格式要相同才能转换(匹配问题:格式和位数). TO_CHAR(date[,'format_model'[,nlsparams]])   第二个参数可以省略,不指定格式,按系统默认格式输出.   区分大小写.   使用FM(在格式控制符前添加)符号可以去掉空格或是首位的零.   如果指定了

  • Oracle 数组的学习 小知识也要积累,养成好的学习态度

    提叻一个代码段,要人帮助解释一下. 代码段如下: 复制代码 代码如下: declare type t_indexby is table of number index by binary_integer; type t_nesteed is table of number; type t_varray is varray(10) of number; v_indexby t_indexby; v_nested t_nested; v_varray t_varray; begin v_indexb

  • Oracle RMAN快速入门指南

    正在看的ORACLE教程是:Oracle RMAN快速入门指南.前言: 这篇文章主要介绍RMAN的常用方法,其中包含了作者一些自己的经验,里面的实验也基本全在WIN 2K和ORACLE 8.1.6环境下测试成功(因为这个环境比较容易实现). 本文借鉴了网上一些高手的相关文章,希望大侠们不要见怪,此处一并谢过. 这篇文章主要是在北京出差期间写的,回到家后整理修改了一下,时间比较仓促,同时因为篇幅有限,一些技术细节不能一一覆盖了,只希望能够帮助新手入门的作用,想真正熟练掌握RMAN,必须经过较长时间

  • PL/SQL 日期时间类型函数及运算

    内部存储格式: 世纪.年.月.日.小时.分钟.秒 默认格式是:DD-MON-RR. SYSDATE 返回当前的系统时间. SELECT SYSDATE FROM DUAL: 对日期的数学运算 SELECT (SYSDATE-HIRE_DATE)/7 FROM TABLENAME WHERE ROWNUM;   数字列 ADD_MONTHS(date,x)函数,返回加上X月后的日期DATE的值.X可以是任意整数.如果结果的月份中所包含的   日分量少于DATE的月份的日分量,则返回结果月份的最后一

  • oracle 合并查询 事务 sql函数小知识学习

    表查询: 合并查询:使用union关键字,可将满足条件的重复行去掉. 复制代码 代码如下: select ename,sal,job from emp where sal > 2500 union select ename,sal,job from emp where job = 'MANAGER'; 而union all用法和union相似,但是不会取消重复行. intersect 用来取两个结果的交集. minus用来取两个结果的差集. 使员工scott的岗位,工资,补助与SMITH员工一样

  • 比较SQL Server与Oracle、DB2数据库的一些知识

    开放性 SQL Server 只能在Windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的.Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业.而且Windows平台的可靠性,安全性和伸缩性是非常有限的.它不象Unix那样久经考验,尤其是在处理大数据量的关键业务时. Oracle 能在所有主流平台上运行(包括 Windows).完全支持所有的工业标准.采用完全开放策略.可以使客户选择最适合的解决方案.对开发商全力支持. DB2 能在所有主流

随机推荐