Oracle日常維護腳本


1.正常停庫流程 

    ps -ef|grep LOCAL=NO|cut -c 9-15|xargs kill -9 
    shutdown immediate;

 

2.備份數據庫 

    backup database format '/home/orarch_ccmpdb1/backup2/full_%d_%s_%p_%u.%T'; 
    backup current controlfile format '/home/orarch_ccmpdb1/backup2/controlfile_%d_%s_%p_%u.%T';

 

3.建立連接 

    ln -s /dev/ccmpvg01/rccmpv01l3111 /home/db/oracle/oradata/cmpdb/rtbs_data2_05_10g 
    ln -s /dev/ccmpvg01/rccmpv01l3112 /home/db/oracle/oradata/cmpdb/rtbs_data2_06_10g

 

4.增加表空間的空間 

    alter tablespace tbs_data2 add datafile  
    '/home/db/oracle/oradata/cmpdb/rtbs_data2_05_10g' size 10200m, 
    '/home/db/oracle/oradata/cmpdb/rtbs_data2_06_10g' size 10200m;

 

5.查看主分區表和子分區表 

   col partition_keyname for a20 
    col sub_partition_keyname for a20 
    select a.*,b.COLUMN_NAME sub_partition_keyname from 
    (select t1.OWNER, 
           t1.TABLE_NAME, 
           t1.PARTITIONING_TYPE, 
           t1.SUBPARTITIONING_TYPE, 
           t1.PARTITION_COUNT, 
           t2.column_name partition_keyname 
    from dba_part_tables t1,dba_part_key_columns t2  
    where t1.owner = t2.owner 
          and t1.table_name = t2.name 
          and t1.OWNER = 'BILL'      
          and t1.TABLE_NAME = 'HA_CREDIT_CTRL' 
    ) a,dba_subpart_key_columns b 
    where a.owner = b.owner(+) 
          and a.table_name = b.name(+);

 

 

6.查看子分區信息 

    select TABLE_OWNER, 
           TABLE_NAME, 
           PARTITION_NAME, 
           SUBPARTITION_NAME, 
           SUBPARTITION_POSITION  
    from DBA_TAB_SUBPARTITIONS 
    where TABLE_OWNER = 'CASHBILL_TEST'  
          and TABLE_NAME = 'BALANCE_PAYOUT'  
    order by PARTITION_NAME,SUBPARTITION_POSITION; 
 
    select dbms_metadata.get_ddl('TABLE','ACCT_ITEM_1080','CASH_BILL') from dual;

 

 

 

 

7.段級別統計信息 

    select owner,object_name,statistic_name,value  
    from v$segment_statistics  
    where owner='SYS' and object_name = 'I_FILE2'

 

 

 

8.看最嚴重的前20個等待事件 

    set lines 200 
    set pages 200 
    col sql_text for a70 
    col name for a30 
    col parameter1 for a30 
    col parameter2 for a30 
    col parameter3 for a30 
    col value for 999999999999999999 
    col gets for 9999999999999999999 
    col wait_time for 9999999999999999 
    select * from (select event,wait_time,SECONDS_IN_WAIT from v$session_wait  
    where wait_class not in ('Idle','Network') order by SECONDS_IN_WAIT desc)  
    where rownum <= 20;

 

9.看最嚴重的等待事件 

    select event,count(*) from v$session  
    where wait_class not in ('Idle','Network')  
    group by event  
    order by 2 desc;

 

 

10.看當前連接會話信息 

    select username,program,status,count(*) from v$session  
    where username is not null group by username,program,status order by 3; 
    select prev_sql_id,count(*) from v$session  
    where program is null group by prev_sql_id order by 2

 

11.最嚴重的前10個latch 

   select * from (select addr,name,gets,misses,sleeps,SPIN_GETS,WAIT_TIME  
    from v$latch order by misses desc) where rownum <= 10 
    --latch: row cache objects 
    select distinct s.kqrstcln latch#, 
            r.cache#, 
            r.parameter name, 
            r.type, 
            r.subordinate#, 
            r.gets 
    from v$rowcache r,x$kqrst s 
    where r.cache# = s.kqrstcid 
    order by 1,4,5;

 

 

    select * from (select cache#,type,SUBORDINATE#,parameter,count, 
    USAGE,GETS,GETMISSES from v$rowcache order by GETMISSES desc)  
    where rownum <= 10; 
    select addr,latch#,child#,level#,name,gets from v$latch_children  
    where name = 'row cache objects' and gets <>0 order by gets;

 

    --latch cbc 

    --個個查詢 

 

    select * from (select addr from v$latch_children  
    where name = 'cache buffers chains' order by misses)  
    where rownum <= 10; 
    select /*+ rule */ owner,object_name from dba_objects  
    where object_id in 
    (select /*+ rule */ distinct obj from x$bh  
    where hladdr = 'C000000BC6813AB8');

 

 

