Oracle常用操作

1 查询Oracle 版本号

select * from v$version;

2 查看procress&session的参数值和占用值

ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程序 解决方案

-- 查看procress&session的参数值和占用值

show parameter processes;
select count(*) from v$process;

show parameter sessions;
select count(*) from v$session;

alter system set processes=1000 scope=spfile;
alter system set sessions=1105 scope=spfile;

show parameter spfile
值为空,表示数据库以pfile启动
create spfile from pfile;

注意一下processes的值和sessions的值,Oracle官方文档中要求:
sessions=processes*1.5+5
纠正sessions=(1.1*processes+5)

重启数据库:
shutdown immediate;
startup;

3 查看表空间使用率

-- 查看表空间使用率
SELECT * FROM (
 SELECT A.TABLESPACE_NAME
 ,TO_CHAR(A.BYTES/1024/1024,'99,999.999') TOTAL_BYTES
 ,TO_CHAR(B.BYTES/1024/1024,'99,999.999') FREE_BYTES
 ,TO_CHAR(A.BYTES/1024/1024 - B.BYTES/1024/1024,'99,999.999') USE_BYTES
 ,TO_CHAR((1 - B.BYTES/A.BYTES)*100,'99.99') || '%'USE
FROM (SELECT TABLESPACE_NAME,
    SUM(BYTES) BYTES
  FROM DBA_DATA_FILES
 GROUP BY TABLESPACE_NAME) A,

(SELECT TABLESPACE_NAME,
  SUM(BYTES) BYTES
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) B

WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME

UNION ALL

SELECT C.TABLESPACE_NAME,
TO_CHAR(C.BYTES/1024/1024,'99,999.999') TOTAL_BYTES,
TO_CHAR( (C.BYTES-D.BYTES_USED)/1024/1024,'99,999.999') FREE_BYTES,
TO_CHAR(D.BYTES_USED/1024/1024,'99,999.999') USE_BYTES,
TO_CHAR(D.BYTES_USED*100/C.BYTES,'99.99') || '%'USE

FROM

(SELECT TABLESPACE_NAME,SUM(BYTES) BYTES
FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME) C,
  (SELECT TABLESPACE_NAME,SUM(BYTES_CACHED) BYTES_USED
   FROM V$TEMP_EXTENT_POOL GROUP BY TABLESPACE_NAME) D
   WHERE C.TABLESPACE_NAME = D.TABLESPACE_NAME
  )

ORDER BY TABLESPACE_NAME

4 显示memory_target参数

show parameter target;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0
db_flashback_retention_target        integer     1440
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     0
memory_max_target                    big integer 52480M
memory_target                        big integer 52480M
parallel_servers_target              integer     128
pga_aggregate_target                 big integer 0
sga_target                           big integer 0

5 查看临时表空间的使用情况


-- 查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)
SELECT temp_used.tablespace_name,
    total - used as "Free",
    total as "Total",
    round(nvl(total - used, 0) * 100 / total, 3) "Free percent"
FROM (SELECT tablespace_name, SUM(bytes_used) / 1024 / 1024 used
    FROM GV_$TEMP_SPACE_HEADER
    GROUP BY tablespace_name) temp_used,
    (SELECT tablespace_name, SUM(bytes) / 1024 / 1024 total
    FROM dba_temp_files
    GROUP BY tablespace_name) temp_total
WHERE temp_used.tablespace_name = temp_total.tablespace_name

6 扩展临时表空间

-- 扩展临时表空间
ALTER TABLESPACE REFORMEREMS_TEMP ADD TEMPFILE 'D:\ORACLEDATA\REFORMEREMS_TEMP04.DBF' 
SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 10G; 

-- 扩展数据表空间
ALTER TABLESPACE REFORMEREMS_DATA ADD DATAFILE 'E:\ORACLEDATA\REFORMEREMS_DATA01.DBF' 
SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 10G; 

7 为充分利用内存资源,对Oracle内存参数做了如下调整

alter system set memory_target = 52430m scope = spfile;
alter system set sga_max_size=40960M scope=spfile;
alter system set sga_target=40960M scope=spfile;
alter system set pga_aggregate_target=10240M scope=spfile;
shutdown immediate
show parameter memory_target

根据已启动的数据库(配置信息已经加载到内存)直接生成pfile和spfile
生成pfile:SQL> create pfile from memory;
生成spfile:SQL> create spfile from memory;

pfile是啥呢,pfile的全名就是parameter file,参数文件。
spfile是Oracle Database 9i才开始出现的,spfile是一个二进制文件,不可直接编辑,spfile之后,数据库默认就是读取spfile的配置启动和初始化参数 ,加载参数到内存中。

解决memory_target设置过小导致不能启动数据库的问题     
sqlplus / as sysdba
create pfile='c:/tmp/init.ora' from spfile;
startup pfile='c:/tmp/init.ora';

8 Oracle解决查询表空间速度慢的问题

-- 解决查询表空间速度慢的问题
select count(*) from sys.RECYCLEBIN$;
conn / as sysdba;
purge dba_recyclebin;
注:频繁的重建数据表可能会导致此问题。

扩展阅读:

  • ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 解决方案
  • ORA-12516 TNS: 监听程序找不到符合协议堆栈要求的可用处理程序
  • Oracle 内存分配和调优总结
  • ORA-01652 无法通过128 (在表空间 TEMP中)扩展temp段 剖析解决
  • Oracle查询指定索引提高查询效率
  • Oracle Sql查询突然变慢
  • Oracle查看被锁的表和解锁
  • ORACLE中的锁(Oracle Lock Mode)
  • Oracle并行Update
  • 基于Oracle数据库锁机制,解决集群中的并发访问问题
  • 深入理解Oracle的并行操作
  • Oracle的update语句优化研究 批量更新
  • Oracle 内存分配和调优 总结
  • Oracle误删除数据的恢复方法
  • 百看不厌的数据库排行榜

你可能感兴趣的:(Oracle常用操作)