1. 连接建立的过程
场景:oracle默认监听器1521,把数据库服务注册到监听器中,客户端才能通过监听器登录到数据库上操作,
数据库的名称是orcl,注册后,叫服务命名

[oracle@oracledemo ~]$ sqlplus scott/tiger@localhost:1521/orcl.example.com

建立连接
注意:监听器只是在连接建立的过程中起作用,一旦连接建立,客户端直接与serverprocess交互
描述:客户端执行sqlplus的登录连接,服务器端有一个1521的监听器,要通过监听器登录到数据库的服务上,需要把数据库的服务注册到监听器上,如orcl.example.com叫服务命名


(1)执行sqlplus登录语句时,发送登录请求,监听器接收到后就会解析请求
(2)解析出来的结果有两种:第一就是请求信息不识别,也就是发出过来的请求是错误的请求,这时监听器就会直接拒绝登录的请求,这时客户端就会出错,第二种请求就是解析出来的信息是正确的,就可以让客户端进行登录
(3) 请求信息正确的情况下监听器会做两件事情: 创建PGA和ServerProcess(服务器请求,处理客户端请求)
(4) 执行sql语句,实际是直接发送给serverprocess

[oracle@oracledemo ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 09-JUL-2018 04:55:50
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledemo)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                09-JUL-2018 00:49:26
Uptime                    0 days 4 hr. 6 min. 24 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora   ###配置文件
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracledemo/listener/alert/log.xml
Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracledemo)(PORT=1521)))   #######监听端口
Services Summary...
Service "orcl.example.com" has 1 instance(s).                          #######服务的名称Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.example.com" has 1 instance(s).                   Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

  

2. 配置监听器
描述:配置完数据库后,有个默认监听器1521,要操作必须要把数据库(orcl.example.com)注册到监听器上,然后再使用不同的方法来配置监听器


- netca


- netmgr


- OEM


- 修改配置文件: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

[oracle@oracledemo ~]$ cat /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.LISTENER03 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracledemo)(PORT = 1523)))LISTENER02 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracledemo)(PORT = 1522)))ADR_BASE_LISTENER03 = /u01/app/oracleADR_BASE_LISTENER02 = /u01/app/oracleLISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracledemo)(PORT = 1521)))ADR_BASE_LISTENER = /u01/app/oracle

  

3. 注册数据库的服务
描述:把数据库的服务注册到监听器上后,才能通过监听器登录,而且会有不同的名称如my.example.com,就对应orcl这个名称,
有了这种关联就可能登录到数据库实例上
注册方式
- 静态注册:通过修改配置文件实现
OEM操作描述: netservices管理 --> 选择对应的lister --> 编辑 --> 静态数据库注册 --> 添加 --> 填写名称、目录(已经设置的目录/u01/app/oracle/product/11.2.0/dbhome_1)、SID(数据库名称)

[oracle@oracledemo ~]$ vim /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora  #描述中的操作相当于修改配置文件
(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = myorcl.exmple.com)(SID_NAME = orcl)(ORACLE_HOME = u01/app/oracle/product/11.2.0/dbhome_1)
)
)
[oracle@oracledemo ~]$ lsnrctl status listener02
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 09-JUL-2018 07:49:44
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledemo)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER02
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                09-JUL-2018 05:41:06
Uptime                    0 days 2 hr. 8 min. 38 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracledemo/listener02/alert/log.xml
Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracledemo)(PORT=1522)))
The listener supports no services      #启动的,没有注册任何服务
The command completed successfully

- 动态注册:通过修改service_names参数
动态注册问题:
(*)默认只能注册到1521的端口上
(*)如果要注册到不是默认的监听端口上要修改参数,需要修改一个参数local_listener
(*)由PMON进程来实成

[oracle@oracledemo ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 09-JUL-2018 08:17:15
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledemo)(PORT=1521)))   ###
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                09-JUL-2018 00:49:26
Uptime                    0 days 7 hr. 27 min. 49 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracledemo/listener/alert/log.xml
Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracledemo)(PORT=1521)))   ####默认
Services Summary...
Service "orcl.example.com" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.example.com" has 1 instance(s).Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully[oracle@oracledemo ~]$ . oraenv
ORACLE_SID = [orcl] ? orcl
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle
[oracle@oracledemo ~]$ sqlplus / as sysdba
SQL> show parameter service_names
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
service_names                string  orcl.example.comSQL> show parameter listene
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
listener_networks            string
local_listener               string
remote_listener              string

