解决方案 »

  1.   

    如果有数据库恢复方面需要帮助,可以加我qq号
    ---------------------------------------------------------------
    QQ号:107644445
    邮箱:[email protected]
    BLOG:http://www.xifenfei.com
    提供专业ORACLE技术支持(数据恢复,安装实施,升级迁移,备份容灾,故障诊断,系统优化等)
      

  2.   

    试一下
    shutdown immediate;然后startup;
      

  3.   


    搞好了,谢谢!http://blog.csdn.net/zhrzhl/article/details/13627705
      

  4.   


    搞好了,谢谢!http://blog.csdn.net/zhrzhl/article/details/13627705呵呵,开始研究oracle了啊
      

  5.   


    搞好了,谢谢!http://blog.csdn.net/zhrzhl/article/details/13627705呵呵,开始研究oracle了啊oracle这块,plsql这些平时一直在用,
    之前了解过oracle的体系结构,从逻辑上和物理上的一些文件的划分归属之类的
    最近在学习备份机制,归档模式,非归档模式,逻辑备份,物理备份,一致性备份,非一致性备份,冷备,热备,搅合来搅合去的,有点晕
    其实oracle里有不少很“专业”的概念(我更认为用“操蛋”描述合适),
    备份就备份,还RMAN,以前经常听人家说RMAN,以为是什么高级功能,
    吓得不敢插话(因为经常听一些很高级的英文名称概念)
    不就是backup命令么
    不过说实话,绝大部分开发人员,对oracle的认识并不深
    而比较懂oracle的那部分人,又天天说专业词汇,动不动都是英语,结果越搞越神秘
    之前一个培训老师,把“行迁移”(对应sqlserver的页拆分,pagesplit,),
    行链接(对应sqlserver的行溢出)讲的神乎其神,给大家弄的一愣一愣的
    仿佛是只要有“行迁移”数据库就是崩溃死的,
    不设置页面的PCTFREE (不就是sqlserver中的fillfactor么)系统就立马会挂掉一样
    拼命在将概念……其实我觉得大多数人是被这种概念化的东西给忽悠了,他们给人讲课,就是死扣概念,拼命忽悠
      

  6.   


    搞好了,谢谢!http://blog.csdn.net/zhrzhl/article/details/13627705呵呵,开始研究oracle了啊不过这里有一个一系列的连载翻译,感觉非常客观
    http://www.dbabeta.com/2010/oracle-sql-server-comparison-i.html
    深度对比Oracle与SQL Server 
    你喜欢的话可以参考一下
      

  7.   


    搞好了,谢谢!http://blog.csdn.net/zhrzhl/article/details/13627705呵呵,开始研究oracle了啊oracle这块,plsql这些平时一直在用,
    之前了解过oracle的体系结构,从逻辑上和物理上的一些文件的划分归属之类的
    最近在学习备份机制,归档模式,非归档模式,逻辑备份,物理备份,一致性备份,非一致性备份,冷备,热备,搅合来搅合去的,有点晕
    其实oracle里有不少很“专业”的概念(我更认为用“操蛋”描述合适),
    备份就备份,还RMAN,以前经常听人家说RMAN,以为是什么高级功能,
    吓得不敢插话(因为经常听一些很高级的英文名称概念)
    不就是backup命令么
    不过说实话,绝大部分开发人员,对oracle的认识并不深
    而比较懂oracle的那部分人,又天天说专业词汇,动不动都是英语,结果越搞越神秘
    之前一个培训老师,把“行迁移”(对应sqlserver的页拆分,pagesplit,),
    行链接(对应sqlserver的行溢出)讲的神乎其神,给大家弄的一愣一愣的
    仿佛是只要有“行迁移”数据库就是崩溃死的,
    不设置页面的PCTFREE (不就是sqlserver中的fillfactor么)系统就立马会挂掉一样
    拼命在将概念……其实我觉得大多数人是被这种概念化的东西给忽悠了,他们给人讲课,就是死扣概念,拼命忽悠确实,其实很多概念都是相似的。比如,你说的行迁移-》页拆分。但是行链接-》行溢出,这个不太一样,是两个概念,行链接,你看的那个sql srver 2008技术内幕中有,是指对于堆表,在原来的记录处保留了一个指针,实际上记录存储在另一页中。而行溢出,有时候是不可避免的,比如,你的表就2个字段,一个varchar(1000),一个varchar(8000),在一个数据页中存储不了,这个就是行溢出数据。另外,这个pctfree 和sql server fillfactor 也不一样,pctfree是20,那就是给update留了20%的可用空间,而sql server 中的填充因子,是影响表一开始数据分布的,比如设置为50,那么sql server可以让索引中的页,每页都值存储50%的数据,剩余50%是可以接下来insert,update用的,没多久,可能页面就达到100%了,就放不下了,于是rebuild 索引 ,填充因子50%,于是,页右是50%了,这样的好处是减少页的拆分的开销,但是坏处是,提高了碎片率,原来一页能100条记录,现在50%,只能放50条。访问同样多的数据,可能访问的页数多了一倍,所以有好有坏。
      

  8.   

    最近在学习备份机制,归档模式,非归档模式,逻辑备份,物理备份,一致性备份,非一致性备份,冷备,热备,搅合来搅合去的。
    这个归档模式可以理解为sql server中的full模式,而非归档就是simple模式,就是不会去保存日志。冷备份就是一致性备份,类似于sql server你把服务停掉,然后手动到目录下,复制mdf和ldf文件的备份。而热备份就是非一致性备份,就是sql server中的backup daabase xxx,其中是包含了未提交事务的日志的,因为在你发出backup命令时,这好有一个事务运行到一半,备份程序不可能等到这个事务运行结束,于是就把在备份期间发生的事务日志记录了下来,当还原时,发现了那个的事务没有提交,于是,就开始运用记录下来的事务日志,进行回滚,撤销,于是数据库中的数据还是保持了一致的,但是显然备份的数据是不一致的,只不过由于有了日志,才能维护一致性。
      

  9.   


    搞好了,谢谢!http://blog.csdn.net/zhrzhl/article/details/13627705呵呵,开始研究oracle了啊oracle这块,plsql这些平时一直在用,
    之前了解过oracle的体系结构,从逻辑上和物理上的一些文件的划分归属之类的
    最近在学习备份机制,归档模式,非归档模式,逻辑备份,物理备份,一致性备份,非一致性备份,冷备,热备,搅合来搅合去的,有点晕
    其实oracle里有不少很“专业”的概念(我更认为用“操蛋”描述合适),
    备份就备份,还RMAN,以前经常听人家说RMAN,以为是什么高级功能,
    吓得不敢插话(因为经常听一些很高级的英文名称概念)
    不就是backup命令么
    不过说实话,绝大部分开发人员,对oracle的认识并不深
    而比较懂oracle的那部分人,又天天说专业词汇,动不动都是英语,结果越搞越神秘
    之前一个培训老师,把“行迁移”(对应sqlserver的页拆分,pagesplit,),
    行链接(对应sqlserver的行溢出)讲的神乎其神,给大家弄的一愣一愣的
    仿佛是只要有“行迁移”数据库就是崩溃死的,
    不设置页面的PCTFREE (不就是sqlserver中的fillfactor么)系统就立马会挂掉一样
    拼命在将概念……其实我觉得大多数人是被这种概念化的东西给忽悠了,他们给人讲课,就是死扣概念,拼命忽悠确实,其实很多概念都是相似的。比如,你说的行迁移-》页拆分。但是行链接-》行溢出,这个不太一样,是两个概念,行链接,你看的那个sql srver 2008技术内幕中有,是指对于堆表,在原来的记录处保留了一个指针,实际上记录存储在另一页中。而行溢出,有时候是不可避免的,比如,你的表就2个字段,一个varchar(1000),一个varchar(8000),在一个数据页中存储不了,这个就是行溢出数据。另外,这个pctfree 和sql server fillfactor 也不一样,pctfree是20,那就是给update留了20%的可用空间,而sql server 中的填充因子,是影响表一开始数据分布的,比如设置为50,那么sql server可以让索引中的页,每页都值存储50%的数据,剩余50%是可以接下来insert,update用的,没多久,可能页面就达到100%了,就放不下了,于是rebuild 索引 ,填充因子50%,于是,页右是50%了,这样的好处是减少页的拆分的开销,但是坏处是,提高了碎片率,原来一页能100条记录,现在50%,只能放50条。访问同样多的数据,可能访问的页数多了一倍,所以有好有坏。不好意思,这个地方我理解的不到位,写的更不到位,有点信口开河了关于行溢出,应该是指字段column级的,指某一条记录的总的字段长度超过了数据页的容量,造成的一个页面容纳不下该条记录,然后某个列的数据存储在其他页面的情况,原记录通过标记指向该字段信息sqlserver中有page split的概念(有的叫页拆分,有的页分裂,我一点也不喜欢用英语的,但是有时候叫法不一样,用英语描述起来更统一一点,呵呵),
    对于pages plit产生的存储,好像也没有一个统一的叫法,我这边一本书上叫做“Forwarding and forwarded records”,sqlserver很少见到有“行链接”的叫法,或许这种情况就类似于oracle的“行链接”吧前段时间还在看这些东西,那本书上有非常详细的实例证明记录和分析置于填充因子,感觉我理解的有问题,这里刚好再跟你请教一下,
    假如聚集表,聚集索引上设置80的填充因子
    也即这样建索引:create clustered index index_id on testIndexfillfactor(id) with (fillfactor=80)
    那么,是不是:B树结构的叶子节点,也就是存储数据的叶节点的利用率是80%呢?
    上面索引的下测试,从sys.dm_db_index_physical_stats看页面利(avg_page_space_used_in_percent)用率不超过80%
    是不是证明,在往数据页中插入数据的时候,页存储数据接近80%容量的时候,就不存储了(重新分配页来存储新插入的数据)如果是堆表,这样建索引:create index index_id on testIndexfillfactor(id) with (fillfactor=80)
    那么这个80%是存储数据的页面的数据的利用率呢,应该是B树的页节点的存储密度吧?
    堆上存储数据的页不受其影响
      

  10.   

    又叫混了,sqlserver中有page split的概念(有的叫页拆分,有的页分裂,我一点也不喜欢用英语的,但是有时候叫法不一样,用英语描述起来更统一一点,呵呵),
    对于pages plit产生的存储,好像也没有一个统一的叫法,我这边一本书上叫做“Forwarding and forwarded records”,sqlserver很少见到有“行链接”的叫法,或许这种情况就类似于oracle的“行迁移”吧
      

  11.   

    直接上两张图算了,前面有不少证明的过程和步骤,只拍了两个图行溢出
    页拆分产生的forwarding,forwarded记录
      

  12.   


    搞好了,谢谢!http://blog.csdn.net/zhrzhl/article/details/13627705呵呵,开始研究oracle了啊oracle这块,plsql这些平时一直在用,
    之前了解过oracle的体系结构,从逻辑上和物理上的一些文件的划分归属之类的
    最近在学习备份机制,归档模式,非归档模式,逻辑备份,物理备份,一致性备份,非一致性备份,冷备,热备,搅合来搅合去的,有点晕
    其实oracle里有不少很“专业”的概念(我更认为用“操蛋”描述合适),
    备份就备份,还RMAN,以前经常听人家说RMAN,以为是什么高级功能,
    吓得不敢插话(因为经常听一些很高级的英文名称概念)
    不就是backup命令么
    不过说实话,绝大部分开发人员,对oracle的认识并不深
    而比较懂oracle的那部分人,又天天说专业词汇,动不动都是英语,结果越搞越神秘
    之前一个培训老师,把“行迁移”(对应sqlserver的页拆分,pagesplit,),
    行链接(对应sqlserver的行溢出)讲的神乎其神,给大家弄的一愣一愣的
    仿佛是只要有“行迁移”数据库就是崩溃死的,
    不设置页面的PCTFREE (不就是sqlserver中的fillfactor么)系统就立马会挂掉一样
    拼命在将概念……其实我觉得大多数人是被这种概念化的东西给忽悠了,他们给人讲课,就是死扣概念,拼命忽悠确实,其实很多概念都是相似的。比如,你说的行迁移-》页拆分。但是行链接-》行溢出,这个不太一样,是两个概念,行链接,你看的那个sql srver 2008技术内幕中有,是指对于堆表,在原来的记录处保留了一个指针,实际上记录存储在另一页中。而行溢出,有时候是不可避免的,比如,你的表就2个字段,一个varchar(1000),一个varchar(8000),在一个数据页中存储不了,这个就是行溢出数据。另外,这个pctfree 和sql server fillfactor 也不一样,pctfree是20,那就是给update留了20%的可用空间,而sql server 中的填充因子,是影响表一开始数据分布的,比如设置为50,那么sql server可以让索引中的页,每页都值存储50%的数据,剩余50%是可以接下来insert,update用的,没多久,可能页面就达到100%了,就放不下了,于是rebuild 索引 ,填充因子50%,于是,页右是50%了,这样的好处是减少页的拆分的开销,但是坏处是,提高了碎片率,原来一页能100条记录,现在50%,只能放50条。访问同样多的数据,可能访问的页数多了一倍,所以有好有坏。不好意思,这个地方我理解的不到位,写的更不到位,有点信口开河了关于行溢出,应该是指字段column级的,指某一条记录的总的字段长度超过了数据页的容量,造成的一个页面容纳不下该条记录,然后某个列的数据存储在其他页面的情况,原记录通过标记指向该字段信息sqlserver中有page split的概念(有的叫页拆分,有的页分裂,我一点也不喜欢用英语的,但是有时候叫法不一样,用英语描述起来更统一一点,呵呵),
    对于pages plit产生的存储,好像也没有一个统一的叫法,我这边一本书上叫做“Forwarding and forwarded records”,sqlserver很少见到有“行链接”的叫法,或许这种情况就类似于oracle的“行链接”吧前段时间还在看这些东西,那本书上有非常详细的实例证明记录和分析置于填充因子,感觉我理解的有问题,这里刚好再跟你请教一下,
    假如聚集表,聚集索引上设置80的填充因子
    也即这样建索引:create clustered index index_id on testIndexfillfactor(id) with (fillfactor=80)
    那么,是不是:B树结构的叶子节点,也就是存储数据的叶节点的利用率是80%呢?
    上面索引的下测试,从sys.dm_db_index_physical_stats看页面利(avg_page_space_used_in_percent)用率不超过80%
    是不是证明,在往数据页中插入数据的时候,页存储数据接近80%容量的时候,就不存储了(重新分配页来存储新插入的数据)如果是堆表,这样建索引:create index index_id on testIndexfillfactor(id) with (fillfactor=80)
    那么这个80%是存储数据的页面的数据的利用率呢,应该是B树的页节点的存储密度吧?
    堆上存储数据的页不受其影响这个填充因子,如果在数据量很少的情况下,没什么具体的作用。你设置了fillfactor,你insert 大量的数据,数据根本不会按照这个fillfactor来填充,反正该怎么填充还是怎么填充,可能很多页都会填满,而有些页可能会很空,不一定。不过如果表里的数据很多,那么为了提高效率,设置一个fillfactor,比如80%,然后rebuild,那么数据就会按照这个比率,重新构造,但是还是可以继续insert,update等操作的。这个主要是针对索引的。
      

  13.   


    对的,我刚才查了2005技术内幕,是这个,翻译成前向指针记录。我也查了oracle的资料,你说的应该是 对的,oracle中的行链接-》sql server中的行溢出,也就是一个数据块存储不了一行数据,于是可能1行数据,要存储在2个或多个数据块中,把一行数据通过指针链接起来。而行迁移,是update时,放不下数据,于是把这行数据,放到一个新的数据块,而在原来的位置存储一个转向指针,指向新的位置,也就是sql server中的前向指针,但应该不是页拆分。我觉得这个页拆分,应该是指,当插入大量数据时,发现原来的数据块存放不下了,而在索引中,数据本身又是有序的,那么进行页的拆分,比如页号为100的数据块,存放了5条记录,分别是id为1,2,3,8,9,这个时候插入了6,于是就多了一个数据块,比如101,那么100页存储1,2,3 ,而101页存储6,8,9,这个应该不会有前向指针,而只是一个页拆分成了2个或多个页。这个页拆分,在sql server和oracle中,应该是一样的