Oracle 12c无法关闭归档日志及sqlplus连接报错求助
解决Oracle 12c的两个问题:ORA-12560错误与归档模式切换
一、搞定"ORA-12560: TNS:protocol adapter error"错误
这个报错核心原因是你的命令行环境没识别到要连接的Oracle实例,要么提前指定实例ID(SID),要么配置好环境变量就行,给你两种实用方案:
方案1:先设置ORACLE_SID环境变量
Linux/Unix系统:在终端执行
export ORACLE_SID=你的实例名比如你的实例是ORCL,就输
export ORACLE_SID=ORCL。想永久生效的话,把这条命令加到~/.bash_profile或者~/.bashrc里就行。Windows系统:在CMD里执行
set ORACLE_SID=你的实例名永久生效可以去系统环境变量里添加ORACLE_SID变量。
不知道实例名怎么查?看这里:
- Linux:执行
ps -ef | grep pmon,输出里类似ora_pmon_ORCL的部分,ORCL就是SID。 - Windows:打开服务(services.msc),找名字是
OracleServiceXXX的服务,XXX就是你的SID。
- Linux:执行
方案2:直接在sqlplus命令里指定实例
不用配置环境变量,直接用带实例的连接命令:
sqlplus / as sysdba @你的实例名
或者先进入无日志模式再连接:
sqlplus /nolog CONNECT / AS SYSDBA
(如果没提前设SID,第二种方式可能还是报错,更稳妥的是方案1)
二、成功切换到NOARCHIVELOG模式的正确步骤
切换归档模式必须让数据库处于MOUNT状态,而且要确保没有其他会话连接,否则肯定失败,按下面的步骤一步步来:
- 先关闭数据库(一定要在业务停服或维护窗口操作!):
SHUTDOWN IMMEDIATE; - 启动数据库到MOUNT状态(只加载控制文件,不打开数据库):
STARTUP MOUNT; - 执行切换模式命令:
ALTER DATABASE NOARCHIVELOG; - 最后打开数据库:
ALTER DATABASE OPEN; - 验证切换结果:
输出里显示ARCHIVE LOG LIST;Database log mode: No Archive Mode就说明成功了。
⚠️ 重要提醒:切换到NOARCHIVELOG模式后,数据库只能做冷备份(关闭数据库后备份数据文件、控制文件等),如果出故障只能恢复到最近一次冷备份的状态,会丢失备份后的所有数据。如果你的业务对数据完整性要求高,一定要谨慎切换!另外你之前手动删除了归档日志,下次如果再开启归档模式,记得用RMAN清理归档,别手动删,避免出现归档日志不连续的问题。
内容的提问来源于stack exchange,提问作者Andy




