001、体系说明

 

 

ORACLE_HOME

就是oracle软件存放的路径,比如,oracle 10g,oracle11g在同一个服务器上,应该有不同的ORACLE_HOME。
查看ORACLE_HOME路径:
[oracle@ning ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/10.2.0/db_1
ORACLE_HOME存放的是oracle产品,支撑实例的运行。

操作系统认证模式

不需要输入用户名和密码,直接进入到管理员用户,即SYS用户。
SQL> conn / as sysdba
操作系统认证模式的两个必要条件:
  • 当前的操作用户是dba组的,比如root用户不是dba组的,就无法使用操作系统认证模式:
[root@rac1 bin]# ./sqlplus / as sysdba
Error 6 initializing SQL*Plus
Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
[root@rac1 bin]# pwd
/u01/app/oracle/product/10.2.0/db_1/bin
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ su root
Password: 
[root@rac1 oracle]# sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Sat Jun 12 17:39:40 2021

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

SQL> conn / as sysdba
ERROR:
ORA-12546: TNS:permission denied
  • 连接是安全的:例如,在windows中,如下参数设置是安全的
注释掉该参数以后,操作系统认证模式连接是不安全的:

密码文件认证模式

密码文件认证模式用于:远程连接,或者操作系统认证模式不具备的时候,跨操作系统的连接。
密码文件路径:
[oracle@rac1 ~]$ cd $ORACLE_HOME/dbs
[oracle@rac1 dbs]$ ls orapw*
orapw+ASM1  orapwora10g1
密码文件内容:
[oracle@rac1 dbs]$ strings orapwora10g1 
]\[Z
ORACLE Remote Password file
INTERNAL
6F2B7558C874735C
FAEBD85538E5908F
SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE  TRUE
创建密码文件,密码文件命名规则(linux)orapw实例名:
#若密码文件不存在或者损坏,查询如下:
SQL> select * from v$pwfile_users;

no rows selected

[oracle@rac1 dbs]$ orapwd file=orapwora10g1 password=a force=y   #注意,密码文件orapw实例名,没有d
[oracle@rac1 dbs]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Sat Jun 12 19:51:32 2021

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

SQL> conn sys/a as sysoper
Connected.
SQL> conn sys/b as sysoper     #若密码文件不存在,错误密码也可以登录为sysoper
ERROR:
ORA-01075: you are currently logged on
操作系统认证模式优先级高于密码文件认证模式,例如,sys用户密码为a,登录时写成b,也能连接,就是操作系统认证模式忽略密码:
SQL> conn sys/b as sysdba
Connected.

实例

关闭主机,再次开启,数据仍然存在,Oracle数据存在于文件中,查看文件路径:
SQL> select tablespace_name,table_name from tabs;

TABLESPACE_NAME                TABLE_NAME
------------------------------ ------------------------------
USERS                          SALGRADE
USERS                          BONUS
USERS                          EMP
USERS                          DEPT

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
+DATADG/o11g/datafile/system.259.1075132161
+DATADG/o11g/datafile/sysaux.260.1075132167
+DATADG/o11g/datafile/undotbs1.261.1075132171
+DATADG/o11g/datafile/undotbs2.263.1075132189
+DATADG/o11g/datafile/users.264.1075132191
  • 实例是访问数据库的方法:数据库不对外开放,只对实例开放,我们通过实例访问数据库。
  • 实例由内存加进程组成
SQL> show sga
Total System Global Area  835104768 bytes
Fixed Size                  2257840 bytes
Variable Size             553651280 bytes
Database Buffers          276824064 bytes
Redo Buffers                2371584 bytes

SQL> 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 800M
memory_target                        big integer 800M   --数据库可以占用的最大内存的大小
parallel_servers_target              integer     16
pga_aggregate_target                 big integer 0       
sga_target                           big integer 0      --参数为0,因为设置了memory_target的值 

SQL> select *from v$sgainfo;                            --查看sga的概要信息
NAME                                  BYTES RES      
-------------------------------- ---------- ---
Fixed SGA Size                      2257840 No          --固定大小,和系统版本有关,oracle内部使用的内存
Redo Buffers                        2371584 No          --日志缓存区的大小
Buffer Cache Size                 276824064 Yes         --缓存的是数据文件的数据,根据LRU算法,最近最少被使用的buffer会被覆盖
Shared Pool Size                  209715200 Yes         --library cache
Large Pool Size                     4194304 Yes
Java Pool Size                      4194304 Yes
Streams Pool Size                         0 Yes
Shared IO Pool Size                       0 Yes
Granule Size                        4194304 No
Maximum SGA Size                  835104768 No
Startup overhead in Shared Pool   106137504 No
Free SGA Memory Available         335544320
12 rows selected.

SQL> select * from v$sgastat;                        --查看sga的详细信息
Oracle内存发展历程:
  1. 8i,每块内存独立设置,修改内存大小需要重启实例生效
  2. 9i,整合了客户端的pga,可以动态修改数据库内存大小,手工调整
  3. 10g,整合了sga,可以自动调整内存大小
  4. 11g,整合了所有内存
  • 一个实例只能对应一个数据库。

Oracle进程

SQL> desc v$bgprocess
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 PADDR                                              RAW(8)
 PSERIAL#                                           NUMBER
 NAME                                               VARCHAR2(5)
 DESCRIPTION                                        VARCHAR2(64)
 ERROR                                              NUMBER
 SQL> select PADDR,NAME,DESCRIPTION from v$bgprocess;
 --其中PADDR列值为00代表预留,尚未分配
 SQL> select PADDR,NAME,DESCRIPTION from v$bgprocess where paddr != '00';

PADDR            NAME  DESCRIPTION
---------------- ----- ----------------------------------------------------------------
0000000083A687F8 PMON  process cleanup                            
0000000083A68FF0 DIAG  diagnosibility process
0000000083A697E8 PSP0  process spawner 0
0000000083A69FE0 LMON  global enqueue service monitor
0000000083A6A7D8 LMD0  global enqueue service daemon 0
0000000083A6AFD0 LMS0  global cache service process 0
0000000083A6B7C8 MMAN  Memory Manager
0000000083A6BFC0 DBW0  db writer process 0                         --数据库写进程
0000000083A72758 ARC0  Archival Process 0
0000000083A72F50 ARC1  Archival Process 1
0000000083A6C7B8 LGWR  Redo etc.
0000000083A6FF80 LCK0  Lock Process 0
0000000083A6CFB0 CKPT  checkpoint
0000000083A6D7A8 SMON  System Monitor Process
0000000083A6DFA0 RECO  distributed recovery
0000000083A6E798 CJQ0  Job Queue Coordinator
0000000083A73748 QMNC  AQ Coordinator
0000000083A71768 RBAL  ASM Rebalance master
0000000083A70F70 ASMB  ASM Background
0000000083A6EF90 MMON  Manageability Monitor Process
0000000083A6F788 MMNL  Manageability Monitor Process 2

21 rows selected.

DBW*,数据库写进程

SQL> select PADDR,NAME,DESCRIPTION from v$bgprocess where NAME like '%DBW%';

PADDR            NAME  DESCRIPTION
---------------- ----- ----------------------------------------------------------------
0000000083A6BFC0 DBW0  db writer process 0
00               DBW1  db writer process 1
……
  • 负责将内存脏数据(dirty buffer)写进磁盘;
  • 最少一个,9i最多10个,10g最多20个,11g最多36个,不能超过CPU的个数;
  • 随机写到硬盘,不是顺序写;
  • 不定期工作。

LGWR,日志写进程

SQL> select PADDR,NAME,DESCRIPTION from v$bgprocess where NAME like '%LGW%';

PADDR            NAME  DESCRIPTION
---------------- ----- ----------------------------------------------------------------
0000000083A6C7B8 LGWR  Redo etc.
  • 日志写进程只有一个;
  • 写日志缓存到日志文件;
  • 顺序写,循环写;
  • commit,1M,3秒,1/3日志缓存大小时触发该进程;commit时不会触发数据库写进程DBW*;
  • 日志写进程先于数据库写进程,即数据在写道磁盘之前,日志写进程已经将数据的变化写到日志文件中。

SMON,系统监测进程

SQL> select PADDR,NAME,DESCRIPTION from v$bgprocess where NAME like '%SMON%';
PADDR            NAME  DESCRIPTION
---------------- ----- ----------------------------------------------------------------
0000000083A6D7A8 SMON  System Monitor Process

SQL> select * from smon_scn_time where rownum<3;
  • 干很多事,其中重要的事情时回收资源,比如删除一张表,空出来的空间由SMON回收;
  • 写scn和时间的对照表;

PMON,进程检测进程

SQL> select PADDR,NAME,DESCRIPTION from v$bgprocess where name like '%PMON%';

PADDR            NAME  DESCRIPTION
---------------- ----- ----------------------------------------------------------------
0000000083A687F8 PMON  process cleanup
  • 负责和进程有关的事情,比如回收死进程的资源;
  • 启动死的调度进程;
  • 把实例注册到监听;

CKPT,检查点进程

SQL> select PADDR,NAME,DESCRIPTION from v$bgprocess where name like '%CKPT%';
PADDR            NAME  DESCRIPTION
---------------- ----- ----------------------------------------------------------------
0000000083A6CFB0 CKPT  checkpoint

SQL> select name,checkpoint_change#,checkpoint_time from v$datafile;
NAME                                               CHECKPOINT_CHANGE# CHECKPOIN
-------------------------------------------------- ------------------ ---------
+DATA/ora10g/datafile/system.259.1043492191                   1099173 14-JUN-21
+DATA/ora10g/datafile/undotbs1.260.1043492199                 1099173 14-JUN-21
+DATA/ora10g/datafile/sysaux.261.1043492199                   1099173 14-JUN-21
+DATA/ora10g/datafile/undotbs2.263.1043492205                 1099173 14-JUN-21
+DATA/ora10g/datafile/users.264.1043492207                    1099173 14-JUN-21
+DATA/ora10g/goldengate/goldengate01.dbf                      1099173 14-JUN-21
6 rows selected.
  • 触发数据库写进程;
  • 在数据文件头打时间戳;
  • 写检查点信息到控制文件;
  • 日志组切换触发检查点进程;
 





posted @ 2021-06-16 10:10  有点菜大人  阅读(133)  评论(0)    收藏  举报