oracle知识小结_oracle基本知识总结

其他工作总结 时间:2020-02-27 22:07:04 收藏本文下载本文
【www.daodoc.com - 其他工作总结】

oracle知识小结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“oracle基本知识总结”。

Tnsnames.ora: listener_rac=(Description=(ADDRESS=(protocol=TCP)(HOST=)(PORT=1521))(ADDRESS=(protocol=TCP)(HOST=)(PORT=1521)))Listener_racdb1=(Description=(ADDRESS=(protocol=TCP)(HOST=)(PORT=1521)))Listener_racdb2=(Description=(ADDRESS=(protocol=TCP)(HOST=)(PORT=1521)))

Pl/sql: Oracle参数查询命令show parameter的一个小技巧,可以使用模糊查询,比如我想查询包含db_的参数,那么我就可以用: SQL> show parameter db_;

NAME

TYPE

VALUE

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

db_16k_cache_size

big integer 0

db_2k_cache_size

big integer 0

db_32k_cache_size

big integer 0

db_4k_cache_size

big integer 0

db_8k_cache_size

big integer 0

db_block_buffers

integer

0

db_block_checking

string

FALSE

db_block_checksum

string

TRUE

db_block_size

integer

8192

db_cache_advice

string

ON

db_cache_size

big integer 0

Oracle 中的Userenv()

1.USEREVN()USERENV(OPTION)

返回当前的会话信息.OPTION='ISDBA'若当前是DBA角色,则为TRUE,否则FALSE.OPTION='LANGUAGE'返回数据库的字符集.OPTION='SESSIONID'为当前会话标识符.OPTION='ENTRYID'返回可审计的会话标识符.OPTION='LANG'返回会话语言名称的ISO简记.OPTION='INSTANCE'返回当前的实例.OPTION='terminal'返回当前计算机名

SELECT USERENV('LANGUAGE')FROM DUAL;

返回当前用户环境的信息,opt可以是: ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE 1.ISDBA 查看当前用户是否是DBA如果是则返回true SQL> select userenv('isdba')from dual;USEREN------FALSE 2.SESSION 返回会话标志

SQL> select userenv('seionid')from dual;USERENV('SESSIONID')--------------------152 4.ENTRYID 返回会话人口标志

SQL> select userenv('entryid')from dual;USERENV('ENTRYID')------------------0 5.INSTANCE 返回当前INSTANCE的标志 SQL> select userenv('instance')from dual;USERENV('INSTANCE')-------------------1 6.LANGUAGE 返回当前环境变量

SQL> select userenv('language')from dual;USERENV('LANGUAGE')---------------------SIMPLIFIED CHINESE_CHINA.ZHS16GBK 7.LANG 返回当前环境的语言的缩写

SQL> select userenv('lang')from dual;USERENV('LANG')---------------------ZHS 8.TERMINAL 返回用户的终端或机器的标志 SQL> select userenv('terminal')from dual;USERENV('TERMINA----------------GAO 9.VSIZE(X)返回X的大小(字节)数

SQL> select vsize(user),user from dual;VSIZE(USER)USER-----------------------------------------6 SYSTEM 2.sys_context

select

SYS_CONTEXT('USERENV','TERMINAL')terminal,SYS_CONTEXT('USERENV','LANGUAGE')language,SYS_CONTEXT('USERENV','SESSIONID')seionid,SYS_CONTEXT('USERENV','INSTANCE')instance,SYS_CONTEXT('USERENV','ENTRYID')entryid,SYS_CONTEXT('USERENV','ISDBA')isdba,SYS_CONTEXT('USERENV','NLS_TERRITORY')nls_territory,SYS_CONTEXT('USERENV','NLS_CURRENCY')nls_currency,SYS_CONTEXT('USERENV','NLS_CALENDAR')nls_calendar,SYS_CONTEXT('USERENV','NLS_DATE_FORMAT')nls_date_format,SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE')nls_date_language,SYS_CONTEXT('USERENV','NLS_SORT')nls_sort,SYS_CONTEXT('USERENV','CURRENT_USER')current_user,SYS_CONTEXT('USERENV','CURRENT_USERID')current_userid,SYS_CONTEXT('USERENV','SESSION_USER')seion_user,SYS_CONTEXT('USERENV','SESSION_USERID')seion_userid,SYS_CONTEXT('USERENV','PROXY_USER')proxy_user,SYS_CONTEXT('USERENV','PROXY_USERID')proxy_userid,SYS_CONTEXT('USERENV','DB_DOMAIN')db_domain,SYS_CONTEXT('USERENV','DB_NAME')db_name,SYS_CONTEXT('USERENV','HOST')host,SYS_CONTEXT('USERENV','OS_USER')os_user,SYS_CONTEXT('USERENV','EXTERNAL_NAME')external_name,SYS_CONTEXT('USERENV','IP_ADDRESS')ip_addre,SYS_CONTEXT('USERENV','NETWORK_PROTOCOL')network_protocol,SYS_CONTEXT('USERENV','BG_JOB_ID')bg_job_id,SYS_CONTEXT('USERENV','FG_JOB_ID')fg_job_id,SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE')authentication_type,SYS_CONTEXT('USERENV','AUTHENTICATION_DATA')authentication_data

