这两天受伤了……好心塞,还是来写点博客缓缓吧……
一、序列
对于已经创建的序列,应该首先使用序列名称.nextval,然后,才能使用序列名称.currval。
序列可以被多个用户共享,但序列中的序号是不能共享的。
对序列中序号的操作是作为一个单独的事务实现的,这个事务的执行与其他事务的执行与否无关。若包含一条DML语句的事务被回滚了,那么对序列的操作是无法回滚的。
1、创建序列
create sequence 序列名称
increment by n ------------属性,增长步长
start with n ------------属性,开始数字
maxvalue n | nomaxvalue ------------属性,最大值默认为10*27
minvalue n | nominvalue ------------属性,最小值默认为1
cycle | nocycle -----------属性,循环
cache | nocache -----------属性,缓存,
如果把序列中的序号放在内存中进行缓冲,那么用户获得序号的速度将大大加快,默认缓存的大小为20,主键列的序列最好不要用缓存,序列缓存的大小必须小于一次循环所能获得的数目。
2、删除序列
drop sequence 序列名;
3、修改序列
alter sequence 序列名 属性名 值
二、事务
是数据库操作序列,一个不可分割的整体,这些操作要么全做,要么全不做;是对数据库进行操作的最基本的逻辑单位,可以是一组SQL语句或整个程序,一般情况下,一个应用程序里包含多个事务,事务是恢复和并发控制的基本单位。
事务和程序不同,一条语句或者多条语句甚至一段程序都可能在一个事务中,而一段程序又可以包含多个事务。
事务在没有提交之前可以回滚,而且在提交前,当前用户可以查看已经修改的数据,但其他用户看不到该数据,一旦事务提交,就不能再撤销修改。
1、oracle数据库的事务基本控制语句有如下几种:
a、set transaction:设置事务的属性
b、commit:提交事务
c、savepoint:设置保存点
d、rollback:回滚事务
e、rollback to savepoint:回滚至保存点
2、事务类型:
显示操作方式:对事务的提交或回滚,事务会自动开启(登录或执行DML语句时)。
隐式管理方式:由数据库自动开启,程序正常结束或执行DDL语句时自动提交。(利用语句设置事务是否自动提交:set autocommit on/off)
3、事务的状态:
a、已决事务:
提交状态
中止状态:事务回滚,数据库已恢复到事务执行前的状态
b、未决事务:
活动状态
部分提交状态
失败状态:不能正常执行(硬件原因或逻辑错误)的状态,事务要回滚,就进入了中止状态。
3、事务的四大特性(ACID):
atomic(原子性)、cosistent(一致性)、isolated(隔离性)、durable(持久性)
为了实现事务的原子性,对于事务中写操作的数据项,数据库系统在磁盘上需要记录其旧值,事务若没有完成,就将旧值恢复回来。
原子性,保证了数据的完整性(域完整性、实体完整性、依赖完整性)和一致性。
隔离性:保证了并发执行的各个事务之间不能互相干扰。
4、事务的保存点
当回滚到指定的保存点时,它以后的保存点会被删除,而指定的保存点会被保留。
事务回滚时,只回滚保存点之后的操作
保存点之后的锁将被释放,之前的将会被保留。
a、创建保存点:savepoint 保存点名称;
应用:rollback to 保存点名称;
三、锁
锁的分类:
按权限分:
排他锁(X锁),写
共享锁(S锁),读
按所用对象分
DML锁,(数据锁):
行级锁(TX)属于排他锁
表级锁(TM)
DDL锁:保护模式中对象的结构
内部闩锁:保户数据库的内部结构,完全自动调用
及时的结束事务是解决锁等待情况发生的有效方法。
死锁是在我用户或多进程的情况下,为使用同一个资源而产生的无法解决的争用状态,可以利用OEM管理器查看阻塞情况。
四、表空间
1、创建表空间
create tablespace tablespace_name
datafile filename size sizenum
[auto extend [on/off]] next size
[maxsize size]
[permanent | temporary]
[extent management --------指表空间的管理
[dictionary | local --------字典管理方式 |本地管理方式(默认为此种)
[auto allocate | uniform
[size integer
[k|m]
]
]
]
]
eg:
create tablespace schema2
datafile 'c:\app\oradata\a.dbf' size 5M
auto extend on next 128K
maxsize 2048M
2、重命名表空间:alter tablespace oldname rename to newname;
不是所有的表空间可以重命名,system和sysaux表空间不能重命名,当空间处于offline状态时,表空间是不可以重命名的。
3、设置表空间的状态(读写/可用状态)
alter tablespace tablespace_name read only | write;
alter tablespace tablespace_name online | offline;
4、删除表空间:
drop tablespace tablespace_name
including contents -----是否删除表空间的对象和其他内容,包含此参数,则删除
cascade constraints; ------当此空间与其他空间的对象关联使用时,将此关联取消,包含此参数,则关联取消,正常删除表空间,否则出现错误 ,停止删除表空间操作
若表空间中的一个表当前正在使用,就不能删除该表空间,则,应先使表空间处于脱机 (offlin)状态,再将其删除。
5、查看表空间
select tablespace_name,contents from user_tablespaces;
6、查看某一用户的默认表空间
select default_tablespace,username from dba_users where username like 'sys%';
7、查看表空间的使用情况:
select * from user_free_space;
五、角色
角色有:connect:给普通用户的权限,连接数据库
resource:编写过程和函数的权限
dba:系统权限(dba角色的人才能给这种权限)
用户管理和权限管理是确保数据安全的主要手段
--------创建角色
create role role_name
[not identified | ----------------------不需要验证
identified by [password] | ----------------------口令验证
identified by extenally | ----------------------外部验证
identified by globally ] ---------------------全局验证
eg : create role second_role not identified;
---------为角色授权
grant create session to second_role;;
--------将一个角色授予另一个角色
grant role_cus to second_role with admin option;
--------禁用角色
alter user user_name default role none;
--------设置角色
set role role_name; ------但是用户不能设置自己不具有的角色信息
1、创建/修改用户
create/alter user username
identified by password
default tablespace 默认表空间名称
temporary tablespace 临时表空间名称
quota size -----------------------设置当前用户使用表空间的最大值
profile 概要文件名称 ----------------------设置当前用户使用的概要文件名称
account lock|unlock ----------------------设置用户的锁定状态,默认为unlock
2、删除用户
drop user username [cascade] ----------------------表示删除用户下的所有对象
3、权限
权限分为系统权限和对象权限,系统权限表示的是对数据库级的操作,对象权限表示的是对表对象、视图、存储过程、触发器等操作的权限。
授予权限给某个用户:
grant 权限名 to username
权限的传递使用: with admin option | with grant option
六、概要文件
1、创建概要文件
create pfofile profile_name
LIMIT
{resource_parameters | -------------设置资源限制参数
password_parameters} -------------设置口令参数
eg:create profile profile_13
LIMIT
password_life_time 30 ------------表示密码的失效天数设置为30
failed_login_attempts 3; ------------表示用户密码错误的次数是3次
----------修改用户的概要文件
alter user username profile profile_13;
2、查看概要文件
select * from dba_profiles where profile='PROFILE_13‘;
3、修改概要文件
alter profile profile_13
limit
password _life_time 60
4、删除概要文件
drop profile profile_name [cascade] ------------------cascade,在使用的概要文件,要通过该关键字进行撤销。
七,使用expdp工具导出数据(备份)
1、creat directory directory_name as '目录'; -------------------directory_name文件名
2、grant write,read on direcory directory_name to 用户名
eg:
create directory dir2015 as 'E:\dirback';
grant write,read on directory dir2015 to scott;
3、导出表
exdpd username/password directory=directory_name
dumpfile=filename -----------导出数据存放的文件名
tables=table_name; -----------准备导出的数据表,存在多个表时,用逗号隔开。
eg:expdp scott/a directory=dir2015 dumpfile=file1 tables=emp;