Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2916506
  • 博文数量: 412
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 7374
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-25 15:15
个人简介

学习是一种信仰。

文章分类

全部博文(412)

文章存档

2014年(108)

2013年(250)

2010年(11)

2009年(43)

我的朋友

分类: Oracle

2013-11-30 20:42:12

Oracle10g数据库系统管理
滕永昌 著
机械工业出版社
2006年1月 


第一章:Oracle10g数据库新特性


1、Oracle Database 10g的产品组成:


2、Oracle 10g数据库系统管理:
(1)电子邮件自动通知功能;
(2)不同平台之间的表空间传输;
(3)闪回(Flashback)功能;
(4)数据库配置与升级工具的简化;
(5)刷新数据库缓冲区;
(6)数据库资源管理器;
(7)系统默认表空间;
(8)大文件表空间;
(9)临时表空间组;
(10)修改表空间名称;
(11)自动备份与恢复;
(12)自动共享内存管理;
(13)自动存储管理;
(14)数据泵技术;
(15)自动Undo管理;
(16)动态内存管理;


3、Oracle 10g服务器参数文件(Server Parameter File,spfile)
spfile是存储于服务器端的二进制文件,解决了Oracle数据库中一直无法解决的不能在线修改数据库参数的问题。使用spfile可以通过sql命令行在线修改数据库参数,不必重新启动数据库。
在Oracle 10g中,既可以使用传统的文本参数文件pfile,也可以使用新的二进制文件spfile,两者可以相相互转换。
数据库启动时,Oracle 10g默认读取spfile,如果要使用pfile,必须使用PFILE指出pfile名及路径。


第二章:数据库名、实例名、服务名、字符集
一、数据库名(DB_NAME)
数据库名是用于区分一个数据库的内部标示,在pfile中用DB_NAME表示,不允许修改,因为修改后导致pfile中的DB_NAME与控制文件中的二进制表示的DB_NAME
不同,报ORA-01103错误:database name '...' in controlfile is not '...';
windows下:D:\oracle\product\10.2.0\oradata\DB_NAME\...,如:D:\oracle\product\10.2.0\oradata\orcl\...中,‘orcl’是DB_NAME;
unix下:$ORACLE_HOME\product\10.2.0\oradata\DB_NAME\...,
数据库名在安装时确定,被写入多处,所以尽量不要修改数据库名。


1、查询数据库名:
SQL> select name from v$database;
NAME
---------
ORCL


SQL> show parameter db
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
db_16k_cache_size                     big integer 0
db_2k_cache_size                     big integer 0
db_32k_cache_size                     big integer 0
db_4k_cache_size                     big integer 0
db_8k_cache_size                     big integer 0
db_block_buffers                     integer         0
db_block_checking                     string         FALSE
db_block_checksum                     string         TRUE
db_block_size                             integer         8192
db_cache_advice                      string         ON
db_cache_size                             big integer 0
db_create_file_dest                     string
db_create_online_log_dest_1             string
db_create_online_log_dest_2             string
db_create_online_log_dest_3             string
db_create_online_log_dest_4             string
db_create_online_log_dest_5             string
db_domain                             string
db_file_multiblock_read_count             integer         16
db_file_name_convert                     string
db_files                             integer         200
db_flashback_retention_target             integer         1440
db_keep_cache_size                     big integer 0
db_name                              string         orcl
db_recovery_file_dest                     string         c:\oracle\product\10.2.0/flash
                                                 _recovery_area
db_recovery_file_dest_size             big integer 2G
db_recycle_cache_size                     big integer 0
db_unique_name                             string         orcl
db_writer_processes                     integer         1
dbwr_io_slaves                             integer         0
rdbms_server_dn                      string
standby_archive_dest                     string         %ORACLE_HOME%\RDBMS
standby_file_management              string         MANUAL


方法三:在pfile中查找:db_name;


2、修改数据库名
(1)数据库关闭,修改pfile中的db_name,control_files;
(2)重新创建控制文件


二、数据库实例名(INSTANCE_NAME)
DB_NAME是用于区分一个数据库的内部标识,而INSTANCE_NAME则用于和OS联系;例如,要和某一个数据库服务器连接,则必须知道INSTANCE_NAME,知道DB_NAME是没有作用的。
windows:C:\oracle\product\10.2.0\admin\orcl\pfile\init.ora
UNIX:$ORACLE_HOME\\product\10.2.0\admin\orcl\pfile\init$ORACLE_SID.ora($ORACLE_SID就是INSTANCE_NAME)


