热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2个domoracle,oracle基本元素转

Oracle方案——SQLServer数据库一般在实现一个软件工程项目时,用户习惯于把数据存储在一个集中的对象中。比如:在SQLServer中ÿ

Oracle方案——SQL Server 数据库

一般在实现一个软件工程项目时,用户习惯于把数据存储在一个集中的对象中。

比如:在SQL Server中,针对一个项目,我们一般创建一个数据库

但是在Oracle中一般只有一个数据库,那么在一个数据库中实现不同的项目就

非常不方便。Oracle在组织不同项目中的数据库对象时,使用方案进行区分。

也就是说,创建一个软件项目,在Oracle中不是针对这个项目,创建独立的数据库,

而是为此项目创建一个方案。

什么是方案:某用户拥有的所有的数据库对象的逻辑集合,就叫方案。

方案在名称上和用户名是相同的。

比如有一个Oracle“用户”叫scott,那么,我们一般称Scott用户所拥有的所有数据库

对象的集合叫“方案”

比如表emp,它的所有者是scott,我们引用的方法是:scott.emp

scott.emp:可以称之为:

scott方案中的emp表

也可以称之为

scott用户所拥有的emp表

以上两种说法是等价的,一般不进行区分。

比如数据库DB中有三个方案:a、b、c,每一个方案中都有一个表emp

格式:[[数据库名.]方案名.]对象名

db.a.emp

db.b.emp

db.c.emp

在SQL Server中引用方式:因为在SQL Server中有不同的数据库名a,b,c,

每一个数据库中都有emp表

格式:[[数据库名.]所有者的用户名.]对象名 == [[数据库名.]方案名.]对象名

a.dbo.emp

b.dbo.emp

c.dbo.emp

Oracle中创建方案的方法就是创建用户

Oracle中如何实现方案:

1、(可选)创建表空间

2、创建用户

2、给用户授予合适的权限

3、创建数据库对象(表、视图、索引等)

4、创建数据库应用程序(PL/SQL编程)

===============表空间===========

表空间是什么?

用于存储数据库对象的存储空间

SQL Server中数据存储在一个逻辑对象中——文件组

文件组是数据库中的逻辑对象,实现把不同的物理数据文件

组织在一个对象中,方便引用。

可以把整个表的数据的存储定义到不同的文件组

create table abc.dbo.test

(id int primary key)

on 'mygroup'

指定到文件组,实际上是定位到文件组所对应的多个物理文件

Oracle中,组织不同的物理文件的逻辑对象不叫文件组,叫表空间

表空间是用于在Oracle中组织不同的数据文件的逻辑数据库对象

表空间是有物理数据文件构成的。

创建具有一个数据文件的表空间

create tablespace tp_name

datafile

'路径和文件名' size 大小(文件不能乱删---如果直接删了需重装Oracle)

创建具有一个数据文件的表空间

create tablespace tp_name

datafile

'路径和文件名' size 大小,

'路径和文件名' size 大小,

'路径和文件名' size 大小,...

create tablespace test1

datafile

'c:\test1' size 5m,

'c:\test2.ora' size 5m

在实现项目方案时,表空间是可选的对象,如果用户不创建表空间

那么,系统会给新创建的用户分配系统默认表空间(system)

但是,为了保证项目数据能够高效存储、方便的备份,推荐创建表空间

删除表空间

Drop tablespace tablespace_name [including contents [and datafiles]];

===============方案(用户)===================

如果有可以使用的表空间了,那么就意味着,可以有空间存储用户数据了

下面创建用户:(创建方案)

语法:

create user 用户名 identified by 密码

[default tablespace 表空间名]

[quota 大小 on 表空间名]

[password expire](密码过期)

如果[default tablespace 表空间名]不定义,就使用系统默认表空间

quota 大小 on 表空间名:在指定在"表空间名"所指定的表空间上,用户可以用多少空间

[password expire]:用户在第一次登录时,可以自己更改密码

创建用户:hy密码是password,表空间默认

create user hy identified by password;

创建用户:hy密码是password,表空间为test

create user hy identified by password

default tablespace test

创建用户:hy密码是password,表空间为test

在test上可以用5M空间,密码立即过期

create user hy identified by password

default tablespace test

quota 5m on test

password expire

=================权限===========

Oracle中新创建的用户,是没有任何权限的,即使是登陆也不行

需要给Oracle用户明确授权才能使用

Oracle权限的分类:

系统权限:执行特定的SQL语句的权利

对象权限:访问其他方案对象的权利

系统权限:(由特权用户管理)

create table        权限代表用户可以在自己的方案中创建表(create table)

create any table 权限代表用户可以在任意方案中创建表(create any table)

对象权限:(自己拥有的对象的对象权限不需要授权)(对象的所有者管理)

select :对象的拥有者把对自己的对象的select权限授予其他用户

权限的授予和撤销(grant和revoke):

1、系统权限的授予和撤销:

GRANT 权限1,权限2,... TO

user | role | public [,user | role | public] ...[with admin option]

user:用户名

public:是一个Oracle组,代表所有的Oracle用户 (Windows中的everyone)不推荐使用

--1、授予用户在自己的方案中建立表、视图、过程和函数的权限

GRANT create table,create view,create procedure

TO hy

--2、授予用户scott、hy、hr在任意的方案中建立表、视图、过程和函数的权限

GRANT create any table,

create any view,

create any procedure

TO scott,hy,hr

with admin option:委派授权选项:

如果在授权时使用此选项,说明此用户可以管理此权限,

也就是此用户在自己得到此权限的同时,也可以把此权限授权其他用户

--3、授予用户在自己的方案中建立表、视图、过程和函数的权限,并且可以将权限授予别的用户

GRANT create table,create view,create procedure

TO hy with admin option

如果授权者权限撤销了,那么不会影响其授与的其他用户的权限

A——>B——>C——>D

A权限撤销,B、C、D不会受到影响

Revoke sys_priv [, sys_priv]…

from {user | role | public},[, {user | role | public}]…

2、对象权限的授予和撤销:

GRANT 对象权限1,...,对象权限n

ON 对象名1,...,对象名n

TO user | role | public [,user | role | public] ...

with grant option

对象权限1,...,对象权限n ON 对象名1,...,对象名n

对象权限:根据对象类型不同权限名也不一样

grant select on emp to hy

grant select on proc_name to hy --错误的,因为过程是不能够select操作

grant execute on proc_name to hy --正确的,过程可以具有"执行"权限

给用户hr,在SCOTT方案中对emp表执行select的能力

grant select on scott.emp to hr;

with grant option:对象权限的委派

委派后,权限是级联收回的

A——>B——>C

如果A的权限被撤销,则B、C都会被撤销

Revoke {obj_priv [(column_list)] [,obj_priv [(column_list)] ] … | all [privileges]}

on [schema.]object

from {user | role | public} [, {user | role | public} ]…

Oracle角色:

——权限的集合就是角色

——类似于Windows的组

一般情况,Oracle新的用户没有任何权限(系统、对象),

要给新用户授予系统权限、对象权限,且授权的个数不定

--创建新用户

create user test identified by password

default tablespace hy

quota 10m on hy

--授予登录系统

grant create session to test

--授予表、视图、索引、序列生成器等创建、修改、删除等权限

grant create table,create view,create sequence to test;

。。。

过多的权限设置,增加了新用户设置的复杂性

——使用角色:

——Oracle内置的3个角色:

1、connect:针对Oracle一般用户,诸如登录、创建表等基本权限

2、resource:针对Oracle开发用户,诸如编程、对表空间的无限制使用

3、dba:数据库管理员,对数据库具有最高的管理权限(sysdba)

一般一个新建立用户,只需要授予connect+resource角色即可

Oracle用户自定义角色:

1、公共角色:重点

create role role_name not identified;

2、私有角色:可选的

如果一个私有角色不是用户的默认角色,则用户获得此角色的权限

必须通过输入密码验证后获得。

角色的使用方法:

1、建立角色

create role myrole not identified;

2、给角色授权(向权限的集合中添加权限)

grant create session,create table to myrole;

3、通过角色给用户授权

grant myrole to hr;

——角色的主要作用:简化授权

角色的嵌套:

create role a not identified;

create role b not identified;

create role c not identified;

grant create session to a;

grant create table to b;

grant a,b to c;

grant c to scott;

在Oracle中新建用户最简单的方法:

1、建立用户

2、授予角色(connect,resource)

例:1.create user test identified by password

2.grant connect,resource,create view to test ;



推荐阅读
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文详细介绍了 com.facebook.drawee.view.SimpleDraweeView 中的 setScaleType 方法,提供了多个实际代码示例,并解释了其在不同场景下的应用。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
author-avatar
你的眼神16_884
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有