IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Oracle单实例移动数据文件的几种方法 -> 正文阅读

[大数据]Oracle单实例移动数据文件的几种方法


目录

一、未开启归档情况下移动单个数据文件

方法一:此方法在数据库未开启归档的情况下想要移动数据文件,数据库需要重启一次,业务需要暂停。

需求:将数据文件/u01/app/oracle/orcl/cdr01.dbf 移到到/u01/oradata/cdr01.dbf

第一步:关闭数据库

sys@ORCL>shutdown immeidate;

第二步:在系统层面移动数据文件

[oracle@hisdb orcl]$ mv/cp cdr01.dbf /u01/oradata/
[oracle@hisdb oradata]$ ls
cdr01.dbf

第三步:启动数据库到mount状态

sys@ORCL>startup mount;
ORACLE 例程已经启动。

Total System Global Area  768294912 bytes
Fixed Size		    2257192 bytes
Variable Size		  473960152 bytes
Database Buffers	  289406976 bytes
Redo Buffers		    2670592 bytes
数据库装载完毕。

第四步:在数据库中rename移动的数据文件

sys@ORCL>alter database rename file '/u01/app/oracle/orcl/cdr01.dbf' to '/u01/oradata/cdr01.dbf';

数据库已更改。

第五步:将数据库打开到open

sys@ORCL>alter database open;

数据库已更改。

sys@ORCL>select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/orcl/system01.dbf
/u01/app/oracle/orcl/sysaux01.dbf
/u01/app/oracle/orcl/undotbs01.dbf
/u01/app/oracle/orcl/users01.dbf
/u01/oradata/cdr01.dbf
/u01/app/oracle/orcl/retest01.dbf
/u01/app/oracle/orcl/zongzi01.dbf

已选择7行。

下面是之前所有数据文件的位置,与上面对比数据文件已经移动成功,可再重启一下数据库验证。

sys@ORCL>select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/orcl/system01.dbf
/u01/app/oracle/orcl/sysaux01.dbf
/u01/app/oracle/orcl/undotbs01.dbf
/u01/app/oracle/orcl/users01.dbf
/u01/app/oracle/orcl/cdr01.dbf
/u01/app/oracle/orcl/retest01.dbf
/u01/app/oracle/orcl/zongzi01.dbf

方法二:通过offline相关表空间的方法
需求:将数据文件/u01/app/oracle/orcl/retest01.dbf移动到 /u01/oradata/retest01.dbf

第一步:将相关表空间offline

sys@ORCL>alter tablespace retest offline;

表空间已更改。

第二步:rename被移动的数据文件

sys@ORCL>alter database rename file '/u01/app/oracle/orcl/retest01.dbf' to '/u01/oradata/retest01.dbf';

数据库已更改。

第三步:将之前offline的表空间online

sys@ORCL>alter tablespace retest online;

表空间已更改。

二、开启归档情况下移动单个数据文件

需求:将数据文件/u01/oradata/retest01.dbff移动到 /u01/app/oracle/orcl/retest01.db

上面的方法一、方法二均适用

方法三:offline数据文件,必须在归档模式下

第一步:将要移动的数据文件offline

sys@ORCL>alter database datafile '/u01/oradata/retest01.dbf' offline;
或者
sys@ORCL>alter database datafile 6 offline;

第二步:移动数据文件(可在系统层面也可用rman copy)

RMAN> copy datafile 6 to '/u01/app/oracle/orcl/retest01.dbf';

启动 backup 于 21-2月 -2022 16:29:13
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件: 文件号=00006 名称=/u01/oradata/retest01.dbf
输出文件名=/u01/app/oracle/orcl/retest01.dbf 标记=TAG20220221T162913 RECID=7 STAMP=1097252954
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 21-2月 -2022 16:29:14

第三步:用rman转换数据文件,等同于rename

RMAN> switch datafile 6 to copy;

数据文件 6 已切换成数据文件副本 "/u01/app/oracle/orcl/retest01.dbf"

第三步:恢复数据文件

RMAN> recover datafile 6;