12.查詢前十個cbc latch最嚴重對應的對象 

    select /*+ rule */ owner,object_name from dba_objects where object_id in  
    ( 
    select /*+ rule */ distinct obj from x$bh where hladdr in  
     (select /*+ rule */ * from (select /*+ rule */ addr  
      from v$latch_children  
      where name = 'cache buffers chains'  
      order by gets desc) where rownum <= 10) 
    );

 

 

 

13.檢查分區表的創建與否 

    select TABLE_OWNER, 
           TABLE_NAME, 
           PARTITION_NAME, 
           SUBPARTITION_NAME, 
           SUBPARTITION_POSITION  
    from DBA_TAB_SUBPARTITIONS 
    where TABLE_OWNER = 'CASHBILL_TEST'  
          and TABLE_NAME = 'BALANCE_PAYOUT'  
    order by PARTITION_NAME,SUBPARTITION_POSITION;

 

 

 

 

14.表空間自動擴展性 

   SELECT T.TABLESPACE_NAME,D.FILE_NAME,D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUS  
    FROM DBA_TABLESPACES T,DBA_DATA_FILES D  
    WHERE T. TABLESPACE_NAME =D. TABLESPACE_NAME  
    ORDER BY TABLESPACE_NAME,FILE_NAME;

 

 

15.全表掃描 ,注意修改 OBJECT_OWNER 

    select distinct t.sql_text from v$sqlarea t, v$sql_plan p 
    where t.hash_value=p.hash_value  
    and t.SQL_ID=p.SQL_ID 
    and t.PLAN_HASH_VALUE=p.PLAN_HASH_VALUE 
    and p.operation='TABLE ACCESS' 
    and p.options='FULL' 
    and p.OBJECT_OWNER ='TBMS';

 

 

16.全索引掃描, 注意修改 OBJECT_OWNER 

    select distinct t.sql_text from v$sqlarea t, v$sql_plan p 
    where t.hash_value=p.hash_value  
    and t.SQL_ID=p.SQL_ID 
    and t.PLAN_HASH_VALUE=p.PLAN_HASH_VALUE 
    and p.operation='INDEX' 
    and p.options='FULL SCAN' 
    and p.OBJECT_OWNER ='TBMS';

 

 

17.查看歸檔錯誤: 

   select dest_id,error from v$archive_dest where dest_id=1;

 

 

 

18.數據字典命中率 

    column parameter format a21 
    column pct_succ_gets format 999.9 
    column updates format 999,999,999 
    SELECT parameter 
    , sum(gets) 
    , sum(getmisses) 
    , 100*sum(gets - getmisses) / sum(gets) pct_succ_gets 
    , sum(modifications) updates 
    FROM V$ROWCACHE WHERE gets > 0 
    GROUP BY parameter;

 

 

19.查看歸檔錯誤 

    select dest_id,error from v$archive_dest where dest_id=1;

 

20.是否有行遷移 

    --收集對象的統計信息:

analyze table t compute statistics;
    select TABLE_NAME,BLOCKS,EMPTY_BLOCKS,NUM_ROWS,AVG_ROW_LEN,CHAIN_CNT  
    from user_tables where table_name='T';

 

 

21.取出全表掃描的表 

    select sql_text from v$sqltext where sql_id in  
    (select sql_id from v$sql_plan   
    where operation like '%TABLE ACCESS%'  
    and options like '%FULL%')  
    where sql_text like '%EMP%'

 

 

22.全表掃描統計項 

    select name,value from v$sysstat where name like 'table scan%';

 

 

23.哪個用戶哪個表作了全表掃描 

    select OPERATION,object_owner,OPTIONS,OBJECT_NAME from  
    v$sql_plan 
    where options='FULL' 
    and OPERATION='TABLE ACCESS' 
    and object_owner='SCOTT';

 

 

24.哪個用戶下有多少張表作了全表掃描 

    select  ss.username||'('||se.sid||') ' "User Process", 
    sum(decode(name,'table scans (short tables)',value)) "Short Scans", 
    sum(decode(name,'table scans (long tables)', value)) "Long Scans", 
    sum(decode(name,'table scan rows gotten',value)) "Rows Retreived" 
    from    v$session ss, 
    v$sesstat se, 
    v$statname sn 
    where   se.statistic# = sn.statistic# 
    and     (name  like '%table scans (short tables)%' 
    or   name  like '%table scans (long tables)%' 
    or   name  like '%table scan rows gotten%') 
    and     se.sid = ss.sid 
    and     ss.username is not null 
    group   by ss.username||'('||se.sid||') ' 
    /

 

 

