11g的Invisible index和前面版本的virtual index是完全不同的。
Invisible index是有segment的,并且在做DML操作的时候是维护这个索引的,而virtual index并没有真实的被创建出来,没有分配segment空间,只是optimizer可见而已。
让我来说的话,virtual index是在QA环境上做测试的一个工具,用处不大,主要被oracle自己使用(Oracle Enterprise Manger Tuning Pack),
而invisible index是在production实施的一个过渡阶段,对于某些大型的复杂的application很有价值。
另外invisible index对于drop index也很有帮助,可以做为drop index的一个过渡阶段。
在drop前(建议先monitoring usage)先设置index invisible,观测一段时间,比如一个星期,如果有问题可以很快的rollback,如果没有问题再drop index。
在我06年初的那篇文章里提到virtual index的几个特性:
1. 需要设定隐藏参数 “_use_nosegment_indexes”=true, 因为涉及隐藏参数,所以不建议在prod环境使用,除非oracle建议
2. hint 对virtual index有效
3. 没有hint的情况下,RBO时虚拟索引对于optimizer不可见, CBO时oracle会考虑使用虚拟索引
这里对应的也列出Invisible的几个特点:
1. 可以在创建的时候指定,也可以用alter index xx invisible 修改,是oracle support的new feature.
- SQL> create index test_idx on test(object_id) invisible;
-
- Index created.
-
- SQL> select index_name,visibility from user_indexes where index_name='TEST_IDX';
-
- INDEX_NAME VISIBILITY
- ------------------------------------------------------------------------------------------ ---------------------------
- TEST_IDX INVISIBLE
-
- SQL> alter index test_idx visible;
-
- Index altered.
-
- SQL> select index_name,visibility from user_indexes where index_name='TEST_IDX';
-
- INDEX_NAME VISIBILITY
- ------------------------------------------------------------------------------------------ ---------------------------
- TEST_IDX VISIBLE
-
- SQL> alter index test_idx invisible;
-
- Index altered.
-
- SQL> select index_name,visibility from user_indexes where index_name='TEST_IDX';
-
- INDEX_NAME VISIBILITY
- ------------------------------------------------------------------------------------------ ---------------------------
- TEST_IDX INVISIBLE
2. Invisible index对于optimizer是不可见的,除非session开始设置OPTIMIZER_USE_INVISIBLE_INDEXES=true。文档上说加hint也可以使用invisible index,不过我没有试出来,
Read more…
Eagle Fan oracle 11g
oracle 11g的linux binary出来也有段时间了,前段时间一直在忙,一直没时间也没有合适的linux系统来测试
最近终于有了太SUSE9 Linux的系统可以用来做一些测试
到otn.oracle.com上download了binary
安装过程挺顺利的,一路next,中间有warning说支持SUSE10,不支持SUSE9,忽视,继续next

装完binary后手工建库,一开始看alert就被忽悠了一把
- tail -500f alert_TEST.log
- Sat Sep 1 06:23:07 2007
- WARNING: The background_dump_dest init.ora parameter has been deprecated.
- WARNING: Please remove the background_dump_dest parameter from the init.ora file.
- WARNING: The diagnostic_dest init.ora parameter now determines the location of the diagnostic data
- WARNING: The new location for the background logs and traces is /home/oracle/diag/rdbms/test/TEST/trace
- Sat Sep 1 06:23:07 2007
- WARNING: The user_dump_dest init.ora parameter has been deprecated.
- WARNING: Please remove the user_dump_dest parameter from the init.ora file.
- WARNING: The diagnostic_dest init.ora parameter now determines the location of the diagnostic data
- WARNING: The new location for the user logs and traces is /home/oracle/diag/rdbms/test/TEST/trace
发现background_dump_dest已经不用了,引入一个新的参数DIAGNOSTIC_DEST
oracle 11g提供了两种方式来存放log, 一种是我们熟悉的txt方式,另外一种是XML方式
这些文件放于ADR(Automatic Diagnostic Repository)目录下,由DIAGNOSTIC_DEST参数指定
我们可以看一下这个目录下有哪些子目录
- SQL> l
- 1* select name,value from v$diag_info
- SQL> /
-
- NAME VALUE
- ------------------------------ ----------------------------------------------
- Diag Enabled TRUE
- ADR Base /oracle/TEST/trace/bdump
- ADR Home /oracle/TEST/trace/bdump/diag/rdbms/test/TEST
- Diag Trace /oracle/TEST/trace/bdump/diag/rdbms/test/TEST/trace
- Diag Alert /oracle/TEST/trace/bdump/diag/rdbms/test/TEST/alert
- Diag Incident /oracle/TEST/trace/bdump/diag/rdbms/test/TEST/incident
- Diag Cdump /oracle/TEST/trace/cdump
- Health Monitor /oracle/TEST/trace/bdump/diag/rdbms/test/TEST/hm
- Default Trace File /oracle/TEST/trace/bdump/diag/rdbms/test/TEST/trace/TEST_ora
- _10221.trc
-
- Active Problem Count 0
- Active Incident Count 0
-
- 11 rows selected.
这次在”create database”的时候,oracle 将运行的一些sql也写到了log中,如果对基表的列不清楚的可以查看相应的创建表的sql
- grep ^processing alert_TEST.log
- processing ?/rdbms/admin/dcore.bsq
- processing ?/rdbms/admin/dsqlddl.bsq
- processing ?/rdbms/admin/dmanage.bsq
- processing ?/rdbms/admin/dplsql.bsq
- processing ?/rdbms/admin/dtxnspc.bsq
- processing ?/rdbms/admin/dfmap.bsq
- processing ?/rdbms/admin/denv.bsq
- processing ?/rdbms/admin/drac.bsq
- processing ?/rdbms/admin/dsec.bsq
- processing ?/rdbms/admin/doptim.bsq
- processing ?/rdbms/admin/dobj.bsq
- processing ?/rdbms/admin/djava.bsq
- processing ?/rdbms/admin/dpart.bsq
- processing ?/rdbms/admin/drep.bsq
- processing ?/rdbms/admin/daw.bsq
- processing ?/rdbms/admin/dsummgt.bsq
- processing ?/rdbms/admin/dtools.bsq
- processing ?/rdbms/admin/dexttab.bsq
- processing ?/rdbms/admin/ddm.bsq
- processing ?/rdbms/admin/dlmnr.bsq
Eagle Fan oracle 11g