oracle临时表空间的增删改查
oracle增删改表空间和用户授权及权限

oracle创建表空间、用户如果是在Windows系统下,请先点击“开始”,然后点“运行”,输入cmd并点击“确定”,打开命令行窗口如果是在Linux的图形窗口,请右键点击桌面并点击“打开终端”,然后输入su - oracl 做好上述准备工作以后,输入以下命令:sqlplus /nolog回车后,将出现提示符SQL>这时输入conn / as sysdba一般即可登录,如果失败的话,可以试一下用conn sys/sys用户的密码as sysdba来重试一下接下来,我们看看您当前的数据库文件一般都是放在哪里的:select name from v$datafile;windows下可能看到的结果如下:SQL> select name from v$datafile;NAME--------------------------------------------------------------------------------D:\oracle\oradata\orcl\system01.dbfD:\oracle\oradata\orcl\undotbs01.dbfD:\oracle\oradata\orcl\cwmlite01.dbfD:\oracle\oradata\orcl\drsys01.dbfD:\oracle\oradata\orcl\indx01.dbfD:\oracle\oradata\orcl\tools01.dbf说明您的数据文件是放在D:\oracle\/oradata\orcl\ 这个目录下的Linux下可能看到的结果如下:SQL> select name from v$datafile;NAME--------------------------------------------------------------------------------/oracle/oradata/orcl/system01.dbf/oracle/oradata/orcl/undotbs01.dbf/oracle/oradata/orcl/cwmlite01.dbf/oracle/oradata/orcl/drsys01.dbf/oracle/oradata/orcl/indx01.dbf/oracle/oradata/orcl/tools01.dbf说明您的数据文件是放在/oracle/oradata/orcl/ 这个目录下的好,我们可以开始创建数据库表空间了,创建数据库表空间的命令格式如下:create tablespace 表空间名datafile '对应的文件名' size 大小;举例如下:对于上述的windows情况:create tablespace wbppcs datafile 'D:\oracle\oradata\orcl\wbppcs.dbf' size 3000m;3000m指的是3000MB对于上述的Linux的情况:create tablespace wbppcs datafile '/oracle/oradata/orcl/wbppcs.dbf' size 3000m;至此,所需的表空间已建立接下来我们开始创建用户,创建用户的命令格式如下:create user 用户名identified by 密码default tablespace 用户默认使用哪一个表空间;修改用户的权限:grant 角色1,角色2 to 用户名;举例如下:create user wbppcs identified by wbppcs123 default tablespace wbppcs;给用户授权:grant dba, connect to wbppcs;=============================================================================== ==============================================================oracle创建表空间和用户授权SYS用户在CMD下以DBA身份登录:在CMD中打sqlplus/nolog //匿名登录然后再conn/as sysdba //以dba身份登录//创建临时表空间create temporary tablespace bigoa_temptempfile 'E:\oracle\product\10.2.0\oradata\orcl\bigoa_temp.dbf'size 50mautoextend onnext 50m maxsize 2048mextent management local;//创建数据表空间create tablespace bigoaloggingdatafile'E:\oracle\product\10.1.0\oradata\orcl\bigoa.dbf'size 50mautoextend onnext 50m maxsize 2048mextent management local;//查看数据表空间select tablespace_name from dba_data_files;//创建用户并指定表空间create user swoa identified by oadefault tablespace bigoatemporary tablespace temp;//给用户授予权限grant connect,resource,dba,CTXAPP,create view to swoa;以后以该用户登录,创建的任何数据库对象都属于user_temp和user_data表空间,这就不用在每创建一个对象给其指定表空间了//修改用户口令alter user user_name identified by password;撤权:revoke 权限... from 用户名;删除用户命令drop user swoa cascade;//删除表空间drop tablespace bigoa_temp including contents and datafiles cascade constraints;//including contents 删除表空间的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉//cascade constraints 同时删除tablespace中表的外键参照//数据导出注:退出到cmd命令下再运行下列命令1、将数据库TEST完全导出,用户名system密码manager,导出到D:daochu.dmp中exp pobaoa/oa@orcl file=d:/zyoa0809.dmp full=y //不用加full=y,加上的意思是连同系统表一起导出exp sjsoa/oa@orcl file=d:/sjsoa1224.dmp full=y //不用加full=y,加上的意思是连同系统表一起导出2、将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)3、将数据库中的表inner_notify notify_staff_relat导出exp aichannel/aichannel@TESTDB2 file=d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)exp swoa/oa@orcl file=f:/swoa11.dmp tables=(OA_CALENDAR)exp bigoa/bigoa@orcl file=f:/bigoatemp.dmp tables=(OA_CALENDAR)4、将数据库中的表table1中的字段field1以“00”开头的数据导出exp system/manager@TEST file=d:daochu.dmp tables=(table1) query="where filed1 like '00%'"//数据导入注:退出到cmd命令下再运行下列命令1、将D:daochu.dmp中的数据导入TEST数据库中imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y有的表已经存在,所以会报错,加上ignore=y就可以了imp pobaoa/oa@orcl file=f:\zyoa0916.dmp full=y ignore=yimp sjsoa/oa@orcl file=f:/bigoatemp.dmp full=y2、将d:daochu.dmp中的表table1导入imp system/manager@TEST file=d:daochu.dmp tables=(table1)select INSTANCEID,NID,TITLE,NODENAME,ASSIGNER,NODEBEGIN,initiatorname,'办理状态'As blzt from view_wf_todo where actor='%USERID%' order by nodebegin descsqlplus / as sysdba。
oracle表空间创建,修改,查询

Oracle表空间大文件表空间,小文件表空间大文件表空间只能放置一个数据文件,但是这个数据文件可以包含4G个数据块。
小文件表空间可以放置1024个数据文件。
System,sysaux表空间被创建为小文件表空间,默认如果不指定的话是创建的小文件表空间。
表空间的的区段管理方式:区管理方式分为两种:数据字典管理方式和本地管理方式在创建数据字典管理方式的表空间时,可以在default storage字句中设置initial,next,minextents,naxextents,pciincrease等参数来设置区的存储管理方式,这样如果在这种表空间中创建表,索引等方案对象时,没有使用default storage字句,他们就会自动机继承表空间的存储参数设置。
本地管理方式:本地管理方式可以通过两个关键字来指定表空间的区的分配方式Uniform:统一分配,所有区的大小都相同Autoallocate:自动分配,这是默认分配方式,区的大小随着表的大小自动的改变。
在这种表空间中,创建所有的方案对象都不用storage来设置initial,next,minextents,naxextents,pciincrease等参数,即使设置了也会被忽略。
段管理方式:段管理方式主要是指oracle用来管理段中已用数据块和空闲数据块的机制。
包括:1.manual:这时,oracle使用可用列表来管理段的空闲数据块,这是默认设置2.auto:这时,oracle使用位图来管理段的已用数据块和空闲数据块。
可用列表是传统的段管理方式,段中所有的空闲数据块都被放入一个列表中,在需要存储空间时就在该列表中进行搜索。
位图采用自动方式能够提供更好的存储利用率,在这种模式下,用户不需要在创建方案对象时指定pctfree,pctused,freelist,freelist group等参数来设置段的存储管理方式,即使设置了也会被忽略。
表空间的状态:读写状态和脱机状态脱机状态:normal状态,temporary状态,immediate状态,for recovry状态。
Oracle tablespace (表空间)的创建、删除、修改、扩展及检查等

