Windows下如何把Oracle从C盘整体迁移到D盘?

(一)写这篇文章的起因

这篇文章适合刚接触的技术小白follow操作,整理文章不易,大家多多点赞+转发
起因是昨天有会员在群里发问,客户要把Oracle整个目录从C盘挪到D盘怎么弄
客户那边的人把Oracle整个程序+数据文件都安装到了C盘上,现在面临着C盘空间不足,还有不知名的原因导致Oracle会话总是中断(这个有点玄学),客户让整体迁移
 

image20240518095227819.png


直接拷贝肯定是不行,Windows上Oracle还有一堆注册表,不像Linux拷贝过去改过挂载点就行。
整体思路其实不难,稍微有一些注意事项:
1、停库,停服务。备份物理文件(控制文件、数据文件、日志文件、SPFILE、口令文件)。D盘重新安装个Oracle,然后把刚才备份的物理文件放过去,调整一下参数。
2、停库,停服务。文件剪切到别的盘,在原地创建个软链接mklink,指向新的盘符。
3、其实是只移动数据文件就行,不用那么麻烦(这里客户不让我就不讲了,就是改改文件位置就完了)
下面来看1、2两个方法如何操作。(我以windows2016+oracle19c为演示环境)

(二)迁移方法1:重新安装

1.迁移前准备环境

查看当前安装目录

C:\Users\Administrator>echo %PATH%
C:\app\oracle\product\19.3\dbhome_1\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;

关库迁移前,确认好数据文件位置,这里要用到两个脚本
1.生成修改文件位置语句

set pagesize 500
set linesize 500
select 'alter database rename file '||''''||name||''''||' to '||chr(39)||replace(name,'C:\APP\ADMINISTRATOR\ORADATA\ORCL\','D:\APP\ADMINISTRATOR\ORADATA\ORCL\')||''';' from v$tempfile where name like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%'
union
select 'alter database rename file '||''''||name||''''||' to '||chr(39)||replace(name,'C:\APP\ADMINISTRATOR\ORADATA\ORCL\','D:\APP\ADMINISTRATOR\ORADATA\ORCL\')||''';' from v$datafile where name like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%'
union
select 'alter database rename file '||''''||member||''''||' to '||chr(39)||replace(member,'C:\APP\ADMINISTRATOR\ORADATA\ORCL\','D:\APP\ADMINISTRATOR\ORADATA\ORCL\')||''';' from v$logfile where member like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%';

执行结果如下:

SQL> set pagesize 500
SQL> set linesize 500
SQL> select 'alter database rename file '||''''||name||''''||' to '||chr(39)||replace(name,'C:\APP\ADMINISTRATOR\ORADATA\ORCL\','D:\APP\ADMINISTRATOR\ORADATA\ORCL\')||''';' from v$tempfile where name like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%'
  2  union
  3  select 'alter database rename file '||''''||name||''''||' to '||chr(39)||replace(name,'C:\APP\ADMINISTRATOR\ORADATA\ORCL\','D:\APP\ADMINISTRATOR\ORADATA\ORCL\')||''';' from v$datafile where name like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%'
  4  union
  5  select 'alter database rename file '||''''||member||''''||' to '||chr(39)||replace(member,'C:\APP\ADMINISTRATOR\ORADATA\ORCL\','D:\APP\ADMINISTRATOR\ORADATA\ORCL\')||''';' from v$logfile where member like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%';

'ALTERDATABASERENAMEFILE'||''''||NAME||''''||'TO'||CHR(39)||REPLACE(NAME,'C:\APP\ADMINISTRATOR\ORADATA\ORCL\','D:\APP\ADMINISTRATOR\ORADATA\ORCL\')||''';'
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF';

已选择 8 行。

2.生成拷贝文件语句

