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内存发展历程:
- 8i,每块内存独立设置,修改内存大小需要重启实例生效
- 9i,整合了客户端的pga,可以动态修改数据库内存大小,手工调整
- 10g,整合了sga,可以自动调整内存大小
- 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.
- 触发数据库写进程;
- 在数据文件头打时间戳;
- 写检查点信息到控制文件;
- 日志组切换触发检查点进程;

浙公网安备 33010602011771号