<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學習和生活

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks

    原文引自:-------------
    第一個#是改共享內存大小的
    第二個#是啟動數據庫的。

    (3)
    ftp://ftp.rpmfind.net/linux/rhcontri ... lerun9i-1.0-1.i386.rpm

    下載這個軟件包并安裝。

    里面每個文件都有一些要修改的地方。配置完成之后,就可以在系統服務配置中找到它,選中它就可能以自啟動了。

    18、回滾段不夠的處理方法

    (1)、先使回滾段脫機一個,
    如果不好用,則再脫機一個。直至好用。
       ALTER rollback segment rollbackname offline;
    (2)、增加回滾段數據文件的大小
       alter database datafile 'datafile' resize 200M;


    19、WINNT向WIN2000移植

    不用EXP和IMP的

    停掉數據庫的服務后,可以做一個數據庫的全備份。

    在WIN2000上建一個同名的數據庫,隨便建,越小越好,可以縮短時間。
    把WINNT下的數據庫備份恢復到WIN2000的數據庫上就可以了。但建庫的目錄
    必須一樣。(也可以不一樣,但需要更改數據文件的連接)

    我曾多次為用戶這樣移植數據,萬無一失的。
    注意:因為數據很重要,所以建議你先EXP備份一下。這是我們的習慣。


    20、ORACLE SQL PLUS Worksheet亂碼問題。

    dbappscfg.properties,修改該文件即可解決上述問題。$ORACLE_HOME\sysman\config目錄下,修改
    # SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
    為SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK。

    對于Windows操作系統,還需要修改一項
    #SQLPLUS_SYSTEMROOT=c:\\WINNT40
    為SQLPLUS_SYSTEMROOT=C:\\WINNT

    如操作系統的主目錄在C盤的Winnt下

    對于后面一項的修改只對Windows操作系統進行,對UNIX操作系統則不需要。如果在Windows操作系統中不修改該項,在Oracle Enterprise Manager中,連接系統時,會提示如下的錯誤:
    ORA-12560 TNS:protocol adapter error 
    或者 
    ORA-12545 Connect failed because target host or object does not exist 
    重新連接SQL PLUS Worksheet


    21、DROP掉名字是小寫的表(用雙引號括起來)。

        drop table "tablename"
        select * from "tablename"

    22、日期的顯示格式
    注意:SIMPLIFIED CHINESE(簡體中文需要" "括起來)
          別的國家不用" " 例如:ENGLISH 
    select to_char(sysdate,'DAY','NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE''') from dual;
    ------------
    星期四
    ------------

    23、一個從ORACLE中讀表信息的存儲過程

    可以在vc下調用存儲過程來實現
    例子:
    先修改init.ora
    例如:
    utl_file_dir=/usr    //路徑為 oracle所在的盤:/usr
    此過程將用戶TEMP的P1過程的代碼保存到ORACLE安裝盤下/USR/TEXT.TXT中
    create or replace procedure TEST
    is
      file_handle utl_file.file_type;
      STOR_TEXT VARCHAR2(4000);
      N NUMBER;
    I NUMBER;
     begin
    I:=1;
       SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE OWNER='TEMP' AND NAME='P1';
    file_handle:=utl_file.fopen('/usr','test.txt','a');
    WHILE I<=N LOOP
       SELECT TEXT  INTO STOR_TEXT FROM ALL_SOURCE WHERE OWNER='TEMP' AND NAME='P1' AND LINE= I;
       I:=I+1;
       utl_file.put_line(file_handle,stor_text);
    END LOOP;
       utl_file.fclose(file_handle);
    commit;
    end TEST;
    /

    24、關于修改ORACLE的列寬
    (1)、不論如何都要備份數據。
    (2)、如果沒有數據,則可以修改寬度。比如NUMBER,CHAR,VARCHAR2
    (3)、如果有數據,則可以增加寬度。比如NUMBER,CHAR,VARCHAR2
       注意:不可以減小寬度。
    (4)、語法:alter talbe tablename modify columnname columntype not null;

    25、如何查看用戶的存儲過程和函數

    select name,text from user_source where name= Procedurename and type = 'PROCEDURE' order by line;

    26、在批處理中自動啟動ORACLE服務(win2000)

    編一個批處理文件
    net start OracleServiceSID
    OracleServiceSID是ORACLE的實例名稱

    27、對行加鎖時,只對tb1加鎖

    select tb1.r1 from tb1, tb2  where tb1.r2 = tb2.r2 and tb2.r1 = xxx for update of tb1.r1 nowait

    28、得到列的信息

    desc tablename
    select cname from col where tname='TABLENAME';
    select column_name from user_tab_columns where table_name='TABLENAME';
    select column_name from ALL_tab_columns where table_name='TABLENAME';
    select column_name from dba_tab_columns where table_name='TABLENAME';
    select column_name from user_col_comments where table_name='TABLENAME';    
    select column_name from all_col_comments where table_name='TABLENAME'; 
    select column_name from dba_col_comments where table_name='TABLENAME'; 

    29、使觸發器無效(login_on)

    svrmgrl
    connect internal/oracle
    alter trigger login_on disable;

    使觸發器為無效alter trigger yourtriggername disable

    如果是對于某一個表的所有的觸發器:
    alter table yourtablename disable all triggers


    30、如在SQLPLUS中何調用存儲過程和函數。

        call只能調用存儲過程后面加上括號就可以了
        call 存儲過程名();
        exec procedurename;(可以不加())
        調用函數用sql語句
        select 函數名(參數) from dual;

    31、函數中如果調用DML語句就不可以調用SELECT語句

    32、REDO LOG BUFFER 什么時候寫到REDO LOGFILE中
        (1)、在COMMIT的時候
        (2)、重做日志緩沖區1/3滿的時候
        (3)、重做日志緩沖區大于1M的時候
        (4)、它寫信息必須是在數據寫進程前調用
        (5)、一般CHECKPOINT在日志組切換的時候進行或者由初始化參數設定
             在CHECKPOINT的時候需要調用數據寫進程   

    33、ORACLE的http server 把原有的WEB server沖掉,如何解決?

        (1).如果你原來的http server是用IIS等其他發布工具做的,那么可以在服務中停掉         oracle http server服務,并且改為手動啟動。
        (2).如果原來的http server是用apache發布,則可以改變http.conf中的參數

    34、關于創建重建查看索引


    創建索引:
    CREATE INDEX IND_NAME ON TABLE_NAME(COL1,COL2,...);

    重建索引:
    ALTER INDEX IND_NAME REBUILD;

    查看索引:

    SELECT * FROM USER_INDEXES WHERE INDEX_NAME='IND_NAME';

    35、ORACLE如何查殺用戶的進程
      
       一|根據用戶的應用程序和SQL語句,在DBA STUDIO找到用戶的SESSION并斷開其連接
     
       二、
       
       (1)、要殺掉一個session應先應知道其sid和serial#,假設你已經知道。
       (2)、select paddr from v$session where sid=v_sid and serial#=v_serial#
       select spid from v$process where addr=paddr(以上語句所查出的);

       (3)、使用ALTER SYSTEM KILL SESSION 'v_sid,v_serial#' immediate; 試一試如不行轉    
       
       三、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

    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 的帳號要和登陸數據庫的帳號相同);
    (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登陸數據庫(也就是在首選身份設置的結果)。
    (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項

      定位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地址設置為你需要連接的那個機器就行

    如果你要在一個應用中連接它,現在做好上步工作,然后按如下處理

    建立數據庫連接
    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中文版的破解方法

    到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 BY  1
     START WITH  1
     MAXVALUE  99999999
    /
    CREATE TRIGGER TRGname
    BEFORE  INSERT  ON 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 = 4            8i,9i  (允許同時執行的JOB數)
    job_queue_interval = 10            8i  
    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);
    修改下次執行時間:dbms_job.next_date(job,next_date);
    修改間隔時間:dbms_job.interval(job,interval);
    停止job:dbms.broken(job,broken,nextdate);
    啟動job:dbms_job.run(jobno);

    注意:修改后一定要COMMIT;


    例子:
    VARIABLE jobno number;
    begin
          DBMS_JOB.SUBMIT(:jobno, 
                  'Procdemo;',//Procdemo為過程名稱 
                   SYSDATE, 'SYSDATE + 1/720');
             commit;
    end;

    50、如何配置mts

    修改初始化參數文件
    增加以下內容:
    mts_dispatchers = "(protocol=TCP)(disp=2)(con=1000)"
    mts_max_dispatchers = 50
    mts_servers = 20 
    mts_max_servers = 50

    51、取出一個表的最后一條記錄

    select * from (select rownum id,tname.* from tname) a where a.id=(select count(*) from a);

    52、重做日志(Redolog)被刪掉,通過什么方法才能恢復!

    先mount數據庫,然后再目錄下建同名文件redo01.log、redo02.log、redo03.log
    然后執行alter databse clear logfile group n
    對于current的group,執行alter databse clear unarchived logfile group n
    然后,再open,就ok了

    53、Oracle常見服務

    幾個主要的:

    OracleOraHome81TNSListener     監聽服務
    OracleServiceSID               ORACLE服務
    OracleOraHome81Agent           智能代理服務
    OracleOraHome81CMan            連接管理服務
    OracleOraHome81HTTPServer      APACHE WEB 服務
    OracleOraHome81ManagementServer ORACLE 企業管理器服務
    OracleOraHome81Names            ORACLE命名服務

    剩下的也不常用。

    54、ORACLE的熱備份

    在不關閉數據庫的時候進行ORACLE的備份。

    原理停復雜的,你去找本書看看吧。

    舉個簡單的例子:備份表空間USERS

    ALTER TABLESPACE USERS BEGIN BACKUP
    COPY USERS TABLESPACE 的數據文件到備份目錄
    ALTER TABLESPACE USERS END BACKUP

    55、導致索引不起作用的解決辦法

    你的問題我剛處理過,是由optimizer_mode參數引起的,該參數的默認值為choose,即為如表有statis則查詢走基于cost的方式,否則走基于rule的方式,因些你可以有以下幾個解決方法。
    (1)、簡單的在init<sid>.ora中設optimizer_mode=rule,重起數據庫。
    (2)、使用analyze table table_name(索引基表) delete statistics;
    (3)、最后一個萬能辦法,將表和索引drop掉,重建。

    56、關于數據庫進程的問題。

    (1).查看相關進程在數據庫中的會話
    Select a.sid,a.serial#,a.program, a.status ,
    substr(a.machine,1,20), a.terminal,b.spid
    from v$session a, v$process b
    where a.paddr=b.addr
    and b.spid = &spid;

    (2).查看數據庫中被鎖住的對象和相關會話
    select a.sid,a.serial#,a.username,a.program,
    c.owner, c.object_name 
    from v$session a, v$locked_object b, all_objects c
    where a.sid=b.session_id and
    c.object_id = b.object_id;

    (3).查看相關會話正在執行的SQL
    select sql_text from v$sqlarea where address = 
    ( select sql_address from v$session where sid = &sid );


    57、查看IP地址
    select SYS_CONTEXT('USERENV','IP_ADDRESS')  from dual;

    58、運行SQLPLUS時不用輸入用戶名和密碼,進入之后使用CONNECT
                 
            SQLPLUS /NOLOG
            SQL>CONNECT SCOTT/TIGER

    59、查看當前會話

            userenv() 函數

            select userenv('language') from dual 字符集
            select userenv('isdba') from dual 是否DBA
            select userenv('sessionid') from dual sessionid
            select userenv('TERMINAL') from dual 客戶端名字
            select userenv('INSTANCE') from dual 實例數

            SYS_CONTEXT() 函數
         
            select SYS_CONTEXT('USERENV','CURRENT_SCHEMA')  from dual;  當前模式
            select SYS_CONTEXT('USERENV','CURRENT_SCHEMAID')  from dual;  當前模式ID
            select SYS_CONTEXT('USERENV','CURRENT_USER')  from dual; 當前用戶  
            select SYS_CONTEXT('USERENV','DB_NAME')  from dual; 數據庫 
            select SYS_CONTEXT('USERENV','HOST')  from dual; 主機
            ..........

    60、刪除重復列的方法

    (1) DELETE FROM table_name A WHERE ROWID > (
           SELECT min(rowid) FROM table_name B
            WHERE A.key_values = B.key_values);
    (2) create table table2 as select distinct * from table1;
         drop table1;
         rename table2 to table1;
    (3) Delete from mytable where rowid not in(
           select max(rowid) from mytable
           group by column_name );
    (4) delete from mytable t1
          where  exists (select 'x' from my_table t2
                       where t2.key_value1 = t1.key_value1
                         and t2.key_value2 = t1.key_value2
                         ...
                         and t2.rowid > t1.rowid);

    61、ORA-12571: TNS:packet writer failure(包寫入程序失敗)

       (1) 這個錯誤在客戶端遇到過,通常重新連接一下服務器就好了。
       服務器重新啟動的時候,在client也會遇到該錯誤。
       這個錯誤你是在server還是client上遇到的?最常用的辦法就是加上跟蹤,查看一下    跟蹤記錄,分析分析錯誤的原因。
       網絡問題也會出現該錯誤,比如網絡路由沒有配置好。
       (2) 安裝的殺毒軟件導致的
       (3) 服務器端的IP是否被改動
       (4) 最后不行的話,重新創建監聽器
        
    62、ORACLE服務不能自動啟動的解決辦法   

       把ORACLEHOME\network\ADMIN\sqlnet.ora
       文件中的 sqlnet.authentication_service=(nts) 
       注釋掉就可以了


    63、不完全的時間點恢復

    shutdown immediate
    copy 備份文件到需要恢復的目錄下
    startup mount
    recover database until time '2002-12-26 09:00:00'

    alter database open resetlogs

    自己仔細檢查一下,不會發生這樣的問題的。

    64、oracle如何設置查詢超時

    select  /*+  timeout  30*/  *  from  veryLargeTable  

    65、修改字符集

    (1)、ALTER DATABAE CHARACTER SET SIMPLIFIED CHINESE_CHINA.ZHS16GBK ; 

    (2)、update props$ set value$='ZHS16CGB231280' 
    where name='NLS_CHARACTERSET';
    update props$ set value$='ZHS16CGB231280' 
    where  name='NLS_NCHAR_CHARACTERSET';

    建議不使用(2)

    注意:
    (1)、執行ALTER DATABASE CHARACTER SET必須有SYSDBA權限,并且在STARTUP RESTRICT模式下執行
    (2)、原字符集必須是目標字符集的一個真子集(就是浪子所說的只能從WE8ISO8859P1轉到ZHS16GBK的原因)
    (3)、CLOB字段裝換可能有問題,建議在轉換以前把有CLOB字段的表導出后DROP,轉換以后再導回
    (4)、該轉換不可逆,所以在做這個操作以前建議做數據庫全備份

    66、修改數據庫名字

    (1)、啟動svrmgrl,以文本方式備份控制文件
     oracle>svrmgrl
     svrmgrl>connect internal
     svrmgrl>alter system backup controlfile to trace
    (2)、編輯產生的跟蹤文件,在udump目錄下
     改CREATE CONTROLFILE REUSE DATABASE "CTC" NORESETLOGS ARCHIVELOG
     中的REUSE為SET
     然后把create controlfile這段語句拷出
    (3)、正常宕庫,后啟動到nomount下
     svrmgrl>shutdown immediate
     svrmgrl>startup nomount
    (4)、執行create controlfile那段語句
    (5)、打開數據庫
     svrmgrl>alter database open
     如提示用resetlogs選項則使用
      svrmgrl>alter database open resetlogs
    (8)、相應修改初始化參數

     

    67、rownum的用法

       select * from (select t.*,rownum id from dept t)
       where id between 1 and 20


    68、oracle的內部參數

       SELECT a.ksppinm NAME,
           b.ksppstdf default_val,
           a.ksppdesc DESCRIPTION
      FROM x$ksppi a,
           x$ksppcv b
     WHERE a.indx=b.indx
       AND substr(a.ksppinm,1,1)='_'
     ORDER BY a.ksppinm

    69、9i安裝時報areasqueries錯誤的解決辦法
        包括IAS 和 IDS 
        
        把安裝源文件目錄全部改為英文字母或數字
        注意:不能是中文的路徑

    70、我如何知道一個表空間還有多少可以用

    (1)、
    SELECT upper(f.tablespace_name) 表空間名,
           d.Tot_grootte_Mb "表空間大小(M)",
           d.Tot_grootte_Mb - f.total_bytes "已使用空間(M)",
           round((d.Tot_grootte_Mb - f.total_bytes) / d.Tot_grootte_Mb * 100,2) "使用比",
           f.total_bytes "空閑空間(M)",
           f.max_bytes "最大塊(M)"
     FROM      
        (SELECT tablespace_name,
                round(SUM(bytes)/(1024*1024),2) total_bytes,
                round(MAX(bytes)/(1024*1024),2) max_bytes
          FROM sys.dba_free_space
         GROUP BY tablespace_name) f,
        (SELECT dd.tablespace_name, round(SUM(dd.bytes)/(1024*1024),2) Tot_grootte_Mb
          FROM   sys.dba_data_files dd
          GROUP BY dd.tablespace_name) d
    WHERE d.tablespace_name = f.tablespace_name    
    ORDER BY 4 DESC
    (2)、select tablespace_name,round(sum(bytes)/1024/1024,2) "M" from dba_free_space 
    group by tablespace_name

    71、creck pl/sql developer 的方法

    (1)、安裝pl/sql developer
    (2)、用UltraEdit將程序PLSQLDev.exe打開
    (3)、將UltraEdit設置為16進制模式
    (4)、查找串:BA 1E 00 00 00 2B D0
       修改:2B D0  為:4A 90
    (5)、存盤退出
    (6)、運行PLSQLDev.exe,如果提示你還有29天的時間可用,那就恭喜你了!

    72、使索引無效

    ALTER INDEX idx UNUSABLE;
    ALTER INDEX idx_acctno DISABLE;(only to a function based index)

    73、在SQLPLUS中給指定用戶進行 set autotrace on/off
        
        以SCOTT用戶為例:

        SQL>CONNECT scott/tiger 
        
        connected.
        
        SQL>@$ORACLE_HOME/RDBMS/ADMIN/UTLXPLAN.SQL 
        
        Table created.
        
        SQL>CONNECT / AS SYSDBA 
        
        connected.
        
        SQL>@$ORACLE_HOME/SQLPLUS/ADMIN/PLUSTRCE.SQL 
        
        drop role plustrace;
        Role dropped.
        create role plustrace;
        Role created.
        .
        grant plustrace to dba with admin option;
        Grant succeeded.

        SQL>GRANT PLUSTRACE TO SCOTT; 

        Grant succeeded.

        SQL>CONNECT SCOTT/TIGER

        connected.        

        SQL>set autotrace on

        SQL>

    74、關于約束的四種狀態

    Disabled novalidate:當約束使不能時,約束的規則不能強制在列
           (包含在約束中)的數據之上。但約束的定義保存在數據字典中。
           在執行數據倉庫卷起(rollup)或裝載且要加快裝載過程時該方式
           是有用的。
    Enabled novalidate:是能無效,該狀態的表可以包含非法
          的數據,但不可能加入新的非法數據。
    Enabled validate:使能有效,一個使能的約束是強制的,表的數據檢查
          有效

    75、在SQLPLUS中調用存儲過程

    SET SERVEROUTPUT ON 
    declare
     out_param varchar2(100);
    begin
     your_proc(1,out_param);
     dbms_output.put_line(out_param);
    end;
    /
    SET SERVEROUTPUT OFF 

    75、生成系統表和存儲過程的三個文件。

         cat*.sql
         dbms*.sql
         utl*.sql

    76、JOB中日期的使用

    每個月1號:
    last_day(sysdate)+1
    每個季度的第一天:
    to_date(decode(to_char(sysdate,'q'),'1',to_char(sysdate,'yyyy')||'0101',
        '2',to_char(sysdate,'yyyy')||'0401','3',to_char(sysdate,'yyyy')||'0701',
        '4',to_char(sysdate,'yyyy')||'1001'),'yyyymmdd')
    每天:
    sysdate+1
    每個星期幾:
    decode(to_char(sysdate,'w'),'1',sysdate+7,
    to_char(sysdate,'w'),'2',sysdate+6,to_char(sysdate,'w'),'3',sysdate+5,
    to_char(sysdate,'w'),'4',sysdate+4,to_char(sysdate,'w'),'5',sysdate+3,
    to_char(sysdate,'w'),'6',sysdate+2,to_char(sysdate,'w'),'7',sysdate+1)

    每個星期x下午三點:interval(21, 'next_day(trunc(sysdate),x+1)+15/24');

    每個季度的第一個星期x:
    interval(21, 'next_day(trunc(sysdate,''Q''),3),5)');


    77、使用execute immediate 的問題

    8i以上才支持execute immediate 
    8.05只能用dbms_sql  
    最好使用execute immediate


    78、ORACLE9i中刪除表空間中數據文件的方法
     
    drop tablespace tbsname including contents 

    79、找出串中的數字

    SELECT TRANSLATE('2KRW229',
       '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','0123456789')
       "Translate example"
         FROM DUAL
    /

    2229

    --全是數字的:
    select * from 你的表 where translate(你的列,'0123456789',' ')='';

    select * from 你的表 where trim(ltrim(rtrim(replace(col_name,'0123456789',' ')))) is null

     

    80、分析表
    analyze table mzbs.db_code ESTIMATE STATISTICS SAMPLE 20 PERCENT;


    81、表空間管理和用戶管理

    --查看表空間和數據文件

    select file_name,tablespace_name,autoextensible from dba_data_files;

    --數據表空間

    CREATE TABLESPACE USER_DATA 
        LOGGING 
        DATAFILE 'D:\ORACLE\ORADATA\ORCL\test.DBF' SIZE 50m REUSE ,
                 'c:\USERS01112.DBF' SIZE 50m REUSE  
        AUTOEXTEND 
        ON NEXT  1280K MAXSIZE  16383M EXTENT MANAGEMENT LOCAL

    --臨時表空間

    CREATE TEMPORARY 
        TABLESPACE  USER_DATA_TEMP TEMPFILE 'D:\TEMP0111.DBF' 
        SIZE 50M REUSE AUTOEXTEND 
        ON NEXT  1024K MAXSIZE  16383M EXTENT MANAGEMENT LOCAL UNIFORM 
        SIZE 1024K


    --增加數據文件

    ALTER TABLESPACE  USER_DATA
      ADD DATAFILE 'c:\USERS01113.DBF' SIZE 50M;

    ALTER TABLESPACE USER_DATA
      ADD DATAFILE 'c:\USERS01114.DBF'  SIZE 50M
      AUTOEXTEND ON
    ;


    --刪除表空間

    DROP TABLESPACE USER_DATA INCLUDING CONTENTS;


    --修改數據文件大小
     ALTER DATABASE
     DATAFILE 'c:\USERS01113.DBF' RESIZE 40M;

    --創建用戶、賦予權限

    CREATE USER USER_DATA PROFILE DEFAULT IDENTIFIED BY  USER_DATA 
        DEFAULT 
        TABLESPACE USER_DATA  TEMPORARY 
        TABLESPACE USER_DATA  ACCOUNT UNLOCK;
     
    GRANT CONNECT TO USER_DATA;
    GRANT RESOURCE TO USER_DATA;

    --把表移到另一個表空間
    ALTER TABLE TABLENAME MOVE TABLESPACE TABLESPACENAME;

    --創建索引

    CREATE INDEX INDEXNAME ON TABLENAME(COLUMNNAME);

    CREATE INDEX INDEXNAME ON TABLENAME(COLUMNNAME) TABLESPACE TABLESPACENAME;

    --重新建立索引

    ALTER INDEX INDEXNAME REBUILD TABLESPACE  TABLESPACE;


    --創建表

    CREAE TABLE TABLENAME
    (COLUMN1 COLUTYPE DEFAULT(VALUE) NOT NULL)
    (COLUMN2 COLUTYPE DEFAULT(VALUE) NOT NULL);


    --建表的索引存儲分配


    CREATE TABLE summit.employee(id NUMBER(7) CONSTRAINT employee_id_pk PRIMARY KEY DEFERRABLE USING INDEX  STORAGE(INITIAL 100K NEXT 100K)
    TABLESPACE indx, 
    last_name VARCHAR2(25) CONSTRAINT employee_last_name_nn NOT NULL,
    dept_id NUMBER(7))
    TABLESPACE data;


    --建立主鍵

    ALTER TABLE TABLENAME
    ADD CONSTRAINT CONSTRAINTNAME PRIMARY KEY(COLUMN1,COLUMN2)


    --使約束無效

    ALTER TABLE TABLENAME ENABLE NOVALIDATE CONSTRAINT CONSTRANAME;

    ALTER TABLE TABLENAME ENABLE VALIDATE CONSTRAINT CONSTRANAME;

    --刪除約束

    ALTER TABLE TABLENAME  DROP CONSTRAINT constraintname;

    DROP TABLE TABLENAEM CASCADE CONSTRAINTS;(刪除表后將所用的外鍵刪除)

    --給表增加列

    ALTER TABLE TABLENAME
    ADD COLUMN COLUTYPE DEFAULT(VALUE) NOT NULL;

    --給列增加缺省值

    ALTER TABLE TABLENAME
    MODIFY COLUMNNAME  DEFAULT(VALUE) NOT NULL;


    --給表增加外鍵
     ALTER TABLE  TABLENAME
     ADD CONSTRAINT  CONSTRAINTNAME 
     FOREIGN KEY(COLUMN) REFERENCES TABLE1NAME(COLUMN1);

    1、分析表
    analyze table mzbs.db_code ESTIMATE STATISTICS SAMPLE 20 PERCENT;


    2、表空間管理和用戶管理

    --查看表空間和數據文件

    select file_name,tablespace_name,autoextensible from dba_data_files;

    --數據表空間

    CREATE TABLESPACE USER_DATA 
        LOGGING 
        DATAFILE 'D:\ORACLE\ORADATA\ORCL\test.DBF' SIZE 50m REUSE ,
                 'c:\USERS01112.DBF' SIZE 50m REUSE  
        AUTOEXTEND 
        ON NEXT  1280K MAXSIZE  16383M EXTENT MANAGEMENT LOCAL


    --修改表空間數據文件的路徑

    ALTER TABLESPACE app_data
      RENAME
        DATAFILE '/DISK4/app_data_01.dbf'
        TO   '/DISK5/app_data_01.dbf';


    ALTER DATABASE
      RENAME FILE '/DISK1/system_01.dbf'
        TO '/DISK2/system_01.dbf';


    --臨時表空間

    CREATE TEMPORARY 
        TABLESPACE  USER_DATA_TEMP TEMPFILE 'D:\TEMP0111.DBF' 
        SIZE 50M REUSE AUTOEXTEND 
        ON NEXT  1024K MAXSIZE  16383M EXTENT MANAGEMENT LOCAL UNIFORM 
        SIZE 1024K


    --增加數據文件

    ALTER TABLESPACE  USER_DATA
      ADD DATAFILE 'c:\USERS01113.DBF' SIZE 50M;

    ALTER TABLESPACE USER_DATA
      ADD DATAFILE 'c:\USERS01114.DBF'  SIZE 50M
      AUTOEXTEND ON
    ;


    --刪除表空間

    DROP TABLESPACE USER_DATA INCLUDING CONTENTS;

     

    --修改表空間的存儲參數

    ALTER TABLESPACE tablespacename 
      MINIMUM EXTENT 2M; 


    ALTER TABLESPACE tablespacename
      DEFAULT STORAGE (
        INITIAL 2M
        NEXT 2M
        MAXEXTENTS 999 );


    --表空間聯機/脫機/只讀

    ALTER TABLESPACE tablespacename OFFLINE/ONLINE/READ ONLY;

     

    --修改數據文件大小
     ALTER DATABASE
     DATAFILE 'c:\USERS01113.DBF' RESIZE 40M;

    --創建用戶、賦予權限

    CREATE USER USER_DATA PROFILE DEFAULT IDENTIFIED BY  USER_DATA 
        DEFAULT 
        TABLESPACE USER_DATA  TEMPORARY 
        TABLESPACE USER_DATA  ACCOUNT UNLOCK;
     
    GRANT CONNECT TO USER_DATA;
    GRANT RESOURCE TO USER_DATA;

     

    3、表的管理

    --創建表

    CREAE TABLE TABLENAME
    (COLUMN1 COLUTYPE DEFAULT(VALUE) NOT NULL)
    (COLUMN2 COLUTYPE DEFAULT(VALUE) NOT NULL);


    --建表的索引存儲分配


    CREATE TABLE summit.employee(id NUMBER(7) CONSTRAINT employee_id_pk PRIMARY KEY DEFERRABLE USING INDEX  STORAGE(INITIAL 100K NEXT 100K)
    TABLESPACE indx, 
    last_name VARCHAR2(25) CONSTRAINT employee_last_name_nn NOT NULL,
    dept_id NUMBER(7))
    TABLESPACE data;

    --修改表的存儲分配

    ALTER TABLE tablename
    PCTFREE 30
    PCTUSED 50
    STORAGE(NEXT 500K
    MINEXTENTS 2
    MAXEXTENTS 100);

    ALTER TABLE tablename
    ALLOCATE EXTENT(SIZE 500K
    DATAFILE '/DISK3/DATA01.DBF');

    --把表移到另一個表空間

    ALTER TABLE TABLENAME MOVE TABLESPACE TABLESPACENAME;


    --回收空閑的空間(回收到High-water mark)
      全部回收需要TRUNCATE TABLE tablename

    ALTER TABLE tablename
    DEALLOCATE UNUSED;

    --刪除表(連同所用constraint)

    DROP TABLE tablename
    CASCADE CONSTRAINTS;


    --給表增加列

    ALTER TABLE TABLENAME
    ADD COLUMN COLUTYPE DEFAULT(VALUE) NOT NULL;


    --刪除表中的列

    ALTER TABLE tablename
    DROP COLUMN columnname;


    ALTER TABLE tablename
    DROP COLUMN columnname
    CASCADE CONSTRAINTS CHECKPOINT 1000;


    --標記列不可用

    ALTER TABLE tablename
    SET UNUSED COLUMN columnname
    CASCADE CONSTRAINTS;

    --刪除標記為不可用的列

    ALTER TABLE tablename
    DROP UNUSED COLUMNS CHECKPOINT 1000;

    --繼續刪除列選項

    ALTER TABLE tablename
    DROP COLUMNS CONTINUE CHECKPOINT 1000;

    --把表放到BUFFER_POOL中去

    ALTER TABLE tablename
      STORAGE (BUFFER_POOL RECYCLE);

    --避免動態分配EXTENT

    ALTER TABLE tablename ALLOCATE EXTENT;


    --把表放到CACHE中去

    ALTER TABLE tablename ALLOCATE CACHE/NOCACHE;


    4、索引管理


    --創建索引

    CREATE INDEX indexname ON TABLENAME(COLUMNNAME);

    CREATE INDEX indexname ON TABLENAME(COLUMNNAME) TABLESPACE TABLESPACENAME;

    --重新建立索引

    ALTER INDEX indexname REBUILD TABLESPACE  TABLESPACE;


    --索引分配參數

    ALTER INDEX indexname
    STORAGE(NEXT 400K
     MAXEXTENTS 100);


    --釋放索引空間

    ALTER INDEX indexname
    ALLOCATE EXTENT (SIZE 200K
    DATAFILE '/DISK6/indx01.dbf');

    ALTER INDEX indexname
    DEALLOCATE UNUSED;

    --重新整理索引表空間碎片

    ALTER INDEX indexname COALESCE;

    --刪除索引

    DROP INDEX indexname


    --把索引放到BUFFER_POOL中

    ALTER INDEX cust_name_idx
      REBUILD
      STORAGE (BUFFER_POOL KEEP);


    5、約束管理


    --建立主鍵

    ALTER TABLE TABLENAME
    ADD CONSTRAINT CONSTRAINTNAME PRIMARY KEY(COLUMN1,COLUMN2)


    --使約束無效

    ALTER TABLE TABLENAME ENABLE NOVALIDATE CONSTRAINT constraintname;

    ALTER TABLE TABLENAME ENABLE VALIDATE CONSTRAINT constraintname;

    --刪除約束

    ALTER TABLE tablename  DROP CONSTRAINT constraintname;

    DROP TABLE tablename CASCADE CONSTRAINTS;(刪除表后將所用的外鍵刪除)


    --給列增加缺省值

    ALTER TABLE TABLENAME
    MODIFY columnname  DEFAULT(value) NOT NULL;


    --給表增加外鍵
     ALTER TABLE  tablename
     ADD CONSTRAINT  constraintname 
     FOREIGN KEY(column) REFERENCES table1name(column1);


    6、安全策略

    --加密傳輸

    把客戶端環境變量ora_encrypt_login設為true
    把服務器端參數dblink_encypt_login設為true

    --數據庫管理員安全策略

    a、建庫后立即修改SYS/SYSTEM的口令(9.2后必須修改其口令)
    b、只有數據庫管理員才能以SYSDBA登錄系統
    c、建立不同角色的管理員,分配不同的權限

       比如:對象創建于維護
             數據庫的調整與維護
             創建用戶分配角色
             啟動關閉
             恢復備份
             
    --應用開發者的安全策略

    a、開發者的特權只能在測試開發的數據庫中賦予權限
    b、自由開發者、受控開發者
       自由開發者:create table\index\procedure\package
       受控開發者:沒有以上權限 


    7、日志文件管理

    --切換日志文件

    ALTER SYSTEM SWITCH LOGFILE;

    --增加日志文件

    ALTER DATABASE ADD LOGFILE 
    ('/DISK3/log3a.rdo',
    '/DISK4/log3b.rdo') size 1M;

    --增加日志成員

    ALTER DATABASE ADD LOGFILE MEMBER
    '/DISK4/log1b.rdo' TO GROUP 1
    '/DISK4/log2b.rdo' TO GROUP 2;

    --刪除日志文件

    ALTER DATABASE DROP LOGFILE GROUP 3;

    --刪除日志成員

    ALTER DATABASE DROP LOGFILE MEMBER '/DISK4/log2b.dbf';

    --清除日志文件內容

    ALTER DATABASE CLEAR LOGFILE '/DISK3/log2a.rdo';

    查找表以及表空間中的標的個數信息
    select owner, object_type, status, count(*) count# from all_objects where object_type='TABLE' and owner='HYQ' group by owner, object_type, status;

    posted on 2006-03-01 16:02 TrampEagle 閱讀(1432) 評論(0)  編輯  收藏 所屬分類: 技術文摘
    主站蜘蛛池模板: 青娱分类视频精品免费2| 国产一级理论免费版| 亚洲精品午夜视频| 免费人成视频在线| 一级毛片免费视频网站| 亚洲视频在线观看免费| 四虎www成人影院免费观看| 亚洲高清免费视频| 亚洲AV成人无码天堂| mm1313亚洲精品无码又大又粗| 你懂的免费在线观看| 亚洲一区二区三区成人网站| 亚洲熟女一区二区三区| 性色av免费观看| 怡红院免费全部视频在线视频| 久久精品国产99国产精品亚洲| 中文字幕中韩乱码亚洲大片 | 一级女性全黄久久生活片免费| 亚洲AV无码乱码国产麻豆穿越| 精品国产精品久久一区免费式| 在线观看免费视频网站色| 亚洲日韩国产一区二区三区在线| 久久精品国产亚洲沈樵| 国产免费人成视频在线观看| 毛片免费全部播放无码| 中国在线观看免费的www| 亚洲精品无码久久久久久| 亚洲春色在线视频| 日韩亚洲精品福利| 久久久久久99av无码免费网站 | 爱情岛论坛亚洲品质自拍视频网站 | 外国成人网在线观看免费视频| 亚洲av成人一区二区三区观看在线 | 亚洲精品无码99在线观看 | 91亚洲国产成人久久精品网站| 亚洲国产a级视频| 天天摸天天碰成人免费视频| 18禁无遮挡无码国产免费网站| 在线观看免费视频网站色| www.av在线免费观看| 亚洲国产成人AV在线播放|