Oracle 块清除(block cleanout)
今天在网上看到一篇关于BLOCK CLEANOUT不错的文章,虽然里面的有个别地方比较难懂,可还是先转过来,等以后懂得多一些了自己也做做实验操作操作。
=========================================================
Oracle (block cleanout)
Cleanout有2种,一种是fast commit cleanout,另一种是delayed block cleanout.
Oracle的每个事务(transaction)修改不超过10%buffer cache的数据块时,oracle做的是fast commit cleanout。如果一个事务(transaction)修改的块超过10% buffer cache,那么超过的块就执行delayed block cleanout,还有一种情况,就是当事务还未commit时,修改的数据块已经写入硬盘,当发生commit时oracle并不会把block重新读入做cleanout,而是把cleanout留到下一次对此块的访问是完成。
下面构造环境来测试
每个数据块一条数据(数据块为8k)
SQL> create table test (id int,
name char(600))
pctfree 99 pctused 1;
表已创建。
SQL> insert into test select object_id,object_name from all_objects where rownum< 1000;
已创建999行。
SQL> show parameters db_cache_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------
db_cache_size big integer 32M
SQL> l
1 select rownum, dbms_rowid.rowid_relative_fno(rowid) "file#",dbms_rowid.rowid_block_number(rowid) "block#" from test
ROWNUM file# block#
---------- ---------- ----------
1 1 60762
….
999 1 62064
--Delay clean out 的表象
SQL> update test set id=id + 1;
已更新999行。
SQL> commit;
提交完成。
SQL> set autot on
SQL> select count(*) from test;
COUNT(*)
----------
999
--执行计划
----------------------------------------------------------
Plan hash value: 1950795681
-------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-------------------------------------------------------------------
| 0
相关文档:
关键字: oracle
Oracle安装中的DHCP问题
1.Linux
修改hosts文件 将ip地址与localhost设定就可以了,如下
vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
192.168.193.129 www.myzhtc.com
192.168.193.129 localhost myzhtc.com
......
如果temp_t1不存在,
oracle:
create table temp_t1
as
select * from t1
sql server:
select * into temp_t1 from t1
如果temp_t1存在,
oracle:
insert into table temp_t1
select * from t1
sql server:
insert into table temp_t1
select * from t1 ......
预定义角色是oracle提供的角色,这些角色是在建立数据库,安装数据字典视图何PL/SQL包时建立的,并且每种角色都用于执行一些特定管理任务.
1,CONNECT角色
CONNECT角色时在建立数据库时,oracle执行脚本SQL.BSQ自动建立的角色,该角色具有应用开发人员所需的多数权限.CONNECT角色具有的所有系统权限如下:
ALTER SESS ......
权限(Privilege)是指执行特定类型SQL命令或访问其他方案对象的权利,权限包括系统权限和对象权限两种类型.系统权限(System Privilege)是指执行特定类型SQL命令的权利,它用于控制用户可以执行的一个或一组数据库操作.常用的系统权限:
CREATE SESSION 连接到数据库
CREATE TABLE 建表
CREATE VIEW 建立视图
CREATE PUBLI ......