【Oracle系列】- Oracle数据库更改数据文件位置

chatgpt/2023/9/27 16:38:38

【Oracle系列】- Oracle数据库更改数据文件位置

文章目录

  • 【Oracle系列】- Oracle数据库更改数据文件位置
    • 一、概述
    • 二、控制文件位置更改
    • 三、数据文件位置更改(不包括临时数据文件)
    • 四、临时数据文件位置更改
    • 五、临时数据文件位置更改

一、概述

突然收到zabbix报警提示OA数据库服务器磁盘不足,经常查发现根目录磁盘空间不足,由于无法添加磁盘来扩容,需要将数据库目录从/oradata更改到/home/oracle/oradata。

由于数据库文件和表空间具有不同的性质,将数据文件位置更改分为四个步骤:

  1. 控制文件位置更改
  2. 数据文件位置更改*(不包括临时数据文件)*
  3. 临时数据文件位置更改
  4. 日志文件位置更改

二、控制文件位置更改

  1. 停止数据库监听,防止有应用连接对数据库进行修改。

    lsnrctl stop
    
  2. 数据库open的状态下

    alter system set 
    control_files='/home/oracle/oradata/oa/control01.ctl','/home/oracle/oradata/oa/control02.ctl','/home/oracle/oradata/oa/control03.ctl' scope=spfile;
    
  3. 然后将数据库shutdown

    shutdown immediate;
    
  4. 将控制文件移动到新目录/home/oracle/oradata/oa下

    mv /oradata/oa/control* /home/oracle/oradata/oa/
    

将数据库启动到mount状态,至此,控制文件位置更改结束。

三、数据文件位置更改(不包括临时数据文件)