set pagesize 500
set linesize 500
select 'host copy '||''||member||''||' D:\APP\ADMINISTRATOR\ORADATA\ORCL\' from v$logfile where member like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%'
union
select 'host copy '||''||name||''||' D:\APP\ADMINISTRATOR\ORADATA\ORCL\ ' from v$datafile where name like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%'
union
select 'host copy '||''||name||''||' D:\APP\ADMINISTRATOR\ORADATA\ORCL\ ' from v$controlfile where name like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%'
union
select 'host copy '||''||name||''||' D:\APP\ADMINISTRATOR\ORADATA\ORCL\ ' from v$tempfile where name like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%';

执行结果如下:

SQL> set pagesize 500
SQL> set linesize 500
SQL> select 'host copy '||''||member||''||' D:\APP\ADMINISTRATOR\ORADATA\ORCL\' from v$logfile where member like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%'
  2  union
  3  select 'host copy '||''||name||''||' D:\APP\ADMINISTRATOR\ORADATA\ORCL\ ' from v$datafile where name like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%'
  4  union
  5  select 'host copy '||''||name||''||' D:\APP\ADMINISTRATOR\ORADATA\ORCL\ ' from v$controlfile where name like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%'
  6  union
  7  select 'host copy '||''||name||''||' D:\APP\ADMINISTRATOR\ORADATA\ORCL\ ' from v$tempfile where name like 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\%';

'HOSTCOPY'||''||MEMBER||''||'D:\APP\ADMINISTRATOR\ORADATA\ORCL\'
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\

3.查看参数文件位置,创建参数文件备份

SQL> set pagesize 100
SQL> set linesize 200
SQL> show parameter pfile;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
spfile                               string                 C:\APP\ORACLE\PRODUCT\19.3\DBH
                                                            OME_1\DATABASE\SPFILEORCL.ORA
SQL> create pfile='c:\pfile.ora' from spfile;
File created.

4.关闭数据库

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

5.停止以下服务

image.png

2.在D盘安装Oracle

D盘释放Oracle19c安装文件到如下目录

D:\app\oracle\product\19.3\dbhome_1

运行安装
 

image.png


 

image.png


 

image.png


 

image.png


这里注意一下,我是习惯用“使用windows内置账户”,避免权限带来的麻烦。
 

image.png


 

image.png

image.png


 

image.png

image-20240517200652905

3.开始进行迁移

删除原有oracle服务,使用oradim命令,帮助参考如下

C:\Users>oradim
ORADIM: <command> [options]。请参阅手册。
输入以下命令之一:
通过指定以下选项创建实例:
     -NEW -SID sid | -ASMSID sid | -MGMTDBSID sid | -IOSSID sid | -APXSID sid|
 -SRVC srvc | -ASMSRVC srvc | -MGMTDBSRVC srvc | -IOSSRVC srvc |
 -APXSRVC srvc  [-SYSPWD pass] [-STARTMODE auto|manual]
 [-SRVCSTART system|demand] [-PFILE file | -SPFILE] [-MAXUSERS maxusers]
 [-SHUTMODE normal|immediate|abort] [-TIMEOUT secs] [-RUNAS osusr/ospass]
通过指定以下选项编辑实例:
     -EDIT -SID sid | -ASMSID sid | -MGMTDBSID sid | -IOSSID sid | -APXSID sid
 [-SYSPWD pass]  [-STARTMODE auto|manual] [-SRVCSTART system|demand]
 [-PFILE file | -SPFILE] [-SHUTMODE normal|immediate|abort]
 [-SHUTTYPE srvc|inst] [-RUNAS osusr/ospass]
通过指定以下选项删除实例:
     -DELETE -SID sid | -ASMSID sid | -MGMTDBSID sid | -IOSSID sid |
 -APXSID sid| -SRVC srvc | -ASMSRVC srvc | -MGMTDBSRVC srvc |
 -IOSSRVC srvc | -APXSRVC srvc
通过指定以下选项启动服务和实例:
     -STARTUP -SID sid | -ASMSID sid | -MGMTDBSID sid | -IOSSID sid
 | -APXSID sid [-SYSPWD pass] [-STARTTYPE srvc|inst|srvc,inst]
 [-PFILE filename | -SPFILE]
