Oracle用户权限授权以及索引、同义词、分区
本文为原创,如需转载,请标明出处 http://www.cnblogs.com/gudu1/p/7601765.html
---- 用户权限
1.创建表空间 (创建用户之前需要创建表空间和临时表空间,若是没有创建,10g之前默认是system永久性表空间,11g改为users永久性表空间)
create tablespace a_user
datafile 'D:\a_user_space.dbf'
size 10M
autoextend on;
2.创建临时表空间(默认为temp临时表空间)
create temporary tablespace a_user_temp
tempfile 'D:\a_user_temp.dbf'
size 10M
autoextend on;
3.创建用户 (需要指定用户名,密码,表空间和临时表空间)
create user a_user identified by 123456
default tablespace a_user
temporary tablespace a_user_temp;
4.授权 (授权需要在数据库管理员登陆下进行授权,否则会提示你权限不足)
grant connect,resource to a_user;
以上就是创建一个新的用户 并且指定表空间和临时表空间,假如现在一个用户想要访问另一个用户下的表怎么办呢? 很简单,给他权限就好。
--假设现在有两个用户user1和user2,然后user1下有张表emp,接下来我们把访问emp表的权限授给user2(注意:这里登录的用户要么是管理员要么是user1)
grant select,update,delete,insert on emp to user2;
-- 突然有一天user1和user2闹掰了,俩人不和,user1不给user2访问权限了,怎么办?
revoke select,update,delete,insert on emp from user2;
以下是一些简单Oracle操作command:
删除用户:drop user user1 cascade;
修改用户密码:alter user user1 identified by 123456;
删除表空间:drop tablespace a_user;
修改表空间大小:① alter tablespace a_user datafile 'D:\a_user_space' resize 20M; ② alter tablespace a_user add datafile 'D:\a_user_space2.dbf' size 10M autoextend on;
更多常用函数:http://www.cnblogs.com/rencongums/articles/5662537.html
---- Oracle序列使用
我们都知道SQLServer,MySql等数据库都能够添加自动增长列Identity,然而Oracle跟那些不太一样,它是通过添加一个序列,插入数据的时候使用序列来自动生成顺序列,不多废话。下面是语法 ↓
--创建序列
CREATE SEQUENCE sequence //创建序列名称
[INCREMENT BY Integer]
[START WITH Integer]
[{MAXVALUE Integer | NOMAXVALUE}]
[{MINVALUE Integer | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE Integer | NOCACHE}];
INCREMENT BY :用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。
START WITH :定义序列的初始值(即产生的第一个值),默认为1。
MAXVALUE :定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。
MINVALUE : 定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。
NOMAXVALUE: 如果指定了NOMAXVALUE,Oracle将升序序列的最大值设为10^27,将降序序列的最大值设为-1,。这是默认选项。
NOMINVALUE:如果指定了NOMINVALUE,Oracle将升序序列的最小值设为1,将降序序列的最小值设为-10^26,。这是默认选项。
CYCLE和NOCYCLE : 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;最小值为1。对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
CACHE:使用CACHE选项时,该序列会根据序列规则生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统会再次生成一组序列号保存在缓存中,这样可以提高生成序列号的效率。ORACLE会默认生成20个序列号。
NOCACHE:不预先在内存中生成序列号。
--删除序列
drop sequence seq_name;
--修改序列
Alter sequence seq_name
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];
注意: 不能修改序列的START WITH属性。在修改序列时,应注意升序序列的最小值应小于最大值。
%%%%%%% 使用序列设置主关键字时,在数据库迁移时需要注意。由于迁移后的表中已经存在数据,如果不修改序列的起始值,将会在表中插入重复数据, 违背主键约束。所有在创建序列时要修改序列的起始值。
---- Oracle同义词使用
优点:
1)简化SQL语句
2)隐藏对象的名称和所有者
3)为分布式数据库的远程对象提供了位置透明性
4)提供对对象的公共访问
分类:私有同义词和共有同义词
创建:
私有:create [or replace] synonym synonym_name for table_name;
公有:create [or replace] public synonym synonym_name for table_name;
删除:
私有:drop synonym synonym_name;
公有:drop public synonym synonym_name;
注意:创建同义词同样需要管理员授权,grant create synonym to user1;
--- 举个例子,还是上面emp表,用户是user1和user2,user1为emp表创建了私有同义词,这个时候user2是否能够访问到呢?答案肯定是不能,如果创建了公有呢?结果还是不能,很纳闷吧^_^,还差一个权限
grant select on emp to public; 授予权限之后,你再试试。 如果某个用户下有张表你希望所有人都能够访问,这个时候你就可以使用公有同义词,你总不能使用Grant select on emp to user2; 这个吧,那得有多烦啊,每创建一个用户,你都要授权。
---- Oracle索引使用
索引是与表关联的可选结构,是一种快速访问数据的途径,可提高数据库性能。数据库可以明确地创建索引,以加快对表执行SQL语句的速度。当索引键作为查询条件时,该索引将直接指向包含这些行的位置。
即便删除索引,也无须修改任何SQL语句的定义。
索引分类:
物理分类 | 逻辑分类 |
分区或非分区索引 | 单列或组合索引 |
B树索引 | 唯一或非唯一索引 |
正常或反向键索引 | 基于函数索引 |
位图索引 |
创建索引:
B树:create index index_name on table_name(column_list);
组合:create index index_name on table_name(column_list);
反向键索引:create index index_name on table_name(column_list) reservse;
位图索引:create bitmap index index_name on table_name(column_list);
唯一索引:create unique index index_name on table_name(column_list);
删除索引:drop index index_name;
重建索引:alter index index_name rebuild noreverse;(将反向键索引更改为B树索引)
建立索引原则:
1)频繁搜索的列可以作为索引。
2)经常排序、分组的列可作为索引。
3)经常用作连接的列(主键 / 外键)可作为索引。
4)将索引放在一个单独的表空间中,不要放在有回退段、临时段和表的表空间中。
5)对大型索引而言,考虑使用 NOLOGGING子句创建大型索引。
6)根据业务数据发生的频率,定期重新生成或重新组织索引.并进行碎片整理。
7)仅包含几个不同值的列不可以创建为B树索引,可根据需要创建位图索引。
8)不要在仅包含几行的表中创建索引。
---- Oracle分区
分类:范围分区、列表分区、散列分区、复合分区、间隔分区和虚拟列分区等。
下面 介绍一下范围分区 和 间隔分区--
范围分区:
应用范围比较广的表分区方式,它以列的值作为分区的划分条件,将记录存放到列值所在的range分区中。
创建:
Create table user
(
user_id number,
user_name number,
birthday date not null
.........
)
partition by range(birthday)
(
partition p1 values less than (to_date('2017-01-01'),'yyyy-MM-dd'),
partition p1 values less than (to_date('2016-01-01','yyyy-MM-dd')),
partition p3 values less than (maxvalue)
)
添加:
alter table table_name add partition p4 less than (to_date('2015-01-01','yyyy-MM-dd'));
合并:
alter table table_name merge partitions p1,p2 into partition p2;
删除:
alter table table_name drop partition p1;
间隔分区:
间隔分区是范围分区的一种增强功能,可以实现范围分区的自动化。
创建:
Create table user
(
user_id number,
user_name number,
birthday date not null
.........
)
partition by range(birthday)
interval(numtoyminterval(1,'MONTH'))
(partition p1 values less than (to_date('2016-01-01','yyyy-MM-dd')));
解释:
1)只需创建第一个开始分区,如上面的P1.
2)INTERVALONUMTOYMINTERVAL(3, 'MONTE')语句中, INTERVAL 代表“间隔即按照后面括号中的定义间隔添加分区。
3)NUMTOYMINTERVAL(3, 'MONTH')表示每3个月为一个分区。
NUMTOYMINTERVAL(n,'Interval_unit')函数用于将n转换成 interval_unit 所指定的值。
interval_unit 可以为 YEAR 或 MONTE 。
举例:
NUMTOYMINTERVAL(1,'YEAR'):每1年为一个分区。
NUMTOYMINTERVAL(1, 'MONTH'):每1个月为一个分区。
与该类型相关的函数还有 NUMTODSINTERVAL(n, 'interval_unit'),用于将n转换成 interval_unit 所指定的值。
interval_unit 可以为 DAY , HOUR , MINUTE , SECOND 。
注意该函数不支持 YEAR 和 MONTH 。
4)系统会根据数据自动创建分区。
未完待续。。。。。。。。。。。。。
Oracle用户权限授权以及索引、同义词、分区的更多相关文章
- Oracle 用户权限管理方法
Oracle 用户权限管理方法 sys;//系统管理员,拥有最高权限 system;//本地管理员,次高权限 scott;//普通用户,密码默认为tiger,默认未解锁 sys;//系统管理员,拥有最 ...
- Oracle用户、授权、角色管理
创建和删除用户是Oracle用户管理中的常见操作,但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识.掌握还Oracle用户的授权操作和原理,可以有效提升我们的工作效率. Oracle ...
- oracle用户权限
权限: create session create table unlimited tablespace connect resource dba 例: #sqlplus /nolog SQL> ...
- oracle 用户 权限
一. 概述 与权限,角色相关的视图大概有下面这些: DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限 USER_SYS_PRIVS: 当前用户所拥有的系统权限 SESSION_PRIVS ...
- Oracle管理监控之Oracle用户权限
数据字典 1.动态数据字典是以v$xxx开始的数据字典,在数据库中约有150个左右,这些数据字典反映数据库动态运行状况,在不同时间查询会得到不同的结果. 2.DBA数据字典是以DBA_xxx表示,该数 ...
- Oracle 用户、授权、角色管理
Oracle 用户管理 一.创建用户的Profile文件SQL> create profile student limit // student为资源文件名FAILED_LOGIN_ATTEMP ...
- Oracle用户权限及死锁
Oracle用户权限表 oracle数据库中涉及到用户权限的三个表,dba_users,all_users,user_users有什么区别 dba_开头的是查全库所有的,all_开头的是查当前用户可以 ...
- oracle用户管理, 授权与回收权限
一. 用户管理参数, 0.删除用户: drop user 用户名 [cascade] 当我们删除用户时, 如改用户已创建过数据对象, 那么删除用户时必须加cascade参数, 用来同步删除 改用户的所 ...
- 数据库(学习整理)----2--关于Oracle用户权限的授权和收权
知识点: 1.Oracle数据库中所用的用户等级是平级的!只是每个用户的权限不同而已! 2.在一个用户登录后,可以在自己的登录状态下访问其他用户的数据缓冲区.表.以及表的操作!(只要该用户用权限!) ...
随机推荐
- 《Javascript DOM编程艺术》学习笔记 第1-6章
第1章 Javascript简史 Javascript是Netspace公司与Sun公司合作开发的,Javascript 1.0版于1995年推出. 为与微软公司竞争,Netspace公司和Sun公司 ...
- java文件分割及合并
分割设置好分割数量,根据源文件大小来把数据散到子文件中代码如下; package word; import java.io.File; import java.io.FileInputStream; ...
- [PAT] A1019 General Palindromic Number
[题目] https://pintia.cn/problem-sets/994805342720868352/problems/994805487143337984 题目大意:给定一个N和b,求N在b ...
- RocketMQ解决幂等性问题
一.造成重复消费的原因 在于回馈机制.正常情况下,消费者在消费消息时候,消费完毕后,会发送一个ACK确认信息给消息队列(broker),消息队列(broker)就知道该消息被消费了,就会将该消息从消息 ...
- 小白月赛22 J : 计算 A + B
J:计算 A + B 考察点 : 高精度,字符串 坑点 : 字符串中可能全是数字,或者 + 超过 1 个,需要进行特殊判断 析题得侃: 关于高精度的各种板子 Code: #include <ve ...
- C#调用C++类库例子
一.新建一个解决方案,并在解决方案下添加一个.netframework的项目,命名为FrameworkConsoleTest.再添加一个C++的动态链接库DLL项目,命名为EncryptBase. 二 ...
- SpringBoot之spring.factories
组件提供者如何编写出仅需系统开发者进行包引入就可以对spring进行bean注入等操作? 其实在spring库中有提供自动化配置的库spring-boot-autoconfigure,我们只需要引 ...
- Codeforces Round #350 (Div. 2)(670C)
今天对着算法进阶指南,学了一下离散化.大概对桶排这样的算法优化比较好吧. 离散化:就是把无穷大的集合中若干个元素映射为有限集合以便于统计的方法.例如在很多时候,问题范围定义为整数集合Z,但涉及的元素只 ...
- JavaDay2(上)
Java learning_Day2(上) 本人学习视频用的是马士兵的,也在这里献上 <链接:https://pan.baidu.com/s/1qKNGJNh0GgvlJnitTJGqgA> ...
- java中的多构造函数以及类字段的初始化顺序
1.同一个类可以有多个构造函数,多个构造函数之间通过参数来区分.这是方法重载的一个实例.构造函数之间可以相互调用. 2.类的初始化块:可以在类中使用“{”和“}”将语句包围起来,直接将其作为类的成员. ...