0-100有多少个9?

0-100有多少个9?

20个

 

  • 我的代码

#include <cstdio.h>
int get_hund()
{
    int total=0;
    int i;
    for(i=1;i<100;i++)
    {
        if(i%10==9)
        {
            total++;
        }
        if(i/10==9)
        {
            total++;
        }
    }
    return total;
}

int main()
{
    int get_hund();
    printf("%d\n",get_hund());
    return 0;
}

 

  • 涛哥代码

#include <cstdio.h>
int get_one(int n)
{
    int total=0;
    while(n>0)
    {
        if(n%10==9)
        {
            total++;
        }
        n=n/10;
    }
    return total;
}

int main()
{
    int total=0;
    int i;
    for(i=0;i<100;i++)
    {
        total+=get_one(i);
    }

    printf("%d\n",total);
    return 0;
}

 

在Oracle Database 12.2.0.1环境中,若用户尝试启动数据库实例时遇到`ORA-01081: cannot start already-running ORACLE instance - shut it down first`错误,并随后尝试挂载数据库时又出现`ORA-63995: unknown error`与`ORA-00202: control file: &#39;%s&#39;`错误,则说明数据库实例状态存在冲突或控制文件损坏。以下是对此类问题的诊断与解决方法。 ### 问题分析 #### `ORA-01081` 错误 此错误通常表示数据库实例已经运行,而用户试图再次启动该实例。这可能是因为: - 实例未正确关闭,导致残留进程仍在运行; - 操作系统级别的Oracle进程(如`pmon`、`smon`等)未被清除; - 共享内存段或信号量仍被占用。 #### `ORA-63995` 和 `ORA-00202` 错误 这两个错误通常与控制文件相关。`ORA-00202`明确指出控制文件存在问题,可能的原因包括: - 控制文件路径配置错误; - 控制文件损坏或丢失; - 多路复用控制文件中部分文件不可用; - 文件权限或属主设置不正确。 ### 解决方案 #### 1. 清理已存在的实例进程 首先确认当前是否有Oracle进程正在运行: ```bash ps -ef | grep oracle ``` 查找类似以下的进程: ``` oracle 1234 1 0 10:00 ? 00:00:00 ora_pmon_orcl oracle 1235 1 0 10:00 ? 00:00:00 ora_smon_orcl ``` 若存在此类进程,使用以下命令强制清理: ```bash kill -9 <pid> ``` 同时检查并删除共享内存段和信号量: ```bash ipcs -m | grep oracle ipcrm -m <shmid> ipcs -s | grep oracle ipcrm -s <semid> ``` #### 2. 验证控制文件路径与状态 检查参数文件(`spfile`或`pfile`)中的`CONTROL_FILES`参数是否指向正确的控制文件路径: ```sql SQL> show parameter control_files; ``` 确保列出的所有控制文件都存在且可读写。若发现某个控制文件缺失或损坏,应从备份恢复或重建控制文件。 #### 3. 使用RMAN重建控制文件(如有备份) 如果控制文件确实损坏且无法修复,可以使用RMAN从备份中恢复: ```bash RMAN> restore controlfile from autobackup; ``` 或者手动创建新的控制文件: ```sql CREATE CONTROLFILE REUSE DATABASE "orcl" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 (&#39;/u01/oradata/orcl/redo01.log&#39;) SIZE 50M, GROUP 2 (&#39;/u01/oradata/orcl/redo02.log&#39;) SIZE 50M, GROUP 3 (&#39;/u01/oradata/orcl/redo03.log&#39;) SIZE 50M DATAFILE &#39;/u01/oradata/orcl/system01.dbf&#39;, &#39;/u01/oradata/orcl/sysaux01.dbf&#39;, &#39;/u01/oradata/orcl/undotbs01.dbf&#39;, &#39;/u01/oradata/orcl/users01.dbf&#39; CHARACTER SET AL32UTF8; ``` #### 4. 启动并挂载数据库 完成上述操作后,重新尝试启动数据库: ```sql SQL> startup nomount; SQL> alter database mount; SQL> alter database open; ``` ### 总结 当遇到`ORA-01081`与`ORA-63995`、`ORA-00202`错误时,需重点排查Oracle进程残留、共享内存与信号量残留以及控制文件状态。通过清理进程、验证控制文件路径及必要时重建控制文件,可有效解决此类问题[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值