from dual;

oracle中以dba_、user_、v$_、all_、seion_、index_开头的常用表和视图 dba_开头

dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息

dba_objects 数据库对象信息

dba_tablespaces 数据库表空间信息 dba_data_files 数据文件设置信息 dba_temp_files 临时数据文件信息 dba_rollback_segs 回滚段信息 dba_ts_quotas 用户表空间配额信息 dba_free_space 数据库空闲空间信息 dba_profiles 数据库用户资源限制信息 dba_sys_privs 用户的系统权限信息 dba_tab_privs 用户具有的对象权限信息 dba_col_privs 用户具有的列对象权限信息 dba_role_privs 用户具有的角色信息 dba_audit_trail 审计跟踪记录信息 dba_stmt_audit_opts 审计设置信息 dba_audit_object 对象审计结果信息 dba_audit_seion 会话审计结果信息 dba_indexes 用户模式的索引信息

user_开头

user_objects 用户对象信息

user_source 数据库用户的所有资源对象信息 user_segments 用户的表段信息 user_tables 用户的表对象信息 user_tab_columns 用户的表列信息 关于这个还涉及到两个常用的例子如下:

1、oracle中查询某个字段属于哪个表

Sql代码

select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%');select table_name,owner from dba_tab_columns t where t.COLUMN_NAME like upper('%username%');

2、oracle中查询某个表的列数

Sql代码

select count(*)from user_tab_columns where table_name= upper('sys_operate');select count(*)from user_tab_columns where table_name= upper('sys_operate');注:这两个例子都用到了upper这个函数,是因为在这里表名得大写,否则查出的结果不是正确的user_constraints 用户的对象约束信息 user_sys_privs 当前用户的系统权限信息 user_tab_privs 当前用户的对象权限信息 user_col_privs 当前用户的表列权限信息 user_role_privs 当前用户的角色权限信息 user_indexes 用户的索引信息

user_ind_columns 用户的索引对应的表列信息 user_cons_columns 用户的约束对应的表列信息 user_clusters 用户的所有簇信息

user_clu_columns 用户的簇所包含的内容信息 user_cluster_hash_expreions 散列簇的信息

v$开头

v$database 数据库信息 v$datafile 数据文件信息 v$controlfile 控制文件信息 v$logfile 重做日志信息 v$instance 数据库实例信息 v$log 日志组信息

v$loghist 日志历史信息 v$sga 数据库SGA信息

v$parameter 初始化参数信息 v$proce 数据库服务器进程信息 v$bgproce 数据库后台进程信息

v$controlfile_record_section 控制文件记载的各部分信息 v$thread 线程信息

v$datafile_header 数据文件头所记载的信息 v$archived_log 归档日志信息

v$archive_dest 归档日志的设置信息

v$logmnr_contents 归档日志分析的DML DDL结果信息 v$logmnr_dictionary 日志分析的字典文件信息 v$logmnr_logs 日志分析的日志列表信息 v$tablespace 表空间信息 v$tempfile 临时文件信息

