您的位置:首页 > 数据库 > Oracle

探索ORACLE_之表空间02_管理

2011-11-30 13:58 375 查看
探索ORACLE_之表空间02_管理
表空间创建参考语法图如下连接:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7003.htm#i2231734

创建表空间的语法是:

CREATE[SMALLFILE|BIGFILE][PERMANENT|TEMPORARY|UNDO]TABLESPACE

DATAFILE|TEMPFILEdatafile_clause[,datafile_clause]

[EXTENTMANAGEMENTLOCAL]

[AUTOALLOCATE|UNIFORMSIZEinteger[K|M]]

[SEGMENTSPACEMANAGEMENTAUTO|MANUAL]

[BLOCKSIZEinteger[K|M]]

[MININUMEXTENTinteger[K|M]]

[LOGGING|NOLOGGING]

[ONLINE|OFFLINE[NORMAL|TEMPORARY|IMMEDIATE]];

其中,datafile_clause子句(数据文件子句)的语法是:

path_filename_suffix'SIZEinteger[K|M]

[REUSE]

[AUTOEXTENDOFF|ON]

[NEXTinteger[K|M]]

[MAXSIZEUNLIMITED|integer[K|M]]


1.创建管理标准(小文件)表空间
1.1创建一个标准表空间
11:04:57SQL>createtablespacetest001datafile'/data2/test001_01.dbf'size10m;
Tablespacecreated.
11:13:29SQL>selecttablespace_name,file_name,blocks,bytes/1024/1024Mfromdba_data_fileswhereTABLESPACE_NAME='TEST001';

TABLESPACE_NAMEFILE_NAMEBLOCKSM
--------------------------------------------------------------------------------
TEST001/data2/test001_01.dbf128010
Elapsed:00:00:00.03

11:17:01SQL>altertablespacetest001adddatafile'/data2/test001_02.dbf'size10m;

Tablespacealtered.

1.2为表空间添加数据文件
Elapsed:00:00:00.89
11:30:05SQL>selecttablespace_name,file_name,blocks,bytes/1024/1024Mfromdba_data_fileswhereTABLESPACE_NAME='TEST001';

TABLESPACE_NAMEFILE_NAMEBLOCKSM
--------------------------------------------------------------------------------
TEST001/data2/test001_01.dbf128010
TEST001/data2/test001_02.dbf128010

Elapsed:00:00:00.02
11:30:12SQL>

1.3修改表空间数据文件为自动扩展
11:42:35SQL>alterdatabasedatafile'/data2/test001_02.dbf'autoextendonnext2mmaxsize200m;

Databasealtered.

Elapsed:00:00:00.03
12:11:33SQL>selectfile_id,file_name,tablespace_name,blocks,bytes/1024/1024bytes_M,autoextensiblefromdba_data_fileswhereTABLESPACE_NAME='TEST001';

FILE_IDFILE_NAMETABLESPACE_NAMEBLOCKSBYTES_MAUT
------------------------------------------------------------------------------
6/data2/test001_01.dbfTEST001128010NO
7/data2/test001_02.dbfTEST001128010YES

Elapsed:00:00:00.04
12:11:48SQL>

1.4通过指定段的大小来创建表空间
12:21:53SQL>selectTABLESPACE_NAME,INITIAL_EXTENT/1024,NEXT_EXTENT/1024,EXTENT_MANAGEMENTfromdba_tablespaces;

TABLESPACE_NAMEINITIAL_EXTENT/1024NEXT_EXTENT/1024EXTENT_MAN
-----------------------------------------------------------------
SYSTEM64LOCAL
UNDOTBS164LOCAL
SYSAUX64LOCAL
TEMP10241024LOCAL
USERS64LOCAL
TEST0164LOCAL
TEST00164LOCAL

7rowsselected.

Elapsed:00:00:00.03
12:22:17SQL>createtablespacetest002datafile'/data2/test002_01.dbf'size10mextentmanagementlocaluniformsize1m;

Tablespacecreated.