通过指定以下选项关闭服务和实例:
     -SHUTDOWN -SID sid | -ASMSID sid | -MGMTDBSID sid | -IOSSID sid |
 -APXSID sid [-SYSPWD pass] [-SHUTTYPE srvc|inst|srvc,inst]
 [-SHUTMODE normal|immediate|abort]
通过指定以下选项操纵 ACL:
     -ACL -setperm|-addperm|-removeperm  dbfiles|diag|registry
  -USER username  -OBJTYPE file|dir|registry  -OBJPATH object-path
  -RECURSE true|false [-HOST hostname]
通过指定以下选项操纵 FAMILY 设置:
     -FAMILY -set|-delete value [-SID sid | -ASMSID sid |
 -MGMTDBSID sid | -IOSSID sid | -APXSID sid ]
 通过指定以下参数查询帮助: -? | -h | -help

1.执行删除服务命令

C:\app\oracle\product\19.3\dbhome_1\bin>oradim -delete -sid ORCL
实例已删除。

2.删除监。听,执行netca命令删除当前listener监听

3.修改先前备份的参数文件内容,主要修改一下文件路径C改为D:

*.audit_file_dest='D:\app\Administrator\admin\orcl\adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='D:\app\Administrator\oradata\ORCL\control01.ctl','D:\app\Administrator\oradata\ORCL\control02.ctl'
*.db_block_size=8192
*.db_name='orcl'
*.diagnostic_dest='D:\app\Administrator'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.local_listener='LISTENER_ORCL'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=819m
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2457m
*.undo_tablespace='UNDOTBS1'

4.手动创建一下审计日志文件位置D:\app\Administrator\admin\orcl\adump

5.拷贝原有的口令文件ORACLE_HOME/database下到新的ORACLE_HOME/database目录下,如果没有就手动创建一下

D:\app\oracle\product\19.3\dbhome_1\database>orapwd file=pwdorcl.ora password=Dba_2024 ENTRIES=5

6.在新的Oracle_home\bin目录下执行netca创建监听(图形一直下一步就行)

C:\>cd d:\app\oracle\product\19.3\dbhome_1
C:\>d:
d:\app\oracle\product\19.3\dbhome_1>cd bin
d:\app\oracle\product\19.3\dbhome_1\bin>netca

7.再创建oracle实例服务

d:\app\oracle\product\19.3\dbhome_1\bin>set ORACLE_SID=ORCL
d:\app\oracle\product\19.3\dbhome_1\bin>set ORACLE_HOME=D:\app\oracle\product\19.3\dbhome_1
d:\app\oracle\product\19.3\dbhome_1\bin>oradim.exe -new -sid ORCL -startmode auto -spfile -SRVCSTART SYSTEM
实例已创建。

8.创建参数文件

d:\app\oracle\product\19.3\dbhome_1\bin>sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 星期五 5月 17 20:58:45 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> create spfile from pfile='c:\pfile.ora';

File created.

SQL>

9.关闭windows系统服务OracleServiceORCL

再启动OracleServiceORCL服务,这里稍微等一会

image.png

这里数据库会启动到nomount模式

d:\app\oracle\product\19.3\dbhome_1\bin>sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 星期五 5月 17 21:12:42 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


连接到:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> select status from v$instance;

STATUS
------------------------
STARTED

10.创建新的数据文件目录D:\app\Administrator\oradata\ORCL

拷贝数据文件目录C:\app\Administrator\oradata\orcl目录下的控制文件至D:\app\Administrator\oradata\ORCL

SQL> host copy C:\app\Administrator\oradata\ORCL\CONTROL01.CTL  D:\app\Administrator\oradata\ORCL
已复制         1 个文件。

SQL> host copy C:\app\Administrator\oradata\ORCL\CONTROL02.CTL  D:\app\Administrator\oradata\ORCL
已复制         1 个文件。