DB_NAME和INSTACNE_NAME一般是一一对应的关系,但在并行服务器结构中是一对多的关系;


1、查询INSTANCE_NAME:
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
orcl


SQL> show parameter instance_name
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
instance_name                             string         orcl
SQL> 


方法三:在pfile中查找instance_name;


2、INSTANCE_NAME与ORACLE_SID的关系:
instance_name是oracle数据库参数,而ORACLE_SID是OS环境变量;OS要想使用instance_name,必须使用ORACLE_SID;


-------ORACLE_SID必须设置成INSTANCE_NAME
E:\study\database\oracle>set ORACLE_SID=ora10g
E:\study\database\oracle>sqlplus sys/sys as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 8月 16 16:53:38 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
ERROR:
ORA-12560: TNS: 协议适配器错误
--------ORA-12560表示在OS中没有找到所定义的实例,出现这个错误可能有两个原因:一是数据库实例名被错误修改;二是oracle服务没有正常启动。
E:\study\database\oracle>set ORACLE_SID=orcl
E:\study\database\oracle>sqlplus sys/sys as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 8月 16 16:54:19 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> 


3、INSTANCE_NAME与网络连接:
在OS中连接远程数据库时,使用sqlplus test/test@unix01,其中unix01是主机字符串。
在网络驱动版本是SQL*Net(Oracle7)、Net8(Oracle8)时,主机字符串使用数据库实例名;当网络驱动版本是Net8iOracle9i)、Oracle 10g Net Serbices(Oracle 10g)时,主机字符串使用数据库服务名。


三、数据库域名(DB_DOMAIN)
以下两种情况下要考虑使用数据库域名:
(1)Oracle分布式环境下,两个数据库之间要通过数据库链路进行数据的远程访问;
(2)同一网络环境下,两个数据库的DB_NAME相同;


全局数据库名的组成:DB_NAME.DB_DOMAIN;


数据库域名在安装数据库时确定,在安装oracle 10g时,在确定数据库名时,若输入:orcl.test.com.cn,则orcl为DB_NAME,test.com.cn为DB_DOMAIN;若只输入orcl,则该数据库没有DB_DOMAIN;


1、查询数据库域名:
SQL> select value from v$parameter where name='db_domain';
VALUE
--------------------------------------------------------------------------------


SQL> show parameter domain
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
db_domain                             string
SQL> 


方法三:在pfile中查找:db_domain


四、全局数据库名
全局数据库名的组成:DB_NAME.DB_DOMAIN;
安装数据库时要求输入全局数据库名,如果没有定义db_domain,则全局数据库名与db_name相同;


五、数据库服务名(SERVICE_NAMES)
SERVICE_NAMES与全局数据库名相同;
1、查询数据库服务名:
SQL> r
  1* select value from v$parameter where name='service_names'
VALUE
--------------------------------------------------------------------------------
orcl


SQL> show parameter service_names;
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
service_names    
                         string         orcl
SQL> show parameter service
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
service_names  
                           string         orcl
SQL> show parameter names
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
global_names                             boolean         FALSE
service_names                             string         orcl
SQL> 


方法三:在pfile中查找:service_names


2、service_names与网络连接:
9i,10g用数据库服务名连接;


3、修改db_domain:
(1)关闭数据库,修改pfile中的db_domain、service_names;
(2)启动数据库;


六、Oracle 10g中的sys用户:




第三章Oracle10g服务器参数文件


1、spfile(Server Parameter File,SPFILE)是存储于服务器端的二进制文件,它解决了oracle数据库一直无法解决的不能在线修改数据库参数这一技术难题。使用spfile可以通过SQL命令行在线修改参数文件,而不用再重新启动数据库。
spfile和pfile(文本参数文件)可以相互转换。


windows下:
pfile:C:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.672010113458(修改一次产生一个)
spfile:C:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA




2、oracle10g取消了一些参数,增加了一些参数;
增加了很多自动管理功能:自动Undo管理;默认临时表空间;动态内存管理;




3、服务器参数文件spfile
oracle10g启动时,默认读取spfile,如果没有spfile,则读取pfile。
(1)检测数据库是否有spfile,以及是否使用spfile运行:
SQL> show parameter spfile
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
spfile                                     string         C:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DATABASE\SPFILEORCL.ORA
SQL> startup pfile='C:\oracle\product\10.2.0\admin\orcl\pfile\test_pfile.ora';
ORACLE 例程已经启动。


