oracle--常见问题处理
oracle是我们生产环境使用最频繁的数据库之一,因此将之前日常使用的相关操作记录下,备忘和方便使用。
本章内容主要是为了帮助快速解决相关oracle的报错问题,其实这些信息在搜索引擎中都可以找到,只不过以下这些问题经常发生,而且以下列出的解决方法是经过检验的,免去了在搜索引擎中筛选和验证解决方案的过程。
1、ORA-01031
无法使用 conn as sysdba连接
1)ora-dba权限是否分配系统用户
我的电脑--》管理--》本地用户和组:查看用户是否存在于组的ora_dba当中,如下图:
将当前用户添加上去
2)SQLNET.AUTHENTICATION_SERVICES = (NTS)
查看oracle_home的sqlnet.ora文件
SQLNET.AUTHENTICATION_SERVICES = (NTS)这句话添加上去
2、ORA-00604
此问题是system表空间不足导致的,出现这样问题的原因有两个,一个是system的空间不足,另一个是磁盘空间不足。
其实一般情况下system除了系统相关权限、用户外,最大可能占用空间的就是审计日志,但是该表空间一般还是够用的,在实际项目中出现system表空间不足情况的原因应该是存在大量业务数据在创建表、用户的时候没有定义表空间,而使用了系统表空间。
首先应该新增对应表空间物理文件(详见第一部分表空间使用情况管理及扩展)
针对审计日志或业务数据占用系统表空间的情况,需要迁移表空间。
-- 通过以下脚本确认占用系统表空间的情况
SELECT * FROM (SELECT SEGMENT_NAME, SUM(BYTES) 1024 1024 MB FROM DBA_SEGMENTS WHERE TABLESPACE_NAME = 'SYSTEM' GROUP BY SEGMENT_NAME ORDER BY 2 DESC) WHERE ROWNUM < 10;
--迁移
alter table aud$ move tablespace aud_space;
3、ORA-12541
TNS:无监听程序问题
详见附件ora-12541.docx
4、ORA-12514
TNS: 监听程序当前无法识别连接描述符中请求的服务
打开 "/network/admin/listener.ora":
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
添加如下内容到第七行
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
修改后的内容如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
)
重启监听器。
lsnrctl stop / 关闭
lsnrctl start // 启动
5、ora-00942
表或视图不存在。
如果看到表确实存在,但是用表名查询提示以上信息,应该是表名带着双引号。
oracle表名、字段尽量使用大写。