启动 recover 于 21-2月 -2022 16:31:26
使用通道 ORA_DISK_1
使用通道 ORA_DISK_2

正在开始介质的恢复
介质恢复完成, 用时: 00:00:00

完成 recover 于 21-2月 -2022 16:31:26

第四步:将数据文件online

sys@ORCL>alter database datafile 6 online;

数据库已更改。

三、开启归档情况下移动多个数据文件

大量数据文件移动,适用于在新创建数据库时,数据文件目录未写到存储目录中,后期需要移动。

第一步:新建数据文件目录并赋权(存储目录)

root#mkdir orcl
root#chown -R oracle:oinstall /data 

第二步:关闭数据库

sql>shutdown immediate;  

第三步:移动数据文件

$cd /u01/app/oracle/oradata/orcl            
$ls
$cd ..
$nohup cp -rf orcl /data/oradata/ &            第三步将orcl数据文件夹复制到新的数据文件目录(是复制不是mv)后台拷贝
$cd /data/oradata/orcl
$while true
>do
>du -sh
>sleep 10
>done
拷贝观察,等待拷贝结束
拷贝结束后,将原有数据文件做备份,防止操作失误,可继续使用原有数据文件
$cd /u01/app/oracle/oradata/
$mv orcl orcl.bak

第四步:启动数据库到mount,因为控制文件目录和数据文件在同一目录,所以移动数据文件目录后需要修改控制文件路径参数。

SQL> startup mount               启动到mount,查看控制文集目录
ORACLE instance started.

Total System Global Area 6.0930E+10 bytes
Fixed Size		    2268112 bytes
Variable Size		 3.0333E+10 bytes
Database Buffers	 3.0467E+10 bytes
Redo Buffers		  127143936 bytes
ORA-00205: error in identifying control file, check alert log for more info


SQL> show parameter control;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time	     integer	 7
control_files			     string	 /u01/app/oracle/oradata/orcl/c
						 ontrol01.ctl, /u01/app/oracle/
						 oradata/orcl/control02.ctl
control_management_pack_access	     string	 DIAGNOSTIC+TUNING
SQL> alter system set control_files='/oradata/dbserver/control01.ctl','/oradata/dbserver/control02.ctl' scope=spfile;

System altered.  

第五步:批量rename数据文件

sql>set line 200 pages 9999
select 'alter database rename file '''||name||''' to ''/home/oracle/oradata'||substr(name,length(name)-INSTR(reverse(name),'/')+1,INSTR(reverse(name),'/'))||''';' from v$datafile
union all
select 'alter database rename file '''||name||''' to ''/home/oracle/oradata'||substr(name,length(name)-INSTR(reverse(name),'/')+1,INSTR(reverse(name),'/'))||''';' from v$tempfile
union all
select 'alter database rename file '''||member||''' to ''/data/oradata/orcl'||substr(member,length(member)-INSTR(reverse(member),'/')+1,INSTR(reverse(member),'/'))||''';' from v$logfile;
---------------------alter database rename-------------------------
alter database rename file '/home/oracle/oradata/dbserver/system01.dbf' to '/oradata/dbserver/system01.dbf';
alter database rename file '/home/oracle/oradata/dbserver/sysaux01.dbf' to '/oradata/dbserver/sysaux01.dbf';
alter database rename file '/home/oracle/oradata/dbserver/undotbs01.dbf' to '/oradata/dbserver/undotbs01.dbf';
alter database rename file '/home/oracle/oradata/dbserver/users01.dbf' to '/oradata/dbserver/users01.dbf';
alter database rename file '/home/oracle/oradata/dbserver/temp01.dbf' to '/oradata/dbserver/temp01.dbf';
alter database rename file '/home/oracle/oradata/dbserver/redo01.log' to '/oradata/dbserver/redo01.log';
alter database rename file '/home/oracle/oradata/dbserver/redo02.log' to '/oradata/dbserver/redo02.log';
alter database rename file '/home/oracle/oradata/dbserver/redo03.log' to '/oradata/dbserver/redo03.log';

第六步:打开数据库到open

sql>alter database open;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:40:12  更:2022-02-22 20:42:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 4:51:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码