大佬教程收集整理的这篇文章主要介绍了oracle数据库相关的语句,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
SELEct a.tablespace_name,@R_77_10586@l,free,@R_77_10586@l-free used from(SELEct tablespace_name,sum(bytes)/1024/1024 @R_77_10586@l from dba_data_files group by tablespace_name)a,(SELEct tablespace_name,sum(bytes)/1024/1024 free from dba_free_space group by tablespace_name)b where a.tablespace_name = b.tablespace_name and a.tablespace_name='表空间名'
SELEct * from (SELEct SEGMENT_NAME,bytes,owner from dba_segments where owner = '用户名' order by bytes desc ) where rownum <= 30
alter tablespace 表空间名add DATAFILE 'E:\OracLE\表空间名_2.oRA' size 1000@H_342_8@m autoextend on next 100@H_342_8@m maxsize 32000@H_342_8@m;
SELEct owner,tablespace_name,sum(bytes)/1024/1024 from dba_segments group by owner,tablespace_name;
一般情况下要断开所有与该数据库连接的相关应用。然后:
SELEct username,sID,serial#,STATUS from v$session where username='用户名';
alter system kill session 'sID,serial#';
drop user 用户名cascade;
一般做到这已经可以删除用户及其下的所有对象了,如果还是不行,这时候就要放大招了:
SELEct 'alter system kill session'||' '''||sID||','||serial#||''';',username,STATUS from v$session where username='用户名' and status like 'IN%';
再批量执行;
CREATE BIGfile tableSPACE "表空间名" DATAFILE 'D:\APP\adminISTRATOR\ORADATA\ORCL\ORADB.DBF' SIZE 30G autoEXTEND ON NEXT 100@H_342_8@m MAXSIZE UNliMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT auto
一般来说,我迁库的思路是这样的,先将每个用户的表结构导出来(包括空表),再导出用户表数据(备份用),再将需要的表数据导入新库。
我们用exp导出时发现少空表,这是因为Oracle11g新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。
若此参数为true,当新建一张表table1且没有向其中插入数据,则此表不会立即分配extent,也就是说不会立即占据数据空间,只有当insert数据后 才分配数据空间。这样可以节省少量数据空间。我们可以这么解决
SELEct table_name from user_tables where NUM_ROWS=0 or NUM_ROWS is null;
SELEct 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or NUM_ROWS is null;
exp 用户名/密码@实例名 file=d:\****.dmp owner=用户名 buffer=65536 indexes =y FeedBACk=100000 rows=n compress=n log=d:\***.log
如果只想导出部分表的相关数据则可以:
exp 用户名/密码@实例名 file=d:\****.dmp tables =(表1,表2...)buffer=65536 log=d:\***.log
imp 用户名/密码@实例名 file=d:\***.dmp log=d:\**.log fromuser=用户名(原)touser=用户名(新) ignore=y buffer=65536
在导入之前需要做下面几件事,暂时Disabled触发器,暂时关闭相关表的关联关系。
触发器就在trigger下面变为disable;
SELEct 'alter table '|| table_name ||' disable consTraint '|| constraint_name||';' from USER_CONSTraints a where a.constraint_type='R'
导入的表可能很多,这是后可以转置以后粘贴就好:
SELEct wm_concat(table_Name)from user_tables order by table_name;
imp 用户名/密码@实例名 fromuser=原 touser=新 file=e:\***.dmp ignore=y tableS=(table1,table2, ……);
导入以后开启相关的约束;
触发器开启就在trigger下面变为compiler;
SELEct 'alter table '|| table_name ||' enable consTraint '|| constraint_name||';' from USER_CONSTraints a where a.constraint_type='R'
以上是大佬教程为你收集整理的oracle数据库相关的语句全部内容,希望文章能够帮你解决oracle数据库相关的语句所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。