OCP课程60:管理Ⅰ之管理数据库空间

课程目标:

  • 4-KB扇区磁盘概念及使用
  • 使用可传输表空间
  • 可传输数据库概念

1、数据库存储

clipboard

数据库存储

数据库包括物理结构和逻辑结构。由于物理结构和逻辑结构是分开的,因此管理数据的物理存储时不会影响对逻辑存储结构的访问。

磁盘是数据库的主要存储介质,目前主要有512 字节的扇区,而拥有4 KB 大扇区的磁盘即将上市,它们可以用较低的开销提供更高的存储容量。Oracle DB 可以通过特定于平台的设备驱动程序访问硬盘。(数据库写进程和日志写进程[和ASM 进程] 可直接向磁盘进行写入,无需通过操作系统。)

Oracle Database 11gR2 检测磁盘扇区大小并使用高容量磁盘且不会导致性能下降(原因之一是内部优化减少了可能会发生的重做空间浪费,具有许多短时事务处理的应用程序,如邮件系统,可能会发生重做空间浪费)。


2、支持4-KB扇区磁盘

clipboard[1]

4 KB 扇区磁盘有物理扇区(以灰色显示)和逻辑扇区(以蓝色显示)。有二种类型的4 KB 扇区磁盘:仿真模式和本机模式。

? 仿真模式下的4 KB 扇区磁盘每一个物理扇区具有八个逻辑扇区,如示例所示。这类磁盘维护有一个到4 KB 物理扇区的512 字节接口-即逻辑块地址(LBA) 引用磁盘上的512 字节。

在仿真模式中性能可能会降低,因为磁盘驱动器将4 KB 扇区读取到磁盘高速缓存内存中,更改512 字节部分,并将整个4 KB 扇区回写到磁盘。

? 本机模式下的4 KB 扇区磁盘每一个物理扇区具备一个逻辑扇区,如示例中所示。

因此,只有4 KB 接口。也就是说,LBA 引用磁盘上的4,096 字节。


3、使用4-KB扇区磁盘

clipboard[2]

仿真模式:

? 建议为日志使用4 KB 块大小

? 建议为数据文件使用4 KB块大小(或更大)

不受影响:

? 控件文件块大小:16 KB

本机模式:

? 日志必须使用4 KB 块大小

? 数据文件必须使用4 KB 块大小(或更大)

在Oracle Database 11gR2 中,4 KB 扇区磁盘主要影响重做日志文件。这包括联机重做日志,备用重做日志和归档日志。Oracle 建议在4 KB 仿真模式磁盘上创建4 KB 块大小的日志。在4 KB 本机模式磁盘上,必须创建4 KB 块大小的日志。

也就是说,重做块大小必须与物理磁盘扇区大小相匹配(对于512 字节和4 KB 本机模式磁盘)。否则,你会收到ORA-1378 错误。对于4 KB 仿真模式磁盘,重做块大小可以是512 或4,096 字节。4 KB 是首选块大小。在4 KB 仿真磁盘上创建大小为512 字节的块时,预警日志中会写入一条警告,指明块大小不匹配将导致性能下降。ASM 磁盘组也是如此。

4 KB 扇区磁盘还会影响Oracle 数据文件。Oracle DB 允许你在512 字节扇区磁盘上创建2 KB 块大小的数据文件。使用4 KB 扇区磁盘时,Oracle 建议你在4 KB 仿真模式磁盘上创建4 KB(或更大)块大小的数据文件。在4 KB 本机模式磁盘上,必须创建4 KB(或更大)块大小的日志。

控制文件块大小已经为16 KB。因此,4 KB 扇区磁盘不影响控制文件。

例子:查看控制文件,数据文件和日志文件的块大小

SQL> select name,block_size,file_size_blks from v$controlfile;

NAME                                               BLOCK_SIZE FILE_SIZE_BLKS

-------------------------------------------------- ---------- --------------

+DATA/stone/controlfile/current.260.906387137           16384            604

+FRA/stone/controlfile/current.256.907584321            16384            604

SQL> select file#,block_size from v$datafile;

     FILE# BLOCK_SIZE

---------- ----------

         1       8192

         2       8192

         3       8192

         4       8192

         5       8192

         6       8192

         7       8192

         8       8192

         9       8192

        10       8192

        11       8192

     FILE# BLOCK_SIZE

---------- ----------

        12       8192

        13       8192

13 rows selected.

