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

《Oracle从入门到精通》读书笔记第八章 管理表空间和数据文件之一

2014-02-11 12:42 369 查看
8.1 表空间和数据文件的关系表空间可以看成oracle数据库的逻辑结构数据文件可以看成oracle数据库的物理结构SQL> col tablespace_name for a10;SQL> col file_name for a50;SQL> col bytes for 999,999,999;SQL> select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name; TABLESPACE FILE_NAME BYTES---------- -------------------------------------------------- ------------EXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf 104,857,600SYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf 555,745,280SYSTEM /ora/app/oracle/oradata/stone1/system01.dbf 713,031,680UNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf 89,128,960USERS /ora/app/oracle/oradata/stone1/users01.dbf 5,242,880
8.2 oracle 11g的默认表空间
表空间说明
example存放各样例的数据
system存放数据字典,包括表,视图,存储过程的定义等
sysauxsystem表空间的辅助表空间,存储除数据字典外的其他数据对象
temp存放SQL语句处理的表和索引的信息,比如数据排序就占有此空间
undotbs1存放撤销数据的表空间
users存放“应用系统”所使用的数据库对象
SQL> col segment_type for a20;SQL> col segment_name for a30;SQL> col owner for a10;SQL> select segment_type,segment_name,owner from dba_segments where tablespace_name='USERS';SEGMENT_TYPE SEGMENT_NAME OWNER-------------------- ------------------------------ ----------TABLE DEPT SCOTTTABLE EMP SCOTTTABLE SALGRADE SCOTTNESTED TABLE ACTION_TABLE OENESTED TABLE LINEITEM_TABLE OETABLE PURCHASEORDER OENESTED TABLE PRODUCT_REF_LIST_NESTEDTAB OENESTED TABLE SUBCATEGORY_REF_LIST_NESTEDTAB OETABLE CATEGORIES_TAB OETABLE JOBS_TEMP HRINDEX PK_DEPT SCOTTSEGMENT_TYPE SEGMENT_NAME OWNER-------------------- ------------------------------ ----------INDEX PK_EMP SCOTTLOBINDEX SYS_IL0000074466C00004$$ OEINDEX SYS_C0011033 OELOBINDEX SYS_IL0000074470C00005$$ OELOBINDEX SYS_IL0000074470C00010$$ OEINDEX SYS_C0011034 OELOBINDEX SYS_IL0000074465C00004$$ OELOBINDEX SYS_IL0000074465C00005$$ OELOBINDEX SYS_IL0000074465C00008$$ OELOBINDEX SYS_IL0000074465C00012$$ OELOBINDEX SYS_IL0000074465C00017$$ OESEGMENT_TYPE SEGMENT_NAME OWNER-------------------- ------------------------------ ----------LOBINDEX SYS_IL0000074465C00026$$ OELOBINDEX SYS_IL0000074465C00033$$ OEINDEX LINEITEM_TABLE_MEMBERS OEINDEX ACTION_TABLE_MEMBERS OEINDEX SYS_C0011037 OEINDEX SYS_FK0000074515N00009$ OEINDEX SYS_FK0000074515N00007$ OEINDEX SYS_C0011038 OEINDEX SYS_C0011039 OEINDEX SYS_C0011040 OEINDEX SYS_C0011041 OESEGMENT_TYPE SEGMENT_NAME OWNER-------------------- ------------------------------ ----------INDEX SYS_C0011128 HRLOBSEGMENT SYS_LOB0000074466C00004$$ OELOBSEGMENT SYS_LOB0000074470C00005$$ OELOBSEGMENT SYS_LOB0000074470C00010$$ OELOBSEGMENT NAMESPACES567_L OELOBSEGMENT EXTRADATA566_L OELOBSEGMENT SYS_XDBPD$561_L OELOBSEGMENT SYS_XDBPD$562_L OELOBSEGMENT SYS_XDBPD$563_L OELOBSEGMENT SYS_XDBPD$564_L OELOBSEGMENT SYS_XDBPD$565_L OE44 rows selected.
SQL> select owner,count(segment_name) from dba_segments where tablespace_name='SYSAUX' group by owner;OWNER COUNT(SEGMENT_NAME)---------- -------------------MDSYS 262CTXSYS 55OLAPSYS 117SYSTEM 149EXFSYS 58APEX_03020 4670DBSNMP 8ORDSYS 7SYSMAN 578OWNER COUNT(SEGMENT_NAME)---------- -------------------XDB 885ORDDATA 148SYS 927WMSYS 4913 rows selected.
8.3 创建表空间建议将不同类型的数据对象存放到不同的表空间创建表空间必须考虑以下几点:(1)是创建小文件表空间,还是大文件表空间(默认为小文件表空间)(2)是使用局部盘区管理方式,还是使用传统的目录盘区管理方式(默认为局部盘区管理)(3)是手动管理段空间,还是自动管理段空间(默认是自动)(4)是否用于临时段或撤销段的特殊表空间
8.3.1 创建表空间的语法语法格式:create[smallfile|bigfile]|[undo]tablespacetablespace_namedatafile'/path/filename'sizenum[k/m]reuse[,'/path/filename'sizenum[k/m]reuse][,...][autoextend [on|off] next num[k/m][maxsizenum[k/m] |unlimited][mininum extentnum[k/m]][default storagestorage][online | offline][logging | nologging][permanent | temporary][extent management dictionary | local [autoallocate | uniform sizenum[k/m]]]1、语法中的关键字:small|bigfile:表示创建的所需文件表空间还是大文件表空间reuse:表示若该文件存在,则清除该文件再重新建立该文件autoextend [on|off] next:表示数据文件为自动扩展或非自动扩展,如果是自动扩展,则需要设置next的值maxsize:表示当数据文件自动扩展时,允许数据文件扩展的最大长度字节数,unlimited关键字表示不需要指定字节长度minimum extend:指定最小的长度,由操作系统和数据库的块决定default storage:指定以后要创建的表、索引及簇的储存参数值online|offline:指定在线或离线logging|nologging:指定该表空间内的表在加载数据时是否产生日志,默认为loggingpermanent|temporary:指定创建的表空间是永久性表空间或临时表空间,默认为永久性表空间extend management dictionary | local:指定表空间的扩展方式是使用数据字典管理还是本地化管理,默认为本地化管理autoallocate|uniform size:如果采用本地化管理表空间,在表空间扩展时,指定没出盘区扩展的大小是由系统自动指定还是按照等同大小进行。
2、语法中的参数tablespace_name:表示要创建的表空间名称'/path/filename':表示数据文件的路径和名称
8.3.2 通过本地化管理方式创建表空间SQL> col tablespace_name for a10;SQL> col file_name for a50;SQL> col bytes for 999,999,999;SQL> select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name;TABLESPACE FILE_NAME BYTES---------- -------------------------------------------------- ------------EXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf 104,857,600SYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf 555,745,280SYSTEM /ora/app/oracle/oradata/stone1/system01.dbf 713,031,680UNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf 89,128,960USERS /ora/app/oracle/oradata/stone1/users01.dbf 5,242,880
SQL> create tablespace tbs_test_1 datafile '/ora/app/oracle/oradata/stone1/datafile1.dbf' 2 size 10m 3 extent management local uniform size 256k;Tablespace created.SQL> create tablespace tbs_test_2 datafile '/ora/app/oracle/oradata/stone1/datafile2.dbf' 2 size 10m 3 extent management local autoallocate;Tablespace created.SQL> select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name;TABLESPACE FILE_NAME BYTES---------- -------------------------------------------------- ------------EXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf 104,857,600SYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf 555,745,280SYSTEM /ora/app/oracle/oradata/stone1/system01.dbf 713,031,680TBS_TEST_1 /ora/app/oracle/oradata/stone1/datafile1.dbf 10,485,760TBS_TEST_2 /ora/app/oracle/oradata/stone1/datafile2.dbf 10,485,760UNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf 89,128,960USERS /ora/app/oracle/oradata/stone1/users01.dbf 5,242,8807 rows selected.
8.3.3 通过段空间管理方式创建表空间只有本地化管理方式的表空间,才能在其基础上进一步建立段空间管理方式使用“segment space management manual/local”语句1、手动段空间管理方式PCT_FREE,PCT_USEDSQL> create tablespace tbs_test_3 2 datafile '/ora/app/oracle/oradata/stone1/datafile3.dbf' 3 size 10m 4 extent management local autoallocate 5 segment space management manual;Tablespace created.
2、自动段空间管理方式创建表空间首选方式需要注意以下两种情况:a、自动段空间管理方式不能用于创建临时表空间和系统表空间b、oracle推荐使用自动段空间管理方式管理永久表空间,但默认情况下却是manual,所有在创建表空间时需要明确指定为auto
SQL> create tablespace tbs_test_4 2 datafile '/ora/app/oracle/oradata/stone1/datafile4.dbf' 3 size 10m 4 extent management local autoallocate 5 segment space management auto;Tablespace created.
SQL> select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name;TABLESPACE FILE_NAME BYTES---------- -------------------------------------------------- ------------EXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf 104,857,600SYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf 555,745,280SYSTEM /ora/app/oracle/oradata/stone1/system01.dbf 713,031,680TBS_TEST_1 /ora/app/oracle/oradata/stone1/datafile1.dbf 10,485,760TBS_TEST_2 /ora/app/oracle/oradata/stone1/datafile2.dbf 10,485,760TBS_TEST_3 /ora/app/oracle/oradata/stone1/datafile3.dbf 10,485,760TBS_TEST_4 /ora/app/oracle/oradata/stone1/datafile4.dbf 10,485,760UNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf 89,128,960USERS /ora/app/oracle/oradata/stone1/users01.dbf 5,242,8809 rows selected.
8.3.4 创建非标准块表空间需要注意以下几点:a、表空间的非标准块的大小为基本块的倍数。b、oracle通常使用SGA自动共享内存管理,因此需要设置初始化参数db_16k_cache_size=16K。c、这种块较大的表空间通常用来存放大对象(LOB)类型
SQL> alter system set db_16k_cache_size=16k scope=both;System altered.SQL> create tablespace tbs_test_5 2 datafile '/ora/app/oracle/oradata/stone1/datafile5.dbf' 3 size 10m 4 autoextend on next 4m maxsize unlimited 5 blocksize 16k 6 extent management local autoallocate 7 segment space management auto;Tablespace created.
8.3.5 建立大文件表空间大文件(bigfile)表空间注意用在存储区域网络(san),磁盘阵列,自动存储管理上等SQL> create bigfile tablespace tbs_big 2 datafile '/ora/app/oracle/oradata/stone1/datafilebig.dbf' 3 size 10m;Tablespace created.
SQL> alter tablespace tbs_big resize 20m;Tablespace altered.SQL> alter tablespace tbs_test_4 resize 20m;alter tablespace tbs_test_4 resize 20m*ERROR at line 1:ORA-32773: operation not supported for smallfile tablespace TBS_TEST_4
SQL> alter database datafile '/ora/app/oracle/oradata/stone1/datafile4.dbf' 2 resize 20m;Database altered.
8.4 维护表空间和数据文件8.4.1 设置数据库默认表空间SQL> alter database default tablespace tbs_test_1;Database altered.
8.4.2 更改表空间的状态设置表空间只读必须满足下列条件:a、该表空间必须为online状态b、该表空间不能包含任何回滚段c、该表空间不能在归档模式下SQL> alter tablespace tbs_test_2 read only;Tablespace altered.SQL> alter tablespace tbs_test_2 read write;Tablespace altered.
8.4.3 重命名表空间只能对普通的表空间进行重命名,不能对system和sysaux表空间进行重命名,也不能对已经处于offline状态的表空间进行重命名。SQL> alter tablespace tbs_test_5 rename to tbs_test_5_new;Tablespace altered.
8.4.4 删除表空间语法格式:drop tablespace tbs_name [including contents] [cascade constraints]tbs_name:表空间名称including contents:删除表空间的同时删除表空间中的数据,如果不指定该参数,而表空间又有数据时,则oracle会提示错误。cascade constraints:删除表空间的同时也删除相关的完整性约束,如果完整性操作,而没有该参数,在会报错SQL> drop tablespace tbs_test_5_new 2 including contents 3 cascade constraints;Tablespace dropped.
8.4.5 维护表空间中的数据文件1、向表空间添加数据文件SQL> select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name;TABLESPACE FILE_NAME BYTES---------- -------------------------------------------------- ------------EXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf 104,857,600SYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf 555,745,280SYSTEM /ora/app/oracle/oradata/stone1/system01.dbf 713,031,680TBS_BIG /ora/app/oracle/oradata/stone1/datafilebig.dbf 20,971,520TBS_TEST_1 /ora/app/oracle/oradata/stone1/datafile1.dbf 10,485,760TBS_TEST_2 /ora/app/oracle/oradata/stone1/datafile2.dbf 10,485,760TBS_TEST_3 /ora/app/oracle/oradata/stone1/datafile3.dbf 10,485,760TBS_TEST_4 /ora/app/oracle/oradata/stone1/datafile4.dbf 20,971,520UNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf 89,128,960USERS /ora/app/oracle/oradata/stone1/users01.dbf 5,242,88010 rows selected.
SQL> alter tablespace users 2 add datafile '/ora/app/oracle/oradata/stone1/users02.dbf' 3 size 10m 4 autoextend on next 5m maxsize unlimited;Tablespace altered.
2、从表空间中删除数据文件SQL> alter tablespace users 2 drop datafile '/ora/app/oracle/oradata/stone1/users02.dbf' 3 ;Tablespace altered.
3、对数据文件的自动扩展设置可以在alter database或者alter tablespace语句中进行设置SQL> select tablespace_name,file_name,autoextensible from dba_data_files;TABLESPACE FILE_NAME AUTOEXTEN---------- -------------------------------------------------- ---------USERS /ora/app/oracle/oradata/stone1/users01.dbf YESUNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf YESSYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf YESSYSTEM /ora/app/oracle/oradata/stone1/system01.dbf YESEXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf YESTBS_TEST_1 /ora/app/oracle/oradata/stone1/datafile1.dbf NOTBS_TEST_2 /ora/app/oracle/oradata/stone1/datafile2.dbfNOTBS_TEST_3 /ora/app/oracle/oradata/stone1/datafile3.dbf NOTBS_TEST_4 /ora/app/oracle/oradata/stone1/datafile4.dbf NOTBS_BIG /ora/app/oracle/oradata/stone1/datafilebig.dbf NO10 rows selected.SQL> alter database 2 datafile '/ora/app/oracle/oradata/stone1/datafile2.dbf' 3 autoextend on next 5m maxsize unlimited;Database altered.SQL> select tablespace_name,file_name,autoextensible from dba_data_files;TABLESPACE FILE_NAME AUTOEXTEN---------- -------------------------------------------------- ---------USERS /ora/app/oracle/oradata/stone1/users01.dbf YESUNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf YESSYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf YESSYSTEM /ora/app/oracle/oradata/stone1/system01.dbf YESEXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf YESTBS_TEST_1 /ora/app/oracle/oradata/stone1/datafile1.dbf NOTBS_TEST_2 /ora/app/oracle/oradata/stone1/datafile2.dbfYESTBS_TEST_3 /ora/app/oracle/oradata/stone1/datafile3.dbf NOTBS_TEST_4 /ora/app/oracle/oradata/stone1/datafile4.dbf NOTBS_BIG /ora/app/oracle/oradata/stone1/datafilebig.dbf NO10 rows selected.本文出自 “石头记” 博客,请务必保留此出处http://stonebox.blog.51cto.com/5409313/1357961
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: