热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle知识整理笔记

这是一篇Oracle知识整理笔记,包括SQLServer和Oracle的比较、Oracle中基本的概念和关系、管理工具plsqlDeveloper和如何分配权限和角色,需要的朋友可以参考下

小编整理的一篇关于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知识的整理,还有许多知识点未涉及到,在将来的文章更新中会陆续补充,希望大家继续关注。


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在SQL中查询分组后每组行数的统计方法。通过使用count()函数和GROUP BY子句可以统计每组的行数,但是如何统计所有组的行数呢?本文提供了一种实现方法,并给出了相应的SQL查询语句。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了如何找到并终止在8080端口上运行的进程的方法,通过使用终端命令lsof -i :8080可以获取在该端口上运行的所有进程的输出,并使用kill命令终止指定进程的运行。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
    本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
author-avatar
Not-Only-For曾广超
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有