欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle数据库相应的系统权限和对象权限介绍

程序员文章站 2022-05-10 21:16:14
Oracle数据库相应的系统权限介绍 系统权限:系统权限允许用户执行一个或一类特殊的数据库操作。 对象权限:用户维护数据库对象的权限,如表、视图、函数。 与索引相关的系统权限...

Oracle数据库相应的系统权限介绍

系统权限:系统权限允许用户执行一个或一类特殊的数据库操作。

对象权限:用户维护数据库对象的权限,如表、视图、函数。

与索引相关的系统权限

create any index; --创建任何模式下对象的索引

alter any index;

drop any index;

与表相关的系统权限

create table;

create/delete/drop/select/alter/update any table;

与会话相关的系统权限

create session;

alter session;

与表空间相关的系统权限

create tablespace;

alter tablespace;

drop tablespace;

unlimited tablespace; --允许使用所有表空间

授予用户系统权限

grant 系统权限 to user|role|public --所有用户

with admin option; --加上这句代表可以被授权的用户可以给其他用户授权。

回收用户系统权限

revoke 系统权限 from user|role|public;

授予对象权限

grant alter on table|sequence|procedure to user with grant option; --被授权的用户可以给其他用户授权

grant all on table|sequence|procedure to user; --将当前用户的某个数据库对象的所有权限赋予新用户。

garnt update(column1,column2) on table to user; --更新某列的权限

grant select|update|delete on table|view to user;

grant execute on procedure to user;

回收对象权限

revoke 对象权限 on 对象 from user;

视图

视图是一种虚表,它不存数据。

授予用户创建视图的权限

grant create view to user;

创建视图

create or replace force|noforce view view_name --replace 如果视图存在,则重建。force 不论基表是否存在,强制建立视图。

as

select * from aa

with check option|with read only;

create or replace view view_name --replace 如果视图存在,则重建

("column1","column2")

as

select column1,column3 from aa;

视图的执行过程

1、首选读取数据字典,获得视图的定义,找到视图引用的表。

2、从数据字典中查看当前用户对于表的引用权限。

3、执行视图SQL语句。

删除视图

drop view view_name;

物化视图

与普通视图相反,物化视图会物理存储数据,占用存储空间,可以进行分区和创建索引。

查询重写:重写SQL语句,该参数和SQL语句优化有很大关系。

show parameter query_rewrite;

物化视图同步

物化视图刷新方式:on commit(基表变化提交时,自动刷新),on demand(需要手工同步,手动执行dbms_mview.refresh);

物化视图刷新类型

complete:无论基表中修改了多少数据,重新执行下创建视图的SQL语句。

fast:只同步变化的数据。

force:先使用fast,如果失败再使用complete

never:从不更新。

dbms_mview.refresh('物化视图名', 'F') --快速刷新,也就是增量刷新

dbms_mview.refresh('物化视图名', 'C')--完全刷新

创建物化视图

授权

grant create materialized view to scott;

grant query rewrite to scott;

创建基于基表的物化视图日志

create materialized view log on table_name;

创建物化视图

create materialized view view_name

build immediate|deffered --立即创建|延迟创建

refresh fast on commit --有可能会报没有主键的错,在这里加上 with rowid

enable query rewrite

as

select * from aa;

删除物化视图

drop materialized view view_name;

序列号

序列号是oracle使用序列生成器自动产生用户可以在事务中使用的唯一序号

1、序列号是独立于表的对象,由oracle自动维护。

2、序列号可以由多个用户共享使用。

3、在SQL语句中使用序列号就可以使用它产生的序列号。

创建序列号

create sequence sequence_name

start with n -- 从n开始

increment by m --序列号的增长幅度,默认为1

maxvalue p|nomaxvalue --定义序列号最大值

minvalue p|nominvalue

cache q|nocache --预先分配q个序列号在内存中

cycle r|nocycle --循环

sequence_name.currval --当前序列值

sequence_name.nextval --下一序列值

序号列不可逆,如果先增加后删除,则序号列会不连续。

修改序列号

alter sequence sequence_name

increment by m

maxvalue p|nomaxvalue

minvalue p|nominvalue

cache q|nocache

cycle r|nocycle;

删除序列号

dop sequence sequence_name;

同义词

公有同义词所有用户都可以使用,私有同义词只有指定的用户才可以使用。

创建公有同义词

create public synonym 同义词 for 表名;

创建私有同义词

create synonym 同义词 for 表名;

删除同义词

drop public synonym 同义词;

drop synonym 同义词;

切换用户模式

alter session set current_schema=scott;

数据库闪回

闪回数据库必须位于归档模式

archive log list; --查看归档模式

如果不是归档模式,先关闭数据库,然后启动到mount 状态,更改为归档模式。

shutdown immediate;

startup mount;

alter database archivelog;

查看数据库闪回功能是否开启

select * from v$database;

启动数据库闪回功能

alter database flashback on; --mount 状态下

alter database flashback off; --mount 状态下 闪回日志会自动删除

alter tablespace tablespace_name flashback on; --mount 状态下

alter tablespace tablespace_name flashback off; --mount 状态下

查看默认归档位置

show parameter db_recovery_file_dest;

数据库可闪回的最远时间

show parameter db_flashback_retention_target;

修改数据库可闪回的最远时间 --计量单位为 分钟

alter system set db_flashback_retention_target=2880 scope=both;

查看数据库可闪回的最远时间

select * from v$flashback_database_log;

闪回数据库的5种方法 --mount 状态下

rman:flashback database to time=to_date('','');

rman:flashback database to scn=10000;

rman:flashback database to sqeuence=100;

sql:flashback database to scn=10000;

sql:flashback database to timestamp(sysdate-1/24);

闪回后可以先使数据库只读,验证数据后再打开数据。

alter database open read only;

alter database open resetlogs;

闪回删除

show parameter recyclebin;

alter system set recyclebin=on scope=both;

查看删除的表

show recyclebin;

select * from recyclebin;

闪回删除的表

flashback table a to before drop;

flashback table a to before drop rename to a1;

永久删除表

drop table a purge;

闪回表

将表中的数据闪回到某个时间点。

flashback table a to timestamp(sysdate-1/24);

改功能是使用需开启以下两个功能:undo以及行移动功能

show parameter undo;

alter system set undo_retention=86400 scope=spfile; --未必会保存86400

alter tablespace undo_space retention guarantee; --强制保存86400,没有新的空间会报错。

alter table a enable row movement;

闪回查询

select * from TEST as of timestamp sysdate-1/24;

select * from TEST as of SCN 1257245;

数据库当前scn查询

select current_scn from v$database;

select dbms_flashback.get_system_change_number from dual;