ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 10g学习(1)

10g学习(1)

原创 Linux操作系统 作者:lhl1212 时间:2012-09-16 22:26:37 0 删除 编辑
10g学习(1)

记录的是自己以前忽略的东西,不一定是10g新的

CREATE DATABASE
****************************************
创建数据库时,系统表空间一定要指定创建本地管理的表空间,否则默认为字典管理的
创建数据库时,一定要指定default temporary tablespace,否则ORACLE会在默认路径自己创建一个
创建数据库时,一定要指定undo tablespace,否则Oracle会在默认路径按照默认名称创建SYS_UNDOTBS
如果创建了本地管理的SYSTEM表空间,那么系统表空间将不在可能用于临时表空间的操作,而且,临时表空间也只能是本地管理的

DATABASE_PROPERTIES
****************************************
可以查询默认的临时表空间,用户表空间,以及一些NLS属性

BIGFILE
****************************************
BIGFILE的表空间只能包含1个数据文件,该数据文件可以有4G个块,也就是说如果使用8K的块大小的话,可以有用4*1024*1024*1024*8K/1024/1024/1024=32T的大小
一个数据库最多可以有64K个数据文件,也就是说数据库的最大容量可以达到64000*32=2048000T
SQL> alter database SET DEFAULT BIGFILE TABLESPACE;

Database altered.

SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'DEFAULT_TBS_TYPE';

PROPERTY_VALUE
--------------------------------------------------------------------------------
BIGFILE

SQL> alter database SET DEFAULT SMALLFILE TABLESPACE;

Database altered.

SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'DEFAULT_TBS_TYPE';

PROPERTY_VALUE
--------------------------------------------------------------------------------
SMALLFILE

数据库时区文件
****************************************
[oracle@westzq5 ~]$ cd $ORACLE_HOME/oracore/zoneinfo/
[oracle@westzq5 zoneinfo]$ ls -al
total 564
drwxr-x--- 2 oracle dba 4096 Nov 20 19:41 .
drwxr-x--- 4 oracle dba 4096 Nov 20 19:40 ..
-rw-r----- 1 oracle dba 2299 Nov 14 2003 readme.txt
-rw-r----- 1 oracle dba 384987 Jun 21 2005 timezlrg.dat --默认时区文件
-rw-r----- 1 oracle dba 149260 Jun 21 2005 timezone.dat --smaller时区文件

--修改时区文件:
Shut down the database.
Set the ORA_TZFILE environment variable to the full path name of the timezone.dat file.
Restart the database.
--查询时区文件支持的时区
SELECT * FROM V$TIMEZONE_NAMES;
--查询SESSION中设置的时区
SELECT SESSIONTIMEZONE FROM DUAL;
--在SESSION级别设置时区
ALTER SESSION SET TIME_ZONE = local;
ALTER SESSION SET TIME_ZONE = dbtimezone;
ALTER SESSION SET TIME_ZONE = '-05:00';
ALTER SESSION SET TIME_ZONE = 'Europe/London';
--或者
$ ORA_SDTZ='OS_TZ'
$ export ORA_SDTZ
$ ORA_SDTZ='-05:00'
$ export ORA_SDTZ
--查询数据库的时区
SELECT DBTIMEZONE FROM DUAL;
SELECT property_name, property_value
FROM database_properties
WHERE property_name='DBTIMEZONE';
SELECT name, value$
FROM props$
WHERE name='DBTIMEZONE';
--设置数据库的时区
CREATE DATABASE ...
SET TIME_ZONE='Europe/London';
--或者 (修改后需要重启)
ALTER DATABASE SET TIME_ZONE = '-05:00';
ALTER DATABASE SET TIME_ZONE = 'Europe/Lisbon';
--查询在指定时区的当地时间
SELECT TZ_OFFSET('Europe/London') FROM DUAL;
--当前使用的时区文件,如果查询的值接近与700,那么使用的是timezone.dat,如果接近于1300,那么是timezlrg.dat
SELECT COUNT(*) FROM v$timezone_names;