Total System Global Area  603979776 bytes
Fixed Size                    1250380 bytes
Variable Size                  163580852 bytes
Database Buffers          432013312 bytes
Redo Buffers                    7135232 bytes
ORA-00205: ?????????, ??????, ???????


SQL> show parameter spfile
NAME                                     TYPE                    VALUE
------------------------------------ ---------------------- ------------------------------
spfile                                     string


(2)由spfile创建pfile
SQL> create pfile='C:\oracle\product\10.2.0\admin\orcl\pfile\test_pfile2.ora'
  2  from spfile='C:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA';


(3)由pfile创建spfile
SQL> create spfile='C:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL2.ORA'
  2  from pfile;


4、在线修改数据库参数
SQL> alter system set
  2  job_queue_processes=50
  3  COMMENT='temporary change for test 20100904'
  4  SCOPE=MEMORY;
COMMENT:将注释写入参数文件中;
SCOPE:MEMORY立即有效,重启失效;SPFILE重启有效,永久有效;BOTH上述两种;
以spfile启动时,默认是BOTH;以pfile启动时,默认是MEMORY;


第四章Oracle10g数据库体系结构
体系结构包括四个部分:物理结构,逻辑结构,内存结构,进程结构。


一、物理结构:
数据文件,控制文件,日志文件;
1、数据文件:
SQL> select tablespace_name,bytes,file_name from dba_data_files;


TABLESPACE_NAME                     BYTES AUT
------------------------------ ---------- ---
FILE_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
USERS                                  5242880 YES
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF


SYSAUX                                283115520 YES
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF


UNDOTBS1                         36700160 YES
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF


SYSTEM                                513802240 YES
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF


EXAMPLE                         104857600 YES
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF


(1)数据块block
数据块(block)是oracle数据库中最小的数据组织单位,由参数db_block_size确定;
SQL> show parameter db_block_size;
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
db_block_size                             integer         8192


(2)修改数据文件的大小
SQL> select * from dba_free_space;
SQL> r
  1* select file_id,bytes,blocks,file_name from dba_data_files where file_name like '%USER%'


   FILE_ID        BYTES          BLOCKS
---------- ---------- ----------
FILE_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         4    5242880             640
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF


SQL> alter database datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF' resize 10000000;


SQL> select file_id,bytes,blocks,file_name from dba_data_files where file_name like '%USER%';
 
   FILE_ID        BYTES          BLOCKS
---------- ---------- ----------
FILE_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         4   10002432            1221
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF


数据文件默认具有自动扩展属性:
SQL> select bytes,autoextensible,maxbytes,file_name from dba_data_files;
     BYTES AUT         MAXBYTES
---------- --- ----------
FILE_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  10002432 YES 3.4360E+10
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF


 283115520 YES 3.4360E+10
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF


  36700160 YES 3.4360E+10
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF


 513802240 YES 3.4360E+10
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF


 104857600 YES 3.4360E+10
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF


创建表空间:
SQL> create tablespace tests
  2  datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\test1.dbf' size 500m
  3  autoextend on
  4  next 50m
  5  maxsize 1000M;


为表空间增加数据文件:
SQL> Alter tablespace tests
  2  add datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\test2.dbf' size 50m
  3  autoextend off;


注意:DBA应该使用alter database datafile命令将数据文件的自动扩展属性关闭或增加maxsize限定,以免数据文件无限制地扩展,否则,等dba发现时,可能数据文件已过于庞大,无法压缩,对数据块安全运行产生问题。


2、重做日志文件
每个数据库至少有两个日志文件组,每组有一个或多个日志文件,oracle在多个日志组间切换;
同组中的日志文件时镜像关系;
oracle默认安装3个日志文件组,每组一个日志文件;
(1)日志工作原理:
假设3个日志文件组,每个日志文件组包含3个日志文件。oracle首先在一个日志文件组中写日志信息,当该组写满时,系统自动切换到下一个日志文件组;当完成一次循环时,系统又回到第一个日志文件组,如何处理已经产生的日志信息决定于数据库的运行模式。
SQL> select * from v$log;
SQL> select * from v$logfile;
SQL> alter system switch logfile;
日志先产生于日志缓冲区,然后由日志写入进程LGWR写入日志文件组,在日志切换时由归档进程ARCH写到磁盘或者磁带,成为归档日志。
(2)数据库运行模式:
归档日志是指日志切换前写到磁盘或者磁带上的日志;
SQL> select dbid,name,log_mode from v$database;
      DBID NAME      LOG_MODE
