oracle空表怎么处理 oracle查询空表

oracle11g导出空表怎样设置oracle空表怎么处理你好:如何在oracle 11g 中导出空表
由于oracle 11goracle空表怎么处理的 延迟段创建的新特性oracle空表怎么处理,导致在没有数据插入时 , oracle是不会分配数据段的 , 进而导致exp 是不能导出11g数据库的空表的 。
当然采用expdp就不存在这个问题oracle空表怎么处理了 。
expdp hr/hr schemas=hr dumpfile=expdp.dmp directory=dbtest
conn hr/hr
select TABLE_NAME,NUM_ROWS from user_tables;
TABLE_NAME NUM_ROWS
------------------------------ ----------
LOCATIONS 23
EMP_1 0
PART_TIME_EMPLOYEES 0
TEST3 5
TEST1 5
TEST 5
PC_WELL_TEST 2
PC_ALARM_SORT_TEST 1
MVIEW_PC_WELL_TEST 2
MV_CAPABILITIES_TABLE 14
T 0
TEST2
SYS_EXPORT_SCHEMA_01
SYS_EXPORT_SCHEMA_02
HOURLY_EMPLOYEES 0
COUNTRIES 25
ADMIN_EXT_EMPLOYEES
ADMIN_WORK_AREA
EMPLOYEES 107
DEPARTMENTS 27
DIGITS 2
REGIONS 4
JOB_HISTORY 10
JOBS 19
24 rows selected.
为什么这里的num_rows为空呢?
那是因为表刚建立,数据字典中还没有这个表相关的统计信息呢 。
SQL select 'alter table '||table_name||' allocate extent;' from user_tables where
num_rows=0
'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
-----------------------------------------------------------
alter table PART_TIME_EMPLOYEES allocate extent;
alter table EMP_1 allocate extent;
alter table T allocate extent;
alter table HOURLY_EMPLOYEES allocate extent;
所以对于网上一些在oracle11g上先使用手工分配extent 再使用exp来导数据库,在实际上效果不怎么地,反而是多次一举直接使用expdp来导oracle 11g数据库中空表来的方便多了 。
当然对那些要从11g导低版本,还是可以的采用这个办法,但是要注意,要么对所有相关的表进行分析系 , 然后使用上述那个批量脚本 。或者不分析表 , 直接手工用ue编辑分配extent的命令 。
SQL select TABLE_NAME,NUM_ROWS from user_tables where NUM_ROWS=0;
TABLE_NAME NUM_ROWS
------------------------------ ----------
PART_TIME_EMPLOYEES 0
EMP_1 0
T 0
HOURLY_EMPLOYEES 0
补充信息:
USER_TABLES describes the relational tables owned by the current user. Its columns (except
for OWNER) are the same as those in ALL_TABLES. To gather statistics for this view, use the
DBMS_STATS package.
收集表的统计信息:
analyze table xxx compute statistics;
or
exec dbma_stats.gather_table_stats('USER', 'TABLE');
Oracle表中的空格怎么处理一般的话使用nvl函数处理就可以 。
格式:NVL( string1, replace_with)
功能:
如果string1为NULL,则NVL函数返回replace_with的值,否则返回原来的值 。
oracle11g导出数据库时怎么设置把空表也导出?1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出 。
2、设置deferred_segment_creation参数为FALSE后,无论是空表还是非空表 , 都分配segment 。
在sqlplus中,执行如下命令:
SQLaltersystemsetdeferred_segment_creation=false;
查看:
SQLshowparameterdeferred_segment_creation;
该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用 。
3、可以使用手工为空表分配Extent的方式,来解决导出之前建立的空表的问题 。说明如下:
3.1使用ALLOCATEEXTENT的说明
使用ALLOCATEEXTENT可以为数据库对象分配Extent 。其语法如下:
-----------
ALLOCATEEXTENT{SIZEinteger[K|M]|DATAFILE'filename'|INSTANCEinteger}
-----------
可以针对数据表、索引、物化视图等手工分配Extent 。
ALLOCATEEXTENT使用样例:
ALLOCATEEXTENT
ALLOCATEEXTENT(SIZEinteger[K|M])
ALLOCATEEXTENT(DATAFILE'filename')
ALLOCATEEXTENT(INSTANCEinteger)
ALLOCATEEXTENT(SIZEinteger[K|M] DATAFILE'filename')
ALLOCATEEXTENT(SIZEinteger[K|M] INSTANCEinteger)
针对数据表操作的完整语法如下:
-----------
ALTERTABLE[schema.]table_nameALLOCATEEXTENT[({SIZEinteger[K|M]|DATAFILE'filename'|INSTANCEinteger})]
-----------
故 , 需要构建如下样子简单的SQL命令:
-----------
altertableaTabelNameallocateextent
-----------
3.2构建对空表分配空间的SQL命令,
查询当前用户下的所有空表(一个用户最好对应一个默认表空间) 。命令如下:
-----------
【oracle空表怎么处理 oracle查询空表】SQLselecttable_namefromuser_tableswhereNUM_ROWS=0;
-----------
根据上述查询 , 可以构建针对空表分配空间的命令语句,如下:
-----------
SQLSelect'altertable'||table_name||'allocateextent;'fromuser_tableswherenum_rows=0
-----------
批量输出上述生成的SQL语句 , 建立C:\createsql.sql , 其内容如下:
-----------
setheadingoff;
setechooff;
setfeedbackoff;
settermouton;
spoolC:\allocate.sql;
Select'altertable'||table_name||'allocateextent;'fromuser_tableswherenum_rows=0;
spooloff;
-----------
执行C:\createsql.sql,命令如下:
-----------
SQL@C:\createsql.sql;
-----------
执行完毕后 , 得到C:\allocate.sql文件 。
打开该文件会看到,已经得到对所有空表分配空间的命令SQL语句 。
3.4执行SQL命令,对空表分配空间:
执行C:\allocate.sql,命令如下:
-----------
SQL@C:\allocate.sql;
-----------
执行完毕,表已更改 。
3.4此时执行exp命令 , 即可把包括空表在内的所有表,正常导出 。
另外:Oracle11g中,对密码是大小写敏感的,即密码中的字母是区分大小写的 。
在Oracle10g中及以前,密码中的字母大小写无所谓 。
如何在oracle11g中导出空表之所以不能导出空表oracle空表怎么处理,是因为Oracle默认不会为空表分配segmentoracle空表怎么处理,应对方法有三个
1、把deferred_segment_creation这个参数设置为false,这样新创建任何表都会自动分配segment,这样用逻辑导出就可以导出空表了,但是注意,在更改这个设置之前oracle空表怎么处理的空表还是不会分配segment的
2、可以在创建表的时候就手动分配segment
sqlcreate table TEST (XXX xxx , YYY yyy) segment creation immediateoracle空表怎么处理;
3、对于已经存在的空表,可以
sqlalter table TEST allocate extent;
希望能帮到题主oracle空表怎么处理!
ORACLE删除带有空格的表在用powerdesigner生成的SQL语句建表时 不知怎么搞的在表名中加了个空格 没有在意直接在PL/SQL中运行了 发现的时候无论用语句还是直接右键删除都不好用 用drop命令删除会提示 ORA SQL命令未正确结束 如果遇到这个问题可在表名上用 引起来 再删就OK了 但是我这个还是不行 加上引号后提示 ORA : 递归 SQL 级别 出现错误 ORA : 实际返回的行数超出请求的行数 解决这个的办法是用sys账户登录 然后执行delete from dual 可以先执行select * from dual 里边会有两个Y 然后执行delete语句后 会自动保留一个Y 删除后再执行drop语句 表就可以删除了 lishixinzhi/Article/program/Oracle/201311/17415
oracle清空表内的数据用truncate、delete都可以 , 比如要清空一个名为abc的表,就这样写sql:
truncate table abc;或者:
delete from abc;
oracle 查版本号,oracle怎样查版本,具体步骤如下:
1、首先进入sqlplus,cmd---plsql,登陆我们的用户,如图,建议用sysdba权限的账户登陆 。
2、方法一:v$version
SQL select * from v$version;
3、方法二:product_component_version
SQL select * from product_component_version;
oracle空表怎么处理的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于oracle查询空表、oracle空表怎么处理的信息别忘了在本站进行查找喔 。

    推荐阅读