25.增加全表掃描時I/O的吞吐量 

    db_file_multiblock_read_count=1~128

 

 

26.使用並行處理提高全表掃描效率: 

    select /*+ parallel (ob ,16)*/ count(*) from OB;

 

 

 

27.條帶化堆表數據: 

    alter table ob allocate extent (size 5m datafile '/u01/app/oracle/oradata/madrid/users01.dbf'); 
    alter table ob allocate extent (size 5m datafile '/u01/app/oracle/oradata/madrid/users02.dbf'); 
    alter table ob allocate extent (size 5m datafile '/u01/app/oracle/oradata/madrid/users03.dbf'); 
    alter table ob allocate extent (size 5m datafile '/u01/app/oracle/oradata/madrid/users04.dbf');

 

 

28.發生cbc latch爭用時,如可查是哪個sql語句造成的 ? 

    select v.SQL_HASH_VALUE, v.SQL_ADDRESS, v.INST_ID, v.EVENT 
    from gv$session v 
    where v.EVENT = 'cache buffer chains';

 

    select a.INST_ID, a.SQL_TEXT  from gv$sqltext a 
    where a.HASH_VALUE = '&HASH_VALUE' 
    and a.ADDRESS = '&ADDRESS' 
    ORDER BY address, hash_value, piece;

 

 

29.數據字典命中率 

    column parameter format a21 
    column pct_succ_gets format 999.9 
    column updates format 999,999,999 
    SELECT parameter 
    , sum(gets) 
    , sum(getmisses) 
    , 100*sum(gets - getmisses) / sum(gets) pct_succ_gets 
    , sum(modifications) updates 
    FROM V$ROWCACHE WHERE gets > 0 
    GROUP BY parameter;

 

 

 

30.估算 db_cache 放大或減小后對 I/o 的影響 

    COLUMN size_for_estimate FORMAT 999,999,999,999 heading 'Cache Size (MB)' 
    COLUMN buffers_for_estimate FORMAT 999,999,999 heading 'Buffers' 
    COLUMN estd_physical_read_factor FORMAT 999.90 heading 'Estd Phys|Read Factor' 
    COLUMN estd_physical_reads FORMAT 999,999,999 heading 'Estd Phys| Reads' 
    SELECT       size_for_estimate,    buffers_for_estimate,    estd_physical_read_factor, 
    estd_physical_reads 
    FROM V$DB_CACHE_ADVICE 
    WHERE name = 'DEFAULT' 
    AND block_size = (SELECT value FROM V$PARAMETER WHERE name = 'db_block_size') 
    AND advice_status = 'ON';

 

 

 

31.查看 db_buffer 的命中率 

    SELECT NAME, PHYSICAL_READS, DB_BLOCK_GETS, CONSISTENT_GETS, 
    1 - (PHYSICAL_READS / (DB_BLOCK_GETS + CONSISTENT_GETS)) "Hit Ratio" 
    FROM V$BUFFER_POOL_STATISTICS;

 

 

32.查詢收集統計信息作業,什么時候開始的,什么時候結束的 

    select  
    STATE, 
    ENABLED, 
    RUN_COUNT, 
    to_char(END_DATE,'yyyy-mm-dd hh24:mi:ss'), 
    to_char(LAST_START_DATE,'yyyy-mm-dd hh24:mi:ss'), 
    LAST_RUN_DURATION, 
    to_char(NEXT_RUN_DATE,'yyyy-mm-dd hh24:mi:ss') 
    from DBA_SCHEDULER_JOBS where JOB_NAME='GATHER_STATS_JOB';

 

 

33.收集統計信息 

    exec dbms_stats.gather_table_stats( 
    ownname=>'用戶名',  
    tabname=>'表名',   
    degree =>DBMS_STATS.DEFAULT_DEGREE,  
    cascade=>true,  
    estimate_percent=>100,  
    method_opt=>'FOR ALL INDEXED COLUMNS SIZE AUTO',  
    no_invalidate=>false); 
 
    exec dbms_stats.gather_table_stats 
    ( ownname=>'ULTRANMS',tabname=>'PM_RAW_RESSWAP',cascade=>true,DEGREE=>2);

 

 

34.查找數據庫中僵死進程 

    select pid, spid, username, terminal, program  
    from v$process 
    where addr not in (select paddr from v$session);
 
    alter system kill session 'sid,serial#' ;  
    select saddr,sid,serial#,paddr,username,status  
    from v$session where username is not null;

 

 