Elapsed:00:00:00.69
12:23:34SQL>selectTABLESPACE_NAME,INITIAL_EXTENT/1024,NEXT_EXTENT/1024,EXTENT_MANAGEMENTfromdba_tablespaces;

TABLESPACE_NAMEINITIAL_EXTENT/1024NEXT_EXTENT/1024EXTENT_MAN
-----------------------------------------------------------------
SYSTEM64LOCAL
UNDOTBS164LOCAL
SYSAUX64LOCAL
TEMP10241024LOCAL
USERS64LOCAL
TEST0164LOCAL
TEST00164LOCAL
TEST00210241024LOCAL

8rowsselected.

Elapsed:00:00:00.01
12:23:39SQL>

2.创建管理大文件表空间
2.1查询数据库创建表空间的默认信息,该视图得知为小文件表空间,当然这个是可以修改的:
12:27:23SQL>select*fromdatabase_propertieswhereproperty_name='DEFAULT_TBS_TYPE';

PROPERTY_NAMEPROPERTY_VALUEDESCRIPTION
--------------------------------------------------------------------------------------------------------------
DEFAULT_TBS_TYPESMALLFILEDefaulttablespacetype

2.2创建一个大文件表空间:
createbigfiletablespacebigfile001datafile'/data2/bigfile001.dbf'size5m;

Tablespacecreated.

Elapsed:00:00:04.37

2.3查看表空间类型,是否为大文件表空间
12:31:24SQL>SELECTtablespace_name,bigfilefromdba_tablespaces;

TABLESPACE_NAMEBIG
-----------------------
SYSTEMNO
UNDOTBS1NO
SYSAUXNO
TEMPNO
USERSNO
TEST01NO
TEST001NO
TEST002NO
BIGFILE001YES

通过另外一个视图查看
12:32:18SQL>select*fromv$tablespace;

TS#NAMEINCBIGFLAENC
----------------------------------------------------
0SYSTEMYESNOYES
1UNDOTBS1YESNOYES
2SYSAUXYESNOYES
4USERSYESNOYES
3TEMPNONOYES
6TEST01YESNOYES
7TEST001YESNOYES
8TEST002YESNOYES
9BIGFILE001YESYESYES

2.4大文件表空间只允许有一个数据文件,所以相对于的文件号也是只有固定的1024
12:34:18SQL>altertablespacebigfile001adddatafile'/data2/bigfile002.dbf'size4m;
altertablespacebigfile001adddatafile'/data2/bigfile002.dbf'size4m
*
ERRORatline1:
ORA-32771:cannotaddfiletobigfiletablespace

Elapsed:00:00:00.05
12:34:32SQL>

12:53:05SQL>selectfile_id,tablespace_name,bytes/1024/1024bytes_M,autoextensible,relative_fnofromdba_data_files;

FILE_IDTABLESPACE_NAMEBYTES_MAUTRELATIVE_FNO
-------------------------------------------------------
4USERS5YES4
3SYSAUX240YES3
2UNDOTBS125YES2
1SYSTEM480YES1
5TEST013584NO5
6TEST00110NO6
7TEST00110YES7
8TEST00210NO8
9BIGFILE0015YES1024

9rowsselected.

Elapsed:00:00:00.04

2.5这样的话,oracle建议用户将大数据文件表空间设置为可自动扩展,当然在创建的时候也可以指定自动扩展属性:
12:38:37SQL>altertablespaceBIGFILE001autoextendon;

Tablespacealtered.

12:42:59SQL>selectfile_id,file_name,tablespace_name,blocks,bytes/1024/1024bytes_M,autoextensiblefromdba_data_fileswheretablespace_name='BIGFILE001';

FILE_IDFILE_NAMETABLESPACE_NAMEBLOCKSBYTES_MAUT
------------------------------------------------------------------------------
9/data2/bigfile001.dbfBIGFILE0016405YES

Elapsed:00:00:00.03
12:43:19SQL>

2.6那么它可以自动扩展到多大呢?
在这里引入一个参数:db_block_size

12:45:07SQL>showparameterdb_block_size


NAMETYPEVALUE

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

db_block_sizeinteger8192


