`

Oracle修改Tablespace的Name

 
阅读更多
Oracle修改TableSpace的Name
 
    在Oracle10g以前,tablespace的name是不可以随意修改的,只能drop掉之后重建,但是在10g之后,oracle加入了修改的功能,除了system和sysaux两个表空间外,其他的表空间都可以改名。今天专门来记录一下这个特性:
 
    为TableSpace改名的举例如下:
 
SQL> create tablespace wxq_tbs datafile '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf' size 1M;
 
Tablespace created.
SQL> alter tablespace wxq_tbs rename to wxq_tbs2;
 
Tablespace altered.
SQL> select tablespace_name,status from dba_tablespaces;
 
TABLESPACE_NAME                                              STATUS
------------------------------------------------------------ -------------
SYSTEM                                                       ONLINE
UNDOTBS1                                                     ONLINE
SYSAUX                                                       ONLINE
TEMP                                                         ONLINE
USERS                                                        ONLINE
OWB_TBS                                                      ONLINE
RECOVERY_TBS                                                 ONLINE
STREAM_TBS                                                   ONLINE
WXQ_TBS2                                                     ONLINE

SQL> select tablespace_name,file_name,status from dba_data_files;
 
TABLESPACE_N FILE_NAME                                                         STATUS
------------ ------------------------------------------------------------------ -------------
USERS        /opt/oracle/product/10.2.0/oradata/wangxiaoqi/users01.dbf          AVAILABLE
SYSAUX       /opt/oracle/product/10.2.0/oradata/wangxiaoqi/sysaux01.dbf         AVAILABLE
UNDOTBS1     /opt/oracle/product/10.2.0/oradata/wangxiaoqi/undotbs01.dbf        AVAILABLE
SYSTEM       /opt/oracle/product/10.2.0/oradata/wangxiaoqi/system01.dbf         AVAILABLE
OWB_TBS      /opt/oracle/product/10.2.0/oradata/wangxiaoqi/owb_tbs01.dbf        AVAILABLE
RECOVERY_TBS /opt/oracle/product/10.2.0/oradata/wangxiaoqi/recover_tbs.dbf      AVAILABLE
STREAM_TBS   /opt/oracle/product/10.2.0/oradata/wangxiaoqi/stream_tbs01.dbf     AVAILABLE
WXQ_TBS2     /opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf          AVAILABLE
 
 
    此时,datafile的名字没有改过来,与tablespace不一致,所以需要再改一下,这个过程相对来说比较复杂,要以下面的顺序来修改:
 
    1、把相应的tablespace改成read only;
    2、把需要修改的datafile置为offline;
    3、在操作系统中改名
    4、alter database rename file .. to ..;
    5、把相应的datafile置为online;
    6、把相应tablespace改成read write;
 
    具体操作如下:
 
SQL> alter database rename file '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf' to '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf';
alter database rename file '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf' to '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01121: cannot rename database file 11 - file is in use or recovery
ORA-01110: data file 11: '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf'
 


SQL> alter tablespace wxq_tbs2 read only;
 
Tablespace altered.
 
SQL> alter database datafile '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf' offline;
 
Database altered.
 
SQL> host mv /opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf /opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf;
 
SQL> host ls -l /opt/oracle/product/10.2.0/oradata/wangxiaoqi/
total 6115528
-rw-r----- 1 oracle oinstall 1073750016 Jul 28 01:35 owb_tbs01.dbf
-rw-r----- 1 oracle oinstall   26222592 Jul 28 01:35 recover_tbs.dbf
-rw-r----- 1 oracle oinstall  209723392 Jul 28 01:35 stream_tbs01.dbf
-rw-r----- 1 oracle oinstall  471867392 Jul 28 16:05 sysaux01.dbf
-rw-r----- 1 oracle oinstall  566239232 Jul 28 16:08 system01.dbf
-rw-r----- 1 oracle oinstall   31465472 Jul 27 22:00 temp01.dbf
-rw-r----- 1 oracle oinstall  513810432 Jul 28 16:10 undotbs01.dbf
-rw-r----- 1 oracle oinstall    5251072 Jul 28 10:14 users01.dbf
-rw-r----- 1 oracle oinstall    1056768 Jul 28 16:08 wxq_tbs2.dbf
 
SQL> alter database rename file '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs.dbf' to '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf';
 
Database altered.
 
SQL> alter database datafile '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf' online;
 
Database altered.
 
SQL> alter tablespace wxq_tbs2 read write;
 
Tablespace altered.
 
SQL> select tablespace_name,file_name,status from dba_data_files;
 
TABLESPACE_N FILE_NAME                                                         STATUS
------------ ------------------------------------------------------------------ ------------------
USERS        /opt/oracle/product/10.2.0/oradata/wangxiaoqi/users01.dbf          AVAILABLE
SYSAUX       /opt/oracle/product/10.2.0/oradata/wangxiaoqi/sysaux01.dbf         AVAILABLE
UNDOTBS1     /opt/oracle/product/10.2.0/oradata/wangxiaoqi/undotbs01.dbf        AVAILABLE
SYSTEM       /opt/oracle/product/10.2.0/oradata/wangxiaoqi/system01.dbf         AVAILABLE
OWB_TBS      /opt/oracle/product/10.2.0/oradata/wangxiaoqi/owb_tbs01.dbf        AVAILABLE
RECOVERY_TBS /opt/oracle/product/10.2.0/oradata/wangxiaoqi/recover_tbs.dbf      AVAILABLE
STREAM_TBS   /opt/oracle/product/10.2.0/oradata/wangxiaoqi/stream_tbs01.dbf     AVAILABLE
WXQ_TBS2     /opt/oracle/product/10.2.0/oradata/wangxiaoqi/wxq_tbs2.dbf         AVAILABLE
 
8 rows selected.

 
    至此,就全部修改完成了。再强调一下,只有在10g中才能够修改,10g以前是不可以的。
分享到:
评论

相关推荐

    Oracle_tablespace_(表空间)的创建、删除、修改、扩展及检查等

    Oracle 表空间(tablespace)的创建、删除、修改、扩展及检查等 Oracle 表空间是 Oracle 数据库中的一种逻辑存储结构,它决定数据库实体的空间分配、设置数据库用户的空间份额、控制数据库部分数据的可用性、分布...

    Oracle查看增加表空间语句

    Decode(grouping(Tablespace_Name), '1', 'TotalTS', Tablespace_Name) Tablespace_Name, Sum(Bytes) Define_Size FROM DBA_Data_Files GROUP BY ROLLUP (Tablespace_Name)) Ta, (SELECT Decode(grouping...

    Oracle修改存储空间相关sql

    本文将深入探讨如何使用SQL语句来修改Oracle数据库的存储空间,结合提供的资源"Oracle修改存储空间相关sql.txt",我们将涵盖以下几个关键知识点: 1. 表空间(Tablespaces): Oracle数据库的数据存储在表空间中,...

    Oracle修改表空间大小.doc

    ### Oracle 修改表空间大小 #### 一、背景介绍 在使用Oracle 10g数据库管理系统进行数据管理的过程中,经常会遇到由于表空间限制而导致的数据导入失败问题。这是因为Oracle默认的表空间大小为400MB,当数据库中的...

    oracle表空间管理

    WHERE a.tablespace_name = b.tablespace_name (+) ORDER BY "Pre"; ``` 这段SQL代码主要统计了表空间的总大小、已使用空间、可用空间以及使用百分比。通过这种方式可以快速了解各表空间的状态。 #### 示例二:...

    oracle tablespace usage

    WHERE a.tablespace_name = b.tablespace_name (+); ``` 这段查询主要针对非临时表空间进行统计: - **megs_alloc**: 分配给表空间的数据文件总大小(MB)。 - **megs_free**: 表空间中未使用的空间大小(MB)。 -...

    ORACLE修改表空间大小

    ### ORACLE 修改表空间大小详解 #### 一、问题背景及原因分析 在Oracle数据库管理过程中,经常会遇到因表空间不足导致的各种问题。其中一种常见问题是ORA-01652错误,即“无法在指定表空间扩展临时段”。这通常...

    oracle创建表空间用户等

    本文将详细介绍如何在Oracle数据库中创建表空间、创建用户并分配相应的权限,以及如何设置表空间的自增长和修改其大小。 #### 一、创建表空间 表空间是Oracle数据库中的逻辑存储单元,它由一个或多个数据文件组成...

    修改ORACLE控制文件和日志

    TABLESPACE "your_tablespace_name"; ``` 这里需替换为实际的文件路径和表空间名。 3. **启动数据库至nomount状态**:使用`STARTUP NOMOUNT`命令启动数据库,但不加载数据文件。 4. **挂载数据库**:使用`ALTER ...

    oracle修改表空间的全部步骤,包含bob,clob字段

    在Oracle数据库管理中,修改表空间是一项常见的维护任务,尤其当需要优化存储、解决空间不足或进行数据迁移时。本文将详细阐述如何在Oracle中修改表空间,包括处理BLOB和CLOB字段的具体步骤。 ### 修改表空间的背景...

    Oracle 表空间建立方法

    DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES; ``` 以上步骤涵盖了Oracle数据库中表空间的创建、修改、删除等基本操作。根据实际需求灵活运用这些命令,可以帮助管理员更高效地管理数据库...

    调整oracle内存及调整表空间大小方法

    WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name; ``` 2. **查看表空间物理文件的名称和大小** ```sql SELECT tablespace_name, file_id, file_name, ROUND(bytes/(1024*1024), 0) ...

    Oracle更改表空间(table、index、lob)

    这里`table_name`是包含LOB列的表的名称,`col_lob1`和`col_lob2`是要更改表空间的LOB列的名称,`target_tablespace_name`是目标表空间的名称。 2. **执行更改表空间的操作**: - 直接执行上述SQL语句即可完成LOB...

    oracle 命令(包括生成数据库实例、表空间、授权用户)

    WHERE a.tablespace_name = b.tablespace_name; ``` #### 查看段的大小 查询特定用户拥有的段的大小: ```sql SELECT Segment_Name, Sum(bytes)/1024/1024 FROM user_extents GROUP BY Segment_Name; ``` #### ...

    oracle查询表空间大小

    select a.TABLESPACE_NAME "TableSpace Name", round(a.BYTES / 1024 / 1024) "MB Allocated", round((a.BYTES-nvl(b.BYTES, 0)) / 1024 / 1024) "MB Used", nvl(round(b.BYTES / 1024 / 1024), 0) "MB Free", ...

    oracle10G创建用户和表空间

    CREATE USER username IDENTIFIED BY password DEFAULT TABLESPACE tablespace_name TEMPORARY TABLESPACE temp_tablespace QUOTA mb ON tablespace_name; ``` 其中: - `username`:新创建的用户名。 - `password`...

    常用oracle查询语句

    WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME; 这两条语句可以查看 Oracle 数据库中的表空间使用情况,结果显示每个表空间的可用空间、总空间、已用空间、可用百分比和已用...

    oracle表空间查询命令

    WHERE df.tablespace_name = fs.tablespace_name; ``` 此查询提供了每个表空间的使用情况概览,包括: - **Tablespace**:表空间名称。 - **UsedMB**:已使用的空间(MB)。 - **FreeMB**:剩余空间(MB)。 - **...

    oracle10g表空间操作命令

    在Oracle 10g数据库管理中,表空间(Tablespace)是重要的逻辑存储结构单元,用于组织和管理数据库中的数据文件。本文将详细介绍如何通过Oracle 10g SQL命令进行表空间的操作,包括创建、调整大小、删除等,并提供...

Global site tag (gtag.js) - Google Analytics