停止空想

老张的空中之家

存档于 ‘Oracle’ 分类

ORA-00001: unique constraint (PERFSTAT.STATS$SQL_SUMMARY_PK) violated

作者:admin 发表时间:四月 - 18 - 2007

转自

有朋友遇到Statspack ORA-00001错误。

Errors in file /oracle/app/oracle/admin/shyz/bdump/shyz1_ora_2588734.trc:
ORA-12012: error on auto execute of job 328
ORA-00001: unique constraint (PERFSTAT.STATS$SQL_SUMMARY_PK) violated
ORA-06512: at “PERFSTAT.STATSPACK”, line 1361
ORA-06512: at “PERFSTAT.STATSPACK”, line 2471
ORA-06512: at “PERFSTAT.STATSPACK”, line 91
ORA-06512: at line 1
Sun Oct 16 00:43:39 2005

这个错误此前从未遇到,但是既然是主键冲突,那肯定是存在重复主键的数据。

肯定能暂时解决问题方法就是暂时禁用唯一约束检查:

ALTER TABLE PERFSTAT.STATS$SQL_SUMMARY MODIFY CONSTRAINT STATS$SQL_SUMMARY_PK DISABLE NOVALIDATE;

然后观察数据来发现根本问题,最后彻底解决之。

到Metalink搜索了一下,发现存在一个相关Bug,Bug号为:2784796.
在设置了cursor_sharing为similar或者force之后,可能触发此Bug,导致主键冲突。

此bug据说在Oracle10g中已经修正。

===========

自己的问题

按照这个disable novalidate pk constraint以后,是可以正常进行statspack.snap了

但是之后发现有一个问题:

在做spreport 的时候,许久不能做出报告。10046追踪数据,则发现大量的scatter read 等待事件。

select count(*) from stats$sql_summary; 发现这个表的数据量很大,几百万。

而之前在disable novalidate pK的时候,默认已经把该表上的pk对应的unique index给删除了。

所以手动在原来位置上建立非unique index,解决问题。

Popularity: 23% [?]

类别:Oracle

alter table add column default

作者:admin 发表时间:四月 - 8 - 2007

alter table test add (d number DEFAULT 0) ;

这个操作是对该表 现存的所有的列都添加一个列,并且将新添的这个列更新为default的值。

所以该操作不能在线执行,会锁表。

上面的操作相当于

alter table add(d number)
alter table modify(d number default 30);
update table set d=30 where d is null;

而下面的操作
alter table table_name add col_name data_type;
atler table table_name modify col_name default default_value;
只对以后新的数据有效!之前的都为null

这个操作瞬间可以完成

Popularity: 29% [?]

类别:Oracle

如何给listener设置密码

作者:admin 发表时间:三月 - 28 - 2007

一直觉得给listener设置密码的作用不是很大,但是绿盟给我们安全检测之后,说这是一个比较严重的安全隐患。

简单来说,如果有多个listener,那么就必须设定current listener的名字。

set current_listener L1

change_password  是设定密码

注意:change_password 设置密码马上生效,如果要进一步对该listener进行操作(status,stop)等等,必须

set password 。这个命令的目的是使用我设定好的密码。

具体的步骤是:

下面内容来自metalink

PURPOSE

——-

This article serves as a quick reference to setting up password protection

for listeners

SCOPE & APPLICATION

——————-

Customers, Support. UNIX platforms.

RELATED DOCUMENTS

—————–

Oracle Net 8 Administrator’s Guide


How to password protect your listener

————————————-

To avoid inadvertent stopping of your listener or to prevent unauthorized

access to your listener, you may set up password protection for your listener.


1. Cleartext Password


- Add PASSWORDS_<your_listener_name> entry to your existing listener.ora file.

   e.g.

   PASSWORDS_listener1 = (p1,p2)

- Stop your listener, and restart it.


Now passwords are in effect.

To stop the listener, set password command must be used.


e.g.

lsnrctl

LSNRCTL> set current_listener listener1

LSNRCTL> set password p1

LSNRCTL> stop



2. Encrypted Password


- Comment out PASSWORD_ line if cleartext password is set.

- Restart listener.

- Run lsnrctl


LSNRCTL> set current_listener <your_listener_name>

LSNRCTL> set save_config_on_stop on

LSNRCTL> change_password

Old password: <enter>

New password: <enter_your_password>

Reenter new password: <reenter_your_password>


e.g:

LSNRCTL> change_password

Old password: <enter>

New password: e1

Reenter new password: e1


Just hit <enter> key for old password since no previuos password is set. 

The passwords you entered will not be echoed.


- Stop the listener


LSNRCTL> set password 

Password: <enter_your_password_here>

LSNRCTL> stop


e.g.

LSNRCTL> set password 

Password: e1

LSNRCTL> stop


- Check your listener.ora file



Entries similar to the following should have been added to your listener.ora 

automatically.


SAVE_CONFIG_ON_STOP_listener1 = ON

PASSWORDS_listener1 = 2D6C48144CF753AC



Sample Files:

————-

listener.ora


#

# (1) listener.ora

#

LOG_DIRECTORY_LISTENER1 = /tmp/log

LOG_FILE_LISTENER1 = listener.log


TRACE_DIRECTORY_LISTENER1 = /tmp/log

TRACE_FILE_LISTENER1 = listener.trc

TRACE_LEVEL_LISTENER1 = ADMIN


LISTENER1 =

  (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 12345))

  )

#passwords_listener1=(p1,p2)


#—-ADDED BY TNSLSNR 23-DEC-99 14:57:24—

SAVE_CONFIG_ON_STOP_listener1 = ON

PASSWORDS_listener1 = 2D6C48144CF753AC

#——————————————


sqlnet.ora


#

# (2) sqlnet.ora

#

NAMES.DEFAULT_DOMAIN = your_domain

NAMES.DIRECTORY_PATH = (TNSNAMES)


LOG_DIRECTORY_SERVER = /tmp/log

LOG_FILE_SERVER = server.log


TRACE_DIRECTORY_SERVER = /tmp/log

TRACE_FILE_SERVER = server 

TRACE_LEVEL_SERVER = ADMIN

#

#eof

Popularity: 29% [?]

类别:Oracle