SQL> alter database mount;

数据库已更改。

11.这里要用到之前生成的脚本,拷贝数据文件,修改文件位置。

host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF';
alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF';

下面是执行结果

SQL> host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG D:\APP\ADMINISTRATOR\ORADATA\ORCL\
已复制         1 个文件。

SQL> host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG D:\APP\ADMINISTRATOR\ORADATA\ORCL\
已复制         1 个文件。

SQL> host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG D:\APP\ADMINISTRATOR\ORADATA\ORCL\
已复制         1 个文件。

SQL> host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
已复制         1 个文件。

SQL> host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
已复制         1 个文件。

SQL> host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
已复制         1 个文件。

SQL> host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
已复制         1 个文件。

SQL> host copy C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF D:\APP\ADMINISTRATOR\ORADATA\ORCL\
已复制         1 个文件。

SQL> alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG';

数据库已更改。

SQL> alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG';

数据库已更改。

SQL> alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG';

数据库已更改。

SQL> alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF';

数据库已更改。

SQL> alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF';

数据库已更改。

SQL> alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF';

数据库已更改。

SQL> alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF';

数据库已更改。

SQL> alter database rename file 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF' to 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF';

数据库已更改。

12.打开数据库

SQL> alter database open;

数据库已更改。

13.到这里还没有完全结束,还需要修改一下系统的注册表,环境变量

环境变量,删除原来C:\app\oracle\product\19.3\dbhome_1\bin

image.png

下面是注册表位置,第2次安装的目录是KEY_OraDB19Home2

\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 

下图位置需要新建个键值ORACLE_SID,内容为orcl

image.png

重启服务器测试自动启动是否OK,如果监听不好使,可以netcat重建一下,我这里有点问题就是实例注册不到监听,手动也不行,于是我就加了一个静态监听得了,在listener.ora里添加如下内容

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = D:\app\oracle\product\19.3\dbhome_1)
      (SID_NAME = orcl)
    )
)

14.确实完毕后,删除原有C盘的ORACLE程序,在如下图路径中以管理员运行deinstall脚本,注意!!运行之后回车几下!!提示的时候你要输入“是”,他就会都删除

image.png

迁移方法2

通过方法1的迁移后,数据库现在运行在D盘,这里我再用mklink的方法把他弄到C盘去。
操作之前需要先把Oracle相关的服务全停了

image.png

剪切D盘的app整个目录到C盘根目录下,等待剪切完毕后,再执行如下命令,创建link

C:\Windows\system32>mklink /D d:\app c:\app
为 d:\app <<===>> c:\app 创建的符号链接

之后再启动系统服务,修改位置完毕。

(三)插曲

这里启动数据库时遇到个报错

Unable to obtain current patch information due to error: 20001, ORA-20001: Latest xml inventory is not loaded into table
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 2327
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 854
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 937
ORA-06510: PL/SQL: 用户定义的异常错误未得到处理
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 932
ORA-29913: 执行 ODCIEXTTABLEOPEN 调出时出错
ORA-29400: 数据插件错误KUP-04027: 文件名检查失败: qopatch_log.log
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 919
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 2286
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 817
ORA-06512: 在 "SYS.DBMS_QOPATCH", line 2309

解决方案参考飞总的BLOG

ORA-20001: Latest xml inventory is not loaded into table – 提供7*24专业数据库(Oracle,SQL Server,MySQL,PostgreSQL等)恢复和技术支持@Tel:17813235971 - 惜分飞 (xifenfei.com)

我选择了方案1:

SQL> alter system set "_disable_directory_link_check"=true scope=spfile;

(四)总结

相对于方法1来说,方法2更简洁,实现步骤最少。

但是方法2搞完了,万一客户上去把目录链接删除了,又得挂了。。。。这个可真不好说。

