ora 01031 与 fstab 错误

本文介绍了如何解决Oracle数据库登录时出现的ORA-01031错误,通过调整用户组设置来修复。同时,还讨论了在删除Linux系统分区后未更新fstab文件导致的启动问题,并提供了详细的解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 今天有同事遇到 ora 01031错误
登陆时以sys 登陆:
sqlplus / as sysdba

首先检查sqlnet.ora没有问题,再次检查用户组;oracle用户所在的组为oracle;没有dba组,添加dba组,并修改oracle用户;再次登陆,错误解决;

2 linux 系统中的一个分区删除后,没有修改fstab,导致系统启动报错;
   在启动时,输入root密码,进入维护状态;
   然后 mount -o remount,rw /
   重新 修改/etc/fstab
   再次重启系统正常启动;

这个两个错误基本都是不细心造成的,细心一点即可避免;



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25656398/viewspace-704496/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25656398/viewspace-704496/

<think>我们被要求解决在Oracle12c创建表时遇到的ORA-00845错误。根据错误代码,我们首先需要了解这个错误的具体含义。经过查阅,ORA-00845错误通常Oracle的临时空间设置有关,特别是/dev/shm(共享内存文件系统)的挂载有关。在Linux/Unix系统中,Oracle使用/dev/shm来存储临时文件,如果/dev/shm的大小设置不足,则可能引发此错误。根据Oracle文档:ORA-00845:MEMORY_TARGETnotsupportedonthissystem这个错误通常是因为MEMORY_TARGET参数设置过大,超过了/dev/shm的大小。或者,如果系统没有挂载/dev/shm,也会出现此错误。解决方案通常涉及以下步骤:1.检查/dev/shm的挂载情况及其大小。2.调整/dev/shm的大小,使其至少等于MEMORY_TARGET(如果设置了)或MEMORY_MAX_TARGET的值。3.或者,如果不想调整/dev/shm的大小,可以修改Oracle的初始化参数,不使用MEMORY_TARGET,而是分别设置SGA_TARGET和PGA_AGGREGATE_TARGET。具体步骤:步骤1:检查/dev/shm的大小在操作系统中执行:df-h/dev/shm查看其大小是否满足Oracle的要求(即大于或等于MEMORY_TARGET的值)。步骤2:如果大小不足,需要重新挂载/dev/shm(临时生效):sudoumount/dev/shmsudomount-ttmpfsshmfs-osize=<新的大小>/dev/shm例如:sudomount-ttmpfsshmfs-osize=2G/dev/shm但请注意,这种方法在重启后会失效。要永久生效,需要修改/etc/fstab文件:打开/etc/fstab,找到关于/dev/shm的行(可能没有),如果没有则添加一行:none/dev/shmtmpfsdefaults,size=<新的大小>00例如:none/dev/shmtmpfsdefaults,size=2G00然后保存,并执行:sudomount-oremount/dev/shm步骤3:或者,修改Oracle的参数如果不想调整共享内存的大小,可以修改MEMORY_TARGET参数为0,并分别设置SGA和PGA。连接到数据库(以sysdba身份):sqlplus/assysdba然后执行:ALTERSYSTEMSETMEMORY_TARGET=0SCOPE=SPFILE;ALTERSYSTEMSETSGA_TARGET=<适当的SGA大小>SCOPE=SPFILE;ALTERSYSTEMSETPGA_AGGREGATE_TARGET=<适当的PGA大小>SCOPE=SPFILE;然后重启数据库:SHUTDOWNIMMEDIATE;STARTUP;步骤4:如果之前没有设置MEMORY_TARGET,则可能是数据库在启动时自动设置的MEMORY_TARGET太大,超过了/dev/shm的大小。我们可以检查初始化参数:SHOWPARAMETERMEMORY_TARGETSHOWPARAMETERMEMORY_MAX_TARGET如果它们的值大于/dev/shm的大小,则需要将其设置为0或者一个小于/dev/shm大小的值。注意:在修改参数之前,需要确保数据库在重启后能够正常启动。在修改SPFILE之前,最好备份一下。总结:ORA-00845错误通常是由于操作系统共享内存文件系统(/dev/shm)的大小不足造成的。我们可以通过调整共享内存的大小或者调整Oracle内存参数来解决。注意:不同的环境可能有所不同,请根据实际情况操作。如果以上步骤仍然无法解决,请检查Oracle的官方文档或联系Oracle支持。§§相关问题§§1.Oracle12c中如何调整共享内存的大小?2.如何永久修改/dev/shm的大小?3.Oracle数据库中MEMORY_TARGET参数的作用是什么?4.如何分别设置SGA_TARGET和PGA_AGGREGATE_TARGET?5.在Oracle中如何查看当前的内存参数设置?</think> ### Oracle 12c 创建表 ORA-00845 错误解决方案 ORA-00845 错误通常 Oracle 内存管理和操作系统共享内存配置相关。以下是系统性的解决方案: #### 📌 核心原因 当 `MEMORY_TARGET`/`MEMORY_MAX_TARGET` 参数值大于 Linux 系统 `/dev/shm` 的大小时,创建表操作可能触发 ORA-00845 错误,因为 Oracle 使用共享内存文件系统存储临时数据[^4]。 #### ✅ 解决方案步骤 1. **检查共享内存状态** 在 Linux 终端执行: ```bash df -h /dev/shm ``` 查看 `Size` 列是否 ≥ MEMORY_TARGET 的值(单位需一致)。 2. **临时调整共享内存大小** 挂载新大小的共享内存(重启失效): ```bash sudo umount /dev/shm sudo mount -t tmpfs shmfs -o size=4G /dev/shm # 示例调整为4G ``` 3. **永久修改共享内存配置** 编辑 `/etc/fstab` 文件: ```bash sudo vi /etc/fstab ``` 添加/修改行(以下为 4G 示例): ```conf none /dev/shm tmpfs defaults,size=4G 0 0 ``` 重载配置: ```bash sudo mount -o remount /dev/shm ``` 4. **调整 Oracle 内存参数** 通过 SQL*Plus 操作: ```sql ALTER SYSTEM SET MEMORY_TARGET=3G SCOPE=SPFILE; -- 确保≤/dev/shm大小 ALTER SYSTEM SET MEMORY_MAX_TARGET=3G SCOPE=SPFILE; SHUTDOWN IMMEDIATE; STARTUP; ``` 5. **完全禁用 AMM(备选)** 若问题持续,改用 ASMM: ```sql ALTER SYSTEM SET MEMORY_TARGET=0 SCOPE=SPFILE; ALTER SYSTEM SET SGA_TARGET=2G SCOPE=SPFILE; ALTER SYSTEM SET PGA_AGGREGATE_TARGET=1G SCOPE=SPFILE; SHUTDOWN IMMEDIATE; STARTUP; ``` #### ⚠️ 验证关键点 1. 执行命令确认调整生效: ```sql SHOW PARAMETER MEMORY_TARGET; SHOW PARAMETER sga_target; ``` 2. 检查 `/dev/shm` 挂载状态: ```bash mount | grep shm ``` > 📝 **注意**:调整后若仍有问题,检查 alert log (`$ORACLE_BASE/diag/rdbms/<DB_NAME>/<INSTANCE>/trace/alert_*.log`) 获取具体错误细节[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值