实习第一天,啪怕 长见识了。
首先新建表空间
CREATE TABLESPACE "NETGEO_DATA"
LOGGING
DATAFILE 'E:\app\caizongyu\NETGEO_DATA.ora' SIZE 20000M
AUTOEXTEND
ON NEXT 1024000K MAXSIZE 35000M EXTENT MANAGEMENT LOCAL SEGMENT
SPACE MANAGEMENT AUTO ;
创建空间名为NETGEO_DATA的表空间,动不动就30个G,企业就是..........
导入数据到了一个多小时.......
发现表空间其实不是什么稀奇的东西,因为其实我们一直都在使用它,我们却并没有发觉
表空间:
表空间是数据库的逻辑上划分,且一个表空间只能属于一个数据库,每个数据库也必须有一个以上的表空间(system),所以我们一直都在用...;且在数据库中,我们存放的数据大多是以表的形式来存储的,所以表空间的主要存储的也是表;
我们想要建立表,那么就要建立用户,建立用户,我们就要为建立的用户指定表空间,并且如果使用用户来管理表空间,我们还需要给用户一定的权限;
百度了下典型的应用,表空间的典型应用:
- 控制用户所占用的表空间配额;
- 控制数据库所占用的磁盘空间
- 灵活放置表空间(可以不同类型的数据放在不同的表空间等方法,就是定义规则)
- 大表的排序操作
- 日志与数据库的数据分开,提高数据库的安全,也便于维护;
这里说说碰到的问题:
错误:
Error at Command Line:1 Column:1
Error report:
SQL Error: ORA-03206: maximum file size of (4480000) blocks in AUTOEXTEND clause is out of range
03206. 00000 - "maximum file size of (%s) blocks in AUTOEXTEND clause is out of range"
*Cause: The maximum file size for an autoextendable file has
exceeded the maximum number of blocks allowed.
*Action: Reduce the size and retry.
这是由于
设置的内存过大了,我们可以看oracle中的块大小
show parameter db_block_size;
块大小为8kb, 结果
db_block_size integer 8192;
4480000*8=35840000kb=35000mb 34G,那么能创建的最大的数据文件大小是:2^22*8K=32G,而2^22是由于Oracle的Rowid中使用22位来代表Block号,这22位最多只能代表2^22-1(4194303)个数据块。
又及:为了扩展数据文件的大小,Oracle10g中引入了大文件表空间,在大文件表空间下,Oracle使用32位来代表Block号,也就是说,大文件表空间下每个文件最多可以容纳4G个Block。
所以修改大小就可以了 把35000改成32000 ,成功;