停止空想

老张的空中之家

存档于 ‘数据库’ 分类

like 语句中的下划线

作者:admin 发表时间:四月 - 15 - 2009

今天发现一条语句导致latch free,而该条语句之前没有任何问题。

语句如下:

select * from t where  reverse(a.report_id) like ‘_9859009002623000209%’)

本来应该利用上该表上的反序索引。但是因为下划线在sql里面是特殊字符,所以选择了全表扫描。

如果要使用该index,select * from t where reverse(a.report_id) like ‘\_9859009002623000209%’) escape ‘\’;

进行转义。


类别:Oracle

9i能否删除表空间里的数据文件?

作者:admin 发表时间:四月 - 7 - 2009

原则上只有10g 数据库才能删除表空间里面没有被分配segments的数据文件。

9i不行,除了temp数据文件。ALTER DATABASE TEMPFILE ‘/u02/oracle/data/lmtemp02.dbf’ DROP
INCLUDING DATAFILES;

普通的数据文件,在9i里只能随着表空间的删除而删除。

阅读全文 »

类别:Oracle

The value (30) of MAXTRANS parameter ignored

作者:admin 发表时间:四月 - 7 - 2009

在客户的数据库系统中(Oracle 10.2.0.3),当使用expdp备份时就出现如下错误,非常准时。
可以看到,这个错误就是由于备份时创建备份主表(Master Table)产生的:

Sat Mar 7 02:40:01 2009
The value (30) of MAXTRANS parameter ignored.
Sat Mar 7 02:40:04 2009
ALTER SYSTEM SET service_names=’SYS$SYS.KUPC$C_1_20090307024002.ERPDB.COM’ SCOPE=MEMORY SID=’erpdb1′;
Sat Mar 7 02:40:04 2009
ALTER SYSTEM SET service_names=’SYS$SYS.KUPC$C_1_20090307024002.ERPDB.COM’,'SYS$SYS.KUPC$S_1_20090307024002.ERPDB.COM’ SCOPE=MEMORY SID=’erpdb1′;
kupprdp: master process DM00 started with pid=45, OS id=627534
to execute - SYS.KUPM$MCP.MAIN(’EXPDP_BAK20090307′, ‘SYSTEM’, ‘KUPC$C_1_20090307024002′, ‘KUPC$S_1_20090307024002′, 0);
kupprdp: worker process DW01 started with worker id=1, pid=46, OS id=549820
to execute - SYS.KUPW$WORKER.MAIN(’EXPDP_BAK20090307′, ‘SYSTEM’);

考虑这可能是Oracle的一个Bug,查询Metalink确认,Bug号为:6347775。

这是由于在创建备份主表时使用了如下语句:
CREATE TABLE <table_name> (<columns_list>) INITRANS 10 MAXTRANS 30

而Maxtrans参数在10gR1时已经废弃,所以在告警日志中就提示:
The value (30) of MAXTRANS parameter ignored.

这个错误是无害的,除了在告警日志中产生了不少垃圾数据。Metalink Note:455021.1 记录了这个问题。

也可以在SQL*PLUS中输入如下测试语句:
create table test001 (col001 number) initrans 10 maxtrans 25;

然后可以在告警日志中看到如下提示:
The value (25) of MAXTRANS parameter ignored.

然而这个EXPDP产生的主表可能在Logical Standby上并不适用,所以丛库上可能报出如下错误:
LOGSTDBY status: ORA-16227: DDL skipped due to missing object

这个错误提示备库跳过了EXPDP主表的DDL,所以可以安全的忽略:

Error: ORA-16227 (ORA-16227)
Text: DDL skipped due to missing object
—————————————————————————
Cause: A table or other database object upon which this DDL depends is not defined on the Logical Standby database.
Action: No action is necessary, this infomational statement is provided to record the event for diagnostic purposes.

类别:Oracle