Oracle 11G 分区表和锁
SQL> remark 分区表的优势:VLDB=VARY LARGE DATABAST
SQL> remark 增强可用性 减少关闭的时间 维护轻松
SQL> remark .................................................................
SQL> remark 分区表的分类:四种分区的方法
SQL> remark 范围分区 列表 散列分区 复合分区
SQL> remark 创建范围分区:分界点一定是从小到大的依次给出的
SQL> create table atable
2 (
3 userid number(4) primary key ,
4 name varchar(10) not null,
5 age number(2),
6 state char(8)
7 )
8 partition by range(userid)
9 (
10 partition p1 values less than (1001) tablespace hope,
11 partition p2 values less than (2001) tablespace hope2
12 );
partition p1 values less than (1001) tablespace hope,
*
ERROR at line 10:
ORA-00959: tablespace 'HOPE' does not exist
SQL> remark 以上没有创建表空间...............................................
SQL> create tablespace zhangjun
2 datafile 'd:\zhangjun.dbf'
3 size 30m
4 autoextend on;
Tablespace created.
SQL> remark 创建列表分区
SQL> create table Mobilephone
2 (
3 mid number(11),
4 mtype char(10),
5 location varchar(30)
6 )
7 partition by list(location)
8 (
9 partition p1 values('洪山','青山','武昌'),
10 partition p2 values('桥口','汉阳'),
11 partition p3 values(default)
12 );
Table created.
SQL> remark 创建散列分区
SQL> remark 特点:只关注分区的数量,系统自动定义分区的名称,分区的数据存储在缺省的表空间里面。
SQL> create table orders
2 (
3 oid number(20),
4 orderdate date,
5 mname varchar(30),
6 count int ,
7 price number(12,2)
8 )
9 partition by hash(oid)
10 partitions 8;
SQL> remark 查看分区表的信息
SQL> remark select table_name , partition_name,tablespace_name from user_tab_partitions;
SQL> remark .....................................................
SQL> remark 创建分区表的时候,给定分区的名称
SQL> create table orders
2 (
3 oid number(20),
4 orderdate date,
5 mname varchar(30),
6 count int,
7 price number(12,2)
8 )
9 partition by hash (oid)
10 (
11 partition p1,
12 partition p2,
13 partition p3
14 )
15 ;
Table created.
SQL> remark 创建分区表的时候指定分区存储的表空间
SQL> remark .....................................................
SQL> remark partition by hash(oid) partitions 3 store in (tablespace1,tablespace2,tablespace3); 有多少个分区对应多少个表空间
SQL> remark ......................................................
SQL> remark 创建复合分区
SQL> remark 复合分区可以是范围分区和列表的组合,也可以是范围分区和散列的组合
SQL> remark .......................................................
SQL> remark 分区表的维护
SQL> remark 查询分区表中的数据
SQL> select * from atable partition(p2);
select * from atable partition(p2)
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> remark 增加分区表:增加分区表的分区一定是最后一个分区
SQL> remark alter table atable add partition p3 values less than (3001) tablespace HOPE2;
SQL> remark 删除一个分区
SQL> remark alter table atable drop partition p3;
SQL> remark 拆分一个分区,将一个分区拆分为两个分区
SQL> remark alter table atable split partition p3 at(1050) into(partition p4,partition p5);
SQL> remark 合并分区:
SQL> remark alter table atable merge partitions p4,p5 into partition p5;
SQL> remark 分区改名
SQL> remark alter table atable rename partition p3 to p4;
SQL> remark 将分区改表空间
SQL> remark alter atable atable move partition p4 tablespace HOPE2(表空间);
SQL> remark .................................................................
SQL> remark 锁机制:锁的诞生是为了保存数据访问的完整性和一致性;
SQL> remark Oracle数据库锁的种类:DML 锁,用于保护数据的完整性;
SQL> remark DDL锁:用于保护数据库对象的结构,如:表 索引的结构定义,
SQL> remark 内部锁,保护数据库的内部结构
SQL> remark DML锁包含TM 锁 和 TX锁,TM为表级锁,TX为行级锁
SQL> remark 锁定后使用资源的方式有两种模式:排他模式 共享模式
SQL> remark 枷锁的语法:lock table 表名 in [row share|row exclusive | share |share row exclusive | exclusive];
SQL> remark 系统中锁的模式:none 无,null 空, row share行共享,row exclusive 行排他(RX), share 共享锁(s), share row exclusive 共享行排他(SRX)
SQL> remark 给emp添加共享锁
SQL> lock table scott.emp in share mode;
Table(s) Locked.
SQL> remark 在同一个会话中可以重复的对一个表加锁,给级别的锁之间没有互斥性。
SQL> lock table scott.emp in exclusive mode;
Table(s) Locked.
SQL> lock table scott.emp in share mode;
Table(s) Locked.
SQL> lock table scott.emp in row share mode;
Table(s) Locked.
SQL> spool off;
[color=brown][/color][size=x-small][/size]