- 要获得企业管理器控制台的HTTP端口号,可进入$ORACLE_HOME\install目录(可能为F:\oralce\product\10.2.0\db_1\install),寻找portlist.ini正文文件。
- 其他用户解锁语句:alter user scott identified by tiger account unlock;
Scott脚本 SQL:@F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\scott.sql
3.ORACLE9i体系结构图:
ORACLE11G体系结构图:
内存结构:PGA、SGA(system global area)
程序全局区(program global area,PGA),oracle创建一个服务器进程的同时要为该服务器进程分配一个内存区,不能共享,且只属于一个进程。
程序全局区:排序区、游标状态区、会话信息区、堆栈区
如果是共享服务器进程或多线程配置,以上结构除了堆栈区大部分信息会存在SGA中的large pool中(如果没有large pool 则放在shared pool中)
Instance:SGA、background processes。
系统全局区(SGA):shared pool、DB buffer cache、redo log buffers,JAVA pool,large pool。
其中,共享池(shared pool)由库高速缓存(library cache)和数据字典高速缓存(data dictionary cache)组成。
Library cache:服务器进程将SQL或PL/SQL语句正文和编译后的代码(parsed code)以及执行计划都放在共享池(Shared pool)的库高速缓存中,在进行编译时,服务器进程首先会在共享池中搜索是否有相同SQL或PL/SQL语句(正文,注意CURSOR_SHARING参数的设置),若有,就不进行后续编译处理,直接使用已存在的编译后的代码和执行计划。使用LRU(Lsast recently used)算法。当用户修改某个对象的定义后,共享池中的代码都会置为无效。
Data dictionary cache:当oracle执行SQL语句时,服务器进程将把数据文件、表、索引、列、用户和其他的数据对象的定义和权限信息放入数据字典高速缓存。因为访问较频繁,可以尽量设置大一些,无法直接修改,可以通过更改shared pool修改。
数据库高速缓冲区(database buffer cache):用户执行查询语句后进行数据提取,服务器进程将首先在database buffer cache中搜寻所需的数据,如果找到了就直接使用,不进行磁盘操作,如果没有找到就将进行磁盘操作将数据文件中的数据读入到database buffer cache。使用LRU(Lsast recently used)算法。可以使用DB_BLOCK_SIZE和DB_BLOCK_BUFFER两个参数设置database buffer cache(两者乘积)大小.
SQL>alter system set db_cache_size=48M;
重做日志缓冲区(redo log buffer)
大池(large pool,提高效率)、JAVA 池(java pool,能够编译JAVA命令)
Background processes:SMON、PMON、CKPT、DBWR、LGWR、ARC0
重做日志写进程(log writer,LGWR)负责将重做日志缓冲区的记录顺序地写到重做日志文件中。重做日志进程在下列情况下将重做日志缓冲区记录顺序写到重做日志文件中,见P22
数据库写进程(DBWR/DBWn)oracle允许一个实例最多启动10个数据库写进程,DBW0~DBW9.数据库写进程将在下列事情发生时把数据库高速缓冲区中的数据写到数据文件中p23
系统监督进程(SMON)
进程监督进程(PMON)
校验点(checkpoint)
归档日志(ARCH/ARCn)
数据文件:控制文件(control files)、重做日志文件(redo log files)、数据文件(data files)、归档重做日志文件(archived redo log files)
- 用户进程与服务器连接方式:专用服务器连接(dedicated server connection)、多线程连接(MTS)
专用服务器连接:基于interprocess communication(IPC)机制的连接、基于网络协议(如TCP/IP)的C/S连接、客户端-应用服务器-服务器三层模型
MTS:在联机事务处理(online transaction processing,OLTP)系统配置时的一种连接。
- 查询语句处理阶段:编译(parse)、执行(execute)、提取数据(fetch)
Parse:在进行编译时,服务器进程PGA,会将SQL语句的正文放入共享池(Shared pool)的库高速缓存(library cache)中并将完成以下处理
首先,在共享池中搜索是否有相同的SQL语句(正文),如果没有就进行后续的处理
检查该SQL语句的语法是否正确
通过查看数据字典来检查表和列的定义
对所操作的对象加编译锁(parse locks),以便在编译语句期间这些对象的定义不能被改变
检查所引用对象的用户权限
生成执行该SQL语句所需要的优化的执行计划(执行步骤)
将SQL语句和执行计划装入共享的SQL区
Execute:ORACLE 服务器进程开始执行SQL语句是因为它已经获得了执行SQL语句所需的全部资源和信息
Fetch:oracle 服务器进程选择所需的数据行,并在需要时进行排序,最后将结果返回用户(进程)。
- 系统变化数(system change number,SCN)无论某个事务(transaction)被提交,oracle服务器就产生一个SCN,并将其赋予给该事务所有的数据行,在同一个数据库中SCN是单调递增并且唯一的。
7.sys用户拥有数据库中数据字典,默认口令为change_on_install,在使用sys登陆数据库时,应该使用sysdba或sysoper权限连接。
System是拥有由oracle工具所使用的附加内部表和视图,默认口令manger。
- 初始化参数文件:静态参数文件(parameter file,PFILE),该文件为正文文件,可以编辑保存、动态服务器参数文件(SPFILE),该文件为二进制文件,不能编辑保存。
Pfile一般文件名为:initSID.ora,SPFILE文件名一般为:spfileSID.ora。SID为实例名。
CREATE SPFILE=[=’SPFILE名’] FROM PFILE [=’PFILE名’]
CREATE PFILE=[=’PFILE名’] FROM SPFILE
Spool c:\sql\parameter
- 数据库启动执行顺序spfileSID,若无,则SPFILE文件,若无,则initSID文件,若无,则默认的PFILE文件
10.STARTUP [FORCE] [RESTRICT][PFILE=文件名]
[OPEN [RECOVER] [DATABASE] |MOUNT|NOMIUNT ]
NOMOUNT(只启动实例并不打开数据库中任何文件,连控制文件都不打开,一般在创建数据库时使用):分配SGA、启动所需全部后台进程、打开报警文件(alertSID.log)和追踪文件(trace)
MOUNT(启动实例,打开控制文件):将数据库与已启动的实例关联起来、利用初始化参数文件中的说明锁定并打开控制文件、读控制文件以获取数据文件和重做日志文件的名字和状态的信息,但并不检查这些文件是否存在。
OPEN(startup默认方式):打开所有联机数据文件、打开所有联机重做日志文件
ALTER DATABASE OPEN;
ALTER DATABASE READ ONLY;
ALTER DATABASE READ WRITE;
STARTUP RESTRICT(限制模式)
Alter system ebable restricted session;活动的数据库更改为限制模式,对将来登陆的有效,已经在线的无效。
11.SHUTDOWN [NORMAL |TRANSACTIONAL |IMMEDIATE |ABORT]
关闭方式 | A | I | T | N |
允许新的链接 | NO | NO | NO | NO |
等待到当前所有会话结束 | NO | NO | NO | YES |
等到到当前所有的事务(交易)结束 | NO | NO | YES | YES |
强制型检查点和关闭文件 | NO | YES | YES | YES |
12.SELECT SID,SERIAL#,USERNAME ,TYPE FROM V$SESSION
ALTER SYSTEM KILL SESSION ‘SID(会话标识符),SERIAL#(序列号)’
- 诊断文件常见的有3类:报警文件(unix中为alertSID.log,NT系统为SIDALRT.log)、后台进程追踪文件(background trace files)和用户进程追踪文件(USER trace files)
报警文件:包括了数据库日常操作信息,存在在由background_dump_dest参数所定义的目录下,一般由下往上看,也可以利用报警文件的提示到追踪文件中查找更详细的信息。包含信息:数据库启动或关闭的时间、所有非默认化初始化参数、LGWR正在写的日志序列号、日志的切换信息、所执行的alter语句、创建的表空间和还原段等。
后台进程追踪文件记录LGWR、SMON等遇到的错误
用户进程追踪文件是由用户进程创建,也可以由服务器进程产生,包含了用来追踪用户SQL语句的统计信息,也包含了用户的错误信息。存放在user_dump_dest参数定义的目录下,大小由max_dump_filr_size参数定义,默认10M
Alter session set sql_trace=true(会话级,追踪完毕最好关闭)
Sql_trace=true(实例级,在初始化参数里修改,建议不开)
- 数据字典是由oracle服务器创建和维护的一组只读的系统表(与审计有关的数据字典(以AUD$开头)除外,这些可以修改),分为两大类:基表、数据字典视图。
数据字典视图分为3大类,前缀分别为USER、ALL、DBA
USER_*:有关用户所拥有的对象的信息,即用户自己创建的对象的信息
ALL_*:有关用户可以访问的对象的信息,即用户自己创建的信息再加上其他用户创建的对象但该用户有权访问的信息
DBA_*:有关整个数据库中对象的信息
这里的*可以为TABLE、INDEX、OBJECTS等
Select * from user_catalog;/cat
动态性能视图,以v$开头,sys用户拥有所有的动态性能视图,实时反映了数据库运行的状态。
Select * from dictionary |v$fixed_table;
Select name,created,log_mode,open_mode from v$database;
Select host_name,instance_name,version from v$instance;
Select * from v$version;
Select * from v$controlfile;
Select group#,members,bytes,status,archived from v$log;
Select * from v$logfile;
Archive log list
Select tablespace_name,block_size,status,contents,logging from dba_tablespaces;
Select file_id,file_name,tablespace_name,status,bytes from dba_date_files;
Select username,created from dba_users;
- 数据库的控制文件是一个比较小的二进制文件,记载了物理数据库的当前状态,每一个控制文件只属于一个数据库,但为了防止控制文件丢失,一个数据库一般不止一个控制文件,这些控制文件中的内容完全一样。在数据库装载或者打开之前,这些控制文件必须能被oracle访问,为了防止磁盘的物理故障,这些控制文件最好放在不同的物理磁盘上,最好放在不同的物理磁盘控制器上。
控制文件中的信息P72
相关数据字典v$archived v$archived_log v$backup v$database v$datafile v$log v$logfile v$loghist v$tablespace v$tempfile
Select type,record_size,records_total,records_userd from v$controlfile_record_section;
Alter system set control_files=’d:\disk3\control01.ctl’….
Alter database backup controlfile to ‘d:\backup\control.bak’;
16. COL[UMN] [{column | expr} [option...] ]
where option is one of the following clauses:
ALI[AS] alias CLE[AR] ENTMAP {ON|OFF} FOLD_A[FTER] FOLD_B[EFORE] FOR[MAT] format HEA[DING] text JUS[TIFY] {L[EFT] | C[ENTER] | C[ENTRE] | R[IGHT]} LIKE {expr | alias} NEWL[INE] NEW_V[ALUE] variable NOPRI[NT] | PRI[NT] NUL[L] text OLD_V[ALUE] variable ON|OFF WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]
对字符:col char format a20;
对数字:col num format 999999;