单个文件最大限制的对应关系

文件系统(块)文件大小限制文件系统大小限制

ext2/3(2K)256G8T

ext2/3(4K)2T16T

ext2/3(8K)64T32T

ReiserFS3.61E16T


检查操作系统的文件块大小,这个大小是在创建文件系统的时候可以指定:

[root@ora10gadmin]#tune2fs-l/dev/sdb|grepBlock

Blockcount:2097152

Blocksize:4096

Blockspergroup:32768

由以上得出,我们可创建的单个文件的大小为2TB,同时我们上面创建的那个大文件表空间可自动扩展的最大大小同样也为2TB。


超过操作系统规定的单个文件大小将报如下错误:

12:56:12SQL>createbigfiletablespacebigfile002datafile'/data2/bigfile002.dbf'size3Treuse;

createbigfiletablespacebigfile002datafile'/data2/bigfile002.dbf'size3Treuse

*

ERRORatline1:

ORA-01119:errorincreatingdatabasefile'/data2/bigfile002.dbf'

ORA-27044:unabletowritetheheaderblockoffile

LinuxError:27:Filetoolarge

Additionalinformation:4


我们创建2T以下的表空间是可以创建的,没有报错:

13:03:55SQL>createbigfiletablespacebigfile002datafile'/data2/bigfile002.dbf'size1900Greuse;

Tablespacecreated.



3.创建管理临时表空间
3.1查看默认的临时表空间
13:19:00SQL>select*fromdatabase_propertieswhereproperty_name='DEFAULT_TEMP_TABLESPACE';

PROPERTY_NAMEPROPERTY_VALUEDESCRIPTION
-------------------------------------------------------------------------------------
DEFAULT_TEMP_TABLESPACETEMPNameofdefaulttemporarytablespace

Elapsed:00:00:00.01

3.2创建临时表空间,并切换到新的临时表空间
13:21:01SQL>createtemporarytablespacetemp01tempfile'/data2/temp01_01.dbf'size10m;

Tablespacecreated.

13:24:13SQL>selectfile_id,tablespace_name,file_name,bytes/1024/1024byte_Mfromdba_temp_files;

FILE_IDTABLESPACE_NAMEFILE_NAMEBYTE_M
-----------------------------------------------------------------
1TEMP/oradata/wwl/temp01.dbf20
2TEMP01/data2/temp01_01.dbf10----新创建的临时表空间

Elapsed:00:00:00.07

注意:
新创建的临时表空间可以作为全局临时表空间,同时也可以做为单个用户的临时表空间,甚至可以作为一个临时表空间组中的一个临时表空间成员

3.3切换全局临时表空间
13:24:32SQL>alterdatabasedefaulttemporarytablespacetemp01;

Databasealtered.

Elapsed:00:00:00.18
13:33:01SQL>select*fromdatabase_propertieswhereproperty_name='DEFAULT_TEMP_TABLESPACE';

PROPERTY_NAMEPROPERTY_VALUEDESCRIPTION
-------------------------------------------------------------------------------------
DEFAULT_TEMP_TABLESPACETEMP01Nameofdefaulttemporarytablespace

3.4创建新用户指定非默认临时表空间
13:35:22SQL>createusertest03identifiedbyoracletemporarytablespaceTEMP;

Usercreated.
13:37:23SQL>selectusername,temporary_tablespace,ACCOUNT_STATUSfromdba_userswhereACCOUNT_STATUS='OPEN';

USERNAMETEMPORARY_TABLEACCOUNT_STATUS
---------------------------------------------------------
SYSTEMTEMP01OPEN
SYSTEMP01OPEN
TEST03TEMPOPEN
TEST01TEMP01OPEN

3.5通过临时表空间组对临时表空间进行管理,可以实现临时表空间负载
创建临时表空间组

13:37:48SQL>altertablespacetemptablespacegrouptmpgroup;

Tablespacealtered.

Elapsed:00:00:00.08
13:41:23SQL>altertablespacetemp01tablespacegrouptmpgroup;

Tablespacealtered.

Elapsed:00:00:00.05

