2、ORACLE快照就不是解决这个问题的了,他主要是对回滚段的一些处理记录,当你删除增加数据,即使提交了,也可以通过快照找到近期的数据,但是如果回滚段较小,被冲掉了,那就没办法了,就像做一个大型统计需要很长时间,中途若对统计的表进行增删改查 *** 作即使COMMIT也不会在统计中运算,因为ORACLE会自己创建在执行SQL前给与一个时间戳TIMESTAMP和对应SCN号码,这个是绝对唯一的,如果出现脏块,就会到回滚段去找数据,若回滚段被冲掉,这个统计会报错。
3、在这样大数据量的转存过程中,建议使用分批转存(不要一次转存过来),并自己去编写日志,转存过程中,将目标表使橡敬用Hint中的/*+append*/进去并后带NOLOGGING,如:INSERT /*+append*/ INTO <table_name>NOLOGGING SELECT .. FROM ...这样会以最小的日志编写方式进行高水位线插入,另外如果是同步数据可以使用到MERGE,自定义分表快速一次性插入使用INSERT ALL。
4、如果是一个表内部就有这么多数据,目标表需要进行分区,而且根据实际情况可以的话建议是二级分区,分区一定要找好下手点,不能乱分,不然往往分后的性能不如不分的情况,至于如何分区,这些都要依据实际情况而定,没有完全的定论,不过只要分区,最基本的就是你的分区字段是99%的情况都要用以查询条件,并可以迅速定位分区的字段,一个分区内部的数据不要太梁旁慎多,各个分区的数据较为均匀分布。
5、分区基础上创建分区索引,有全局索启隐引和本地索引,据实际情况可以参考使用,保证通过分区索引快速定位数据范围和查找数据(针对提取少量数据,而不是全盘扫描)。
6、至于如何将高版本的数据同步到低版本,尤其跨越两个大版本,本来ORACLE 10后有一个数据泵,但是ORACLE 9I用不了,但是用SQL无益是最慢的,DMP就算是小版本的区别也可能会有点问题,SQL*LOADER是人工去完成导入导出工作,外部表是文件结构也需要先导出去而且对于大数据量的性能不容乐观,就我个人来说在可能的情况下用DB-LINK链接过去,可进行双数据库 *** 作,不过DB-LINK转存过程注意分布式事务的一致性问题。
-建立表空间(oracle中的tablespace(表空间)就相当于sqlserver的database)CREATE TABLESPACE data01
DATAFILE 'D:\oracle\ora92\oradata\db\DATA01.dbf' SIZE 200M
UNIFORM SIZE 128k
#指定区尺寸为128k,如不指定,区尺寸默认为64k
--建立临时表空间
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE 'D:\TEMP_DATA.dbf' SIZE 100M
--建立用户
CREATE USER peter IDENTIFIED BY peter
DEFAULT TABLESPACE data01
TEMPORARY TABLESPACE temp_data
--给用户授权
grant connect,resource,dba to peter
-- 从 '建立表空间' 到 '建立临时表空间' 到 ’建立用户‘ 到 ’给用户授权’ ,
-- 到此就可以用建立的用户进行登陆,然后建立table了
-- 并且以某个用户的身份进行登陆,进行备份与还原了
一、建立表空间
CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf'
SIZE 500M
UNIFORM SIZE 128k#指定区尺寸为128k,如不指定,区尺寸默认为64k
(注意,必戚改须先写datafile才能写size和uniform size,因为只有先指定了文件才能够指定文件的大小,这是一个因果关系)
二、建立UNDO表空间
CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M
#注意:在OPEN状态下某些时刻只能用一个UNDO表空搜梁间,如果要用新建的表空间,必须切换到该表空间:
ALTER SYSTEM SET undo_tablespace=UNDOTBS02
三、建立临时表高漏判空间
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M
四、改变表空间状态
1.使表空间脱机
ALTER TABLESPACE game OFFLINE
如果是意外删除了数据文件,则必须带有RECOVER选项
ALTER TABLESPACE game OFFLINE FOR RECOVER
2.使表空间联机
ALTER TABLESPACE game ONLINE
3.使数据文件脱机
ALTER DATABASE DATAFILE 3 OFFLINE
4.使数据文件联机
ALTER DATABASE DATAFILE 3 ONLINE
5.使表空间只读
ALTER TABLESPACE game READ ONLY
6.使表空间可读写
ALTER TABLESPACE game READ WRITE
五、删除表空间(删除临时表空间也是同样的写法)
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES
drop tablespace temp_data including contents and datafiles(删除临时表空间)
六、扩展表空间
首先查看表空间的名字和所属文件
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name
1.增加数据文件
ALTER TABLESPACE game
ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M
2.手动增加数据文件尺寸
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'
RESIZE 4000M
3.设定数据文件自动扩展
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf
AUTOEXTEND ON NEXT 100M
MAXSIZE 10000M
1024/1024 AS SPACE(M)FROM DBA_TEMP_FILES
WHERE TABLESPACE_NAME = '&.”错误信息:如果要为临时表空间扩容, FILE_ID, FILE_NAME:当通过ORACLE中的create table .&tablespace_name'
GROUP BY TABLESPACE_NAME
注,这时SQL*Plus很可能就会提示“ORA-01653SIZE 2G
注
注:如果是临散改时表空间:如果是临时表空间,请查询DBA_TEMP_FREE_SPACE
SELECT TABLESPACE_NAME, FREE_SPACE/1024/: 1024/1024 AS FREE SPACE(M)
FROM DBA_FREE_SPACE
WHERE TABLESPACE_NAME = '&tablespace_name', SUM(BYTES)/&tablespace_name'..1024 AS BYTES(M)
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'datafile_name'.. as select 语句创建一张新表时,需要为表空间增加数据文件。
分析:
1
2. 如果不知道表空间数据文件目录规划,可以先查询出表空间所有数据文件
SELECT TABLESPACE_NAME. 查询表空间剩余字节大小
SELECT TABLESPACE_NAME. 为空间不足冲嫌判的表空间增加者枯数据文件
ALTER TABLESPACE &tablespace_name ADD DATAFILE '&。这个错误信息暗示表空间大小不够,新表的数据量为比较大,如10亿1024 AS FREE SPACE(M)
FROM DBA_TEMP_FREE_SPACE
WHERE TABLESPACE_NAME = '
3tablespace_name', BYTES/1024/, FILE_NAME, BYTES/,请查询DBA_TEMP_FILES
SELECT TABLESPACE_NAME, FILE_ID背景
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)