You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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。

方案2:直接在sqlplus命令里指定实例

不用配置环境变量,直接用带实例的连接命令:

sqlplus / as sysdba @你的实例名

或者先进入无日志模式再连接:

sqlplus /nolog
CONNECT / AS SYSDBA

(如果没提前设SID,第二种方式可能还是报错,更稳妥的是方案1)

二、成功切换到NOARCHIVELOG模式的正确步骤

切换归档模式必须让数据库处于MOUNT状态,而且要确保没有其他会话连接,否则肯定失败,按下面的步骤一步步来:

  1. 先关闭数据库(一定要在业务停服或维护窗口操作!):
    SHUTDOWN IMMEDIATE;
    
  2. 启动数据库到MOUNT状态(只加载控制文件,不打开数据库):
    STARTUP MOUNT;
    
  3. 执行切换模式命令:
    ALTER DATABASE NOARCHIVELOG;
    
  4. 最后打开数据库:
    ALTER DATABASE OPEN;
    
  5. 验证切换结果:
    ARCHIVE LOG LIST;
    
    输出里显示Database log mode: No Archive Mode就说明成功了。

⚠️ 重要提醒:切换到NOARCHIVELOG模式后,数据库只能做冷备份(关闭数据库后备份数据文件、控制文件等),如果出故障只能恢复到最近一次冷备份的状态,会丢失备份后的所有数据。如果你的业务对数据完整性要求高,一定要谨慎切换!另外你之前手动删除了归档日志,下次如果再开启归档模式,记得用RMAN清理归档,别手动删,避免出现归档日志不连续的问题。

内容的提问来源于stack exchange,提问作者Andy

火山引擎 最新活动