扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Oracle 10g表空间自动扩容修改方法:\x0d\x0a方法一:管理界面em\x0d\x0a命令: \x0d\x0aALTER TABLESPACE "TBS_NAME" ADD DATAFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ex_data' SIZE 10240M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED ; \x0d\x0a\x0d\x0a注:该命令修改原来的表空间。\x0d\x0a数据文件名:ex_data \x0d\x0aOracle目录:C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL \x0d\x0a表空间名:TBS_NAME \x0d\x0a文件大小 :10240M(不要重用现有文件) \x0d\x0a数据文件满后自动扩展 (AUTOEXTEND) :增量50M \x0d\x0a最大文件大小: 无限制 \x0d\x0a管理界面em: 用em扩容,找到相应的表空间,然后“添加数据文件” ,填写以上内容。 \x0d\x0a方法二:\x0d\x0aALTER DATABASE DATAFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ex_data' AUTOEXTEND ON NEXT 50M \x0d\x0a\x0d\x0a注:该方法是不修改原来表空间的前提下进行的。
目前成都创新互联公司已为成百上千家的企业提供了网站建设、域名、虚拟主机、网站托管、服务器租用、企业网站设计、平阳网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
在oracle中,用户的默认永久性表空间为system,默认临时表空间为temp。如果所有的用户都使用默认的临时表空间,无疑会增加system与temp表空间的竞争性。
oracle允许使用自定义的表空间作为默认的永久性表空间,使用自定义临时表空间作为默认临时表空间。
设置默认的表空间的语法如下。
alter database default [temporary] tablespace tablespace_name
如果使用temporary关键字,则表示设置默认临时表空间;如果不适用该关键字,则表示设置默认永久性表空间。
查询默认的表空间
select property_name,property_value from database_properties where property_name in('DEFAULT_PERMANENT_TABLESPACE','DEFAULT_TEMP_TABLESPACE'); PROPERTY_NAME PROPERTY_VALUE -------------------- -------------------- DEFAULT_TEMP_TABLESP TEMP DEFAULT_PERMANENT_TA USERS
如上面的查询结果所示,系统默认的临时表空间为temp,默认的新用户的表空间为users。
在Oracle数据库管理系统中 创建库表(table)时要分配一个表空间(tablespace) 如果未指定表空间 则使用系统用户确省的表空间 在Oracle实际应用中 我们可能会遇到这样的问题 处于性能或者其他方面的考虑 需要改变某个表或者是某个用户的所有表的表空间 通常的做法就是首先将表删除 然后重新建表 在新建表时将表空间指定到我们需要改变的表空间 如果该用户已经保存了大量数据 这种办法就就显得不是很方便 因为有大量数据需要提前备份出来 下面介绍一种利用数据库的导出/导入功能来实现重新组织数据库表空间的方法 下面是一个简单的例子 假定要将用户oa下的全部表从表空间A转换到表空间B 具体步骤(在Oracle i for linux环境)如下 导出db_zgxt下的所有表(Dos控制台下) 导出db_zgxt下的所有表(Dos控制台下) 导出db_zgxt下的所有表(Dos控制台下) EXP oa/password@pararmount_server FILE=d:\ _ _oa dmp LOG=d:\ _ _oa LOG 删除oa下的所有表(在SQL/PLUS中) 可以采用批处理的方式删除掉db_zgxt下的所有表 生成批处理的语句如下 其中set head off将表头信息去掉SET HEAD OFFSPOOL c:\drop_tables sqlselect drop table ||table_name|| ; from user_tables;spool off;@c:\drop_tables sql;sql @drop_tables sql 采用导入参数 INDEXFILE导入oa用户下的所有表(Dos控制台下) 把建表和索引的语句导出到文件 其中建表语句是加注释的 并没有实际导入IMP oa/password@paramount_server FULL=Y FILE=d:\ _ _oa dmp INDEXFILE=d:\altertablespace_table_index SQL LOG=d:\altertablespace LOG其中 指定参数INDEXFILE后 系统就将创建表和索引的语句写到一个文件 这里是altertablespace_table_index SQL 中 该文件中包含了所有创建索引(CREATE INDEX)语句和创建表(CREATETABLE)语句 但是这里所有创建表的语句均加了注释标志 在任何文本编辑器中打开并编辑该文件 去掉所有创建表语句的注释标志 将所有的表空间名称由A替换为B 同时对所有的创建索引语句加上注释标志 这些工作作完以后 在SQL/PLUS中运行该脚本文件 这些表就被创建 其表空间由A变为B 采用导入参数INDEXES=N 和IGNORE=Y将db_zgxt用户的表数据导入库中(Dos控制台下) 采用导入参数INDEXES=N 和IGNORE=Y将oa用户的表数据导入库中(Dos控制台下) IMP oa/password@paramount_server FULL=Y INDEXES=N FILE=d:\ _ _oa dmp IGNORE=Y LOG=d:\altertablespace LOG其中 参数INDEXES=N是指将数据导入数据库中时不加索引 IGNORE=Y是指在导入数据过程中 忽略表已经存在(table already exists)的错误 这样Oralce就将数据和一些约束条件导入到第 步创建的表中 创建索引 在文本编辑器中重新打开在第 步中创建的altertablespace_table_index SQL 脚本文件 这次 将所有创建表(CREATE TABLE)的语句加上注释标志 然后将所有的创建索引(CREATE INDEX)语句去掉注释标志 在SQL/PLUS中再次运行该脚本文件 至此 我们就成功完成了将oa用户下的全部表从表空间A转换到表空间B的工作 当然你可以只导入一部分表 lishixinzhi/Article/program/Oracle/201311/17398
1.设置默认表空间:
在Oracle数据库中创建用户(使用CREATE USER语句)时,如果不指定表空间,则默认的临时表空间时TEMP,默认的永久表空间时SYSTEM,这样旧导致应用系统与Oracle系统竞争使用SYSTEM表空间,会极大的影响Oracle系统的执行效率。为此,Oracle建议将非SYSTEM表空间设置为应用系统的默认永久表空间,并且将非TEMP临时表空间设置为应用系统的临时表空间。这样有利于数据库管理员根据应用系统的运行情况适时调整默认表空间和临时表空间。
更改默认临时表空间需要使用ALTER DATABASE DEFAULT TEMPRORY TABLESPACE语句,更改默认永久表空间需要使用ALTER DATABASE DEFAULT TABLESPACE语句。
2.例如:将临时表空间temp_1设置为默认的临时表空间。
3.例如:将表空间tbs_example设置为默认的永久表空间。
4.更改表空间的状态:
表空间有只读和可读写两种状态,若设置某个表空间为只读状态,则用户就不能够对该表空间的数据进行DML操作(INSERT、UPDATE和DELETE),但对某些对象的删除操作还是可以进行的,比如,索引和目录就可以被删除掉;若设置某个表空间为可读写状态,则用户旧可以对表空间的数据进行任何正常的操作,这也是表空间的默认状态。
设置表空间为只读状态,可以保证表空间数据的完整性。通常在进行数据库的备份、恢复及历史数据的完整性保护时,可将指定的表空间设置成只读状态。但设置表空间为只读并不是可以随意进行的,必须满足三个条件:
1、该表必须为ONLINE状态。
2、该表空间不能包含任何回滚段。
3、改表空间不能在归档模式下。
更改表空间的读写状态需要使用ALTER TABLESPACE...READ|ONLY READ WRITE语句
5.例如:修改tbs_test_3 表空间为只读状态。
6.例如:修改tbs_test_3 表空间为可读写状态。
可以通过alter方法,将一个表移动到另外一个表空间中:
sql: alter table spaceOne.tablename move tablespace spaceTwo;
解释:以上语句就是把tablename表从spaceOne移动到spaceTwo中。
备注一:
当前的用户必须对spaceTwo、spaceOne都有操作权限才可以。
备注二:
其实如果对两个表空间都有权限的话,可以通过
create spaceTwo.tablename as select * from spaceOne.tablename;
之后再删除spaceOne中tablename表的间接方式也能实现。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流