Oracle的UNDOTBS01.DBF文件太大的解决办法

以SYS用户登录Oracle 自带的SQL*PLUS的方法:
sys
oracle
orcl as sysdba


Oracle的UNDOTBS01.DBF文件太大的解决办法 :

-- 创建一个新的小空间的UNDO TABLESPACE
CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'D:/ORACLE/ORADATA/ORCL/UNDOTBS02.DBF' SIZE 100M REUSE AUTOEXTEND ON;
-- 设置新的表空间为系统UNDO_TABLESPACE
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;
-- DROP 旧的表空间
DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS;
SELECT * FROM DBA_TABLESPACES;

完成后删除D:/ORACLE/ORADATA/ORCL/UNDOTBS01.DBF,然后进行出下操作:

-- 创建一个新的小空间的UNDO TABLESPACE
CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE 'D:/ORACLE/ORADATA/ORCL/UNDOTBS01.DBF' SIZE 100M REUSE AUTOEXTEND ON;
-- 设置新的表空间为系统UNDO_TABLESPACE
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS1;
-- DROP 旧的表空间
DROP TABLESPACE UNDOTBS2 INCLUDING CONTENTS;
--查看所有表空间的情况
SELECT * FROM DBA_TABLESPACES;

完成后删除D:/ORACLE/ORADATA/ORCL/UNDOTBS02.DBF。


如果临时表空间很大处理的方法类似。

<think> 嗯,用户这次明确询问Oracle手工建库的方法,结合之前提供的四条引用信息来看,用户应该需要具体的操作步骤而非理论概念。注意到引用[1]展示了核心的CREATE DATABASE语句,引用[2][3]提到了目录创建和参数文件准备,引用[4]则包含临时表空间创建的片段——这些正好构成完整的手工建库流程。 用户可能是DBA或运维人员,因为手工建库通常在特殊场景使用(如无DBCA环境)。ta应该需要可直接执行的命令,但引用中的路径示例有Linux和Windows混用(如/oradata/wwl02和E:\app),需要特别说明平台差异。另外ta没提具体Oracle版本,考虑到11g和19c的兼容性,准备用通用语法并标注版本注意事项。 最关键的步骤是参数文件定制,引用[3]演示了从init.ora模板复制修改的过程,这个细节必须保留。同时发现引用[1]的建库语句缺少了必选的LOGFILE子句,准备在回复时补充完整。对于目录创建环节,引用[2]的mkdir命令需要调整格式避免Linux权限问题(例如$ORACLE_BASE/oradata的归属权)。 安全方面要提醒SYSTEM/SYS密码问题,引用[1]的示例密码"oracle"太弱,准备在注意事项里强调修改。表空间设置部分,引用[4]的临时表空间语句可以整合到建库脚本中,但UNDO表空间名称需要和引用[1]的undotbs1统一。 最后考虑生成相关问题:用户可能下一步会问监听配置或表空间扩容,所以问题2设计为添加重做日志;问题3针对常见错误码,因为手工建库容易遇到ORA-01565这类文件权限错误。 </think> 以下是Oracle手工建库的标准步骤(基于Oracle 11g/12c/19c通用流程),请根据实际环境替换路径和参数: ### 一、前期准备 1. **创建必要目录** ```bash mkdir -p $ORACLE_BASE/oradata/{DB_NAME} mkdir -p $ORACLE_BASE/admin/{DB_NAME}/{adump,bdump,cdump,udump} ``` > 📝 *示例:若数据库名为PROD,则替换{DB_NAME}为PROD[^2]* 2. **配置环境变量** 设置`ORACLE_SID={DB_NAME}`并确认`ORACLE_HOME`路径正确。 --- ### 二、创建参数文件 1. **复制初始化模板** ```bash cp $ORACLE_HOME/dbs/init.ora $ORACLE_HOME/dbs/init{DB_NAME}.ora ``` > *路径示例:Windows为`E:\app\...\database\initTESTDB.ora`[^3]* 2. **修改关键参数** ```bash DB_NAME={DB_NAME} CONTROL_FILES=('$ORACLE_BASE/oradata/{DB_NAME}/control01.ctl') MEMORY_TARGET=1G UNDO_TABLESPACE=undotbs1 ``` > ⚠️ *需同步配置`processes`, `sessions`等参数* --- ### 三、执行建库操作 1. **启动实例到NOMOUNT状态** ```sql SQL> STARTUP NOMOUNT PFILE='$ORACLE_HOME/dbs/init{DB_NAME}.ora'; ``` 2. **执行建库语句** ```sql CREATE DATABASE {DB_NAME} USER SYS IDENTIFIED BY {sys_password} USER SYSTEM IDENTIFIED BY {system_password} EXTENT MANAGEMENT LOCAL DEFAULT TABLESPACE users DATAFILE '$ORACLE_BASE/oradata/{DB_NAME}/users01.dbf' SIZE 100M DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '$ORACLE_BASE/oradata/{DB_NAME}/temp01.dbf' SIZE 100M UNDO TABLESPACE undotbs1 DATAFILE '$ORACLE_BASE/oradata/{DB_NAME}/undotbs01.dbf' SIZE 200M LOGFILE GROUP 1 ('$ORACLE_BASE/oradata/{DB_NAME}/redo01.log') SIZE 50M, GROUP 2 ('$ORACLE_BASE/oradata/{DB_NAME}/redo02.log') SIZE 50M; ``` > 📌 *关键说明:* > - 必须包含`LOGFILE`子句定义重做日志组[^1][^4] > - TEMPFILE路径需与前期目录一致[^4] --- ### 四、后续配置 ```sql -- 创建数据字典视图 @?/rdbms/admin/catalog.sql -- 创建PL/SQL包 @?/rdbms/admin/catproc.sql -- 解锁常用账户 ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK; ``` --- ### 📍注意事项 1. **权限问题**:确保`$ORACLE_BASE`目录属主为oracle用户 2. **密码安全**:生产环境需使用高强度密码替换`{sys_password}`等 3. **空间预分配**:根据业务需求调整数据文件大小 4. **日志组冗余**:建议至少3组日志文件,每组2个成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷月宫主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值