Oracle物理迁移

        在oracle中移动数据文件 --oracle数据库由数据文件,控制文件和联机日志文件三种文件组成。 --由于磁盘空间的变化,或基于数据库磁盘io性能的调整等,我们可能会考虑移动数据库文件,下面以linux平台为例,分别讨论三种数据库文件的移动方法。

一、移动数据文件

-- 可以用ALTER DATABASE,ALTER TABLESPACE两种方法移动数据文件。

ALTER DATABASE方法

-- 用此方法,可以移动任何表空间的数据文件

1.关闭数据库
[oracle@drcmx ~]$ sqlplus / as sysdba
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit;
​
2.检查数据库是否关闭
[oracle@drcmx ~]$ ps -ef |grep pmon
oracle     9805   3358  0 18:00 pts/1    00:00:00 grep --color=auto pmon
​
[oracle@drcmx ~]$ ss -lntup |grep 1521
tcp    LISTEN     0      128    [::]:1521               [::]:*                   users:(("tnslsnr",pid=9329,fd=11))
​
​
3.用操作系统命令移动数据文件:
-- 将数据文件 'test.ora' 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:
[oracle@drcmx ~]$ mv /ora/oracle/data1/test.ora /ora/oracle/data2
​
4. Mount数据库,用ALTER DATABASE命令将数据文件改名:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/test.ora' TO '/ora/oracle/data2/test.ora';
​
5. 打开数据库:
SQL> ALTER DATABASE OPEN;
SQL>SELECT NAME,STATUS FROM V$DATAFILE;
​

ALTER TABLESPACE方法

- 用此方法,要求此数据文件既不属于SYSTEM表空间,也不属于含有ACTIVE回滚段或临时段的表空间。
​
STEP1. 将此数据文件所在的表空间OFFLINE:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> ALTER TABLESPACE test OFFLINE;
SQL> EXIT;
​
STEP2. 用操作系统命令移动数据文件:
将数据文件 'test.ora' 从/ora/oracle/
data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/test.ora /ora/oracle/data2
​
STEP3. 用ALTER TABLESPACE命令改数据文件名:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> ALTER TABLESPACE test RENAME DATAFILE '/ora/oracle/data1/test.ora' TO '/ora/oracle/data2/test.ora';
​
STEP4. 将此数据文件所在的表空间ONLINE:
SQL> ALTER TABLESPACE test ONLINE;
SQL> SELECT NAME,STATUS FROM V$DATAFILE;
​

二. 移动控制文件

-- 控制文件 在 INIT.ORA文件中指定。移动控制文件相对比较简单,下数据库,
-- 编辑INIT.ORA,移动控制文件,重启动数据库。
​
STEP 1. 下数据库:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> SHUTDOWN;
SQL> EXIT;
​
STEP 2.用操作系统命令 移动控制文件:
--将控制文件'ctl3orcl.ora' 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/ctrlorcl3.ora /ora/oracle/data2
​
STEP 3. 编辑INIT.ORA文件:
INIT.ORA文件的在$ORACLE_HOME/dbs目录下,
修改参数 "control_files",其中指定移动后的控制文件:
control_files = (/ora/oracle/data1/ctrlorcl1.ora,/ora/oracle/data1/ctrlorcl2.ora,/ora/oracle/data2/ctrlorcl3.ora)
​
STEP 4. 重启动数据库:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> STARTUP;
SQL>SELECT name FROM V$CONTROLFILE;
SQL> EXIT;
​

三. 移动联机日志文件

STEP 1. 停数据库:
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> SHUTDOWN;
SQL> EXIT;
​
STEP 2. 用操作系统命令移动联机日志文件:
--将联机日志文件'redolog1.ora' 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/redolog1.ora /ora/oracle/data2
​
STEP 3. Mount数据库,用ALTER DATABASE 命令改联机日志文件名:.
$ sqlplus /nolog
SQL> CONNECT INTERNAL;
SQL> STARTUP MOUNT ;
SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/redolog1.ora' TO '/ora/oracle/data2/redolog1.ora';
​
STEP 4.重启动数据库: .
SQL> ALTER DATABASE OPEN;
SQL>SELECT MEMBER FROM V$LOGFILE;
​

四、整个数据库迁移

参考文章:oracle19c单机修改DB_NAME INSTANCE_NAME、PDB_oracle修改db_unique_name-优快云博客