SQL> select group#,blocksize from v$log;

    GROUP#  BLOCKSIZE

---------- ----------

         1        512

         2        512

         3        512


4、指定磁盘扇区大小

clipboard[3]

使用以下命令的SECTOR_SIZE和BLOCKSIZE子句:

? CREATE DISKGROUP

? ALTER DATABASE

? CREATE DATABASE

? CREATE CONTROL FILE

CREATE DATABASE sample NORESETLOGS FORCE LOGGING

ARCHIVELOG

LOGFILE

GROUP 1 '$ORACLE_BASE/oradata/sample/redo01.log'

SIZE 100MBLOCKSIZE 4096,

GROUP 2 '$ORACLE_BASE/oradata/sample/redo02.log'

SIZE 100MBLOCKSIZE 4096

DATAFILE

...

指定磁盘扇区大小

在自动存储管理(ASM) 环境下,你可以为磁盘组设置SECTOR_SIZE属性。该属性只能在创建磁盘组时设置(通过使用CREATE DISKGROUP命令)。

你可以使用以下命令的新增BLOCKSIZE子句指定日志文件的大小:

? ALTER DATABASE

? CREATE DATABASE

? CREATE CONTROL FILE

与在512 字节磁盘上新建数据库相比,在4 KB 扇区磁盘上新建数据库没有额外的工作。在GUI 环境中没有更改。

你可以选择在CREATE DATABASE命令中使用BLOCKSIZE子句,如示例中所示。如果未指定块大小,Oracle DB 将检查底层磁盘扇区大小,并在创建重做日志时使用该磁盘扇区大小作为块大小。因此,默认情况下,重做日志块大小是磁盘扇区大小,而不是之前的512 字节扇区大小。

例子:在非4KB扇区磁盘创建4KB块大小日志文件报错

SQL> alter database add logfile group 4 size 51200K blocksize 4096;

alter database add logfile group 4 size 51200K blocksize 4096

*

ERROR at line 1:

ORA-01378: The logical block size (4096) of file +DATA is not compatible with the disk sector size (media sector size is 512 and host sector size is 512)


5、传输表空间

clipboard[4]

? 可跨平台移动的表空间:

– 简化数据仓库和数据集市之间的数据移动

– 允许从一个平台向另一个平台迁移数据库

? 支持的平台包括:

移动表空间

使用可移动表空间是在两个Oracle DB 之间移动大量数据的最快方式。使用可移动表空间,可以将Oracle 数据文件(包含表数据、索引和几乎其它所有Oracle DB 对象)从一个数据库移动到另一个数据库。而且,与导入和导出类似,可移动表空间除了移动数据以外,还提供了一种移动元数据的机制。

可以使用可移动表空间功能跨平台移动数据。此功能简化了从数据仓库环境向数据集市(数据集市通常在较小的平台上运行)分发数据的过程。此功能还允许通过重建字典并移动用户表空间的方式,将数据库从一个平台迁移到另一个平台。

对于相同数据而言,使用可移动表空间移动数据比执行导入/导出或卸载/加载的速度要快得多。这是因为,包含所有实际数据的数据文件只是被复制到目标位置,只有表空间对象的元数据通过数据泵传送到新数据库。

为了能够将数据文件从一个平台移动到另一个平台,必须确保源系统和目标系统都在支持的平台上运行。

注:可跨平台移动的表空间功能要求两个平台使用相同的字符集。


6、概念:最小兼容等级

clipboard[5]

? 源数据库和目标数据库都必须将COMPATIBLE设置为10.0.0或更高。

? 数据文件头是可识别平台的。

? 在移动前,请确保所有只读文件和脱机文件是可识别平台的。

源数据库和目标数据库都需要先将其数据库COMPATIBLE初始化参数提高到10.0.0或更高,才能使用可跨平台移动的表空间功能。

COMPATIBLE设置为10.0.0(或更高)时,在Oracle Database 10g或11g下首次打开数据文件时,数据文件将成为可识别平台的。这在图表中体现为复选标记。每个文件都可以确定其所属的平台。这些文件在磁盘上有相同的文件头块格式,这些格式用于文件标识和验证。只读文件和脱机文件只有在变为读/写状态或变为联机之后才能提高其兼容性。这意味着,在Oracle Database 10g版本之前的数据库中,处于只读状态的表空间必须至少变为读/写状态一次才能使用可跨平台移动的功能。


7、最小兼容等级