---------- --------- ------------
1251508693 ORCL      NOARCHIVELOG
oracle10g默认安装为noarchivelog模式,为保证数据库安全,实际运行的数据库应改为archivelog模式。
(3)CKPT进程
系统改变号(System Change Number,SCN);
数据库头的同步号,数据文件,日志文件中的检查点号必须实时相同:
SQL> select checkpoint_change# from v$database;


CHECKPOINT_CHANGE#
------------------
           1295932


SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE#
------------------
           1295932
           1295932
           1295932
           1295932
           1295932
           1295932
           1295932


SQL> r
  1* select status, first_change# from v$log
STATUS                 FIRST_CHANGE#
---------------- -------------
INACTIVE               1279914
CURRENT                1295932
INACTIVE               1255766


(4)增加、删除、移动、清除日志文件:
增加与删除日志文件组:
SQL> alter database add logfile
  2  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO04.LOG'
  3  size 50M;


SQL> alter database add logfile
  2  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO05.LOG'
  3  size 50M;


SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS            FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
         1            1              23   52428800             1 NO  INACTIVE                  1279914 14-9月 -10
         2            1              24   52428800             1 NO  CURRENT                  1295932 14-9月 -10
         3            1              22   52428800             1 NO  INACTIVE                  1255766 04-9月 -10
         4            1               0   52428800             1 YES UNUSED                        0
         5            1               0   52428800             1 YES UNUSED                        0


SQL> alter database drop logfile 
  2  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO05.LOG';


SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS            FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------
         1            1              23   52428800             1 NO  INACTIVE                  1279914 14-9月 -10
         2            1              24   52428800             1 NO  CURRENT                  1295932 14-9月 -10
         3            1              22   52428800             1 NO  INACTIVE                  1255766 04-9月 -10
         4            1               0   52428800             1 YES UNUSED                        0


SQL> alter database drop logfile
  2  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO04.LOG';


执行数据库删除日志命令后,再使用OS命令将对应文件物理删除。


增加与删除日志成员
特别适用于在oracle典型安装后增加日志成员。
SQL> alter database add logfile member
  2  'E:\test\oracle\product\10.2.0\oradata\orcl\REDO1b.LOG'
  3  to group 1;


SQL> alter database add logfile member
  2  'E:\test\oracle\product\10.2.0\oradata\orcl\REDO2b.LOG'
  3  to 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG';


SQL> alter database add logfile member
  2  'E:\test\oracle\product\10.2.0\oradata\orcl\REDO3b.LOG'
  3  to group 3;


SQL> select * from v$logfile;


删除: alter database drop logfile member


移动日志文件:
SQL> alter database rename file
  2   'E:\TEST\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO3B.LOG'
  3  to 
  4  'F:\TEST\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO3B.LOG';


命令执行前,必须确认该日志文件物理上已经移动到新的目录。


清除日志文件数据:
alter database clear logfile
此命令用于日志文件损坏导致数据库无法恢复时。


3、控制文件
控制文件是一个二进制文件,用于描述数据库物理结构,包括:数据库名及数据库标示号,数据库创建时间,数据文件和日志文件标识,数据库恢复所需的同步信息,最大化参数,等等。
三个控制文件是镜像关系,有一个完好数据库就可以正常运行。


二、逻辑结构
简单地讲,数据库的逻辑结构组成关系为:多个数据块(block)组成区(extend),多个区构成段(segment),多个段构成表空间(tablespace),多个表空间组成一个逻辑数据库。
SQL> select * from dba_tablespaces;


1、表空间(tablespace)
一个tablespace有一个或多个datafile组成,一个datafile只能与一个tablespace相联系。
SQL> select * from dba_data_files;


SQL> select tablespace_name,sum(bytes),sum(blocks) from dba_free_space
  2  group by tablespace_name;


二、逻辑结构
简单地讲,数据库的逻辑结构组成关系为:多个数据块(block)组成区(extend),多个区构成段(segment),多个段构成表空间(tablespace),多个表空间组成一个逻辑数据库。
SQL> select * from dba_tablespaces;