3.5.1查询临时表空间组中的表空间
13:41:44SQL>select*fromdba_tablespace_groups;

GROUP_NAMETABLESPACE_NAME
---------------------------------------------
TMPGROUPTEMP
TMPGROUPTEMP01

Elapsed:00:00:00.02

3.5.2将临时表空间组设为数据库默认临时表空间
13:41:59SQL>alterdatabasedefaulttemporarytablespacetmpgroup;

Databasealtered.

3.5.3查询当前默认临时表空间
13:44:03SQL>select*fromdatabase_propertieswhereproperty_name='DEFAULT_TEMP_TABLESPACE';

PROPERTY_NAMEPROPERTY_VALUEDESCRIPTION
-------------------------------------------------------------------------------------
DEFAULT_TEMP_TABLESPACETMPGROUPNameofdefaulttemporarytablespace

Elapsed:00:00:00.02

4.创建管理Undo表空间:由于undo表空间的管理非常复杂,在这里不做详细论述,将在后期的体系架构里面做详细说明。
在单个数据库中undo表空间可以有多个,但处于active的只能有一个,并且active的undo表空间是不能offlin和drop。如果未创建undo表空间oracle将使用systemundosegment。

4.1查看默认undo表空间--可以看到当前undotbs1为active表空间。
13:44:05SQL>showparameterundo

NAMETYPEVALUE
-----------------------------------------------------------------------------
undo_managementstringAUTO
undo_retentioninteger900
undo_tablespacestringUNDOTBS1
13:50:36SQL>

4.2创建新的undo表空间并做切换。
4.2.1创建新的UNDO表空间
13:50:36SQL>createundotablespaceundotbs2datafile'/data2/undotbs2_01.dbf'size10m;

Tablespacecreated.

13:54:26SQL>selectTABLESPACE_NAME,STATUS,CONTENTSfromdba_tablespaceswhereCONTENTS='UNDO';

TABLESPACE_NAMESTATUSCONTENTS
---------------------------------
UNDOTBS1ONLINEUNDO
UNDOTBS2ONLINEUNDO

4.2.2切换undo表空间
13:54:49SQL>altersystemsetundo_tablespace='UNDOTBS2';

Systemaltered.

Elapsed:00:00:00.29
13:55:48SQL>showparameterundo;

NAMETYPEVALUE
-----------------------------------------------------------------------------
undo_managementstringAUTO
undo_retentioninteger900
undo_tablespacestringUNDOTBS2
13:55:57SQL>

4.2.3删除非默认undo表空间:
18:39:25SQL>select*fromv$tablespaceorderbyname;

TS#NAMEINCBIGFLAENC
-------------------------------------
9BIGFILE001YESYESYES
2SYSAUXYESNOYES
0SYSTEMYESNOYES
3TEMPNONOYES
11TEMP01NONOYES
7TEST001YESNOYES
8TEST002YESNOYES
6TEST01YESNOYES
1UNDOTBS1YESNOYES
5UNDOTBS2YESNOYES
4USERSYESNOYES

18:40:03SQL>droptablespaceUNDOTBS1includingcontentsanddatafiles;

Tablespacedropped.

Elapsed:00:00:02.23
18:42:37SQL>select*fromv$tablespaceorderbyname;

TS#NAMEINCBIGFLAENC
-------------------------------------
9BIGFILE001YESYESYES
2SYSAUXYESNOYES
0SYSTEMYESNOYES
3TEMPNONOYES
11TEMP01NONOYES
7TEST001YESNOYES
8TEST002YESNOYES
6TEST01YESNOYES
5UNDOTBS2YESNOYES
4USERSYESNOYES

10rowsselected.

Elapsed:00:00:00.02
18:42:43SQL>

4.2.4删除当前undo表空间则报错
18:42:43SQL>droptablespaceUNDOTBS2includingcontentsanddatafiles;
droptablespaceUNDOTBS2includingcontentsanddatafiles
*
ERRORatline1:
ORA-30013:undotablespace'UNDOTBS2'iscurrentlyinuse

11rowsselected.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: