oracle数据库常见问题处理总结1(oracle数据库精讲与疑难解析)
mhr18 2024-09-23 09:42 17 浏览 0 评论
1、数据库密码被锁定
# su -l oracle
$ source /home/oracle/.bash_profile
$ sqlplus / as sysdba
SQL> alter user 用户名 account unlock;
SQL> alter user 用户名 identified by 密码;
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
2、删除oracle账户
# su -l oracle
$ sqlplus /nolog
SQL> connect / as sysdba;
--删除用户
SQL> drop user 用户名 cascade;
--删除表空间
SQL> drop tablespace 表空间名称 including contents and datafiles cascade constraint;
3、解琐
SQL> select username,sid,serial# from v$session where username='SDE';
SQL> alter system kill session'532,4562';
4、修改用户名与密码
SQL> alter user 用户名 rename to 新的用户名;
SQL> alter user 用户名 identified by 新密码;
sqlplus /nolog;
connect / as sysdba
alter user sys identified by newpassword;
alter user system identified by newpassword;
5、表空间不足与修改表空间为自动增长
SQL> alter database datafile '/home/oracle/oradata/orcltar_index.dbf'autoextend on;
SQL>alter database datafile '/home/oracle/oradata/orcltar.dbf'autoextend on;
SQL>alter database datafile '/home/oracle/oradata/orcltar.dbf' size 64m autoextend on next 64m maxsize unlimited;
增加表空间
SQL>ALTER TABLESPACE orcl_data ADD DATAFILE '/home/oracle/oradata/orcl_data01.dfg' size 64m autoextend on next 64m maxsize unlimited;
6、local_listener没有值
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
SQL>show parameter instance_name;
SQL> echo $ORACLE_SID
SQL> echo $ORACLE_HOME
SQL> show parameter local listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
log_archive_local_first boolean TRUE
parallel_force_local boolean FALSE
原因:报错原因是local_listener没有值
解决:设置local_listener参数
SQL> alter system set local_listener='(ADDRESS =(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)(SID=orcl))';
SQL> alter system register;
7、执行impdp报错
ORA-39002: 操作无效
ORA-39070: 无法打开日志文件。
ORA-29283: 文件操作无效
ORA-06512: 在 “SYS.UTL_FILE”, line 488
ORA-29283: 文件操作无效等类似的错误。
[oracle@localhost oracle]$ mkdir /u01/oracle/backup
SQL> create or replace directory dir_dump as '/u01/oracle/backup';
SQL> grant read,write on directory dir_dump to system; #授权给要使用expdp的用户
SQL> select * from dba_directories; #建立的directory 都是隶属于sys用户的
备注:使用expdp导出的11g的数据可以使用 10g的impdp导入到10g的数据库里面,需要在两个命令里面都添加一个version =10.2.0.1.0 指定相应的版本号
$ impdp USERID='SYS/cuc2009@cucf as sysdba' schemas=sybj directory=DATA_PUMP_DIR dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0
$ impdp eii/eii123@eii DUMPFILE=orcl.dmp DIRECTORY=dir_dump remap_schema=orcl:eii remap_tablespace=orcl_data:eii_data
8、执行netca报 file too short
UnsatisfiedLinkError exception loading native library: njni12
java.lang.UnsatisfiedLinkError: /u01/oracle/product/12c/dbhome_1/lib/libnjni12.so: /u01/oracle/product/12c/dbhome_1/lib/libclntsh.so.12.1: file too short
$ ldd `which sysresv` 检查which sysresv依赖关系
linux-gate.so.1 => (0x00ecf000)
libclntsh.so.12.1 => not found
libnnz10.so => not found
libdl.so.2 => /lib/libdl.so.2 (0x0037c000)
把提示not found的拷贝到$ORACLE_HOME/lig目录下
$ cd $ORACLE_HOME/inventory/Scripts/ext/lib/
$ cp libclntsh.so.12.1 $ORACLE_HOME/lib/
重新ldconfig
# ldconfig
9、glicb缺失
# cd /media/cdrom/RedHat/RPMS
# rpm -Uvh glibc-*.i686.rpm glibc-devel-*.i386.rpm
或安装依赖包yum install -y glibc glibc-devel
$ $ORACLE_HOME/bin/relink all
10、统计报错 ora-39126 ora-06502 LPX-00225
添加参数EXCLUDE=STATISTICS
$ impdp srmsfcs/srmsfcs2018@srmsfcs DUMPFILE=srmsf20181014.dmp DIRECTORY=dir_dump remap_schema=srmsf:srmsfcs remap_tablespace=srmsf_data:srmsfcs_data EXCLUDE=STATISTICS
sqlplus / as sysdba
SQL> exec dbms_stats.gather_schema_stats(ownname=>'用户',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');
11、ORA-01102 的解决办法
安装完oracle 数据库后启时,遇到ora-01102错误。
$ sqlplus "/as sysdba"
SQL> startup
ORACLE instance started.
Total System Global Area 1.7103E+10 bytes
Fixed Size 2243608 bytes
Variable Size 8455717864 bytes
Database Buffers 8623489024 bytes
Redo Buffers 21712896 bytes
ORA-01102: cannot mount database in EXCLUSIVE mode
了解ORA-1102 错误原因:
(1) 在ORACLE_HOME/dbs/存在 “sgadef.dbf” 文件或者lk 文件。这两个文件是用来用于锁内存的。
(2 )oracle的 pmon, smon, lgwr and dbwr等进程未正常关闭。
(3) 数据库关闭后,共享内存或者信号量依然被占用。
说明DATABASE 已经是MOUNT状态了,不用再次MOUNT.当 DATABASE 被UNMOUNT 后会被自动删除,如果DATABASE没有MOUNT,却依然存在这个问题,只有手工将其删除。
具体解决ORA-01102问题的步骤:
$ pwd
/apsarapangu/disk1/opt/oracle/products/11.2.0
$ cd dbs
$ ll lk*
-rw-r----- 1 oracle oinstall 24 Apr 15 15:43 lkORCL
#使用fuser -u lkORCL 查看使用 lkORCL 文件的进程和用户。-u 为进程号后圆括号中的本地进程提供登录名。
$ /sbin/fuser -u lkORCL
lkORCL: 21007(oracle) 21009(oracle) 21015(oracle) 21019(oracle) 21023(oracle) 21025(oracle) 21027(oracle) 21029(oracle) 21031(oracle) 21033(oracle) 21035(oracle) 21037(oracle) 21039(oracle) 21041(oracle)
#使用 fuser -k lkORCL 杀死这些正在访问lkORCL的进程 -k 杀死这些正在访问这些文件的进程。
$ /sbin/fuser -k lkORCL
lkORCL: 21007 21009 21015 21019 21023 21025 21027 21029 21031 21033 21035 21037 21039 21041
确认:相关进程全被终止。
$ /sbin/fuser -u lkORCL
重新启动:
$ sqlplus "/as sysdba"
SQL> startup
ORACLE instance started.
Total System Global Area 1.7103E+10 bytes
Fixed Size 2243608 bytes
Variable Size 8455717864 bytes
Database Buffers 8623489024 bytes
Redo Buffers 21712896 bytes
Database mounted.
Database opened.
12、ORA-39346: data loss in character set conversion for object PACKAGE_BODY
导出与导入时均设置全局字符集变量:
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
13、impdp实施数据导入时遭遇ORA-31631、ORA-39122报错:
SQL> grant imp_full_database to 用户名;
14、ORA-28547:连接服务器失败:
在listener.ora 文件中把(PROGRAM = extproc)删除# extproc是一个扩展的程序调用接口协议, 连接和调用外部的操作系统程序或进程用时会用到。
15、ora-12514 tns 监听程序当前无法识别:
修改listener.ora文件中的SID、host、key值
16、更新到同一库时,使用 table_exists_action=replace参数
impdp orcl/orclpwd@sid DUMPFILE=orcl158demo_201811051847.dmp schemas=orcl DIRECTORY=dir_dump EXCLUDE=STATISTICS table_exists_action=replace
17、ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file
‘/u01/oracle/product/11.2.0/dbhome_1/dbs/initsorcl.ora’
解决方法:
$ cd /u01/oracle/admin/srmhdl/pfile/
$ cp init.ora.1092018133743 /u01/oracle/product/11.2.0/dbhome_1/dbs/initsorcl.ora
$ sqlplus / as sysdba
SQL> create spfile from pfile;
SQL> exit
sqlplus / as sysdba
SQL> startup
ORACLE instance started.
Total System Global Area 1.7103E+10 bytes
Fixed Size 2243608 bytes
Variable Size 8455717864 bytes
Database Buffers 8623489024 bytes
Redo Buffers 21712896 bytes
Database mounted.
Database opened.
18、ORA-00821: Specified value of sga_target 512M is too small, needs to be at least 700M
SQL> create spfile from pfile;
SQL> exit
$ sqlplus / as sysdba
SQL> startup
ORACLE instance started.
Total System Global Area 1.7103E+10 bytes
Fixed Size 2243608 bytes
Variable Size 8455717864 bytes
Database Buffers 8623489024 bytes
Redo Buffers 21712896 bytes
Database mounted.
Database opened.
19、Fatal NI connect error 12170
解决思路:
(1)查看oracle的告警日志
巡检数据库alert log路径:
cd /u01/oracle/diag/rdbms/gongniu/gongniu/trace
(2)查看监听器日志路径
cat /u01/oracle/diag/tnslsnr/localhost/listener/trace/listener.log |grep 192.168.154.11 > /tmp/error.log
记一次该问题的处理方法:
(1),在sqlnet.ora 中末增加以下参数: (建议操作前先备份原文件)
SQLNET.INBOUND_CONNECT_TIMEOUT = 30
SQLNET.RECV_TIMEOUT = 30
SQLNET.SEND_TIMEOUT = 30
(2),在 listener.ora 末增加以下参数:
INBOUND_CONNECT_TIMEOUT_LISTENER = 30
(3),重读监听器配置文件:
lsnrctl reload
再查看alter log警报日志
二、告警日志文件大小过大处理:诊断追踪信息不再写入到告警日志文件中
(路径cd $ORACLE_HOME/network/admin)
(1). 在服务端的sqlnet.ora文件中增加一行
DIAG_ADR_ENABLED=OFF
(2). 在服务端的listener.ora中增加一行(其中listenername替换为你自己的监听器名称)
DIAG_ADR_ENABLED_<listenername>=OFF
(3). 使用lsnrctl命令使以上配置生效(业务不会中断,如果业务不是很紧张,最好使用lsnrctl restart确保参数生效)
lsnrctl reload;
20、 用pl/sql developer 调试存储过程报错
错误信息:debugging requires the debug connect session system privilege.
原因:用户权限不够,使用以下命令授予权限:
GRANT debug any procedure, debug connect session TO scott
相关推荐
- B站收藏视频失效?mybili 收藏夹备份神器完整部署指南
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:羊刀仙很多B站用户都有过类似经历:自己精心收藏的视频突然“消失”,点开一看不是“已被删除”,就是“因UP主设置不可见”。而B站并不会主动通知...
- 中间件推荐初始化配置
-
Redis推荐初始化配置bind0.0.0.0protected-modeyesport6379tcp-backlog511timeout300tcp-keepalive300...
- Redis中缓存穿透问题与解决方法
-
缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...
- 后端开发必看!Redis 哨兵机制如何保障系统高可用?
-
你是否曾在项目中遇到过Redis主服务器突然宕机,导致整个业务系统出现数据读取异常、响应延迟甚至服务中断的情况?面对这样的突发状况,作为互联网大厂的后端开发人员,如何快速恢复服务、保障系统的高可用...
- Redis合集-大Key处理建议
-
以下是Redis大Key问题的全流程解决方案,涵盖检测、处理、优化及预防策略,结合代码示例和最佳实践:一、大Key的定义与风险1.大Key判定标准数据类型大Key阈值风险场景S...
- 深入解析跳跃表:Redis里的"老六"数据结构,专治各种不服
-
大家好,我是你们的码农段子手,今天要给大家讲一个Redis世界里最会"跳科目三"的数据结构——跳跃表(SkipList)。这货表面上是个青铜,实际上是个王者,连红黑树见了都要喊声大哥。...
- Redis 中 AOF 持久化技术原理全解析,看完你就懂了!
-
你在使用Redis的过程中,有没有担心过数据丢失的问题?尤其是在服务器突然宕机、意外断电等情况发生时,那些还没来得及持久化的数据,是不是让你夜不能寐?别担心,Redis的AOF持久化技术就是...
- Redis合集-必备的几款运维工具
-
Redis在应用Redis时,经常会面临的运维工作,包括Redis的运行状态监控,数据迁移,主从集群、切片集群的部署和运维。接下来,从这三个方面,介绍一些工具。先来学习下监控Redis实时...
- 别再纠结线程池大小 + 线程数量了,没有固定公式的!
-
我们在百度上能很轻易地搜索到以下线程池设置大小的理论:在一台服务器上我们按照以下设置CPU密集型的程序-核心数+1I/O密集型的程序-核心数*2你不会真的按照这个理论来设置线程池的...
- 网络编程—IO多路复用详解
-
假如你想了解IO多路复用,那本文或许可以帮助你本文的最大目的就是想要把select、epoll在执行过程中干了什么叙述出来,所以具体的代码不会涉及,毕竟不同语言的接口有所区别。基础知识IO多路复用涉及...
- 5分钟学会C/C++多线程编程进程和线程
-
前言对线程有基本的理解简单的C++面向过程编程能力创造单个简单的线程。创造单个带参数的线程。如何等待线程结束。创造多个线程,并使用互斥量来防止资源抢占。会使用之后,直接跳到“汇总”,复制模板来用就行...
- 尽情阅读,技术进阶,详解mmap的原理
-
1.一句话概括mmapmmap的作用,在应用这一层,是让你把文件的某一段,当作内存一样来访问。将文件映射到物理内存,将进程虚拟空间映射到那块内存。这样,进程不仅能像访问内存一样读写文件,多个进程...
- C++11多线程知识点总结
-
一、多线程的基本概念1、进程与线程的区别和联系进程:进程是一个动态的过程,是一个活动的实体。简单来说,一个应用程序的运行就可以被看做是一个进程;线程:是运行中的实际的任务执行者。可以说,进程中包含了多...
- 微服务高可用的2个关键技巧,你一定用得上
-
概述上一篇文章讲了一个朋友公司使用SpringCloud架构遇到问题的一个真实案例,虽然不是什么大的技术问题,但如果对一些东西理解的不深刻,还真会犯一些错误。这篇文章我们来聊聊在微服务架构中,到底如...
- Java线程间如何共享与传递数据
-
1、背景在日常SpringBoot应用或者Java应用开发中,使用多线程编程有很多好处,比如可以同时处理多个任务,提高程序的并发性;可以充分利用计算机的多核处理器,使得程序能够更好地利用计算机的资源,...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)