新开一个窗口

[oracle@oracledemo ~]$ . oraenv
ORACLE_SID = [orcl] ? orcl
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle
[oracle@oracledemo ~]$ sqlplus / as sysdba
SQL> show parameter service_name
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
service_names                string  orcl.example.com
SQL> alter system set service_names='dev.exapmle.com';
System altered.
SQL> show parameter service_name
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
service_names                string  dev.exapmle.com

另一个窗口查看

[oracle@oracledemo ~]$ lsnrctl status
Service "dev.exapmle.com" has 1 instance(s).windows上测试:
[c:\~]$ cd D:\oracleclient\oracle10g\instantclient_12_1
[D:\oracleclient\oracle10g\instantclient_12_1]$ sqlplus scott/tiger@192.168.56.90:1521/dev.exapmle.com
SQL*Plus: Release 12.1.0.1.0 Production on Sat Jul 21 13:00:32 2018
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

  

4. 客户端的连接的方式
- 简便命名法(easy connect)

eg: sqlplus scott/tiger@192.168.56.90:1521/orcl.example.comJDBC(JAVA来连接): jdbc:oracle:thin:@192.168.56.90:1521/orcl.example.com

- 服务命名法: service name
客户端的配置:本地服务名称 --> 包含服务器IP、端口、服务名称(netmgr)

[oracle@oracledemo ~]$ ls /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/
listener1807095AM2956.bak  listener.ora  samples  shrept.lst  tnsnames1807095AM2956.bak  tnsnames.ora -->配置完后新增的
[oracle@oracledemo ~]$ more /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
MYDEMO =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.90)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl.example.com)))[oracle@oracledemo ~]$ sqlplus scott/tiger@mydemo            ##直接使用mydemo来连接
SQL*Plus: Release 11.2.0.1.0 Production on Mon Jul 9 10:52:53 2018
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> 

- 目录命名法(使用LADP服务器作为连接的方式,少用)
- 外部命名法(external naming几乎没人使用)

5. 共享服务器模式
- 专有服务器模式(默认)
(*)有一个客户端,就有一个PGA和服务器server process
描述:客户端登录时,监听器如果信息正确,监听器就会去创建PGA和server process,server process用来接受客户端发送过来的sql语句并执行,
如果客户端和PGA、server process是一对一的关系,这就是专有服务器模式

- 共享服务器模式(类似于数据库的连接池)
描述:服务器端的服务器进程包括一定信息数量是一定的,可能被一些客户端共享
注意:管理员登录一定是专有有服务器模式,RMAN备份和恢复也是只是专有服务器模式
工作原理:有100个客户端,在共享服务器模式下服务器进程是一定的,如在服务器端存在5个服务器进程,也就意味着在同一个时间,服务器端只能处理5个客户端的请求,如果有更多的请求就需要排队,也就是5个服务器的进程会被100个客户端所共享的,需要有一个排队的机制在服务器端有一个监听器,要通过它才能登录到oracle的数据库上,在共享服务器的模式下需要有分发器,如有3个分发器,分发器主要作用是转发请求,不会做具体的处理
如客户端1连接到监听器上需要连接登录,监听器会在所有的分发器中找一个最不Busy的分发器进行分配给客户端,如找到分发器1,这时监听器就会把分发器1分配给客户端1,这时客户端1就可以直接执行sql语句,最终还是由server process来执行sql语句,分发器接收到请求后,会把请求放入一个请求队列中,如果有一个server process空闲了,它就会从请求队列中取出一个请求来执行处理
当sql语句执行完后,server process把执行的结果放入响应队列中,当分发器将sql放入请求队列时,实际把分发器执行的信息也放入到请求队列中,所以当服务器进程执行完成后,实际上服务器进程的响应队列是知道返回给那个对应的分发器,分发器得到结果后就会返回给对应的客户端
与专有服务器模式区别是:客户端是直接发送给server process进程
summary: 服务器端的服务进程是一定的,如果存在过客户端就需要有一种队列的机制来共享服务器的进程


配置:服务器进程数、分发器个数

SQL> show parameter shared_servers
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers           integer
shared_servers               integer     1   #共享服务器进程个数,默认是一个表示专有服务器进程
修改配置:
SQL> alter system set shared_servers=5;
配置分发器:
SQL> show parameter dispatcher
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
dispatchers              string  (PROTOCOL=TCP) (SERVICE=orclXDB)  ###默认是没配置
max_dispatchers              integer
SQL> alter system set dispatchers='(PROTOCOL=TCP) (dispatchers=3)';

  

6. 分布式数据库基础


- 数据物理上被存放在网络的多个节点上,逻辑上是一个数据库
- 特点:数据的独立性,指的是用户不必关心数据如何分割和存储,只需要关心它需要什么数据,如下的订票,用户不会关心票的信息存在那里
例子描述:一个火车订票的系统,网络像是12306,可以订全国各地的火车票,实际上北京的是存在北京的数据库中,上海的是存在上海的数据库中,它们在物理上就不在一个地方,但是可以通过逻辑上整合在一起

- 操作分布式数据库:oracle支持分布式操作
描述:两个数据库如红色在北京,绿色在上海,物理上不一起,可以从逻辑上看作一个数据库,如在北京的数据为中保存部门表的信息dept,在上海的数据库中保存上海表的信息emp,它们组成了一个分布式的环境,要在分布式的环境中操作,如要在红色的数据库中访问绿色的数据库中的数据,可以通过网络来实现,这是数据库的链路,它是有方向的.

- 定义数据库的链路

CREATE DATABASE LINK [db_link_name] CONNECT TO
[user_name] IDENTIFIED BY [password] USING '[tns_name]';
[db_link_name]: 是所要连接的数据库的服务名,也就是该数据库的真实名称(通常就是SID)
[user_name]: 是所要连接的用户名称
[password]: 是所要连接的用户密码,是远程的数据库
[tns_name]: 是所要连接数据库的服务命名
如:create database link l2 conncet to scott identified by tiger using 'remoteorcl';  #不是12是l2

实际配置

node1: windows xp oracle10g     192.168.56.128
node2: oracle linux oracle11g   192.168.56.90

测试连接通性:

[root@oracledemo ~]# ping 192.168.56.128
PING 192.168.56.128 (192.168.56.128) 56(84) bytes of data.
64 bytes from 192.168.56.128: icmp_seq=1 ttl=128 time=1.75 ms

建立数据库链路(linux上oracle访问windows xp上的oracle)
创建服务命名:linux上oracle访问windows xp上的oracle,所有在linux机器上建立服务命名,去代表远端windows oracle数据库上的信息
在vnc上操作:创建一个服务命名代表远端

在vnc上操作:创建一个服务命名代表远端
[oracle@oracledemo ~]$ ls /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/  #VNC配置过程保存在tnsnames.ora中
listener1807095AM2956.bak  listener.ora  samples  shrept.lst  tnsnames1807095AM2956.bak  tnsnames.ora
[oracle@oracledemo ~]$ more /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
REMOTEORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.128)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))

创建数据库的链路(建立通道)

[oracle@oracledemo ~]$ sqlplus scott/tiger
SQL> create database link l2 connect to scott identified by tiger using 'remoteorcl';
create database link l2 connect to scott identified by tiger using 'remoteorcl'
ERROR at line 1:
ORA-01031: insufficient privileges  #没有创建的权限
SQL> conn / as sysdba   #切换到管理员
Connected.
SQL> grant create database link to scott;   #授权
Grant succeeded.
SQL> conn scott/tiger                       #切换到scott
Connected.
SQL> create database link l2 connect to scott identified by tiger using 'remoteorcl';
Database link created.

分布式数据库查询

SQL> select ename,dname     #@l2是访问windows上的oracle2  from dept,emp@l2  3  where dept.deptno=emp.deptno;
ENAME      DNAME
---------- --------------
SMITH      RESEARCH
ALLEN      SALES
WARD       SALES
JONES      RESEARCH
MARTIN     SALES
BLAKE      SALES
CLARK      ACCOUNTING
SCOTT      RESEARCH
KING       ACCOUNTING   ###
TURNER     SALES
ADAMS      RESEARCH
ENAME      DNAME
---------- --------------
JAMES      SALES
FORD       RESEARCH
MILLER     ACCOUNTING

修改windows某个用户的数据来测试

update emp set ename='KING123' where empno='7839';
commit

再查询

