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误删除数据的恢复方法
- 百看不厌的数据库排行榜