1、表空间(tablespace)
一个tablespace有一个或多个datafile组成,一个datafile只能与一个tablespace相联系。
SQL> select * from dba_data_files;


SQL> select tablespace_name,sum(bytes),sum(blocks) from dba_free_space
  2  group by tablespace_name;


表空间可以通过设置为离线或在线以限制数据的可用性。
alter tablespace employee offline;
系统表空间system不能设置为offline。


临时表空间用来作为排序、汇总等使用,oracle10g创建用户后系统默认使用temp表空间作为临时表空间;
SQL> r
  1* select tablespace_name, contents from dba_tablespaces
TABLESPACE_NAME                CONTENTS
------------------------------ ---------
SYSTEM                               PERMANENT
UNDOTBS1                       UNDO
SYSAUX                               PERMANENT
TEMP                               TEMPORARY
USERS                               PERMANENT
EXAMPLE                        PERMANENT
TESTS                               PERMANENT
SQL> r
  1* select username, temporary_tablespace from dba_users


2、段(segment)
数据库中的段分为四类:数据段,索引段,回退段,临时段。
oracle10g建议使用自动回退段管理:
SQL> show parameter undo
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string         AUTO
undo_retention                             integer         900
undo_tablespace                      string         UNDOTBS1
SQL> 


3、区(extend)
磁盘空间分配的最小单位;
在创建段时,系统只分配最小区的个数minextents,当段增大时,区的个数随之增多,但最多不超过最大区个数maxextents;


4、数据块(block)
数据库I/O的最小单位;
取值范围为:2k--64k,安装时确定,安装后不得修改;oracle10g默认8192;


5、模式对象(scheme)
视图:
view是有一个或多个表及其他视图中的数据组成的一种定制的对象,是用一个sql查询语句形成的定义;
视图的操作和使用与表完全相同,但对它的操作具有一定的限制;
与表不同之处在于,view不分配存储空间,只在数据字典中存储其定义;


聚簇:
聚簇的两个表共用一个数据段,在聚簇的表中,将具有同一公共列植的行存储在一起,并且经常一起使用;


三、oracle10g动态内存管理
1、系统全局区(System Global Area,SGA)
当数据库实例启动时,SGA被自动分配;当数据库实例关闭时,SGA被回收。
SGA是数据库中占用服务器内存最大的一个区域。
(1)数据缓冲区
(2)日志缓冲区
(3)共享池
2、程序全局区(Program Global Area,PGA)
PGA是在用户进程连接oracle并创建一个会话时,由oracle自动分配的;用户会话结束,PGA释放。
与SGA不同,PGA为非共享区,主要用于在编程时存储变量和数组。
3、排序区(Sort Area)
排序区为有排序要求的SQL语句提供内存空间;
SQL> show parameter sort_area_size
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
sort_area_size                             integer         65536
SQL> r
  1* select name,value from v$sysstat  where name like '%sort%'
NAME                                                                      VALUE
---------------------------------------------------------------- ----------
sorts (memory)                                                              20516
sorts (disk)                                                                  0
sorts (rows)                                                             148919
4、大池(Large Pool)
用于数据库备份工具REMAN(Recovery Manager);
SQL> show parameter large_pool_size
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
large_pool_size                      big integer 0
5、Java池(Java Pool)
SQL> show parameter java_pool_size
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
java_pool_size                             big integer 0
6、oracle10g自动共享内存管理
在不同数据库负荷下,SGA中的组件自动灵活调整;


四、oracle实例的进程结构
SGA与后台进程构成oracle实例;
多进程实例结构的oracle实例进程包括:用户进程,服务器进程,后台进程;
1、用户进程与服务器进程
用户进程在用户运行应用程序时自动产生;
系统创建服务器进程处理用户进程的请求;
2、后台进程
SQL> r
  1* select name,description from v$bgprocess where paddr <> '00'
NAME  DESCRIPTION
----- ----------------------------------------------------------------
PMON  process cleanup
PSP0  process spawner 0
MMAN  Memory Manager
DBW0  db writer process 0
LGWR  Redo etc.
CKPT  checkpoint
SMON  System Monitor Process
RECO  distributed recovery
CJQ0  Job Queue Coordinator
QMNC  AQ Coordinator
MMON  Manageability Monitor Process
MMNL  Manageability Monitor Process 2
(1)DBWR(Database Writer,数据写入进程)
将数据缓冲区的数据写入磁盘数据文件。
当用户进程发出一条sql命令时,server进程首先在内存中查找是否存在用户要读取的数据,如果没有,则server进程需要从数据文件中读取数据;
这时server进程按照LRU算法查找是否有空闲块,如果没有,则将LRU中的脏数据块移入脏表;
当脏表超过一定长度时,server进程通知DBWR进程将脏数据写入磁盘文件;
重新刷新缓冲区,server进程从数据文件将数据读入数据缓冲区;
(2)LGWR(Log Write,日志写入进程)
将日志缓冲区的日志写入磁盘日志文件组。
(3)ARCH(Archiver Process,归档进程)
在日志写满时,将日志信息写到磁盘或磁带。
(4)SMON(System Monitor,系统监控)
在实例启动时执行实例恢复,并清理不再使用的临时段。
(5)PMON(Process Monitor,进程监控)
在用户进程出现故障时执行进程恢复,负责清理内存并释放资源。
(6)CKPT(Checkpoint,检查点)
日志中CHECKPOINT_CHANGE#是数据库三类文件(数据、控制、日志)同步的依据。
系统改变号(SCN)也叫检查点号。
(7)LCKn(Lock,锁进程)
用于多个实例间的封锁。
(8)Dnnn(Dispatch,调度进程)
多用户进程共享有限的服务器进程。
(9)SNP,作业进程
在分布式数据库系统中,用于数据库之间快照的自动刷新。
3、进程跟踪信息
系统对运行的进程进行自动跟踪,并产生跟踪记录;
SQL> show parameter dump
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
background_core_dump                     string         partial
background_dump_dest                     string         C:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\BDUMP
core_dump_dest                             string         C:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\CDUMP
max_dump_file_size                     string         UNLIMITED
shadow_core_dump                     string         partial
user_dump_dest                             string         C:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\UDUMP
后台进程和用户进程都可以建立自己的跟踪文件,还可以启动参数SQL_TRACE对用户的sql语句进程跟踪。
跟踪文件整理命令:TKPROF
C:\>tkprof
Usage: tkprof tracefile outputfile [explain= ] [table= ]
4、锁等待问题
有多种类型的锁,行级锁、表级锁。
查找死锁及解除:


第五章数据库启动与关闭


1、监听进程管理命令:
lsnrctl


2、数据库启动过程:
启动实例——安装数据库——打开数据库;
(1)nomount选项
只启动实例,不安装数据库,不打开数据库;
(2)mount选项
启动实例,安装数据库,不打开数据库;
(3)read only选项
以只读方式打开数据库;
(3)read write选项
读写方式打开数据库,这时数据库的默认方式;
(4)open选项
读写;默认启动方式;
(5)restrict选项
只有restricted session权限的用户才可以连接数据库;
(6)force选项
强制方式打开数据库;
(7)pfile选项
pfile选项指出数据库参数文件名及路径,用于pfile不在规定路径时启动数据库;


3、数据库关闭过程
关闭数据库——卸载数据库——关闭实例;
(1)normal选项
oracle默认关机方式;
数据库服务器必须等待所有客户端从oracle退出时才可以关闭数据库,若数据库中有死进程,这种方式是关不了数据库的。
(2)immediate选项
立即关机方式;
系统将连接数据库的所有用户没有提交的事务全部回退,中断连接,关闭数据库。
(3)abort选项
异常关机方式;
系统立即将实例关闭,对所有用户不做任何检查,对数据块完整性不做检查。
(4)transactional选项
等事务终结后关闭数据库,若用户没有执行提交或回退命令,则系统必须等待。


4、unix下自动启动和关闭数据库


第七章创建Oracle10g数据库


一、在windows下创建数据库
1、使用向导工具(Database Configuration Assistant,DBCA)创建数据库
(1)启动DBCA
不启动任何服务;
(2)确定DBCA类型
创建数据库:创建新的数据库或模板;
配置数据库选项:对已经安装好的数据库重新配置;
删除数据库:删除服务器中存在的数据库及数据库实例;
管理模板:将数据库创建的定义方式以XML文件保存到本地磁盘,以减少创建数据库时选择大量参数所占用的时间;
配置自动存储管理:


创建数据库(共13步):
创建数据库orcl1(数据库实例),物理结构文件目录:e:\test\orcl1
创建完成后,OS新增服务:OracleDBConsoleorcl1,OracleJobSchedulerORCL1,OracleServiceORCL1


配置数据库选项(共5步):
orcl1