数据库需要在open状态下

  1. 将表空间全部offline,使用一下命令:

    SELECT 'alter tablespace ' || DTS.Tablespace_Name || ' offline;'FROM Sys.Dba_Tablespaces DTSWHERE DTS.Contents <> 'TEMPORARY'AND DTS.Tablespace_Name <> 'UNDOTBS1'AND DTS.Tablespace_Name <> 'SYSTEM';
    
  2. 生成的SQL语句如下,使用sysdba账户执行

    alter tablespace SYSAUX offline;
    alter tablespace USERS offline;
    ...
    
  3. 将这些表空间的数据文件复制到新目录/home/oracle/oradata目录下,数据文件rename的时候,需要两边都有数据文件。

  4. 使用以下语句生成rename数据文件的SQL语句

    SELECT 'alter tablespace ' || Ddf.Tablespace_Name || ' rename datafile ''' ||Ddf.File_Name || ''' to ''' || '/home/oracle' || Ddf.File_Name ||''';'FROM Sys.Dba_Data_Files DdfWHERE Ddf.Tablespace_Name <> 'SYSTEM'AND Ddf.Tablespace_Name <> 'UNDOTBS1';
    
  5. 生成的SQL语句如下,使用sysdba账户执行

    alter tablespace USERS rename datafile '/oradata/ipcc/users01.dbf' to '/home/oracle/oradata/ipcc/users01.dbf';
    alter tablespace SYSAUX rename datafile '/oradata/ipcc/sysaux01.dbf' to '/home/oracle/oradata/ipcc/sysaux01.dbf';
    ......
    
  6. 执行结束之后,将表空间全部**online,**使用以下语句生成表空间online的SQL语句

    SELECT 'alter tablespace ' || Ds.Tablespace_Name || ' online;'FROM Sys.Dba_Tablespaces DsWHERE Ds.Contents <> 'TEMPORARY'AND Ds.Tablespace_Name <> 'UNDOTBS1'AND Ds.Tablespace_Name <> 'SYSTEM';
    
  7. 生成的SQL语句如下,使用sysdba账户执行

    alter tablespace SYSAUX online;
    alter tablespace USERS online;
    ......
    

四、临时数据文件位置更改

临时表空间比较特殊,不能将临时表空间offline,需要将临时表空间的临时数据文件offline。

  1. 数据库在open状态下,生成临时数据文件offline的SQL语句如下:

    SELECT 'alter database tempfile ''' || File_Name || ''' offline;'FROM Dba_Temp_FilesORDER BY File_Id;  
    
  2. 生成的SQL语句如下,使用sysdba账户执行

    alter database tempfile '/oradata/ipcc/temp01.dbf' offline;
    alter database tempfile '/oradata/ricd_temp10' offline;
    ......
    
  3. 将临时数据文件复制到/home/oracle/oradata目录下

  4. 生成rename临时数据文件的SQL语句如下:

    SELECT 'alter database rename file ''' || File_Name || ''' to ''' ||'/home/oracle' || File_Name || ''';'FROM Dba_Temp_FilesORDER BY File_Id;
    
  5. 生成的SQL语句如下,使用sysdba账户执行

    alter database rename file '/oradata/oa/temp01.dbf' to '/home/oracle/oradata/oa/temp01.dbf';
    alter database rename file '/oradata/oa_temp10' to '/home/oracle/oradata/oa_temp10';
    ......
    
  6. 执行结束之后,将临时数据文件online,生成临时数据文件online的SQL语句如下:

    SELECT 'alter database tempfile ''' || File_Name ||''' online;'FROM Dba_Temp_FilesORDER BY File_Id;
    
  7. 生成的SQL语句如下,使用sysdba账户执行

    alter database tempfile '/home/oracle/oradata/oa/temp01.dbf' online;
    alter database tempfile '/home/oracle/oradata/oa_temp10' online;
    ......
    

至此,临时数据文件位置更改结束

五、临时数据文件位置更改

数据库可以在mount状态或open状态下。

  1. 查看日志文件状态

    select group#,thread#,sequence#,members,archived,status from v$log;
    select member from v$logfile;
    
  2. 当日志文件状态不为current的时候,将日志文件复制到新目录/home/oracle/oradata下,然后可以切换日志文件位置。也可以使用alter system switch logfile,切换日志文件状态

    SQL> alter database rename file '/oradata/oa/redo01.log' to '/home/oracle/oradata/oa/redo01.log';
    SQL> alter database rename file '/oradata/oa/redo02.log' to '/home/oracle/oradata/oa/redo02.log';

至此,日志文件位置更改结束。当所有文件位置均更改结束时,测试数据库的可用性;如果无问题,可以删除旧数据目录下的文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5312910.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

go web框架 gin-gonic源码解读01————Engine

go web框架 gin-gonic源码解读01————Engine gin-gonic是go语言开发的轻量级web框架&#xff0c;性能优异&#xff0c;代码简洁&#xff0c;功能强大。有很多值得学习的地方,最近准备把这段时间学习gin的知识点&#xff0c;通过engine&#xff0c;context&#xff0c;router…

PtahDAO(普塔道)引领金融服务新潮流

区块链技术作为一种创新的分布式账本技术,近年来引起了全球各界的广泛关注和热议。在金融领域,区块链技术更是展现出了巨大的潜力和价值,为金融服务的创新和发展带来了新的机遇和挑战。PtahDAO(普塔道)作为全球首个去中心化信托投资交易平台,它将区块链技术和金融投资相结合,打…

深入理解 python 虚拟机——控制流是如何实现的?

在本篇文章当中主要给大家分析 python 当中与控制流有关的字节码&#xff0c;通过对这部分字节码的了解&#xff0c;我们可以更加深入了解 python 字节码的执行过程和控制流实现原理。 控制流实现 控制流这部分代码主要涉及下面几条字节码指令&#xff0c;下面的所有字节码指…

URP基于GL的Unity物体网格绘制方法参考

直接上代码&#xff1a; using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering;public class GLWireMesh : MonoBehaviour {[Serializable]public class IntPair{public int a;public int b;public IntPair(int a, int b) { this…

禁用右键菜单AMD Software: Adrenalin Edition

本文参考链接&#xff1a; 删除win11右键一级菜单的AMD驱动栏 - 哔哩哔哩 windows11 求助删除右键菜单方法_windows11吧_百度贴吧 Windows安装最新的AMD显卡驱动后&#xff0c;右键菜单会多出AMD Software: Adrenalin Edition。使用一些右键菜单管理工具也没能屏蔽禁用掉该功…

k8s集群中安装kibana 7.x 踩坑

1. FATAL ValidationError: child "server" fails because [child "port" fails because ["port" must be a number]] 解决办法&#xff1a; 在环境变量中指定端口&#xff1a; - name: SERVER_PORTvalue: 5601 2. Kibana FATAL Error: [elast…

【深度学习】生成对抗网络Generative Adversarial Nets

序言 本文是GAN网络的原始论文&#xff0c;发表于2014年&#xff0c;我们知道&#xff0c;对抗网络是深度学习中&#xff0c;CNN基础上的一大进步&#xff1b; 它最大的好处是&#xff0c;让网络摆脱训练成“死模型”到固定场所处去应用&#xff0c;而是对于变化的场景&#xf…

CRM系统如何进行公海池线索分配自动化?

在销售过程中&#xff0c;线索分配是一个非常重要的环节。传统的线索分配方式往往是由销售主管手动进行&#xff0c;不仅效率低下&#xff0c;还存在着不公平、不灵活的问题。因此&#xff0c;许多企业通过CRM来实现公海池线索分配自动化。 1、基于规则的分配 CRM可以让用户设…
推荐文章