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 [email protected] 其中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用户连接到数据库了:
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用户
drop user yyaccp;
10. 使用grant向用户授予不同的特权:以下通过system用户向yyaccp用户授予了 创建会话、创建用户以及创建表的权限
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 选项。
Grant execute any procedure to yyaccp with admin option;
12. 检查授予用户的权限(通过user_sys_privs表)检查某个用户具有哪些权限:
以下命令演示了 yyaccp用户连接到数据库上,并对user_sys_privs进行查询
Select * from user_sys_privs ;
14. 撤销系统特权。以下system撤销了yyaccp用户的dba权限
Revoke dba from yyaccp;
15.当授权的用户向表空间创建表或向已有的表中插入数据时,仍然提示权限不足可以通过以下方式解决例如 :创建了 yyaccp 用户 但是yyaccp 用户在 yyaccp 表空间中建表时出现权限不足,执行以下命令:
connect system/manager;
alter useryyaccpquota unlimited onyyaccp;
使用以下命令删除表空间同时删除表空间对应的数据文件:
drop tablespaceyyaccpincluding contents and datafiles;
对象特权:
16. 对象特权允许用户对数据库对象执行特定的操作,比如对表进行添加、修改、删除、查询等操作。
以下表格列出了常用的对象特权:
对象特权
允许执行的操作
select
执行查询操作
Insert
执行插入操作
Update
执行修改操作
Delete
执行删除操作
execute
执行存储过程
向用户授予对象特权:
17. 可以使用 grant 语句向用户授予 对象特权 ,下面这个例子以 yyaccp 用户的身份连接到数据库,并向 tuser 授予以下特权:对 tusertable 表的 select ,
Insert ,update 对象特权进行授权
Connectyyaccp/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为该段分配另外的区。由于区是按需分配的,一个段的区可能是也可能不是连续的。
段和它的所有区存储在一个表空间中。在一个表空间中,一个段包括的区能分布在多个文件中,也即段能跨越数据文件。无论如何,每个区必须在一个数据文件中。