模板管理(共9步):
模板数据文件:{ORACLE_HOME}\assistants\dbca\templates\seed1.dfb,二进制文件;
之后再创建数据库时,数据库类型中多了seed1类型;


删除数据库(共3步):


2、使用命令行创建数据库
(1)创建数据库实例
拷贝一份pfile,并修改相关参数;
C:\oracle\product\10.2.0\admin\orcl2\pfile\init.ora
创建数据库实例命令:oradim
C:\>oradim
ORADIM: [options]。请参阅手册。
输入以下命令之一:
通过指定以下选项创建实例:
     -NEW -SID sid | -SRVC srvc | -ASMSID sid | -ASMSRVC srvc [-SYSPWD pass]
 [-STARTMODE auto|manual] [-SRVCSTART system|demand] [-PFILE file | -SPFILE]
 [-SHUTMODE normal|immediate|abort] [-TIMEOUT secs] [-RUNAS osusr/ospass]
通过指定以下选项编辑实例:
     -EDIT -SID sid | -ASMSID sid [-SYSPWD pass]  
 [-STARTMODE auto|manual] [-SRVCSTART system|demand] [-PFILE file | -SPFILE]
 [-SHUTMODE normal|immediate|abort] [-SHUTTYPE srvc|inst] [-RUNAS osusr/ospass]
通过指定以下选项删除实例:
     -DELETE -SID sid | -ASMSID sid | -SRVC srvc | -ASMSRVC srvc
通过指定以下选项启动服务和实例:
     -STARTUP -SID sid | -ASMSID sid [-SYSPWD pass] 
 [-STARTTYPE srvc|inst|srvc,inst] [-PFILE filename | -SPFILE]
通过指定以下选项关闭服务和实例:
     -SHUTDOWN -SID sid | -ASMSID sid [-SYSPWD pass] 
 [-SHUTTYPE srvc|inst|srvc,inst] [-SHUTMODE normal|immediate|abort]
 通过指定以下参数查询帮助: -? | -h | -help
C:\>oradim -NEW -SID orcl2 
实例已创建。
--------OS增加服务:OracleServiceorcl2
C:\>oradim -EDIT -SID orcl2 -PFILE
DIM-00003: 参数缺失变元。
C:\>oradim -DELETE -SID orcl2
实例已删除。
--------OS删除服务OracleServiceorcl2
C:\>oradim -NEW -SID ORCL2 -INTPWD orcl2 -PFILE C:\oracle\product\10.2.0\admin\orcl2\pfile\init.ora
实例已创建。
(2)启动实例,创建数据库
C:\>set ORACLE_SID=ORCL2
C:\>sqlplus sys/orcl2 as sysdba


SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 10月 4 14:12:04 2010


Copyright (c) 1982, 2005, Oracle.  All rights reserved.


SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00109: ???????????????? 'C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INITORCL2.ORA'
SQL> startup pfile=C:\oracle\product\10.2.0\admin\orcl2\pfile\init.ora nomount
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL2'
ORA-01078: 处理系统参数失败
SQL> startup pfile=C:\oracle\product\10.2.0\admin\orcl2\pfile\init.ora nomount
ORA-02778: Name given for the log directory is invalid
SQL> 
手动创建数据库的时候报ORA-02778错误。ORA-02778: Name given for the log directory is invalid
原因是 :$ORACLE_base/admin/$ORACLE_SID里面的一些目录没有创建好,比如:bdumpcdumppfileudump
SQL> shutdown immediate
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup pfile=C:\oracle\product\10.2.0\admin\orcl2\pfile\init.ora nomount
ORACLE 例程已经启动。
Total System Global Area  603979776 bytes
Fixed Size                    1250380 bytes
Variable Size                  163580852 bytes
Database Buffers          432013312 bytes
Redo Buffers                    7135232 bytes
SQL> 


------------仅创建实例,数据库的物理结构文件都还没有创建。


create database orcl2
logfile group 1 ('E:\test\orcl2\redo11.log','E:\test\orcl2\redo12.log') size 10M,
        group 2 ('F:\test\orcl2\redo21.log','F:\test\orcl2\redo22.log') size 10M
datafile 'F:\test\orcl2\system01.dbf' size 50M
         autoextend on next 10M maxsize unlimited extent management local