clipboard[6]

最低兼容级别

创建可移动表空间集时,Oracle DB 会计算运行目标数据库必须满足的最低兼容级别。这称为可移动集的兼容级别。从Oracle Database 11g开始,始终可将某个表空间移动到具有相同或更高兼容性设置的数据库,而不管目标数据库是基于相同的平台,还是基于不同的平台。如果可移动集的兼容级别高于目标数据库的兼容级别,则数据库将发出错误消息。

上表显示了不同情形下源表空间和目标表空间的最低兼容性要求。源数据库和目标数据库不需要具有相同的兼容性设置。

在第一次打开数据文件后,每个文件都可以确定其所属的平台。这些文件在磁盘上有相同的文件头块格式,这些格式用于文件标识和验证。只读文件和脱机文件只有在变为读/写状态或变为联机之后才能提高其兼容性。


8、传输表空间过程

clipboard[7]

要将表空间从一个平台移动到另一个平台(源到目标),必须将表空间集内的数据文件转换为目标数据库可以理解的格式。虽然使用Oracle DB 时磁盘结构符合通用格式,但源平台和目标平台仍有可能使用不同的endian 格式(字节顺序)。转至不同的endian 平台时,必须使用RMAN 实用程序的CONVERT命令来转换字节顺序。可以在源平台或目标平台上执行此操作。对于endian 格式相同的平台,则不需要转换。

示例中的图形描述了从源平台向目标平台移动表空间可能用到的步骤。但是,也可以在将文件传送到目标平台后执行转换。必须在目标平台上执行最后两步。

一般情况下,此过程与使用Oracle DB Server 的旧发行版时的过程相同,除非两个平台使用不同的endian 格式。此处假定两个平台都支持跨平台移动。

注:读写数据时,字节顺序会影响结果。例如,双字节整数值1在big-endian 系统(如Sun SPARC Solaris)上写为0x0001,而在little-endian 系统(如兼容Intel 的PC)上写为0x0100。


9、确定平台的endian format

clipboard[8]

SELECT tp.endian_format

FROM v$transportable_platform tp, v$database d

WHERE tp.platform_name = d.platform_name;

确定平台的Endian 格式

可以查询V$TRANSPORTABLE_PLATFORM来确定两个平台的endian 顺序是否相同。

V$DATABASE有两个列可以用于确定你自己的平台名称和平台标识符。

运行下面的查询可获得受支持的平台及其endian 格式的完整列表:

SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM;

PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT

----------- -------------------------------- --------------

1 Solaris[tm] OE (32-bit) Big

2 Solaris[tm] OE (64-bit) Big

7 Microsoft Windows IA (32-bit) Little

10 Linux IA (32-bit) Little

6 AIX-Based Systems (64-bit) Big

3 HP-UX (64-bit) Big

5 HP Tru64 UNIX Little

4 HP-UX IA (64-bit) Big

11 Linux IA (64-bit) Little

15 HP Open VMS Little

8 Microsoft Windows IA (64-bit) Little

9 IBM zSeries Based Linux Big

13 Linux 64-bit for AMD Little

16 Apple Mac OS Big

12 Microsoft Windows 64-bit for AMD Little

17 Solaris Operating System (x86) Little

18 IBM Power Based Linux Big

19 HP IA Open VMS Little

20 Solaris Operating System (AMD64) Little

例子:查看当前数据库的Endian格式

SQL> SELECT tp.endian_format

  2  FROM v$transportable_platform tp, v$database d

  3  WHERE tp.platform_name = d.platform_name;

ENDIAN_FORMAT

--------------

Little


10、使用RMAN的CONVERT命令

clipboard[9]

RMAN:

? 将表空间、数据文件或数据库转换为目标平台的格式

? 不更改输入文件

? 将转换的文件写入到输出目标

CONNECT TARGET SYS@orcl

RMAN>

SQL 'ALTER TABLESPACE hr READ ONLY';

CONVERT TABLESPACEhr

TO PLATFORM 'Solaris[tm] OE (64-bit)'

FORMAT '/tmp/transport_to_solaris/%U';;


使用RMAN 的CONVERT命令

在执行跨平台传输的准备工作期间,使用RMAN CONVERT命令,将表空间、数据文件或数据库转换为目标平台的格式。CONVERT不改变输入文件,因为转换不是原地执行的。

RMAN 将转换的文件写入到指定的输出目标。

CONVERT TABLESPACE示例:

