`

oracle 用户创建及权限设置 和 同义词

 
阅读更多

   oracle 用户创建及权限设置

 

权限:权限和同义词一般要一起设置,设置同义词后,查其他用户的表就不需要写其他用户的用户名。因此

在 user1 下 有表 table1,现在 user2 要使用 table1

1.设权限 :grant select on table1to user2; (设置之后:select * from  user1.table1 可以查询)

2.设同义词: create public synonym table1 for A.table1; (设置之后:select * from table1 可以直接查询)

 

  create session

 

  create table

 

  unlimited tablespace

 

  connect

 

  resource

 

  dba

 

  例:

 

  #sqlplus /nolog

 

  SQL> conn / as sysdba;

 

  SQL>create user username identified by password

 

  SQL> grant dba to username;

 

  SQL> conn username/password

 

  SQL> select * from user_sys_privs;

 

  我们将从创建Oracle用户权限表开始谈起,然后讲解登陆等一般性动作,使大家对Oracle用户权限表有个深入的了解。

 

一、创建

 

  sys;//系统管理员,拥有最高权限

 

  system;//本地管理员,次高权限

 

  scott;//普通用户,密码默认为tiger,默认未解锁

 

二、登陆

 

  sqlplus / as sysdba;//登陆sys帐户

 

  sqlplus sys as sysdba;//同上

 

  sqlplus scott/tiger;//登陆普通用户scott

 

三、管理用户

 

  create user zhangsan;//在管理员帐户下,创建用户zhangsan

 

  alert user scott identified by tiger;//修改密码

       

       //创建session会话的权限、不然无法登入

       grant create session to facc_fields_sel;

 

四,授予权限

 

  1、默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限

 

  

 

  grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限

 

  grant unlimited tablespace to zhangsan;//授予zhangsan用户使用表空间的权限

 

  grant create table to zhangsan;//授予创建表的权限

 

  grante drop table to zhangsan;//授予删除表的权限

 

  grant insert table to zhangsan;//插入表的权限

 

  grant update table to zhangsan;//修改表的权限

 

  grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)

 

  2、oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权

 

  

 

  grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限

 

  grant drop on tablename to zhangsan;//授予删除表的权限

 

  grant insert on tablename to zhangsan;//授予插入的权限

 

  grant update on tablename to zhangsan;//授予修改表的权限

 

  grant insert(id) on tablename to zhangsan;

 

  grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update

 

  grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限

 

五、撤销权限

 

  基本语法同grant,关键字为revoke

 

六、查看权限

 

  select * from user_sys_privs;//查看当前用户所有权限

 

  select * from user_tab_privs;//查看所用用户对表的权限

 

七、操作表的用户的表

 

  

 

  select * from zhangsan.tablename

 

八、权限传递

 

  即用户A将权限授予B,B可以将操作的权限再授予C,命令如下:

 

  grant alert table on tablename to zhangsan with admin option;//关键字 with admin option

 

  grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似

 

九、角色

 

  角色即权限的集合,可以把一个角色授予给用户

 

  create role myrole;//创建角色

 

  grant create session to myrole;//将创建session的权限授予myrole

 

  grant myrole to zhangsan;//授予zhangsan用户myrole的角色

 

 

  drop role myrole;删除角色

 

 

Oracle的同义词(synonyms)详解

从字面上理解就是别名的意思,和视图的功能类似。就是一种映射关系。

    同义词语法:CREATE [PUBLIC] SYNONYM synonym FOR object;

1.创建同义词语句:

  create public synonym table_name for user.table_name; 

    其中第一个user_table和第二个user_table可以不一样。

    此外如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:create synonym table_name for table_name@DB_Link;

    当然,你可能需要在user用户中给当前用户(user2)授权: grant select/delete/update on user2

   注意:public 共用的同义词,如果要建立在哪个用户下面,请使用 (推荐使用这个)

          create  synonym user2.table1 for user.table1; 

          在 user2 中建立 名为 table1 的同义词,并 指定 user 的 table1 

2.删除同义词:

    drop public synonym table_name; 

3.查看所有同义词:

    select * from dba_synonyms 

    同义词拥有如下好处:节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接。

 

知识扩展:数据库对象

   表、视图、序列、过程、函数、程序包,甚至其它同义词都可以创建同义词。

  

   1、同义词:私有同义词、公有同义词。

   私有同义词只能被当前模式的用户访问。私有同义词名称不可与当前模式的对象名称相同。要在自身的模式创建私有同义词,

   用户必须拥有Create Synonym系统权限。要在其它用户模式创建私有同义词,用户必须拥有Create Any Synonym系统权限。

   公有同义词可被所有的数据库用户访问。要创建公有同义词,用户必须拥有Create Public Synonym系统权限。

 

   创建私有同义词语法:

   Create [OR REPLACE] SYNONYM [schema.]synonym_name FOR [schema.]object_name;

   其中:OR REPLACE表示在同义词存在的情况下替换该同义词。

         synonym_name表示要创建的同义词的名称。

         object_name指定要为之创建同义词的对象的名称。

   示例1:create synonym s_emp for scott.emp;

 

   创建公有同义词语法:

   Create PUBLIC SYNONYM synonym_name FOR [schema.]object_name;

   示例2:create public synonym emp_syn from scott.emp;

 

   可以查询字典视图User_Synonyms来查看用户所创建的同义词的详细信息

  

   删除同义词语法:Drop Synonym synonym_name; 删除公有同义词加上一个Public

   此命令只删除同义词,不会删除对应的表。

 

   2、序列:是用来生成唯一、连续的整数的数据库对象。序列通常用来自动生成主键或唯一键的值。

   创建序列语法如下:

   Create SEQUENCE sequence_name

     [START WITH integer]

     [INCREMENT BY integer]

     [MAXVALUE integer|NOMAXVALUE]

     [MINVALUE integer|NOMINVALUE]

     [CYCLE|NOCYCLE]

     [CACHE interger|NOCACHE];

   其中:START WITH是指定要生成的第一个序列号。对于升序序列,其默认值为序列的最小值。对于降序序列,其默认值为序列的最大值。

         INCREMENT BY是用于指定序列号之间的间隔。其默认值为1。如果integer为正值,则生成的序列将按升序排列,否则按降序排列。

         MAXVALUE指定序列可以生成的最大值。

         NOMAXVALUE这是默认选项,将升序序列的最大值设为10的27次幂,将降序序列的最大值设为-1。

         MINVALUE指定序列的最小值。MINVALUE必须小于或等于START WITH的值,并且必须小于MAXVALUE。

         NOMINVALUE这是默认选项,将升序序列的最小值设为1,将降序序列的最小值设为-10的26次幂。

         CYCLE指定序列在达到最大值或最小值后,将继续从头开始生成值。

         NOCYCLE这是默认选项。指定序列在达到最大值或最小值后,将不能再继续生成值。

         CACHE使用CACHE选项可以预先分配一组序列号,并将其保留在内存中,这样可以更快的访问序列号。

         NOCACHE此项则不会为加快速度而预先分配序列号。如果在创建序列时忽略了CACHE和NOCACHE选项,Oracle将默认缓存20个序列号。

   示例3:Create SEQUENCE toys_seq

            START WITH 10

            INCREMENT BY 2

            MAXVALUE 2000

            MINVALUE 10

            NOCYCLE

            CACHE 30;

 

   访问序列:可以通过CURRVAL和NEXTVAL伪列来访问该序列的值。

   示例4:演示从序列toys_seq中选择值插入toys表中的toyid列。执行成功将会在该表的toyid列插入值"P10"和"P12"。

          INSERT INTO toys(toyid,toyname,toyprice) values('p'||toys_seq.NEXTVAL,'TWENTY',25);

          INSERT INTO toys(toyid,toyname,toyprice) values('p'||toys_seq.NEXTVAL,'MAGIC PENCIL',75);

   示例5:演示如何查看序列当前值

          Select toys_seq.CURRVAL from dual;

 

   更改序列:ALTER SEQUENCE命令用于设置或删除MINVALUE或MAXVALUE、修改增量值、修改缓存中的序列号的数目。

   修改序列语法如下:注意,不能修改序列的START WITH参数。在修改序列时,应注意升序序列的最小值应小于最大值。

   ALTER SEQUENCE [schema.]sequence_name

     [INCREMENT BY integer]

     [MAXVALUE integer|NOMAXVALUE]

     [MINVALUE integer|NOMINVALUE]

     [CYCLE|NOCYCLE]

     [CACHE interger|NOCACHE];

   示例6:演示如何设置一个新的MAXVALUE,并为toys_seq序列打开了CYCLE。

         ALTER SEQUENCE toys_seq

           MAXVALUE 5000

           CYCLE;

 

   可以查询字典视图User_Sequences来查看用户所创建的序列的详细信息

 

   删除序列语法:Drop SEQUENCE toys_seq;

 

   3、视图

   视图是存储的查询定义。

   创建视图的语法如下:

   Create [OR REPLACE] [FORCE | NOFORCE] VIEW view_name[(alias,alias,...)] AS

   select_statement [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY];

   其中:OR REPLACE表示在该视图存在的话,将重新创建该视图。

         FORCE使用此关键字,则无论基表是否存在,都将创建视图。

         NOFORCE这是默认值。如果使用此关键字,则仅当基表存在时才创建视图。

         view_name表示要创建视图的名称。

         alias指定在视图里面列的名字,名字数目必须与视图所选择的表达式的数目相匹配。

         select_statement表示Select语句。

         WITH CHECK OPTION此选项指定只能插入或更新视图可以访问的行。术语constraint表示为CHECK OPTION约束指定的名称。

         WITH READ ONLY此选项确保不能在此视图上执行任何修改操作。

   示例7:演示创建一个名为ven_view的视图,该视图与vendor_master表具有相同的结构。

         Create VIEW ven_view AS select * from vendor_master;

 

   视图中的ORDER BY子句:以便在查询视图时即使不使用Order By子句,结果集也会按指定的顺序排列行。

   示例8:Create OR REPLACE VIEW ven_view(编号,日期) AS select orderno,odate from vendor_master order by venname;

  

   创建带有错误的视图:使用FORCE选项

   在以下情况下,Oracle也会创建视图:

   视力定义的查询引用了一个不存在的表;视图定义的查询引用了现有表中无效的列;视图的所有者没有所需的权限。

   示例9:下面创建一个基于venmast的视图。但数据库中并不存在名为"venmast"的表。

   Create FORCE VIEW ven AS select * from venmast;

   如果稍后创建名为venmast的表,可以使用ALTER VIEW ven COMPILE;

  

   联接视图:

   示例:演示如何创建联接视图

   Create OR REPLACE VIEW ven_ord_view AS select vm.vencode,venname,orderno,odate,ostatus

   from vendor_master vm,order_master om where vm.vencode=om.vencode;

 

   键保留表:在联接视图中,如果视图包含了一个表的主键,并且也是这个视图的主键,则这个键被保留,则这个表被称为键保留表。

   ven_ord_view视图以vendor_master和order_master这两个表为基表。order_master表被视为键保留表,因为orderno既是order_master表

   的主键,也是视图的主键。而vendor_master表不被视为键保留表,因为vendor_master表的主键vencode是联接字段,不是视图的主键。

   示例10:此示例成功修改了记录,因为odate列属于键保留表order_master。对于非键保留表vendor_master的venname列的更新则是不允许的。

   update wen_ord_view odate=odate+1 where vencode='V003';    注意:运行此示例时,必须确保基表的主键已正确创建。

 

   可以查询字典视图User_Updateble_Columns来查看联接视图中可更新的列。

   可以查询字典视图User_Views来查看用户所创建的视图信息。

 

   视图中的函数:视图可以使用单行函数(由数字、字符、日期组成)、分组函数和表达式。

   示例11:此示例用UPPER函数创建视图,注意使用函数或表达式时,应赋予列一个别名。

   Create VIEW vendor_master_view AS select vencode,UPPER(venname) vendor_name from vendor_master;

 

   删除视图语法:Drop VIEW view_name ;

 

   4、索引:

      查询User_indexes可以获取有关用户已创建的索引的详细信息。

      查询User_ind_partitions可以获取有关用户已创建的分区索引的详细信息。

      查询User_ind_columns可以获取有关列(用户的索引是基于这些列创建的)的详细信息。 

      唯一索引、组合索引、反向键索引、位图索引和基于函数的索引。

      索引在逻辑上物理上都独立于关联表中的数据,在任何时候都可以创建或删除索引,而不会影响基表或其它索引。

      创建普通索引的语法:

      Create INDEX index_name ON table_name(column_list) [TABLESPACE tablespace_name];

      其中:index_name指所创建索引的名称。

            table_name表示为之创建索引的表名。

            column_list是在其上创建索引的列名列表,可以基于多列创建索引。

            tablespace_name为索引指定表空间。

      示例12:演示如何在itemfile表的itemcode列上创建索引

      create index item_index on itemfile(itemcode);

    

      ALTER INDEX语句的REBUILD选项可以用来重建现有的索引。该选项提供的性能要优于使用DROP INDEX和CREATE INDEX语句重新创建索引。

      示例13:重建索引

      ALTER INDEX item_index REBUILD;

 

      删除索引语法:Drop INDEX item_index;

 

      (1)唯一索引:此索引可以确保在定义索引的列中,表的任意两行的值都不相同。Oracle自动为表的主键列创建唯一索引。

         可以使用Create UNIQUE INDEX命令明确地创建唯一索引。

      示例14:在itemfile表的itemcode列上创建了一个名为item_index的唯一索引。

      Create UNIQUE INDEX item_index ON itemfile(itemcode);

 

      (2)组合索引:组合索引是在表中的多个列上创建的索引。组合索引中列的顺序是任意的,不必是表中相邻的列。

         创建组合索引时,应注意定义中使用的列的顺序。通常,最频繁访问的列应放置在列表的最前面。

      示例15:在itemfile表上创建了一个名为comp_index的组合索引,当查询该表的的WHERE子句同时包含这两个列或只包含

              p_category列时,以下示例语句创建的索引将用于检索数据,但如果单独使用itemrate列,则索引不能用于检索数据。

      Create INDEX comp_index ON itemfile(p_category,itemrate);

 

      (3)反向键索引:通常建立在一些值连续增长的列上,例如列中的值是是由序列产生的情况。

      示例16:在itemfile表上创建了一个名为rev_index的反向键索引。注意使用REVERSE关键字。

      Create INDEX rev_index ON itemfile(itemcode) REVERSE; 

      示例17:使用关键字NOREVERSE可以将反向键索引重建为标准索引。

      ALTER INDEX rev_index REBUILD NOREVERSE;

      注意:不能将标准索引重建为反向键索引。

 

      (4)位图索引:如果某个列的值重复超过一百次,则可以考虑在该列上创建位图索引。

      示例18:itemcode是order_detail表中的低基数列,因为货物编码在大多数订单中都是重复的,因此适合在该列上创建位图索引。

      Create BITMAP INDEX bit_ind1 ON order_detail(itemcode);

      位图索引不应当用在频繁发生的INSERT,UPDATE,DELETE操作的表上。位图索引最适合于数据仓库和决策支持系统。

 

      (5)索引组织表:索引组织表与在一个或多个列上建立索引的普通表相似,但它无需为表和索引维护两个单独的存储空间,

                     数据库系统仅维护一个索引,该索引包含相应的已编码键值和与其关联的列值。

      示例19:使用ORGANIZATION INDEX子句来创建索引组织表。

      Create table ind_org_tab

      (

         vencode NUMBER(4) primary key,          注意:primary key是创建索引组织表所必需的。不允许使用分区。

         venname VARCHAR2(20)

      )

      organization index;

      索引组织表适合于通过主键来访问数据。

     

      (6)基于函数的索引:如果在WHERE子句的算术表达式或函数中已经包含了某个列,则不会使用该列上的索引。不能在表达式包含任何

         聚合函数,LOB列、REF列或包含LOB或REF的对象类型上创建基于函数的索引。

      示例20:venname是vendor_master表的一个列,用于存储供应商的姓名,假定所有供应商的姓名都以混合大小写的形式存储

              (如:John Smith、Dave Jones、Tony Greig等等),同时假定我们经常需要根据供应商的姓名来查询表的数据。由于

              姓名是以混合大小写的形式存储的,因此可能很难给出姓名的正确大小写形式。可以创建如下索引:

      Create INDEX vn_ind ON vendor_master(UPPER(venname));

      示例21:演示如何使用前面创建的基于函数的索引检索数据。

      select * from vendor_master where UPPER(venname)='SMALL';

     

      要创建基于函数或表达式的索引,必须具有QUERY REWRITE系统权限。

 

      (7)索引中的分区:与对表进行分区类似,Oracle也允许对索引分区。牵引分区可以存储在不同的表空间中。

         局部分区索引:Oracle为表的每个分区建立一个独立的索引。

         示例22:先创建分区表

         Create table order_mast

         (

            orderno number(4),

     venname varchar2(20)

         )

         partition by range(orderno)

         (

     partition oe1 values less than(1000),

            partition oe2 values less than(2000),

     partition oe3 values less than(maxvalue)

  );

         接着创建局部索引:

         create INDEX myind ON order_mast(orderno) LOCAL;

        

         全局分区索引:是指在分区表或非分区表上创建的索引。

         示例23:在上面创建的分区表上创建全局索引

         create INDEX glb_ind ON order_mast(orderno) GLOBAL

  partition by range(orderno)

  (

    partition ip1 values less than(1500),

      partition ip2 values less than(maxvalue)

  );

         在有3个分区的表上创建2个分区的索引。注意:不能在散列分区或子分区建立全局索引。

 

         全局非分区索引:全局分区索引是在分区表上创建的全局索引,它类似于非分区表上的索引,索引的结构不会被分割。

 

 

 

 

  

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    oracle数据库的权限系统分为系统权限与对象权限

    拥有connect role的用户还能够创建表、视图、序列、簇、同义词和会话。 2. 资源角色(Resource Role) ---------------------- 更可靠和正式的数据库用户可以授予resource role。resource提供给用户另外的权限以...

    21.Oracle同义词1

    一、同义词的概念同义词(synonym)就是数据库对象的别名,这里的数据库对象包括表、视图、序列、存储过程、包等 二、创建同义词1、创建同义词的权限用dba权限

    数据库开发 Oracle数据库 SQL开发教程 第16章 序列、索引、同义词(共34页).pdf

    【完整Oracle SQL开发教程课件如下】 数据库开发 Oracle数据库 SQL开发教程 第0章 开篇概述(共14页).pdf 数据库开发 Oracle数据库 SQL...数据库开发 Oracle数据库 SQL开发教程 第17章 用户、权限和角色(共28页).pdf

    Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交

    此外,在上面的示例代码中还包含了一些其他的知识点,如创建表空间、创建用户、授权、创建同义词等。 在 Oracle 中,创建表空间是指创建一个新的表空间,以存储数据库中的数据。在上面的示例代码中,创建了一个名为...

    为Oracle创建只读帐户.pdf

    通过使用 Oracle 创建只读帐户和同义词,可以解决从其他部门的系统获取数据的问题,提高工作效率和安全性。 知识点: 1. Oracle 创建只读帐户的方法 2. 使用同义词解决数据访问的问题 3. 在 SQL PLUS 中使用命令...

    oracle_10g_创建数据库和表用户名和密码

    "Oracle 10g 创建数据库和表用户名和密码" Oracle 10g 是一种关系数据库管理...创建数据库和表需要考虑数据库的逻辑结构和物理结构,包括表空间、表、约束条件、分区、索引、用户、方案、同义词、权限及角色等对象。

    数据库开发 Oracle数据库 SQL开发教程 第17章 用户、权限和角色(共28页).pdf

    【完整Oracle SQL开发教程课件如下】 数据库开发 Oracle数据库 SQL开发教程 第0章 开篇概述(共14页).pdf 数据库开发 Oracle数据库 SQL...数据库开发 Oracle数据库 SQL开发教程 第17章 用户、权限和角色(共28页).pdf

    Oracle系统表汇总.docx

    同义词管理是Oracle数据库管理系统的重要组件,用于管理同义词的创建、修改、删除等操作。通过dba_synonyms视图,可以查询同义词的基本信息,包括同义词名称、同义词类型、创建日期等信息。 数据库链管理 数据库链...

    Oracle课件.pdf

    4. Oracle用户和权限 4.1用户和权限 4.2角色 第2章 SQL数据操作和查询 1. SQL简介 2. 查询 2.1查询结构 2.2查询顺序 . 2.3聚合函数 . 3. 创建表和约束 3.1 Oracle常用数据类型 3.2创建表 3.3表的约束 4....

    Oracle数据库复习题.pdf

    * 创建同义词:使用CREATE PUBLIC SYNONYM语句为scott用户的emp表创建一个公有同义词,名为scottemp。 六、安全管理 * 创建数据库用户:使用CREATE USER语句创建数据库用户U1和U2,口令分别为usera和userb,默认表...

    Oracle官方技术支持Les09创建和管理表.pptx

    用户可以使用 SELECT 语句来查看用户定义的数据库对象,如表、视图、同义词和序列等。例如: SELECT DISTINCT object_type FROM user_objects; 日期数据类型 Oracle 数据库支持多种日期数据类型,如 DATE、...

    Oracle数据库经典学习教程

    6. Oracle用户和权限 18 7. 本章总结 21 8. 本章练习 22 SQL数据操作和查询 25 1. SQL简介 26 2. Oracle数据类型 26 3. 创建表和约束 27 4. 数据操纵语言(DML) 30 5. 操作符 35 6. 高级查询 36 7. 本章总结 44 8. ...

    Oracle一个用户如何访问其它用户的表应用指南

    假如Oracle中有两个用户A和B,那么如果A要访问B拥有的表... 除了一楼的创建同义词外,还要授予A用户访问改同意词的权限. 代码如下: drop synonym tablename ; 1 可以使用查询生成sql语句,比如 代码如下: select ‘CREATE

    Oracle经典教程(珍藏)

    6. Oracle用户和权限 7. 本章总结 8. 本章练习 SQL数据操作和查询 1. SQL简介 2. Oracle数据类型 3. 创建表和约束 4. 数据操纵语言(DML) 5. 操作符 6. 高级查询 7. 本章总结 8. 本章练习 子查询和常用...

    Oracle数据库链Database links

    通过创建 Database links,用户可以访问另一个数据库中的表、视图、同义词、索引、存储过程和函数等对象。 创建 Database links 需要遵循以下步骤: ① 首先,需要创建好 Oracle 的服务(客户端连接服务器端的配置...

    Oracle数据库培训.ppt

    用户的建立与授权是 Oracle 数据库中的安全操作,用于创建用户和授予权限。 Oracle 数据库培训是一个专业的数据库管理系统,具有高性能、可靠性和安全性等特点。通过学习 Oracle 数据库培训,可以掌握 Oracle ...

    大型数据库应用oracle实验报告.pdf

    在本实验中,我们学习了基本数据库表的创建、表结构的修改与删除等命令,索引的管理命令,索引化表的管理命令,分区表的管理命令,簇、视图、序列、同义词等的管理命令。 我们创建了 Class 和 Student 两个表,为 ...

    学生成绩管理系统Oracle全部SQL语句.txt

    2、至少建立5个表,以及表间关系,使用到序列,索引,视图,同义词,约束,每个表至少插入相关信息10条记录; 3、要求使用sqlplus,pl/sql或developer建立存储过程,触发器和程序包等代码,其中要求用到游标,异常,...

Global site tag (gtag.js) - Google Analytics