FORCE LOGGING
****************************************
Oracle推荐在数据库级别或者表空间级别设置FORCE LOGGING,但是不要同时设置。
个人理解这样只是为了便于管理,防止数据库级别的设置覆盖表空间级别的
ALTER DATABASE 【NO】 FORCE LOGGING;
如果重建了空间文件,FORCE LOGGING将失效,需要重新开启FORCE LOGGING模式

GLOBAL_NAME
****************************************
使用ALTER DATABASE RENAME GLOBAL_NAME修改
或者修改DB_NAME,DB_DOMAIN,需要重启并重建控制文件

flash recovery area
****************************************
设置flash recovery area前,必须关闭LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST

automatic shared memory management
****************************************
必须设置STATISTICS_LEVEL为typical/all,才能使用该功能
相关的SGA视图:V$SGAINFO,V$SGA,V$SGASTAT,V$SGA_DYNAMIC_COMPONENTS,V$SGA_DYNAMIC_FREE_MEMORY,V$SGA_RESIZE_OPS,V$SGA_CURRENT_RESIZE_OPS,V$SGA_TARGET_ADVICE
迁移SGA到自动管理模式时,估计SGA_TARGET的大小
SELECT ((SELECT SUM (VALUE) FROM v$sga) 
(SELECT current_size FROM v$sga_dynamic_free_memory)
) "SGA_TARGET"
FROM dual;

RESET 初始化参数****************************************
ALTER SYSTEM RESET OPEN_CURSORS SCOPE = SPFILE SID = '*'; 
必须指定scope,sid两个参数,而且顺序不能颠倒,否则会报错

修改系统状态
****************************************
ALTER DATABASE OPEN READ ONLY;
ALTER SYSTEM QUIESCE RESTRICTED; 
该语句会等待SESSION变为INACTIVE,在等待过程中用如下SQL查询
select bl.sid, user, osuser, type, program
from v$blocking_quiesce bl, v$session se
where bl.sid = se.sid;
ALTER SYSTEM UNQUIESCE;
ALTER SYSTEM SUSPEND
ALTER SYSTEM RESUME

共享服务器
****************************************
相关参数:SHARED_SERVERS,MAX_SHARED_SERVERS,SHARED_SERVER_SESSIONS,DISPATCHERS,MAX_DISPATCHERS(可以忽略的参数,只是为了以后可能实现的DIS自动调整特性),CIRCUITS(设置队列的长度,控制其在SGA中分配的内存大小)
开启共享服务器
SHARED_SERVERS>0,如果dispatcher参数没有配置,那么会自动配置一个
为了向后兼容,如果设置了DISPATCHERS,而没有设置SHARED_SERVERS,也将开始共享服务器(HARED_SERVERS默认为1)
SHARED_SERVERS的设置
一般来说10个连接1个SHARED_SERVERS,可以根据系统的业务负载来设置
SHARED_SERVERS的数量由PMON控制
如果不设置MAX_SHARED_SERVERS参数,那么PMON进程会创建尽可能多的SHARED_SERVERS进程,但是进程数量不可以超过PROCESSES参数,空闲程序槽的最小值(一般为总程序槽的八分之一或者在PROCESSES小于24时,为2个程序槽),系统资源限制
在资源不足的系统中,过多的SHARED_SERVERS进程会导致大量的swapping 
SHARED_SERVER_SESSIONS设置
设置能并发的共享服务器用户session的最大值,设置该参数为共享服务器保留SESSION
CIRCUITS设置
虚拟回路的最大数量,其限制使用的共享内存的数量。其受到dispatchers参数和系统资源的限制。
关闭DISPATCHER ALTER SYSTEM SHUTDOWN IMMEDIATE 'D002';
V$DISPATCHER,V$DISPATCHER_CONFIG,V$DISPATCHER_RATE,V$QUEUE,V$SHARED_SERVER,V$CIRCUIT,V$SHARED_SERVER_MONITOR,V$SGA,V$SGASTAT,V$SHARED_POOL_RESERVED

