Danny's profile季节的水滴PhotosBlogListsMore Tools Help

Blog


    10/5/2009

    为什么在Oracle里删除了表数据,但空间却得不到释放

    Q: 为什么我在Oracle下Delete Table,但是表空间却得不到释放?
    A: 学习一下Delete和Truncate的区别:
        1. 当使用Delete语句删除表的所有数据时,不会释放表所占用的空间;使用"Truncate Table"语句不仅会删除表的所有数据,而且还会释放表段所占用的空间;
        2. Delete属于DML(Data Manipulation Language)操作,支持事务;Truncate属于DDL(Data Definition Language)操作,不支持事务;
        3. Delete语句的操作可以回退,但Truncate Table语句的操作不能回退。
    6/1/2009

    A good blog to learn Oracle

    Focusing Specifically On Oracle Indexes, Database Administration and Some Great Music
    Richard Foote's Oracle Blog (Thanks for Jussi Volanen sharing)
    7/10/2008

    查询并解除oracle的死锁

    在网上发现了一个很牛的检查表锁的语句:
    SELECT   A.OWNER,        
                        A.OBJECT_NAME,        
                        B.XIDUSN,        
                        B.XIDSLOT,        
                        B.XIDSQN,        
                        B.SESSION_ID,        
                        B.ORACLE_USERNAME,        
                        B.OS_USER_NAME,        
                        B.PROCESS,        
                        B.LOCKED_MODE,        
                        C.MACHINE,        
                        C.STATUS,        
                        C.SERVER,        
                        C.SID,        
                        C.SERIAL#,        
                        C.PROGRAM      
              FROM   ALL_OBJECTS   A,        
                        V$LOCKED_OBJECT   B,        
                        SYS.GV_$SESSION   C    
            WHERE   (   A.OBJECT_ID   =   B.OBJECT_ID   )    
                AND   (B.PROCESS   =   C.PROCESS   )   
            ORDER   BY   1,2 ;

    然后再根据得到sid和serial#:

    alter   system   kill   session   'sid,serial#'
    6/20/2008

    Solaris下启动Oracle数据库实例

    在Leewey同学的指导下学了一下Solaria下启动Oracle:

    # su - oracle
    $ sqlplus /nolog            // nolog是启动SQLPLUS,但不连接,也即nologin
    SQL>conn  username/password@sid //以username用户连接数据库
    SQL>startup                //启动数据库
    SQL>exit                    //退出
     
    刚开始由于密码中含有“&”这个符号,怎么试都不行。没办法偶只好:
    #su -oracle
    SQL>emctl start dbconsole
    打开浏览器输入http://ip address:1158/em
    用sys用户名进入,把username用户名的密码中的“&”号去掉(当然也可以直接用sys用户名登录去修改)。
    6/17/2008

    9i OEM不能访问10g数据库(非sys用户),报:您必须具有SELECT ANY DICTIONARY权限才能运行此应用程序

          用Oracle9i的Enterprise Manager Console连接Oracle10g数据库报“您必须具有SELECT ANY DICTIONARY权限才能运行此应用程序。请要求DBA为您授予此权限”错误。网上有人说这是使用OEM登录时的一个BUG,授权也没有用;即使新建用户时,为该用户授予了此权限,也会报这个错误。
          解决办法:1.换Oracle10的OEM;
                       2.Oracle10g有web管理界面,打开浏览器输入:http://IP Address:Port/em
                    如:http://10.221.12.145:1158/em
    6/15/2008

    Oracle导出数据

    网上百度的从Oracle数据库导出数据偶试了一遍,都不行。不过偶幸亏有高手指点,才顺利导出数据。
     
    现将正确的方法贴出,希望可以帮助需要的人:
    1.打开客户端Enterprise Manager Console连接到你要导出的数据库
    2.cmd进入DOS命令行
    4.输入password
    5.给导出的dmp文件起名字
    6.选择导出数据库、用户还是表(我选的是导出用户)
    7.选择是否导出权限、表数据,是否压缩区
    8.要导出的用户:此处再次输入用户名
     
    贴图如下: 用户名:monet       SID:lbs