记一次windows下oracle的整库移动

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

按客户的要求,需要把oracle库控制文件、数据文件、以及联机日志文件从本地磁盘移到存储上,为后续cluster工作做准备,为此,准备两套方案,模拟记录如下

方案一步骤如下:

1shutdownimmediate数据库
2copydatafiles、logfiles、controlfiles、tempfiles到新的目录
3startupnomount数据库
4用命令altersystemsetcontrol_files指定控制文件新位置
5startupforcemount数据库
6指定datafiles、tempfiles新位置
7指定redo日志文件新位置
8alterdatabaseopen数据库

方案二步骤如下:

1生成重建控制文件的语句
2shutdownimmediate数据库
3copydatafiles、logfiles、tempfiles、到新的位置
4用命令altersystemsetcontrol_files更改spfile文件中控制文件的指向
5重建控制文件
6为temp表空间的添加数据文件


方案1执行过程如下:


1查询当前数据文件和日志文件如下:

SQL>selectnamefromv$datafile;

NAME
--------------------------------------------------
G:\DATA\ERP\SYSTEM01.DBF
G:\DATA\ERP\SYSAUX01.DBF
G:\DATA\ERP\UNDOTBS01.DBF
G:\DATA\ERP\USERS01.DBF

SQL>selectgroup#,memberfromv$logfile;

GROUP#MEMBER
------------------------------------------------------------
2G:\DATA\ERP\REDO02.LOG
1G:\DATA\ERP\REDO01.LOG
3G:\DATA\ERP\REDO03.LOG


2一致性关闭数据库:

SQL>shutdownimmediate;
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。
SQL>

3拷贝数据文件、日志文件、临时数据文件、控制文件到存储目录下:

C:\Users\Administrator.ZX>copyG:\DATA\ERP\*.*E:\DATA\ERP\
G:\DATA\ERP\CONTROL01.CTL
G:\DATA\ERP\CONTROL02.CTL
G:\DATA\ERP\REDO01.LOG
G:\DATA\ERP\REDO02.LOG
G:\DATA\ERP\REDO03.LOG
G:\DATA\ERP\SYSAUX01.DBF
G:\DATA\ERP\SYSTEM01.DBF
G:\DATA\ERP\TEMP01.DBF
G:\DATA\ERP\UNDOTBS01.DBF
G:\DATA\ERP\USERS01.DBF
已复制10个文件。

4用命令altersystemsetcontrol_files指定控制文件新位置

C:\Users\Administrator.ZX>sqlplus/assysdba

SQL*Plus:Release11.2.0.1.0Productionon星期五9月2017:29:492013

Copyright(c)1982,2010,Oracle.Allrightsreserved.

已连接到空闲例程。

SQL>startupnomount;
ORACLE例程已经启动。

TotalSystemGlobalArea430075904bytes
FixedSize2176448bytes
VariableSize301992512bytes
DatabaseBuffers117440512bytes
RedoBuffers8466432bytes

SQL>showparametercontrol_files;

NAMETYPEVALUE
----------------------------------------------------------------------------------------
control_filesstringG:\DATA\ERP\CONTROL01.CTL,G:\
DATA\ERP\CONTROL02.CTL

SQL>altersystemsetcontrol_files='E:\DATA\ERP\CONTROL01.CTL','E:\DATA\ERP\CONTROL02.CTL'scope=spfile;

系统已更改。

SQL>startupforcemount;
ORACLE例程已经启动。

TotalSystemGlobalArea430075904bytes
FixedSize2176448bytes
VariableSize301992512bytes
DatabaseBuffers117440512bytes
RedoBuffers8466432bytes
数据库装载完毕。
SQL>showparametercontrol_files;

NAMETYPEVALUE
-----------------------------------------------------------------------------
control_filesstringE:\DATA\ERP\CONTROL01.CTL,E:\
DATA\ERP\CONTROL02.CTL
SQL>


