开门见山,直接说明问题吧
1.安装好后,无法启动数据库
报错 could not open parameter file ‘/u01/app/oracle/product/11.1.0/db_1/dbs/initORCL.ora’
搜索网页发现是dbs目录下没有生成 initORCL.ora文件
需要把/u01/app/oracle/admin/tyvss/pfile/目录下的init.ora.2212019172159文件拷贝到上述目录下
#cp -p /u01/app/oracle/admin/tyvss/pfile/init.ora.2212019172159 /u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora
再次启动数据库成功,但是有新的问题,请看2步骤
2.启动后数据库报错MEMORY_TARGET not supported on this system
继续百度,搜到
由于memory_max_target和memory_target不匹配导致的
查找资料后发现在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小,就会报错。
查看数据库的MEMORY_TARGET值,MEMORY_TARGET=25856M,约25GB
SQL> show parameters target ;
查看系统的 /dev/shm,当前仅16GB
#df -h
重新挂载
可以增大/dev/shm
mount -t tmpfs shmfs -o size=32G /dev/shm
但如果之前已经mount过了,则执行remount
mount -o remount,size=32G /dev/shm
启动数据库试了还是同样的报错,再次查找,发现有网友提到 MEMORY_TARGET大于等于3/4*(/dev/shm),25*3/4=33G
保守起见,直接让重新挂载64GB
mount -o remount,size=64G /dev/shm
重启数据库,成功
但是还是有其他错误,请看步骤3
3.启动数据库虽然success,但是末尾 cannot mount database in EXCLUSIVE mode (数据库没有mount上)
搜索网页发现,该情况下有三种可能
(1) Oracle的共享内存段或信号量没有被释放;
(2) Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;
(3) 用于锁内存的文件lk和sgadef.dbf文件没有被删除。
当时出现直接关机的情况,所以极有可能是锁内存的文件没有被释放
进入数据库安装目录解除占用
[root@vss02 pfile]#cd /u01/app/oracle/product/11.2.0/db_1/dbs/
删除lkTYVSS文件
再次启动数据库,突发另外一个错误 ORA-00205: error in identifying control file, check alert log for more info
继续解决,
关闭数据库 shu immediate
#ps -ef |grep ora_ |grep tyvss
根据网友思路,有1个ora_dbw0进程导致该错误,我的机器却6个ora_dbw进程,
#kill -9 1550
关闭一个后其他ora_dbw进程也死了
启动数据库正常
终于正常了。
4.使用数据库连接工具Navicat连接数据库
又双叒报错了The listener supports no services
启动监听服务 lsnrctl start
提示The listener supports no services
因同事安装时不知道数据实例创建了什么,
先查找数据库实例名称
修改 /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora文件
添加标红文件
再次启动数据库,终于成功了
6.一系列创建创建数据库和表之后发现
中文乱码
全局疯狂????
想到同事安装数据库时,选用的是英文字符集,需要改成中文字符集
操作如下
首先查看服务端字符集
select * from v$nls_parameters where parameter = ‘NLS_CHARACTERSET’
NLS_CHARACTERSET WE8MSWIN1252
然后用sys用户进行修改
sqlplus
conn /as sysdba
输入口令:
shutdown immediate;
startup mount;
ALTER SESSION SET SQL_TRACE=TRUE;
ALTER> SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
alter database character set ZHS16GBK;
ORA-12712: new character set must be a superset of old character set
RROR at line 1:
结果报错,提示新字符集必须是老字符集的超集。
于是强制转换
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
shutdown immediate;
STARTUP;
解决字符集问题,重新查看表内容
有趣的是之前表里的“???”全部变成“靠靠靠”,当时差点笑了出来
只能重新创建数据可和表了。
之后就没有出现其他问题了。
全程折腾3个多小时。感谢强大的百度和bing,以及各大博客网站。