WINDOWS Oracle 18C ORA-00823: Specified value of sga_target greater than sga_max_size

本文解决Oracle18c在Windows环境下因误设sga_max_size导致的启动问题,通过修改init.ora文件、调整参数大小及重新创建SPFILE实现数据库正常启动。

在这里插入图片描述@sga_target greater than sga_max_size

Oracle 18c Windows 误设置sga_max_size后处理

1、SQL>ALTER SYSTEM SET sga_max_size = 500M SCOPE=SPFILE; – 小了

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup nomount
ORA-00823: Specified value of sga_target greater than sga_max_size

2、修改或生成 安装目录WINDOWS.X64_180000_db_home\dbs\init.ora文件
生成的命令
startup pfile=D:\soft\WINDOWS.X64_180000_db_home\dbs\init1.ora

3、电脑上打开修改sga_target sga_max_size 两个参数大小都为1024m,然后启动试下,没毛病,关了库
startup pfile=D:\soft\WINDOWS.X64_180000_db_home\dbs\init1.ora

4、到安装目录 WINDOWS.X64_180000_db_home\database 备份SPFILEORCL.ORA后删了他,生成一个新的SPFILEORCL.ORA命令如下:

CREATE SPFILE=‘D:\soft\WINDOWS.X64_180000_db_home\database\SPFILEORCL.ORA’ FROM PFILE=‘D:\soft\WINDOWS.X64_180000_db_home\dbs\init1.ora’;

5、启动 startup

### 解决方案 在 Oracle 数据库导入过程中,ORA-39002、ORA-39059 和 ORA-39246 错误通常与转储文件集的完整性和主表的定位有关。以下是针对这些错误的具体解决方案: #### 1. 确保转储文件集的完整性 ORA-39059 错误表明转储文件集不完整。这可能是由于以下原因之一: - 转储文件缺失或损坏。 - 导入命令中未正确指定所有相关的转储文件。 确保所有必要的转储文件都已上传到目标服务器,并且在导入命令中正确指定了所有文件。例如,如果转储文件为 `expdp1.dmp` 和 `expdp2.dmp`,则应在导入命令中明确列出它们[^1]: ```bash impdp schemas=SCHEMA_NAME directory=DATA_PUMP_DIR dumpfile=expdp1.dmp,expdp2.dmp logfile=import.log ``` #### 2. 检查主表的存在性 ORA-39246 错误表示无法定位主表。主表是 Data Pump 作业的核心组件,用于跟踪导入过程的状态。如果主表丢失或损坏,则需要重新生成主表。 可以通过以下步骤解决此问题: - 确认主表是否存在于目标数据库中。主表通常位于 `SYS` 模式下,名称类似于 `SYS_IMPORT_SCHEMA_01`。 - 如果主表不存在或损坏,可以尝试删除并重新创建 Data Pump 作业。例如,使用以下命令删除现有的 Data Pump 作业[^2]: ```sql BEGIN DBMS_DATAPUMP.detach('JOB_NAME'); END; / ``` 然后重新执行导入命令。 #### 3. 验证导入操作的有效性 ORA-39002 错误表示操作无效,通常是由于以下原因之一: - 导入参数配置错误。 - 使用了不兼容的 Data Pump 参数。 检查导入命令中的参数设置,确保其符合目标数据库的要求。例如,避免使用过时的参数(如 `fromuser`),并替换为现代参数(如 `schemas`)。 #### 4. 检查 Data Pump 日志文件 Data Pump 的日志文件通常包含更详细的错误信息。通过分析日志文件,可以进一步定位问题的根本原因。例如,查看日志文件中的错误消息以确定是否有其他潜在问题[^3]。 ```bash cat import.log ``` #### 5. 确保 Oracle 版本兼容性 如果源数据库和目标数据库的版本不同,可能会导致导入失败。确保源数据库导出的转储文件与目标数据库版本兼容。例如,从 Oracle 11g 导出的数据可以导入到 Oracle 19c,但反之则不行。 如果版本不兼容,可以考虑在中间环境中进行转换。例如,先将数据从 Oracle 11g 导出并导入到 Oracle 12c 或 18c,然后再迁移到 Oracle 19c。 --- ### 示例代码 以下是一个完整的导入命令示例,适用于 Oracle 19c: ```bash impdp username/password@target_db schemas=SCHEMA_NAME directory=DATA_PUMP_DIR dumpfile=expdp1.dmp,expdp2.dmp logfile=import.log ``` 如果需要重新创建 Data Pump 作业,可以使用以下 PL/SQL 脚本: ```sql DECLARE h1 NUMBER; BEGIN h1 := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', job_name => NULL); DBMS_DATAPUMP.ADD_FILE(handle => h1, filename => 'import.log', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE, directory => 'DATA_PUMP_DIR'); DBMS_DATAPUMP.START_JOB(h1); END; / ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值