v$filestat 数据文件的I/O统计信息 v$undostat Undo数据信息 v$rollname 在线回滚段信息 v$seion 会话信息 v$transaction 事务信息 v$rollstat 回滚段统计信息 v$pwfile_users 特权用户信息

v$sqlarea 当前查询过的sql语句访问过的资源及相关的信息 v$sql 与v$sqlarea基本相同的相关信息 v$sytat 数据库系统状态信息

all_开头

all_users 数据库所有用户的信息 all_objects 数据库所有的对象的信息

all_def_audit_opts 所有默认的审计设置信息 all_tables 所有的表对象信息

all_indexes 所有的数据库对象索引的信息 seion_开头

seion_roles 会话的角色信息 seion_privs 会话的权限信息

index_开头

index_stats 索引的设置和存储信息

伪表

dual 系统伪列表信息

oracle最重要的9个动态性能视图

v$seion + v$seion_wait(在10g里功能被整合,凑合算1个吧.)v$proce v$sql v$sqltext v$bh(更宁愿是x$bh)v$lock v$latch_children v$sytat v$system_event 按组分的几组重要的性能视图

1.System 的 over view v$sytat , v$system_event , v$parameter 2.某个seion 的当前情况

v$proce , v$seion , v$seion_wait ,v$seion_event , v$setat 3.SQL 的情况

v$sql , v$sqlarea , v$SQL_PLAN , V$SQL_PLAN_STATISTICS, v$sqltext_with_newlines 3.Latch / lock /ENQUEUE v$latch , v$latch_children , v$latch_holder , v$lock ,V$ENQUEUE_STAT ,V$ENQUEUE_LOCK 4.IO 方面的v$segstat , v$filestat , v$tempstat ,v$datafile , v$tempfile 5.shared pool / Library cache v$Librarycache , v$rowcache , x$ksmsp 6.几个advice也不错

v$db_cache_advice , v$PGA_TARGET_ADVICE, v$SHARED_POOL_ADVICE V$SESSION

在本视图中,每一个连接到数据库实例中的seion都拥有一条记录。包括用户seion及后台进程如DBWR,LGWR,arcchiver等等。A、V$SESSION中的常用

V$SESSION是基础信息视图,用于找寻用户SID或SADDR。不过,它也有一些列会动态的变化,可用于检查用户。如例:

SQL_HASH_VALUE,SQL_ADDRESS:这两列用于鉴别默认被seion执行的SQL语句。如果为null或0,那就说明这个seion没有执行任何SQL语句。PREV_HASH_VALUE和PREV_ADDRESS两列用来鉴别被seion执行的上一条语句。B、STATUS:这列用来判断seion状态是:

l

Achtive:正执行SQL语句(waiting for/using a resource)l

Inactive:等待操作(即等待需要执行的SQL语句)l

Killed:被标注为删除 C、Seion信息

l

SID:SESSION标识,常用于连接其它列

l

SERIAL#:如果某个SID又被其它的seion使用的话则此数值自增加(当一个SESSION结束,另一个SESSION开始并使用了同一个SID)。

l

AUDSID:审查seion ID唯一性,确认它通常也用于当寻找并行查询模式 l

USERNAME:当前seion在oracle中的用户名。D、Client信息

数据库seion被一个运行在数据库服务器上或从中间服务器甚至桌面通过SQL*Net连接到数据库的客户端进程启动,下列各列提供这个客户端的信息 l

OSUSER:客户端操作系统用户名 l

MACHINE:客户端执行的机器 l

TERMINAL:客户端运行的终端 l

PROCESS:客户端进程的ID l

PROGRAM:客户端执行的客户端程序

要显示用户所连接PC的 TERMINAL、OSUSER,需在该PC的ORACLE.INI或Windows中设置关键字TERMINAL,USERNAME。E、V$SESSION中的连接列

Column

View

Joined Column(s)

SID

V$SESSION_WAIT V$SESSTAT V$LOCK V$SESSION_EVENT V$OPEN_CURSOR

SID(SQL_HASH_VALUE, SQL_ADDRESS)

V$SQLTEXT, V$SQLAREA, V$SQL

(HASH_VALUE, ADDRESS)(PREV_HASH_VALUE, PREV_SQL_ADDRESS)

V$SQLTEXT, V$SQLAREA, V$SQL

(HASH_VALUE, ADDRESS)

TADDR

V$TRANSACTION

ADDR

PADDR

ADDR 示例:

1.查找你的seion信息

SELECT SID, OSUSER, USERNAME, MACHINE, PROCESS FROM V$SESSION WHERE audsid = userenv('SESSIONID');2.当machine已知的情况下查找seion SELECT SID, OSUSER, USERNAME, MACHINE, TERMINAL FROM V$SESSION WHERE terminal = 'pts/tl'AND machine = 'rgmdbs1';3.查找当前被某个指定seion正在运行的sql语句。假设seionID为100 select sql_text from v$sqltext

where(hash_value,sql_addre)in

(select decode(sql_hash_value,0,prev_hash_value,sql_hash_value),decode(sql_hash_value,0,prev_sql_addr,sql_addre)

from v$seion

V$PROCESS

where paddr =(select addr from v$proce where spid='操作系统进程id'));寻找被指定seion执行的SQL语句是一个公共需求,如果seion是瓶颈的主要原因,那根据其当前在执行的语句可以查看seion在做些什么。

--

1、start with + connect by-->一般用于构成树查询--eg: SELECT * FROM district WHERE del_flag = 0 AND(district_level_code IN(SELECT DISTINCT domain_key FROM domain_district_level)OR district_level_code IS NULL)START WITH district_id IN(SELECT district_id--根节点开始的位置 FROM district WHERE parent_district_id IS NULL OR parent_district_id = 0)CONNECT BY PRIOR district_id = parent_district_id ORDER BY LEVEL, district_no;--

2、connect by 用于构成循环

select LEVEL FROM dual CONNECT BY LEVEL

select a.PROGRAM,a.MACHINE,a.sid,a.SERIAL#,a.USERNAME,a.STATE,b.TERMINAL,b.SPID as ospid from v$seion a ,v$proce b where a.PADDR=b.ADDR;

2、杀掉某个seion

a)db级别: alter system kill seion 'sid ,serial ';b)os级别: unix kill-9 spid; windows :orakill sid thread eg orakill csltest 9323

v$seion 和v$proce 应该是一一对应的,一个seion 在OS 这边就是一个 proce,如果正常的话,v$seion 应该和v$proce 是一一对应的,但是我遇到很多系统运行一段时间后发现v$seion 里面的记录比v$proce 里面多很多,这就由于无效的seion 产生的,比如有一个生产系统这2个数据字典视图的记录数分别为

SQL> select count(*)from v$seion;COUNT(*)----------140 SQL> select count(*)from v$proce;COUNT(*)----------67 bash-2.03$ ps-ef | grep oracle | wc-l 69 在OS 下查看oracle 总的proce 数与v$proce 查不多,为什么会有这种差别呢?也就是v$seion 和v$proce 的差别 是如何造成的,v$seion 肯定有很多无效的seion 如何判断这些无效的seion 呢

我的环境里面没看到你说的情况,你看看

select sid,username, status from v$seion where paddr not in(select addr from v$proce);数据库没有配置 MTS SQL> show parameter mts SQL> select count(*)from v$seion where paddr not in(select addr from v$proce);

COUNT(*)----------45 也就是说有45个seion 是没有对应的proce 的问题弄清楚了,程序是使用C写的访问数据库的程序,在程序中使用OCI 连接操作数据库,如果正常shutdown 程序的话,是有disconnect 的处理的,这样对数据库的disconnect 是正常的

但是维护人员并没有按照正常的方法来关闭应用程序,直接使用kill-9 kill 了应用程序,相当于异常关闭的应用程序,所以造成在kill 父proce 的时候,对数据库的连接proce 也异常中断,但是seion 却没有disconnect 也就是说seion 还存在,尽管proce 没有了,造成死连接,oracle 的pmon 也无法判断这个seion 是否已经没有用了

可以用什么方法可以查处这写无效的seion 呢

关于v$seion1、dict_columns中comments有值的一般是数据字典的字段而不是性能视图的2、判别seion 的状态可知道某进程是否死掉,但要结合时间看logon_time sql>;select status,logon_time from v$seion;如果状态是inactive,怎样杀掉呢 select sid,serial# from v$seion;alter system kill seion(a,b);a,b填上上面得到的sid,serial#值 以下语句可以证明v$seion是个视图

select view_definition from v$fixed_view_definition where view_name='V$SESSION';select * from v$fixed_table where name='V$SESSION';select owner, object_type, status from dba_objects where object_name='V$SESSION';从OEM中观察确实v$seion是public 同义词.我确实读过一篇文章在讲以下流程, 数据库建立时 1.创建x$等表

2.create view v$xxxx as select * from x$xxxx 3.create view v_$xxxx as select * from v$xxxx 4.create public synonym v$xxxx for v_$xxxxx 如果是dba的话, 使用select * from v$xxxx;该对象将是视图 而非dba的, 使用select * from v$xxxx;该对象将是同义词 「原厂委托制造」OEM(Original Equipment Manufacturer)

OEM ORACLE 企业管理器简称OEM

(Oracle Enterprise Manager)ORACLE的DBA的主要操作工具

Oracle instr函数: INSTR

(源字符串, 目标字符串, 起始位置, 匹配序号)

在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始

到字符的结尾就结束。

语法如下:

instr(string1, string2 [, start_position [, nth_appearance ] ])

参数分析:

string1

源字符串,要在此字符串中查找。

string2

要在string1中查找的字符串.start_position

代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1.字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。

nth_appearance

代表要查找第几次出现的string2.此参数可选,如果省略,默认为 1.如果为负数系统会报错。

注意:

如果String2在String1中没有找到,instr函数返回0.示例:

SELECT instr('syranmo','s')FROM dual;--返回 1

SELECT instr('syranmo','ra')FROM dual;--返回 3SELECT instr('syran mo','a',1,2)FROM dual;--返回 0

(根据条件,由于a只出现一次,第四个参数2,就是说第2次出现a的位置,显然第2次是没有再出现了,所以结果返回0。注意空格也算一个字符!)

SELECT instr('syranmo','an',-1,1)FROM dual;--返回 4

(就算是由右到左数,索引的位置还是要看‘an’的左边第一个字母的位置,所以这里返回4)

SELECT instr('abc','d')FROM dual;--返回 0

注:也可利用此函数来检查String1中是否包含String2,如果返回0表示不包含,否则表示包含。

substr functions

In oracle/PLSQL, the substr functions allows you to extract a substring from a string.The syntax for the substr function is:

substr(string, start_position, [ length ])

说明:

string is the source string.start_position is the position for extraction.The first position in the string is always 1.length is optional.It is the number of characters to extract.If this parameter is omitted, substr will return the entire string.For example:

substr('This is a test', 6, 2)would return 'is'

substr('This is a test', 6)would return 'is a test'

substr('TechOnTheNet', 1, 4)would return 'Tech'

substr('TechOnTheNet',-3, 3)would return 'Net'

substr('TechOnTheNet',-6, 3)would return 'The'

substr('TechOnTheNet',-8, 2)would return 'On'

ORACLE审计小结

1、什么是审计 审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ORACLE_BASE/admin /$ORACLE_SID/adump/)或数据库(存储在system......

Oracle JOB 用法小结

Oracle JOB 用法小结时间:2004-10-20 08:00来源:中国网管联盟 作者:BitsCN整理 点击:24528次一、设置初始化参数 job_queue_proceessql> alter system set job_queue_procee......

Oracle Apps DBA工作小结

Oracle Apps DBA工作小结开始Oracle Apps DBA的工作到现在差不多有2周了,为了清理思路作个小的总结。日常需要做的工作包括:1。Oracle Apps的克隆,复制,因为有各个省份的生产环......

课题_ORACLE编译失效对象小结

ORACLE编译失效对象小结在日常数据库维护过程中,我们会发现数据库中一些对象(包Package、存储过程Procedure、函数Function、视图View、同义词.....)会失效,呈现无效状态(INVALI......

oracle学习心得

一、定位oracle分两大块,一块是开发,一块是管理。开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造......

下载oracle知识小结word格式文档
下载oracle知识小结.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文