SQL> /
ENAME      DNAME
---------- --------------
SMITH      RESEARCH
ALLEN      SALES
WARD       SALES
JONES      RESEARCH
MARTIN     SALES
BLAKE      SALES
CLARK      ACCOUNTING
SCOTT      RESEARCH
KING123    ACCOUNTING   #######已经改变
TURNER     SALES
ADAMS      RESEARCHENAME       DNAME
---------- --------------
JAMES      SALES
FORD       RESEARCH
MILLER     ACCOUNTING

其他操作

创建别名:create synonym emp1 for emp@L2;   #创建同义词来代表远端数据库的表
建立远程表的视图:create view emp as select * from emp1@L1 union select * from emp2@L2
插入操作:insert into emp select * from emp@L2;
数据复制: create table emp as select * from emp@L2;
操作:
SQL> conn / as sysdba
Connected.
SQL> grant create synonym to scott;
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> create synonym remoteemp for emp@l2;
Synonym created.
SQL> select ename,dname2  from dept , remoteemp3  where dept.deptno=remoteemp.deptno;
ENAME      DNAME
---------- --------------
SMITH      RESEARCH
ALLEN      SALES
WARD       SALES
JONES      RESEARCH
MARTIN     SALES
BLAKE      SALES
CLARK      ACCOUNTING
SCOTT      RESEARCH
KING123    ACCOUNTING
TURNER     SALES
ADAMS      RESEARCHENAME       DNAME
---------- --------------
JAMES      SALES
FORD       RESEARCH
MILLER     ACCOUNTING
14 rows selected.

分布式数据库的跨节点更新
描述:分布式数据库是物理上不在一起,逻辑上是整体,如北京是主数据库,上海是从数据库,如果在主上的数据发生更新,可以copy到从上进行备份
实现的方式
* 快照
* 定义快维护关系表的异步副本
* 指在主表修改后指定的时间内刷新副本,用于主表修改少,但频繁查询的表

* 触发器
* 利用触发器实现数据的同步,如北京的数据库发生的更改,可以利用触发器同步到上海

* 区别
* 触发器是同步的,快照是异步的,使用触发器时如果主发生更改马上会copy到从不会有延时,这是同步,快照是过一段时间才会copy
* 触发器是定义在主数据库上,快照是定义在从数据库上

触发器的实现:当主数据库的员工工资更改后,需要马上同步到从数据库的上,主是linux上的oracl,从是xp上的oracle
主数据库上:

SQL> select ename,sal from emp;   #在这例子中:涨工资前的工资,从数据库上也是一样
ENAME         SAL
---------- ----------
SMITH         800
ALLEN        1600
WARD         1250
JONES        2975
MARTIN       1250
BLAKE        2850
CLARK        2450
SCOTT        3000
KING         5000
TURNER       1500
ADAMS        1100ENAME        SAL
---------- ----------
JAMES         950
FORD         3000
MILLER       1300

定义触发器

create or replace trigger syncSalary
after update
on emp
for each row
beginupdate remoteemp set sal=:new.sal where empno=:new.empno;
end;
/
# 触发器的名称为syncSalary,针对是更新后的操作update,定义在主数据库的emp上,涨工资是要把每个员工的数据都更新到从数据库上,所以这是一个针对行的触发器,触发器不需要使用变量就直接使用begin和end,这个触发器就会在主数据库update操作执行后去更新从数据库,从数据为上的表同义词remoteemp,SQL> create or replace trigger syncSalary
after update
on emp
for each row
beginupdate remoteemp set sal=:new.sal where empno=:new.empno;
end;
Trigger created.
SQL> select ename,sal from emp where empno=7839;
ENAME         SAL
---------- ----------
KING         5000从数据库上的king的工资
SQL> select ename,sal from emp where empno=7839;
ENAME             SAL
---------- ----------
KING123          5000主数据库上更新:
SQL> update emp set sal=6000 where empno=7839;
SQL> commit;
SQL> select ename,sal from emp where empno=7839;
ENAME         SAL
---------- ----------
KING         6000从数据库上检查:
SQL> select ename,sal from emp where empno=7839;
ENAME             SAL
---------- ----------
KING123          6000

  

7. 使用跟踪文件诊断监听器
* 跟踪文件
后缀为trc文件 --》 跟踪会话的信息、监听器的信息
如在会话中打开会话的跟踪,它就会把当前会话的信息,包括执行的sql语句,以及统计信息记录到trc文件中,通过格式化文件就可以分析当前会话中的内容
位置:

