Oracle数据库2
一.创建用户和表空间
1.1.以超级管理员身份登录
conn sys as/password **as sysdba**
1.1.1查看使用哪一个实例进行登录的
select instance_name from v$instance;
1.2.创建表空间
create tablespace tablespace_name
datafile 'path\name.dbf'
size 大小;
1.2.1自动拓展
1.在创建表的时候指定空间大小后面加上autoextend on next 每一次拓展的大小 unlimited/maxsize 大小;
2.运行这条语句,alter database datafile 'path/name.dbf' autoextend on;
1.2.2.查询表空间信息
两个视图
1.V$tablespace:从控制文件中获取的表空间名称和编号信息。
2.dba_tablespace:数据库中所有表空间的信息。
问题2:V$tableplace与dba_tablespace的区别?
回答:V$是动态性能视图,存在于controlfile中,数据库在mount状态下可以查询,dba是静态视图,存在于数据库中,只能在open时查询。
select * from dba_tablespace;
1.2.3.表空间的分类
1.永久表空间:用于存储数据字典数据和用户数据,如system、sysaux、users表空间均属于永久表空间。
2.临时表空间:用于存储会话的中间排序结果、临时表和索引等,如temp表空间就是临时表空间。
3.还原表空间:存储的数据专门用于回滚或还原操作,为数据库提供一致性支持,如UNDO表空间就是一个还原表空间。
1.2.4.创建表空间时区与段的管理子句
extent management:区的管理方式有两种,(默认)loacl(本地管理)与dictionary(数据字典管理)。本地管理有两种方式:autoallocate(默认)与uniform。
segment space management:段的管理方式有两种,auto(默认)与manual。
1.2.5.创建大文件表空间
1.一个大文件表空间只包含一个数据文件,该数据文件可以包含4G(2^32)个数据块。
2.由于大文件表空间只包含一个数据文件,因此可以减少数据库中数据文件的数量,减少SGA中用于存放数据文件信息的内存需求,同时减小控制文件。
3.通过对大文件表空间的操作可以实现对数据文件的透明操作,简化了对数据文件的管理。
创建大文件表空间语句
create bigfile tablespace tablespace_name datafile 'path/name.dbf' size;
1.2.6.创建临时表空间
1.临时表空间是指专门存储临时数据的表空间,这些临时数据在会话结束时会自动释放。
2.在数据库实例运行过程中,执行排序等SQL语句时会产生大量的临时数据,而内存不足以容纳这么多数据,此时可以使用临时表空间集中管理临时数据,既提高了排序操作的并发度,又提高了存储空间管理的效率。
创建临时表空间语句
create temperary tablaspace tablespace_name **tempfile** 'path/name.dbf' size 大小;
1.2.7.创建还原表空间
1.Oracle数据库中引入撤销表空间,专门用于回退段的自动管理,由数据库自动进行回退段的创建、分配与优化。
创建还原表空间语句
create undo tablespace tablespace_name datafile 'path/name.dbf' size 大小;
1.2.8.表空间的可用性
问题1:什么是表空间的可用性?
回答:表空间的可用性是表空间的脱机与联机操作。
问题2:哪些表空间不可脱机?
回答:system表空间、temp表空间、还原表空间。
问题3:将表空间脱机意味着什么?
回答:将表空间脱机意味着表空间的所有数据文件都处于脱机状态。
回答4:哪些情况需要改变数据的可用性?
问题5:哪些情况需要改变表空间的可用性?
回答:
1.数据文件脱机备份。
2.重命名或移动数据文件。
3.数据文件出现错误时,会自动设置为脱机状态;排错后需要手动设置回来。
4.数据文件丢失会损坏需要在启动数据库前将其脱机。
改变表空间的可用性语句
alter tablespace tablespace_name offline/online;
1.2.9.表空间的读写属性
问题1:表空间设为只读状态,需要表空间处于什么状态?
回答:表空间必须处于联机状态。
注意:表空间正在进行联机数据备份时,不能将表空间设置为只读状态。
修改表空间读写属性语句
alter tablespace tablespace_name read only/read write;
1.2.10.删除表空间
注意:
1.表空间的数据文件不是空的话,需要带有including contents子句。
2.如果删除表空间的同时还要删除操作系统的数据文件,则需要带有and datafiles。
3.如果表空间中的对象被其他表空间引用,则还需要待遇cascade constraints。
举例:
1.删除表空间。
drop tablespace tablespace_name including contents;
2.删除表空间,同时删除其所对应的数据文件。
drop tablespace tablespace_name including contents and datafiles;
3.删除表空间,同时删除其所对应的数据文件,以及其他表空间中与HRTBS3表空间相关的参照完整性约束。
drop tablespace tablespace_name including contents and datafiles cascade contraints;
1.2.11.为表空间添加数据文件
alter tablespace tablespace_name add datafile 'path/name.dbf' size 大小 autoextend on next 大小 maxsize 大小/unlimited;
1.2.12.改变数据文件的可用性分两种情况
1.在归档模式下进行;
对于永久表空间:alter tablespace datafile online/offline
对于临时表空间:alter tablespace tempfile oneline/offline
2.在非归档模式下进行
由于数据库处于非归档模式,数据文件脱机之后,会导致信息丢失,从而使数据文件无法再联机,即不可使用了。因此,在非归档模式下,通常不能将数据文件脱机。
注意:已脱机的数据文件需要介质恢复:recover datafile datafile_name;
1.2.13.删除数据文件
alter tablespace tablespace_name drop datafile 'path/name.dbf';
1.3.创建用户
create user user_name identified by password
default tablespace tablespace_name
temporary tablespace tablespace_name
quota 大小 on tablespace_name
password expire
account unlock/lock;
注意:Oracle数据库使用CREATE USER命令来创建一个新的数据库用户,但是创建者必须具有CREATE USER系统权限。
1.3.1.删除用户
drop user user_name(cascade);
若用户有对象则需要使用cascade关键字
1.3.2.查询用户信息
1.ALL_USERS:包含数据库所有用户的用户名、用户ID和用户创建时间。
2.DBA_USERS:包含数据库所有用户的详细信息。
3.USER_USERS:包含当前用户的详细信息。
注意:普通用户只能查询USER_USERS数据字典,只有拥有DBA权限的用户才能查询DBA_USERS数据字典。
1.4.授权
1.4.1.系统权限有三类:
1.允许在系统范围内操作的权限。如:CREATE SESSION、CREATE TABLESPACE等与用户无关的权限。
2.允许在用户自己的帐号内管理对象的权限。如:CREATE TABLE等建立、修改、删除指定对象的权限。
3.允许在任何用户帐号内管理对象的权限。如:CREATE ANY TABLE等带ANY的权限,允许用户在任何用户帐号下建表。
授权语句
grant dba to user_name;
1.4.2.收回权限
revoke privilege from user_name;
1.4.3.对象权限
授权对象权限
grant select on student to user_name;
收回对象权限
revoke select on student frome user_name;
也可将最大权限换成其他权限。
1.4.4.查看用户下的权限
select * from user__sys__privs;
1.5.创建角色(权限的集合)
使用CREATE ROLE命令可以建立角色,角色是属于整个数据库,而不属于任何用户的。当建立一个角色时,该角色没有相关的权限,系统管理员必须将合适的权限授予给角色。
**此时,角色才是一组权限的集合。**
1.5.1.创建角色
create role role_name not identified/identified by password;
1.5.2.修改角色
alter role role_name not identified/identified by;
注意:使用ALTER ROLE命令可以修改角色的口令,但不能修改角色名。
1.5.2.角色授权
grant system privilege/object privilege to role_name;
1.5.3.回收角色权限
revoke privilege/object privilege from role_name;
1.5.4.授予和回收用户/角色角色
grant/revoke role_name to role_name/user_name;
1.5.5.删除角色
drop role role_name;
1.6.概要资源
1.概要文件(PROFILE),又被称作资源文件或配置文件,用于限制用户使用的系统资源,并管理口令限制。
2.当DBA在创建一个用户的时候,如果没有为用户指定概要文件,则Oracle会为该用户指定默认的概要文件。
1.6.1.查询概要文件信息
select * from dba_profiles;
1.6.2.创建概要文件
内容:创建一个名为res_profile的概要文件,要求每个用户最多可以创建4个并发会话;每个会话持续时间最长为60分钟;如果会话在连续20分钟内空闲,则结束会话;每个SQL语句占用CPU时间总量不超过1秒。
create profile profile_name limit session_per_user 4 connect_time 60 idle_time 20 CPU_PER_CALL 100;
注意:需要有create profile的权限。
1.6.3.创建用户时分配概要文件
create user user_name PROFILE profile_name identified by password;
1.6.4.修改用户的概要文件
alter user user_name profile profile_name;
1.6.5.修改概要文件
alter profile profile_name limit resource_parameter/password_password
举例1:修改概要文件res_profile,设置用户口令有效期为30天。
alter profile res_profile limit password_life_time 30;
举例2:修改概要文件res_profile,设置用户口令超过有效期15天后被锁定。
alter profile res_profile limit password_grace_time 15;
删除概要文件
drop profile profile_name (cascade);
二.表的概念
数据库中以表为组织单位存储数据。表用来存储一些事务的信息。
2.1.表的约束
1.主键约束:primary key
2.唯一约束:unique
3.非空约束:not null
4.外键约束:foreign key
5.检查约束:check
2.2.SQL语言
DDL/Data definition language:数据定义语言,包括create、drop、alter。
DML/Data manipulation language:数据操作语言,包括insert、delete、update、select。
DCL/Data control language:数据控制语言,包括grant、revoke。