5指定数据文件和临时数据文件新位置


SQL>alterdatabaserenamefile'G:\DATA\ERP\SYSAUX01.DBF',
2'G:\DATA\ERP\SYSTEM01.DBF',
3'G:\DATA\ERP\UNDOTBS01.DBF',
4'G:\DATA\ERP\USERS01.DBF',
5'G:\DATA\ERP\TEMP01.DBF'
6to'E:\DATA\ERP\SYSAUX01.DBF',
7'E:\DATA\ERP\SYSTEM01.DBF',
8'E:\DATA\ERP\UNDOTBS01.DBF',
9'E:\DATA\ERP\USERS01.DBF',
10'E:\DATA\ERP\TEMP01.DBF';

数据库已更改。


6指定日志文件新位置:


SQL>alterdatabaserenamefile'G:\DATA\ERP\REDO01.LOG',
2'G:\DATA\ERP\REDO02.LOG',
3'G:\DATA\ERP\REDO03.LOG'
4to'E:\DATA\ERP\REDO01.LOG',
5'E:\DATA\ERP\REDO02.LOG',
6'E:\DATA\ERP\REDO03.LOG';

数据库已更改。

SQL>selectfile#,name,statusfromv$datafile;

FILE#NAMESTATUS
-----------------------------------------------------------------------------
1E:\DATA\ERP\SYSTEM01.DBFSYSTEM
2E:\DATA\ERP\SYSAUX01.DBFONLINE
3E:\DATA\ERP\UNDOTBS01.DBFONLINE
4E:\DATA\ERP\USERS01.DBFONLINE

SQL>selectgroup#,memberfromv$logfile;

GROUP#MEMBER
------------------------------------------------------------
2E:\DATA\ERP\REDO02.LOG
1E:\DATA\ERP\REDO01.LOG
3E:\DATA\ERP\REDO03.LOG

SQL>selectname,statusfromv$tempfile;

NAMESTATUS
-------------------------------------------------------------------
E:\DATA\ERP\TEMP01.DBFONLINE

第二种方案移库过程如下:

1生成重建控制文件的语句:

SQL>selectopen_modefromv$database;

OPEN_MODE
--------------------
READWRITE


SQL>alterdatabasebackupcontrolfiletotrace;

数据库已更改。

SQL>oradebugsetmypid
已处理的语句
SQL>oradebugtracefile_name
c:\app\diag\rdbms\erp\erp\trace\erp_ora_2724.trc

SQL>exit
从OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions断开

C:\Users\Administrator.ZX>startc:\app\diag\rdbms\erp\erp\trace\erp_ora_2724.trc
打开该trace文件找到如下控制文件重建语句并保存到control.sql文件中

C:\Users\Administrator.ZX>e:

E:\>typecontrol.sql
STARTUPNOMOUNT
CREATECONTROLFILEREUSEDATABASE"ERP"NORESETLOGSARCHIVELOG
MAXLOGFILES16
MAXLOGMEMBERS3
MAXDATAFILES100
MAXINSTANCES8
MAXLOGHISTORY292
LOGFILE
GROUP1'E:\DATA\ERP\REDO01.LOG'SIZE200MBLOCKSIZE512,
GROUP2'E:\DATA\ERP\REDO02.LOG'SIZE200MBLOCKSIZE512,
GROUP3'E:\DATA\ERP\REDO03.LOG'SIZE200MBLOCKSIZE512
--STANDBYLOGFILE
DATAFILE
'E:\DATA\ERP\SYSTEM01.DBF',
'E:\DATA\ERP\SYSAUX01.DBF',
'E:\DATA\ERP\UNDOTBS01.DBF',
'E:\DATA\ERP\USERS01.DBF'
CHARACTERSETZHS16GBK
;

2一致性关闭数据库:

E:\>sqlplus/assysdba

