zoukankan      html  css  js  c++  java
  • 12C New Feature : Move a Datafile Online (Doc ID 1566797.1)


    In this Document

      Goal
      Solution

    Applies to:

    Oracle Database - Enterprise Edition - Version 12.1.0.1 and later
    Oracle Database Cloud Schema Service - Version N/A and later
    Oracle Database Exadata Cloud Machine - Version N/A and later
    Oracle Database Exadata Express Cloud Service - Version N/A and later
    Oracle Cloud Infrastructure - Database Service - Version N/A and later
    Information in this document applies to any platform.

    Goal

    In this release, a data file can now be moved online while it is open and being accessed, even for data files in system tablespace.
    Being able to move a data file online means that many maintenance operations, such as moving data to another storage device or moving databases into Oracle Automatic Storage Management (Oracle ASM), can be performed while users are accessing the system. This ensures that continuity of service and service-level agreements (SLA) on uptime can be met.

    Solution

    With Oracle 12C, you can now do the following operations while the datafile is online and being accessed:
    
    1. Renaming an Online Data File
    2. Relocating an Online Data File
    3. Copying an Online Data File
    4. Relocating an Online Data File and Overwriting an Existing File
    5. Relocating an Online Data File to Oracle ASM
    
    The following is an example of how each operation is done:
    
    Renaming an Online Data File:
    ===============================
    SQL> CREATE TABLESPACE test DATAFILE '<PATH>/<SID>/test.dbf' SIZE 50M
    EXTENT MANAGEMENT LOCAL
    SEGMENT SPACE MANAGEMENT AUTO;  2    3

    Tablespace created.

    SQL> select file_name, status, online_status from dba_data_files;

    FILE_NAME
    ----------------------------------------------------------------------------------------------------
    STATUS    ONLINE_
    --------- -------
    <PATH>/<SID>/system01.dbf
    AVAILABLE SYSTEM

    <PATH>/<SID>/sysaux01.dbf
    AVAILABLE ONLINE

    <PATH>/<SID>/undotbs01.dbf
    AVAILABLE ONLINE

    <PATH>/<SID>/users01.dbf
    AVAILABLE ONLINE

    <PATH>/<SID>/test.dbf
    AVAILABLE ONLINE

    SQL> ALTER DATABASE MOVE DATAFILE '<PATH>/<SID>/test.dbf'
    TO '<PATH>/<SID>/test_renamed.dbf';

    Database altered.

    SQL> select file_name, status, online_status from dba_data_files where file_name='<PATH>/<SID>/test_renamed.dbf';

    FILE_NAME
    ----------------------------------------------------------------------------------------------------
    STATUS    ONLINE_
    --------- -------
    <PATH>/<SID>/test_renamed.dbf
    AVAILABLE ONLINE
     
    2. Relocating an Online Data File:
    ===================================
    SQL> ALTER DATABASE MOVE DATAFILE '<PATH>/<SID>/test_renamed.dbf'
    TO '<PATH>/test_renamed.dbf';
     
    Database altered.

    SQL> select file_name, status, online_status from dba_data_files where file_name='<PATH>/<SID>/test_renamed.dbf';

    no rows selected

    SQL> select file_name, status, online_status from dba_data_files;

    FILE_NAME
    ----------------------------------------------------------------------------------------------------
    STATUS    ONLINE_
    --------- -------
    <PATH>/<SID>/system01.dbf
    AVAILABLE SYSTEM

    <PATH>/<SID>/sysaux01.dbf
    AVAILABLE ONLINE

    <PATH>/<SID>/undotbs01.dbf
    AVAILABLE ONLINE

    <PATH>/<SID>/users01.dbf
    AVAILABLE ONLINE

    <PATH>/test_renamed.dbf
    AVAILABLE ONLINE
     
    3. Copying an Online Data File:
    =================================
    SQL> ALTER DATABASE MOVE DATAFILE '<PATH>/<SID>/test_renamed.dbf'
    TO '<PATH>/test_renamed.dbf' keep;

    Database altered.

    SQL> select file_name, status, online_status from dba_data_files where file_name='<PATH>/<SID>/test_renamed.dbf';

    no rows selected

    SQL> select file_name, status, online_status from dba_data_files;

    FILE_NAME
    ----------------------------------------------------------------------------------------------------
    STATUS    ONLINE_
    --------- -------
    <PATH>/<SID>/system01.dbf
    AVAILABLE SYSTEM

    <PATH>/<SID>/sysaux01.dbf
    AVAILABLE ONLINE

    <PATH>/<SID>/undotbs01.dbf
    AVAILABLE ONLINE

    <PATH>/<SID>/users01.dbf
    AVAILABLE ONLINE

    <PATH>/test_renamed.dbf
    AVAILABLE ONLINE

    -- expect to see the entry:
    -- <PATH>/<SID>/test_renamed.dbf
    -- AVAILABLE ONLINE

    -- However, when i try to move the datafile to the location <PATH>/<SID> i get the following error
    -- which verifies that the datafile was indeed copied and kept available in the old location:

    SQL> ALTER DATABASE MOVE DATAFILE '<PATH>/test_renamed.dbf'
    TO '<PATH>/<SID>/test_renamed.dbf';   2
    ALTER DATABASE MOVE DATAFILE '<PATH>/test_renamed.dbf'
    *
    ERROR at line 1:
    ORA-01119: error in creating database file
    '<PATH>/<SID>/test_renamed.dbf'
    ORA-27038: created file already exists
    Additional information: 1

     
    4. Example of relocating an Online Data File and Overwriting an Existing File:
    =====================================================================
    SQL> ALTER DATABASE MOVE DATAFILE '<PATH>/test_renamed.dbf'
    TO '<PATH>/<SID>/test_renamed.dbf' REUSE;

    Database altered.

    SQL> select file_name, status, online_status from dba_data_files where file_name='<PATH>/<SID>/test_renamed.dbf';

    FILE_NAME
    ----------------------------------------------------------------------------------------------------
    STATUS    ONLINE_
    --------- -------
    <PATH>/<SID>/test_renamed.dbf
    AVAILABLE ONLINE


    SQL> select file_name, status, online_status from dba_data_files;

    FILE_NAME
    ----------------------------------------------------------------------------------------------------
    STATUS    ONLINE_
    --------- -------
    <PATH>/<SID>/system01.dbf
    AVAILABLE SYSTEM

    <PATH>/<SID>/sysaux01.dbf
    AVAILABLE ONLINE

    <PATH>/<SID>/undotbs01.dbf
    AVAILABLE ONLINE

    <PATH>/<SID>/users01.dbf
    AVAILABLE ONLINE

    <PATH>/<SID>/test_renamed.dbf
    AVAILABLE ONLINE

     
    5. Relocate an Online Data File to Oracle ASM:
    ================================================

    This example moves the data file user1.dbf from <PATH> directory to an Oracle ASM location.

    ALTER DATABASE MOVE DATAFILE '<PATH>/user1.dbf' 
      TO '+dg_group1/user1.dbf';
    
    This example moves the data file from one Oracle ASM location to another Oracle ASM location.
    ALTER DATABASE MOVE DATAFILE +dg_group1/user1.dbf' 
      TO '+dg_group2/user1.dbf';
    
     
    
    For more information about moving a datafile online, please refer to: http://docs.oracle.com/cd/E16655_01/server.121/e17636/dfiles.htm#ADMIN13837
    To BottomTo Bottom
  • 相关阅读:
    keras 报错 ValueError: Tensor conversion requested dtype int32 for Tensor with dtype float32: 'Tensor("embedding_1/random_uniform:0", shape=(5001, 128), dtype=float32)'
    redis 安装启动及设置密码<windows>
    mysql配置主从数据库
    将已有的项目提交到GitHub
    Top 5 SSH Clients for Windows (Alternatives of PuTTY)
    jQuery 插件写法示例
    Spring 定时操作业务需求
    eclipse 修改js文件无法编译到项目中
    linux 目录结构图解
    MongoDB 概念解析
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/12809576.html
Copyright © 2011-2022 走看看