? 假设你在Linux 32 位平台上有一个ORCL数据库,你想将其传输到Solaris 64 位平台上。

? 作为TARGET 连接至源数据库(已装载或已打开的)。

? 转换时,表空间必须是只读的。

? 结果是/tmp/transport_to_solaris/目录中的一组转换的数据文件,其中的数据以适合Solaris 64 位平台的正确endian 顺序排列。

限制:CONVERT命令不处理需要endian 转换的用户数据类型。如果数据库建立在底层类型(这些类型以平台特定的格式存储数据)之上,要在数据库之间传输对象,可以使用数据泵导入和导出实用程序。

例子:转换Endian

RMAN> sql 'alter tablespace ts read only';

sql statement: alter tablespace ts read only

RMAN> convert tablespace ts to platform 'Solaris[tm] OE (64-bit)'

2> format '/home/oracle/trans/%U';

Starting conversion at source at 31-MAR-16

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=58 device type=DISK

channel ORA_DISK_1: starting datafile conversion

input datafile file number=00011 name=+DATA/stone/datafile/ts.261.907752919

converted datafile=/home/oracle/trans/data_D-STONE_I-3016613505_TS-TS_FNO-11_2nr1sjrp

channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01

Finished conversion at source at 31-MAR-16

Starting Control File and SPFILE Autobackup at 31-MAR-16

piece handle=+FRA/stone/autobackup/2016_03_31/s_907956091.271.907956093 comment=NONE

Finished Control File and SPFILE Autobackup at 31-MAR-16

[oracle@oracletest1 ~]$ ls trans/

data_D-STONE_I-3016613505_TS-TS_FNO-11_2nr1sjrp


11、使用EM进行可传输表空间

clipboard[10]

可使用Oracle Enterprise Manager 来实施可移动表空间。在“Database(数据库)”主页中,单击“Data Movement(数据移动)”文件夹选项卡,然后单击“Move Database Files(移动数据库文件)”部分下的“Transport Tablespaces(移动表空间)”。选择“Generate a transportable table set(生成一个可移动表集)”,并提供oracle用户的登录身份证明,然后单击“Continue(继续)”。在“Select Tablespaces(选择表空间)”页上,单击“Tablespace(表空间)”按钮从显示的列表中添加要移动的表空间。在接近页面底部的位置,选择要在处理表空间之前完成的封闭性检查的级别(必须选择一项)。封闭性检查会检查表空间中的对象依赖关系。完成后,单击“Next(下一步)”。在封闭性检查运行过程中,等待一会儿。如果该项检查发现任何问题,请先解决问题然后再继续。


12、使用EM进行可传输表空间

clipboard[11]

在“Destination Characteristics(目标特征)”页上,必须提供目标平台和字符集。在“Destination Database Platform(目标数据库平台)”部分下,从下拉列表中选择目标计算机的操作系统。如果目标平台与源平台不同,Oracle Enterprise Manger 会执行数据转换。

继续转到该页的“Destination Character Set(目标字符集)”部分,从下拉列表中选择目标字符集和国家字符集。这些字符集必须与源字符集兼容。单击“Next(下一步)”继续时,Oracle Enterprise Manager 会检查字符集的兼容性。如果选择的字符集被标记为不兼容,则会返回到“Destination Characteristics(目标特征)”页以便你更正所做的选择。


13、使用EM进行可传输表空间

clipboard[12]

在“Schedule(调度)”页上,为默认作业名称提供有意义的说明。可以选择立即启用作业,也可以调度作业以后执行。完成了选择后,单击“Next(下一步)”按钮继续操作。在复查页上,可以验证您的选择,然后提交作业以便执行。如果各个条目都正确,则单击“Submit Job(提交作业)”按钮。单击“Back(上一步)”按钮以更正任何不正确的条目。

例子:使用EM传输表空间

clipboard[13]

clipboard[14]

clipboard[15]
clipboard[16]

clipboard[17]

clipboard[18]

clipboard[19]

clipboard[20]

clipboard[21]

例子:使用SQL进行传输表空间

源端查看字节顺序:

SQL> SELECT tp.endian_format FROM v$transportable_platform tp, v$database d WHERE tp.platform_name = d.platform_name;

ENDIAN_FORMAT

--------------

Little

目的端查看字节顺序:

SQL> SELECT tp.endian_format FROM v$transportable_platform tp, v$database d WHERE tp.platform_name = d.platform_name;

