Oracle DBA 必須掌握的 查詢腳本:


 

Oracle  DBA 必須掌握的 查詢腳本:

0:啟動與關閉

                       orcle 數據庫的啟動與關閉
1:連接數據庫

 

  2:數據庫開啟狀態的實現步驟:
       2-1:啟動數據庫
          2-1-1正常啟動數據庫: SQL> startup
           
          特點:啟動數據庫,分配內存,打開實例,啟動后台進程,數據庫處於open狀態
         2-1-2:進入nomount狀態 SQL> startup nomount
                 
             特點: 打開實例,分配內存,啟動后台進程
             裝載數據庫:SQL> alter database mount;
             
             特點:
            查詢數據庫狀態:SQL> select status  from v$instance;

             特點:數據庫處於mounted 狀態
                     打開數據庫 SQL>  alter database open;
             
              特點:數據庫處於打開狀態
              查看數據庫狀態:SQL> select status  from v$instance;
              
   startup nomount ---> alter database mount -->alter database open
   數據庫進入nomount狀態            數據庫進入mount狀態                       數據庫進入open狀態
   
     
                                 |   參數文件(讀取控制文件的物理位置)
  即:數據庫打開的三個過程用到了 |   控制文件(讀取數據文件、日志文件的物理位置)
數據庫啟動過程
                                 |   數據文件、日志文件
 
3:關閉數據庫  SQL> shutdown immediate
  
       
        數據庫關閉過程:

 

   強制的關閉然后在打開數據庫         sql>startup force
    執行命令時不會進行檢查點的監控
    在重啟時要進行實例的恢復操作;


 

            
                              立即          事務            常規
  數據庫關閉類型           abort       immediate    transactional   (shutdown )normal
不允許用於一個新的連接       No           No              No             No
等待當前會話結束             No           No              No             Yes
等待當前事務的結束           No           No              Yes            Yes
執行檢查點並關閉打開的文件   No           Yes             Yes            Yes


描述:何為“執行檢查點並關閉打開的文件”的操作?《即:一致性關閉數據庫》
   即:當數據庫在執行關閉命令時,數據庫會去檢查日志文件、數據文件、控制文件的數據保持一致后才進行數據庫的相應文件的關閉操作; 該寫入磁盤的數據都寫入磁盤。

在用shutdown abort 命令進行關閉數據時,沒有執行數據庫的監測點的一致性操作;當再一次打開數據庫時,當數據庫再一次啟動時候調用了smo系統進程進行了一次最近操作的實例恢復的操作。
查看smo 后台進程
[root@localhost orcl]# ps -ef|grep ora_smo
  

 


    4:數據庫啟動操作:示例
 
      查看如何打開nomoun狀態的參數文件的操作步驟:
  1:打開環境變量  cat .bash_profile
  2:打開oracle 安裝的dbs目錄
 

當oracle數據庫的參數文件丟失,oracle數據庫不能進入nomoun狀態;
當oracle數據庫的控制文件丟失,oracle數據庫不能進入moun狀態;
當oracle數據庫的數據文件或日志文件丟失,oracle數據庫不能進入open狀態;

練習一:當丟失參數文件,orcle數據庫不能進入nomoun狀態時,參數文件如何恢復:
  一:創建丟失場景
   1:先關閉數據庫
      
  2:修改配置文件的名稱,造成配置文件丟失額場景;
      2-1:造成文件丟失的假象
   
     2-2:啟動數據庫,顯示錯誤信息的狀態
     
二:處理相對應的問題的方法
二-1:如果只是文件名被修改了,而且該文件的參數沒有被修改,則則需要把文件名
       以正確的命名修改回來即可啟動數據庫;
   操作:1:進入linux系統的dbs文件中:
          [root@localhost app]# cd oracle/product/11.2.0/db_1/dbs/
      
                2:修改文件名:
                  [root@localhost dbs]# mv pfileorcl.ora.bak    pfileorcl.ora
                
                3:啟動數據庫:SQL> startup nomount
                  
         二-2:整個文件丟失或則損壞,在沒有備份情況下怎么恢復?在有備份情況下如何恢復?

 

       練習二:丟失控制文件,oracle數據庫不能進入moun狀態,控制文件如何恢復?
         一:創建丟失場景:
          1:先關閉數據庫
      
  2:修改配置文件的名稱,造成配置文件丟失額場景;
    2-1:造成文件丟失的假象
    操作:進入系統中對應的文件位置
    
   修改文件名
   
  啟動數據庫
             
            二:處理相對應的問題的方法
            二-1:如果只是文件名被修改了,而且該文件的參數沒有被修改,則則需要把文件名
       以正確的命名修改回來即可啟動數據庫;
             操作:1:進入linux系統的dbs文件中:
          [root@localhost app]# cd /u01/app/oracle/fast_recovery_area/orcl/
       
                2:修改文件名:
                  [root@localhost dbs]# mv control02.ctl.bak  control02.ctl
                 
                3:啟動數據庫:SQL> startup nomount
                   
     二-2:整個控制文件丟失或則損壞,在沒有備份情況下怎么恢復?在有備份情況下如何恢復?


          練習場景三:數據文件(日志文件)丟失,oracle數據庫不能進入open狀態,
                  數據文件(日志文件)如何恢復?
            三-1:如果只是文件名被修改了,而且該文件的參數沒有被修改,則則需要把文件                   名 以正確的命名修改回來即可啟動數據庫;
            操作:1:進入linux系統的/u01/app/oracle/oradata/orcl/文件中,並修改文件名稱
                     
                 2:啟動數據庫后,數據庫將不會進入open狀態,並提示oracle的數據文件丟失
                     
         二-1:如果只是文件名被修改了,而且該文件的參數沒有被修改,則則需要把文件名
        以正確的命名修改回來即可啟動數據庫;
            操作:1:進入linux系統的/u01/app/oracle/oradata/orcl/文件中,並修改文件名稱
                
                2:重新啟動數據庫;
                
         同理,日志文件也是這樣練習修改的;
二-2:整個數據文件或日志文件丟失或則損壞,在沒有備份情況下怎么恢復?
      在有備份情況下如何恢復?

1:通過v$parameter數據字段來查詢oracle標准數據塊的大小

  1 ----通過 v$parameter數據字典來查詢oracle標准數據塊的大小。
  2 SYS@orcl> startup
  3 ORACLE instance started.
  4 
  5 Total System Global Area 1221992448 bytes
  6 Fixed Size                  1344596 bytes
  7 Variable Size             771754924 bytes
  8 Database Buffers          436207616 bytes
  9 Redo Buffers               12685312 bytes
 10 Database mounted.
 11 Database opened.
 12 SYS@orcl> col name format a30;
 13 SYS@orcl> col value format a20;
 14 SYS@orcl> select name,value from v$parameter where name='db_block_size';
 15 
 16 NAME                           VALUE
 17 ------------------------------ --------------------
 18 db_block_size                  8192
 19 
 20 SYS@orcl> show parameter db_block
 21 
 22 NAME                                 TYPE        VALUE
 23 ------------------------------------ ----------- ------------------------------
 24 db_block_buffers                     integer     0
 25 db_block_checking                    string      FALSE
 26 db_block_checksum                    string      TYPICAL
 27 db_block_size                        integer     8192

 

2:通過 dict 查看數據庫中數據字典的信息

  1 SYS@orcl> col table_name for a30;
  2 SYS@orcl> col comments for a30;
  3 SYS@orcl> select * from dict;
  4 
  5 TABLE_NAME                     COMMENTS
  6 ------------------------------ ------------------------------
  7 DBA_CONS_COLUMNS               Information about accessible c
  8                                olumns in constraint definitio
  9                                ns
 10 
 11 DBA_LOG_GROUP_COLUMNS          Information about columns in l
 12                                og group definitions
 13 
 14 DBA_LOBS                       Description of LOBs contained
 15                                in all tables
 16 
 17 DBA_CATALOG                    All database Tables, Views, Sy

 

3 : 通過 v$fixed_view_definition 查看數據庫中內部系統表的信息

  1 SYS@orcl> col view_name format a15;
  2 SYS@orcl> col view_definition format a30000;
  3 SYS@orcl>  select * from v$fixed_view_definition where rownum<=10;
  4 
  5 VIEW_NAME              VIEW_DEFINITION
  6 ----------------------------------------------------------------------------------------------
  7 GV$WAITSTAT             select inst_id,decode(indx,1,'data block',2,'sort block',3,'save undo block', 4,
  8 'segment header',5,'save undo header',6,'free list',7,'extent map', 8,'1st level
  9  bmb',9,'2nd level bmb',10,'3rd level bmb', 11,'bitmap block',12,'bitmap index b
 10 lock',13,'file header block',14,'unused', 15,'system undo header',16,'system und
 11 o block', 17,'undo header',18,'undo block'), count,time from x$kcbwait where ind
 12 x!=0

 

4:通過查詢 dba_data_files  數據來了解Oracle系統的數據文件信息

  1 [oracle@localhost ~]$ sqlplus / as sysdba;
  2 
  3 SQL*Plus: Release 11.2.0.3.0 Production on Thu Dec 8 23:27:12 2016
  4 
  5 Copyright (c) 1982, 2011, Oracle.  All rights reserved.
  6 
  7 
  8 Connected to:
  9 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
 10 With the Partitioning, OLAP, Data Mining and Real Application Testing options
 11 
 12 SYS@orcl> col file_name format a50;
 13 SYS@orcl> set linesize3000;
 14 SYS@orcl> select
file_name,tablespace_name
from
dba_data_files
where
rownum<=10;
 15 
 16 FILE_NAME                                          TABLESPACE_NAME
 17 -------------------------------------------------- ------------------------------
 18 /u01/app/oracle/oradata/orcl/users01.dbf           USERS
 19 /u01/app/oracle/oradata/orcl/undotbs01.dbf         UNDOTBS1
 20 /u01/app/oracle/oradata/orcl/sysaux01.dbf          SYSAUX
 21 /u01/app/oracle/oradata/orcl/system01.dbf          SYSTEM
 22 /u01/app/oracle/oradata/orcl/example01.dbf         EXAMPLE
 23 
 24 SYS@orcl>

5:查看 臨時文件信息:  dba_temp_files 、v$tempfile;

  1 SYS@orcl> col file_name format a50;
  2 SYS@orcl> col tablespace_name format a20;
  3 SYS@orcl> select file_name,tablespace_name from dba_temp_files;
  4 
  5 FILE_NAME                                          TABLESPACE_NAME
  6 -------------------------------------------------- --------------------
  7 /u01/app/oracle/oradata/orcl/temp01.dbf            TEMP
  8 
  9 SYS@orcl> 4:
View Code
  1 
  2 SYS@orcl> select * from  v$tempfile;
  3 
  4      FILE# CREATION_CHANGE# CREATION_        TS#     RFILE# STATUS  ENABLED         BYTES     BLOCKS CREATE_BYTES BLOCK_SIZE NAME
  5 ---------- ---------------- --------- ---------- ---------- ------- ---------- ---------- ---------- ------------ ---------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  6          1           788143 30-NOV-16          3          1 ONLINE  READ WRITE   30408704       3712     20971520       8192 /u01/app/oracle/oradata/orcl/temp01.dbf
  7 
  8 SYS@orcl>
View Code

6:獲取控制文件信息: v$controlfile 數據字典

  1 SYS@orcl> col name fromat a60;
  2 SYS@orcl> col name format a60;
  3 SYS@orcl> col status format a20;
  4 SYS@orcl> col block_size format a60;
  5 SYS@orcl> col is_recoveris_recover format a60 ;
  6 SYS@orcl> col block_size format a150 ;
  7 SYS@orcl> select * from v$controlfile;
  8 
  9 STATUS               NAME                                                         IS_ BLOCK_SIZE FILE_SIZE_BLKS
 10 -------------------- ------------------------------------------------------------ --- ---------- --------------
 11                      /u01/app/oracle/oradata/orcl/control01.ctl                   NO  ##########            594
 12                      /u01/app/oracle/fast_recovery_area/orcl/control02.ctl        NO  ##########            594
View Code

7:查看日志文件信息: v$logfile;

  1 SYS@orcl> col member for a50;
  2 SYS@orcl> select * from v$logfile;
  3 
  4     GROUP# STATUS               TYPE    MEMBER                                             IS_
  5 ---------- -------------------- ------- -------------------------------------------------- ---
  6          3                      ONLINE  /u01/app/oracle/oradata/orcl/redo03.log            NO
  7          2                      ONLINE  /u01/app/oracle/oradata/orcl/redo02.log            NO
  8          1                      ONLINE  /u01/app/oracle/oradata/orcl/redo01.log            NO
  9 
 10 SYS@orcl>
 11 
View Code

8: 查看oacle 系統是否采用歸檔模式: v$database

  1 
  2 SYS@orcl> col name format a30;
  3 SYS@orcl> select dbid,name,log_mode from v$database;
  4 
  5       DBID NAME                           LOG_MODE
  6 ---------- ------------------------------ ------------
  7 1457025880 ORCL                           ARCHIVELOG
View Code

9:查詢歸檔日志文件的所在路勁信息: show parameter log_archive_desc

  1 
  2 SYS@orcl> set pagesize 30;
  3 SYS@orcl> show parameter log_archive_dest;
  4 
  5 NAME                                 TYPE        VALUE
  6 ------------------------------------ ----------- ------------------------------
  7 log_archive_dest                     string
  8 log_archive_dest_1                   string
  9 log_archive_dest_10                  string
 10 log_archive_dest_11                  string
 11 log_archive_dest_12                  string
 12 log_archive_dest_13                  string
 13 log_archive_dest_14                  string
 14 log_archive_dest_15                  string
 15 log_archive_dest_16                  string
 16 log_archive_dest_17                  string
 17 log_archive_dest_18                  string
 18 log_archive_dest_19                  string
 19 log_archive_dest_2                   string
 20 log_archive_dest_20                  string
 21 log_archive_dest_21                  string
 22 log_archive_dest_22                  string
 23 log_archive_dest_23                  string
 24 log_archive_dest_24                  string
 25 log_archive_dest_25                  string
 26 log_archive_dest_26                  string
 27 log_archive_dest_27                  string
 28 log_archive_dest_28                  string
 29 log_archive_dest_29                  string
 30 log_archive_dest_3                   string
 31 log_archive_dest_30                  string
 32 log_archive_dest_31                  string
 33 log_archive_dest_4                   string
 34 
 35 NAME                                 TYPE        VALUE
 36 ------------------------------------ ----------- ------------------------------
 37 log_archive_dest_5                   string
 38 log_archive_dest_6                   string
 39 log_archive_dest_7                   string
 40 log_archive_dest_8                   string
 41 log_archive_dest_9                   string
 42 log_archive_dest_state_1             string      enable
 43 log_archive_dest_state_10            string      enable
 44 log_archive_dest_state_11            string      enable
 45 log_archive_dest_state_12            string      enable
 46 log_archive_dest_state_13            string      enable
 47 log_archive_dest_state_14            string      enable
 48 log_archive_dest_state_15            string      enable
 49 log_archive_dest_state_16            string      enable
 50 log_archive_dest_state_17            string      enable
 51 log_archive_dest_state_18            string      enable
 52 log_archive_dest_state_19            string      enable
 53 log_archive_dest_state_2             string      enable
 54 log_archive_dest_state_20            string      enable
 55 log_archive_dest_state_21            string      enable
 56 log_archive_dest_state_22            string      enable
 57 log_archive_dest_state_23            string      enable
 58 log_archive_dest_state_24            string      enable
 59 log_archive_dest_state_25            string      enable
 60 log_archive_dest_state_26            string      enable
 61 log_archive_dest_state_27            string      enable
 62 log_archive_dest_state_28            string      enable
 63 log_archive_dest_state_29            string      enable
 64 
 65 NAME                                 TYPE        VALUE
 66 ------------------------------------ ----------- ------------------------------
 67 log_archive_dest_state_3             string      enable
 68 log_archive_dest_state_30            string      enable
 69 log_archive_dest_state_31            string      enable
 70 log_archive_dest_state_4             string      enable
 71 log_archive_dest_state_5             string      enable
 72 log_archive_dest_state_6             string      enable
 73 log_archive_dest_state_7             string      enable
 74 log_archive_dest_state_8             string      enable
 75 log_archive_dest_state_9             string      enable
 76 SYS@orcl>
View Code

10:查詢視圖v$parameter 進行確定參數的默認值是否修改過

  1 SYS@orcl> col name for a30;
  2 SYS@orcl> col value for a30;
  3 SYS@orcl> select name ,value,ismodified from v$parameter where rownum <=20;
  4 
  5 NAME                           VALUE                          ISMODIFIED
  6 ------------------------------ ------------------------------ ----------
  7 lock_name_space                                               FALSE
  8 processes                      150                            FALSE
  9 sessions                       248                            FALSE
 10 timed_statistics               TRUE                           FALSE
 11 timed_os_statistics            0                              FALSE
 12 resource_limit                 FALSE                          FALSE
 13 license_max_sessions           0                              FALSE
 14 license_sessions_warning       0                              FALSE
 15 cpu_count                      4                              FALSE
 16 instance_groups                                               FALSE
 17 event                                                         FALSE
 18 sga_max_size                   1224736768                     FALSE
 19 use_large_pages                TRUE                           FALSE
 20 pre_page_sga                   FALSE                          FALSE
 21 shared_memory_address          0                              FALSE
 22 hi_shared_memory_address       0                              FALSE
 23 use_indirect_data_buffers      FALSE                          FALSE
 24 lock_sga                       FALSE                          FALSE
 25 processor_group_name                                          FALSE
 26 shared_pool_size               0                              FALSE
 27 
 28 20 rows selected.
 29 
 30 SYS@orcl>
View Code
  1 SYS@orcl> select name ,value,ismodified from v$parameter where  ismodified = 'true' ;
  2 
  3 no rows selected
  4 
  5 SYS@orcl>
View Code

 

11:修改系統參數:

  1 --查看Cursor相關參數
  2 SYS@orcl> show parameter cursor;
  3 
  4 NAME                                 TYPE        VALUE
  5 ------------------------------------ ----------- ------------------------------
  6 cursor_bind_capture_destination      string      memory+disk
  7 cursor_sharing                       string      EXACT
  8 cursor_space_for_time                boolean     FALSE
  9 open_cursors                         integer     300
 10 session_cached_cursors               integer     50
 11 
 12 ---修改相關參數 
 13 SYS@orcl> alter system set open_cursors=350 scope=both;
 14 
 15 System altered.
 16 
 17 SYS@orcl> alter system set session_cached_cursors=100 scope=spfile;
 18 
 19 System altered.
 20 
 21 SYS@orcl> alter system set cursor_space_for_time=true scope=spfile;
 22 
 23 System altered.
 24 /*
 25 scope 參數值有三個選項。
 26 scope=memory: 只改變當前實例運行,亦即初始化參數改變了只對當前實例有效,當實例重啟之后,初始化參數值還原。
 27 scope=spfile:只改變spfile的設置。亦即改變初始化參數文件內容。實例重啟后參數生效。
 28 scope=both:既改變實例也改變spfile。需要注意的是,如果修改靜態參數,必須指定SPFILE參數(scope=spfile),否則會報錯。
 29 */
View Code

12:創建 一個密碼文件 其sys 口令為:oracle

  1 [oracle@localhost dbs]$ ls
  2 hc_orcl.dat  init.ora  initPROD1.ora  lkORCL  orapworcl  spfileorcl.ora
  3 [oracle@localhost dbs]$ pwd
  4 /u01/app/oracle/product/11.2.0/db_1/dbs
  5 [oracle@localhost dbs]$ orapwd file=dbsorapwPROD1 entries=30
  6 
  7 Enter password for SYS:  ---oracle
  8 [oracle@localhost dbs]$
  9 
View Code

13:查詢 警告文件位置

  1 SYS@orcl> show parameter backg
  2 
  3 NAME                                 TYPE        VALUE
  4 ------------------------------------ ----------- ------------------------------
  5 background_core_dump                 string      partial
  6 background_dump_dest                 string      /u01/app/oracle/diag/rdbms/orc
  7                                                  l/orcl/trace
View Code

14:查看 跟蹤文件的位置:

  1 SYS@orcl> show parameter user_dump
  2 
  3 NAME                                 TYPE        VALUE
  4 ------------------------------------ ----------- ------------------------------
  5 user_dump_dest                       string      /u01/app/oracle/diag/rdbms/orc
  6                                                  l/orcl/trace
  7 SYS@orcl>
  8 
View Code

15:查看 並修改共享池大小

  1 SYS@orcl> show parameter shared_pool
  2 
  3 NAME                                 TYPE        VALUE
  4 ------------------------------------ ----------- ------------------------------
  5 shared_pool_reserved_size            big integer 10905190
  6 shared_pool_size                     big integer 0
  7 SYS@orcl> alter system set shared_pool_size=30m;
  8 
  9 System altered.
 10 
 11 SYS@orcl> show parameter shred_pool
 12 SYS@orcl> show parameter shared_pool
 13 
 14 NAME                                 TYPE        VALUE
 15 ------------------------------------ ----------- ------------------------------
 16 shared_pool_reserved_size            big integer 10905190
 17 shared_pool_size                     big integer 32M
 18 SYS@orcl>
 19 SYS@orcl>
View Code

16:查看並修改大池的大小;

  1 SYS@orcl> show parameter large_pool
  2 
  3 NAME                                 TYPE        VALUE
  4 ------------------------------------ ----------- ------------------------------
  5 large_pool_size                      big integer 0
  6 SYS@orcl> alter system set large_pool_size=16m;
  7 
  8 System altered.
  9 
 10 SYS@orcl> show parameter large_pool
 11 
 12 NAME                                 TYPE        VALUE
 13 ------------------------------------ ----------- ------------------------------
 14 large_pool_size                      big integer 16M
 15 SYS@orcl>
View Code

17:查看Java 池信息

  1 SYS@orcl> show parameter java_pool
  2 
  3 NAME                                 TYPE        VALUE
  4 ------------------------------------ ----------- ------------------------------
  5 java_pool_size                       big integer 0
  6 SYS@orcl> alter system set java_pool_size=10m;
  7 
  8 System altered.
  9 
 10 SYS@orcl> show parameter java_
 11 
 12 NAME                                 TYPE        VALUE
 13 ------------------------------------ ----------- ------------------------------
 14 java_jit_enabled                     boolean     TRUE
 15 java_max_sessionspace_size           integer     0
 16 java_pool_size                       big integer 16M
 17 java_soft_sessionspace_limit         integer     0
 18 SYS@orcl>
View Code

18:顯示當前用戶進程PGA 信息:

  1 SYS@orcl> show parameter pga;
  2 
  3 NAME                                 TYPE        VALUE
  4 ------------------------------------ ----------- ------------------------------
  5 pga_aggregate_target                 big integer 0
  6 SYS@orcl>
View Code

19:查看當前實例數據庫進程

  1 SYS@orcl> set pagesize 50;
  2 SYS@orcl> select name,description from v$bgprocess;
  3 

`20: 所有常用字典表

  1 -----基本數據字典及其說明
  2 select  * from dba_tablespaces;---關於表空間的信息
  3 select  * from dba_ts_quotas ;---所有用戶表空間的限額
  4 select  * from dba_free_space;--所有表空間中自由分區
  5 select * from  dba_segments;--描述數據庫中所有段的儲存空間;
  6 select * from  dba_extents;--數據庫中所有分區的信息
  7 select  * from  dba_tables;---數據庫中所有數據表的描述
  8 select * from  dba_tab_columns;---所有表、視圖 及簇的列
  9 select * from dba_views ;--數據庫中所有的視圖信息;
 10 select * from synonyms;--關於同義詞的信息查詢;
 11 select * from dba_sequences;--所有用戶序列號信息
 12 select * from dba_constraints;--所有用戶表的約束信息;
 13 select *  from dba_indexes;--關於數據庫索引的描述;
 14 select * from dba_ind_columns;--在所有表及簇上壓縮索引的列
 15 select * from dba_triggers;--所有用戶的觸發器信息 
 16 select  * from dba_source;--所有用戶儲存過程的信息;
 17 select * from dba_data_files;--查詢關於數據庫文件的信息;
 18 select  * from dba_tab_privs;--查詢關於對象授權的信息
 19 select  * from  dba_objects;--數據庫中所有的對象;
 20 select * from  dba_users;--關於數據庫中所有用戶的信息;
 21 
 22 
 23 ------------常用動態性能視圖
 24 select * from v$database ;---描述關於數據庫的相關信息
 25 select  * from v$datafile;--數據庫使用的數據文件信息
 26 select * from v$log;--從控制文件中提取有關重做日志組的信息
 27 select * from v$logfile;--有關實例重置日志組文件名及其位置的信息
 28 select * from v$archived_log;--記錄歸檔日志文件的基本信息
 29 select * from v$archive_dest;--記錄歸檔日志文件的路徑信息
 30 select * from v$controlfile ;--描述控制文件的相關信息
 31 select * from v$instance ; ---記錄實例的基本信息
 32 select * from v$system_parameter;--顯示實例當前有效的參數信息
 33 select * from v$sga;--顯示實例的SGA區的大小
 34 select * from v$sgastat;--統計SGA使用情況的信息
 35 select * from v$parameter ;-- 記錄初始化參數文件中所有項的值
 36 select * from v$lock ;--通過訪問數據庫會話,設置對象鎖的所有信息
 37 select * from v$session;--有關會話的信息
 38 select * from v$sqltext;--記錄SQL語句的信息
 39 select * from v$sql;--記錄SQL語句的詳細信息
 40 select * from  v$bgprocess;--顯示后台進程信息;
 41 select * from v$process;--當前進程的信息
 42 
 43 

21:如何查詢oracle數據庫中的各種角色

  1   --1. 查詢oracle中所有用戶信息
  2   select * from dba_users;
  3   --2. 只查詢用戶和密碼
  4   select username,password from dba_users;
  5   --3. 查詢當前用戶信息
  6   select * from dba_ustats;
  7   --4. 查詢用戶可以訪問的視圖文本
  8   select * from dba_varrays;
  9   ---5. 查詢數據庫中所有視圖的文本
 10   select * from dba_views;
 11   select distinct  tablespace_name from  SYS.DBA_FREE_SPACE  where tablespace_name like '%RB%';
 12 
 13   select * from   dba_objects where  object_name='JDE900_F0005';
 14 
 15   select  * from rbods.jde900_f0005;
 16   select * from  rbodm.dim_company;
 17 
 18     ---查看當前用戶的缺省表空間
 19     select username,default_tablespace from user_users
 20     ---查看當前用戶的角色
 21     select * from user_role_privs
 22     ---查看當前用戶的系統權限和表級權限
 23     select * from user_sys_privs
 24     select * from user_tab_privs
 25     ----查看用戶下所有的表
 26     select * from user_tables
 27     ---顯示用戶信息(所屬表空間)
 28     select default_tablespace,temporary_tablespace from dba_users
 29     --顯示當前會話所具有的權限
 30     select * from session_privs
 31    --- 顯示指定用戶所具有的系統權限
 32     select * from dba_sys_privs
 33    --- 顯示特權用戶
 34     select * from v$pwfile_users
 35    --- 查看名稱包含log字符的表
 36     select object_name,object_id from user_objects where instr(object_name,'log')>0
 37    --- 查看某表的創建時間
 38     select object_name,created from user_objects where object_name='ZW_YINGYEZ'
 39    --- 查看某表的大小
 40     select sum(bytes)/(1024*1024) tablesize from user_segments
 41     where segment_name='ZW_YINGYEZ'
 42    --- 查看放在ORACLE的內存區里的表
 43     select table_name,cache from user_tables where instr(cache,'Y')>0
 44    --- 查看索引個數和類別
 45     select index_name,index_type,table_name from user_indexes order by table_name
 46    --- 查看索引被索引的字段
 47     select * from user_ind_columns where table_name='CB_CHAOBIAOSJ201004'
 48    --- 查看索引的大小
 49     select sum(bytes)/(1024*1024) as indexsize from user_segments
 50     where segment_name=upper('AS_MENUINFO')
 51    --- 查看視圖信息
 52     select * from user_views
 53    --- 查看同義詞的名稱
 54     select * from user_synonyms
 55    -- 查看函數和過程的狀態
 56     select object_name,status from user_objects where object_type='FUNCTION'
 57     select object_name,status from user_objects where object_type='PROCEDURE'
 58    --- 查看函數和過程的源代碼
 59     select text from all_source where owner=user and name='SF_SPLIT_STRING'
 60    --- 查看表字段
 61     select cname from col where tname='ZW_YINGYEZ'
 62     select column_name from user_tab_columns where table_name='ZW_YINGYEZ'
 63 
 64   ---查看oracle版本命令:
 65       select * from v$version

22:oracle 增加控制文件的方法:

 

   1: 查看參數文件存放位置,並關閉數據庫實例 orcl:

  1 [oracle@localhost orcl]$ sqlplus / as sysdba;
  2 
  3 SQL*Plus: Release 11.2.0.3.0 Production on Tue Jan 9 23:07:02 2018
  4 
  5 Copyright (c) 1982, 2011, Oracle.  All rights reserved.
  6 
  7 
  8 Connected to:
  9 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
 10 With the Partitioning, OLAP, Data Mining and Real Application Testing options
 11 
 12 SYS@orcl> show parameter control_files;
 13 
 14 NAME                                 TYPE        VALUE
 15 ------------------------------------ ----------- ------------------------------
 16 control_files                        string      /u01/app/oracle/oradata/orcl/c
 17                                                  ontrol01.ctl, /u01/app/oracle/
 18                                                  fast_recovery_area/orcl/contro
 19                                                  l02.ctl
 20 
 21 
 22 SYS@orcl> select name from v$controlfile;
 23 
 24 NAME
 25 --------------------------------------------------------------------------------
 26 /u01/app/oracle/oradata/orcl/control01.ctl
 27 /u01/app/oracle/fast_recovery_area/orcl/control02.ctl
 28 
 29 SYS@orcl> shutdown immediate;
 30 Database closed.
 31 Database dismounted.
 32 ORACLE instance shut down.
 33 
 34 

 

2: 退出sqlplus, 復制文件。

 1 SYS@orcl> quit
 2 Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
 3 With the Partitioning, OLAP, Data Mining and Real Application Testing options
 4 [oracle@localhost ~]$ cd  /u01/app/oracle/fast_recovery_area/orcl
 5 [oracle@localhost orcl]$ pwd
 6 /u01/app/oracle/fast_recovery_area/orcl
 7 [oracle@localhost orcl]$ ls
 8 control02.ctl
 9 [oracle@localhost orcl]$ cp control02.ctl control03.ctl
 10 [oracle@localhost orcl]$ ls
 11 control02.ctl  control03.ctl

3:登錄進入 sqplus  ,啟動數據庫實例進入 nomount狀態,並修改控制文件參數

 

  1 [oracle@localhost ~]$ sqlplus / as sysdba;
  2 
  3 SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 10 00:14:01 2018
  4 
  5 Copyright (c) 1982, 2011, Oracle.  All rights reserved.
  6 
  7 
  8 Connected to:
  9 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
 10 With the Partitioning, OLAP, Data Mining and Real Application Testing options
 11 
 12 SYS@orcl> startup nomount;
 13 ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
 14 ORACLE instance started.
 15 
 16 Total System Global Area 1221992448 bytes
 17 Fixed Size                  1344596 bytes
 18 Variable Size             771754924 bytes
 19 Database Buffers          436207616 bytes
 20 Redo Buffers               12685312 bytes
 21 SYS@orcl> alter system set control_files='/u01/app/oracle/oradata/orcl/control01.ctl', '/u01/app/oracle/fast_recovery_area/orcl/control02.ctl', '/u01/app/oracle/fast_recovery_area/orcl/control03.ctl' scope=spfile;
 22 
 23 System altered.
 24 
 25 SYS@orcl> shutdown immediate;
 26 ORA-01507: database not mounted
 27 
 28 
 29 ORACLE instance shut down.
 30 SYS@orcl> startup
 31 ORACLE instance started.
 32 
 33 Total System Global Area 1221992448 bytes
 34 Fixed Size                  1344596 bytes
 35 Variable Size             771754924 bytes
 36 Database Buffers          436207616 bytes
 37 Redo Buffers               12685312 bytes
 38 Database mounted.
 39 Database opened.
 40 SYS@orcl> create pfile from spfile;
 41 
 42 File created.
 43 
 44 SYS@orcl> select name from v$controlfile;
 45 
 46 NAME
 47 --------------------------------------------------------------------------------
 48 /u01/app/oracle/oradata/orcl/control01.ctl
 49 /u01/app/oracle/fast_recovery_area/orcl/control02.ctl
 50 /u01/app/oracle/fast_recovery_area/orcl/control03.ctl
 51 
 52 SYS@orcl>
  1 SYS@orcl> shutdown immediate;
  2 Database closed.
  3 Database dismounted.
  4 ORACLE instance shut down.
  5 SYS@orcl> startup
  6 ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
  7 ORACLE instance started.
  8 
  9 Total System Global Area 1221992448 bytes
 10 Fixed Size                  1344596 bytes
 11 Variable Size             771754924 bytes
 12 Database Buffers          436207616 bytes
 13 Redo Buffers               12685312 bytes
 14 Database mounted.
 15 Database opened.
 16 SYS@orcl>

 

23:Oracle 查看表空間的大小及使用情況sql語句

注:本段內容來自: 《  Oracle 查看表空間的大小及使用情況sql語句  》

  1 --1、查看表空間的名稱及大小 
  2 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
  3 FROM dba_tablespaces t, dba_data_files d
  4 WHERE t.tablespace_name = d.tablespace_name
  5 GROUP BY t.tablespace_name;
  6 --2、查看表空間物理文件的名稱及大小 
  7 SELECT tablespace_name,
  8 file_id,
  9 file_name,
 10 round(bytes / (1024 * 1024), 0) total_space
 11 FROM dba_data_files
 12 ORDER BY tablespace_name;
 13 --3、查看回滾段名稱及大小 
 14 SELECT segment_name,
 15 tablespace_name,
 16 r.status,
 17 (initial_extent / 1024) initialextent,
 18 (next_extent / 1024) nextextent,
 19 max_extents,
 20 v.curext curextent
 21 FROM dba_rollback_segs r, v$rollstat v
 22 WHERE r.segment_id = v.usn(+)
 23 ORDER BY segment_name;
 24 --4、查看控制文件 
 25 SELECT NAME FROM v$controlfile;
 26 --5、查看日志文件 
 27 SELECT MEMBER FROM v$logfile;
 28 --6、查看表空間的使用情況 
 29 SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name
 30 FROM dba_free_space
 31 GROUP BY tablespace_name;
 32 SELECT a.tablespace_name,
 33 a.bytes total,
 34 b.bytes used,
 35 c.bytes free,
 36 (b.bytes * 100) / a.bytes "% USED ",
 37 (c.bytes * 100) / a.bytes "% FREE "
 38 FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c
 39 WHERE a.tablespace_name = b.tablespace_name
 40 AND a.tablespace_name = c.tablespace_name;
 41 --7、查看數據庫庫對象 
 42 SELECT owner, object_type, status, COUNT(*) count#
 43 FROM all_objects
 44 GROUP BY owner, object_type, status;
 45 --8、查看數據庫的版本  
 46 SELECT version
 47 FROM product_component_version
 48 WHERE substr(product, 1, 6) = 'Oracle';
 49 --9、查看數據庫的創建日期和歸檔方式 
 50 SELECT created, log_mode, log_mode FROM v$database;
 51 --1G=1024MB 
 52 --1M=1024KB 
 53 --1K=1024Bytes 
 54 --1M=11048576Bytes 
 55 --1G=1024*11048576Bytes=11313741824Bytes 
 56 SELECT a.tablespace_name "表空間名",
 57 total "表空間大小",
 58 free "表空間剩余大小",
 59 (total - free) "表空間使用大小",
 60 total / (1024 * 1024 * 1024) "表空間大小(G)",
 61 free / (1024 * 1024 * 1024) "表空間剩余大小(G)",
 62 (total - free) / (1024 * 1024 * 1024) "表空間使用大小(G)",
 63 round((total - free) / total, 4) * 100 "使用率 %"
 64 FROM (SELECT tablespace_name, SUM(bytes) free
 65 FROM dba_free_space
 66 GROUP BY tablespace_name) a,
 67 (SELECT tablespace_name, SUM(bytes) total
 68 FROM dba_data_files
 69 GROUP BY tablespace_name) b
 70 WHERE a.tablespace_name = b.tablespace_name
 71 
 72 

查看表空間使用情況:

  1 --查看表空間使用情況: 
  2   SELECT tbs 表空間名,
  3          sum(totalM) 總共大小M,
  4          sum(usedM) 已使用空間M,
  5          sum(remainedM) 剩余空間M,
  6          sum(usedM) / sum(totalM) * 100 已使用百分比,
  7          sum(remainedM) / sum(totalM) * 100 剩余百分比
  8     FROM (SELECT b.file_id ID,
  9                  b.tablespace_name tbs,
 10                  b.file_name name,
 11                  b.bytes / 1024 / 1024 totalM,
 12                  (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 usedM,
 13                  sum(nvl(a.bytes, 0) / 1024 / 1024) remainedM,
 14                  sum(nvl(a.bytes, 0) / (b.bytes) * 100),
 15                  (100 - (sum(nvl(a.bytes, 0)) / (b.bytes) * 100))
 16             FROM dba_free_space a, dba_data_files b
 17            WHERE a.file_id = b.file_id
 18            GROUP BY b.tablespace_name, b.file_name, b.file_id, b.bytes
 19            ORDER BY b.tablespace_name)
 20    GROUP BY tbs
 21 
  1 select b.tablespace_name "表空間",
  2        b.bytes / 1024 / 1024 "大小M",
  3        (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 "已使用M",
  4        substr((b.bytes - sum(nvl(a.bytes, 0))) / (b.bytes) * 100, 1, 5) "利用率"
  5   from dba_free_space a, dba_data_files b
  6  where a.file_id = b.file_id
  7    --and b.tablespace_name = 'SYSTEM'
  8  group by b.tablespace_name, b.file_name, b.bytes
  9  order by b.tablespace_name;

 

oracle 表空間不足解決辦法大全

  1 
  2 -- 【解決辦法-原因一】
  3 --只要將表空間設置為足夠大,並設置為自增長即可。
  4 --1、擴展表空間 
  5  alterdatabase datafile 'D:\ORACLE\PRODUCT\ORADATA\TEST\USERS01.DBF' resize 50m;
  6  -- 注:50m,是表空間大小,可以根據實際需要加大,但最大不得超過32G
  7 --2、自動增長 
  8  alter database datafile 'D:\ORACLE\PRODUCT\ORADATA\TEST\USERS01.DBF' autoextend onnext 50m maxsize 500m;
  9 --【解決辦法-原因二】
 10 --因為表空間中的數據文件已經足夠大(達到32G),所以,這時僅僅增加表空間大小是不行的。 這個時候,我們可以增加該表空間的數據文件,這樣表空間的大小即變為64G了。
 11 ALTER TABLESPACE aaa ADD DATAFILE 'E:\APP\ORACLE11GR2\ORADATA\ORCL\aaa_DATA02.DBF' SIZE 32767M;

 

查看system和sysaux表空間是否是自動擴展的。

  1  SQL>select tablespace_name,AUTOEXTENSIBLE,INCREMENT_BY from dba_data_files;
  2 
  3  -- 如果為自動擴展那么AUTOEXTENSIBLE字段的值應為 YES,是否為NO;INCREMENT_BY 這個為每次自動擴展的空間大小。
  4 

image

開啟或者關閉 :表空間 是否 自動擴展

  1 ---開啟自動擴展功能語法:
  2 alter database datafile '對應的數據文件路徑信息' autoextend on;
  3 --關閉自動擴展功能語法:
  4 alter database datafile '對應的數據文件路徑信息' autoextend off;

新增 表空間

  1  --oracle增加表空間數據文件大小
  2 --
  3 --1.增加數據文件
  4 
  5 ALTER TABLESPACE ljjgbs_east ADD DATAFILE '/home/oracle/app/oracle/oradata/ljjgbs/ljjgbs_east_data.dbf' SIZE 50M;
  6 
  7 --2.新增數據文件,並允許自動增長
  8 
  9 ALTER TABLESPACE ljjgbs_east ADD DATAFILE '/home/oracle/app/oracle/oradata/ljjgbs/ljjgbs_east_data.dbf' SIZE 50M AUTOEXTEND ON NEXT 5M MAXSIZE 100M;
 10 
 11 --3.允許存在的數據文件自動增長
 12 
 13 ALTER DATABASE DATAFILE '/home/oracle/app/oracle/oradata/ljjgbs/ljjgbs_east_data.dbf' AUTOEXTEND ON NEXT 5M maxsize unlimited;
 14 
 15 --4.手動增加存在的數據文件的大小
 16 
 17 ALTER DATABASE DATAFILE '/home/oracle/app/oracle/oradata/ljjgbs/ljjgbs_east_data.dbf' RESIZE 20000M;
 18 

創建表空間

  1 create tablespace GFPORTAL
  2 datafile 'D:\SOFT\DEVELOP\DATABASE\ORACLE\ORADATA\ORCL\PDBORCL\GFPORTAL.DBF' size 100M --生成數據文件並定義文件大小
  3 autoextend on next 100M maxsize unlimited logging    --設置自動擴展
  4 extent management local autoallocate
  5 segment space management auto;
  6 
  7 
  8 --創建 多個表空間文件
  9 
 10 create tablespace sync_plus_1   datafile
 11   '/u01/app/oracle/oradata/orcl/sync_plus_1_01.dbf' size 500M  autoextend on next 100M
 12  , '/u01/app/oracle/oradata/orcl/sync_plus_1_02.dbf' size 500M  autoextend on next 100M
 13  , '/u01/app/oracle/oradata/orcl/sync_plus_1_03.dbf' size 500M  autoextend on next 100M
 14  , '/u01/app/oracle/oradata/orcl/sync_plus_1_04.dbf' size 500M  autoextend on next 100M
 15  , '/u01/app/oracle/oradata/orcl/sync_plus_1_05.dbf' size 500M  autoextend on next 100M
 16  , '/u01/app/oracle/oradata/orcl/sync_plus_1_06.dbf' size 500M  autoextend on next 100M
 17  , '/u01/app/oracle/oradata/orcl/sync_plus_1_07.dbf' size 500M  autoextend on next 100M
 18  , '/u01/app/oracle/oradata/orcl/sync_plus_1_08.dbf' size 500M  autoextend on next 100M maxsize unlimited logging extent management local autoallocate segment space management auto
 19 
 20 

增加多個表空間

  1 --- 執行該語句給  TEST_SYNC  用戶授權,此時  TEST_SYNC  用戶就可以登錄了。 
  2 
  3 ----給表空間增加數據文件
  4 ALTER TABLESPACE sync_plus_1 ADD DATAFILE  'D:\SOFT\DEVELOP\DATABASE\ORACLE\ORADATA\ORCL\SYNC_PLUS_1_01.dbf' size 500M  autoextend on next 100M
  5  , 'D:\SOFT\DEVELOP\DATABASE\ORACLE\ORADATA\ORCL\SYNC_PLUS_1_02.dbf' size 500M  autoextend on next 100M
  6  , 'D:\SOFT\DEVELOP\DATABASE\ORACLE\ORADATA\ORCL\SYNC_PLUS_1_03.dbf' size 500M  autoextend on next 100M
  7  , 'D:\SOFT\DEVELOP\DATABASE\ORACLE\ORADATA\ORCL\SYNC_PLUS_1_04.dbf' size 500M  autoextend on next 100M
  8  , 'D:\SOFT\DEVELOP\DATABASE\ORACLE\ORADATA\ORCL\SYNC_PLUS_1_05.dbf' size 500M  autoextend on next 100M
  9  , 'D:\SOFT\DEVELOP\DATABASE\ORACLE\ORADATA\ORCL\SYNC_PLUS_1_06.dbf' size 500M  autoextend on next 100M
 10  , 'D:\SOFT\DEVELOP\DATABASE\ORACLE\ORADATA\ORCL\SYNC_PLUS_1_07.dbf' size 500M  autoextend on next 100M
 11  , 'D:\SOFT\DEVELOP\DATABASE\ORACLE\ORADATA\ORCL\SYNC_PLUS_1_08.dbf' size 500M  autoextend on next 100M maxsize unlimited ;
 12 
 13 
 14 

刪除表空間

  1 ---刪除表空間:刪除數據文件語法:
  2  ALTER TABLESPACE 表空間名 DROP DATAFILE 數據文件名;
  3 ---刪除表空間:所有的數據文件
  4 
  5 

 

 

24: 因:審計 表占用了大量資源 導致————》system表空間爆滿解決方法

注:本段內容來自於:《   system表空間爆滿解決方法  》

 

  1 --問題描述:
  2 --對數據庫做檢查,發現system表空間持續占滿99%。使用如下語句查看:
  3 SQL> select b.tablespace_name "表空間",b.bytes/1024/1024 "大小M",(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 "已使用M",substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) "利用率" from dba_free_space a,dba_data_files b where a.file_id=b.file_id and b.tablespace_name='SYSTEM' group by b.tablespace_name,b.file_name,b.bytes order by b.tablespace_name;
  4 
  5 表空間            大小M        已使用M     利用率
  6 ------------- ----------     ----------     ----------
  7 SYSTEM             6770          6505         96.08%
  8 
  9 --從dba_segments中找出占用SYSTEM表空間中排名前10位的大對象:
 10 SQL> col segment_name for a15;
 11 SQL> SELECT * FROM (SELECT SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 MB FROM DBA_SEGMENTS WHERE TABLESPACE_NAME = 'SYSTEM' GROUP BY SEGMENT_NAME ORDER BY 2 DESC) WHERE ROWNUM < 10;
 12 
 13 SEGMENT_NAME     MB
 14 --------------------    ----------
 15 AUD$                         6016
 16 IDL_UB1$                    280
 17 SOURCE$                     80
 18 IDL_UB2$                     33
 19 C_TOID_VERSION#      24
 20 C_OBJ#_INTCOL#        18
 21 I_SOURCE1                   16
 22 ARGUMENT$               13
 23 C_OBJ#                         13
 24 JAVA$MC$                   12
 25 --發現是AUD$審計表占用資源量大。為了避免對整體性能造成影響,決定把AUD$遷移到其他表空間
 26 --解決步驟:
 27 --1,新建aud_space表空間和aud_index索引表空間
 28 --2,執行遷移命令,將AUD$表相關移到審計表空間中:
 29 SQL> alter table aud$ move tablespace aud_space;
 30 
 31 SQL> alter table audit$ move tablespace aud_space;
 32 
 33 SQL> alter index i_audit rebuild online tablespace aud_index;
 34 
 35 SQL> alter table audit_actions move tablespace aud_space;
 36 
 37 SQL> alter index i_audit_actions rebuild online tablespace aud_index;
 38 --3,再此查看SYSTEM表空間使用狀態:
 39 SQL> select b.tablespace_name "表空間",b.bytes/1024/1024 "大小M",(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 "已使用M",substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) "利用率" from dba_free_space a,dba_data_files b where a.file_id=b.file_id and b.tablespace_name='SYSTEM' group by b.tablespace_name,b.file_name,b.bytes order by b.tablespace_name;
 40 表空間            大小M        已使用M     利用率
 41 ------------- ----------     ----------     ----------
 42 SYSTEM             6770       792.3125     11.70
 43 可見SYSTEM表空間已經降下來了。
 44 --4,為了安全起見,AUD$表數據目前3千多萬,數據量大,后期考慮truncate此表,清空數據。
 45 

        注:本段內容來自:《   system表空間用滿解決 方法 

如果system表空間不是自動擴展,空間用滿甚至會出現數據庫無法登陸。使用任何用戶登錄均報出異常。

   系統表空間正常情況下只存放了數據字典之類的東西,所以占用的空間一般在500M以下。如果你的系統表空間占用比較多的空間,可能有以下幾方面的原因:
1)沒有為用戶明確指定默認表空間,導致system系統表空間作為用戶默認表空間
2)開啟了審計,請檢查此表的大小AUD$
你可以運行以下查詢來檢查一下系統表空間哪些表比較大:
 

  1   SQL> select * from (select SEGMENT_NAME,sum(bytes)/1024/1024 sx from dba_segments
  2                 where tablespace_name='SYSTEM' group by segment_name)
  3                 where sx>100 order by sx desc;


  查看該表紀錄數
 

  1  select count(*) sum from AUD$;


解決方法大概可分為以下幾種:
一、為system表空間另外新增一個數據文件。

  1 alter tablespace system add datafile 'D:\oracleXE\oradata\XE\system_01.dbf' resize 1024M;


二、更改system表空間的數據文件SYSTEM.dbf分配空間。

  1 1.alter database datafile 'D:\oracleXE\oradata\XE\system_01.dbf' autoextend on;
  2 2.alter database datafile 'D:\oracleXE\oradata\XE\system_01.dbf' resize 1024M;
  3 
三、truncate掉AUD$表並關閉審計功能(我是使用的這種,效果立竿見影,不過如果不關閉此功能, 需要定期清理此表):
  1 SQL> alter system set audit_trail=none scope=spfile;
  2 
  3              SQL>shutdown immediate;
  4 
  5              SQL>startup;
  6 

四、將AUD$默認表空間由system移出。

 

 

25:oracle刪除(釋放)數據文件/表空間流程

注:本段內容來自:  《  oracle刪除(釋放)數據文件/表空間流程   》

oracle刪除(釋放)數據文件/表空間流程

生產環境:數據庫里空間不足,niptest 表空間251G,只使用了17G

再alter database datafile '...../niptest1' resize 10G; 的時候說超出了范圍要求

由於表變動比較頻繁,高水位值比較大

(高水位 HWM “High Water Mark “:oracle中block有沒有使用的分界線,它會隨着數據的insert而上升,但它並不會隨數據的delete而下降,因此全表掃描的時間並不因數據的delete而減少,相反可能由於塊清除反而全表掃描時間增加)

 

刪除表空間步驟:

 

1)  批量將niptest表空間中的表move 到USERS表空間,再刪除表空間niptest


首先看下此表空間內的表  move到其他表空間 防止數據丟失

  1 select * from dba_tables where tablespace_name='NIPTEST';
  2 select * from dba_extents where tablespace_name='NIPTEST';
  3 select * from dba_segments where tablespace_name='NIPTEST';
  4 SELECT 'alter table '||owner||'.'||table_name||' move tablespace USERS;' FROM DBA_tables WHERE TABLESPACE_NAME='NIPTEST'; ---批量把表移動到其他表空間

****** move (降低高水位)

優點:可以移動表到其他表空間,在執行命令時不需要執行alter table table_name enable row movement

缺點:表move 會導致表中的索引失效,要rebuild;同時表會產生行級鎖......;在此如果表中有LOB字段時要用一下命令來實現表空間移動:alter table owner.table_name move tablespace tablespace_name lob (lob_column) store as lob segment  tablespace tablespace_name;也可以單獨move lob,index要rebuild

******  shrink space

優點:降低高水位時索引不會失效

缺點:不能將表移動到其他表空間;高水位降低效果沒有move明顯;同時在執行命令前要先執行(alter table table_name enable row movement允許行移動)也會表會產生行級鎖.......,shrink比move更耗費cpu,產生很多current block這樣生成巨大的redo與undo 如果表中索引很少可以建議使用move降低高水位

2) 移動完表發現 主鍵和索引還是在源表空間

  1 SELECT * FROM DBA_extents WHERE TABLESPACE_NAME='USERS';   -->查看原表空間的主鍵和索引
  2 alter index XX rebuild tablespace ;

 

---> 批量執行索引重建

  1 SELECT 'alter index  '||owner||'.'||segment_name||' rebuild tablespace USERS;' FROM DBA_extents WHERE TABLESPACE_NAME='NIPTEST';  --- 批量將主鍵索引重建到其他表空間
  2 select * from dba_segments where tablespace_name='NIPTEST';---弄完上面的操作,這里還有數據,不要在意,那是回收站的,無需修改直接刪表空間即清空

 

(3) 表都移動完了 之后 先把數據文件offline drop再刪除數據文件

  1 alter database datafile '/home/oracle/app/oracle/oradata/kfdb/niptest1' offline drop;

---> 查看下數據文件狀態

  1 select status from dba_tablespaces v$datafile where tablespace_name='NIPTEST'; -----offline


--> 再刪除表空間

  1 drop tablespace niptest; --> 刪除表空間,但不刪除其文件
  2 drop tablespace niptest including contents; -->刪除表空間同時刪除表空間的數據對象
  3 drop tablespace niptest including contents and datafiles;

 

--> 刪除表空間時刪除數據對象及其OS系統文件一起刪除,,以便釋放空間,前提表空間不能是數據庫默認表空間
否則會 報錯:ORA-12919: Can not drop the default permanent tablespace

(4) 怎么查看下數據庫的默認表空間是什么:

  1 select * from database_properties where property_name = 'DEFAULT_PERMANENT_TABLESPACE';

 

如果您刪除的表空間是數據庫默認表空間要用一下命令來

  1 --更換數據庫默認表空間:
  2 alter database default tablespace users;
  3  --再執行:
  4  drop tablespace niptest including contents and datafiles;

[root@kfdb49 kfdb]# df -hl  --> 看下OS系統空間情況  --- 表空間釋放

------創建表空間的語句:

  1 create tablespace niptest datafile '/home/oracle/app/oracle/oradata/kfdb/niptest1' size 10G autoextend on next XXM maxsize XXm extent management local;

有的人會想着再創建一個niptest 為10G的表空間,避免后期imp時源表的表空間是niptest

: 其實不需要,如果庫中沒有niptest表空間,就算imp源表的表空間是niptest,也會導入到用戶的默認表空間,有niptest表空間的話則會導入到niptest表空間(如果后續不想擁有niptest表空間 就要斬草除根的將niptest刪除之后不要創建)

回收unlimited tablespace 給予額外權限niptest表空間權限會正常導入,否則報錯

額外權限和用戶默認表空間是一個的話可以正常導入,否則知道表結構到用戶默認表空間

 

 

 

 

 

 

 

-----------------


免責聲明!

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



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