PROCESSES和SESSIONS****************************************
缺省sessions=processes×(1+10%)+5
Sessions 参数指定了一个 Instance中能够同时存在的sessions数量,或者说,就是能同时登陆到数据库的并发用户数。
Processes参数指定了Instance在OS层面所能同时运行的进程数。

FMON进程(没怎么明白,也没找到什么文档,先记录在这)
****************************************
当FILE_,MAPPING参数设置为TRUE时,将出现该进程
The database communicates with the mapping libraries provided by storage vendors through an external non-Oracle Database process that is spawned by a background process called FMON. FMON is responsible for managing the mapping information. When you specify the FILE_MAPPING initialization parameter for mapping data files to physical devices on a storage subsystem, then the FMON process is spawned.
When you specify the FILE_MAPPING initialization parameter for mapping datafiles to physical devices on a storage subsystem, then the FMON process is present.

并行服务器
****************************************
并行服务器的个数将影响SQL执行,恢复,复制的效率
ALTER SESSION DISABLE PARALLEL DML|DDL|QUERY
ALTER SESSION ENABLE PARALLEL DML|DDL|QUERY
ALTER SESSION FORCE PARALLEL DML|DDL|QUERY
ALTER SESSION FORCE PARALLEL DDL PARALLEL 5;

监听文件中的extproc
****************************************
为了调用一个外部储存过程,1个应用警报1个网络监听过程,其开启一个外部程序代理。
默认的代理名称为extproc,该代理必须和数据库服务器在同一个主机上

关于KILL SESSION
****************************************
当正在执行网络IO或者回滚事务时,活跃的SESSION不会被中断
alter system 语句会等待60秒来等待SESSION可以被中断,如果等待1分钟后,SESSION仍然无法被中断,那么发出中断操作的SESSION将收到消息,指出SESSION已经被辨识为将被中断
SQL> SELECT SID,SERIAL#,STATUS,SERVER
FROM V$SESSION
WHERE USERNAME = 
'HR'
;

SID SERIAL# STATUS SERVER
---------- ---------- -------- ---------
80 INACTIVE DEDICATED

SQL> alter system kill session '148,80'
;

System altered.

SQL> SELECT SID, SERIAL#, STATUS, SERVER
FROM V$SESSION
WHERE USERNAME = 
'HR'
;

SID SERIAL# STATUS SERVER
---------- ---------- -------- ---------
148 80 KILLED PSEUDO

系统警告
****************************************
可以通过DBMS_SERVER_ALERT.SET_THRESHOLD / GET_THRESHOLD 来查看 / 设置警报的阀值
通过DBMS_AQ / DBMS_AQADM 来访问和读取警告队列中的警告信息
DBA_THRESHOLDS:lists the threshold settings defined for the instance.
DBA_OUTSTANDING_ALERTS:describes the outstanding alerts in the database.
DBA_ALERT_HISTORY:lists a history of alerts that have been cleared.
V$ALERT_TYPES:provides information such as group and type for each alert.
V$METRICNAME:contains the names, identifiers, and other information about the system metrics.
V$METRIC and V$METRIC_HISTORY:contain system-level metric values in memory.

ALERT日志的重要信息
****************************************
ORA-600:internal errors 
ORA-1578:block corruption errors 
ORA-60:deadlock errors

锁相关:
****************************************
catblock.sql utllockt.sql
V$LOCK,DBA_BLOCKERS,DBA_WAITERS,DBA_DDL_LOCKS,DBA_DML_LOCKS,DBA_LOCK, DBA_LOCK_INTERNAL

V$SESS_IO
****************************************
SESSION级别的IO统计
BLOCK_GETS,CONSISTENT_GETS,PHYSICAL_READS,BLOCK_CHANGES,CONSISTENT_CHANGES

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/611609/viewspace-743713/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 10g学习(2)
请登录后发表评论 登录
全部评论

注册时间:2008-12-08

  • 博文量
    252
  • 访问量
    493560