博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle DB 管理数据库的空间
阅读量:5947 次
发布时间:2019-06-19

本文共 8562 字,大约阅读时间需要 28 分钟。

• 描述4 KB 扇区磁盘的概念及使用
• 使用可移动表空间
• 描述可移动表空间的概念
  • 数据库存储
数据库存储
数据库包括物理结构和逻辑结构。由于物理结构和逻辑结构是分开的,因此管理数据的物
理存储时不会影响对逻辑存储结构的访问。
磁盘是数据库的主要存储介质,目前主要有512 字节的扇区,而拥有4 KB 大扇区的磁盘
即将上市,它们可以用较低的开销提供更高的存储容量。Oracle DB 可以通过特定于平台
的设备驱动程序访问硬盘。(数据库写进程[和ASM 进程] 可直接向磁盘进行写入,无需
通过操作系统。)
Oracle Database 11g发行版2 检测磁盘扇区大小并使用高容量磁盘且不会导致性能下降
(原因之一是内部优化减少了可能会发生的重做空间浪费,具有许多短时事务处理的应用
程序,如邮件系统,可能会发生重做空间浪费)。
  • 支持4 KB 扇区磁盘
4 KB 扇区磁盘有物理扇区(以灰色显示)和逻辑扇区(以蓝色显示)。有二种类型的
4 KB 扇区磁盘:仿真模式和本机模式。
• 仿真模式下的4 KB 扇区磁盘每一个物理扇区具有八个逻辑扇区,如示例所示。这
类磁盘维护有一个到4 KB 物理扇区的512 字节接口-即逻辑块地址(LBA) 引用磁
盘上的512 字节。
在仿真模式中性能可能会降低,因为磁盘驱动器将4 KB 扇区读取到磁盘高速缓存内
存中,更改512 字节部分,并将整个4 KB 扇区回写到磁盘。
• 本机模式下的4 KB 扇区磁盘每一个物理扇区具备一个逻辑扇区,如示例中所示。
因此,只有4 KB 接口。也就是说,LBA 引用磁盘上的4,096 字节。
  • 使用4 KB 扇区磁盘
仿真模式:
• 建议为日志使用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 扇区磁盘不影响控制文件。
  • 指定磁盘扇区大小
使用以下命令的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 100M  
BLOCKSIZE 4096,
GROUP 2 '$ORACLE_BASE/oradata/sample/redo02.log'
SIZE 100M  
BLOCKSIZE 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 字节扇区大小。
  • 移动表空间
• 可跨平台移动的表空间:
– 简化数据仓库和数据集市之间的数据移动
– 允许从一个平台向另一个平台迁移数据库
• 支持的平台包括:
移动表空间
使用可移动表空间是在两个Oracle DB 之间移动大量数据的最快方式。使用可移动表空间,
可以将Oracle 数据文件(包含表数据、索引和几乎其它所有Oracle DB 对象)从一个数据
库移动到另一个数据库。而且,与导入和导出类似,可移动表空间除了移动数据以外,还
提供了一种移动元数据的机制。
可以使用可移动表空间功能跨平台移动数据。此功能简化了从数据仓库环境向数据集市
(数据集市通常在较小的平台上运行)分发数据的过程。此功能还允许通过重建字典并移
动用户表空间的方式,将数据库从一个平台迁移到另一个平台。
对于相同数据而言,使用可移动表空间移动数据比执行导入/导出或卸载/加载的速度要快
得多。这是因为,包含所有实际数据的数据文件只是被复制到目标位置,只有表空间对象
的元数据通过数据泵传送到新数据库。
为了能够将数据文件从一个平台移动到另一个平台,必须确保源系统和目标系统都在支持
的平台上运行。
注:可跨平台移动的表空间功能要求两个平台使用相同的字符集。
  • 概念:最低兼容级别
• 源数据库和目标数据库都必须将COMPATIBLE设置为
10.0.0或更高。
• 数据文件头是可识别平台的。
• 在移动前,请确保所有只读文件和脱机文件是可识别
平台的。
源数据库和目标数据库都需要先将其数据库COMPATIBLE初始化参数提高到10.0.0或
更高,才能使用可跨平台移动的表空间功能。
COMPATIBLE设置为10.0.0(或更高)时,在Oracle Database 10g或11g下首次打开数
据文件时,数据文件将成为可识别平台的。这在图表中体现为复选标记。每个文件都可以
确定其所属的平台。这些文件在磁盘上有相同的文件头块格式,这些格式用于文件标识和
验证。只读文件和脱机文件只有在变为读/写状态或变为联机之后才能提高其兼容性。这
意味着,在Oracle Database 10g版本之前的数据库中,处于只读状态的表空间必须至少变
为读/写状态一次才能使用可跨平台移动的功能。
  • 最低兼容级别
