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

最近在学习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';

专业墙纸贴纸厨房用具装饰出售,本人网店经营

博客对你有用记得访问下哦,增加下访问量,如有需要可以下单购买哦^_^。https://item.taobao.com/item.htm?id=569617707364

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值