oracle问题
<h1>问题1:ORA-00600: internal error code, arguments: [4194],</h1>
<p><strong>问题描述:oracle的undo表空间损坏导致</strong>
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/242cb66af42c378d1aff25ed5f58d75f" alt="" />
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/c70174341a1efb4b2cf7b580df9ed981" alt="" />
<strong>解决方案:</strong></p>
<pre><code class="language-java">1.先根据日志找到file 3代表的是哪个数据文件
select * from dba_data_files where file_id=3;
查出是undo表空间文件
2.为防止修改oracle参数失败导致数据库无法启动,备份spfile文件
create pfile from spfile;
3.设置undo表空间的管理方式为:手工
alter system set undo_management = manual scope=spfile;
4.缺省undotbs 为空
alter system set undo_tablespace='' scope=spfile;
5.创建新的undo表空间数据文件undotbs2(名称自己命名)
create undo tablespace undotbs2 datafile '/URP/oracle/oradata/urpjw/undotbs02.dbf' size 2048M;
注意修改表空间数据文件路径
6.设置undo表空间的管理方式为:自动
alter system set undo_management =auto scope=spfile;
7.缺省undotbs 为新建的undo表空间,
alter system set undo_tablespace = undotbs2 scope=spfile;
9.重启
shutdown immediate;
startup;</code></pre>
<h1>问题2:ORA-00845:MEMORY_TARGET not supported on this system</h1>
<p><strong>问题描述:</strong>
oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,
这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小,就会报错。
<strong>解决方案:</strong>
1.初始化参数MEMORY_TARGET或MEMORY_MAX_TARGET不能大于共享内存(/dev/shm),为了解决这个问题,可以增大/dev/shm
mount -t tmpfs shmfs -o size=16384M /dev/shm
但如果之前已经mount过了,则执行remount
mount -o remount,size=16384M /dev/shm
2.为了确保操作系统重启之后能生效,需要修改/etc/fstab文件
tmpfs /dev/shm tmpfs defaults,size=16384M 0 0
3.如果/dev/shm没有挂载也会报上面的错,所认需要确保已经挂载,执行目录查看:
df -h
<img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/8040c1028e115b3d68e0a3d455c1139f" alt="" />
<strong>注意事项:</strong>
调整/dev/shm大小的时候,须ls /dev/shm,看里面是否有oracle的文件。 如果/dev/shm中无oracle文件,可以重新mount此空间,不会对正运行实例造成任何影响; 如果/dev/shm里面有oracle文件,说明另外一个oracle实例正在使用此空间,若强行重新mount,目前暂不知道会对正运行实例造成什么影响,请谨慎操作</p>
<h1>问题3:ORA-28000 账号被锁定</h1>
<p><strong>问题描述:</strong>
当使用sqlplus进行登录时报错:ORA-28000 账号被锁定
<strong>问题原因:</strong>
由于oracle 11g 在默认在default概要文件中设置了密码最大错误次数为10,“FAILED_LOGIN_ATTEMPTS=10”,密码错误的次数超过10次,账号就会被锁定
<strong>解决方案:</strong></p>
<ul>
<li>
<p>远程数据库服务器:
<code>su - oracle</code></p>
</li>
<li>
<p>使用sqlplus 命令:
<code>sqlplus / as sysdba;</code></p>
</li>
<li>
<p>查看具体的被锁时间:
<code>select username,lock_date from dba_users where username='用户名';</code></p>
</li>
<li>
<p>解锁:
<code>alter user 用户名 account unlock;</code></p>
</li>
<li>
<p>修改密码:
<code>alter user 用户名 identified by 新密码;</code></p>
</li>
<li>将10次(默认)改为不受限制,改动后立即生效
<code>alter profile default limit failed_login_attempts unlimited;</code></li>
</ul>