java.sql.SQLException: ORA-28000: 帐户已被锁定
然后按照以前的办法找到了解锁的方法,想到可能是某个同事登录失败次数过多。因为oracle
默认的策略是oracle11g中默认在default概要文件中设置了
“FAILED_LOGIN_ATTEMPTS=10次”,当输入密码错误次数达到设置值将导致此,该用户会自动锁住。
解决方法
[oracle@developserver ~]$ sqlplus / as sysdba
SQL>select * from dba_profiles where
RESOURCE_NAME='FAILED_LOGIN_ATTEMPTS';
SQL> ALTER USER 用户名 ACCOUNT UNLOCK;
SQL>alter profile default limit failed_login_attempts
unlimited;--不限制连接数
SQL> alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 1000;
--设定用户连接失败数超过1000次之后自动锁住
可以查看profiles的一些其他内容
SQL>select * from dba_profiles where
RESOURCE_NAME='FAILED_LOGIN_ATTEMPTS';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------
--------------------------------
-------- --------
MONITORING_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED
可是开发人员的电脑上,还是报被锁了
后面刚好看到小黄在学jdbc-oracle。然后就实验了一下连接开发人员的账户。发现也可以。
突然想到他们的实例名不一样,会不会是我这边修改的策略不影响到另外个实例。
想到一个定义:oracle实例是表空间的集合。实例是老大
然后实验登录用sqlplus登录到不同的实例中修改。
[oracle@developserver ~]$ sqlplus / as sysdba@另外一个实例名
然后执行上面的步骤,就可以了。如果用另外一个实例名登录不成功有可能是tnsname.ora文件的设置的问题,可以如下添加
tnsname.ora增加:
另外一个实例名=
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =
127.0.0.1)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME =另外一个实例名) )
)
经验:操作之前一定要分清楚操作的是那个实例,记住每个实例都是独立的,不影响到别的实例
=============================
1.
Sql代码
1.select count(*) from
v$process select count(*) from v$process --当前的数据库连接数
2.
Sql代码
1.select value from v$parameter where name =
'processes' select value from v$parameter where name =
'processes'--数据库允许的最大连接数
3.
Sql代码
1.alter system set processes = 300 scope =
spfile; alter system set processes = 300 scope = spfile;--修改最大连接数:
4.
Sql代码
1.shutdown
immediate; 2.startup; shutdown immediate;
startup;--重启数据库
5.
Sql代码
1.SELECT osuser, a.username,cpu_time/executions/1000000||'s',
b.sql_text,machine 2.from v$session a, v$sqlarea
b 3.where a.sql_address =b.address order by cpu_time/executions
desc; SELECT osuser, a.username,cpu_time/executions/1000000||'s',
b.sql_text,machine
from v$session a, v$sqlarea b
where a.sql_address =b.address order by cpu_time/executions
desc;
--查看当前有哪些用户正在使用数据
6.
Sql代码
1.select count(*) from
v$session select count(*) from
v$session --当前的session连接数
7.
Sql代码
1.select count(*) from v$session where
status='ACTIVE' select count(*) from v$session where status='ACTIVE' --并发连接数
8.
Sql代码
1.show parameter
processes show parameter
processes --最大连接
9.
Sql代码
1.alter system set processes = value scope =
spfile;