
数据库相关
文章平均质量分 55
陈字文
I enjoy java,oracle,pl/sql ,pm and something like that.
展开
-
ORACLE常用命令总结-ORACLE的启动和关闭
1、在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>shutdownSVRMGR>qui原创 2010-03-29 13:03:00 · 1118 阅读 · 0 评论 -
ORACLE常用命令总结-用户如何有效地利用数据字典
ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化,体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。 数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。我们不能手工修改数据字典里的信息。 很多时候,一般的ORACLE用户不知道如何有效地利用它。 dictionary原创 2010-03-29 13:10:00 · 966 阅读 · 0 评论 -
ORACLE常用命令总结-查看数据库的SQL
1、查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_n原创 2010-03-29 13:12:00 · 904 阅读 · 0 评论 -
ORACLE常用命令总结-ORACLE用户连接的管理
用系统管理员,查看当前数据库有几个用户连接:SQL> select username,sid,serial# from v$session;如果要停某个连接用SQL> alter system kill session sid,serial#;如果这命令不行,找它UNIX的进程数SQL> select pro.spid from v$session ses,v$process pro wher原创 2010-03-29 13:13:00 · 849 阅读 · 0 评论 -
ORACLE常用命令总结-SQL*PLUS使用
a、近入SQL*Plus$sqlplus 用户名/密码 退出SQL*PlusSQL>exitb、在sqlplus下得到帮助信息列出全部SQL命令和SQL*Plus命令SQL>help列出某个特定的命令的信息SQL>help 命令名c、显示表结构命令DESCRIBESQL>DESC 表名d、SQL*Plus中的编辑命令显示SQL缓冲区命令SQL>L修改SQL命令首先要将待改正行变为当前行SQL>原创 2010-03-29 13:15:00 · 1204 阅读 · 0 评论 -
ORACLE常用命令总结-ORACLE 常用的SQL语法和数据对象
一.数据控制语句 (DML) 部分1.INSERT (往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’如果字段值里原创 2010-03-29 13:16:00 · 1077 阅读 · 0 评论 -
ORACLE常用命令总结-例子
//创建一个控制文件命令到跟踪文件 alter database backup controlfile to trace; //增加一个新的日志文件组的语句 connect internal as sysdba alter database add logfile group 4 (’/db01/oracle/CC1/log_1c.dbf’, ’/db02/oracle/CC1/log_2c.d原创 2010-03-29 13:21:00 · 1483 阅读 · 0 评论 -
ORACLE常用命令总结-ORACLE逻辑备份的SH文件
完全备份的SH文件:exp_comp.shrq=` date +"%m%d" `su - oracle -c "exp system/manager full=y inctype=complete file=/oracle/export/db_comp$rq.dmp"累计备份的SH文件:exp_cumu.shrq=` date +"%m%d" `su - oracle -c "exp system原创 2010-03-29 13:16:00 · 1244 阅读 · 0 评论 -
Oracle的监听口令及监听器安全设置
Oracle的监听口令及监听器安全设置<br /> 近段时间很多人提出监听配置及监听器安全设置相关问题,客户终端(Client)无法连接服务器端(Server)。Oracle的监听器一直以来都存在一个严重的安全问题,那就是:如果不设置安全措施,那么能够访问的用户就可以远程关闭监听器。本文现对监听配置作一简单介绍,并提出一些客户终端无法连接服务器端的解决思路,愿对广大网友与读者有一些帮助<br /> 一、监听器(LISTENER)<br /> 监听器是Oracle基于服务器端的一种网络服务,主要用于原创 2010-06-07 10:22:00 · 1513 阅读 · 0 评论 -
ORACLE 中 NVL 函数使用方法
<br /> 从两个表达式返回一个非 null 值。<br />语法NVL(eExpression1, eExpression2) <br /> 参数eExpression1, eExpression2 <br /> 如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。<br /> eExpression1 和 eE原创 2010-06-10 15:26:00 · 1381 阅读 · 0 评论 -
ORACLE删除字符串中间的空格
<br />使用类似于这个句子就可以删除:<br /> <br /> <br />update chenzw set name = REGEXP_REPLACE(name, '( ){1,}', '')<br /> <br /> <br /> <br /> <br /> <br /> <br />UPDATE 表 SET 列=REGEXP_REPLACE(列,'( ){1,}','') 估计:前面正则表达式是判断几个空格,后面是''空字符串.意思是将该元数据中,选出符合1-N个空格,换成空原创 2010-09-10 22:23:00 · 7527 阅读 · 0 评论 -
Oracle 优化 转
我觉得主要应该从5个方面进行调整: 1.去掉不必要的大型表的全表扫描 2.缓存小型表的全表扫描 3.检验优化索引的使用 4.检验优化的连接技术 5.尽可能减少执行计划的Cost 现在简单的举几个例子 Where子句中有“!=”将不使用索引 select account_name from test where amount != 0 (不使用) select account_name from test where amount > 0 (使用) Whe原创 2010-09-14 21:13:00 · 868 阅读 · 0 评论 -
Oracle中如何显示当前的所有用户表
显示某用户所有表(例如SCOTT,必须大写) select TABLE_NAME from all_tables where owner = 'SCOTT'; 显示当前的所有用户表 select * from user_tables 显示当前数据库的所有表 select * from tab; 显示当前数据表空间名 你可以采用sys用户登陆 select tablespace_name from dba_tables where table_name =原创 2010-09-25 22:52:00 · 2887 阅读 · 0 评论 -
ORACLE 10G 中的正则表达式
oracle的正则表达式(regular expression)简单介绍 目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境。 Oracle 10g正则表达式提高了SQL灵活性。有效的解决了数据有效性,重复词的辨认, 无关的空白检测,或者分解多个正则组成的字符串等问题。 Oracle 10g支持正则表达式的四个新函数分别是:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和R原创 2010-09-26 00:08:00 · 770 阅读 · 0 评论 -
查看当前的用户都创建了什么存储过程
<br />查看当前用户:<br />select * from user_procedures;<br /> <br />或者<br />select * from user_objects where object_type='PROCEDURE';-- 一定要大写<br /><br />查看所有用户(注意有查询权限)<br />select * from all_procedures;<br /><br />或者<br />select * from all_objects where object_原创 2010-10-01 09:50:00 · 2423 阅读 · 0 评论 -
Oracle建立DBLINK的步骤记录,其实就是一条CREATE DATABASE LINK语句!
<br />需求描述:<br /> 本地一台客户机,上面安装有ORACLE数据库,本客户机的IP为 10.187.255.251。<br /> 机房一台数据库服务器,IP地址为10.187.255.11,SID为XYXNB ,用户名为USER密码为PASSWORD<br /><br /> 通过 SELECT INSTANCE_NAME FROM V$INSTANCE; 语句查看本地数据库SID为 ORCL。<br /><br /> 此时一个需求是要将本地的ORCL数据库访问到机房原创 2011-01-04 11:41:00 · 20736 阅读 · 1 评论 -
DBMS_PIPE管道通信
/**问题:在编译过程的时候发现有"DBMS_PIPE"标识符必须声明的错误PLS-00201*//**分析:通过角色获得的权限无效所以通过grant dba to xaxnb而得到的xaxnb用户的权限是dba的权限,在PLSQL中是没有这个权限的需要通过显式的直接给用户授权,所以需要执行grant all on dbms_pipe to public来进行授权*//**解决:1 使用sysdba用户权限登录ORACLE2 执行grant execute on原创 2011-05-12 16:55:00 · 3151 阅读 · 0 评论 -
PL/SQL中的异常处理
<br />PL/SQL程序在运行的过程当中,可能会出现错误或者异常的情况,例如无法建立与ORACLE的连接,或者返回多行的错误。好的程序应该是对可能发生的异常情况进行处理,异常处理代码在EXCEPTION中实现。可以在EXCEPTION块中使用WHEN语句来定义异常处理。WHEN语句的使用方法如下:<br />EXCEPTION<br />WHEN <异常情况名> THEN<br /> <异常处理代码><br />WHEN <异常情况名> THEN<br /> <异常处理代码><br />……<br原创 2011-04-04 22:09:00 · 1118 阅读 · 0 评论 -
ORACLE数据库索引失效
<br /> 数据库中有一个表,用PL/SQL查看该表的索引没有被DROP掉, 但是表上的数据查询起来很慢(查询时间大概是原来的3倍),后来重建了一下索引就好了, 请问这是为什么, 在什么情况下会出现类似的索引丢失的情况?<br /> <br />可能是你的表经常被更新,碎片太多,索引占用空间太大,优化器觉得没有必要用索引了 <br /> 就直接全表扫描了啊,你重新建立索引,就整理了碎片了啊,当然就又用索引了<br /> <br />索引失效的情况很多,比如左边转载 2011-04-15 00:07:00 · 5874 阅读 · 1 评论 -
存储过程和触发器-编译触发器
/*在使用CREATE TRIGGER语句创建触发器的时候,Oracle会对触发器进行编译。如果编译过程中发现了错误,可以使用DBA_ERRORS(或者USER_ERRORS)视图查看错误的具体信息虽然编译失败,但是仍旧成功的创建了触发器对象可以使用ALTER TRIGGER COMPILE命令来对触发器进行编译。*/--创建一个表DROP TABLE TESTLOG;CREATE TABLE TESTLOG( USERNAME VARCHAR2(100),原创 2011-04-18 14:02:00 · 2395 阅读 · 0 评论 -
存储过程和触发器-行触发器
/*行触发器在受影响的每一行上执行,可以使用Create Trigger语句创建语句触发器语法如下CREATE TRIGGER [BEFORE|AFTER] ON FOR EACH ROW*/--创建两个表,做未试验用DROP TABLE DEPARTMENT;DROP TABLE EMPLOYEES;DROP TRIGGER TESTROWTRIGGER1;DROP TRIGGER TESTROWTRIGGER2;CREATE TABLE DEPAR原创 2011-04-18 14:07:00 · 744 阅读 · 0 评论 -
存储过程和触发器-语句触发器
/*语句触发器与一些特定的语句相关,例如INSERT,UPDATE,DELETE语句等等,可以使用CREATE TRIGGER语句创建触发器,格式如下:CREATE[OR REPLACE] TRIGGER [BEFORE|AFTER] ON */--在SqlPlus中创建两张用于测试的表drop table testTrigger;drop table testlog;drop trigger TRI_TESTTRIGER;--创建表create ta原创 2011-04-18 14:08:00 · 761 阅读 · 0 评论 -
存储过程和触发器-启用和禁用触发器
/*有的情况下可能需要临时禁用触发器,比如他引用的数据库对象已经失效,或者需要执行大量的数据操作此时不希望触发器工作,以避免造成延时等等ALTER TRIGGER DISABLE; 禁用某个触发器ALTER TRIGGER ENABLE; 启用某个触发器ALTER TABLE DISABLE ALL TRIGGERS; 禁用表上的所有的触发器ALTER TABLE ENABLE ALL TRIGGERS; 启用表上的所有的触发器*/--创建表和触发器DR原创 2011-04-18 14:09:00 · 1929 阅读 · 0 评论 -
事务与锁定-查看被阻塞的会话信息
/*通过查看DBA_WAITERS视图可以查看当前被阻塞的会话的信息*/SELECT WAITING_SESSION, --NUMBER 等待资源的会话 HOLDING_SESSION, --NUMBER 持有资源的会话 LOCK_TYPE, --VARCHAR2(26) 锁的类型 MODE_HELD, --VARCHAR2(40) 持有资源的模式 MODE_REQUESTED, --VA原创 2011-04-18 14:13:00 · 1226 阅读 · 0 评论 -
事务与锁定-查看死锁中占用资源的会话信息
--模拟死锁/*可以通过查看DBA_BLOCKERS视图来查看死锁中占用资源的会话信息这些会话并不等待被锁定的资源。但是却持有另外一个会话等待的数据库对象上的锁*/SELECT HOLDING_SESSION --NUMBER表示持有锁的会话的IDFROM DBA_BLOCKERS; /*在死锁产生的时候,可以通过DBA_BLOCKERS查看持有锁的对象然后通过V$SESSION来得到该会话的具体信息*/原创 2011-04-18 14:15:00 · 1125 阅读 · 0 评论 -
事务与锁定-定义保存点
/*drop table emp; --if exists?create table emp( empid number(5), empname varchar2(100), empage number(5));*/delete from emp;--基本语法结构如下:SAVEPOINT savepoint a;insert into emp values(1,'chenzw',27);--如果脚本或者存储过程中需要执行大量的数据库操作,则可以根据原创 2011-04-18 14:16:00 · 861 阅读 · 0 评论 -
事务与锁定-回滚事务
/*drop table emp; --if exists?create table emp( empid number(5), empname varchar2(100), empage number(5));*/insert into emp values (1,'chenzw',27);commit work;insert into emp values(2,'chenzz',26);col empname format A20;select原创 2011-04-18 14:16:00 · 813 阅读 · 0 评论 -
事务与锁定-命名事务
/*drop table emp; --if exists?create table emp( empid number(5), empname varchar2(100), empage number(5));*/declare --使用命名事务可以而增加程序的可读性,并且可以根据名称对长时间的事务进行检测 --也可以而在日志中根据名称来了解事务的工作情况 v_empname varchar2(50) :='chenzw';begin set t原创 2011-04-18 14:17:00 · 929 阅读 · 0 评论 -
事务与锁定-模拟死锁产生的情景
/*drop table emp; --if exists?create table emp( empid number(5), empname varchar2(100), empage number(5));*/truncate table emp;insert into emp values(1,'chenzw',27);insert into emp values(2,'chenzz',27);commit;--sqlplus窗口A 为e原创 2011-04-18 14:17:00 · 1797 阅读 · 0 评论 -
事务与锁定-嵌套事务和自治事务
/*drop table emp; --if exists?create table emp( empid number(5), empname varchar2(100), empage number(5));*/--可以通过 PRAGMA AUTONOMOUS_TRANSACTION;来声明当前事务为自治事务--可以独立对本事务进行提交,不会外层事务。及时外层事务没有提交,自治事务也是可以被提交的。delete from emp;--定义一个嵌套的自治原创 2011-04-18 14:18:00 · 851 阅读 · 0 评论 -
事务与锁定-设置事务的隔离级别
/*可以使用SET TRANSACTION ISOLATION LEVEL语句来设置ORACLE事务隔离级别,其语句结构如下SET TRANSACTION ISOLATION LEVEL {READ COMMITTED|SERIALIZABLE}?? -CHENZW 20110417 如何或得当前的TRANSACTION LEVEL?*/--1、READ COMMITTED事务隔离级别可以避免脏读(READ COMMITTED隔离级别下,不能看到尚未提交的数据,因此可以避免脏读原创 2011-04-18 14:19:00 · 1070 阅读 · 0 评论 -
事务与锁定-设置自动提交
/*drop table emp; if exists?create table emp( empid number(5), empname varchar2(100), empage number(5));*/set autocommit on; --设置自动提交打开show autocommit; --查看自动提交set autocommit off; --设置自动提交关闭例子如下:SQL> set autocommit on;SQL>原创 2011-04-18 14:19:00 · 1404 阅读 · 0 评论 -
事务和锁定-通过结束会话方式解除死锁
--模拟死锁/*查锁和杀锁,使用ALTER SYSTEM KILL SESSION 'SID,SERIAL#';*/set linesize 200;SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIME, T3.SQL_TEXTFROM V$LOCKED_OBJECT T1,V$SESSION T2,V$SQLTEXT T3WHERE T1.SESSION_ID=T2.S原创 2011-04-18 14:21:00 · 2314 阅读 · 0 评论 -
事务和锁定-与锁相关的初始化参数
在ORACLE数据中,可以通过初始化参数来设置锁策略。常用的与锁相关的初始化参数如下: DDL_WAIT_FOR_LOCKS BOOLEANl类型,用于控制DDL语句是否需要等待锁,默认为FALSE。 DML_LOCKS INTEGER类型,指定DML锁的最大个数,范围为20到无限多。默认值为初始化参数TRANSACTIONS的四倍,即平均每一个事务需要四个锁。 ENQUEUE_RESOURCES INTEGER类型,用于指定锁管理器可以并发锁定的资源数,范围为10到无限多原创 2011-04-18 14:22:00 · 936 阅读 · 0 评论 -
存储过程和触发器-INSTEAD OF触发器
/*INSTEAD OF触发器可以把视图的修改应用到视图的基表上。可以使用CREATE TRIGGER来创建语句触发器,语法如下CREATE OR REPLACE TRIGGER INSTEAD OF ON */--用来测试INSTEAD OF触发器的脚本DROP TABLE DEPARTMENT;DROP TABLE EMPLOYEES;DROP TRIGGER TESTROWTRIGGER1;DROP TRIGGER TESTROWTRIGGER原创 2011-04-18 14:06:00 · 827 阅读 · 0 评论 -
存储过程和触发器-LOGON/LOGOFF触发器
/*LOGON触发器在用户登录数据库的时候被触发LOGOFF触发器在用户注销时被触发使用两个触发器可以将用户访问数据库的情况记录到一个日志表中*/--用于测试LOGON触发器和LOGOFF触发器的表DROP TABLE TESTLOG;DROP TRIGGER MYLOGONTRIGGER;DROP TRIGGER MYLOGOFFTRIGGER;CREATE TABLE TESTLOG( USERNAME VARCHAR2(100), EVENTTIM原创 2011-04-18 14:07:00 · 3327 阅读 · 0 评论 -
存储过程和触发器-删除触发器
/*删除触发器的语句DROP TRIGGER */--处理表DROP TABLE TESTLOG;DROP TRIGGER MYLOGONTRIGGER;--创建日志表CREATE TABLE TESTLOG( USERNAME VARCHAR2(100), EVENTTIME DATE, ACTION VARCHAR2(20));--触发器,用于记录用户的登录事件CREATE OR REPLACE TRIGGER MYLOGONTRIGGE原创 2011-04-18 14:09:00 · 708 阅读 · 0 评论 -
事务与锁定-查看事务的信息
/*drop table emp; if exists?create table emp( empid number(5), empname varchar2(100), empage number(5));*/--该语句执行的前提是当前用户具备DBA权限,否则会报错误:/*第 10 行出现错误:ORA-00942: 表或视图不存在解决:使用SYSDBA角色的用户登录ORACLE执行GRANT DBA TO XAXNB;使用XAXNB重新登原创 2011-04-18 14:13:00 · 829 阅读 · 0 评论 -
事务与锁定-查看死锁的信息
/*模拟产生的死锁然后通过V$LOCKED_OBJECT视图来产看当前的死锁信息*/SELECT XIDUSN, --NUMBER 回滚段号 XIDSLOT, --NUMBER 槽号 XIDSQN --NUMBER 序列号 OBJECT_ID, --NUMBER 被锁定的数据库对象的编号 SESSION_ID,原创 2011-04-18 14:14:00 · 790 阅读 · 0 评论 -
事务与锁定-基础知识
概述 在通常的情况下,系统中总是有若干个事务再并发执行,他们可以共享的存取数据库中的数据。但是有的时候,不同的事务再访问数据库的时候可能会出现抢占资源的情况,从而造成死锁,死锁对于系统来说是一个非常影响性能的事情。就好像很多车辆来到了十字路口,但是他们如果互不相让就会造成拥堵。所以我们很有必要了解事务以及锁的原理,在充分提高数据库并发能力的同时,尽量的去避免和解决死锁的问题。 目标 了解事务以及锁的概念 了解死锁产生的原因 掌握自动提交、事务回滚的方法原创 2011-04-18 14:20:00 · 1131 阅读 · 0 评论