最低兼容级别
创建可移动表空间集时,Oracle DB 会计算运行目标数据库必须满足的最低兼容级别。这
称为可移动集的兼容级别。从Oracle Database 11g开始,始终可将某个表空间移动到具有
相同或更高兼容性设置的数据库,而不管目标数据库是基于相同的平台,还是基于不同的
平台。如果可移动集的兼容级别高于目标数据库的兼容级别,则数据库将发出错误消息。
下表显示了不同情形下源表空间和目标表空间的最低兼容性要求。源数据库和目标数据库
不需要具有相同的兼容性设置。
在第一次打开数据文件后再打开文件时,每个文件都可以确定其所属的平台。这些文件在
磁盘上有相同的文件头块格式,这些格式用于文件标识和验证。只读文件和脱机文件只有
在变为读/写状态或变为联机之后才能提高其兼容性。
  • 可移动表空间过程
要将表空间从一个平台移动到另一个平台(源到目标),必须将表空间集内的数据文件转
换为目标数据库可以理解的格式。虽然使用Oracle DB 时磁盘结构符合通用格式,但源平
台和目标平台仍有可能使用不同的endian 格式(字节顺序)。转至不同的endian 平台时,
必须使用RMAN 实用程序的CONVERT命令来转换字节顺序。可以在源平台或目标平台
上执行此操作。对于endian 格式相同的平台,则不需要转换。
示例中的图形描述了从源平台向目标平台移动表空间可能用到的步骤。但是,也可以在
将文件传送到目标平台后执行转换。必须在目标平台上执行最后两步。
一般情况下,此过程与使用Oracle DB Server 的旧发行版时的过程相同,除非两个平台使
用不同的endian 格式。此处假定两个平台都支持跨平台移动。
注:读写数据时,字节顺序会影响结果。例如,双字节整数值1在big-endian 系统(如
Sun SPARC Solaris)上写为0x0001,而在little-endian 系统(如兼容Intel 的PC)上写为
0x0100。
  • 确定平台的Endian 格式
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 格式的完整列表:
sys@TEST0924> SELECT * FROM V$TRANSPORTABLE_PLATFORM order by PLATFORM_ID;                                                                         
PLATFORM_ID PLATFORM_NAME                            ENDIAN_FORMAT
----------- ---------------------------------------- --------------
          1 Solaris[tm] OE (32-bit)                  Big
          2 Solaris[tm] OE (64-bit)                  Big
          3 HP-UX (64-bit)                           Big
          4 HP-UX IA (64-bit)                        Big
          5 HP Tru64 UNIX                            Little
          6 AIX-Based Systems (64-bit)               Big
          7 Microsoft Windows IA (32-bit)            Little
          8 Microsoft Windows IA (64-bit)            Little
          9 IBM zSeries Based Linux                  Big
         10 Linux IA (32-bit)                        Little
         11 Linux IA (64-bit)                        Little
         12 Microsoft Windows x86 64-bit             Little
         13 Linux x86 64-bit                         Little
         15 HP Open VMS                              Little
         16 Apple Mac OS                             Big
         17 Solaris Operating System (x86)           Little
         18 IBM Power Based Linux                    Big
         19 HP IA Open VMS                           Little
         20 Solaris Operating System (x86-64)        Little
         21 Apple Mac OS (x86-64)                    Little
20 rows selected.
  • 使用RMAN 的CONVERT命令
RMAN:
• 将表空间、数据文件或数据库转换为目标平台的格式
• 不更改输入文件
• 将转换的文件写入到输出目标
CONNECT TARGET SYS@orcl
RMAN>
SQL 'ALTER TABLESPACE hr READ ONLY';
CONVERT TABLESPACE hr
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 转换的用户数据类型。如果数据库建立在底层类
型(这些类型以平台特定的格式存储数据)之上,要在数据库之间传输对象,可以使用数
据泵导入和导出实用程序。
  • 使用Oracle Enterprise Manager 实施可移动表空间
可使用Oracle Enterprise Manager 来实施可移动表空间。在“Database(数据库)”主页中,
单击“Data Movement(数据移动)”文件夹选项卡,然后单击“Move Database Files(移
动数据库文件)”部分下的“Transport Tablespaces(移动表空间)”。选择“Generate a 
transportable table set(生成一个可移动表集)”,并提供oracle用户的登录身份证明,
然后单击“Continue(继续)”。在“Select Tablespaces(选择表空间)”页上,单击
“Tablespace(表空间)”按钮从显示的列表中添加要移动的表空间。在接近页面底部的
位置,选择要在处理表空间之前完成的封闭性检查的级别(必须选择一项)。封闭性检查
会检查表空间中的对象依赖关系。完成后,单击“Next(下一步)”。在封闭性检查运行
过程中,等待一会儿。如果该项检查发现任何问题,请先解决问题然后再继续。
在“Destination Characteristics(目标特征)”页上,必须提供目标平台和字符集。在
“Destination Database Platform(目标数据库平台)”部分下,从下拉列表中选择目标计
算机的操作系统。如果目标平台与源平台不同,Oracle Enterprise Manger 会执行数据转换。
继续转到该页的“Destination Character Set(目标字符集)”部分,从下拉列表中选择目
标字符集和国家字符集。这些字符集必须与源字符集兼容。单击“Next(下一步)”继续
时,Oracle Enterprise Manager 会检查字符集的兼容性。如果选择的字符集被标记为不兼
容,则会返回到“Destination Characteristics(目标特征)”页以便你更正所做的选择。
在“Schedule(调度)”页上,为默认作业名称提供有意义的说明。可以选择立即启用作
业,也可以调度作业以后执行。完成了选择后,单击“Next(下一步)”按钮继续操作。
在复查页上,可以验证您的选择,然后提交作业以便执行。如果各个条目都正确,则单
击“Submit Job(提交作业)”按钮。单击“Back(上一步)”按钮以更正任何不正确的
条目。
  • 移动数据库
• 概述可移动表空间功能。
• 可以轻松地从数据仓库环境向数据集市(数据集市通常
在较小的平台上运行)分发数据子集。
• 数据库可以非常迅速地从一个平台迁移到另一个平台。
可以使用可移动表空间功能将一个数据库迁移到另一个平台,方法是在目标平台上创建
一个新数据库,然后移动所有用户表空间。不能移动SYSTEM表空间。因此,诸如序列、
PL/SQL 程序包以及依赖于SYSTEM表空间的其它对象均不会被移动。必须在目标数据库
上手动创建这些对象,或者使用数据泵移动不能通过可移动表空间移动的对象。
要从一个平台向另一个平台移动数据库,必须确保源系统和目标系统都运行于
V$TRANSPORTABLE_PLATFORM中列出的平台上,并且具有相同的endian 格式。例如,
可以将在Linux IA(32 位)上运行的数据库移动到一个Windows 平台上。
如果两个数据库中至少有一个使用自动存储管理(ASM),则可能需要使用
DBMS_FILE_TRANSFER程序包来将文件上传到FTP。
此功能与可移动表空间不同,可移动表空间有一个可以插入数据的目标数据库,而此功能
将在目标平台上创建新的数据库。新创建的数据库中包含的数据与源数据库中相同。除了
数据库名、实例名和文件位置等,新数据库与源数据库的设置也相同。
注:移动数据库比使用数据泵移动数据的速度快。
  • 数据库移动过程:源系统转换
数据库移动过程:源系统转换
必须先以只读模式打开数据库,然后才能移动该数据库。然后使用RMAN 转换数据库的
必要数据文件。
在源平台上执行转换时,RMAN 命令CONVERT DATABASE将生成一个包含正确的
CREATE CONTROLFILE RESETLOGS命令的脚本,此命令用于在目标系统上创建新数
据库。然后CONVERT DATABASE命令将转换识别出的所有数据文件,以便这些文件可
以在目标系统上使用。接着,你需要将已转换的数据文件和生成的脚本传送到目标平台。
通过在目标平台上执行生成的脚本,创建数据库的新副本。
注:源数据库必须在COMPATIBLE初始化参数设为10.0.0或更高的条件下运行。自
COMPATIBLE设置为10.0.0或更高版本以来,识别出的所有表空间必须至少已被读写
过一次。
  • 数据库移动过程:目标系统转换
数据库移动过程:目标系统转换
必须先以只读模式打开数据库,然后才能移动该数据库。然后使用RMAN 转换数据库的
必要数据文件。
在目标平台上执行转换时,(在源系统上执行的)CONVERT DATABASE命令只生成两个
脚本,用于在目标系统上转换数据文件以及重新创建新数据库的控制文件。然后,请将识
别出的数据文件和两个脚本都传送到目标平台。完成后,请按正确的顺序执行这两个脚本。
第一个脚本使用现有的CONVERT DATAFILERMAN 命令来进行转换,第二个脚本对已
转换的数据文件发出CREATE CONTROLFILE RESETLOGSSQL 命令来创建新数据库。
注:源数据库必须在COMPATIBLE初始化参数设为10.0.0或更高的条件下运行。自
COMPATIBLE设置为10.0.0或更高版本后,识别出的所有表空间至少已被读写过一次。
  • 数据库移动:注意事项
• 在目标平台上创建口令文件。
• 移动在源数据库中使用的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。

 

你可能感兴趣的文章
理解并自定义HttpHandler
查看>>
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
JavaScript标准库系列——RegExp对象(三)
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
oracle中create table with as和insert into with as语句
查看>>
kafka连接异常
查看>>
11g废弃的Hint - BYPASS_UJVC
查看>>
为什么工业控制系统需要安全防护?
查看>>
Mongodb部署记录[3]-主从搭建
查看>>
hive sql操作
查看>>
tomcat 深度优化
查看>>
127 - "Accordian" Patience
查看>>
nginc+memcache
查看>>
php正则匹配utf-8编码的中文汉字
查看>>
MemCache在Windows环境下的搭建及启动
查看>>
linux下crontab实现定时服务详解
查看>>
Numpy中的random模块中的seed方法的作用
查看>>
用java数组模拟登录和注册功能
查看>>
关于jsb中js与c++的相互调用
查看>>
UVA 122 Trees on the level 二叉树 广搜
查看>>