下期我再写一篇Linux同样的问题,总有小白安装oracle照着网上教程来,直接装到/u01目录下(背景是装系统的人也没收到需求,装系统用默认分区,/50G,其余都到/HOME里了),以至于项目上线后根目录爆满系统停机,明明/home下有好几百个G的可用空间也没有利用上,我来说说Linux上如何解决。

也欢迎关注我的公众号【徐sir的IT之路】,一起学习!
————————————————————————————
公众号:徐sir的IT之路
CSDN :https://blog.csdn.net/xxddxhyz?type=blog
墨天轮:https://www.modb.pro/u/3605
PGFANS:https://www.pgfans.cn/user/home?userId=5568
————————————————————————————

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 Kali Linux 实现 Smurf 攻击

一、介绍 Smurf攻击是一种分布式拒绝服务&#xff08;DDoS&#xff09;攻击&#xff0c;利用IP协议中的ICMP&#xff08;Internet Control Message Protocol&#xff09;请求和网络的广播特性&#xff0c;使目标系统被大量ICMP回复包淹没&#xff0c;从而导致系统无法正常提供…

ZDH-数据管理模块

目录 主题 项目源码 预览地址 安装包下载地址 数据管理服务 数据资源管理 数据资源权限 数据资源血缘 总结 感谢支持 主题 本篇文章主要介绍ZDH-数据管理服务及应用场景 项目源码 zdh_web: GitHub - zhaoyachao/zdh_web: 大数据采集,抽取平台 预览地址 后台管理…

【C++】类和对象——构造和析构函数

目录 前言类的六个默认构造函数构造函数1.构造函数的概念2.构造函数的特性 初始化列表1.构造函数整体赋值2.初始化列表 析构函数1.析构函数的概念2.析构函数的特性 前言 类和对象相关博客&#xff1a;【C】类和对象   我们前面一个内容已经讲了关于类好对象的初步的一些知识&…

绿联 安装MariaDB数据库用于Seatable服务

绿联 安装MariaDB数据库用于Seatable服务 1、镜像 mariadb:latest 2、安装 2.1、基础设置 重启策略&#xff1a;容器退出时总是重启容器。 2.2、网络 网络选择桥接(bridge)。 2.3、存储空间 装载路径/var/lib/mysql不可变更。 2.4、端口设置 容器端口3306&#xff0c;本…

7. MySQL 视图、索引

文章目录 【 1. 视图 View 】1.1 视图原理1.2 创建视图 CREATE VIEW1.2.1 创建基于单表的视图1.2.2 创建基于多表的视图 1.3 查看视图1.3.1 查看视图的内容1.3.2 查看视图的详细信息 1.4 修改视图 ALTER VIEW1.4.1 修改视图内容1.4.2 修改视图名称 1.5 删除视图 DORP VIEW 【 2…

Ansys Mechanical|组装 External Mechanical Model

Assembling Finite Element Models 上文中介绍了如何导入外部模型并将其组合到单个模型中的示例。 如果要将外部模型与Workbench环境中已有的一个或多个模型组合在一起&#xff0c;该如何操作&#xff1f;本文将介绍这个工作流程。 Ansys Mechanical支持Mechanical Model和Ex…

移动系统编程-安装和运行Ionic应用程序 (Installation and Running Ionic Apps)

安装 (Installation) 假设您已经安装了Node.js和Angular&#xff0c;您可以使用以下命令安装Ionic&#xff1a; npm install -g ionic/cli您也可以不使用CLI安装Ionic&#xff0c;但如果您使用的是最新版本的Cordova&#xff0c;这样做可能会导致版本不匹配&#xff0c;不推荐…

用幻灯片讲解C++中的C语言风格数组

用幻灯片讲解C中的C语言风格数组 1.栈内存中的C风格数组 糟糕的可用性&#xff0c;但你将在遗留代码中看到它们。相同类型的对象块。大小必须是常量表达式。第一个元素的索引为0&#xff0c;即数组索引从0开始。 注意一下数组的初始化&#xff0c;使用了C11标准之后的统一初始…