SQL*Plus:Release11.2.0.1.0Productionon星期五9月2018:52:192013

Copyright(c)1982,2010,Oracle.Allrightsreserved.


连接到:
OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions

SQL>shutdownimmediate;
数据库已经关闭。
已经卸载数据库。
ORACLE例程已经关闭。


3copydatafiles、logfiles、tempfiles到新的位置

SQL>exit
从OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions断开

E:\>copyE:\data\erp\*.*G:\data\erp\
E:\data\erp\CONTROL01.CTL
E:\data\erp\CONTROL02.CTL
E:\data\erp\REDO01.LOG
E:\data\erp\REDO02.LOG
E:\data\erp\REDO03.LOG
E:\data\erp\SYSAUX01.DBF
E:\data\erp\SYSTEM01.DBF
E:\data\erp\TEMP01.DBF
E:\data\erp\UNDOTBS01.DBF
E:\data\erp\USERS01.DBF
已复制10个文件。

4用命令altersystemsetcontrol_files更改spfile文件中控制文件的指向

E:\>sqlplus/assysdba

SQL*Plus:Release11.2.0.1.0Productionon星期五9月2019:05:312013

Copyright(c)1982,2010,Oracle.Allrightsreserved.

已连接到空闲例程。

SQL>startupnomount;
ORACLE例程已经启动。

TotalSystemGlobalArea430075904bytes
FixedSize2176448bytes
VariableSize289409600bytes
DatabaseBuffers130023424bytes
RedoBuffers8466432bytes
SQL>showparametercontrol_files;

NAMETYPEVALUE
----------------------------------------------------------------------------------------
control_filesstringE:\DATA\ERP\CONTROL01.CTL,E:\
DATA\ERP\CONTROL02.CTL

SQL>altersystemsetcontrol_files='G:\DATA\ERP\CONTROL01.CTL','G:\DATA\ERP\CONTROL02.CTL'scope=spfile;

系统已更改

5重建控制文件

SQL>shutdownabort;
ORACLE例程已经关闭。
SQL>hosttypee:\control.sql
STARTUPNOMOUNT
CREATECONTROLFILEREUSEDATABASE"ERP"NORESETLOGSARCHIVELOG
MAXLOGFILES16
MAXLOGMEMBERS3
MAXDATAFILES100
MAXINSTANCES8
MAXLOGHISTORY292
LOGFILE
GROUP1'E:\DATA\ERP\REDO01.LOG'SIZE200MBLOCKSIZE512,
GROUP2'E:\DATA\ERP\REDO02.LOG'SIZE200MBLOCKSIZE512,
GROUP3'E:\DATA\ERP\REDO03.LOG'SIZE200MBLOCKSIZE512
--STANDBYLOGFILE
DATAFILE
'E:\DATA\ERP\SYSTEM01.DBF',
'E:\DATA\ERP\SYSAUX01.DBF',
'E:\DATA\ERP\UNDOTBS01.DBF',
'E:\DATA\ERP\USERS01.DBF'
CHARACTERSETZHS16GBK
;
SQL>@e:\control.sql
ORACLE例程已经启动。

TotalSystemGlobalArea430075904bytes
FixedSize2176448bytes
VariableSize289409600bytes
DatabaseBuffers130023424bytes
RedoBuffers8466432bytes

控制文件已创建。

SQL>selectopen_modefromv$database;

OPEN_MODE
--------------------
MOUNTED

SQL>colnamefora50
SQL>selectnamefromv$datafile;

NAME
--------------------------------------------------
E:\DATA\ERP\SYSTEM01.DBF
E:\DATA\ERP\SYSAUX01.DBF
E:\DATA\ERP\UNDOTBS01.DBF
E:\DATA\ERP\USERS01.DBF

SQL>colmemberfora50
SQL>selectmemberfromv$logfile;

