重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1413|回复: 0
打印 上一主题 下一主题

oracle12c使用备份集传输数据库

[复制链接]
跳转到指定楼层
楼主
发表于 2019-9-26 14:08:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 郑全 于 2020-3-28 13:18 编辑

Oracle 12C  Transport a Database to a Different Platform Using Backup Sets


可以从源平台传输整个数据库到有相同字节序的不同平台。当为了传输数据库而创建跨平台备份时,

可以在源平台或目标平台上执行对数据库的转换。在目标平台执行对数据库的转换的最大好处就是执行转换的开销从源平台转 移到了目标平台。
使用备份集执行跨平台数据库传输的先决条件

在为了跨平台传输数据库而创建跨平台备份之前需要满足以下条件:
.源数据库与目标数据库的spfile文件中的compatible参数必须设置为12.0.0或更高的版本。
.源数据库必须是read-only模式打开。
.dbms_tdb.check_db过程必须成功运行。
.源平台与目标平台必须有相同的字节序。


        下面的例子将使用备份集执行跨平台传输数据库,源平台为Linux 64位,目标平台为windows 64位其具体操作如下
1.在目标平台上创建数据库实例orcl

--设置环境变量ORACLE_SID

C:\Users\Administrator>set ORACLE_SID=orcl

--创建实例

C:\Users\Administrator>oradim -new -sid orcl -startmode m
输入 Oracle 服务用户的口令:
实例已创建。

--创建Oracle口令文件

C:\Users\Administrator>orapwd file=$ORACLE_HOME\database\pwdorcl.ora password=oracle


2.利用源数据库的spfile文件来为目标数据库创建spfile文件


SQL> create pfile='$ORACLE_HOME/dbs/initorcl.ora' from spfile;
File created.


将上面生成的initorcl.ora文件复制到目标平台D:\app\oracle\product\12.2.0\dbhome_1\database目录下并将其内容修改成如下所示


*.audit_file_dest='D:\app\oracle\admin\orcl\adump'
*.cluster_database=false
*.compatible='12.2.0'
*.control_files='D:\ORACLE\ORADATA\orcl\CONTROLFILE\control01.ctl'
*.db_block_size=8192
*.db_create_file_dest='D:\oracle\oradata\'
*.db_name='orcl'
*.diagnostic_dest='D:\oracle\'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=jyXDB)'
*.enable_pluggable_database=true


*.open_cursors=300
*.pga_aggregate_target=1g
*.processes=200
*.remote_login_passwordfile='exclusive'
*.sga_max_size=2147483648
*.sga_target=2147483648


*.undo_retention=8640
*.undo_tablespace='UNDOTBS1'



3.在目标平台上启动实例orcl


C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on 星期四 2月 1 01:23:54 2018
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
已连接到空闲例程。
SQL> startup nomount
ORACLE
例程已经启动。
Total System Global Area 2147483648 bytes
Fixed Size                  8920984 bytes
Variable Size            1392509032 bytes
Database Buffers          738197504 bytes
Redo Buffers                7856128 bytes


创建spfile参数文件并重启实例到nomount状态


SQL> create spfile from pfile='D:\oracle\product\12.2.0\dbhome_1\database\initorcl.ora';
文件已创建。

SQL> shutdown immediate
ORA-01507: ??????
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 2147483648 bytes
Fixed Size                  8920984 bytes
Variable Size            1392509032 bytes
Database Buffers          738197504 bytes
Redo Buffers                7856128 bytes

SQL> show parameter spfile
NAME                                 TYPE                           VALUE
------------------------------------ ----------------------         -----------------------------------------------------------
spfile                               string                         D:\ORACLE\PRODUCT\12.2.0\DBHOME_1\DATABASE\SPFILEorcl.ORA


测试tns连接实例jy是否能够成功


C:\Users\Administrator>sqlplus /nolog
SQL*Plus: Release 12.2.0.1.0 Production on 星期四 2月 1 18:01:52 2018
Copyright (c) 1982, 2016, Oracle.  All rights reserved.