35.捕獲占用CPU利用率過高的SQL語句: 

    set line 240 
    set verify off 
    column sid format 999 
    column pid format 999  
    column S_# format 999 
    column username format A9 heading "ORA User" 
    column program  format a29 
    column SQL format a60 
    COLUMN OSname format a9 Heading "OS User" 
    SELECT P.pid pid,S.sid sid,P.spid spid,S.username username, 
    S.osuser osname,P.serial# S_#,P.terminal,P.program  program, 
    P.background,S.status,RTRIM(SUBSTR(a.sql_text, 1, 80))  SQL 
    FROM v$process P, v$session S,v$sqlarea A WHERE P.addr = s.paddr 
    AND S.sql_address = a.address (+)  AND P.spid LIKE '%&1%';

--查看運行時間很長的sql

 select username,sid,opname,
      round(sofar*100 / totalwork,0) || '%' as progress,
      time_remaining,sql_text
from v$session_longops , v$sql
where time_remaining <> 0
and sql_address = address
and sql_hash_value = hash_value

 

36.如何知道使用CPU多的用戶session?  

    select a.sid,spid,status,substr(a.program,1,40) prog, 
    a.terminal,osuser,value/60/100 value  
    from v$session a,v$process b,v$sesstat c  
    where c.statistic#='cpu used by this session' and  
    c.sid=a.sid and a.paddr=b.addr order by value desc;

 

 

 

37.占CPU資源多的SESSION   

    select s.sid,s.value "CPU Used"  
    from v$sesstat s,v$statname n  
    where s.statistic#=n.statistic# and n.name='CPU used by this session'  
    and s.value>0  
    order by 2 desc;

 

38.查等待事件 

    set linesize 125 
    select sid,event from v$session_wait  
    where event not like 'SQL*N%' and  
    event not like 'rdbms%' and  
    event not like 'single%';

 

 

 

39.手工查詢等待事件:     

    select sid,event ,p1,p2,p3 from v$session_wait  
    where event not like 'rdbms%' and event not like 'SQL%';

 

 

40.查詢做比較大的排序的進程? 

 SELECT b.tablespace, b.segfile#, b.segblk#, b.blocks, a.sid, a.serial#,  
 a.username, a.osuser, a.status  
 FROM v$session a,v$sort_usage b  
 WHERE a.saddr = b.session_addr  
 ORDER BY b.tablespace, b.segfile#, b.segblk#, b.blocks ;

 

 

 

41.查詢做比較大的排序的進程的SQL語句? 

 select /*+ ORDERED */ sql_text from v$sqltext a  
 where a.hash_value = (  
 select sql_hash_value from v$session b  
 where b.sid = &sid and b.serial# = &serial)  
 order by piece asc ;

 

 

42.磁盤IO: 

    col name for a50 
    select name,phyrds,phywrts,readtim,writetim 
    from v$filestat a,v$dbfile b 
    where a.file# = b.file# 
    order by readtim desc;

 

 

43.查詢在線重做日志文件切換頻率:   

    select b.recid,  
        to_char(b.first_time,'dd-mon-yy hh:mi:ss') start_time,  
        a.recid,  
        to_char(a.first_time,'dd-mon-yy hh:mi:ss') end_time,  
        round(((a.first_time - b.first_time)*24)*60,2) minutes  
    from v$log_history a,v$log_history b  
    where a.recid = b.recid+1  
    order by a.first_time asc; 
/

 

44.查看回滾段信息

 Select Segment_Name,
       Tablespace_Name,
       R.Status,
       (Initial_Extent / 1024) Initialextent,
       (Next_Extent / 1024) Nextextent,
       Max_Extents,
       V.Curext Curextent
  From Dba_Rollback_Segs r, V$rollstat v
Where R.Segment_Id = V.Usn(+)
Order By Segment_Name;

 45.如何察看回滾段競爭情況

Select * from v$undostat;

返回結果中nospaceerrcnt字段的值應該為0,如果持續出現非0,建議增加回滾段表空間大小.

46.如何獲取錯誤信息

SELECT * FROM USER_ERRORS;

 

47.34.內核參數的作用

 

shmmax含義:這個設置並不決定究竟Oracle數據庫或者操作系統使用多少物理內存,只決定了最多可以使用的內存數目。這個設置也不影響操作系統的內核資源。設置方法:0.5*物理內存例子:Set shmsys:shminfo_shmmax=10485760 
shmmin 含義:共享內存的最小大小。設置方法:一般都設置成為1。例子:Set shmsys:shminfo_shmmin=1:
shmmni 含義:系統中共享內存段的最大個數。例子:Set shmsys:shminfo_shmmni=100 
shmseg 含義:每個用戶進程可以使用的最多的共享內存段的數目。例子:Set shmsys:shminfo_shmseg=20:
semmni 含義:系統中semaphore identifierer的最大個數。設置方法:把這個變量的值設置為這個系統上的所有Oracle的實例的init.ora中的最大的那個processes的那個值加10。例子:Set semsys:seminfo_semmni=100 
semmns 含義:系統中emaphores的最大個數。設置方法:這個值可以通過以下方式計算得到:各個Oracle實例的initSID.ora里邊的processes的值的總和(除去最大的Processes參數)+最大的那個Processes×2+10×Oracle實例的個數。例子:Set semsys:seminfo_semmns=200 
semmsl: 含義:一個set中semaphore的最大個數。設置方法:設置成為10+所有Oracle實例的InitSID.ora中最大的Processes的值。例子:Set semsys:seminfo_semmsl=-200

 

48.修改sqlnet.ora,實現客戶端IP限制

如果要在網絡上做一些IP地址的限制,一般情況下我們首先想到的是用網絡層的防火牆軟件。要找網管來設置。 但是如果網管不在,或者僅僅想在數據庫層來實現IP地址的限制,DBA們只要修改Server端的一個網絡配置文件

sqlnet.ora文件就可以了。

Oracle9i以上版本,在目錄$ORACLE_HOME/network/admin 或者 %ORACLE_HOME%/network/admin 下)增加如下內容:

tcp.validnode_checking=yes

tcp.invited_nodes =(ip1,ip2,……) #允許訪問的ip

tcp.excluded_nodes=(ip1,ip2,……) #不允許訪問的ip

修改sqlnet.ora后,重新啟動listener服務,改動就可以生效了。 

1.分析表 

analyze table mzbs.db_code ESTIMATE STATISTICS SAMPLE 20 PERCENT;

--推薦使用dbms_stats包來收集統計信息 

 

 

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

--強行離線表空間(offline tablespace) 

 

    alter tablespace users offline immediate;

 

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

    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 tablenamePCTFREE 30PCTUSED 50STORAGE(NEXT 500KMINEXTENTS 2MAXEXTENTS 100); 
    ALTER TABLE tablenameALLOCATE EXTENT(SIZE 500KDATAFILE '/DISK3/DATA01.DBF');

 

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

    ALTER TABLE TABLENAME MOVE TABLESPACE TABLESPACENAME;

 

--回收空閑的空間(回收到High-water mark)   

    全部回收需要TRUNCATE TABLE tablename 

    ALTER TABLE tablenameDEALLOCATE UNUSED;

 

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

    DROP TABLE tablenameCASCADE CONSTRAINTS;

 

--給表增加列 

    ALTER TABLE TABLENAMEADD COLUMN COLUTYPE DEFAULT(VALUE) NOT NULL;

 

--刪除表中的列 

    ALTER TABLE tablenameDROP COLUMN columnname; 
    ALTER TABLE tablenameDROP COLUMN columnnameCASCADE CONSTRAINTS CHECKPOINT 1000;

 

 

--標記列不可用 

    ALTER TABLE tablenameSET UNUSED COLUMN columnnameCASCADE 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 indexnameSTORAGE(NEXT 400K MAXEXTENTS 100);

 

--釋放索引空間 

    ALTER INDEX indexnameALLOCATE EXTENT (SIZE 200KDATAFILE '/DISK6/indx01.dbf'); 
    ALTER INDEX indexnameDEALLOCATE UNUSED;

 

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

    ALTER INDEX indexname COALESCE;

 

--刪除索引 

    DROP INDEX indexname

 

--把索引放到BUFFER_POOL中 

    ALTER INDEX cust_name_idx  REBUILD  STORAGE (BUFFER_POOL KEEP);

 

5.約束管理 

--建立主鍵 

    ALTER TABLE TABLENAMEADD 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 TABLENAMEMODIFY 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 

 

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

    (1)建庫后立即修改SYS/SYSTEM的口令(9.2后必須修改其口令) 

    (2)只有數據庫管理員才能以SYSDBA登錄系統 

    (3)建立不同角色的管理員,分配不同的權限 

 

    比如:對象創建於維護,數據庫的調整與維護,創建用戶分配角色,啟動關閉,恢復備份          

 

--應用開發者的安全策略 

    (1)開發者的特權只能在測試開發的數據庫中賦予權限 

    (2)自由開發者、受控開發者    

       自由開發者: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';

轉:http://www.cndba.cn/account/article/details/117


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM