怎么远程连接oracle数据库

怎么远程连接oracle数据库,第1张

设置方法如下:

1、找到$ORACLE_HOME/client_1/network/admin目录下的tnsnamesora文件,并用文本模式打开。

2、添加以下内容:

本地实例名=

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库IP地址)(PORT = 端口号))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = 服务名)

    )

  )

3、用工具登录即可。

可直接在 v$session视图中查询。

语句如:

select  from v$session where username='用户名';

其中用户名应为英文大写字母。如图:

以下为视图各字段说明:

SADDR - session address

SID - session identifier 常用于链接其他列

SERIAL# - SID有可能会重复,当两个session的SID重复时,SERIAL#用来区别session(说白了某个session是由sid和serial#这两个值确定的)

AUDSID - audit session id。可以通过audsid查询当前session的sid。select sid from v$session where audsid=userenv('sessionid');

PADDR - process address,关联v$process的addr字段,通过这个可以查询到进程对应的session

USER# - 同于dba_users中的user_id,Oracle内部进程user#为0

USERNAME - session's username。等于dba_users中的username。Oracle内部进程的username为空。

COMMAND - session正在执行的sql id,1代表create table,3代表select。

TADDR - 当前的transaction address。可以用来关联v$transaction中的addr字段。

LOCKWAIT - 可以通过这个字段查询出当前正在等待的锁的相关信息。sid + lockwait与v$loc中的sid + kaddr相对应。

STATUS - 用来判断session状态。Active:正执行SQL语句。inactive:等待 *** 作。killed:被标注为杀死。

SERVER - 服务类型。

SCHEMA# - schema user id。Oracle内部进程的schema#为0。

SCHEMANAME - schema username。Oracle内部进程的为sys。

OSUSER - 客户端 *** 作系统用户名。

PROCESS - 客户端process id。

MACHINE - 客户端machine name。

TERMINAL - 客户端执行的terminal name。

PROGRAM - 客户端应用程序。比如ORACLEEXE或sqlplusexe

TYPE - session类型。

SQL_ADDRESS,SQL_HASH_VALUE,SQL_ID,SQL_CHILD_NUMBER - session正在执行的sql状态,和v$sql中的address,hash_value,sql_id,child_number对应。

PREV_SQL_ADDR,PREV_HASH_VALUE,PREV_SQL_ID,PREV_CHILD_NUMBER - 上一次执行的sql状态。

MODULE,MODULE_HASH,ACTION,ACTION_HASH,CLIENT_INFO - 应用通过DBMS_APPLICATION_INFO设置的一些信息。

FIXED_TABLE_SEQUENCE - 当session完成一个user call后就会增加的一个数值,也就是说,如果session挂起,它就不会增加。因此可以根据这个字段来监控某个时间点以来的session性能情况。例如,一个小时前某个session的此字段数值为10000,而现在是20000,则表明一个小时内其user call较频繁,可以重点关注此session的performance statistics。

ROW_WAIT_OBJ# - 被锁定行所在table的object_id。和dba_object中的object_id关联可以得到被锁定的table name。

ROW_WAIT_FILE# - 被锁定行所在的datafile id。和v$datafile中的file#关联可以得到datafile name。

ROW_WAIT_BLOCK# - 同上,对应块。

ROW_WAIT_ROW# - session当前正在等待的被锁定的行。

LOGON_TIME - session logon time

首先你得明确是用工具链接?可以用PLSQL或者SQLPLUS。

还是用语言写代码连?若是java就是jdbc,若是C就是odbc。

还是数据库连接?可以DBLINK也可以做集群授权。

SO,你问的太宽泛了,把我的关键字和oracle组合,百度就好了,希望采纳。

SQL> select count() from v$session #当前的连接数

SQL> Select count() from v$session where status='ACTIVE' #并发连接数

SQL> select value from v$parameter where name = 'processes' --数据库允许的最大连接数

SQL> show parameter processes #最大连接

SQL> select username,count(username) from v$session where username is not null group by username; #查看不同用户的连接数

