Oracle重启失败

ORA-04031: unable to allocate 752 bytes of shared memory ("shared pool","unk

ORA-00821: Specified value of sga_target 512M is too small, needs to be at least 1240M

ORA-12514:TNS: 监听程序当前无法识别连接描述符中请求的服务

ORA-01034: ORACLE not availableORA-27101: shared memory realm does not existLinux-x86_64 Error: 2: No such file or directory进程 ID: 0会话 ID:0 序列号:0

1、引言

        部署环境:Red Hat Enterprise Linux Server release 6.8 (Santiago)

        oracle版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

2、问题分析

        数据库重启失败,各种报错。据了解,重启之前,有人通过plsql对数据库执行过一些优化命令,增大连接数,线程池等,重启直接报错。网上查询了很多教程解决一个问题又出现新的问题。最后确定是优化配置好像对默认的spfile文件进行了更改,但是配置优化可能不适用当前版本,当然这个说法可能不正确,只是我个人意见。

3、问题解决步骤        

3.1、将pfile原文件备份,并编辑当前pfile

切换到oracle用户,进入oracle安装路径的dbs路径,查看oracle安装路径。

spfileorcl.ora就是oracle默认启动配置文件,init.ora就是pfile文件。

#切换到 oracle 用户
[root@localhost ~]# su - oracle

#进入 oracle 的spfile 文件路径
[oracle@localhost ~]$  cd $ORACLE_HOME/dbs/

#查看全路径
[oracle@localhost dbs]$ pwd
/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs

#查看当前文件夹下面的文件
[oracle@localhost dbs]$ ll
total 40
-rw-r--r--. 1 oracle dba 1076 Jul 25 08:19 atest.ora
-rw-rw----. 1 oracle dba 1544 Oct 30  2022 hc_DBUA0.dat
-rw-rw----. 1 oracle dba 1544 Jul 25 21:36 hc_orcl.dat
-rw-r--r--. 1 oracle dba  191 Jul 25 09:03 init.ora
-rw-r-----. 1 oracle dba   24 Oct 30  2022 lkORCL
-rw-r-----. 1 oracle dba 1536 Oct 30  2022 orapworcl
-rw-r-----. 1 oracle dba 2560 Jul 25 21:38 spfileorcl.ora

 下一步,备份init.ora并编辑,11g可以参考如下配置:(修改路径和版本)

#备份原来的 pfile 文件
[oracle@localhost dbs]$ cp init.ora init.orabak

[oracle@localhost dbs]$ ll -h init*
-rw-r--r--. 1 oracle dba  191 Jul 25 09:03 init.ora
-rw-r--r--. 1 oracle dba 2.8K Jul 25 07:06 init.orabak

#编辑新的 pfile 文件,可以参考如下配置
[oracle@localhost dbs]$ vim init.ora

*.audit_file_dest='/home/oracle/app/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.1.0'
*.control_files='/home/oracle/app/oradata/orcl/control01.ctl','/home/oracle/app/oradata/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.diagnostic_dest='/home/oracle/app'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.open_cursors=300
*.processes=10000
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=10000
*.undo_tablespace='UNDOTBS1'
*.sga_target=2G
*.shared_pool_size=512M
*.pga_aggregate_target=256M

保存并退出。

3.2、自定义pfile文件启动oracle

使用以 "SYSDBA" 身份连接到 Oracle 数据库,自定义pfile文件启动oracle:并启动监听

#使用以 "SYSDBA" 身份连接到 Oracle 数据库
[oracle@localhost dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Tue Jul 25 23:00:50 2023
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to an idle instance.

#指定pfile文件启动
SQL> startup pfile='/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora';

ORACLE instance started.
Total System Global Area 2137886720 bytes
Fixed Size                  2215064 bytes
Variable Size            1409287016 bytes
Database Buffers          721420288 bytes
Redo Buffers                4964352 bytes
Database mounted.
Database opened.

#退出
SQL> exit;

[oracle@localhost dbs]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 25-JUL-2023 23:03:46
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Starting /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /home/oracle/app/diag/tnslsnr/localhost/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                25-JUL-2023 23:03:46
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /home/oracle/app/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
The listener supports no services
The command completed successfully

[oracle@localhost dbs]$

到这里启动就ok了。但是需要每次追加pfile文件,启动很麻烦,可以将原来的备份,并重新生成。

3.3、重新生成spfile(二进制)文件

# 将原来的spfile文件更改一个名字
[oracle@localhost dbs]$ mv spfileorcl.ora spfileorcl.orabak

# 使用以 "SYSDBA" 身份连接到 Oracle 数据库
[oracle@localhost dbs]$ sqlplus / as sysdba

# 将原来的spfile文件更改一个名字
# 将原来的spfile文件更改一个名字



#引用新增的 PFILE 创建一个 SPFILE
#格式为: create spfile='/路径/dbs/spfileorcl.ora' from pfile='/路径/dbs/init.ora';

SQL> create spfile='/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/spfileorcl.ora' from pfile='/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora';

File created.

# 可以看出已经生成成功了,退出
SQL> exit;

这样下次启动就不用追加 pfile,直接执行 startup; 即可。 

4、补充

如果使用连接工具提示 :

ORA-12514:TNS: 监听程序当前无法识别连接描述符中请求的服务

ORA-01034: ORACLE not availableORA-27101: shared memory realm does not existLinux-x86_64 Error: 2: No such file or directory进程 ID: 0会话 ID:0 序列号:0

如果有此类报错,需要配置监听文件,由上的监听日志可以看出,配置文件在:

/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

编辑此文件,11g可以参考如下配置:

[oracle@localhost dbs]$ vim /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

# listener.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )

ADR_BASE_LISTENER = /home/oracle/app

Oracle的 PFILE 和 SPFILE 的说明。

# Oracle的 PFILE 和 SPFILE 的说明。
	在 Oracle 数据库中,PFILE(Parameter File)和 SPFILE(Server Parameter File)都是用来存储数据库实例的参数配置信息的文件。
PFILE(Parameter File):
	PFILE 是一个文本文件,包含了用于配置 Oracle 数据库实例的参数设置。
	PFILE 文件可以手动编辑,并且在数据库启动时被读取。
	PFILE 中的参数设置可以通过 ALTER SYSTEM 命令进行修改并即时生效。
	PFILE 的默认名称为 initSID.ora,其中 SID 是数据库实例的标识符。
	SPFILE(Server Parameter File):
PFILE(Parameter File):
	SPFILE 是二进制格式的参数文件,用于存储数据库实例的参数设置。
	SPFILE 是数据库启动后由 Oracle 自动创建和维护的,通常以二进制形式存储在数据库的特定位置。
	SPFILE 提供了一些优势,例如可以使用 ALTER SYSTEM 命令在数据库运行时修改参数,并且修改将在下次数据库启动时保持。
	SPFILE 还提供了动态调整参数范围的功能,允许对某些参数进行在线范围更改。
	SPFILE 的默认名称为 spfileSID.ora,其中 SID 是数据库实例的标识符。
	总结一下,PFILE 是一个可编辑的文本文件,用于手动设置数据库实例的参数配置,而 SPFILE 是一个二进制文件,由数据库自动生成并维护,在线修改参数并且可以在数据库启动时保持修改。在大多数情况下,建议使用 SPFILE 来管理数据库实例的参数设置,因为它提供了更多的灵活性和方便性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值