sysaux datafile 'F:\test\orcl2\sysaux01.dbf' size 50M
undo tablespace undotbs datafile 'F:\test\orcl2\undotbs01.dbf' size 50M
default temporary tablespace temp tempfile 'F:\test\orcl2\temp01.dbf' size 50M
default tablespace users datafile 'F:\test\orcl2\users01.dbf' size 50M
character set zhs16gbk;


ORA-02165: 无效的 CREATE DATABASE 选项----------group1行最后少了个逗号
ORA-25141: invalid EXTENT MANAGEMENT clause-----------management拼写错误为managment
ORA-01092: ORACLE 实例终止。强制断开连接
查看C:\oracle\product\10.2.0\admin\orcl2\bdump\alert_orcl2.log---------20101004_ORA-01092.txt




二、在UNIX下创建数据库
1、使用DBCA创建数据库
DBCA基于Java开发,在UNIX和windows下使用方法和应用界面完全相同。
----------redhat快照------------
oracle数据库安装完成,但没有创建任何数据库,没有数据库的物理机构文件存在,数据库只能启动到nomount状态。
export LC_ALL=en_US
dbca
配置数据库选项和删除数据库不可选;
创建数据库(共12步):
[root@localhost app]# chown -R oracle:oinstall /opt/app/oracle
[root@localhost app]# ls -l
总计 4
drwxr-xr-x 3 oracle oinstall 4096 2015-02-15 oracle
[root@localhost app]# chmod -R 775 /opt/app/oracle
[oracle@localhost ~]$ cd /opt/app
[oracle@localhost app]$ ls
oracle
[oracle@localhost app]$ cd oracle/
[oracle@localhost oracle]$ ls
product
[oracle@localhost oracle]$ mkdir admin
[oracle@localhost oracle]$ ls
admin  product
[oracle@localhost oracle]$ cd admin
[oracle@localhost admin]$ mkdir orcl2
[oracle@localhost admin]$ cd orcl2
[oracle@localhost admin]$ mkdir adump
[oracle@localhost admin]$ mkdir bdump
[oracle@localhost admin]$ mkdir cdump
[oracle@localhost admin]$ mkdir dpdump
[oracle@localhost admin]$ mkdir udump
[oracle@localhost orcl2]$ ls -l
总计 20
drwxr-xr-x 2 oracle oinstall 4096 09-21 04:18 adump
drwxr-xr-x 2 oracle oinstall 4096 09-21 04:18 bdump
drwxr-xr-x 2 oracle oinstall 4096 09-21 04:18 cdump
drwxr-xr-x 2 oracle oinstall 4096 09-21 04:18 dpdump
drwxr-xr-x 2 oracle oinstall 4096 09-21 04:18 udump





[oracle@localhost orcl2]$ export ORACLE_SID=orcl2
[oracle@localhost orcl2]$ sqlplus sys/orcl2 as sysdba


SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 21 04:46:43 2010


Copyright (c) 1982, 2005, Oracle.  All rights reserved.




Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options


SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.


Total System Global Area  272629760 bytes
Fixed Size                  1218920 bytes
Variable Size              88082072 bytes
Database Buffers          180355072 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
SQL> 


[oracle@localhost orcl2]$ pwd
/home/oracle/orcl2
[oracle@localhost orcl2]$ ls -l
总计 1053068
-rw-r----- 1 oracle oinstall   7061504 09-21 04:49 control01.ctl
-rw-r----- 1 oracle oinstall   7061504 09-21 04:49 control02.ctl
-rw-r----- 1 oracle oinstall   7061504 09-21 04:49 control03.ctl
-rw-r----- 1 oracle oinstall 104865792 09-21 04:47 example01.dbf
-rw-r----- 1 oracle oinstall  52429312 09-21 04:48 redo01.log
-rw-r----- 1 oracle oinstall  52429312 09-21 04:47 redo02.log
-rw-r----- 1 oracle oinstall  52429312 09-21 04:47 redo03.log
-rw-r----- 1 oracle oinstall 241180672 09-21 04:47 sysaux01.dbf
-rw-r----- 1 oracle oinstall 503324672 09-21 04:47 system01.dbf
-rw-r----- 1 oracle oinstall  20979712 09-21 04:26 temp01.dbf
-rw-r----- 1 oracle oinstall  26222592 09-21 04:47 undotbs01.dbf
-rw-r----- 1 oracle oinstall   5251072 09-21 04:47 users01.dbf
[oracle@localhost orcl2]$ 





2、使用命令行创建数据库










阅读(2529) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~