回溯算法 -- 77. 组合

目录 一.题目描述 二.解题思路 三.回溯三部曲 3.1确定递归函数的返回值以及参数 3.2回溯算法的终止条件 3.3确定单层循环搜索逻辑 四.具体的代码 一.题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案…

软件开发整体介绍

黑马程序员瑞吉外卖 文章目录 一、软件开发流程二、角色分工三、软件环境 一、软件开发流程 二、角色分工 三、软件环境

MySQL—函数—流程控制函数(基础)

一、引言 接下来&#xff0c;我们就进入函数的最后一个部分&#xff1a;流程函数。而流程控制函数在我们的日常开发过程是很有用的。 流程控制函数在我们 sql 语句当中&#xff0c;经常用来实现条件的筛选&#xff0c;从而提高语句的一个执行效率。 我们主要介绍以下4个流程控…

第十五课,海龟画图:抬笔与落笔函数、画曲线函数

一&#xff0c;turtle.penup()和turtle.pendown()&#xff1a;抬起与落下画笔函数 当使用上节课学习的这个turtle.forward()&#xff1a;画笔前进函数时&#xff0c;画笔会朝着当前方向在画布上留下一条指定&#xff08;像素&#xff09;长度的直线&#xff0c;但你可能发现&a…

自动微分技术在 AI for science 中的应用

本文简记我在学习自动微分相关技术时遇到的知识点。 反向传播和自动微分 以 NN 为代表的深度学习技术展现出了强大的参数拟合能力&#xff0c;人们通过堆叠固定的 layer 就能轻松设计出满足要求的参数拟合器。 例如&#xff0c;大部分图神经网络均基于消息传递的架构。在推理…

政安晨【零基础玩转各类开源AI项目】:解析开源项目的论文:Physical Non-inertial Poser (PNP)

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 本文解析的原始论文为&#xff1a;https://arxiv.org/…

有容微ASW3642 HDMI或者DP双向切换器,二进一出,一进二出支持4K60HZ分辨率

ASW3642描述&#xff1a; ASW3642 是一款 12 通道 1:2 或 2:1 双向多路复 用器/ 多路解复用器。 ASW3642 可由 2.6V 至 4.5V 的电源供电&#xff0c;适用于电池供电的应用。该器 件的导通电阻&#xff08;R ON &#xff09;较低并且 I/O 电容较小&#xff0c; 能…

Nginx配置详细解释:(1)全局配置

自启动安装nginx:前面博客有解释 systemctl stop firewalld setenforce 0 [rootNode1 ~]#:mkdir /data [rootNode1 ~]#:cd /data [rootNode1 data]#:yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel [rootNode1 data]#:wget http://nginx.o…

JMeter工具介绍

Jmeter功能概要 JDK常用文件目录介绍 Bin目录&#xff1a;存放可执行文件和配置文件 Docs目录&#xff1a;是Jmeter的API文档&#xff0c;用于开发扩展组件 printable_docs目录&#xff1a;用户帮助手册 lib目录&#xff1a;存放JMeter依赖的jar包和用户扩展所依赖的Jar包 修…

linux mtd分区应用操作sample之某分区擦除

什么是擦除? 把flash相关的区域数据bit置为1的过程 #include <mtd/mtd-user.h> #include <mtd/mtd-abi.h> struct erase_info_user {__u32 start; // 起点 __u32 length; //长度 块大小对齐 不然报参数失败 };struct erase_info_user64 {__u64 sta…

wandb安装与使用 —— 用于跟踪、可视化和协作机器学习实验的工具

文章目录 一、wandb简介二、wandb注册与登陆&#xff08;网页&#xff09; —— 若登录&#xff0c;则支持在线功能三、wandb安装与登陆&#xff08;命令行&#xff09; —— 若不登录&#xff0c;则只保留离线功能四、函数详解4.1、wandb.init() —— 初始化一个新的 wandb 实…