首页 > 代码库 > 【Oracle】第一章创建授权
【Oracle】第一章创建授权
ORACLE 第一章创建授权
通过命令查看控制文件,数据文件,日志文件:
控制文件 : Desc v$controlfile;
数据文件 :desc v$datafile;
日志文件: desc v$logfile;
1. 执行导入 .sql文件
命令语法如下:
directory_path\store_schema.sql
其中 directory_path 是保存 store_schema.sql 脚本的目录和路径
例如:以下代码演示了导入C盘下的 sql 脚本文件:
@c:\sql\store_schema.sql
2. 在SQL Plus 中切换不同的用户,例如以下命令切换到 system 用户登陆
connect system/manager@oracle 其中oracle 是指服务名
3. oracle 安装后,dual 是默认的表名 在SQL Plus 中输入:
select sysdate from dual;
它可以返回当前日期
**** 注意:SQL语句以分号(;)结束
4. oracle 中的数据库是以表空间存在的,以下命令创建了一个名为:yyaccp的表空间,并且指定数据文件的路径。
create tablespace yyaccp
datafile ‘D:\oracle\oradata\oracle\yyaccp.DBF‘
size 5M autoextend on;
5. oracle 中可以通过命令创建用户名,以下命令创建了一个 yyaccp 用户名,
并为它确定默认表空间和临时表空间
create user yyaccp identified by yyaccp
default tablespace yyaccp
temporary tablespace temp;
6. 如果要给授权的用户可以在数据库中执行一定的操作那么应该为该用户授予
执行这些操作的权限,例如,如果要让这个用户连接到数据库上必须要为该
用户授予“创建会话的权限”,以下命令为 yyaccp 用户创建了会话权限
(使用grant语句)
grant create session to yyaccp;
授予权限以后就可以通过 yyaccp 用户连接到数据库了:
connect yyaccp/yyaccp@oracle;
7.用户密码的可以通过 alter 进行修改 以下命令修改了 yyaccp 用户的密码:
alter user yyaccp identified by accp;
8. password 命令可以用来修改当前登陆的用户的密码,在登陆后输入password
命令,sql plus 会提示输入原来的密码,然后再输入两次新密码 例如:
connect yyaccp/accp;
输入: password;
sql plus 显示:
更改YYACCP的口令
旧口令: ******
新口令: ******
重新键入新口令:******
口令已更改
9. 删除用户可以通过 drop user 进行删除,以下命令删除 yyaccp 用户
connect system/manager@oracle;
drop user yyaccp;
10. 使用 grant向用户授予不同的特权:以下通过system 用户向 yyaccp 用户授予了 创建会话、创建用户以及创建表的权限
Connect system/manager@oracle;
Grant create session, create user , create table to yyaccp;
常用的系统特权:
Create session | 连接到数据库上 |
Create sequence | 创建序列 |
Create table | 创建表 |
Create any table | 在任何模式中创建表 |
Drop table | 删除表 |
Drop any table | 删除任何模式中的表 |
Create procedure | 创建存储过程 |
Execute any procedure | 执行任何模式中的存储 过程 |
Create user | 创建用户 |
Drop user | 删除用户 |
Create view | 创建视图 |
11.使用with admin option 选项。授权的用户可以把特权授予其他用户使用
以下命令 将execute any procedure 特权授予 yyaccp 用户,同时指定了
with admin option 选项。
Connect system/manager@oracle;
Grant execute any procedure to yyaccp with admin option;
12. 检查授予用户的权限(通过 user_sys_privs 表)检查某个用户具有哪些权限:
以下命令演示了 yyaccp 用户连接到数据库上,并对 user_sys_privs 进行查询
Connect yyaccp/accp@oracle;
Select * from user_sys_privs ;
14. 撤销系统特权。以下system撤销了 yyaccp用户的dba权限
Revoke dba from yyaccp;
15.当授权的用户向表空间创建表或向已有的表中插入数据时,仍然提示权限不足可以通过以下方式解决例如 :创建了 yyaccp 用户 但是yyaccp 用户在 yyaccp 表空间中建表时出现权限不足,执行以下命令:
connect system/manager;
alter user yyaccp quota unlimited on yyaccp;
使用以下命令删除表空间同时删除表空间对应的数据文件:
drop tablespace yyaccp including contents and datafiles;
对象特权:
16. 对象特权允许用户对数据库对象执行特定的操作,比如对表进行添加、修改、删除、查询等操作。
以下表格列出了常用的对象特权:
对象特权 | 允许执行的操作 |
select | 执行查询操作 |
Insert | 执行插入操作 |
Update | 执行修改操作 |
Delete | 执行删除操作 |
execute | 执行存储过程 |
向用户授予对象特权:
17. 可以使用 grant 语句向用户授予 对象特权 ,下面这个例子以 yyaccp 用户的身份连接到数据库,并向 tuser 授予以下特权:对 tusertable 表的 select ,
Insert ,update 对象特权进行授权
Connect yyaccp/accp;
Grant select ,insert ,update on yyaccp.tusertable to tuser;
18. 以下命令对tusertable 表中的 name , address 列的 update 特权授予tuser 用户
Grant update(name,ddress) on yyaccp.tusertable to tuser;
19. 使用 grant 选项可以使授权的用户把这种特权再授予其他用户。下面命令对tusertable 表的 select 特权授予 tuser 用户,同时指定了 with grant option 选项
Grant select on yyaccp.tusertable to tuser with grant option
20. 检查已授予的对象特权(通过查询 user_tab_privs_made) 可以检查某个用户对哪些表向其他用户开放了哪些对象特权:
Select * from user_tab_privs_made
user_tab_privs_made 部分列
列名称 | 说明 |
Grante | 该特权授予的用户 |
Table_name | 所授予的特权所操作的对象(例如表)名 |
Grantor | 授权者 |
Privilege | 对该对象授予的特权 |
grantable | 特权所授予的用户是否可以将这种特权再授予其他用户,该值等于 yes 或 no |
hierarchy | 特权是否构成层次关系。该值等于 yes 或 no |
User_col_privs_made 可以检查某个用户对哪些列对象开放了哪些特权。
Select * from user_col_privs_made;
from user_col_privs_made 部分列
列名称 | 列说明 |
Grantee | 该特权授予的用户 |
Table_name | 所授予特权所操作的对象名 |
Column_name | 所授予特权所操作的对象名 |
Grantor | 授权者 |
Privilege | 对该对象授予的特权 |
grantable | 特权授予的用户是否可以将这种权限再授予其他用户,该值等于 yes 或 no |
如果以tuser 用户身份连接到数据库上就可以通过公共对象名称 sttable 对 yyaccp.sttable 进行检索:
Connect tuser/tuser;
Select * from sttable;
23.撤销用户对象的特权:
使用 revoke 语句撤销某个用户的对象特权。以下命令以 yyaccp 用户的身份连接到数据库上,并撤销 tuser 对sttable 表的 insert 特权
Connect yyaccp/accp;
Revoke insert on sttable from tuser
Oracle 数据库中的 数据块、区、段、表空间
在最细的粒度上,Oracle存储数据到数据块中(也叫逻辑块、Oracle块或页),一个数据块对应磁盘上的一定数量字节的数据库物理存储空间。
逻辑数据库存储空间的下一个存储级别是区。一个区是分配用来存储特定信息的连续数据块。
区之上的逻辑数据库存储级别叫段。一个段是区的集合,每个区都被分配了特定的数据结构,所有的区都存储在同一表空间中。例如,每个表的数据被存储在它自己的数据段中,每个索引的数据存储在它自己的索引段中。假如表或索引是分区的,每个分区被存储在它自己的段中。
Oracle以区为单位给段分配空间。当段中存在的区满了,Oracle为该段分配另外的区。由于区是按需分配的,一个段的区可能是也可能不是连续的。
段和它的所有区存储在一个表空间中。在一个表空间中,一个段包括的区能分布在多个文件中,也即段能跨越数据文件。无论如何,每个区必须在一个数据文件中。
【Oracle】第一章创建授权