`
vtyi
  • 浏览: 84392 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

synonym sequence 权限

阅读更多

Oracle 创建用户 / 密码并授权

(1)       创建用户

Create user 用户名 identified by 密码;(如果是数字则要加双引号 ”111111” ,如果是字母就不用)

(2)       授权给某个用户

Grant connect,resource to 用户名; ( 只有用户有了 connect resource 后才能操作其他表 )

(3)       DBA 权限

Grant dba to 用户名;

4 撤权:  
        revoke  
权限 ...   from   用户名 ;

 

grant select on cwp_planned_move to fix_ngen;

 conn fix_ngen/fix_ngen@ngen

 create synonym cwp_virtual_quay_crane for ngendatasyst_main_hit.cwp_virtual_quay_crane;

conn fixdevusr/fixdevusr@fix

 create synonym cwp_planned_move for cwp_planned_move@fix_2_ngen ;

 

 

CREATE SEQUENCE

CREATE SEQUENCE — 创建一个新的序列号生成器

语法

CREATE SEQUENCE seqname

 [ INCREMENT increment

 ]
     [ MINVALUE minvalue

 ] [ MAXVALUE maxvalue

 ]
     [ START start

 ] [ CACHE cache

 ] [ CYCLE ]

描述

CREATE SEQUENCE 将向当前数据库里增加一个新的序列号生成器.包括创建和初始化一个新的名为 seqname 的单行表.生成器将为使用此命令的用户"所有".

在序列创建后,你可以使用函数 nextval(seqname ) 从序列中获得新的数字.函数 currval('seqname ') 可用于获取对当前会话中指定序列的上一次 nextval(seqname ) 调用返回的数字.函数 setval('seqname ', newvalue ) 可用于设置指定的序列的当前值.下一次 nextval(seqname ) 调用将返回所给的值加上序列增值.

使用象

SELECT * FROM sequence_name;
这样的查询可以获得序列的参数.除了获取最初的参数外,你可以用
SELECT last_value FROM sequence_name;
获得后端分配的最后一个值.你可以使用

底层的锁定用于令多个请求同时调用生成器成为可能.

注意
如果用语序列对象的缓存的设置大于一,而且该对象可能被多个后端同时使用就有可能产生不可预料的结果.每个后端在访问过序列对象并递增序列对象的最后值后,将分配跟在序列值后面"缓存数".这样,该后端在下面的(缓存数-1)次返回序列值时将使用预分配好的数值,而不对共享对象做任何更新.所以,已经分配但在当前会话中没有使用的数字将会丢失.而且,尽管多个后端保证分配独立的序列值,当考虑所有的后端时该数值却有可能是乱序的.(例如,设置缓存数为10,后端 A 可能保留数值 1..10 并且返回 nextval=1,而后端 B 可能保留数值 11..20 并在后端A生成nextval=2之前返回 nextval=11.)因此,将缓存数设为一可以安全地假设 nextval 的数值是顺序生成的;当缓存数设置大于一,我们只能假设 nextval 值都是独立的,而不能假设它们都是纯粹顺序生成的.同样,last_value 将反映由任何后端保留的最后数值,不管它是不是nextval曾返回过的.

注意

请参考 DROP SEQUENCE 语句来删除序列.

每个后端使用其自身的缓存来存储分配的数字.已分配但当前会话没有使用的数字将丢失,导致序列里面出现"空洞".

用法

创建一个叫 serial 的递增序列,从101开始:
CREATE SEQUENCE serial START 101;
从此序列中选出下一个数字
SELECT NEXTVAL ('serial');
     
nextval
-------
     114
在一个 INSERT 中使用此序列:
INSERT INTO distributors VALUES (NEXTVAL('serial'),'nothing');
在一个 COPY FROM 后设置序列:
CREATE FUNCTION distributors_id_max() RETURNS INT4
     AS 'SELECT max(id) FROM distributors' 
     LANGUAGE 'sql';
BEGIN;
     COPY distributors FROM 'input_file';
     SELECT setval('serial', distributors_id_max());
END;

兼容性

SQL92

CREATE SEQUENCEPostgres 语言扩展.在 SQL92 里没有 CREATE SEQUENCE 语句.
在Oracle数据库中,sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方。

  1、Create Sequence

  (注释:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE权限)

  CREATE SEQUENCE emp_sequence

  INCREMENT BY 1 -- 每次加几个

  START WITH 1 -- 从1开始计数

  NOMAXVALUE -- 不设置最大值

  NOCYCLE -- 一直累加,不循环

  CACHE 10;

  只要定义了emp_sequence,你就可以用使CURRVAL,NEXTVAL

  CURRVAL=返回 sequence的当前值

  NEXTVAL=增加sequence的值,然后返回 sequence 值

  例如:

  emp_sequence.CURRVAL

  emp_sequence.NEXTVAL

  可以使用sequence的地方:

  · 不包含子查询、snapshot、VIEW的 SELECT 语句

  ·INSERT语句的子查询中

  ·NSERT语句的VALUES中

  ·UPDATE 的 SET中

  可以看如下例子:

  INSERT INTO emp VALUES

  (empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

  SELECT empseq.currval FROM DUAL;

  需要注意的是:

  第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就会是不一样的。

  - 假如指定CACHE值,Oracle就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,Oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。

  2、Alter Sequence

  你需要有sequence的owner,或者拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create .

  Alter sequence示例:

  ALTER SEQUENCE emp_sequence

  INCREMENT BY 10

  MAXVALUE 10000

  CYCLE -- 到10000后从头开始

  NOCACHE ;

  可以影响Sequence的初始化参数:

  SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。

  简单的Drop Sequence

  DROP SEQUENCE order_seq;
评论

相关推荐

    Oracle 常用系统权限

    Create Sequence 权限允许用户创建序列。序列是一种特殊的数据库对象,用于生成唯一的数字标识符,通常用于填充主键列。Create Sequence 权限用于控制谁可以创建序列。 Create Synonym Create Synonym 权限允许...

    oracle系统权限列表.pdf

    例如,`CREATE SEQUENCE`权限允许用户在其自己的模式中创建新的序列,而`ALTER ANY SEQUENCE`则允许修改任何序列的属性。对于连接到数据库,`CREATE SESSION`权限是必要的,它允许用户建立数据库连接,但可能不适用...

    oracle系统权限列表.docx

    在Oracle 10G版本中,有超过170种不同的系统权限,这些权限被分类为对象权限、系统权限和角色权限。 **对象权限** 主要涉及到对数据库中特定对象的操作,如表、视图、序列、过程和包等。例如: 1. **CREATE ...

    oracle权限表

    ### Oracle权限表详解 Oracle数据库提供了丰富的权限管理机制来确保数据的安全性和完整性。这些权限可以分为两大类:系统权限和对象权限。系统权限允许用户执行特定的数据库操作,而对象权限则针对数据库中的具体...

    oracle权限全集

    Oracle权限管理是数据库管理系统中的核心组成部分,用于控制不同用户对数据库资源的访问和操作。在Oracle中,权限的分配和管理对于确保数据安全性和维护系统稳定性至关重要。以下是一些主要的Oracle权限及其详细说明...

    Oracle(109种)系统权限中文注解

    ### Oracle系统权限中文注解 在Oracle数据库管理系统中,为了实现高效且安全的数据管理与访问控制,系统提供了丰富的权限管理机制。这些权限大致可以分为两大类:对象权限和系统权限。其中,系统权限指的是授予用户...

    Oracle 用户权限

    根据提供的文件信息,我们可以深入探讨Oracle数据库中的用户权限管理机制,包括系统权限(System Privileges)与对象权限(Object Privileges)的相关知识点。 ### 一、系统权限(System Privileges) 系统权限是...

    Oracle权限表汇编.docx

    15. **CREATE SEQUENCE/ALTER ANY SEQUENCE/DROP ANY SEQUENCE/SELECT ANY SEQUENCE**: 序列是自增的数字序列,常用于主键生成。 16. **CREATE SNAPSHOT/ALTER SNAPSHOT/DROP ANY SNAPSHOT**: 快照用于创建数据库的...

    oracle所有的系统权限

    ### Oracle所有系统权限详解 #### 一、概述 在Oracle数据库管理系统中,为了确保数据的安全性和完整性,系统提供了一系列的权限管理机制。其中,“Oracle所有系统权限”指的是那些能够对数据库进行广泛操作的权限...

    oracle系统权限列表[定义].pdf

    Oracle数据库系统权限是管理数据库访问和操作的关键组成部分。在Oracle 10G版本中,存在超过170种不同的系统权限,这些权限被分为三类:对象特权、系统特权和角色特权。 对象特权主要涉及对特定数据库对象的操作,...

    oracle_sequence.rar_oracle

    因此,应当合理限制对序列的访问权限,只允许需要它的部分用户或角色使用。 总结,Oracle序列在数据库设计中扮演着关键角色,尤其对于需要唯一标识符的场景。通过理解和熟练使用序列,可以提高数据库操作的效率和...

    全面解析Oracle数据库的系统和对象权限

    在Oracle数据库管理中,系统权限和对象权限是两个非常重要的概念。它们决定了用户可以在数据库上执行哪些操作。本文将深入探讨Oracle数据库中的这些权限,并详细解释每个权限的作用及其使用场景。 ### 一、系统权限...

    老二牛车第四章上机课数据库对象.pdf

    - 删除公有同义词需要`DROP PUBLIC SYNONYM`权限。 **语法示例**: ```sql DROP SYNONYM synonym_name; DROP PUBLIC SYNONYM public_synonym_name; ``` ### 序列 #### 创建序列 序列是一种自动递增的对象,主要...

    Oracle基本语法

    本文将根据提供的内容,深入解析Oracle中的权限操作、方案、序列、同义词等概念及其基本语法。 #### 权限操作 1. **创建用户:** ```sql CREATE USER <用户名> IDENTIFIED BY <密码>; ``` 创建一个新用户并...

    ORACLE开发笔记

    权限分配是数据库安全的关键,`GRANT`语句用于赋予用户系统权限(如`CONNECT`, `RESOURCE`, `CREATE TABLE`, `CREATE SESSION`, `CREATE PROCEDURE`)和数据对象权限(如`GRANT SELECT ON ... TO ...`)。`REVOKE`...

    Oracle笔记Oracle笔记

    3. **权限控制**:Oracle提供了精细的权限管理机制,包括系统权限和对象权限。例如,可以使用以下命令为用户授予连接、资源创建等权限: ```sql grant connect, resource, create table, create session, create ...

    Oracle10g用户操作

    GRANT CREATE SEQUENCE TO sha; ``` - **创建同义词**:允许用户创建新的同义词。 ```sql GRANT CREATE SYNONYM TO sha; ``` - **创建表**:允许用户创建新的表。 ```sql GRANT CREATE TABLE TO sha; ``` ...

    Oracle Developer:第9章 禁止非法使用.pdf

    文档中还涉及到各种数据库对象,包括Synonym(同义词)、Cluster(集群)、Index(索引)、Sequence(序列)和Trigger(触发器)。这些对象都有对应的权限,如对表进行插入、更新和删除操作的权限。 ### 总结 文档...

    orcale数据库操作语言

    这些知识点主要围绕着Oracle数据库的基础管理、表的创建与管理、用户管理、权限管理以及基本的查询操作等方面。 ### 1. 基础命令 - **连接数据库**: - `conn [username]/[password]`:用于连接Oracle数据库。 -...

Global site tag (gtag.js) - Google Analytics