#修改最大连接数:

alter system set processes = 300 scope = spfile;

#重启数据库:

shutdown immediate;

startup;

--查看当前有哪些用户正在使用数据

SELECT osuser, ausername,cpu_time/executions/1000000||'s', sql_fulltext,machine

from v$session a, v$sqlarea b

where asql_address =baddress order by cpu_time/executions desc;select count() from v$session #连接数

select count() from v$session where status='ACTIVE' #并发连接数

show parameter processes #最大连接

alter system set processes = value scope = spfile;重启数据库 #修改连接 Oracle日志查看

一.Oracle日志的路径:

登录:sqlplus "/as sysdba"

查看路径:SQL> select from v$logfile;

SQL> select from v$logfile;(#日志文件路径)

二.Oracle日志文件包含哪些内容:(日志的数量可能略有不同)

control01ctl example01dbf redo02log sysaux01dbf undotbs01dbf

control02ctl redo03log system01dbf users01dbf

control03ctl redo01log SHTTESTdbf temp01dbf

三.Oracle日志的查看方法:

SQL>select from v$sql (#查看最近所作的 *** 作)

SQL>select fromv $sqlarea(#查看最近所作的 *** 作)

Oracle 数据库的所有更改都记录在日志中,从目前来看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行,因为原始的日志信息我们根本无法看懂,Oracle8i后续版本中自带了LogMiner,而LogMiner就是让我们看懂日志信息的工具,通过这个工具可以:查明数据库的逻辑更改,侦察并更正用户的误 *** 作,执行事后审计,执行变化分析。

四.LogMiner的使用:

1、创建数据字典文件(data-dictionary)

1)首先在initora初始化参数文件中,添加一个参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。如:UTL_FILE_DIR = ($ORACLE_HOME\logs) ,重新启动数据库,使新加的参数生效:

SQL> shutdown;

SQL>startup;

2)然后创建数据字典文件

SQL> connect /as sysdba

SQL> execute dbms_logmnr_dbuild(dictionary_filename => 'dictora',dictionary_location => '/data1/oracle/logs');

PL/SQL procedure successfully completed

2、创建要分析的日志文件列表

1)创建分析列表,即所要分析的日志

SQL>execute dbms logmnradd logfile(LogFileName => '/data1/oracle/oradata/akazamdb/redo01log',Options => dbms_logmnrnew);

PL/SQL procedure successfully completeds

2)添加分析日志文件,一次添加1个为宜

SQL>execute dbms_ logmnradd_ logfile(LogFileName => '/data1/oracle/oradata/akazamdb/redo01log',Options => dbms_logmnrADDFILE);

PL/SQL procedure successfully completed

3、使用LogMiner进行日志分析(具体要查询什么内容可以自己修改)

(1)无限制条件

SQL> EXECUTE dbms_logmnrstart_logmnr(

DictFileName=>'/data1/oracle/logs/v816dictora ');

(2)有限制条件

通过对过程DBMS_ LOGMNRSTART_LOGMNR中几个不同参数的设置,可以缩小要分析日志文件的范围。通过设置起始时间和终止时间参数我们可以限制只分析某一时间范围的日志。如下面的例子,我们仅仅分析2007年9月18日的日志:

SQL> EXECUTE dbms_logmnrstart_logmnr(

DictFileName => ' /data1/oracle/logs/ v816dictora ',

StartTime => to_date('2007-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS')

EndTime => to_date(''2007-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS '));

也可以通过设置起始SCN和截至SCN来限制要分析日志的范围:

SQL> EXECUTE dbms_logmnrstart_logmnr(

DictFileName => ' /data1/oracle/logs/ v816dictora ',

StartScn => 20,

EndScn => 50);

4、观察分析结果(v$logmnr_contents)

到现在为止,我们已经分析得到了重作日志文件中的内容。动态性能视图v$logmnr_contents包含LogMiner分析得到的所有的信息。

SELECT sql_redo FROM v$logmnr_contents;

如果我们仅仅想知道某个用户对于某张表的 *** 作,可以通过下面的SQL查询得到,该查询可以得到用户DB_ZGXT对表SB_DJJL所作的一切工作。

SQL> SELECT sql_redo FROM v$logmnr_contents WHERE username='DB_ZGXT' AND tablename='SB_DJJL';

需要强调一点的是,视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrnstart_logmnr'这个会话的生命期中存在。这是因为所有的LogMiner存储都在PGA内存中,所有其他的进程是看不到它的,同时随着进程的结束,分析结果也随之消失。

最后,使用过程DBMS_LOGMNREND_LOGMNR终止日志分析事务,此时PGA内存区域被清除,分析结果也随之不再存在。

5、查看LogMiner工具分析结果

SQL> select from dict t where ttable_name like '%LOGMNR%';-看所有与logmnr相关的视图

TABLE_NAME COMMENTS

------------------------------ --------------------------------------------------------------------------------

GV$LOGMNR_CALLBACK Synonym for GV_$LOGMNR_CALLBACK

GV$LOGMNR_CONTENTS Synonym for GV_$LOGMNR_CONTENTS

GV$LOGMNR_DICTIONARY Synonym for GV_$LOGMNR_DICTIONARY

GV$LOGMNR_LOGFILE Synonym for GV_$LOGMNR_LOGFILE

GV$LOGMNR_LOGS Synonym for GV_$LOGMNR_LOGS

GV$LOGMNR_PARAMETERS Synonym for GV_$LOGMNR_PARAMETERS

GV$LOGMNR_PROCESS Synonym for GV_$LOGMNR_PROCESS

GV$LOGMNR_REGION Synonym for GV_$LOGMNR_REGION

GV$LOGMNR_SESSION Synonym for GV_$LOGMNR_SESSION

GV$LOGMNR_STATS Synonym for GV_$LOGMNR_STATS

GV$LOGMNR_TRANSACTION Synonym for GV_$LOGMNR_TRANSACTION

V$LOGMNR_CALLBACK Synonym for V_$LOGMNR_CALLBACK

V$LOGMNR_CONTENTS Synonym for V_$LOGMNR_CONTENTS

V$LOGMNR_DICTIONARY Synonym for V_$LOGMNR_DICTIONARY

V$LOGMNR_LOGFILE Synonym for V_$LOGMNR_LOGFILE

V$LOGMNR_LOGS Synonym for V_$LOGMNR_LOGS

V$LOGMNR_PARAMETERS Synonym for V_$LOGMNR_PARAMETERS

V$LOGMNR_PROCESS Synonym for V_$LOGMNR_PROCESS

V$LOGMNR_REGION Synonym for V_$LOGMNR_REGION

V$LOGMNR_SESSION Synonym for V_$LOGMNR_SESSION

TABLE_NAME COMMENTS

------------------------------ --------------------------------------------------------------------------------

V$LOGMNR_STATS Synonym for V_$LOGMNR_STATS

V$LOGMNR_TRANSACTION Synonym for V_$LOGMNR_TRANSACTION

GV$LOGMNR_LOGS 是分析日志列表视图

分析结果在GV$LOGMNR_CONTENTS 视图中,可按以下语句查询:

select scn,timestamp,log_id,seg_owner,seg_type,table_space,data_blk#,data_obj#,data_objd#,

session#,serial#,username,session_info,sql_redo,sql_undo from logmnr3 t where tsql_redo like 'create%';

如果不能正常查询GV$LOGMNR_CONTENTS视图,并报以下错误,ORA-01306: 在从 v$logmnr_contents 中选择之前必须调用 dbms_logmnrstart_logmnr() 。可采用如下方法:

create table logmnr3 as select from GV$LOGMNR_CONTENTS;

Oracle端口:1521

以上就是关于怎么远程连接oracle数据库全部的内容,包括:怎么远程连接oracle数据库、oracle如何查看当前有哪些用户连接到数据库、谁知道oracle怎么连接等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9510768.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存