SQL> show parameter dumpNAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
background_core_dump             string  partial
background_dump_dest             string  /u01/app/oracle/diag/rdbms/orcl/orcl/trace  ##跟踪文件的位置
core_dump_dest               string  /u01/app/oracle/diag/rdbms/orcl/orcl/cdump
max_dump_file_size           string  unlimited
shadow_core_dump             string  partial
user_dump_dest               string  /u01/app/oracle/diag/rdbms/orcl/orcl/trace
[oracle@oracledemo ~]$ cd /u01/app/oracle/diag/rdbms/orcl/orcl/trace/
[oracle@oracledemo trace]$ ls
orcl_ora_20258.trc    跟踪文件
orcl_ora_28025.trm    跟踪文件的元信息文件

确定当前会话的跟踪文件
(1) 授权scott用户dba权限方便操作

SQL> grant dba to scott;
SQL> conn scott/tiger   这是一个新的会话连接

(2)确定当前会话的ID

SQL> select sid from v$mystat where rownum=1;  #v$是一个数据字典SID
----------37

(3) 根据会话的ID来确定内存中的地址信息

SQL> select PADDR from v$session where SID=37;           ##PADDR == address of process
PADDR
--------
7745FC94

(4) 根据地址信息确定跟踪的会话ID,也就是操作系统的进程ID

SQL> select SPID from V$PROCESS where ADDR='7745FC94';
SPID
------------------------
18691

(5) 开启会话跟踪

SQL> alter session set sql_trace=true;   #关闭是false,不关闭会话文件会变得很大
Session altered.
[oracle@oracledemo trace]$ ls *18691*  #产生了对应的文件
orcl_ora_18691.trc  orcl_ora_18691.trm

(*) oracle的SQL优化: 以下的是重复的SQL,可以通过这样的跟踪信息找到问题,不用生成多个执行计划

注意:解决重复SQL的方法:使用绑定变量或游标共享
select count(*) from scott.emp where deptno=10;
select count(*) from scott.emp where deptno=20;
select count(*) from scott.emp where deptno=30;
select count(*) from scott.emp where deptno=40;
select count(*) from scott.emp where deptno=50;
SQL> alter session set sql_trace=false;

(*)使用tkprof工具对跟踪文件进行格式化,方便人阅读

[oracle@oracledemo trace]$ tkprof orcl_ora_18691.trc ~/a.txt sys=no sort=fchela
# sys=no使用管理员产生的信息就不要进行格式化    sort=fchela根据sql的时间排序
[oracle@oracledemo trace]$ vim ~/a.txt
SQL ID: 8xkd0hm6ys0p0
Plan Hash: 2083865914   会生成sql的执行计划,这个是ID号,通过分析得到它们的执行计划的ID号都是一样的,会影响SQL的性能
select count(*)
fromscott.emp where deptno=10
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          1          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          7          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          0          8          0           1

  

8. 使用监听器的跟踪信息
(*) 监听器参数配置

[oracle@oracledemo ~]$ lsnrctl statusLSNRCTL for Linux: Version 11.2.0.1.0 - Production on 09-JUL-2018 15:15:55Copyright (c) 1991, 2009, Oracle.  All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledemo)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                09-JUL-2018 00:49:26
Uptime                    0 days 14 hr. 26 min. 29 sec
Trace Level               off       表示监听器跟踪是关闭状态,如果打开的话会产生另一个文件trc文件来跟踪
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora   监听器的配置文件
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracledemo/listener/alert/log.xml       监听器的日志文件,不记录跟踪信息
Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracledemo)(PORT=1521)))
Services Summary...
Service "orcl.example.com" has 1 instance(s).Instance "orcl", status READY, has 4 handler(s) for this service...
Service "orclXDB.example.com" has 1 instance(s).Instance "orcl", status READY, has 0 handler(s) for this service...
The command completed successfully

(*) 开启跟踪

[oracle@oracledemo ~]$ lsnrctl
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 09-JUL-2018 15:18:45
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> show
The following operations are available after show
An asterisk (*) denotes a modifier or extended command:
rawmode                            displaymode
rules                              trc_file                            使用trace文件来记录跟踪信息
trc_directory                      trc_level                           跟踪的级别
log_file                           log_directory                       跟踪文件保存的目录
log_status                         current_listener
inbound_connect_timeout            startup_waittime
snmp_visible                       save_config_on_stop
dynamic_registration               enable_global_dynamic_endpoint
oracle_home                        pid 

