暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle数据库常用的78个脚本,速来下载!

1.数据库版本

    select * from gv$version;
    复制

    2.数据库创建时间

      select dbid,name,to_char(created,'YYYY-MM-DD') created,log_mode from gv$database;
      复制

      3.启动时间

        select version,instance_name,to_char(startup_time,'YYYY-MM-DD') startup_time,status from gv$instance;
        复制

        4.实例名

          select instance_name,status from gv$instance;
          复制

          5.opatch查看补丁版本

            $ORACLE_HOME/OPatch/opatch lspatches
            $ORACLE_HOME/OPatch/opatch lsinventory
            复制

            6.数据库字符集

              set line 200
              col value for a50
              set pagesize 100
              select * from nls_database_parameters;
              复制

              7.spfile参数文件位置和名称

                show parameter spfile
                复制

                8.pfile参数文件位置、名称、内容

                  cat $ORACLE_HOME/dbs/init实例名.ora
                  复制

                  9.表空间信息

                    set line 300
                    col tablespace_name for a20
                    select tablespace_name,
                    block_size,
                    initial_extent,
                    next_extent,
                    max_size,
                    status,
                    contents,
                    logging,
                    extent_management,
                    segment_space_management
                    from dba_tablespaces;
                    复制

                    10.表空间使用率(非自动扩展)

                      set pagesize 9999
                      set linesize 132
                      col tablespace_name for a35
                      select
                      a.tablespace_name,
                      a.Total_mb,
                      f.Free_mb,
                      round(a.total_MB-f.free_mb,2) Used_mb,
                      round((f.free_MB/a.total_MB)*100) "%_Free"
                      from
                      (select tablespace_name, sum(bytes/(1024*1024)) total_MB from dba_data_files group by tablespace_name) a,
                      (select tablespace_name, round(sum(bytes/(1024*1024))) free_MB from dba_free_space group by tablespace_name) f
                      WHERE a.tablespace_name = f.tablespace_name(+)
                      order by "%_Free"
                      /
                      复制

                      11.表空间使用率(非自动扩展和自动扩展)

                      ###不适用同一表空间下既有自动扩容又有非自动扩展的数据文件

                        select
                        a.tablespace_name,
                        case when g.auto_free <0 then round((f.free_MB/a.total_MB)*100else round(((f.free_MB+g.auto_free)/b.r_total_mb)*100end "Free"
                        from
                        (select tablespace_name, sum(bytes/(1024*1024)) total_MB from dba_data_files group by tablespace_name) a,
                        (select tablespace_name, round(sum(bytes/(1024*1024))) free_MB from dba_free_space group by tablespace_name) f,
                        (select tablespace_name,trunc(sum(maxbytes)/1024/1024,2as r_total_mb from dba_data_files group by tablespace_name) b,
                        (select sum(free_MB) auto_free,tablespace_name from (select tablespace_name,trunc(maxbytes / 1024 / 1024 , 2as MAX_MB,trunc((maxbytes-bytes)/1024/1024,2) FREE_MB from dba_data_files) a group by tablespace_name) g
                        WHERE
                        a.tablespace_name = f.tablespace_name(+)
                        and
                        g.tablespace_name = a.tablespace_name
                        and
                        b.tablespace_name = a.tablespace_name;
                        复制

                        12.表空间使用率(非自动扩展和自动扩展)

                        ###最新

                        ###修改:表空间满了以后,dba_free_space里没有记录,会删除表空间信息,查询的值为空。

                        ###1.需要添加左连接.

                        ###2.需要使用nvl进行空值转换。

                          select a.TABLESPACE_NAME,
                          ROUND((1 - (a.Free_MB_1+ nvl(b.FREE_MB_2,0)) / a.total_mb) * 1002) Used_Prc
                          from (select TABLESPACE_NAME,
                          ROUND(sum(case
                          when autoextensible = 'NO' then
                          BYTES
                          when autoextensible = 'YES' then
                          MAXBYTES
                          end/ 1024 / 1024,
                          2) TOTAL_MB,
                          ROUND(sum(case
                          when MAXBYTES - BYTES >= 0 then
                          MAXBYTES - BYTES
                          when MAXBYTES - BYTES < 0 then
                          0
                          end/ 1024 / 1024,
                          2) Free_MB_1
                          from dba_data_files
                          group by TABLESPACE_NAME) a
                          inner join (SELECT dfs.TABLESPACE_NAME,
                          SUM(dfs.bytes / 1024 / 1024) FREE_MB_2
                          FROM dba_free_space dfs
                          GROUP BY dfs.TABLESPACE_NAME) b
                          on a.TABLESPACE_NAME = b.TABLESPACE_NAME(+);
                          复制

                          13.数据文件信息

                            set line 300
                            col tablespace_name for a20
                            col file_name for a45
                            select tablespace_name,
                            file_name,
                            file_id,
                            status,
                            trunc(bytes  1024 / 1024 / 10242) as FILE_GB,
                            autoextensible,
                            trunc(maxbytes  1024 / 1024 / 10242) as MAX_GB
                            from dba_data_files
                            order by file_id;
                            复制

                            14.UNDO

                              select t.status,sum(t.blocks)*8/1024||'M' size_M
                              from dba_undo_extents t
                              group by t.status;
                              复制

                              15.rollname

                                select * from v$rollname;
                                复制
                                  set line 150
                                  col tablespace_name for a10
                                  set pagesize 100
                                  select owner, tablespace_name, segment_id, segment_name, status
                                  from dba_rollback_segs order by 2,3;
                                  复制

                                  16.临时文件信息

                                    set line 300
                                    col tablespace_name for a20
                                    col file_name for a40
                                    select tablespace_name,
                                    file_name,
                                    file_id,
                                    status,
                                    trunc(bytes  1024 / 1024 / 10242) as FILE_GB,
                                    autoextensible,
                                    trunc(maxbytes  1024 / 1024 / 10242) as MAX_GB
                                    from dba_temp_files
                                    order by file_id;
                                    复制

                                    17.temp使用率

                                      SET PAGESIZE 400
                                      SET LINES 300
                                      COL D.TABLESPACE_NAME FORMAT A15
                                      COL D.TOT_GROOTTE_MB FORMAT A10
                                      COL TS-PER FORMAT A15
                                      SELECT d.tablespace_name "Name",
                                      TO_CHAR(NVL(a.bytes / 1024 / 10240),'99,999,990.900') "Size (M)",
                                      TO_CHAR(NVL(t.hwm, 0)/1024/1024,'99999999.999') "HWM (M)",
                                      TO_CHAR(NVL(t.hwm / a.bytes * 1000), '990.00') "HWM % " ,
                                      TO_CHAR(NVL(t.bytes/1024/10240),'99999999.999') "Using (M)",
                                      TO_CHAR(NVL(t.bytes / a.bytes * 1000), '990.00') "Using %"
                                      FROM sys.dba_tablespaces d,
                                      (select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a,
                                      (select tablespace_name, sum(bytes_cached) hwm, sum(bytes_used) bytes from v$temp_extent_pool group by tablespace_name) t
                                      WHERE d.tablespace_name = a.tablespace_name(+)
                                      AND d.tablespace_name = t.tablespace_name(+)
                                      AND d.extent_management like 'LOCAL'
                                      AND d.contents like 'TEMPORARY';
                                      复制

                                      18.控制文件信息

                                        col name for a50
                                        select status,name from v$controlfile;
                                        复制

                                        19.查看控制文件内容

                                          SELECT * FROM v$CONTROLFILE_RECORD_SECTION;
                                          复制

                                          20.日志文件信息

                                            set line 300
                                            col member for a50
                                            select a.group#,
                                            THREAD#,
                                            b.member,
                                            a.members,
                                            a.status,
                                            a.sequence#,
                                            bytes  1024 / 1024 as file_mb
                                            from v$log a, v$logfile b
                                            where a.group# = b.group#
                                            order by 2,1;
                                            复制

                                            21.归档信息

                                              archive log list;
                                              复制
                                                set pagesize 100
                                                select a_date,a_count from (
                                                select to_char(first_time,'YYYY-MM-DD') a_date,count(*) a_count from gv$log_history
                                                group by to_char(first_time,'YYYY-MM-DD')
                                                order by 1 descwhere rownum<=31;
                                                复制

                                                22.归档频率

                                                  set line 300
                                                  set pagesize 1000
                                                  SELECT TRUNC(first_time) "Date",
                                                  TO_CHAR(first_time, 'Dy') "Day",
                                                  COUNT(1"Total",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '00', 10)) "h0",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '01', 10)) "h1",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '02', 10)) "h2",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '03', 10)) "h3",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '04', 10)) "h4",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '05', 10)) "h5",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '06', 10)) "h6",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '07', 10)) "h7",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '08', 10)) "h8",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '09', 10)) "h9",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '10', 10)) "h10",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '11', 10)) "h11",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '12', 10)) "h12",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '13', 10)) "h13",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '14', 10)) "h14",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '15', 10)) "h15",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '16', 10)) "h16",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '17', 10)) "h17",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '18', 10)) "h18",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '19', 10)) "h19",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '20', 10)) "h20",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '21', 10)) "h21",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '22', 10)) "h22",
                                                  SUM(DECODE(TO_CHAR(first_time, 'hh24'), '23', 10)) "h23",
                                                  ROUND(COUNT(1)  242"Avg"
                                                  FROM gv$log_history
                                                  WHERE thread# = inst_id
                                                  GROUP BY TRUNC(first_time), TO_CHAR(first_time, 'Dy')
                                                  ORDER BY 1 desc;
                                                  复制

                                                  23.监听文件

                                                  监听文件信息

                                                    lsnrctl status
                                                    lsnrctl status listener_scan1
                                                    复制

                                                    监听文件大小,最近更新时间

                                                      ls -lrth $ORACLE_HOME/network/log/listener.log
                                                      复制

                                                      检查监听日志中IP信息

                                                        cd /oracle/grid/diag/tnslsnr/cjc-db-01/listener/trace
                                                        复制

                                                        注意如果文件过大,可跳过不检查,或检查log.xml文件

                                                          grep "HOST=.*establish.*\* 0" listener.log | awk -F'*' '{match($3,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($3,RSTART,RLENGTH);cnt[ip]+=1;last[ip]=$1;}END {for (i in cnt) printf "%-16s %9s %19s\n",i,cnt[i],last[i];}' | sort -k 1
                                                          复制

                                                          数据库集群检查(RAC部分)

                                                          24.磁盘组

                                                            set line 300
                                                            col name for a10
                                                            col compatibility for a10
                                                            select group_number,
                                                            name,
                                                            block_size,
                                                            total_mb,
                                                            free_mb,
                                                            (1-(free_mb/total_mb))*100 used,
                                                            type,
                                                            compatibility,
                                                            voting_files
                                                            from v$asm_diskgroup;
                                                            复制

                                                            25.磁盘信息

                                                              set line 300
                                                              col CREATE_DATE for a10
                                                              col name for a15
                                                              col path for a20
                                                              set pagesize 300
                                                              select GROUP_NUMBER,
                                                              DISK_NUMBER,
                                                              STATE,
                                                              OS_MB,
                                                              TOTAL_MB,
                                                              FREE_MB,
                                                              NAME,
                                                              PATH,
                                                              CREATE_DATE,
                                                              VOTING_FILE
                                                              from v$asm_disk order by 1,2;
                                                              复制

                                                              26.OCR

                                                                ocrcheck -config
                                                                ocrcheck
                                                                复制

                                                                27.OLR

                                                                  ocrcheck -local
                                                                  复制

                                                                  28.VOTEDISK

                                                                    crsctl query css votedisk
                                                                    复制

                                                                    29.netwoerk

                                                                      oifcfg getif
                                                                      复制

                                                                      30.数据库信息

                                                                        srvctl config database -d dah
                                                                        复制

                                                                        31.查看集群名

                                                                          cemutlo -n
                                                                          复制

                                                                          32.查看集群状态

                                                                            crsctl check cluster -all
                                                                            复制

                                                                            33.查看资源状态

                                                                              crsctl stat res -t
                                                                              复制

                                                                              34.查看CRS状态

                                                                                crsctl check crs
                                                                                复制

                                                                                35.查看OHASD状态

                                                                                  crsctl check has
                                                                                  复制

                                                                                  36.查看节点信息

                                                                                    olsnodes
                                                                                    srvctl status nodeapps -n cjc01
                                                                                    srvctl status nodeapps -n cjc02
                                                                                    复制

                                                                                    37.查看数据库名称

                                                                                      srvctl config database
                                                                                      srvctl status database -d cjc
                                                                                      复制

                                                                                      38.查看SCAN

                                                                                        srvctl config scan
                                                                                        srvctl status scan
                                                                                        复制

                                                                                        39.查看LISTENER

                                                                                        配置

                                                                                          srvctl config listener -a
                                                                                          复制

                                                                                          状态

                                                                                            srvctl status listener
                                                                                            复制

                                                                                            40.数据库安全检查

                                                                                            检查SQL注入 

                                                                                              column OWNER format a10 heading 'OWNER'
                                                                                              column OBJECT_NAME format a80 heading 'OBJECT_NAME'
                                                                                              column OBJECT_TYPE format a40 heading 'OBJECT_TYPE'
                                                                                              select OWNER,OBJECT_NAME, OBJECT_TYPE from dba_objects
                                                                                              where object_name in
                                                                                              ('DBMS_SUPPORT_INTERNAL','DBMS_SYSTEM_INTERNAL','DBMS_CORE_INTERNAL','DBMS_STANDARD_FUN9','DBMS_SUPPORT_INTERNAL','DBMS_SYSTEM_INTERNAL','DBMS_CORE_INTERNAL'or object_name like 'DBMS_SUPPORT_DBMONITOR%';
                                                                                              复制

                                                                                              41.角色

                                                                                                select grantee,granted_role from dba_role_privs where GRANTED_ROLE='DBA';
                                                                                                复制

                                                                                                42.数据库用户

                                                                                                  set line 300
                                                                                                  col profile for a10
                                                                                                  select * from dba_profiles where profile='DEFAULT' and resource_name in ('PASSWORD_LIFE_TIME','FAILED_LOGIN_ATTEMPTS');
                                                                                                  复制

                                                                                                  如需改成无限制,执行下面语句:

                                                                                                    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
                                                                                                    alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
                                                                                                    复制

                                                                                                    数据库用户检查

                                                                                                    对象信息

                                                                                                    43.数据库大小

                                                                                                      select trunc(sum(bytes)  1024 / 1024 / 1024,2) as db_GB from dba_segments;
                                                                                                      复制
                                                                                                        col owner for a15
                                                                                                        select owner, trunc(sum(bytes) / 1024 / 1024,2as db_MB
                                                                                                        from dba_segments
                                                                                                        group by owner
                                                                                                        order by 1;
                                                                                                        复制

                                                                                                        44.用户信息

                                                                                                          set line 200
                                                                                                          set pagesize 100
                                                                                                          col ACCOUNT_STATUS for a20
                                                                                                          col default_tablespace for a15
                                                                                                          col username for a10
                                                                                                          select username,to_char(created,'YYYY-MM-DD') created,default_tablespace,ACCOUNT_STATUS from dba_users order by 2;
                                                                                                          复制

                                                                                                          45.业务用户权限

                                                                                                            select grantee,granted_role from dba_role_privs where grantee in ('username') order by 1;
                                                                                                            Select grantee,privilege from dba_sys_privs where grantee in ('username') order by 1;
                                                                                                            Select grantee,privilege from dba_tab_privs where grantee in ('username') order by 1;
                                                                                                            Select role,privilege from role_sys_privs where role in ('CONNECT','RESOURCE') order by role;
                                                                                                            复制

                                                                                                            46.数据库用户对象检查

                                                                                                              ---表数量
                                                                                                              col owner for a10
                                                                                                              select owner, count(*)
                                                                                                              from dba_tables
                                                                                                              group by owner
                                                                                                              order by 1;


                                                                                                              ---临时表数量
                                                                                                              select owner, count(*)
                                                                                                              from dba_tables
                                                                                                              where temporary = 'Y'
                                                                                                              group by owner
                                                                                                              order by 1;


                                                                                                              ---索引信息
                                                                                                              select owner, count(*)
                                                                                                              from dba_indexes
                                                                                                              group by owner
                                                                                                              order by 1;


                                                                                                              ---视图数量
                                                                                                              select owner, count(*)
                                                                                                              from dba_views
                                                                                                              group by owner
                                                                                                              order by 1;


                                                                                                              ---触发器信息
                                                                                                              select owner, count(*)
                                                                                                              from dba_triggers
                                                                                                              group by owner
                                                                                                              order by 1;


                                                                                                              ---存储过程
                                                                                                              select owner, count(*)
                                                                                                              from dba_procedures
                                                                                                              group by owner
                                                                                                              order by 1;


                                                                                                              ---无效的对象
                                                                                                              set line 100
                                                                                                              set pagesize 300
                                                                                                              col owner for a20
                                                                                                              col object_name for a30
                                                                                                              select owner,object_type,count(*)
                                                                                                              from dba_objects
                                                                                                              where status = 'INVALID' group by owner,object_type;
                                                                                                              select owner,object_name,object_type
                                                                                                              from dba_objects
                                                                                                              where status = 'INVALID';
                                                                                                              复制

                                                                                                              47.分区表信息

                                                                                                              注意是否需要手动添加分区

                                                                                                                SELECT OWNER,TABLE_NAME,PARTITIONING_TYPE FROM DBA_PART_TABLES ORDER BY 1;
                                                                                                                复制

                                                                                                                48.查看分区名称等

                                                                                                                  set line 300
                                                                                                                  set pagesize 1000
                                                                                                                  col table_owner for a20
                                                                                                                  col table_name for a20
                                                                                                                  col PARTITION_NAME for a20
                                                                                                                  col SUBPARTITION_COUNT for a20
                                                                                                                  col MAX_SIZE for a20
                                                                                                                  col HIGH_VALUE for a50
                                                                                                                  select table_owner,table_name,PARTITION_NAME,HIGH_VALUE from dba_tab_PARTITIONS where table_owner not in ('SYS','SYSTEM') ORDER BY 3;
                                                                                                                  复制

                                                                                                                  49.JOB和定时任务

                                                                                                                    set line 150
                                                                                                                    col INTERVAL for a35
                                                                                                                    col SCHEMA_USER for a15
                                                                                                                    col what for a30
                                                                                                                    SELECT job,schema_user,broken,interval,what,last_date,last_sec,BROKEN from dba_jobs;
                                                                                                                    复制
                                                                                                                      set line 100
                                                                                                                      col start_date for a20
                                                                                                                      select owner,job_name,job_type,start_date,state from dba_scheduler_jobs;
                                                                                                                      复制

                                                                                                                      50.查询索引列 

                                                                                                                        set line 300
                                                                                                                        set pagesize 100
                                                                                                                        col TABLE_OWNER for a15
                                                                                                                        col TABLE_NAME for a30
                                                                                                                        col COLUMN_NAME for a15
                                                                                                                        col INDEX_NAME for a35
                                                                                                                        select TABLE_OWNER,TABLE_NAME,COLUMN_NAME,INDEX_NAME from dba_ind_columns where TABLE_NAME in (
                                                                                                                        'XXXXXX'
                                                                                                                        ) order by 2,3;
                                                                                                                        复制

                                                                                                                        51.查询约束

                                                                                                                          set line 300
                                                                                                                          col owner for a15
                                                                                                                          select OWNER,TABLE_NAME,CONSTRAINT_TYPE,CONSTRAINT_NAME,INDEX_NAME,status from dba_constraints where table_name in
                                                                                                                          (
                                                                                                                          'XXXXXX'
                                                                                                                          and CONSTRAINT_TYPE='P';
                                                                                                                          复制

                                                                                                                          数据库备份信息

                                                                                                                          RMAN备份信息

                                                                                                                          52.全备份

                                                                                                                            set line 300
                                                                                                                            set pagesize 150
                                                                                                                            col in_size for a10
                                                                                                                            col out_size for a10
                                                                                                                            col input_type for a10
                                                                                                                            col e for a20
                                                                                                                            col s for a20
                                                                                                                            select
                                                                                                                            session_key,
                                                                                                                            input_type,
                                                                                                                            compression_ratio,
                                                                                                                            INPUT_BYTES_DISPLAY in_size,
                                                                                                                            output_bytes_display out_size,
                                                                                                                            to_char(START_TIME,'YYYYMMDD HH24:MI:SS') S,
                                                                                                                            to_char(END_TIME,'YYYYMMDD HH24:MI:SS') E,
                                                                                                                            status
                                                                                                                            from v$rman_backup_job_details where INPUT_TYPE='DB FULL'
                                                                                                                            order by S DESC;
                                                                                                                            复制

                                                                                                                            53.增量备份

                                                                                                                              set line 300
                                                                                                                              set pagesize 150
                                                                                                                              col in_size for a10
                                                                                                                              col out_size for a10
                                                                                                                              col input_type for a20
                                                                                                                              col e for a20
                                                                                                                              col s for a20
                                                                                                                              select
                                                                                                                              session_key,
                                                                                                                              input_type,
                                                                                                                              compression_ratio,
                                                                                                                              INPUT_BYTES_DISPLAY in_size,
                                                                                                                              output_bytes_display out_size,
                                                                                                                              to_char(START_TIME,'YYYYMMDD HH24:MI:SS') S,
                                                                                                                              to_char(END_TIME,'YYYYMMDD HH24:MI:SS') E,
                                                                                                                              status
                                                                                                                              from v$rman_backup_job_details where INPUT_TYPE='DB INCR'
                                                                                                                              order by S DESC;
                                                                                                                              复制
                                                                                                                                SELECT DISTINCT INCREMENTAL_LEVEL FROM V$BACKUP_SET;
                                                                                                                                复制

                                                                                                                                54.归档备份

                                                                                                                                  set line 300
                                                                                                                                  set pagesize 150
                                                                                                                                  col in_size for a10
                                                                                                                                  col out_size for a10
                                                                                                                                  col input_type for a20
                                                                                                                                  col e for a20
                                                                                                                                  col s for a20
                                                                                                                                  select
                                                                                                                                  session_key,
                                                                                                                                  input_type,
                                                                                                                                  compression_ratio,
                                                                                                                                  INPUT_BYTES_DISPLAY in_size,
                                                                                                                                  output_bytes_display out_size,
                                                                                                                                  to_char(START_TIME,'YYYYMMDD HH24:MI:SS') S,
                                                                                                                                  to_char(END_TIME,'YYYYMMDD HH24:MI:SS') E,
                                                                                                                                  status
                                                                                                                                  from v$rman_backup_job_details where INPUT_TYPE='ARCHIVELOG'
                                                                                                                                  order by S DESC;
                                                                                                                                  复制

                                                                                                                                  55.数据库连接信息检查

                                                                                                                                    col username for a15
                                                                                                                                    select inst_id, username, count(*)
                                                                                                                                    from gv$session
                                                                                                                                    group by inst_id, username
                                                                                                                                    order by 1;
                                                                                                                                    复制

                                                                                                                                    56.资源限制

                                                                                                                                      set line 300
                                                                                                                                      set pagesize 100
                                                                                                                                      col RESOURCE_NAME for a10
                                                                                                                                      col INITIAL_ALLOCATION for a15
                                                                                                                                      select * from v$resource_limit;
                                                                                                                                      复制

                                                                                                                                      57.AWR

                                                                                                                                        @?/rdbms/admin/awrrpt.sql
                                                                                                                                        @?/rdbms/admin/awrgrpt.sql
                                                                                                                                        复制

                                                                                                                                        58.执行计划

                                                                                                                                          set linesize 150
                                                                                                                                          set pagesize 2000
                                                                                                                                          select * from TABLE(dbms_xplan.display_cursor('&SQL_ID'));

                                                                                                                                          select * from TABLE(dbms_xplan.display_cursor('&SQL_ID', &CHILD));
                                                                                                                                          select * from table(dbms_xplan.display_awr('&sql_id')) ;
                                                                                                                                          复制

                                                                                                                                          59.get_ddl

                                                                                                                                            select dbms_metadata.get_ddl('TABLE','TABLE_NAME','TABLE_OWNER'from dual;
                                                                                                                                            select dbms_metadata.get_ddl('INDEX','INDEX_NAME','INDEX_OWNER'from dual;
                                                                                                                                             select dbms_metadata.get_ddl('PROCEDURE','NAME','OWNER'from dual;
                                                                                                                                            复制

                                                                                                                                            60.11g 自动维护任务

                                                                                                                                              col CLIENT_NAME for a35
                                                                                                                                              select client_name,status from dba_autotask_client;
                                                                                                                                              复制

                                                                                                                                              61.数据库内存配置检查

                                                                                                                                                sqlplus / as sysdba
                                                                                                                                                show parameter mem
                                                                                                                                                show parameter sga
                                                                                                                                                show parameter pga
                                                                                                                                                复制

                                                                                                                                                62.数据库参数配置检查

                                                                                                                                                  ---v$parameter ---session
                                                                                                                                                  ---v$system_parameter ---system
                                                                                                                                                  复制
                                                                                                                                                    set line 100
                                                                                                                                                    set pagesize 100
                                                                                                                                                    col name for a30
                                                                                                                                                    col value for a20
                                                                                                                                                    col display_value for a20
                                                                                                                                                    col isdefault for a20
                                                                                                                                                    select name, value, display_value, isdefault
                                                                                                                                                    from v$system_parameter
                                                                                                                                                    where name in ('audit_trail',
                                                                                                                                                    'audit_sys_operations',
                                                                                                                                                    'cluster_database_instances',
                                                                                                                                                    'cpu_count',
                                                                                                                                                    'cursor_sharing',
                                                                                                                                                    'db_recovery_file_dest_size',
                                                                                                                                                    'deferred_segment_creation',
                                                                                                                                                    'disk_asynch_io',
                                                                                                                                                    'event',
                                                                                                                                                    'enable_ddl_logging',
                                                                                                                                                    'filesystemio_options',
                                                                                                                                                    'job_queue_processes',
                                                                                                                                                    'log_archive_dest_1',
                                                                                                                                                    'log_archive_format',
                                                                                                                                                    'memory_max_target',
                                                                                                                                                    'memory_target',
                                                                                                                                                    'nls_language',
                                                                                                                                                    'optimizer_dynamic_sampling',
                                                                                                                                                    'optimizer_index_cost_adj',
                                                                                                                                                    'processes',
                                                                                                                                                    'parallel_force_local',
                                                                                                                                                    'parallel_max_servers',
                                                                                                                                                    'pga_aggregate_target',
                                                                                                                                                    'query_rewrite_enabled',
                                                                                                                                                    'sec_case_sensitive_logon',
                                                                                                                                                    'sessions',
                                                                                                                                                    'sga_max_size',
                                                                                                                                                    'sga_target',
                                                                                                                                                    'utl_file_dir',
                                                                                                                                                    'undo_management',
                                                                                                                                                    'undo_retention',
                                                                                                                                                    'undo_tablespace',
                                                                                                                                                    'large_pool_size',
                                                                                                                                                    'resource_limit',
                                                                                                                                                    'resource_manager_plan',
                                                                                                                                                    'max_dump_file_size',
                                                                                                                                                    'control_file_record_keep_time',
                                                                                                                                                    'result_cache_max_size',
                                                                                                                                                    'local_listener',
                                                                                                                                                    'resource_limit') order by 1;
                                                                                                                                                    复制

                                                                                                                                                    63.常见隐含参数

                                                                                                                                                      set line 200
                                                                                                                                                      col name for a40
                                                                                                                                                      col describ for a50
                                                                                                                                                      SELECT x.ksppinm as name,
                                                                                                                                                      y.ksppstvl as value,
                                                                                                                                                      y.ksppstdf as isdefault,
                                                                                                                                                      x.ksppdesc describ
                                                                                                                                                      FROM SYS.x$ksppi x, SYS.x$ksppcv y
                                                                                                                                                      WHERE x.inst_id = USERENV('Instance')
                                                                                                                                                      AND y.inst_id = USERENV('Instance')
                                                                                                                                                      AND x.indx = y.indx
                                                                                                                                                      AND x.ksppinm in ('_allow_resetlogs_corruption',
                                                                                                                                                      '_b_tree_bitmap_plans',
                                                                                                                                                      '_corrupted_rollback_segments',
                                                                                                                                                      '_datafile_write_errors_crash_instance',
                                                                                                                                                      '_gc_policy_time',
                                                                                                                                                      '_gc_undo_affinity',
                                                                                                                                                      '_gc_defer_time',
                                                                                                                                                      '_hash_join_enabled',
                                                                                                                                                      '_offline_rollback_segments',
                                                                                                                                                      '_px_use_large_pool',
                                                                                                                                                      '_memory_imm_mode_without_autosga',
                                                                                                                                                      '_partition_large_extents',
                                                                                                                                                      '_optimizer_null_aware_antijoin',
                                                                                                                                                      '_optim_peek_user_binds',
                                                                                                                                                      '_optimizer_mjc_enabled',
                                                                                                                                                      '_optimizer_use_feedback',
                                                                                                                                                      '_optimizer_join_elimination_enabled',
                                                                                                                                                      '_optimizer_ads_use_result_cache',
                                                                                                                                                      '_optimizer_adaptive_plans',
                                                                                                                                                      '_optimizer_adaptive_cursor_sharing',
                                                                                                                                                      '_optimizer_extended_cursor_sharing',
                                                                                                                                                      '_optimizer_extended_cursor_sharing_rel',
                                                                                                                                                      '_optimizer_aggr_groupby_elim',
                                                                                                                                                      '_optimizer_reduce_groupby_key',
                                                                                                                                                      '_optimizer_cost_based_transformation',
                                                                                                                                                      '_use_adaptive_log_file_sync',
                                                                                                                                                      '_undo_autotune')
                                                                                                                                                      order by 1;
                                                                                                                                                      复制

                                                                                                                                                      64.event事件 

                                                                                                                                                        col owner for a40
                                                                                                                                                        col name for a30
                                                                                                                                                        set lines 200 pages 1000
                                                                                                                                                        col pname for a10
                                                                                                                                                        col current_value for a85
                                                                                                                                                        col check_result for a42
                                                                                                                                                        select nam.inst_id,
                                                                                                                                                        nam.ksppinm pname,
                                                                                                                                                        val.ksppstvl current_value,
                                                                                                                                                        case
                                                                                                                                                        WHEN nam.ksppinm = 'event' and
                                                                                                                                                        val.ksppstvl ='28401 trace name context forever,level 1, 10949 trace name context forever,level 1' then
                                                                                                                                                        '28401,10949 event is OK! Manual check NAS event (10298)'
                                                                                                                                                        else
                                                                                                                                                        'INCORRECT'
                                                                                                                                                        end as check_result
                                                                                                                                                        from x$ksppi nam, x$ksppsv val
                                                                                                                                                        where nam.indx = val.indx
                                                                                                                                                        and nam.ksppinm IN ('event')
                                                                                                                                                        /
                                                                                                                                                        复制

                                                                                                                                                        65.SGA、PGA使用情况

                                                                                                                                                          select name,total,round(total-free,2) used,round(free,2free,round((total-free)/total*100,2) pctused from
                                                                                                                                                          (select 'SGA' name,(select sum(value)/1024/1024 from v$sga) total,
                                                                                                                                                          (select sum(bytes/1024/1024from v$sgastat where name='free memory'free from dual)
                                                                                                                                                          union
                                                                                                                                                          select name,total,round(used,2) used,round(total-used,2free,round(used/total*100,2) pctused from
                                                                                                                                                          (select 'PGA' name,(select value/1024/1024 from v$pgastat where name='aggregate PGA target parameter') total,
                                                                                                                                                          (select value/1024/1024 used from v$pgastat where name='total PGA allocated') used from dual);
                                                                                                                                                          复制

                                                                                                                                                          66.查看正在执行的SQL

                                                                                                                                                            set line 300
                                                                                                                                                            set pagesize 1000
                                                                                                                                                            select SID,SERIAL#,SQL_ID,LAST_CALL_ET,status,event from v$session where STATUS='ACTIVE' and username is not null and event not in ('SQL*Net message to client','SQL*Net message from client'order by LAST_CALL_ET;
                                                                                                                                                            复制
                                                                                                                                                              select * from v$sql where address in (select sql_address from v$session);
                                                                                                                                                              复制

                                                                                                                                                              67.通过sql_id查看sql的历史执行计划

                                                                                                                                                                set linesize 150
                                                                                                                                                                set pagesize 2000
                                                                                                                                                                select * from TABLE(dbms_xplan.display_cursor('&SQL_ID'));

                                                                                                                                                                select * from TABLE(dbms_xplan.display_cursor('&SQL_ID', &CHILD));
                                                                                                                                                                select * from table(dbms_xplan.display_awr('&sql_id')) ;
                                                                                                                                                                复制

                                                                                                                                                                68.查看正在执行SQL和执行时间

                                                                                                                                                                  select v.last_call_et,
                                                                                                                                                                  v.username,
                                                                                                                                                                  v.machine,
                                                                                                                                                                  v.program,
                                                                                                                                                                  v.module,
                                                                                                                                                                  v.sid,
                                                                                                                                                                  sql.sql_text,
                                                                                                                                                                  sql.sql_fulltext,
                                                                                                                                                                  sql.sql_id,
                                                                                                                                                                  sql.disk_reads,
                                                                                                                                                                  v.event
                                                                                                                                                                  from v$session v, v$sql sql
                                                                                                                                                                  where v.sql_address = sql.address
                                                                                                                                                                  and v.last_call_et > 0
                                                                                                                                                                  and v.status = 'ACTIVE'
                                                                                                                                                                  and v.username is not null;
                                                                                                                                                                  复制

                                                                                                                                                                  69.统计信息

                                                                                                                                                                  表级别统计信息

                                                                                                                                                                    EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname => 'cjc',tabname => 't1',estimate_percent=>100,method_opt=> 'FOR ALL INDEXED COLUMNS',CASCADE=> TRUE,no_invalidate=> FALSE,degree=>);
                                                                                                                                                                    EXEC DBMS_STATS.GATHER_TABLE_STATS('OWNER','TABLE',estimate_percent=>30,CASCADE=> TRUE);
                                                                                                                                                                    dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);
                                                                                                                                                                    EXEC DBMS_STATS.GATHER_TABLE_STATS('OWNER','TABLE',estimate_percent=>30,CASCADE=> TRUE);
                                                                                                                                                                    复制

                                                                                                                                                                    70.格式

                                                                                                                                                                    spool常用的设置

                                                                                                                                                                      set colsep' ';    //域输出分隔符
                                                                                                                                                                      set echo off;    //显示start启动的脚本中的每个sql命令,缺省为on
                                                                                                                                                                      set feedback off;  //回显本次sql命令处理的记录条数,缺省为on
                                                                                                                                                                      set heading off;   //输出域标题,缺省为on
                                                                                                                                                                      set pagesize 0;   //输出每页行数,缺省为24,为了避免分页,可设定为0。
                                                                                                                                                                      set termout off;   //显示脚本中的命令的执行结果,缺省为on
                                                                                                                                                                      set trimout on;   //去除标准输出每行的拖尾空格,缺省为off
                                                                                                                                                                      set trimspool on;  //去除重定向(spool)输出每行的拖尾空格,缺省为off
                                                                                                                                                                      复制
                                                                                                                                                                        SQL> set timing on; //设置显示“已用时间:XXXX”
                                                                                                                                                                        SQL> set autotrace on-; //设置允许对执行的sql进行分析
                                                                                                                                                                        SQL> set trimout on; //去除标准输出每行的拖尾空格,缺省为off
                                                                                                                                                                        SQL> set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
                                                                                                                                                                        SQL> set echo on //设置运行命令是是否显示语句
                                                                                                                                                                        SQL> set echo off; //显示start启动的脚本中的每个sql命令,缺省为on
                                                                                                                                                                        SQL> set feedback on; //设置显示“已选择XX行”
                                                                                                                                                                        SQL> set feedback off; //回显本次sql命令处理的记录条数,缺省为on
                                                                                                                                                                        SQL> set colsep''; //输出分隔符
                                                                                                                                                                        SQL> set heading off; //输出域标题,缺省为on
                                                                                                                                                                        SQL> set pagesize 0; //输出每页行数,缺省为24,为了避免分页,可设定为0。
                                                                                                                                                                        SQL> set linesize 80; //输出一行字符个数,缺省为80
                                                                                                                                                                        SQL> set numwidth 12; //输出number类型域长度,缺省为10
                                                                                                                                                                        SQL> set termout off; //显示脚本中的命令的执行结果,缺省为on
                                                                                                                                                                        SQL> set serveroutput on; //设置允许显示输出类似dbms_output
                                                                                                                                                                        SQL> set verify off //可以关闭和打开提示确认信息old 1和new 1的显示.
                                                                                                                                                                        复制

                                                                                                                                                                        71.HINT

                                                                                                                                                                          select /*+ full(t1) */ * from t1;--全表扫描
                                                                                                                                                                          select /*+ index(t1 idx_name) */ * from t1 where object_id>2;使用指定索引
                                                                                                                                                                          select /*+ no_index(t1 idx_name) */ * from t1 where object_id>2--不使用指定索引
                                                                                                                                                                          select /*+ index_desc(t1 idx_name) */ * from t1 where object_id=2--按索引降序顺序访问数据
                                                                                                                                                                          select /*+ index_combine(t1 idx_name) */ * from t1;--选择位图索引
                                                                                                                                                                          select /*+ index_ffs(t1 idx_name) */ from t1 where object_id <100--索引快速全表扫描(把索引当作一个表看待)
                                                                                                                                                                          select /*+ index_join(t1 idx_name1 idx_name2) */ * from t1 where object_id=5 and status='VALID'--同时使用条件列上的相关索引
                                                                                                                                                                          select /*+ index_ss(t1 index_name) */ * from t1 where object_id=99--跳跃式扫描
                                                                                                                                                                          select /*+ leading(t1,t) */ t.* from t,t1 where t1.object_id=t.object_id; --指定t1为驱动作,优化器先访问此表
                                                                                                                                                                          select /*+ ordered */ t.* from t,t1 where t1.id=t.id; --指定按from 后面表的顺序选择驱表,t作为驱动表
                                                                                                                                                                          select /*+ use_nl(t1,t) */ t.* from t1,t where t1.object_id=t.object_id;--使用NEST LOOP表连接,适合含有小表数据关联,如一大一小(有别名,必须用别名)
                                                                                                                                                                          select /*+ use_hash(t1,t) */ t.* from t1,t where t1.object_id=t.object_id;--使用HASH表连接,适合两个大表关联
                                                                                                                                                                          select /*+ use_merge(t1,t) */t.* from t1,t where t1.object_id=t.object_id;--使用合并排序表连接
                                                                                                                                                                          select /*+ no_use_nl(t1,t) */ t.* from t1,t where t1.object_id=t.object_id; --不使用NEST LOOP表连接
                                                                                                                                                                          select /*+ no_use_hash(t1,t) */ t.* from t1,t where t1.object_id=t.object_id;--不使用HASH表连接
                                                                                                                                                                          select /*+ no_use_merge(t1,t) */t.* from t1,t where t1.object_id=t.object_id; --不使用合并排序表连接
                                                                                                                                                                          /*+OPTIMIZER_FEATURES_ENABLE('10.2.0.4')*/
                                                                                                                                                                          SELECT /*+ PUSH_PRED (v1) */ t1.c1,v1.c1
                                                                                                                                                                          /*+no_push_pred()*/
                                                                                                                                                                          /*+ no_unnest */
                                                                                                                                                                          /*+ unnest */
                                                                                                                                                                          复制

                                                                                                                                                                          72.QPS,TPS

                                                                                                                                                                          QPS(Queries Per Second,每秒查询数)

                                                                                                                                                                          TPS(Transactions Per Second,每秒处理事务数)

                                                                                                                                                                          --一分钟QPS

                                                                                                                                                                            select value from v$sysmetric
                                                                                                                                                                            where metric_name in ('Executions Per Sec')
                                                                                                                                                                            and group_id = 2;
                                                                                                                                                                            复制

                                                                                                                                                                            --15秒QPS

                                                                                                                                                                              select value from v$sysmetric where metric_name in ('Executions Per Sec'and group_id = 3;
                                                                                                                                                                              复制

                                                                                                                                                                              TPS:

                                                                                                                                                                                select (select VALUE from v$sysmetric where metric_name in ('User Commits Per Sec'))
                                                                                                                                                                                + (select VALUE from v$sysmetric where metric_name in ('User Rollbacks Per Sec')) as TPS FROM DUAL;
                                                                                                                                                                                复制

                                                                                                                                                                                73.回收高水位

                                                                                                                                                                                  alter table XXX enable row movement;
                                                                                                                                                                                  alter table XXX shrink space;
                                                                                                                                                                                  alter table XXX disable row movement;
                                                                                                                                                                                  复制

                                                                                                                                                                                  检查索引状态

                                                                                                                                                                                    select owner,table_name,status from dba_indexes where table_name='XXX';
                                                                                                                                                                                    复制

                                                                                                                                                                                    74.查询段大小排名前20

                                                                                                                                                                                      set line 300
                                                                                                                                                                                      col owner for a15
                                                                                                                                                                                      col segment_name for a30
                                                                                                                                                                                      set pagesize 100
                                                                                                                                                                                      select * from
                                                                                                                                                                                      (select owner,segment_name,segment_type,BYTES/1024/1024/1024 GB from dba_segments order by 4 desc)
                                                                                                                                                                                      where rownum<=20;
                                                                                                                                                                                      复制

                                                                                                                                                                                      查询段大小排名前20总大小

                                                                                                                                                                                        select sum(GB) from
                                                                                                                                                                                        (select owner,segment_name,segment_type,BYTES/1024/1024/1024 GB from dba_segments order by 4 desc)
                                                                                                                                                                                        where rownum<=20;
                                                                                                                                                                                        复制

                                                                                                                                                                                        75. 内存、CPU前10

                                                                                                                                                                                          消耗内存前10名
                                                                                                                                                                                          ps auxw|head -1;ps auxw|sort -rn -k4|head -10


                                                                                                                                                                                          消耗CPU前10名
                                                                                                                                                                                          ps auxw|head -1;ps auxw|sort -rn -k3|head -10
                                                                                                                                                                                          复制

                                                                                                                                                                                          76.内存使用率

                                                                                                                                                                                          ##centos6 or suse os

                                                                                                                                                                                            usedMem1=`free -k|grep "cache:" |awk '{print $3}'`
                                                                                                                                                                                            shmem=`cat /proc/meminfo |grep -w Shmem|awk '{print $2}'`
                                                                                                                                                                                            usedMem=`expr $usedMem1 + $shmem`
                                                                                                                                                                                            复制

                                                                                                                                                                                            ##redhat7 os

                                                                                                                                                                                              usedMem1=`free -k|grep "Mem:" |awk '{print $3}'`
                                                                                                                                                                                              shmem=`cat /proc/meminfo |grep -w Shmem|awk '{print $2}'`
                                                                                                                                                                                              usedMem=`expr $usedMem1 + $shmem`
                                                                                                                                                                                              复制

                                                                                                                                                                                              77.数据库启动shell脚本

                                                                                                                                                                                                cat db_startup.sh
                                                                                                                                                                                                datename="`date +%Y%m%d%s`"
                                                                                                                                                                                                su - oracle -c"
                                                                                                                                                                                                lsnrctl start;
                                                                                                                                                                                                sqlplus / as sysdba <<EOF
                                                                                                                                                                                                spool /home/oracle/shell/outlog/$datename.txt
                                                                                                                                                                                                startup;
                                                                                                                                                                                                prompt database startup;
                                                                                                                                                                                                select STATUS from v\\\$instance;
                                                                                                                                                                                                prompt alter system register;
                                                                                                                                                                                                alter system register;
                                                                                                                                                                                                EOF
                                                                                                                                                                                                lsnrctl status;
                                                                                                                                                                                                exit;
                                                                                                                                                                                                "
                                                                                                                                                                                                复制

                                                                                                                                                                                                78.数据库关闭shell脚本

                                                                                                                                                                                                  cat db_shutdown.sh
                                                                                                                                                                                                  datename="`date +%Y%m%d%s`"
                                                                                                                                                                                                  su - oracle -c"
                                                                                                                                                                                                  lsnrctl stop;
                                                                                                                                                                                                  sqlplus / as sysdba <<EOF
                                                                                                                                                                                                  spool /home/oracle/shell/outlog/$datename.txt
                                                                                                                                                                                                  show user;
                                                                                                                                                                                                  select STATUS from v\\\$instance;
                                                                                                                                                                                                  shutdown immediate;
                                                                                                                                                                                                  prompt database shutdown;
                                                                                                                                                                                                  exit
                                                                                                                                                                                                  EOF
                                                                                                                                                                                                  "
                                                                                                                                                                                                  复制

                                                                                                                                                                                                  ###chenjuchao 20250318###

                                                                                                                                                                                                  ❗ ❗欢迎关注公众号《IT小Chen》❗ ❗

                                                                                                                                                                                                  文章转载自小周的数据库进阶之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                                                                                                                                                  评论