在Oracle 10g环境中使用“ALTER TABLESPACE”命令的“RENAME TO”可以实现表空间快速重命名的功能,我们体验一下这种方便快捷的方法。
1.查询数据库版本信息
sys@ora10g> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
2.创建表空间TBS_SECOOLER
sys@ora10g> create tablespace tbs_secooler datafile '/oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf' size 10m;
Tablespace created.
3.查询表空间与数据文件的对应关系
sys@ora10g> col tablespace_name for a20
sys@ora10g> col file_name for a51
sys@ora10g> select tablespace_name,file_name from dba_data_files where file_name like '%secooler%';
TABLESPACE_NAME FILE_NAME
-------------------- ---------------------------------------------------
TBS_SECOOLER /oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf
此处信息用作后面的比较。
4.在TBS_SECOOLER表空间上创建用户SECOOLER并授权
sys@ora10g> create user secooler identified by secooler default tablespace tbs_secooler;
User created.
sys@ora10g> grant connect,resource to secooler;
Grant succeeded.
5.查询用户与表空间的对应关系
sys@ora10g> select username,default_tablespace from dba_users where username = 'SECOOLER';
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SECOOLER TBS_SECOOLER
此处信息用作后续比较。
6.在SECOOLER用户中创建测试表
sys@ora10g> conn secooler/secooler
Connected.
secooler@ora10g> create table t_secooler as select * from all_objects;
Table created.
7.查询表与表空间的对应关系
secooler@ora10g> conn / as sysdba
Connected.
sys@ora10g> select segment_name,tablespace_name from dba_segments where segment_name='T_SECOOLER';
SEGMENT_NAME TABLESPACE_NAME
------------------------------ --------------------
T_SECOOLER TBS_SECOOLER
此处信息用作后续比较。
8.调整表空间名字
我们将表空间TBS_SECOOLER更名为TBS_ANDY。
sys@ora10g> alter tablespace TBS_SECOOLER rename to TBS_ANDY;
Tablespace altered.
9.表空间调整后的查询确认
1)查询表空间与数据文件的对应关系
sys@ora10g> select tablespace_name,file_name from dba_data_files where file_name like '%secooler%';
TABLESPACE_NAME FILE_NAME
-------------------- ---------------------------------------------------
TBS_ANDY /oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf
可见,表空间的名字发生的变化,但对应的数据文件并没有改变。
2)查询SECOOLER用户与表空间的对应关系
sys@ora10g> select username,default_tablespace from dba_users where username = 'SECOOLER';
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SECOOLER TBS_ANDY
SECOOLER用户的默认表空间已经有原来的TBS_SECOOLER调整为现在的TBS_ANDY。
3)查询表与表空间的对应关系
sys@ora10g> select segment_name,tablespace_name from dba_segments where segment_name='T_SECOOLER';
SEGMENT_NAME TABLESPACE_NAME
------------------------------ --------------------
T_SECOOLER TBS_ANDY
表T_SECOOLER的存储表空间已经由原来的TBS_SECOOLER调整为现在的TBS_ANDY。
通过以上测试,可见使用“ALTER TABLESPACE”命令的“RENAME TO”功能可以完美的实现表空间快速重命名的目标。
10.小结
Oracle数据库在每一个新版本中都会给我们带来一些惊喜的功能,这些新的改变往往就是那些我们迫切要求的功能。
本例中的表空间快速重命名的功能就是一例。
Good luck.
secooler
11.07.09
-- The End --
1.查询数据库版本信息
sys@ora10g> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
2.创建表空间TBS_SECOOLER
sys@ora10g> create tablespace tbs_secooler datafile '/oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf' size 10m;
Tablespace created.
3.查询表空间与数据文件的对应关系
sys@ora10g> col tablespace_name for a20
sys@ora10g> col file_name for a51
sys@ora10g> select tablespace_name,file_name from dba_data_files where file_name like '%secooler%';
TABLESPACE_NAME FILE_NAME
-------------------- ---------------------------------------------------
TBS_SECOOLER /oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf
此处信息用作后面的比较。
4.在TBS_SECOOLER表空间上创建用户SECOOLER并授权
sys@ora10g> create user secooler identified by secooler default tablespace tbs_secooler;
User created.
sys@ora10g> grant connect,resource to secooler;
Grant succeeded.
5.查询用户与表空间的对应关系
sys@ora10g> select username,default_tablespace from dba_users where username = 'SECOOLER';
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SECOOLER TBS_SECOOLER
此处信息用作后续比较。
6.在SECOOLER用户中创建测试表
sys@ora10g> conn secooler/secooler
Connected.
secooler@ora10g> create table t_secooler as select * from all_objects;
Table created.
7.查询表与表空间的对应关系
secooler@ora10g> conn / as sysdba
Connected.
sys@ora10g> select segment_name,tablespace_name from dba_segments where segment_name='T_SECOOLER';
SEGMENT_NAME TABLESPACE_NAME
------------------------------ --------------------
T_SECOOLER TBS_SECOOLER
此处信息用作后续比较。
8.调整表空间名字
我们将表空间TBS_SECOOLER更名为TBS_ANDY。
sys@ora10g> alter tablespace TBS_SECOOLER rename to TBS_ANDY;
Tablespace altered.
9.表空间调整后的查询确认
1)查询表空间与数据文件的对应关系
sys@ora10g> select tablespace_name,file_name from dba_data_files where file_name like '%secooler%';
TABLESPACE_NAME FILE_NAME
-------------------- ---------------------------------------------------
TBS_ANDY /oracle/ora10gR2/oradata/ora10g/tbs_secooler_01.dbf
可见,表空间的名字发生的变化,但对应的数据文件并没有改变。
2)查询SECOOLER用户与表空间的对应关系
sys@ora10g> select username,default_tablespace from dba_users where username = 'SECOOLER';
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SECOOLER TBS_ANDY
SECOOLER用户的默认表空间已经有原来的TBS_SECOOLER调整为现在的TBS_ANDY。
3)查询表与表空间的对应关系
sys@ora10g> select segment_name,tablespace_name from dba_segments where segment_name='T_SECOOLER';
SEGMENT_NAME TABLESPACE_NAME
------------------------------ --------------------
T_SECOOLER TBS_ANDY
表T_SECOOLER的存储表空间已经由原来的TBS_SECOOLER调整为现在的TBS_ANDY。
通过以上测试,可见使用“ALTER TABLESPACE”命令的“RENAME TO”功能可以完美的实现表空间快速重命名的目标。
10.小结
Oracle数据库在每一个新版本中都会给我们带来一些惊喜的功能,这些新的改变往往就是那些我们迫切要求的功能。
本例中的表空间快速重命名的功能就是一例。
Good luck.
secooler
11.07.09
-- The End --
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-701776/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/519536/viewspace-701776/