在源端创建测试表空间和表:

SQL> create tablespace tts01;       

Tablespace created.

SQL> create table emp01 tablespace tts01 as select * from hr.employees;

Table created.

确认源端和目的端的目录对象:

SQL> select * from dba_directories where directory_name='DATA_PUMP_DIR';

OWNER      DIRECTORY_NAME                 DIRECTORY_PATH

---------- ------------------------------ ----------------------------------------

SYS        DATA_PUMP_DIR                  /u01/app/oracle/admin/stone/dpdump/

SQL> select * from dba_directories where directory_name='DATA_PUMP_DIR';

OWNER      DIRECTORY_NAME                 DIRECTORY_PATH

---------- ------------------------------ ----------------------------------------

SYS        DATA_PUMP_DIR                  /u01/app/oracle/admin/stone/dpdump/

检测源端表空间的自包含:

SQL> exec dbms_tts.transport_set_check('TTS01');

PL/SQL procedure successfully completed.

SQL> select * from transport_set_violations;

no rows selected

将源端的表空间设置为readonly

SQL> alter tablespace tts01 read only;

Tablespace altered.

导出源端的元数据

[oracle@oeldb1 ~]$ expdp dumpfile=tts01.dmp logfile=tts01.log transport_tablespaces=tts01

Export: Release 11.2.0.4.0 - Production on Thu Aug 25 22:31:25 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Username: / as sysdba

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYS"."SYS_EXPORT_TRANSPORTABLE_01":  /******** AS SYSDBA dumpfile=tts01.dmp logfile=tts01.log transport_tablespaces=tts01

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

Master table "SYS"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded

******************************************************************************

Dump file set for SYS.SYS_EXPORT_TRANSPORTABLE_01 is:

  /u01/app/oracle/admin/stone/dpdump/tts01.dmp

******************************************************************************

Datafiles required for transportable tablespace TTS01:

  /u01/app/oracle/oradata/STONE/datafile/o1_mf_tts01_cvxz0p42_.dbf

Job "SYS"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at Thu Aug 25 22:32:54 2016 elapsed 0 00:01:21

将dump文件和表空间对应的数据文件拷贝到目的端相应目录:

[oracle@oeldb1 ~]$ scp /u01/app/oracle/admin/stone/dpdump/tts01.dmp oracle@192.168.247.142:/u01/app/oracle/admin/stone/dpdump

[oracle@oeldb1 ~]$ scp /u01/app/oracle/oradata/STONE/datafile/o1_mf_tts01_cvxz0p42_.dbf oracle@192.168.247.142:/u01/app/oracle/oradata/STONE/datafile/

在目的端导入元数据

[oracle@oeldb2 ~]$ impdp dumpfile=tts01.dmp transport_datafiles=/u01/app/oracle/oradata/STONE/datafile/o1_mf_tts01_cvxz0p42_.dbf

Import: Release 11.2.0.4.0 - Production on Thu Aug 25 23:08:08 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Username: / as sysdba

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Master table "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded

Starting "SYS"."SYS_IMPORT_TRANSPORTABLE_01":  /******** AS SYSDBA dumpfile=tts01.dmp transport_datafiles=/u01/app/oracle/oradata/STONE/datafile/o1_mf_tts01_cvxz0p42_.dbf

Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK

Processing object type TRANSPORTABLE_EXPORT/TABLE

Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK

Job "SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Thu Aug 25 23:08:21 2016 elapsed 0 00:00:06

在目的端查看表空间状态并置为读写

SQL> select tablespace_name,status from dba_tablespaces where tablespace_name='TTS01';

TABLESPACE_NAME                STATUS

------------------------------ ---------

TTS01                          READ ONLY

SQL> alter tablespace tts01 read write;

Tablespace altered.

SQL> select tablespace_name,status from dba_tablespaces where tablespace_name='TTS01';

TABLESPACE_NAME                STATUS

------------------------------ ---------

TTS01                          ONLINE

SQL> select count(*) from emp01;

  COUNT(*)

----------

       107


14、传输数据库

clipboard[22]

? 概述可移动表空间功能。

? 可以轻松地从数据仓库环境向数据集市(数据集市通常在较小的平台上运行)分发数据子集。

? 数据库可以非常迅速地从一个平台迁移到另一个平台。

可以使用可移动表空间功能将一个数据库迁移到另一个平台,方法是在目标平台上创建一个新数据库,然后移动所有用户表空间。不能移动SYSTEM表空间。因此,诸如序列、PL/SQL 程序包以及依赖于SYSTEM表空间的其它对象均不会被移动。必须在目标数据库上手动创建这些对象,或者使用数据泵移动不能通过可移动表空间移动的对象。要从一个平台向另一个平台移动数据库,必须确保源系统和目标系统都运行于V$TRANSPORTABLE_PLATFORM中列出的平台上,并且具有相同的endian 格式。例如,可以将在Linux IA(32 位)上运行的数据库移动到一个Windows 平台上。如果两个数据库中至少有一个使用自动存储管理(ASM),则可能需要使用DBMS_FILE_TRANSFER程序包来将文件上传到FTP。

此功能与可移动表空间不同,可移动表空间有一个可以插入数据的目标数据库,而此功能将在目标平台上创建新的数据库。新创建的数据库中包含的数据与源数据库中相同。除了数据库名、实例名和文件位置等,新数据库与源数据库的设置也相同。

注:移动数据库比使用数据泵移动数据的速度快。


15、数据库传输过程:源系统转换

clipboard[23]

数据库移动过程:源系统转换

必须先以只读模式打开数据库,然后才能移动该数据库。然后使用RMAN 转换数据库的必要数据文件。

在源平台上执行转换时,RMAN 命令CONVERT DATABASE将生成一个包含正确的CREATE CONTROLFILE RESETLOGS命令的脚本,此命令用于在目标系统上创建新数据库。然后CONVERT DATABASE命令将转换识别出的所有数据文件,以便这些文件可以在目标系统上使用。接着,你需要将已转换的数据文件和生成的脚本传送到目标平台。通过在目标平台上执行生成的脚本,创建数据库的新副本。

注:源数据库必须在COMPATIBLE初始化参数设为10.0.0或更高的条件下运行。自COMPATIBLE设置为10.0.0或更高版本以来,识别出的所有表空间必须至少已被读写过一次。


16、数据库传输过程:目标系统转换

clipboard[24]

数据库移动过程:目标系统转换

必须先以只读模式打开数据库,然后才能移动该数据库。然后使用RMAN 转换数据库的必要数据文件。

在目标平台上执行转换时,(在源系统上执行的)CONVERT DATABASE命令只生成两个脚本,用于在目标系统上转换数据文件以及重新创建新数据库的控制文件。然后,请将识别出的数据文件和两个脚本都传送到目标平台。完成后,请按正确的顺序执行这两个脚本。

第一个脚本使用现有的CONVERT DATAFILERMAN 命令来进行转换,第二个脚本对已转换的数据文件发出CREATE CONTROLFILE RESETLOGS SQL 命令来创建新数据库。

注:源数据库必须在COMPATIBLE初始化参数设为10.0.0或更高的条件下运行。自COMPATIBLE设置为10.0.0或更高版本后,识别出的所有表空间至少已被读写过一次。


17、数据库传输:注意事项

clipboard[25]

? 在目标平台上创建口令文件。

? 移动在源数据库中使用的BFILE。

? 生成的PFILE 和移动脚本使用OMF。

? 使用DBNEWID更改DBID。

数据库移动:注意事项

重做日志、控制文件和临时文件不会移动。将在目标平台上为新数据库重新创建这些文件。因此,目标平台上的新数据库必须用RESETLOGS选项打开。

使用口令文件时,不会移动该文件,需要你在目标平台上创建该文件。这是因为口令文件支持的文件名类型是特定于操作系统的。但是,CONVERT DATABASE命令的输出将列出所有用户名及其系统权限,并且建议在目标平台上重新创建口令文件并为这些用户添加条目。

CONVERT DATABASE命令列出源数据库中的所有目录对象以及使用BFILE数据类型或外部表的对象。可能需要用新的目录名和文件名来更新这些对象。如果在数据库中使用了BFILE,则必须移动BFILE。

生成的PFILE 和移动脚本将Oracle Managed Files (OMF) 用于数据库文件。如果不想使用OMF,则必须修改PFILE 和移动脚本。

移动的数据库与源数据库具有相同的DBID。可以使用DBNEWID实用程序来更改DBID。

在移动脚本以及CONVERT DATABASE命令的输出中,系统将提示你使用DBNEWID实用程序来更改数据库ID。

参考:http://blog.csdn.net/rlhua/article/details/13613603


请使用浏览器的分享功能分享到微信等