使用show命令查看每个参数

LSNRCTL> show trc_file
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledemo)(PORT=1521)))
LISTENER parameter "trc_file" set to ora_8267_3086763712.trc   ####对应的文件
The command completed successfullyLSNRCTL> show trc_level
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledemo)(PORT=1521)))
LISTENER parameter "trc_level" set to off   ##级别
The command completed successfullyLSNRCTL> show log_directory
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledemo)(PORT=1521)))
LISTENER parameter "log_directory" set to /u01/app/oracle/diag/tnslsnr/oracledemo/listener/alert  ###保存的目录
The command completed successfully
[oracle@oracledemo ~]$ cd /u01/app/oracle/diag/tnslsnr/oracledemo/listener/alert
[oracle@oracledemo alert]$ ls
log.xml

使用trace命令来开启监听器的跟踪

LSNRCTL> help trace
trace OFF | USER | ADMIN | SUPPORT [<listener_name>] : set tracing to the specified level
参数:
off: 关闭监听器的跟踪,对应数字0
USER: 开启用户级别的跟踪,对应数字4
ADMIN: 开启管理级别的跟踪,对应数字10
SUPPORT: 开启ORACLE监听器所支持的跟踪信息,对应数字16
一般:设置成support(或者16),记录所有的支持的跟踪信息
LSNRCTL> trace support
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracledemo)(PORT=1521)))
Opened trace file: /u01/app/oracle/diag/tnslsnr/oracledemo/listener/trace/ora_8267_3086763712.trc  生成一个跟踪文件
The command completed successfully
[oracle@oracledemo ~]$ ls /u01/app/oracle/diag/tnslsnr/oracledemo/listener/trace
listener.log  ora_8267_3086763712.trc  ora_8267_3086763712.trm

使用tracasst命令格式化监听器的跟踪文件

Usage : trcasst [options] <filename>  #还可以加转向输出符>
[oracle@oracledemo trace]$ trcasst -la ora_8267_3086763712.trc > ~/b.txt
参数:-s  Statistics 显示监听器的统计信息
[oracle@oracledemo trace]$ trcasst -s ora_8267_3086763712.trc    比较常用的参数Trace Assistant Utility: Version 11.2.0.1.0 Production on July 9, 2018 3:49:12 PMCopyright (c) 2001, 2009, Oracle.  All rights reserved.**************************************************************************                        Trace Assistant                                **************************************************************************----------------------
Trace File Statistics:
----------------------
Start Timestamp : 018-07-09 15:43:27.055475
End Timestamp   : 018-07-09 15:48:57.022934
Total number of Sessions: 2DATABASE:Operation Count:    0 OPENS,     0 PARSES,     0 EXECUTES,     0 FETCHESORACLE NET SERVICES:Total Calls  :        12 sent,         11 received,           0 ociTotal Bytes  :      2059 sent,       3602 receivedAverage Bytes:       171 sent per packet,        327 received per packetMaximum Bytes:       178 sent,        350 receivedGrand Total Packets:     12  sent,      11 received**************************************************************************                    Trace Assistant has completed                      **************************************************************************-e[0|1|2]  Error information, default is 0  监听器中的错误信息[oracle@oracledemo trace]$ trcasst -e1 ora_8267_3086763712.trc   显示所有错误信息-l[a|i <connection_id>]  Connection information  列出所有的连接[oracle@oracledemo trace]$ trcasst -la ora_8267_3086763712.trc
Connection ID: 2      每个代表数据库的连接Socket Id: 12Operation: ReceiveMultiplex: OFFConnect Data:
Connection ID: 1Operation: ReceiveMultiplex: OFFConnect Data:

  

转载于:https://www.cnblogs.com/reid21/articles/9814798.html

六、配置Oracle数据库的网络环境相关推荐

  1. win7配置远程连接oracle数据库吗,win7环境下配置oracle数据库的方法有哪些?

    1win7数据库. 在服务中停止所有的oracle相关服务: 2win7数据库. 删除注册表中以下三个位置的oracle相关文件夹: 3win7数据库. 在环境变量中path中win7数据库,删除or ...

  2. oracle数据库配置环境,win7环境下配置oracle数据库的方法

    前些日子在在Win7下安装了oracle 11g,不过PL/SQL却没法用,在实验的过程中,遇到了很多问题,下面就教您win7环境下配置oracle数据库的方法,供您参考. 环境:Windows 7( ...

  3. CentOS7下使用yum快速安装配置oracle数据库

    2019独角兽企业重金招聘Python工程师标准>>> CentOS7下使用yum快速安装配置oracle数据库 2017年10月10日 15:29:23 aladdin_sun 阅 ...

  4. 思科nat配置实例_思科3750交换机配置DHCP服务器实例网络环境

    思科3750交换机配置DHCP服务器实例网络环境: 一台3750交换机,划分三个vlan, vlan2 为服务器所在网络,命名为server.IP地址段为192.168.2.0,子网掩码:255.25 ...

  5. oracle数据库从AIX环境expdp迁移到linux环境(sec_case_sensitive_logon=true导致连接报错ORA-01017)

    oracle数据库从AIX环境(11.2.0.4)expdp迁移到linux环境(11.2.0.4)(sec_case_sensitive_logon=true导致连接报错ORA-01017) 将se ...

  6. oracle 数据库基础配置,Oracle数据库网络服务配置基础、SQL编程详解-Oracle

    Oracle数据库是目前世界上流行的关系数据库管理系统,系统可移植性好.使用方便.功能强,适用于各类大.中.小.微机环境.Oracle数据库的主要内容包括:表空间.用户权限.四种约束等基础概念,DDL ...

  7. 轻松四步配置Oracle数据库监听

    原文:http://database.ccidnet.com/art/1107/20070521/1085625_1.html 近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服 ...

  8. Springboot项目配置oracle数据库

    前段时间的一个项目需要使用oracle数据库,之前使用的都是Spingboot+Mybatis+Druid+Mysql,没有配置Oracle的经验,现在记录一下 1.使用Navicat Premium ...

  9. eclipse怎么配置oracle数据库,Eclipse连接Oracle数据库介绍

    Eclipse连接Oracle数据库介绍 由于eclipse是开源产品,所以许多工具都以插件的形式提供由用户选择安装,许多文章中都提到了如何连接数据库,但是并没有说明需要加载以及如何加载数据库.jar ...

最新文章

  1. PTA 基础编程题目集 7-12 两个数的简单计算器 C语言
  2. 10.Verilog状态机使用方法
  3. java消息 框架_java 框架-消息队列ActiveMQ
  4. JNI学习积累之二 ---- 数据类型映射、域描述符说明
  5. shell 数组里追加数值_shell编程之数组及变量的多功能用法
  6. 如何把两个查询语句合成一条 语句
  7. centos上安装jdk
  8. java用户的登录图片_Java 如何用 token 做用户登录认证
  9. js后退页面不重新加载_快应用:支持加载单独JS文件的规范思考
  10. jQuery初识 - jQuery中的方法
  11. 【clickhouse】使用waterdrop将Hive中的数据导入ClickHouse
  12. 杭电2897邂逅明下邂逅明下
  13. PREV-55 小计算器 (进制转换)
  14. 【JAVA】poi操作,excel读取数据。
  15. 智能计算机与应用期刊,智能计算机与应用期刊是省级期刊吗
  16. 联想台式计算机光驱启动,Lenovo联想笔记本光驱启动设置方法图文介绍
  17. golang识别身份证号
  18. 大数据毕业设计 - 选题推荐(一)
  19. 小米红米手机通用解锁教程|红米Note8 Pro解锁教程,获取解锁码一键解锁BL的方法
  20. Boolean初始值是什么?

热门文章

  1. 系统管理员设置了系统策略,禁止进行此安装
  2. C#版本与.NET版本对应关系以及各版本的特性
  3. MLPerf最新AI芯片跑分:谷歌TPU和英伟达打破记录
  4. 《学习OpenCV3(中文版)》图书目录
  5. mysql 使用表 语句_【mysql】mysql 经常使用建表语句
  6. 004_Bean标签
  7. keras冻结_【连载】深度学习第22讲:搭建一个基于keras的迁移学习花朵识别系统(附数据)...
  8. Java数据类型转换全解
  9. Java数据结构和算法:哈希表
  10. Nginx动态、静态分离,Nginx配置中做适配