SQL> conn / as sysdba
已连接。



4.使用有sysdba权限的用户通过SQL*Plus连接到源数据库,并查询v$transportable_platform来查询目标平台的名字,

因为传输整个数据库源平台与目标平台的字节序应该相同。


[oracle@jytest1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Thu Feb 1 18:06:37 2018
Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Connected to:Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> set long 200
SQL> set linesize 200



PLATFORM_NAME                            ENDIAN_FORMAT
---------------------------------------- --------------
HP-UX (64-bit)                           Big
AIX-Based Systems (64-bit)               Big
IBM Power Based Linux                    Big
Solaris[tm] OE (64-bit)                  Big
HP-UX IA (64-bit)                        Big
Apple Mac OS                             Big
Solaris[tm] OE (32-bit)                  Big
IBM zSeries Based Linux                  Big
Solaris Operating System (x86)           Little
HP IA Open VMS                           Little
Solaris Operating System (x86-64)        Little

PLATFORM_NAME                            ENDIAN_FORMAT
---------------------------------------- --------------
Microsoft Windows x86 64-bit             Little
Linux x86 64-bit                         Little

Microsoft Windows IA (64-bit)            Little
Apple Mac OS (x86-64)                    Little
Linux IA (64-bit)                        Little
HP Tru64 UNIX                            Little
Linux IA (32-bit)                        Little
Microsoft Windows IA (32-bit)            Little
HP Open VMS                              Little

20 rows selected.


我这里源平台为Linux x86 64-bit,目标平台为Microsoft Windows IA (64-bit),两个平台的字节序都是Little


5.给RMAN备份输出文件选择命名方法
使用backup命令的format子句来为备份输出文件选择输出方法。

比如使用format子句来为备份输出文件指定存储目录/ora_backup/tdb并且为每个文件生成以transport_为前缀的唯一文件名。

FORMAT '/ora_backup/tdb/transport_%U'



6.启动RMAN连接到源数据库并将重启源数据库并以只读方式打开。


$ rman target /



RMAN> shutdown immediate

RMAN> startup mount

RMAN> alter database open read only;

7.在backup命令中使用for transport或to platform子句来备份源数据库。

下面的例子对整个数据库创建跨平台传输备份。


跨平台数据库备份被存储在/tmp 目录中。


RMAN> backup as compressed backupset
2>      to platform ='Microsoft Windows x86 64-bit'
3>      format '/tmp/trans_%U' database ;

Starting backup at 28-MAR-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=8 device type=DISK
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=+DATA/ORCL/DATAFILE/example.266.1032447363
channel ORA_DISK_1: starting piece 1 at 28-MAR-20
channel ORA_DISK_1: finished piece 1 at 28-MAR-20
piece handle=/tmp/trans_c2us7fhf_1_1 tag=TAG20200328T115943 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=+DATA/ORCL/DATAFILE/system.258.1032447273
channel ORA_DISK_1: starting piece 1 at 28-MAR-20
channel ORA_DISK_1: finished piece 1 at 28-MAR-20
piece handle=/tmp/trans_c3us7fhi_1_1 tag=TAG20200328T115943 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00003 name=+DATA/ORCL/DATAFILE/sysaux.257.1032447237
channel ORA_DISK_1: starting piece 1 at 28-MAR-20
channel ORA_DISK_1: finished piece 1 at 28-MAR-20
piece handle=/tmp/trans_c4us7fhp_1_1 tag=TAG20200328T115943 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00002 name=/home/oracle/tsp_test01.dbf
input datafile file number=00004 name=+DATA/ORCL/DATAFILE/undotbs1.260.1032447319
input datafile file number=00006 name=+DATA/ORCL/DATAFILE/users.259.1032447317
input datafile file number=00007 name=+DATA/ORCL/DATAFILE/tsp_fda.269.1035737415
input datafile file number=00008 name=+DATA/ORCL/DATAFILE/tsp_sztech.270.1036233829
channel ORA_DISK_1: starting piece 1 at 28-MAR-20
channel ORA_DISK_1: finished piece 1 at 28-MAR-20
piece handle=/tmp/trans_c5us7fhs_1_1 tag=TAG20200328T115943 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 28-MAR-20

[oracle@dbserver tmp]$ ls -ltr trans_c*
-rw-r----- 1 oracle asmadmin  29171712 Mar 28 11:59 trans_c2us7fhf_1_1
-rw-r----- 1 oracle asmadmin 280363008 Mar 28 11:59 trans_c3us7fhi_1_1
-rw-r----- 1 oracle asmadmin 154673152 Mar 28 11:59 trans_c4us7fhp_1_1
-rw-r----- 1 oracle asmadmin  15663104 Mar 28 11:59 trans_c5us7fhs_1_1


备份源数据库的控制文件到跨踪文件中用于在目标平台为目标数据库重新创建控制文件


SQL> alter session set tracefile_identifier='create';
Session altered.
SQL> alter database backup controlfile to trace resetlogs;
Database altered.


8.将在源平台上使用rman backup命令生成的备份集与备份的控制文件传输到目标平台的D:\oracle\oradata\orcl 目录中



9.使用rman连接到目标数据库并确保目标数据库(单实例CDB)处于nomount状态


C:\Users\Administrator>rman target sys/abcd@jy
恢复管理器: Release 12.2.0.1.0 - Production on 星期四 2月 1 19:55:44 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
已连接到目标数据库: JY (未装载)


10.使用有foreign database子句的restore命令来还原从源平台传输过来的备份集



RMAN> restore foreign database to new

2>         from backupset 'd:\oracle\oradata\orcl\trans_c2us7fhf_1_1'
                     backupset 'd:\oracle\oradata\orcl\trans_c3us7fhi_1_1'
                     backupset 'd:\oracle\oradata\orcl\trans_c4us7fhp_1_1'
                     backupset 'd:\oracle\oradata\orcl\trans_c5us7fhs_1_1';

启动 restore 于 28-3月 -20
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 正在还原备份片段中的所有外部文件
通道 ORA_DISK_1: 正在读取备份片段 d:\oracle\oradata\orcl\trans_c2us7fhf_1_1
通道 ORA_DISK_1: 正在将外部文件 5 还原到 D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_EXAMPLE_H7XMZ54X_.DBF
通道 ORA_DISK_1: 外部片段句柄=d:\oracle\oradata\orcl\trans_c2us7fhf_1_1
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:16
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 正在还原备份片段中的所有外部文件
通道 ORA_DISK_1: 正在读取备份片段 d:\oracle\oradata\orcl\trans_c3us7fhi_1_1
通道 ORA_DISK_1: 正在将外部文件 1 还原到 D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_SYSTEM_H7XMZO5X_.DBF
通道 ORA_DISK_1: 外部片段句柄=d:\oracle\oradata\orcl\trans_c3us7fhi_1_1
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:16
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 正在还原备份片段中的所有外部文件
通道 ORA_DISK_1: 正在读取备份片段 d:\oracle\oradata\orcl\trans_c4us7fhp_1_1
通道 ORA_DISK_1: 正在将外部文件 3 还原到 D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_SYSAUX_H7XN057R_.DBF
通道 ORA_DISK_1: 外部片段句柄=d:\oracle\oradata\orcl\trans_c4us7fhp_1_1
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:21:23
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 正在还原备份片段中的所有外部文件
通道 ORA_DISK_1: 正在读取备份片段 d:\oracle\oradata\orcl\trans_c5us7fhs_1_1
通道 ORA_DISK_1: 正在将外部文件 4 还原到 D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_UNDOTBS1_H7XO88RB_.DBF
通道 ORA_DISK_1: 正在将外部文件 6 还原到 D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_USERS_H7XO88RM_.DBF
通道 ORA_DISK_1: 正在将外部文件 7 还原到 D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TSP_FDA_H7XO88RQ_.DBF
通道 ORA_DISK_1: 正在将外部文件 2 还原到 D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TSP_TEST_H7XO88RT_.DBF
通道 ORA_DISK_1: 正在将外部文件 8 还原到 D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\O1_MF_TSP_SZTE_H7XO88RX_.DBF
通道 ORA_DISK_1: 外部片段句柄=d:\oracle\oradata\orcl\trans_c5us7fhs_1_1
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:04
完成 restore 于 28-3月 -20

把这些文件改一下名字:

D:\oracle\oradata\orcl\ORCL\DATAFILE>dir
驱动器 D 中的卷是 新加卷
卷的序列号是 7038-25DA
D:\oracle\oradata\orcl\ORCL\DATAFILE 的目录
2020/03/28  13:00    <DIR>          .
2020/03/28  13:00    <DIR>          ..
2020/03/28  12:17     1,304,174,592 example01.dbf
2020/03/28  12:18       849,354,752 sysaux01.dbf
2020/03/28  12:18       849,354,752 system01.dbf
2020/03/28  12:39        20,979,712 tsp_fda01.dbf
2020/03/28  12:39        10,493,952 tsp_sztech01.dbf
2020/03/28  12:39        10,493,952 tsp_test01.dbf
2020/03/28  12:39       162,537,472 undotbs1.dbf
2020/03/28  12:39       119,283,712 users01.dbf
               8 个文件  3,326,672,896 字节
               2 个目录 70,361,075,712 可用字节


11.在目标平台上使用备份的控制文件来为目标数据库创建控制文件,将备分的控制文件记录的源数据文件修改成还原后的数据文件名,其创建语句如下


SQL>

CREATE CONTROLFILE REUSE SET DATABASE "ORCL" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 SIZE 50M BLOCKSIZE 512,
  GROUP 2 SIZE 50M BLOCKSIZE 512,
  GROUP 3 SIZE 50M BLOCKSIZE 512
DATAFILE
  'D:\oracle\oradata\orcl\ORCL\DATAFILE\system01.dbf',
  'D:\oracle\oradata\orcl\ORCL\DATAFILE\tsp_test01.dbf',
  'D:\oracle\oradata\orcl\ORCL\DATAFILE\sysaux01.dbf',
  'D:\oracle\oradata\orcl\ORCL\DATAFILE\undotbs1.dbf',
  'D:\oracle\oradata\orcl\ORCL\DATAFILE\example01.dbf',
  'D:\oracle\oradata\orcl\ORCL\DATAFILE\users01.dbf',
  'D:\oracle\oradata\orcl\ORCL\DATAFILE\tsp_fda01.dbf',
  'D:\oracle\oradata\orcl\ORCL\DATAFILE\tsp_sztech01.dbf'
CHARACTER SET AL32UTF8


  ;控制文件已创建。

SQL>  select name from v$datafile;
NAME
--------------------------------------------------------------------------------
D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\SYSTEM01.DBF
D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\TSP_TEST01.DBF
D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\SYSAUX01.DBF
D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\UNDOTBS1.DBF
D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\EXAMPLE01.DBF
D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\USERS01.DBF
D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\TSP_FDA01.DBF
D:\ORACLE\ORADATA\ORCL\ORCL\DATAFILE\TSP_SZTECH01.DBF
已选择 8 行。

12.以open resetlogs选项打开数据库

SQL> alter database open resetlogs;

数据库已更改。


13.给CDB数据库增加临进表空间数据文件


SQL> alter tablespace temp add tempfile 'D:\oracle\oradata\orcl\ORCL\DATAFILE\temp01.dbf'     size 100M  reuse autoextend on;
表空间已更改。


到此使用备份集跨平台传输整个数据库就完成了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-23 22:29 , Processed in 0.113498 second(s), 19 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表