MEMBER
--------------------------------------------------
E:\DATA\ERP\REDO01.LOG
E:\DATA\ERP\REDO03.LOG
E:\DATA\ERP\REDO02.LOG

SQL>selectnamefromv$tempfile;

未选定行

SQL>selectnamefromv$controlfile;

NAME
--------------------------------------------------
G:\DATA\ERP\CONTROL01.CTL
G:\DATA\ERP\CONTROL02.CTL

6给temp表空间添加数据文件temp01


SQL>alterdatabaseopen;

数据库已更改。

SQL>hostdirG:\DATA\ERP
驱动器G中的卷是erp
卷的序列号是F048-8EE6

G:\DATA\ERP的目录

2013/09/2018:56<DIR>.
2013/09/2018:56<DIR>..
2013/09/2019:1410,076,160CONTROL01.CTL
2013/09/2019:1410,076,160CONTROL02.CTL
2013/09/2018:52209,715,712REDO01.LOG
2013/09/2018:52209,715,712REDO02.LOG
2013/09/2018:52209,715,712REDO03.LOG
2013/09/2018:52503,324,672SYSAUX01.DBF
2013/09/2018:52713,039,872SYSTEM01.DBF
2013/09/2017:1830,416,896TEMP01.DBF
2013/09/2018:5273,408,512UNDOTBS01.DBF
2013/09/2018:525,251,072USERS01.DBF
10个文件1,974,740,480字节
2个目录7,482,286,080可用字节

SQL>altertablespacetempaddtempfile'G:\DATA\ERP\TEMP01.DBF';

表空间已更改。

SQL>selectnamefromv$tempfile;

NAME
--------------------------------------------------
G:\DATA\ERP\TEMP01.DBF

注意:在关闭数据移库前,检查下表空间、数据文件、日志文件的状态是否正常










本文转自 zhangxuwl 51CTO博客,原文链接:http://blog.51cto.com/jiujian/1301425,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7月前
|
Oracle 关系型数据库 Linux
windows 11 hyper-v中oracle linux虚拟机中添加硬盘
在windows 11自带的hyper-v虚拟机中添加硬盘,并分区
196 6
|
7月前
|
关系型数据库 MySQL 开发工具
windows编译poco c++库
windows编译poco c++库
|
7月前
|
存储 Java C语言
Windows 下 JNI 调用动态链接库 dll
Windows 下 JNI 调用动态链接库 dll
168 0
|
7月前
|
安全 Linux 网络安全
Windows本地搭建Emby媒体库服务器并实现远程访问「内网穿透」
Windows本地搭建Emby媒体库服务器并实现远程访问「内网穿透」
|
7月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之和Oracle数据同步必须是使用主库吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
实时计算 Flink版产品使用合集之和Oracle数据同步必须是使用主库吗
|
7月前
|
安全 Linux 网络安全
【Windows】搭建Emby媒体库服务器,实现无公网IP远程访问
【Windows】搭建Emby媒体库服务器,实现无公网IP远程访问
545 0
|
2月前
|
Oracle 关系型数据库 MySQL
shell获取多个oracle库mysql库所有的表
请注意,此脚本假设你有足够的权限访问所有提到的数据库。在实际部署前,请确保对脚本中的数据库凭据、主机名和端口进行适当的修改和验证。此外,处理数据库操作时,务必谨慎操作,避免因错误的脚本执行造成数据损坏或服务中断。
40 0
|
7月前
|
编译器 C语言 C++
|
5月前
|
Oracle 关系型数据库 Linux
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
通过这一连串的步骤,可以专业且有效地在Linux下为Qt编译Oracle驱动库 `libqsqloci.so`,使得Qt应用能够通过OCI与Oracle数据库进行交互。这些步骤适用于具备一定Linux和Qt经验的开发者,并且能够为需要使用Qt开发数据库应用的专业人士提供指导。
158 1
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
|
7月前
|
算法 Linux Windows
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。
157 1
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass

推荐镜像

更多