扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
create tablespace HXIPP (创建的表空间的名字)
成都创新互联专注于阜南企业网站建设,响应式网站建设,购物商城网站建设。阜南网站建设公司,为阜南等地区提供建站服务。全流程定制制作,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
logging (记录日志)
datafile 'E:\DBA\XXXX.dbf'(表空间在哪个物理数据文件上,也就是包含这个物理文件)
size 32m (初始表空间大小)
autoextend on (自动扩展)
next 32m maxsize 4048m (下一次扩展扩展大小为32M,总大小变为64M,最大扩展到4048M,)
extent management local; (表空间的区管理利用的是本地化的管理方式,也就是位图的管理方式(个人理解),相当于自动。区别于数据字典(不是内存的数据字典,是数据文件的数据字典)。)
MSSQL不知道
oracle在plsql里执行如下代码:
DECLARE
v_table tabs.table_name%TYPE;
v_sql VARCHAR2(888);
v_q NUMBER;
CURSOR c1 IS
SELECT table_name tn FROM tabs;
TYPE c IS REF CURSOR;
c2 c;
BEGIN
DBMS_OUTPUT.PUT_LINE('以下为空数据表的表名:');
FOR r1 IN c1 LOOP
v_table :=r1.tn;
v_sql :='SELECT COUNT(*) q FROM '||v_table;
OPEN c2 FOR v_sql;
LOOP
FETCH c2 INTO v_q;
EXIT WHEN c2%NOTFOUND;
IF v_q=0 THEN
DBMS_OUTPUT.PUT_LINE(v_table);
END IF;
END LOOP;
CLOSE c2;
END LOOP;
EXCEPTION
WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error occurred');
END;
然后点output,显示的就是空表
这个叫做复制表
pl-sql语句
create table 新表名 as select * from 被复制的表名 where 1=2 ;
上面的语句就是创建一个新标按你查出来的表的格式创建并复制内容
只要where 后面的条件返回是false 查出来的记录就为空,
所以这样就达到了复制表结构而不复制内容
先分析表
select 'analyze table '||table_name||' compute statistics;' from user_tables;
把查询结果依次执行
把所有表分析一遍
然后user_tables中就会刷新表的信息
select * from user_tables where num_rows=0;
查出行数为0的表信息.
之所以不能导出空表,是因为Oracle默认不会为空表分配segment,应对方法有三个
1、把deferred_segment_creation这个参数设置为false,这样新创建任何表都会自动分配segment,这样用逻辑导出就可以导出空表了,但是注意,在更改这个设置之前的空表还是不会分配segment的
2、可以在创建表的时候就手动分配segment
sqlcreate table TEST (XXX xxx,YYY yyy) segment creation immediate;
3、对于已经存在的空表,可以
sqlalter table TEST allocate extent;
希望能帮到题主!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流