您的位置:首页 > 其它

Orcle DBA学习笔记(角色,对象,权限,用户,索引,视图,同义词,序列)

2017-12-11 09:57 441 查看
最近在学习Oracle,该博客会慢慢更新。。。

1、获取建表DDL的SQL

select dbms_metadata.get_ddl('TABLE','TEST','SCOTT') from dual;


2、查看系统当中有哪些账号

select * from dba_users;


3、查看当前用户拥有的系统权限

select * from user_sys_privs;


4、查看当前用户拥有的对象权限

select * from user_tab_privs;


5、查看当前用户拥有的角色

select * from user_role_privs;


6、查看角色拥有什么角色

select * from role_role_privs;


7、查看角色拥有什么对象权限

select * from role_tab_privs;


8、查看角色拥有什么系统权限

select * from role_sys_privs;


9、创建账号

create user test identified by oracle;--创建一个账号  test/oracle


10、默认创建的用户是没有登录权限的,需要dba进行授权

grant create session to test;--只是赋予了登录权限,还不能创建表,

可以使用select * from user_sys_privs;语句进行查看,系统权限一般是DBA要干的事情,DBA一般需要掌握80%的权限,初学者请绕过,小心处理。

grant create table to test;执行这句之后test用户就可以创建表了,但是没有想过查询的权限,比如说select * from scott.emp;是会报权限不足错误,需要执行grant select on scott.emp to test;以上grant语句执行都是在超级管理员用户下进行授权的。


11、回收权限

revoke XXX from 账号/角色;

授权的语法是

grant XXX to 账号/角色:


当你入职了,一般会给你分配一个账号(拥有一个角色),遇到权限不足的时候,找DBA给你授权。在Oracle中,SYS权限最高,权限第二高的是dba,可以直接 grant dba to test;不过一般不会这么干!这样执行之后,test用户就能干任何事情,但是不能shutdown immediate/startup

12、查看dba拥有的角色权限

select * from dba_role_privs;


13、查看dba数据库的对象

select * from dba_objects;


14、查看当前用户拥有的对象

select * from user_objects;


15、创建和删除索引

create table test as select * from dba_objects;
select count(*) from test;--求test表一共有多少行数据
create index idx_id on test(object_id);--创建索引

索引是用来提升查询性能的,不是绝对的,不一定比逐行扫描快。缺点:占用磁盘空间

--查看用户下的某一张表的索引

select index_name,column_position,descend,column_name from dba_ind_columns where table_owner='SCOTT' and table_name='DEPT' order by 1,2;

删除索引
drop index idx_id;


16、视图

视图的目的:
一、给开发人员偷懒用的,我们可以先定义视图,而不用在查询的时候写一大堆的sql查询语句。

二、控制权限。我们可以定义一个视图,然后授权该访问视图的权限,这样就达到了只能访问部分数据,达到控制权限的功能。

创建视图
create or replace view emp_new as select * from emp where sal<2000;
grant select on emp_new to test;
查看视图的源码(SQL)
select * from dba_views where view_name='EMP1';--dba_views为数据库所有的视图


17、同义词(synonym)

select or replace synonym sb for emp;
查看同义词的定义
select * from dba_synonyms where synonym_name='SB';--这里是大写

同义词的删除
drop synonym sb;


18、序列

创建序列

create sequence seq_id start with 1 increment by 1 maxvalue 10000000000;
可以通过select * from user_objects;查看新建的序列。
select seq_id,nextval from dual;--启用查询下一次的序列值
select seq_id.currval from dual;--查看当前序列的值
select * from dba_sequences where sequence_name='SEQ_ID';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