4.1 数据库name查看

​
1.源端
SQL> show parameter name;  
​
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name           string
db_file_name_convert             string
db_name                  string  cmx
db_unique_name               string  cmx
global_names                 boolean     FALSE
instance_name                string  cmx
lock_name_space              string
log_file_name_convert            string
processor_group_name             string
service_names                string  cmx
​
###记录当前数据库dbid和name
select dbid,name from v$database;
​
2.目标端
SQL> show parameter name;
​
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name           string
db_file_name_convert             string
db_name                  string  drcmx
db_unique_name               string  drcmx
global_names                 boolean     FALSE
instance_name                string  drcmx
lock_name_space              string
log_file_name_convert            string
processor_group_name             string
service_names                string  drcmx
​
###记录当前数据库dbid和name
select dbid,name from v$database;

4.2 进行迁移

本机进行数据目录的移动
1.源端准备用于启动的参数文件
[oracle@drcmx ~]$ sqlplus / as sysdba
SQL> create pfile='/oradata/cmx/init1217.ora' from spfile;
SQL> exit;
​
[oracle@drcmx ~]$ ll /oradata/init1217.ora
-rw-r--r-- 1 oracle oinstall 900 Dec 17 18:26 /oradata/cmx/init1217.ora
​
2.源端和目标端关闭数据库
[oracle@drcmx ~]$ sqlplus / as sysdba
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit;
​
3.检查数据库是否关闭
[oracle@drcmx ~]$ ps -ef |grep pmon
oracle     9805   3358  0 18:00 pts/1    00:00:00 grep --color=auto pmon
​
[oracle@drcmx ~]$ ss -lntup |grep 1521
tcp    LISTEN     0      128    [::]:1521               [::]:*                   users:(("tnslsnr",pid=9329,fd=11))
​
4.将目标端将数据文件和参数文件备份
[oracle@drcmx /oradata]$ mv drcmx/  drcmx_bak/
[oracle@drcmx /oradata]$ ll
total 4
drwxr-x--- 2 oracle oinstall 179 Dec 17 17:39 drcmx_bak
-rw-r--r-- 1 oracle oinstall 901 Dec 17 18:30 init1217.ora
​
cd $ORACLE_HOME/dbs
mv spfiledrcmx.ora   spfiledrcmxbak.ora
​
​
5.传输源端数据库到目标端
[oracle@cmx /oradata]$ scp -r /oradata/* oracle@10.0.0.213:/oradata
oracle@10.0.0.213's password: 
​
​
6.目标端检查是否传输过来,并查看参数文件的最新位置
[oracle@drcmx /oradata]$ ll
total 0
drwxr-x--- 2 oracle oinstall 199 Dec 17 19:19 cmx
drwxr-x--- 2 oracle oinstall 179 Dec 17 17:39 drcmx_bak
​
[oracle@drcmx /oradata]$ ll cmx
total 1549672
-rw-r----- 1 oracle oinstall   9748480 Dec 17 19:19 control01.ctl
-rw-r--r-- 1 oracle oinstall       871 Dec 17 19:19 init1217.ora ##参数文件
-rw-r----- 1 oracle oinstall  52429312 Dec 17 19:19 redo01.log
-rw-r----- 1 oracle oinstall  52429312 Dec 17 19:19 redo02.log
-rw-r----- 1 oracle oinstall  52429312 Dec 17 19:19 redo03.log
-rw-r----- 1 oracle oinstall 534781952 Dec 17 19:19 sysaux01.dbf
-rw-r----- 1 oracle oinstall 775954432 Dec 17 19:19 system01.dbf
-rw-r----- 1 oracle oinstall  30416896 Dec 17 19:19 temp01.dbf
-rw-r----- 1 oracle oinstall  73408512 Dec 17 19:19 undotbs01.dbf
-rw-r----- 1 oracle oinstall   5251072 Dec 17 19:19 users01.dbf
​
7.查看参数文件中各文件的位置,是否有未创建的
[oracle@drcmx ~]$ cat   /oradata/cmx/init1217.ora
*.control_files='/oradata/cmx/control01.ctl','/oracle/dbsoft/fast_recovery_area/cmx/control02.ctl'
查看两个控制文件是否存在,不存在传输过来,并改变位置
​
7.1查看01控制文件是否存在,不存在手动创建
[oracle@drcmx /oracle/dbsoft/diag/rdbms/cmx/cmx/trace]$ ll /oradata/cmx/control01.ctl   ###已存在,则无需变动
-rw-r----- 1 oracle oinstall 9748480 Dec 17 19:37 /oradata/cmx/control01.ctl
​
7.2查看02控制文件是否存在,不存在手动创建 
[oracle@drcmx /oracle/dbsoft/diag/rdbms/cmx/cmx/trace]$ ll /oracle/dbsoft/fast_recovery_area/cmx/control02.ctl
ls: cannot access /oracle/dbsoft/fast_recovery_area/cmx/control02.ctl: No such file or directory  ###文件不存在,需要传输到目标端
​
准备目录
mkdir -p /oracle/dbsoft/fast_recovery_area/cmx/
​
源端进行文件传输
[oracle@cmx ~]$ scp -r /oracle/dbsoft/fast_recovery_area/cmx/control02.ctl oracle@10.0.0.213:/oracle/dbsoft/fast_recovery_area/cmx/
oracle@10.0.0.213's password: 
control02.ctl    
​
目标端查看
[oracle@drcmx /oracle/dbsoft/diag/rdbms/cmx/cmx/trace]$ ll /oracle/dbsoft/fast_recovery_area/cmx/control02.ctl
-rw-r----- 1 oracle oinstall 9748480 Dec 17 19:50 /oracle/dbsoft/fast_recovery_area/cmx/control02.ctl
​
​
7.3参数文件中,下方目录需要在目标端重新创建
mkdir -p /oracle/dbsoft/admin/cmx/adump
​
​
8.修改环境变量
[oracle@drcmx ~]$ cd 
[oracle@drcmx ~]$ vi .bash_profile
[oracle@drcmx ~]$ cat .bash_profile 
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# User specific environment and startup program
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/oracle/dbsoft/
export ORACLE_HOME=/oracle/dbsoft/product/ora11g
export ORACLE_SID=cmx  #修改
export ORACLE_TERM=xterm 
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
PATH=$PATH:$HOME/bin
export PATH
​
[oracle@drcmx ~]$ source .bash_profile 
[oracle@drcmx ~]$ echo $ORACLE_SID 
cmx
​
​
9.启动数据库
sqlplus / as sysdba
startup nomount pfile=/oradata/cmx/init1217.ora
    
启动后nomount状态后
    create spfile from pfile='/oradata/cmx/init1217.ora';
    shutdown immediate;
    startup;
    
10.检查数据库状态
SQL> select status from v$instance;
​
STATUS
------------
OPEN
​
SQL> show parameter name;
​
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name           string
db_file_name_convert             string
db_name                  string  cmx
db_unique_name               string  cmx
global_names                 boolean     FALSE
instance_name                string  cmx
lock_name_space              string
log_file_name_convert            string
processor_group_name             string
service_names                string  cmx
SQL> 
​
11.至此,数据库物理克隆成功
​
12.检查文件的位置
SQL> select name from v$datafile;  ###数据文件
SQL> select name from v$tempfile;  ###临时文件
SQL> select member from v$logfile; ###日志文件

4.3 修改数据库db_name

1 记录当前数据库dbid和name
SQL> select dbid,name from v$database;
​
      DBID NAME
---------- ---------
1078390580 CMX
​
​
​
2 修改dbname
shutdown immediate; 
startup mount; --nid需要在mount状态下才能做
SQL> !nid target=sys/oracle dbname=drcmx   ###填写为要修改的
​
DBNEWID: Release 11.2.0.4.0 - Production on Sun Dec 17 20:02:26 2023
​
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
​
Connected to database CMX (DBID=1078390580)
​
Connected to server version 11.2.0
​
Control Files in database:
    /oradata/cmx/control01.ctl
    /oracle/dbsoft/fast_recovery_area/cmx/control02.ctl
​
Change database ID and database name CMX to DRCMX? (Y/[N]) =>   ##确认是否要修改
Proceeding with operation
Changing database ID from 1078390580 to 3377472210
Changing database name from CMX to DRCMX
    Control File /oradata/cmx/control01.ctl - modified
    Control File /oracle/dbsoft/fast_recovery_area/cmx/control02.ctl - modified
    Datafile /oradata/cmx/system01.db - dbid changed, wrote new name
    Datafile /oradata/cmx/sysaux01.db - dbid changed, wrote new name
    Datafile /oradata/cmx/undotbs01.db - dbid changed, wrote new name
    Datafile /oradata/cmx/users01.db - dbid changed, wrote new name
    Datafile /oradata/cmx/temp01.db - dbid changed, wrote new name
    Control File /oradata/cmx/control01.ctl - dbid changed, wrote new name
    Control File /oracle/dbsoft/fast_recovery_area/cmx/control02.ctl - dbid changed, wrote new name
    Instance shut down
​
Database name changed to DRCMX.
Modify parameter file and generate a new password file before restarting.
Database ID for database DRCMX changed to 3377472210.
All previous backups and archived redo logs for this database are unusable.
Database is not aware of previous backups and archived logs in Recovery Area.
Database has been shutdown, open database with RESETLOGS option.
Succesfully changed database name and ID.
DBNEWID - Completed succesfully.
​
3.修改环境变量中的ORACLE_SID
[oracle@drcmx ~]$ echo $ORACLE_SID 
cmx
​
[oracle@drcmx ~]$ vi  .bash_profile 
export ORACLE_SID=drcmx  ###将SID修改为最新的db_name
​
[oracle@drcmx ~]$ source  .bash_profile 
[oracle@drcmx ~]$ echo $ORACLE_SID 
drcmx
​
​
4.修改参数文件中dbname
[oracle@drcmx ~]$ sqlplus / as sysdba
SQL> startup mount;
ORA-01103: database name ‘YZCDB’ in control file is not ‘CFCDB’
提示控制文件中的数据库名与实际的数据库名不匹配
执行下方命令,修改spfile
SQL> alter system set db_name=drcmx scope=spfile;
​
System altered.
​
​
5.关闭数据库,重新启动
SQL> shutdown immediate;
SQL> startup mount;
SQL> select dbid,name from v$database;
​
      DBID NAME
---------- ---------
3377472210 DRCMX
SQL> alter database open resetlogs;
​
SQL> show parameter name;
​
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name           string
db_file_name_convert             string
db_name                  string  DRCMX
db_unique_name               string  DRCMX
global_names                 boolean     FALSE
instance_name                string  drcmx   ###检查实例名是否被修改,未修改使用4.4章节修改
lock_name_space              string
log_file_name_convert            string
processor_group_name             string
service_names                string  DRCMX
​

4.4修改instance_name

1.停库
SQL> shutdown immediate;
​
​
2.修改环境变量中的ORACLE_SID
[oracle@drcmx ~]$ echo $ORACLE_SID 
cmx
​
[oracle@drcmx ~]$ vi  .bash_profile 
export ORACLE_SID=drcmx  ###将SID修改为最新的db_name
​
[oracle@drcmx ~]$ source  .bash_profile 
[oracle@drcmx ~]$ echo $ORACLE_SID 
drcmx
​
​
3.重命名spfile文件名
[oracle@drcmx ~]$ cd $ORACLE_HOME/dbs
[oracle@ora-recover01 dbs]$ mv spfilecmx.ora spfiledrcmx.ora
[oracle@drcmx /oracle/dbsoft/product/ora11g/dbs]$ ll
total 28
-rw-rw---- 1 oracle oinstall 1544 Dec 17 20:03 hc_cmx.dat
-rw-rw---- 1 oracle oinstall 1544 Dec 17 20:24 hc_drcmx.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15  2009 init.ora
-rw-r----- 1 oracle oinstall   24 Dec 17 19:31 lkCMX
-rw-r----- 1 oracle oinstall   24 Dec 17 17:39 lkDRCMX
-rw-r----- 1 oracle oinstall 1536 Dec 17 17:40 orapwdrcmx
-rw-r----- 1 oracle oinstall 2560 Dec 17 20:02 spfiledrcmx.ora
​
​
 4.启动数据库
 [oracle@drcmx ~]$ sqlplus / as sysdba
​
SQL*Plus: Release 11.2.0.4.0 Production on Sun Dec 17 20:34:42 2023
​
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
​
Connected to an idle instance.
​
SQL> startup;
​

4.5 重新注册监听

pdb无法连接时,使用下方命令,将服务名与pdb绑定
sqlplus / as sysdba
SQL> alter system set service_names=srvi17thduath,PDBI17UAT scope=both;
SQL> alter system register;
​
System altered.
​
SQL> host lsnrctl reload
​
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 17-DEC-2023 20:39:18
​
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
​
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
​
SQL> host lsnrctl status
​
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 17-DEC-2023 20:39:29
​
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
​
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                17-DEC-2023 17:53:15
Uptime                    0 days 2 hr. 46 min. 14 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/dbsoft/product/ora11g/network/admin/listener.ora
Listener Log File         /oracle/dbsoft/diag/tnslsnr/drcmx/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=drcmx)(PORT=1521)))
Services Summary...
Service "cmxXDB" has 1 instance(s).
  Instance "drcmx", status READY, has 1 handler(s) for this service...
Service "drcmx" has 1 instance(s).
  Instance "drcmx", status READY, has 1 handler(s) for this service...
The command completed successfully
​
​

注意: 如果listener.ora、 tnsnames.ora文件中含有原来的 SERVICE_NAME 名称的话,用编辑器做相应的修改。 针对数据库自启动文件: /etc/oratab , /etc/rc.local 文件也需要做相应的修改。

在pdb中新添加服务名
alter session set container = PDBI17UAT;
SQL> exec dbms_service.create_service('SRVI17THDCLONEHAP', 'SRVI17THDCLONEHAP');
SQL> exec dbms_service.start_service('SRVI17THDCLONEHAP');

4.6 传输密码文件到目标端

​
1.源端寻找密码文件
[oracle@cmx /oracle/dbsoft/product/ora11g/dbs]$ cd 
[oracle@cmx ~]$ cd $ORACLE_HOME/dbs
[oracle@cmx /oracle/dbsoft/product/ora11g/dbs]$ ls
hc_cmx.dat  init.ora  lkCMX  orapwcmx  spfilecmx.ora
[oracle@cmx /oracle/dbsoft/product/ora11g/dbs]$ ll /oracle/dbsoft/product/ora11g/dbs/orapwcmx
-rw-r----- 1 oracle oinstall 1536 Dec 17 17:18 /oracle/dbsoft/product/ora11g/dbs/orapwcmx
​
2.传输密码文件
[oracle@cmx /oracle/dbsoft/product/ora11g/dbs]$ scp  /oracle/dbsoft/product/ora11g/dbs/orapwcmx oracle@10.0.0.213:/oracle/dbsoft/product/ora11g/dbs/
oracle@10.0.0.213's password: 
orapwcmx                                                                   100% 1536     1.2MB/s   00:00   
​
3.目标端检查是否传输完成
[oracle@drcmx ~]$ cd $ORACLE_HOME/dbs
[oracle@drcmx /oracle/dbsoft/product/ora11g/dbs]$ ls
hc_cmx.dat  hc_drcmx.dat  init.ora  lkCMX  lkDRCMX  orapwcmx  orapwdrcmx  spfiledrcmx.ora
​
4.将密码文件重命名
cp  orapwcmx  orapwdrcmx(示例:orapw+$ORACLE_SID)
[oracle@drcmx /oracle/dbsoft/product/ora11g/dbs]$ cp  orapwcmx  orapwdrcmx
​

4.7 PDB 修改名称

1.防止修改用户名密码后应用一直在发起错误连接,可事先查询哪个IP在连接数据库,然后断开对应连接即可(这里需用到触发器记录客户端IP)**
select username,machine,terminal,program,client_info,logon_time from v$session order by logon_time desc; 
​
2.把PDB启动到restricted模式,防止新连接进入
SQL> alter pluggable database CFPDB open;
​
Pluggable database altered.
​
SQL> show pdbs
​
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 CFPDB                          READ WRITE NO
SQL> alter pluggable database CFPDB close;
​
Pluggable database altered.
​
SQL> show pdbs
​
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 CFPDB                          MOUNTED
SQL> alter pluggable database CFPDB open restricted;
​
Pluggable database altered.
​
SQL> show pdbs
​
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 CFPDB                          READ WRITE YES
SQL> select name,open_mode,restricted from V$pdbs;
​
NAME
--------------------------------------------------------------------------------
OPEN_MODE  RES
---------- ---
PDB$SEED
READ ONLY  NO
​
CFPDB
READ WRITE YES
​
​
3.进入PDB,修改名称
SQL> alter session set container=CFPDB;
​
Session altered.
​
SQL> alter pluggable database rename global_name to YZPDB;
​
Pluggable database altered.
​
​
4.重启PDB
SQL> alter pluggable database close immediate;
​
Pluggable database altered.
​
SQL> alter pluggable database open;
​
Pluggable database altered.
​
SQL> show pdbs
​
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 YZPDB                          READ WRITE NO
         
SQL> set linesize 600
SQL> select name, open_mode, restricted from v$pdbs;
​
NAME                                                                                                                             OPEN_MODE  RES
-------------------------------------------------------------------------------------------------------------------------------- ---------- ---
YZPDB                                                                                                                            READ WRITE NO
5.修改PDB数据文件目录
​
5.1  备份之前的pdb
cp -r CFPDB/ CFPDBBAK/
​
5.2在线修改
SQL> alter session set container=YZPDB;
​
Session altered.
​
SQL> select name from v$datafile;
​
NAME
--------------------------------------------------------------------------------
/oracle/app/db/oradata/YZCDB/CFPDB/system01.dbf
/oracle/app/db/oradata/YZCDB/CFPDB/sysaux01.dbf
/oracle/app/db/oradata/YZCDB/CFPDB/undotbs01.dbf
/oracle/app/db/oradata/YZCDB/CFPDB/users01.dbf
/oracle/app/db/oradata/YZCDB/CFPDB/cfuser01.dbf
​
SQL> select name from v$tempfile;
​
NAME
--------------------------------------------------------------------------------
/oracle/app/db/oradata/YZCDB/CFPDB/temp01.dbf
​
​
​
​
SQL> alter database move datafile '/oracle/app/db/oradata/YZCDB/CFPDB/system01.dbf' to '/oracle/app/db/oradata/YZCDB/YZPDB/system01.dbf';
​
Database altered.
​
SQL> alter database move datafile '/oracle/app/db/oradata/YZCDB/CFPDB/sysaux01.dbf' to '/oracle/app/db/oradata/YZCDB/YZPDB/sysaux01.dbf';
​
Database altered.
​
SQL> alter database move datafile '/oracle/app/db/oradata/YZCDB/CFPDB/undotbs01.dbf' to '/oracle/app/db/oradata/YZCDB/YZPDB/undotbs01.dbf'
  2  ;
​
Database altered.
​
SQL> alter database move datafile '/oracle/app/db/oradata/YZCDB/CFPDB/users01.dbf' to '/oracle/app/db/oradata/YZCDB/YZPDB/users01.dbf';
​
Database altered.
​
SQL> alter database move datafile '/oracle/app/db/oradata/YZCDB/CFPDB/cfuser01.dbf' to '/oracle/app/db/oradata/YZCDB/YZPDB/cfuser01.dbf';
​
Database altered.
​
SQL> alter database move datafile '/oracle/app/db/oradata/YZCDB/CFPDB/temp01.dbf' to '/oracle/app/db/oradata/YZCDB/YZPDB/temp01.dbf';
alter database move datafile '/oracle/app/db/oradata/YZCDB/CFPDB/temp01.dbf' to '/oracle/app/db/oradata/YZCDB/YZPDB/temp01.dbf'
*
ERROR at line 1:
ORA-01516: nonexistent log file, data file, or temporary file
"/oracle/app/db/oradata/YZCDB/CFPDB/temp01.dbf" in the current container
​
​

4.8 重建temp临时表空间

1.删除之前的temp表空间
SQL> alter session set container=YZPDB;
​
Session altered.
​
SQL> alter database tempfile '/oracle/app/db/oradata/YZCDB/CFPDB/temp01.dbf' drop including datafiles;
​
Database altered.
​
​
2.创建新的temp表空间
SQL> alter session set container=YZPDB;
SQL> alter tablespace TEMP add  tempfile '/oracle/app/db/oradata/YZCDB/YZPDB/temp01.dbf' size 50M autoextend on;
​
Tablespace altered.
​

注意: 如果安装时勾选了OMF管理方式,有两种方式move

1)常用方式 A 关闭数据库 B 在操作系统进行数据文件的mv操作 C 必须启动到mount状态 D 执行rman中常用的rename操作: alter database rename file ‘’ TO ‘’; E Open数据库

2)在表空间层进行move A Offline表空间 B 在操作系统进行 数据文件的mv操作 C 执行表空间文件的rename操作: alter tablespace rename datafile ‘’ TO ‘’; D Online表空间

4.9部署清理归档脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值