Oracle数据库开发的一些经验积累(二)

  • 来源: 互联网 作者: rocket   2008-03-19/10:12
  • 三、LINUX和UNIX下
    转到操作系统下执行:kill -9 spid (以上语句所查出的)

    36、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
    杀掉:alter system kill session 'sid, serial#'
    37、ORACLE的登录问题,用户名和密码。

    可以直接输入:
    internal/oracle@serivce_name
    sys/change_on_install@serivce_name
    system/manager@serivce_name
    scott/tiger@serivce_name
    注意:
    9i中没有internal/oracle
    如果选择典型安装则有scott用户
    如果自定义可以不安装 scott用户
    如果是本机则可以省略@serivce_name
    bitsCN~com



    oem:(ORACLE ENTERPRISE MANAGER)
    sysman/oem_temp

    38、修改表的列名

    Oracle9i:
    alter table xxx rename column xx to yy;

    Oracle8i & lower version
    connect sys/passed;
    update col$ set name=xx where obj#=对象id and name = 字段
    (一般不要这样用,会造成意想不到的结果)
    注:最好是删除再建立新的列

    39、把用户模式对象所在的表空间移到新的表空间
    (1). create the new tablesapce
    (2). alter user test default tablespace test_data;
    (3). alter user test quota unlimited on test_data;
    (4). alter table the_table_name move tablespace test_data;
    生成脚本:
    select 'alter table'||tname||' move tablespace test_date;'
    from tab
    where tabtype='TABLE'
    (5). rebuild the indexes;

    40、使用OEM备份或者EXP的步骤
    WIN2000下:

    (1). 控制面板――>管理工具―― >计算机管理――>本地用户和组――>用户――>新建用户sys和sysman(sys和sysman 的帐号要和登陆数据库的帐号相同); bbs.bitsCN.com
    (2).控制面板――>管理工具―― >本地安全策略――>本地策略――>用户权利指派――>
    作为批处理作业登陆――>添加sys和sysman两个帐号。
    (3).使用Enterprise Manager配置辅助工具
    开始→程序→Oracle - OraHome81→Enterprise Manager→Configuration Assistant
    a、使用Configuration Assistant工具来创建一个新的资料档案库。

    (4).控制面板――>管理工具―― > 服务,查看OracleOraHome81ManagementServer是否启动,如果没有启动,则手动启动该服务。
    (5).以sysman/oem_temp(default)登陆DBA Studio
    (第二个选项:登陆到Oracle Management Server),立即修改密码为你刚才在NT下建的用户sysman的密码。
    (6). 以sysman/ *** (bluesky) 从开始→程序→Oracle - OraHome81→Console 登陆到 控制台。
    在 系统→首选项→首选身份证明(我的首选身份设置如下:)
    DEFAULT节点:name:sysman
    DEFAULT数据库:name:sys
    (7). 在搜索/添加结点后,以sysman/ *** 登陆到该结点,以sys/ *** as sysdba登陆数据库(也就是在首选身份设置的结果)。 [bitsCN.Com]
    (8). 在工具→备份管理→向导→预定义备份策略(自定义备份策略)→提交备份计划
    (9).从开始→程序→Oracle - OraHome81→Console 登陆到 控制台,查看活动(历史记录)可以看到你的备份是否成功,如果不成功,可以点击备份看明细。(我第一次也没成功,后来我修改系统的临时目录C:\WINNT\Temp→c:\temp\systmp,重新启动机器就ok了)

    41、如何修改INTERNAL的口令

    以下是oracle8的8i你可以仿照来做

    (1)、进入DOS下

    (2)、默认internal密码文件在c:\orant\database下,是隐藏属性,文件名称与数据库实例名有关

    如默认ORACLE实例名为ORCL,则internal密码文件名为pwdorcl.ora

    (3)、建立新的internal密码文件,起个新名字为pwdora8.ora

    orapwd80 file=pwdora8.ora password=B entries=5--注:password项一定要用大写,并且不要用单引号

    (4)、拷贝pwdora8.ora文件到c:\orant\database目录下

    (5)、运行regedit,修改口令文件指向

    (6)、找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE项 www_bitscn_com中国.网管联盟

    定位ORA_ORCL_PWFILE子项,改变其值为c:\orant\database\pwdora8.ora

    (7)、关闭ORACLE数据库,重新启动

    (8)、进入svrmgr30服务程序,测试internal密码是否更改成功

    42、凭证检索失败的决绝方法。

    原因: 由于Oracle不能应用OS认证而导致凭证检索失败

    解决办法:

    (1).打开network/admin下的sqlnet.ora
    修改SQLNET.AUTHENTICATION _SERVICES=(NONE)。

    (2).启动Net8 configuration assistant-->选第三项本地网络服务名配置
    -->删除...(删除原来的本地网络服务名)

    (3).重复第二步
    -->添加.. (新建本地网络服务名)

    (4).restart oracle

    注意:NTS是WinNT的认证方式

    43、命令行编译存储过程

    ALTER PROCEDURE procedure_name COMPILE;

    44、关于如何建立数据库链接(DBlink)

    可以通过建立客户机数据库网络服务名的办法,将服务器的名字或是IP地址设置为你需要连接的那个机器就行
    中国_网管联盟bitsCN.com



    如果你要在一个应用中连接它,现在做好上步工作,然后按如下处理

    建立数据库连接
    CREATE DATABASE LINK DBaseLinkName CONNECT TO UserName IDENTIFIED BY Password USING 'NetServiceName';
    DBaseLinkName是建立的数据连接名称
    UserName 是可以连接到的用户名
    Password是可以连接到的用户的密码
    NetServiceName是可以连接的数据库网络服务名或是数据库名

    查询建立数据连接的表实例
    Select * From TableName@ DBaseLinkName;

    注意:如果在CREATE DATABASE LINK DBaseLinkName CONNECT TO UserName IDENTIFIED BY Password USING 'NetServiceName';中NetServiceName是数据库名修改init.ora中:global_names = true
    否则global_names = false
    init.ora中:global_names = false

    45、Object Browser7.0中文版的破解方法
    bitsCN#com中国网管联盟



    到OBJECT BROWSER的目录里,找到DeIsL1.isu文件,用记事本打开,看到的是乱码吧?没关系,将Stirling Technologies ,Inc 这个字符串前面的乱码去掉(如果有的话),让后在Stirling之前加一个空格(一定要加的),保存,退出,重新运行一下看看,虽然还有提示输入验证信息,但是不用管他,直接确定就行。是不是可以用了呢?保证好使。

    46、错误号ORA-01536:space quota exceeded for table space 'ALCATEL'的解决办法

    三个解决办法,任你选择:
    (1) alter user USERNAME quota 100M on TABLESPACENAME;
    (2) alter user USERNAME quota unlimited on TABLESPACENAME;
    (3) grant unlimited tablespace to USERNAME;

    47、如何在Oracle中捕获到SQL语句的全部操作内容

    SELECT osuser, username, sql_text from v$session a, v$sqltext b
    where a.sql_address =b.address order by address, piece;

    48、ORACLE中如何实现自增字段:

    (1)第一种方法
    ORACLE一般的做法是同时使用序列和触发器来生成一个自增字段.
    CREATE SEQUENCE SEQname
    INCREMENT BY1 bitsCN.nET*中国网管博客
    START WITH1
    MAXVALUE99999999
    /
    CREATE TRIGGER TRGname
    BEFOREINSERTON table_name
    REFERENCING
    NEW AS :NEW
    FOR EACH ROW
    Begin
    SELECT SEQname.NEXTVAL
    INTO :NEW.FIELDname
    FROM DUAL;
    End;

    (2)第二种方法:
    CREATE OR REPLACE TRIGGER TR1
    BEFORE INSERT ON temp_table
    FOR EACH ROW
    declare
    com_num NUMBER;
    BEGIN
    SELECT MAX(ID) INTO COM_NUM FROM TEMP_TABLE;
    :NEW.ID:=COM_NUM+1;
    END TR1;

    49、job的使用:

    修改initsid.ora参数
    job_queue_processes = 48i,9i(允许同时执行的JOB数)
    job_queue_interval = 108i
    job_queue_keep_connections=true 8i

    DBMS_JOB.SUBMIT(:jobno,//job号
    'your_procedure;',//要执行的过程
    trunc(sysdate)+1/24,//下次执行时间
    'trunc(sysdate)+1/24+1'//每次间隔时间
    );
    删除job:dbms_job.remove(jobno);
    修改要执行的操作:dbms_job.what(jobno,what); www@bitscn@com
    修改下次执行时间:dbms_job.next_date(job,next_date);
    修改


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多