同义词对象,序列对象
作者:互联网
同义词对象
同义词是表、索引、视图等模式对象的一个别名。通过模式对象创建同义词,可以隐藏对象的实际名称和所有者信息,或者隐藏分布式数据库中远程对象的设置信息,由此为对象提供一定的安全性保证。与视图、序列一样,同义词只在Oracle数据库的数据字典中保存其定义描述,因此同义词也不占用任何实际的存储空间。
在开发数据库应用程序时,应该尽量避免直接引用表、视图或其它数据库对象的名称,而改用这些对象的同义词。这样可以避免当管理员对数据库对象做出修改和变动之后,必须重新编译应用程序。使用同义词后,即使引用的对象发生变化,也只需要在数据库中对同义词进行修改,而不必对应用程序做任何改动。
Oracle中的同义词分为两种类型:公有同义词和私有同义词。公有同义词被一个特殊的用户组PUBLIC所拥有,数据库中的所有用户都可以使用公有同义词。而私有同义词只被创建它的用户所拥有,只能由该用户以及被授权的其它用户使用。
建立公有同义词是使用CREATE PUBLIC SYNONYM语句完成的。如果数据库用户要建立公有同义词,则要求该用户必须具有CREATE PUBLIC SYSNONYM系统权限
-- 创建公有同义词 create public synonym public_dept for peppa.dept; -- 创建私有同义词 create synonym private_dept for peppa.dept; -- 删除同义词 drop synonym public_dept;
删除同义词后,同义词的基础对象不受影响,但是所有引用该同义词的对象处于INVALID状态。
序列对象
序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。不占用磁盘空间,占用内存。
其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。
创建序列
创建序列需要CREATE SEQUENCE系统权限。序列的创建语法如下:
CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[MAXVALUE/ MINVALUE n| NOMAXVALUE]
[CYCLE|NOCYCLE]
[CACHE n| NOCACHE];
其中:
INCREMENT BY用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。
START WITH 定义序列的初始值(即产生的第一个值),默认为1。
MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。
MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。
CYCLE和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。
大量语句发生请求,申请序列时,为了避免序列在运用层实现序列而引起的性能瓶颈。Oracle序列允许将序列提前生成 cache x个先存入内存,在发生大量申请序列语句时,可直接到运行最快的内存中去得到序列。但cache个数也不能设置太大,因为在数据库重启时,会清空内存信息,预存在内存中的序列会丢失,当数据库再次启动后,序列从上次内存中最大的序列号+1 开始存入cache x个。这种情况也能会在数据库关闭时也会导致序号不连续。
NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用。
CURRVAL 中存放序列的当前值,NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效。
create sequence empno_seq maxvalue 99999 start with 9000 increment by 100 cache 50;
使用序列
使用序列时,需要使用到序列的两个伪列NEXTVAL与CURRVAL。其中NEXTVAL返回序列生成的下一个序列号,而CURRVAL则返回序列当前序列号。首次使用序列时必须使用伪列NEXTVAL。
管理序列
使用ALTER SEQUENCE语句可以对序列进行修改。需要注意,除了序列的起始值START WITH不能被修改外,其它可以设置序列的任何子句和参数都可以被修改。如果要修改序列的起始值,则必须先删除序列,然后重键该序列。
标签:对象,同义词,数据库,最小值,内存,序列 来源: https://www.cnblogs.com/adan-chiu/p/14641075.html