在手工创建数据库到最后运行建库脚本报了这样的错:ORA-01504:数据库名称与参数db_name
database name ‘prod’ does not match parameter db_name ‘orcl’
解决方法:
1.先看你的bash_profile里面的ORACLE_SID是不是改成数据库名称
步骤:先退出sql回到oracle用户目录(退出直接输入exit)
(1)vi .bash_profile
注意看ORACLE_SID=你自己建的数据库名称,我数据库名称为prod,所以我就写ORACLE_SID=prod
如果没有这行export ORACLE_SID=你自己建的数据库名称,那么就在这里面加进去,先i,加入这行语句,然后按esc键,最后再输入:wq,就可以退出保存了
(2)如果你更改了.bash_profile里面的内容,就执行则条语句:source .bash_profile
(3)然后再去看initprod.ora里面的内容有没有改,即vi initprod.ora
看db_name有没有改成你命名的数据库名称,我的db_name=‘prod’,跟我的ORACLE_SID的名称一样
2.(1)cd /home/oracle,然后ls查看有没有initprod.ora文件(有的话再进行下面步骤)
(2)cd /u01/app/oracle/product/12.2.0.1/dbhome_1/dbs
(3) mv /home/oracle/initprod.ora initprod.ora
(这个步骤的目的是把家目录下的文件移动到当前目录下来)
然后在当前目录下ls查看initprod.ora移动过来没有
再输入:cat initpord.ora(查看移过来的文件是不是一样的)
以上没问题就试一下:
1.sqlplus / as sysdba
2.startup nomount
3.运行建库脚本
**如果以上你都做了但运行建库脚本还是报ORA_01504的错,那就是权限问题,解决方法:
**
1.cd /u01/app/oracle/product/12.2.0.1/dbhome_1/dbs
2.ll
查看当前权限
这里的用户都是oracle :oinstall,没有问题
(如果这里的用户显示的是root,则用该条语句:chown -R oracle:oinstall dbs)
3.cd O R A C L E B A S E / a d m i n / ORACLE_BASE/admin/ ORACLEBASE/admin/ORACLE_SID(这里我不知道为什么放上网的命令变成这样,你们看我下面的截图吧,里面有这条命令)
4.ll
看!!!原来是我这里的用户权限都是root,看来是这里出问题
5.su - root(先切换成root用户)
5.cd /u01/app/oracle/admin
6.ll
再看!!!原来我的prod的用户权限都是root,那我得换成oracle oinstall
7.chown -R oracle:oinstall prod
8.ll
如图所示,我已经把用户权限给改成oracle oinstall
9.cd prod
10.ll
这里的用户权限也改了,很好
10.su - oracle(切换成oracle用户)
11.sqlplus / as sysdba
12.startup nomount
13.运行建库脚本
这时候应该已经成功了
如果再再不成功,以我失败多次的经验,我的解决方法是:
1.cd /u01/app/oracle
2.ls
发现我没有fast_recovery_area文件
3.mkdir fast_recovery_area
4.sqlplus / a s sysdba
5.startup nomount
6.运行建库脚本
如果各位小伙伴还是有问题,可以在讨论区问我,鄙人会尽力帮你们解决的。