Oracle tablespace (表空间)的创建、删除、修改、扩展及检查等oracle 数据库表空间的作用1.决定数据库实体的空间分配;2.设置数据库用户的空间份额;3.控制数据库部分数据的可用性;4.分布数据于不同的设备之间以改善性能;5.备份和恢复数据。
--oracle 可以创建的表空间有三种类型:1.temporary: 临时表空间,用于临时数据的存放;create temporary tablespace "sample"......2.undo : 还原表空间. 用于存入重做日志文件.create undo tablespace "sample"......3.用户表空间: 最重要,也是用于存放用户数据表空间create tablespace "sample"......--注:temporary 和undo 表空间是oracle 管理的特殊的表空间.只用于存放系统相关数据.--oracle 创建表空间应该授予的权限1.被授予关于一个或多个表空间中的resource特权;2.被指定缺省表空间;3.被分配指定表空间的存储空间使用份额;4.被指定缺省临时段表空间。
select tablespace_name "表空间名称",status "状态",extent_management "区管理方式",allocation_type "磁盘扩展管理方式",segment_space_management "段管理方式" from dba_tablespaces;--查询各个表空间的区、段管理方式--1、建立表空间--语法格式:create tablespace 表空间名datafile '文件标识符' 存储参数[...]|[minimum extent n] --设置表空间中创建的最小范围大小|[logging|nologging]|[default storage(存储配置参数)]|[online|offline]; --表空间联机\脱机|[permanent|temporary] --指定该表空间是用于保存永久的对象还是只保存临时对象 |[...]--其中:文件标识符=’文件名’[size整数[k\m][reuse]--实例create tablespace data01datafile '/oracle/oradata/db/data01.dbf' size 500muniform size 128k; --指定区尺寸为128k,如不指定,区尺寸默认为64kcreate tablespace "test"loggingdatafile 'd:\oracle\oradata\oracle\sample.ora' size 5m,'d:\oracle\oradata\oracle\dd.ora' size 5mextent management localuniform segment space managementauto;--详解/*第一: create tablespace "sample"创建一个名为"sample" 的表空间.对表空间的命名,遵守oracle 的命名规范就可了. 第二: logging 有nologging 和logging 两个选项,nologging: 创建表空间时,不创建重做日志.logging 和nologging正好相反, 就是在创建表空间时生成重做日志.用nologging时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复;但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的;所以通常不需要表空间的创建日志,因此,在创建表空间时,选择nologging,以加快表空间的创建速度.第三: datafile 用于指定数据文件的具体位置和大小.datafile 的文件是建立表空间后创建的,不过文件路径必须存在才是合法的datafile设置如: datafile 'd:\oracle\oradata\ora92\luntan.ora' size 5m说明文件的存放位置是'd:\oracle\oradata\ora92\luntan.ora' , 文件的大小为5m.如果有多个文件,可以用逗号隔开:如:datafile 'd:\oracle\oradata\ora92\luntan.ora' size 5m, 'd:\oracle\oradata\ora92\ dd.ora' size 5m但是每个文件都需要指明大小.单位以指定的单位为准如5m 或500k.对具体的文件,可以根据不同的需要,存放大不同的介质上,如磁盘阵列,以减少io竟争. 指定文件名时,必须为绝对地址,不能使用相对地址.第四: extent management local 存储区管理方法在字典中管理(dictionary):将数据文件中的每一个存储单元做为一条记录,所以在做dm操作时,就会产生大量的对这个管理表的delete和update操作.做大量数据管理时,将会产生很多的dm操作,严得的影响性能,同时,长时间对表数据的操作,会产生很多的磁盘碎片.本地管理(local):用二进制的方式管理磁盘,有很高的效率,同进能最大限度的使用磁盘.同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并操作。
oracle 增删改查

Oracle的crud操作Crud操作就是c (create) r (retrieve/read) u (update) d(delete)Insert添加操作1、插入的数据应与字段的数据类型相同Create table test10(id number);insert into test10(id)values(12);2、数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中Create table test11(name varchar2(2));insert into test11(name)values(‘ssss’);错误3、在values中列出的数据位置必须与被加入的列的排列位置相对应Create table test12( id number, name varchar2(64));Insert into test12 (id,name) values (‘shunping’,12);错误4、字符和日期数据应包含在单引号中Create table test13 (name varchar2(64),birthday);Insert into test13(name ,birthday)values(shunping,11-may-11);错误5、插入空值,不指定或insert into table value(null)Create table test14(name varchar2(64),age number);Insert into test14(name,age) values(‘shunping’,null);正确6、如果给表的每一列都添加值的话,则可以不带列名Insert into 表名values(列值...);向students中添加数据insert into students values(1,'zs','n','11-may-13',23.34,'hello'); insert into students values(2,'ls','n','11-may-13',23.34,'hello2'); insert into students values(3,'ww','s','11-july-13',23.34,'hello3'); Update 操作1、基本语法Update 表名set 列名=表达式[列名=表达式,....] where 条件2、使用的注意事项(1)update语法可以新值更新原有表行中的各列把zs这个人的性别改成supdate students set sex='s' where name='zs';Set 字句指示要修改哪些列和要修改哪些值把zs这个人的奖学金改为 10update students set fellowship=10 where name='zs';把所有学生的奖学金都提高10%update students set fellowship=fellowship*1.1;Where字句指定应更新哪些行。
C#--Oracle数据库基本操作(增、删、改、查)

C#--Oracle数据库基本操作(增、删、改、查)写在前⾯:常⽤数据库:类似于上篇有关SQLserver的C#封装,⼩编对Oracle数据库进⾏了相应的封装,⽅便后期开发使⽤,主要包括Oracle数据库的连接、增、删、改、查,如有什么问题还请各位⼤佬指教。
后续也将对其他⼏个常⽤的数据库进⾏相应的整理。
话不多说,直接开始码代码。
引⽤:由于微软在.框架4.0中已经决定撤销使⽤System.Data.OracleClient,造成在VS中⽆法连接Oracle数据库,但它还依旧存在于.架构中,我们可以通过⾃⼰引⽤。
具体⽅法如下:(1)在需要引⽤的程序集引⽤⽂件夹上右击,选择添加引⽤(2)选择浏览选项(3)找到⽬录 C:\Windows\Microsoft.\Framework\v2.0.50727(4)找到 System.Data.OracleClient.dll ⽂件(5)点击确定。
OK,引⽤完成using System.Data; //DataSet引⽤集using System.Data.OracleClient; //oracle引⽤先声明⼀个SqlConnectionprivate OracleConnection oracle_con;//声明⼀个OracleConnection⽅便使⽤Oracle打开:/// <summary>/// Oracle open/// </summary>/// <param name="link">link statement</param>/// <returns>Success:success; Fail:reason</returns>public string Oracle_Open(string link){ try { oracle_con = new OracleConnection(link); oracle_con.Open(); return "success"; } catch (Exception ex) { return ex.Message; }}Oracle关闭:/// <summary>/// Oracle close/// </summary>/// <returns>Success:success Fail:reason</returns>public string Oracle_Close(){ try { if (oracle_con == null) { return "No database connection"; } if (oracle_con.State == ConnectionState.Open) { oracle_con.Close(); oracle_con.Dispose(); } else { if (oracle_con.State == ConnectionState.Closed) { return "success"; } if (oracle_con.State == ConnectionState.Broken) { return "ConnectionState:Broken"; } } return "success"; } catch (Exception ex) { return ex.Message; }}Oracle的增删改:/// <summary>/// Oracle insert,delete,update/// </summary>/// <param name="sql">insert,delete,update statement</param>/// <returns>Success:success + Number of affected rows; Fail:reason</returns>public string Oracle_Insdelupd(string sql){ try { int num = 0; if (oracle_con == null) { return "Please open the database connection first"; } if (oracle_con.State == ConnectionState.Open) { OracleCommand oracleCommand = new OracleCommand(sql, oracle_con); num = oracleCommand.ExecuteNonQuery(); } else { if (oracle_con.State == ConnectionState.Closed) { return "Database connection closed"; } if (oracle_con.State == ConnectionState.Broken) { return "Database connection is destroyed"; } } return "success" + num; } catch (Exception ex) { return ex.Message.ToString(); }}Oracle的查:/// <summary>/// Oracle select/// </summary>/// <param name="sql">select statement</param>/// <param name="record">Success:success; Fail:reason</param>/// <returns>select result</returns>public DataSet Oracle_Select(string sql, out string record) try { DataSet dataSet = new DataSet(); if (oracle_con != null) { if (oracle_con.State == ConnectionState.Open) { OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(sql, oracle_con); oracleDataAdapter.Fill(dataSet, "sample"); oracleDataAdapter.Dispose(); record = "OK"; return dataSet; } if (oracle_con.State == ConnectionState.Closed) { record = "Database connection closed"; } else if (oracle_con.State == ConnectionState.Broken) { record = "Database connection is destroyed"; } } else { record = "Please open the database connection first"; } record = "error"; return dataSet; } catch (Exception ex) { DataSet dataSet = new DataSet(); record = ex.Message.ToString(); return dataSet; }}⼩编发现以上这种封装⽅式还是很⿇烦,每次对Oracle进⾏增删改查的时候还得先打开数据库,最后还要关闭,实际运⽤起来⽐较⿇烦。
【总结】Oracle数据库查看表空间和增加表空间

【总结】Oracle数据库查看表空间和增加表空间⼀、Oracle查看表空间的名称及其⼤⼩查看表空间的名称及其⼤⼩的SQL语句:select t1.tablespace_name,round(sum(bytes/(1024*1024)),0) tablespace_Size_MBfrom dba_tablespaces t1, dba_data_files t2where t1.tablespace_name = t2.tablespace_namegroup by t1.tablespace_name;查询结果:TABLESPACE_NAME TABLESPACE_SIZE_MB------------------------------ ------------------DLOTTEY 276480SYSAUX 48450UNDOTBS1 20000INDEXMT 10240USERS 1041SYSTEM 10240UNDOTBS2 20000MMLOTTERY 2150408 rows selected.⼆、Oracle查看表空间的具体使⽤情况⽅法1:(未排序)select a.tablespace_name "tablespace_name",totalspace "totalspaceM",freespace "freespaceM",round((1-freespace/totalspace)*100,2) "round%"from(select tablespace_name,round(sum(bytes)/1024/1024) totalspace from dba_data_files group by tablespace_name) a,(select tablespace_name,round(sum(bytes)/1024/1024) freespace from dba_free_space group by tablespace_name) bwhere a.tablespace_name=b.tablespace_name;查询结果:tablespace_name totalspaceM freespaceM round%------------------------ ----------- ---------- ----------DLOTTEY 276480 232415 15.94SYSAUX 48450 9683 80.01UNDOTBS1 20000 19741 1.3INDEXMT 10240 10024 2.11USERS 1041 138 86.74SYSTEM 10240 4344 57.58UNDOTBS2 20000 19601 2MMLOTTERY 215040 36279 83.138 rows selected.⽅法⼆:(查询结果排序) select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB",round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used"from(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) bwhere a.tablespace_name=b.tablespace_nameorder by ((a.bytes-b.bytes)/a.bytes) desc;查询结果:TABLESPACE_NAME Sum MB used MB free MB percent_used---------------------- ---------- ---------- ---------- ------------USERS 1041.25 903.375 137.875 86.76MMLOTTERY 215040 178761 36279 83.13SYSAUX 48450 38767 9683 80.01SYSTEM 10240 5896.125 4343.875 57.58DLOTTEY 276480 44065.4375 232414.563 15.94INDEXMT 10240 215.625 10024.375 2.11UNDOTBS2 20000 399.3125 19600.6875 2UNDOTBS1 20000 257.5 19742.5 1.298 rows selected.三、Oracle查看表空间物理⽂件的名称及⼤⼩set lines 150;col tablespace_name for a20;col file_name for a60;1、查询所有的表空间SQL语句:select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space_MBfrom dba_data_filesorder by tablespace_name;2、查询指定的表空间SQL语句:select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space_MBfrom dba_data_fileswhere tablespace_name = 'MMLOTTERY'order by tablespace_name;查询结果:TABLESPACE_NAME FILE_ID FILE_NAME TOTAL_SPACE_MB------------------- ---------- ------------------------------------------- --------------MMLOTTERY 18 +DATA/ora11g/datafile/mmlottery01.dbf 30720MMLOTTERY 19 +DATA/ora11g/datafile/mmlottery02.dbf 30720MMLOTTERY 20 +DATA/ora11g/datafile/mmlottery03.dbf 30720MMLOTTERY 22 +DATA/ora11g/datafile/mmlottery04.dbf 30720MMLOTTERY 23 +DATA/ora11g/datafile/mmlottery05.dbf 30720MMLOTTERY 26 +DATA/ora11g/datafile/mmlottery06.dbf 30720MMLOTTERY 27 +DATA/ora11g/datafile/mmlottery07.dbf 307207 rows selected.四、Oracle查看表真实占⽤的空间SQL语句:select t.owner,t.segment_name,t.segment_type,sum(t.bytes/1024/1024) used_MBfrom dba_segments twhere owner = 'MMLOTTERY'group by owner,segment_name,segment_typeorder by used_MB desc;查询结果:OWNER SEGMENT_NAME SEGMENT_TYPE USED_MB------------------- -------------------------------- ------------------ ----------MMLOTTERY TB_ORIGINAL_ORDERDETAILS TABLE 1792MMLOTTERY TB_LOTTERY_SALEDETAIL TABLE 1472MMLOTTERY TB_LOTTERYSCHEMEINFO_ADD TABLE 1280MMLOTTERY TEST_007 TABLE 1152MMLOTTERY TB_ACCOUNT_OPERATE_DETAIL TABLE 808MMLOTTERY PK14 INDEX 377MMLOTTERY PK14_11 INDEX 312MMLOTTERY PK14_13 INDEX 200MMLOTTERY PK14_12 INDEX 160MMLOTTERY TB_BONUS_ORDERDETAILS TABLE 160MMLOTTERY TB_WINBONUS_DETAIL TABLE 14411 rows selected.五、Oracle 增加表空间语法:alter tablespace {表空间名字} add datafile '物理数据⽂件路径' SIZE 『初始⼤⼩M』 AUTOEXTEND ON NEXT 『⾃动扩展⼤⼩M』例⼦:alter tablespace MMLOTTERY add datafile '+DATA/ora11g/datafile/mmlottery08.dbf' size 30720m autoextend on next 200m;注意:如果添加表空间的⽂件名重复,那么会报错,如下:SQL> alter tablespace MMLOTTERY add datafile '+DATA/ora11g/datafile/mmlottery08.dbf' size 30720m autoextend on next 200m;alter tablespace MMLOTTERY add datafile '+DATA/ora11g/datafile/mmlottery08.dbf' size 30720m autoextend on next 200m*ERROR at line 1:ORA-01537: cannot add file'+DATA/ora11g/datafile/mmlottery08.dbf' - file already part of database若 datafile 加错到表空间,则执⾏删除操作。
Oracletablespace(表空间)的创建、删除、修改、扩展及检查等

Oracletablespace(表空间)的创建、删除、修改、扩展及检查等第一篇:Oracle tablespace (表空间)的创建、删除、修改、扩展及检查等Oracle tablespace(表空间)的创建、删除、修改、扩展及检查等oracle 数据库表空间的作用1.决定数据库实体的空间分配;2.设置数据库用户的空间份额;3.控制数据库部分数据的可用性;4.分布数据于不同的设备之间以改善性能;5.备份和恢复数据。
--oracle 可以创建的表空间有三种类型: 1.temporary: 临时表空间,用于临时数据的存放;create temporary tablespace “sample”......2.undo : 还原表空间.用于存入重做日志文件.create undo tablespace “sample”......3.用户表空间: 最重要,也是用于存放用户数据表空间create tablespace “sample”......--注:temporary 和 undo 表空间是oracle 管理的特殊的表空间.只用于存放系统相关数据.--oracle 创建表空间应该授予的权限1.被授予关于一个或多个表空间中的resource特权;2.被指定缺省表空间;3.被分配指定表空间的存储空间使用份额;4.被指定缺省临时段表空间。
select tablespace_name “表空间名称”,status “状态”,extent_management “区管理方式”,allocation_type “磁盘扩展管理方式”,segment_space_management “段管理方式” from dba_tablespaces;--查询各个表空间的区、段管理方式--1、建立表空间--语法格式: create tablespace 表空间名 datafile '文件标识符' 存储参数 [...] |[minimum extent n]--设置表空间中创建的最小范围大小 |[logging|nologging]|[default storage(存储配置参数)] |[online|offline];--表空间联机脱机|[permanent|temporary]--指定该表空间是用于保存永久的对象还是只保存临时对象|[...]--其中:文件标识符=’文件名’[size整数[km][reuse]--实例create tablespace data01 datafile '/oracle/oradata/db/data01.dbf' size 500m uniform size 128k;--指定区尺寸为128k,如不指定,区尺寸默认为64k create tablespace “test” logging datafile 'd:oracleoradatao raclesample.ora' size 5m, 'd:oracleoradataoracledd.ora' size 5m extent management local uniform segment space management auto;--详解/* 第一: create tablespace “sample” 创建一个名为“sample” 的表空间.对表空间的命名,遵守oracle 的命名规范就可了.第二: logging 有nologging 和 logging 两个选项, nologging: 创建表空间时,不创建重做日志.logging 和nologging正好相反, 就是在创建表空间时生成重做日志.用nologging时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复;但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的;所以通常不需要表空间的创建日志,因此,在创建表空间时,选择 nologging,以加快表空间的创建速度.第三: datafile 用于指定数据文件的具体位置和大小.datafile 的文件是建立表空间后创建的,不过文件路径必须存在才是合法的datafile设置如: datafile 'd:oracleoradataora92luntan.ora' size 5m 说明文件的存放位置是'd:oracleoradataora92luntan.ora' , 文件的大小为5m.如果有多个文件,可以用逗号隔开: 如:datafile 'd:oracleoradataora92luntan.ora' size 5m, 'd:oracleoradataora92dd.ora' size 5m 但是每个文件都需要指明大小.单位以指定的单位为准如 5m 或 500k.对具体的文件,可以根据不同的需要,存放大不同的介质上,如磁盘阵列,以减少io竟争.指定文件名时,必须为绝对地址,不能使用相对地址.第四: extent management local 存储区管理方法在字典中管理(dictionary):将数据文件中的每一个存储单元做为一条记录,所以在做dm操作时,就会产生大量的对这个管理表的delete和update操作.做大量数据管理时,将会产生很多的dm操作,严得的影响性能,同时,长时间对表数据的操作,会产生很多的磁盘碎片.本地管理(local):用二进制的方式管理磁盘,有很高的效率,同进能最大限度的使用磁盘.同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并操作。
Oracle表的增删改查

表的增删改查创建表CREATE TABLE [用户名.]表名(列名数据类型 [default 默认值] [,...]...);SQL> create table t1 (2 id number(10),3 name varchar2(20),4 password varchar2(30));SQL> create table tab1 as select * from emp where sal>2000; SQL> create table tab2 as select * from emp where 1=2;增加修改删除列增加一列ALTER TABLE [用户名.]表名ADD (列名1 数据类型[DEFAULT 表达式],[列名2 数据类型],...)SQL> desc t1;名称是否为空? 类型------------- -------- ---------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SQL> alter table t1 add (sal number(10));SQL> desc t1;名称是否为空? 类型--------------- -------- --------------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL NUMBER(10)SQL> alter table t1 add (job varchar(10));SQL> desc t1;名称是否为空? 类型------------------ -------- ----------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL NUMBER(10)JOB VARCHAR2(10)修改表已存列的数据类型与列名重命名语法格式:ALTER TABLE 表名MODIFY (列名1,数据类型 [DEFAULT 表达式],列名2,数据类型,...)SQL> desc t1;名称是否为空? 类型-------------------- -------- ---------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL NUMBER(10)JOB VARCHAR2(10)SQL> alter table t1 modify (sal varchar2(20));SQL> desc t1;名称是否为空? 类型--------------------- -------- ---------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL VARCHAR2(20)JOB VARCHAR2(10)SQL> alter table t1 rename column job to comm;SQL> desc t1;名称是否为空? 类型-------------------- -------- ---------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL VARCHAR2(20)COMM VARCHAR2(10)SQL> alter table t1 modify (comm number(10));SQL> desc t1;名称是否为空? 类型------------------------ -------- ---------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL VARCHAR2(20)COMM NUMBER(10)删除表里的某列ALTER TABLE 表名 DROP COLUMN 列名;SQL> desc t1;名称是否为空? 类型------------------------------ -------------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL VARCHAR2(20)COMM NUMBER(10)SQL> alter table t1 drop column comm;SQL> desc t1;名称是否为空? 类型------------------------ -------- -------------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SAL VARCHAR2(20)间接删除表里已存在的列删除表里的列特别是删除大表里的列是特耗资源的所以在删除一个列时可以先把要删除的列打标记,标记成无用列 ,然后等系统不忙时在彻底删除这个列语法格式:ALTER TABLE 表名 SET UNUSED COLUMN 列名;把一个列设置成无用列注意一下事项⎽必需在8i以上版本适用⎽该列被设置成无用列后,并不是删除了而是设置成无用标记而已还需要手工删除这个列⎽设置成无用列后,无法用sqlplus或是sql 语句看到的⎽oracle把设置成无用列当作删除列处理⎽可以适用DROP UNUSED (列名) 选项删除被设置成无用的列⎽因为该语句是DDL语句没有恢复无用列的命令然后等系统不忙时在用ALTER TABLE 表名DROP UNUSED COLUMN;SQL> alter table t1 set unused column sal;SQL> desc t1;名称是否为空? 类型----------------------- -------- --------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)SQL> alter table t1 drop unused column;SQL> desc t1;名称是否为空? 类型------------------------ -------- --------------ID UMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)truncate table 截断表当一个表里的数据不再需要时,可以适用truncate table 全部删除表里的数据,该语句为DDL语句无法适用rollback 来回滚数据语法格式:TRUNCATE TABLE 表名特点:⎽删除表中的数据行,但保留表的结构⎽truncate 是DDL 语句,如果没有备份数据无法恢复⎽truncate 删除表中的数据行后,立即释放磁盘空间如果只删除数据,而保留数据结构适用truncate 如果既要删除数据,也要删除表结构适用DROP语法格式:DROP TABLE 表名特点:⎽DROP删除表中的所有数据行和表的结构⎽DROP 也删除表的所有索引⎽提交所有挂起事务所有基于被DROP的表的视图别名依然保留但已经无效对象表的重命名语法格式:RENAME 旧表名 TO 新表名SQL> rename t1 to table1;SQL> desc t1;ERROR:ORA-04043: 对象 t1 不存在SQL> desc table1;名称是否为空? 类型---------------------- -------- -------------ID NUMBER(10)NAME VARCHAR2(20)PASSWORD VARCHAR2(30)删除一个表DROP TABLE TABLENAMESQL> drop table tab1;SQL> select * from tab;TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- DEPT TABLEEMP TABLEBONUS TABLESALGRADE TABLEBIN$DCVrueY1SDSmKp/kGnvFpA==$0 TABLETAB2 TABLETABLE1 TABLE清空闪回回收站SQL> purge Recyclebin;回收站已清空。
oracle10g数据库的表空间查看和修改

oracle数据库表空间大小的查看、修改1、通过oracle客户端连接到oracle数据库a)安装好oracle客户端后,通过net manager工具配置本地net服务名,依次点击开始,程序,Oracle - OraClient10g_home1,配置和移植工具,Net Manager。
b)进入Net Manager配置窗口。
c)依次点击本地,服务命名。
d)可以看到左侧的号变成绿色,此时可以点击该,弹出net服务名的配置窗口e)这里的网络服务名是指的oracle客户端所在机器的本地服务名,随便设置个名字,例如sbzw,点击下一步。
f)默认设置,点击下一步。
g)在主机名后的输入框中输入oracle数据库所在的服务器的ip地址,例如:,点击下一步。
h)在服务名后的输入框中输入oracle数据库的全局服务名,例如tjsb,点击下一步。
i)此处不要点击完成,先点击测试查看连接是否正常。
j)在连接测试窗口中显示的应该是测试没有成功,此时请点击更改登录。
k)修改了用户名和密码后,点击确定,然后再次点击“测试”,提示连接成功后,关闭连接测试窗口,点击完成,至此本地net服务名配置完成。
2、通过oracle客户端的企业管理器修改数据库的表空间大小a)依次点击开始,程序,Oracle - OraClient10g_home1,EnterpriseManager Console(企业管理器)。
b)进入了oracle的企业管理器c)依次点击数据库,sbzw,弹出登录窗口,d)对于修改表空间而言,这里的用户名必须是sys用户,连接身份为SYSDBA。
e)输入完成后,点击确定,可以看到左侧sbzw的菜单已经打开。
f)依次选择存储,表空间,则页面左侧会显示当前的表空间的使用情况。
g)对于需要增大的表空间,双击该表空间,例如这里的TS_FZ4_DATA,弹出该表空间的编辑窗口。
h)对于表空间的修改,有两种办法:i.一种是直接修改单个数据文件的大小值,也就是直接修改上图中的大小里面的数值,单位是MB,修改完成后点击确定即可。
Oracle tablespace (表空间)的创建、删除、修改、扩展及检查等.

Oracle tablespace (表空间的创建、删除、修改、扩展及检查等oracle 数据库表空间的作用1.决定数据库实体的空间分配;2.设置数据库用户的空间份额;3.控制数据库部分数据的可用性;4.分布数据于不同的设备之间以改善性能;5.备份和恢复数据。
--oracle 可以创建的表空间有三种类型:1.temporary: 临时表空间, 用于临时数据的存放;create temporary tablespace "sample"......2.undo : 还原表空间. 用于存入重做日志文件.create undo tablespace "sample"......3.用户表空间: 最重要, 也是用于存放用户数据表空间create tablespace "sample"......--注:temporary 和 undo 表空间是oracle 管理的特殊的表空间. 只用于存放系统相关数据.--oracle 创建表空间应该授予的权限1.被授予关于一个或多个表空间中的resource 特权;2.被指定缺省表空间;3.被分配指定表空间的存储空间使用份额;4.被指定缺省临时段表空间。
select tablespace_name " 表空间名称",status " 状态",extent_management " 区管理方式",allocation_type " 磁盘扩展管理方式",segment_space_management " 段管理方式" from dba_tablespaces;--查询各个表空间的区、段管理方式--1、建立表空间--语法格式:create tablespace 表空间名datafile ' 文件标识符' 存储参数 [...]|[minimum extent n] --设置表空间中创建的最小范围大小|[logging|nologging]|[default storage(存储配置参数]|[online|offline]; --表空间联机\脱机|[permanent|temporary] --指定该表空间是用于保存永久的对象还是只保存临时对象 |[...]--其中:文件标识符=’文件名’[size整数[k\m][reuse]--实例create tablespace data01datafile '/oracle/oradata/db/data01.dbf' size 500muniform size 128k; --指定区尺寸为128k, 如不指定,区尺寸默认为64k create tablespace "test"loggingdatafile 'd:\oracle\oradata\oracle\sample.ora' size 5m,'d:\oracle\oradata\oracle\dd.ora' size 5mextent management localuniform segment space managementauto;--详解/*第一: create tablespace "sample"创建一个名为 "sample" 的表空间. 对表空间的命名, 遵守oracle 的命名规范就可了. 第二: logging 有 nologging 和 logging 两个选项,nologging: 创建表空间时, 不创建重做日志.logging 和nologging 正好相反, 就是在创建表空间时生成重做日志.用nologging 时, 好处在于创建时不用生成日志, 这样表空间的创建较快, 但是没能日志, 数据丢失后, 不能恢复;但是一般我们在创建表空间时, 是没有数据的, 按通常的做法, 是建完表空间, 并导入数据后, 是要对数据做备份的;所以通常不需要表空间的创建日志, 因此, 在创建表空间时, 选择 nologging, 以加快表空间的创建速度.第三: datafile 用于指定数据文件的具体位置和大小.datafile 的文件是建立表空间后创建的,不过文件路径必须存在才是合法的datafile 设置如: datafile 'd:\oracle\oradata\ora92\luntan.ora' size 5m说明文件的存放位置是 'd:\oracle\oradata\ora92\luntan.ora' , 文件的大小为5m. 如果有多个文件, 可以用逗号隔开:如:datafile 'd:\oracle\oradata\ora92\luntan.ora' size 5m,'d:\oracle\oradata\ora92\dd.ora' size 5m但是每个文件都需要指明大小. 单位以指定的单位为准如 5m 或 500k.对具体的文件, 可以根据不同的需要, 存放大不同的介质上, 如磁盘阵列, 以减少io 竟争. 指定文件名时, 必须为绝对地址, 不能使用相对地址.第四: extent management local 存储区管理方法在字典中管理(dictionary:将数据文件中的每一个存储单元做为一条记录, 所以在做dm 操作时, 就会产生大量的对这个管理表的delete 和update 操作.做大量数据管理时, 将会产生很多的dm 操作, 严得的影响性能, 同时, 长时间对表数据的操作, 会产生很多的磁盘碎片.本地管理(local:用二进制的方式管理磁盘, 有很高的效率, 同进能最大限度的使用磁盘.同时能够自动跟踪记录临近空闲空间的情况,避免进行空闲区的合并操作。
ORACLE增删改查以及casewhen的基本用法

ORACLE增删改查以及casewhen的基本⽤法1.创建tablecreate table test01(id int not null primary key,name varchar(8) not null,gender varchar2(2) not null,age int not null,address varchar2(20) default ‘地址不详’ not null,regdata date);约束⾮空约束 not null主键约束 primary key外键约束唯⼀约束 unique检查约束 check联合主键constraint pk_id_username primary key(id,username);查看数据字典desc user_constraint修改表时重命名rename constraint a to b;--修改表删除约束--禁⽤约束 disable constraint 约束名字;删除约束 drop constraint 约束名字; drop primary key;直接删除主键外键约束create table typeinfo(typeid varchar2(20) primary key, typename varchar2(20));create table userinfo_f( id varchar2(10) primary key,username varchar2(20),typeid_new varchar2(10) references typeinfo(typeid));insert into typeinfo values(1,1);创建表时设置外键约束constraint 名字 foregincreate table userinfo_f2 (id varchar2(20) primary key,username varchar2(20),typeid_new varchar2(10),constraint fk_typeid_new foreign key(typeid_new) references typeinfo(typeid));create table userinfo_f3 (id varchar2(20) primary key,username varchar2(20),typeid_new varchar2(10),constraint fk_typeid_new1 foreign key(typeid_new) references typeinfo(typeid) on delete cascade外键约束包含删除外键约束禁⽤约束 disable constraint 约束名字;删除约束 drop constraint 约束名字;唯⼀约束与主键区别唯⼀约束可以有多个,只能有⼀个nullcreate table userinfo_u( id varchar2(20) primary key,username varchar2(20) unique,userpwd varchar2(20));创建表时添加约束constraint 约束名字 unique(列名);修改表时添加唯⼀约束 add constraint 约束名字 unique(列名);检查约束create table userinfo_c( id varchar2(20) primary key,username varchar2(20), salary number(5,0) check(salary>50));constraint ck_salary check(salary>50);/* 获取表:*/select table_name from user_tables; //当前⽤户的表select table_name from all_tables; //所有⽤户的表select table_name from dba_tables; //包括系统表select table_name from dba_tables where owner=’zfxfzb’/*2.修改表alter table test01 add constraint s_id primary key;alter table test01 add constraint CK_INFOS_GENDER check(gender=’男’ or gender=’⼥’)alter table test01 add constraint CK_INFOS_AGE(age>=0 and age<=50)alter table 表名 modify 字段名 default 默认值; //更改字段类型alter table 表名 add 列名字段类型; //增加字段类型alter table 表名 drop column 字段名; //删除字段名alter table 表名 rename column 列名 to 列名 //修改字段名rename 表名 to 表名 //修改表名3.删除表格truncate table 表名 //删除表中的所有数据,速度⽐delete快很多,截断表delete from table 条件//drop table 表名 //删除表4.插⼊语句insert into 表名(值1,值2) values(值1,值2);5.修改语句update 表名 set 字段=值 [修改条件]update t_scrm_db_app_user set password = :pwd where login_name = :user6.查询语句带条件的查询where模糊查询like % _范围查询in对查询结果进⾏排序order by desc||asc7.case whenselect username,case username when ‘aaa’ then ‘计算机部门’ when ‘bbb’ then ‘市场部门’ else ‘其他部门’ end as 部门 from users; select username,case username=’aaa’ then ‘计算机部门’ when username=’bbb’ then ‘市场部门’ else ‘其他部门’ as 部门 from users;8.运算符和表达式算数运算符和⽐较运算符 distinct 去除多余的⾏ column 可以为字段设置别名⽐如 column column_name heading new_name decode 函数的使⽤类似于case…when select username,decode(username,’aaa’,’计算机部门’,’bbb’,’市场部门’,’其他’) as 部门 from users;9.复制表create table 表名 as ⼀个查询结果 //复制查询结果insert into 表名值⼀个查询结果 //添加时查询10.查看表空间desc test01;11.创建表空间永久表空间create tablespace test1_tablespace datafile ‘testfile.dbf’ size 10m;临时表空间create temporary tablespace temptest1_tablespace tempfile ‘tempfile.dbf’ size 10m;desc dba_data_files;select file_name from dba_data_files where tablespace_name=’TEST1_TABLESPACE’;。
oracle临时表空间的增删改查操作(精)

oracle 临时表空间的增删改查操作oracle 临时表空间的增删改查1、查看临时表空间(dba_temp_files视图)(v_$tempfile视图)select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;--sys用户查看2、缩小临时表空间大小alter database tempfile'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TELEMT\TEMP01.DBF' resize 100M;3、扩展临时表空间:方法一、增大临时文件大小:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize100m;方法二、将临时数据文件设为自动扩展:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;方法三、向临时表空间中添加数据文件:SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ size 100m;4、创建临时表空间:SQL> create temporary tablespace temp1 tempfile‘/u01/app/oracle/oradata/orcl/temp11.dbf’ size 10M;5、更改系统的默认临时表空间:--查询默认临时表空间select * from database_properties whereproperty_name='DEFAULT_TEMP_TABLESPACE';--修改默认临时表空间alter database default temporary tablespace temp1;所有用户的默认临时表空间都将切换为新的临时表空间:select username,temporary_tablespace,default_ from dba_users;--更改某一用户的临时表空间:alter user scott temporary tablespace temp;6、删除临时表空间删除临时表空间的一个数据文件:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ drop;删除临时表空间(彻底删除:SQL> drop tablespace temp1 including contents and datafiles cascade constraints;7、查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小dba_temp_files视图的bytes字段记录的是临时表空间的总大小SELECT temp_used.tablespace_name,total - used as "Free",total as "Total",round(nvl(total - used, 0 * 100 / total, 3 "Free percent"FROM (SELECT tablespace_name, SUM(bytes_used / 1024 / 1024 usedFROM GV_$TEMP_SPACE_HEADERGROUP BY tablespace_name temp_used,(SELECT tablespace_name, SUM(bytes / 1024 / 1024 totalFROM dba_temp_filesGROUP BY tablespace_name temp_totalWHERE temp_used.tablespace_name = temp_total.tablespace_name8、查找消耗资源比较的sql语句Select ername,se.sid,su.extents,su.blocks * to_number(rtrim(p.value as Space,tablespace,segtype,sql_textfrom v$sort_usage su, v$parameter p, v$session se, v$sql swhere = 'db_block_size'and su.session_addr = se.saddrand s.hash_value = su.sqlhashand s.address = su.sqladdrorder by ername, se.sid9、查看当前临时表空间使用大小与正在占用临时表空间的sql语句select sess.SID, segtype, blocks * 8 / 1000 "MB", sql_textfrom v$sort_usage sort, v$session sess, v$sql sqlwhere sort.SESSION_ADDR = sess.SADDRand sql.ADDRESS = sess.SQL_ADDRESSorder by blocks desc;10、临时表空间组介绍1)创建临时表空间组:create temporary tablespace tempts1 tempfile '/home/oracle/temp1_02.dbf' size 2M tablespace group group1;create temporary tablespace tempts2 tempfile '/home/oracle/temp2_02.dbf' size 2M tablespace group group2;2)查询临时表空间组:dba_tablespace_groups视图select * from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP1 TEMPTS1GROUP2 TEMPTS23)将表空间从一个临时表空间组移动到另外一个临时表空间组:alter tablespace tempts1 tablespace group GROUP2 ;select * from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP2 TEMPTS1GROUP2 TEMPTS24)把临时表空间组指定给用户alter user scott temporary tablespace GROUP2;5)在数据库级设置临时表空间alter database <db_name> default temporary tablespace GROUP2;6)删除临时表空间组 (删除组成临时表空间组的所有临时表空间drop tablespace tempts1 including contents and datafiles;select * from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP2 TEMPTS2drop tablespace tempts2 including contents and datafiles;select * from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME11、对临时表空间进行shrink(11g新增的功能)--将temp表空间收缩为20Malter tablespace temp shrink space keep 20M;--自动将表空间的临时文件缩小到最小可能的大小ALTER TABLESPACE temp SHRINK TEMPFILE ’/u02/oracle/data/lmtemp02.dbf’;临时表空间作用Oracle临时表空间主要用来做查询和存放一些缓冲区数据。
oracle临时表空间的增删改查操作

操作oracle 临时表空间的增删改查1、查看临时表空间dba_temp_files视图v_$tempfile视图select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;--sys用户查看2、缩小临时表空间大小alter database tempfile 'D:\ORACLE\PRODUCT\' resize 100M;3、扩展临时表空间:方法一、增大临时文件大小:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ resize 100m;方法二、将临时数据文件设为自动扩展:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ autoextend on next 5m maxsize unlimited;方法三、向临时表空间中添加数据文件:SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/’ size100m;4、创建临时表空间:SQL> create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/’ size 10M;5、更改系统的默认临时表空间:--查询默认临时表空间select from database_properties whereproperty_name='DEFAULT_TEMP_TABLESPACE';--修改默认临时表空间alter database default temporary tablespace temp1;所有用户的默认临时表空间都将切换为新的临时表空间:select username,temporary_tablespace,default_ from dba_users;--更改某一用户的临时表空间:alter user scott temporary tablespace temp;6、删除临时表空间删除临时表空间的一个数据文件:SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/’ drop;删除临时表空间彻底删除:SQL> drop tablespace temp1 including contents and datafiles cascade constraints;7、查看临时表空间的使用情况GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小dba_temp_files视图的bytes字段记录的是临时表空间的总大小SELECT ,total - used as "Free",total as "Total",roundnvltotal - used, 0 100 / total, 3 "Free percent"FROM SELECT tablespace_name, SUMbytes_used / 1024 / 1024 usedFROM GV_$TEMP_SPACE_HEADERGROUP BY tablespace_name temp_used,SELECT tablespace_name, SUMbytes / 1024 / 1024 totalFROM dba_temp_filesGROUP BY tablespace_name temp_totalWHERE =8、查找消耗资源比较的sql语句Select ,,,to_numberrtrim as Space,tablespace,segtype,sql_textfrom v$sort_usage su, v$parameter p, v$session se, v$sql swhere = 'db_block_size'and =and =and =order by ,9、查看当前临时表空间使用大小与正在占用临时表空间的sql语句select , segtype, blocks 8 / 1000 "MB", sql_textfrom v$sort_usage sort, v$session sess, v$sql sqlwhere =and =order by blocks desc;10、临时表空间组介绍1创建临时表空间组:create temporary tablespace tempts1 tempfile '/home/oracle/' size 2M tablespace group group1;create temporary tablespace tempts2 tempfile '/home/oracle/' size 2M tablespace group group2;2查询临时表空间组:dba_tablespace_groups视图select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP1 TEMPTS1GROUP2 TEMPTS23将表空间从一个临时表空间组移动到另外一个临时表空间组:alter tablespace tempts1 tablespace group GROUP2 ;select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP2 TEMPTS1GROUP2 TEMPTS24把临时表空间组指定给用户alter user scott temporary tablespace GROUP2;5在数据库级设置临时表空间alter database <db_name> default temporary tablespace GROUP2;6删除临时表空间组删除组成临时表空间组的所有临时表空间drop tablespace tempts1 including contents and datafiles;select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME------------------------------ ------------------------------GROUP2 TEMPTS2drop tablespace tempts2 including contents and datafiles;select from dba_tablespace_groups;GROUP_NAME TABLESPACE_NAME11、对临时表空间进行shrink11g新增的功能--将temp表空间收缩为20Malter tablespace temp shrink space keep 20M;--自动将表空间的临时文件缩小到最小可能的大小ALTER TABLESPACE temp SHRINK TEMPFILE ’/u02/oracle/data/’;临时表空间作用Oracle临时表空间主要用来做查询和存放一些缓冲区数据;临时表空间消耗的主要原因是需要对查询的中间结果进行排序;重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长;直到耗尽硬盘空间;网上有人猜测在磁盘空间的分配上,oracle使用的是贪心算法,如果上次磁盘空间消耗达到1GB,那么临时表空间就是1GB;也就是说当前临时表空间文件的大小是历史上使用临时表空间最大的大小;临时表空间的主要作用:索引create或rebuild;Order by 或group by;Distinct 操作;Union 或intersect 或minus;Sort-merge joins;analyze.。
Oracle数据库,数据的增、删、改、查

Oracle数据库,数据的增、删、改、查oracle数据库中,数据的增、删、改、查,通过SQL语句实现SQL:结构化查询语⾔;特点:不区分⼤⼩写;字符串⽤单引号引起来;语句结束⽤分号表⽰结束;⾏注释,在语句的最前⾯加“--”块注释,分别在语句的前后加 /* 和 */SQL中常⽤的⼏类:⼀、数据定义语⾔ DDL:创建、修改、删除数据库语⾔。
create table Student(sno varchar2(3) not null,sname varchar2(8) not null,ssex varchar2(2) not null,sbirthday date,sclass varchar2(5));-- Add comments to the tablecomment on table Studentis '学⽣表';-- Add comments to the columnscomment on column Student.snois '学号(主建)';comment on column Student.snameis '学⽣姓名';comment on column Student.ssexis '性别';comment on column Student.sbirthdayis '⽣⽇';comment on column Student.sclassis '班级';⼆、数据操作语⾔ DML:添加(insert into)、修改(update set)、删除表中的数据。
(delete)1.数据的添加:insert into 表名(字段名) values(对应的数据)--增加数据insert into student(sno,sname,ssex) values('102','张三','男');--或者这样写insert into student values('102','张三','男',sysdate,'95033');2.数据的修改:update 表名 set 修改的的字段 wiere 条件--数据的修改update student set ssex='⼥' where sno='102';--如果不加where,便是修改整个表某列的属性--对某⼀列数据的加减update student set sclass=sclass+1;update 表名 set 列名=列名+1 where 条件--⽇期的加减1为⽇的加减13.数据的删除:delete 表名 where 条件;--数据的删除delete student where sno=102;--不加where,即删除整个表,但是效率低,可⽤truncate table 表名来删除(先删表,再建表)例:truncate table student;三、数据查询语⾔ DQL:从表中获取数据(查询数据)。
oracle 11g 表空间 增删改查

#如果是意外删除了数据文件,则必须带有RECOVER选项
ALTER TABLESPACE data01 OFFLINE FOR RECOVER;
#改变表空间状态 使表空间脱机
ALTER TABLESPACE data01 OFFLINE;
#使表空间联机
ALTER TABLESPACE data01 ONLINE;
#使表空间只读
ALTER TABLESPACE data01 READ ONLY;
#使表空间可读写
/*---------------------------------------------------------------------------*/
##扩展表空间##
#首先查看表空间的名字和所属文件
select tablespace_name, file_id, file_name,
#设定数据文件自动扩展
ALTER DATABASE DATAFILE 'd:\app\test.dbf'
AUTOEXTEND ON NEXT 100M
MAXSIZE 10000M;
#设定后查看表空间信息
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
#增加数据文件(表空间大小)
ALTER TABLESPACE data01
ADD DATAFILE 'd:\app\test2.dbf' SIZE 1000M;
Oracle临时表空间查看、添加临时表空间数据文件、修改默认临时表空间方法!

Oracle临时表空间查看、添加临时表空间数据⽂件、修改默认临时表空间⽅法!--查表空间使⽤率情况(含临时表空间)SELECT d.tablespace_name "Name", d.status "Status",TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)",TO_CHAR (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024,'99999999.99') USE,TO_CHAR (NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.BYTES * 100, 0),'990.00') "Used %"FROM SYS.dba_tablespaces d,(SELECT tablespace_name, SUM (BYTES) BYTESFROM dba_data_filesGROUP BY tablespace_name) a,(SELECT tablespace_name, SUM (BYTES) BYTESFROM dba_free_spaceGROUP BY tablespace_name) fWHERE d.tablespace_name = a.tablespace_name(+)AND d.tablespace_name = f.tablespace_name(+)AND NOT (d.extent_management LIKE 'LOCAL' AND d.CONTENTS LIKE 'TEMPORARY')UNION ALLSELECT d.tablespace_name "Name", d.status "Status",TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)",TO_CHAR (NVL (t.BYTES, 0) / 1024 / 1024, '99999999.99') USE,TO_CHAR (NVL (t.BYTES / a.BYTES * 100, 0), '990.00') "Used %"FROM SYS.dba_tablespaces d,(SELECT tablespace_name, SUM (BYTES) BYTESFROM dba_temp_filesGROUP BY tablespace_name) a,(SELECT tablespace_name, SUM (bytes_cached) BYTESFROM v$temp_extent_poolGROUP BY tablespace_name) tWHERE d.tablespace_name = a.tablespace_name(+)AND d.tablespace_name = t.tablespace_name(+)AND d.extent_management LIKE 'LOCAL'AND d.CONTENTS LIKE 'TEMPORARY';1. 查询表空间剩余字节⼤⼩SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 AS "FREE SPACE(M)"FROM DBA_FREE_SPACEWHERE TABLESPACE_NAME = '&tablespace_name'GROUP BY TABLESPACE_NAME;注:如果是临时表空间,请查询DBA_TEMP_FREE_SPACESELECT TABLESPACE_NAME, FREE_SPACE/1024/1024 AS "FREE SPACE(M)"FROM DBA_TEMP_FREE_SPACEWHERE TABLESPACE_NAME = '&tablespace_name';2. 查询表空间所有数据⽂件路径SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS "BYTES(M)"FROM DBA_DATA_FILESWHERE TABLESPACE_NAME = '&tablespace_name';注:如果是临时表空间,请查询DBA_TEMP_FILESSELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS "SPACE(M)"FROM DBA_TEMP_FILESWHERE TABLESPACE_NAME = '&tablespace_name';3. 为空间不⾜的表空间增加数据⽂件ALTER TABLESPACE &tablespace_name ADD DATAFILE '&datafile_name' SIZE 2G;注:如果要为临时表空间扩容,使⽤下⾯的语句ALTER TABLESPACE &tablespace_name ADD TEMPFILE '&datafile_name' SIZE 2G;4.查看临时表空间的⼤⼩和数据⽂件路径SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS "SPACE(M)"FROM DBA_TEMP_FILESWHERE TABLESPACE_NAME = 'TEMP';或者select name, bytes/1024/1024 as "⼤⼩(M)" from v$tempfile order by bytes;5.重建并修改默认临时表空间办法:--查询当前数据库默认临时表空间名select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';--创建新的临时表空间create temporary tablespace temp02 tempfile 'E:\oracle\oradata\lims\TEMP02.DBF' size 1024M autoextend on; --修改默认表空间为刚刚建⽴的临时表空间alter database default temporary tablespace temp02;--查看⽤户所⽤临时表空间的情况SELECT USERNAME,TEMPORARY_TABLESPACE FROM DBA_USERS;--删除原来的临时表空间drop tablespace temp including contents and datafiles;--查看所有表空间名确认临时表空间是否已删除select tablespace_name from dba_tablespaces;。
oracle中常用的一些语句----"增删改查

如何查找、删除表中重复的记录方法原理:1、Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在ORACLE中的哪一个数据文件、块、行上。
2、在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中那些具有最大rowid的就可以了,其余全部删除。
实现方法:SQL》 create table a (2 bm char(4), --编码3 mc varchar2(20) --名称4 )5 /表已建立。
SQL》 insert into a values(‘1111’,‘1111’);SQL》 insert into a values(‘1112’,‘1111’);SQL》 insert into a values(‘1113’,‘1111’);SQL》 insert into a values(‘1114’,‘1111’);SQL》 insert into a select * from a;插入4个记录。
SQL》 commit;完全提交。
SQL》 select rowid,bm,mc from a;ROWID BM MC------------------ ---- -------000000D5.0000.0002 1111 1111000000D5.0001.0002 1112 1111000000D5.0002.0002 1113 1111000000D5.0003.0002 1114 1111000000D5.0004.0002 1111 1111000000D5.0005.0002 1112 1111000000D5.0006.0002 1113 1111000000D5.0007.0002 1114 1111查询到8记录。
查出重复记录SQL》 select rowid,bm,mc from a where a.rowid!=(select max(rowid)from a b where a.bm=b.bm and a.mc=b.mc);ROWID BM MC------------------ ---- --------------------000000D5.0000.0002 1111 1111000000D5.0001.0002 1112 1111000000D5.0002.0002 1113 1111000000D5.0003.0002 1114 1111删除重复记录SQL》 delete from a a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);删除4个记录。
Oracle临时表空间删除和重建实现过程

Oracle临时表空间删除和重建实现过程⽬录⼀、临时表空间概念⼆、重建oracle临时表空间过程三、查询TEMP TABLESPACE利⽤率3.1 script 13.2 script 23.3 script 3⼀、临时表空间概念临时表空间⽤来管理数据库排序操作以及⽤于存储临时表、中间排序结果等临时对象,当ORACLE⾥需要⽤到SORT的时候,并且当PGA中sort_area_size⼤⼩不够时,将会把数据放⼊临时表空间⾥进⾏排序。
临时表空间存储⼤规模排序操作(⼩规模排序操作会直接在RAM⾥完成,⼤规模排序才需要磁盘排序Disk Sort)和散列操作的中间结果.它跟永久表空间不同的地⽅在于它由临时数据⽂件(temporary files)组成的,⽽不是永久数据⽂件(datafiles)。
临时表空间不会存储永久类型的对象,所以它不会也不需要备份。
另外,对临时数据⽂件的操作不产⽣redo⽇志,不过会⽣成undo⽇志。
创建临时表空间或临时表空间添加临时数据⽂件时,即使临时数据⽂件很⼤,添加过程也相当快。
这是因为ORACLE的临时数据⽂件是⼀类特殊的数据⽂件:稀疏⽂件(Sparse File),当临时表空间⽂件创建时,它只会写⼊⽂件头部和最后块信息(only writes to the header and last block of the file)。
它的空间是延后分配的.这就是你创建临时表空间或给临时表空间添加数据⽂件飞快的原因。
另外,临时表空间是NOLOGGING模式以及它不保存永久类型对象,因此即使数据库损毁,做Recovery也不需要恢复Temporary Tablespace。
⼆、重建oracle临时表空间过程STEP1: Find the existing temp tablespace details--查找现有临时表空间信息SQL> select tablespace_name,file_name from dba_temp_filesTABLESPACE_NAME FILE_NAME------------------------------ -------------------------------------------------TEMP /home/oracle/app/oracle/oradata/cdb1/orcl/orcl_temp012014-07-30_04-39-23-PM.dbfSTEP2: Create another Temporary Tablespace TEMP1--创建⼀个临时表空间CREATE TEMPORARY TABLESPACE TEMP1 TEMPFILE ‘/u01/app/oradata/DBACLASS/temp01′ SIZE 2G;STEP3: Move Default Database temp tablespace--移动默认数据库临时表空间ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP1;STEP4: If any sessions are using temp space, then kill them.--禁⽌使⽤临时表空间SELECT b.tablespace,b.segfile#,b.segblk#,b.blocks,a.sid,a.serial#,ername,a.osuser, a.statusFROM v$session a,v$sort_usage bWHERE a.saddr = b.session_addr;ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;STEP5: Drop the original temp tablespace.Drop temp tablespace--删除临时表空间DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;If you want to change the name from TEMP1 to TEMP, then follow the same process as below.如果想要将临时空间表名称从temp 1更改为temp,可以按照以下相同的过程进⾏操作STEP6: Create TEMP tablespace--创建临时表空间CREATE TEMPORARY TABLESPACE TEMP TEMPFILE /u01/app/temp/temp01′ SIZE 2000M;STEP7: Make TEMP as default tablespace--将临时设置为默认表空间ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;STEP8: Drop temporary for tablespace temp1--删除临时表空间临时1DROP TABLESPACE temp1 INCLUDING CONTENTS AND DATAFILES;三、查询TEMP TABLESPACE利⽤率3.1 script 1column used_MBytes format 999,999column free_Mbytes format 999,999column total_MBytes format 999,999column collect_time format A15selectto_char(sysdate,'DD-MON-RR:HH24:MI') collect_time,round(used_blocks*8192/1024/1024,0) used_Mbytes,round(free_blocks*8192/1024/1024,0) free_Mbytes,round(total_blocks*8192/1024/1024,0) total_MbytesfromV$sort_segmentwheretablespace_name like '%TEMP%'/eg:COLLECT_TIME USED_MBYTES FREE_MBYTES TOTAL_MBYTES--------------- ----------- ----------- ------------17-JUL-16:17:23 5 24 293.2 script 2set lines 180col FreeSpaceGB format 999,999col UsedSpaceGB format 999,999col TotalSpaceGB format 999,999col host_name format a30col tablespace_name format a30select tablespace_name,(free_blocks*8)/1024 FreeSpaceMB,(used_blocks*8)/1024 UsedSpaceMB,(total_blocks*8)/1024 TotalSpaceMB,i.instance_name,i.host_namefrom gv$sort_segment ss,gv$instance i where ss.tablespace_name in (select tablespace_name from dba_tablespaces where tablespace_name='&TEMPTBS' and contents='TEMPORARY') andi.inst_id=ss.inst_id;eg:TABLESPACE_NAME FREESPACEMB USEDSPACEMB TOTALSPACEMB INSTANCE_NAME HOST_NAME------------------------------ ----------- ----------- ------------ ---------------- ----------------------TEMP 24 5 29 orcl 3.3 script 3SELECT TABLESPACE_NAME, TABLESPACE_SIZE/1024/1024 as TABLESPACE_SIZE_MB, ALLOCATED_SPACE/1024/1024 as ALLOCATED_SPACE_MB, FREE_SPACE/1024/1024 as FREE_SPACE_MB FROM dba_temp_free_space; TABLESPACE_NAME TABLESPACE_SIZE_MB ALLOCATED_SPACE_MB FREE_SPACE_MB------------------------------ ------------------ ------------------ -------------TEMP 30 30 29到此这篇关于Oracle临时表空间删除和重建实现过程的⽂章就介绍到这了,更多相关Oracle临时表空间内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
Oracle表空间操作详解

Oracle表空间操作详解1.创建表空间:createtablespace<tablespace_name>datafile '<filepath>' size <filesize>autoextend on next <autosize>maxsize<maxsize [unlimited]>eg:createtablespace sales datafile 'c:\1.txt' size 10m autoextend on next 1m maxsize 100m2.为表空间增加数据文件:altertablespace<tablespace_name> add datafile 'filepath' size <filesize>autoextend on next <autosize>maxsizefilemaxsize[unlimited];eg:altertablespace sales datafile 'c:\2.txt' size 10m autoextend on next 1m maxsize unlimited3.调整表空间:alter database datafile 'filepath' resize <filesize>;--重置表空间的大小eg:alter database datafile 'c:\2.txt' resize 10m在实际使用中我们经常会遇到oracle某个表空间占用了大量的空间而其中的数据量却只占用了少量空间,此时我们可以用ALTER DATABASE DATAFILE '***.dbf' RESIZE nnM的命令来收缩表空间,但在收缩的过程中会遇到ora-03297错误,表示在所定义的空间之后有数据存在,不能收缩,此时的解决办法有:(1). 先估算该表空间内各个数据文件的空间使用情况:SQL>select file#,name from v$datafile;SQL>select max(block_id) from dba_extents where file_id=11;MAX(BLOCK_ID)-------------13657SQL>show parameter db_block_sizeNAME TYPE VALUE----------------------------- ------- ----------- db_block_size integer 8192SQL>select 13657*8/1024 from dual;13657*8/1024-----------106.695313这说明该文件中最大使用块位于106M与107M之间,SQL> alter database datafile '/ora_data/cninsite/insitedev02.dbf' resize 100M;alter database datafile '/ora_data/cninsite/insitedev02.dbf' resize 100M*ERROR at line 1:ORA-03297: file contains used data beyond requested RESIZE valueSQL> alter database datafile '/ora_data/cninsite/insitedev02.dbf' resize 107M; Database altered.(2).如果某些表占用了数据文件的最后一些块,则需要先将该表导出或移动到其他的表空间中,然后删除表,再进行收缩。
oracle增删改查详细图文

oracle 增删改查详细图文目录1用户模式 (2)2 查找数据(select) (3)2.1简单查询 (4)2.2 分组查询 (8)2.21 group by函数: 分类 (8)2.22 having子句 (9)2.3 连接 (9)2.3.1 表别名 (9)2.3.2 内连接 (10)2.3.3 外连接 (10)2.3.4 左外连接 (10)2.3.5 又外连接 (11)2.3.6 完全外连接 (11)2.3.7 自然连接 (12)2.3.8 自连接 (12)2.3.9交叉连接 (13)2.4 常用系统函数 (13)2.4.1 字符类函数 (13)2.4.2 数字类函数 (15)2.4.3 日期和时间类函数 (16)2.4.4 转换类函数 (16)2.4.5 聚集类函数 (17)2.5 子查询 (17)2.5.1 单行子查询 (17)2.5.2 多行子查询 (17)2.5.3 关联子查询 (18)3 插入数据(insert) (19)4更新数据(update) (20)5 删除数据(delete和truncate) (20)1用户模式1 模式和模式对象2 示例模式 scott模式:是一系列逻辑结构或对象的集合模式对象是由用户创建的逻辑结构示例模式scott查询表 select table_name from user_tables;如何在system模式下查询scott模式所拥有的数据表使用dba_tables数据表进入system模式conn system/passwordselect table_name from dba_tables where owner=’SCOTT’;部门表雇员表 emp工资登记表 salgrade工资补贴表 bonus2 查找数据(select)selcet {[distinct|all] columns *}from {tables|views|other select} 用于指定数据来源,包括表,视图,和其他select 语句[where conditions] 用于对检索的数据进行筛选,字句中不能用聚集函数如:avg(),max(),sum()[group by columns] 对检索结果分组显示与聚集函数一起使用时,group by创建组,聚集函数运算每组值[having conditions] 用于从使用group by 自居分组后的查询结果中筛选数据行,经常包括统计函数[order by columns [ASC|DESC]]对结果进行排序2.1简单查询查询单个表中所有列在system模式下查询表表名前面要加上改表模式所属名称conn system/passwdselect * from scott.emp查询多个表中所有列scott 模式eg 同时查询dept和salgrade 表select * from dept,salgrade查询特定列select后面加想要查询的列名,用‘,’隔开eg:在scott模式下检索emp表中指定列(job,ename,empno) select job,ename,empno from emp为列指定别名eg:检索emp表员工编号,姓名和年基本公司,日基本工资信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
total as "Total",
round(nvl(total - used, 0) * 100 / total, 3) "Free percent"
FROM (SELECT tablespace_name, SUM(bytes_used) / 1024 / 1024 used
也就是说当前临时表空间文件的大小是历史上使用临时表空间最大的大小。
临时表空间的主要作用:
索引create或rebuild;
Order by 或 group by;
Distinct 操作;
Union 或 intersect 或 minus;
Sort-merge joins;
drop tablespace tempts1 including contents and datafiles;
select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
su.extents,
su.blocks * to_number(rtrim(p.value)) as Space,
tablespace,
segtype,
sql_text
from v$sort_usage su, v$parameter p, v$session se, v$sql s
and sql.ADDRESS = sess.SQL_ADDRESS
order by blocks d1)创建临时表空间组:
create temporary tablespace tempts1 tempfile '/home/oracle/temp1_02.dbf' size 2M tablespace group group1;
GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
GROUP1 TEMPTS1
GROUP2 TEMPTS2
3)将表空间从一个临时表空间组移动到另外一个临时表空间组:
alter tablespace tempts1 tablespace group GROUP2 ;
select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
7、查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)
GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小
dba_temp_files视图的bytes字段记录的是临时表空间的总大小
SELECT temp_used.tablespace_name,
删除临时表空间的一个数据文件:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ drop;
删除临时表空间(彻底删除):
SQL> drop tablespace temp1 including contents and datafiles cascade constraints;
9、查看当前临时表空间使用大小与正在占用临时表空间的sql语句
select sess.SID, segtype, blocks * 8 / 1000 "MB", sql_text
from v$sort_usage sort, v$session sess, v$sql sql
where sort.SESSION_ADDR = sess.SADDR
方法三、向临时表空间中添加数据文件:
SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ size 100m;
4、创建临时表空间:
SQL> create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/temp11.dbf’ size 10M;
analyze.
alter user scott temporary tablespace GROUP2;
5)在数据库级设置临时表空间
alter database <db_name> default temporary tablespace GROUP2;
6)删除临时表空间组 (删除组成临时表空间组的所有临时表空间)
11、对临时表空间进行shrink(11g新增的功能)
--将temp表空间收缩为20M
alter tablespace temp shrink space keep 20M;
--自动将表空间的临时文件缩小到最小可能的大小
ALTER TABLESPACE temp SHRINK TEMPFILE ’/u02/oracle/data/lmtemp02.dbf’;
3、扩展临时表空间:
方法一、增大临时文件大小:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize 100m;
方法二、将临时数据文件设为自动扩展:
SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;
select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;--sys用户查看
2、缩小临时表空间大小
alter database tempfile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TELEMT\TEMP01.DBF' resize 100M;
oracle 临时表空间的增删改查
1、查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)
select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
create temporary tablespace tempts2 tempfile '/home/oracle/temp2_02.dbf' size 2M tablespace group group2;
2)查询临时表空间组:dba_tablespace_groups视图
select * from dba_tablespace_groups;
FROM GV_$TEMP_SPACE_HEADER
GROUP BY tablespace_name) temp_used,
(SELECT tablespace_name, SUM(bytes) / 1024 / 1024 total
FROM dba_temp_files
------------------------------ ------------------------------
GROUP2 TEMPTS1
GROUP2 TEMPTS2
4)把临时表空间组指定给用户
临时表空间作用
Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。
重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。直到耗尽硬盘空间。
网上有人猜测在磁盘空间的分配上,oracle使用的是贪心算法,如果上次磁盘空间消耗达到1GB,那么临时表空间就是1GB。
where = 'db_block_size'
and su.session_addr = se.saddr
and s.hash_value = su.sqlhash
and s.address = su.sqladdr
order by ername, se.sid
GROUP BY tablespace_name) temp_total
WHERE temp_used.tablespace_name = temp_total.tablespace_name
8、查找消耗资源比较的sql语句
Select ername,
se.sid,
转自博客------[/japper/archive/2012/06/28/381721.html]
------------------------------------------------------------------------------------------------------
5、更改系统的默认临时表空间:
--查询默认临时表空间
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';