Oracle实用操作总结

触发器实现记录对某张表做删除修改操作的用户信息

数据库触发器是一个与表关联的存储下来的可以自动执行的PL/SQL程序。每当一个特定的数据操作语句在指定的表上发出时,Oracle自动的执行触发器中定义的语句序列。比如我们可以使用触发器实现让用户在周末无法对数据库表进行修改。

 下面的例子是建立一个信息表,用来存储对某张表做了删除操作的用户的相关信息。

#触发器监控表的修改和删除操作

#1 创建接收删除用户的表信息

SQL> create tabletab_mon_midify as (select sid,username,program,machine,'000.000.000.000'  ipadd,sysdate moditime from v$session where0=1);

该表分别记录了,删除的用户、机器名、ip及删除时间等

#2 创建触发器

SQL>create or replacetrigger tab_mon_mod_tr

      before delete on Md_Accountsubject

      for each row

      begin

       insert into tab_mon_midify

       selectsid,username,program,machine,sys_context('userenv','ip_address'),sysdate

       from v$session where audsid =userenv('sessionid');

      end;

#3 做完以上操作,一旦修改,记录会自动插入监控表里面

触发器实现禁止对某张表做修改

# 创建触发器,指定字段变化时,弹出报错不允许修改

create or replace triggerForbidUpdate_COM_LINE_B

  before update on HSS_TASK_ITEM_COM_LINE_B

  for each row

begin

     if

        updating('STATUS_CODE') or  updating('LAST_UPDATE_DATE') or  updating('BATCH_NUM')

      then

        return;

      else

       Raise_application_error(-20527, 'thetrigger is added by HAND, Exception: In order to ensure the bill rowsinformation is correct, HSS_TASK_ITEM_COM_LINE_B can not be updated!!! ');

    end if;

end;

 

--error_number是范围在-20000到-20999之间的负整数

 ----删除触发器

 drop triggerForbidUpdate_COM_LINE_B;

 当对表HSS_TASK_ITEM_COM_LINE_B里面除了STATUS_COD,LAST_UPDATE_DATE,BATCH_NUM这三个字段以外的字段进行修改时,弹出报错-20527, 'thetrigger is added by HAND, Exception: In order to ensure the bill rowsinformation is correct, HSS_TASK_ITEM_COM_LINE_B can not be updated!!!,并会让当前的修改操作失效。

ORACLE导入与导出

导出与导入分别都有三种方式:

--完全模式导出

将整个数据库内容导出,但是操作时需要有特殊权限。

命令格式:

exp 用户名/密码@实例名buffer=32000 导出路径 full=y;

例如:

exp dna/dna@orcl buffer=1024 file=d:/97back1121.dmp full=y;

 

--用户模式导出

将指定用户的所有对象进行导出:

exp dna/dna@orcl   buffer=32000file=d:/test.dmp owner=dna

 

--表模式导出

将用户的所有表数据进行导出:

exp dna/dna@orcl    buffer=32000file=d:/dna.dmp owner=dna tables=(dna)

 

--导入

imp dna/dna@orcl file= d:/dna.dmp log= d:/oracle/dna.log full=y ignore=y;

 

注意,在出时最好使用dba权限,不然可能会出错。

在导入时,要注意表空间是否够用,否则也有可能导致失败。

ORACLE查看锁表情况

执行以下语句,可以查看当前数据库里的锁表情况,而且还有相应的解锁语句在里面。

 SELECTdob.object_name table_name,

       lo.locked_mode,

       lo.session_id,

       vss.serial#,

       vps.spid,

       vss.action,

       vss.osuser,

       vss.process,

       vps.spid db_pid,

       'alter system kill session ' || '''' ||lo.session_id || ',' || vss.serial# || ''';' kill_command

  FROM v$locked_object lo, dba_objects dob,v$session vss, v$process vps

 WHERE lo.object_id = dob.object_id

   AND lo.session_id = vss.sid

   AND vss.paddr = vps.addr

 ORDER BY 2, 3, dob.object_name;

新建用户,赋权,设置表空间

sqlplus/nolog

conn/as sysdba

--创建表空间

createtablespace dna_htqc datafile 'D:\oracle\dna_uat\dna_htqc.ora' size 500M;

--新建用户并设置默认表空间

createuser dna_htqc identified by "dna_htqc" default tablespace dna_htqc;

--赋权

                grant create session to dna_htqc; 

            grant create table to  dna_htqc; 

            grant create tablespace to  dna_htqc; 

            grant create view to  dna_htqc;

                grant resource to dna_htqc;

 

--修改表空间自动增长属性:

 alter database datafile'D:\ORACLE\HX_UAT\HX_UAT.ORA' autoextend on;

 --修改表空间大小:

alterdatabase datafile 'D:\ORACLE\AISINOFSSC.ORA' resize 1500m;

--修改用户的默认表空间

alteruser dna_uat default tablespace dna_uat;

 

--查看用户表空间使用情况,以及是否有自动扩展能力

SELECTT.TABLESPACE_NAME,D.FILE_NAME,    

D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUS    

FROMDBA_TABLESPACES T,DBA_DATA_FILES D    

WHERET.TABLESPACE_NAME =D.TABLESPACE_NAME    

 ORDER BY TABLESPACE_NAME,FILE_NAME;  

 

--查看用户

selectusername,default_tablespace from user_users;

--某个用户在哪个表空间下:

selecttablespace_name,file_name,autoextensible from dba_data_files;

--该用户下所有的表:

 select * from user_tables;

数据库连接相关

--当前连接数

selectcount(*) from v$process where program='Oracle.EXE(SHAD)';

 selectcount(*) from v$process; 

 --最大连接数

selectvalue from v$parameter where name ='processes';

 --修改最大连接数

altersystem set processes = 300 scope = spfile;

 --最大连接

showparameter processes; 

 --并发连接数

selectcount(*) from v$session where status='ACTIVE';

 --当前的session连接数

selectcount(*) from v$session;

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

SELECTosuser, a.username,cpu_time/executions/1000000||'s',b.sql_text,machine

fromv$session a, v$sqlarea b

wherea.sql_address =b.address order by cpu_time/executionsdesc;











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(’A’) A,ascii(’a’) a,ascii(’0’) zero,ascii(’ ’) space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2.CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C -- - 赵 A 3.CONCAT 连接两个字符串; SQL> select concat(’010-’,’88888888’)||’转23’ 高乾竞电话 from dual; 高乾竞电话 ---------------- 010-88888888转23 4.INITCAP 返回字符串并将字符串的第一个字母变为大写; SQL> select initcap(’smith’) upp from dual; UPP ----- Smith 5.INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 出现的位置,默认为1 SQL> select instr(’oracle traning’,’ra’,1,2) instring from dual; INSTRING --------- 9 6.LENGTH 返回字符串的长度; SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst; NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL)) ------ ------------ ---------------- ------------ --------- -------------------- 高乾竞 3 北京市海锭区 6 9999.99 7 7.LOWER 返回字符串,并将所有的字符小写 SQL> select lower(’AaBbCcDd’)AaBbCcDd from dual; AABBCCDD -------- aabbccdd 8.UPPER 返回字符串,并将所有的字符大写 SQL> select upper(’AaBbCcDd’) upper from dual; UPPER -------- AABBCCDD 9.RPAD和LPAD(粘贴字符) RPAD 在列的右边粘贴字符 LPAD 在列的左边粘贴字符 SQL> select lpad(rpad(’gao’,10,’*’),17,’*’)from dual; LPAD(RPAD(’GAO’,1 ----------------- *******gao******* 不够字符则用*来填满 10.LTRIM和RTRIM LTRIM 删除左边出现的字符串 RTRIM 删除右边出现的字符串 SQL> select ltrim(rtrim(’ gao qian jing ’,’ ’),’ ’) from dual; LTRIM(RTRIM(’ ------------- gao qian jing
### 回答1: Oracle Instant Client 是一个轻量级的客户端软件包,可以让用户在没有安装全套的Oracle数据库的情况下,使用Oracle数据库Oracle Instant Client 可以在不同的操作系统上使用,并且提供了几种不同的下载选项。用户可以根据自己的操作系统和需求选择适合自己的版本进行下载。 在 Oracle 官方网站上,用户可以找到适用于不同操作系统的 Instant Client 下载链接。用户可以选择下载 ZIP 归档文件或者 RPM 包文件。用户根据自己的操作系统类型和版本,选择合适的下载链接。 下载完成后,用户可以解压缩 ZIP 文件或者使用操作系统的包管理器安装 RPM 包文件。之后,用户可以设置相应的环境变量,以便系统能够正确找到 Instant Client。 使用 Instant Client,用户可以通过命令行或者编程语言连接到远程的Oracle数据库,执行SQL语句,以及处理数据库操作。用户可以轻松地使用Instant Client来开发和部署Oracle相关的应用程序。 总结来说,Oracle Instant Client Downloads 是一个提供Oracle数据库客户端的软件包,用户可以根据自己的系统需求,在Oracle官方网站上选择合适的版本进行下载。下载后,用户可以安装并使用 Instant Client 来连接到Oracle数据库,执行SQL语句和开发相应的应用程序。 ### 回答2: Oracle Instant Client Downloads是Oracle公司提供的一套轻量级的客户端工具,用于连接和访问Oracle数据库。它是一个可独立安装并运行的软件包,可以简化Oracle客户端的配置和维护。 Oracle Instant Client Downloads提供了多种版本和操作系统的下载选项,包括Windows、Linux和Mac OS等。用户根据自己的操作系统和需求选择相应的版本进行下载和安装。 使用Oracle Instant Client,用户可以在没有完整Oracle数据库安装的情况下,直接连接和操作Oracle数据库。它采用了最小化的安装,不需要额外的组件或库依赖,可以在不占用太多系统资源的情况下进行高效的数据库操作。 对于开发人员和数据库管理员而言,Oracle Instant Client提供了强大的工具和接口,包括SQL\*Plus、ODBC驱动程序和SQL\*Loader等。这些工具可以使用户方便地管理和操作数据库,进行数据导入导出和查询等操作。 另外,Oracle Instant Client还支持多种编程语言,如Java、Python和C++等。开发人员可以使用这些编程语言来开发自己的应用程序,并通过Oracle Instant Client与Oracle数据库进行交互。 综上所述,Oracle Instant Client Downloads是一个实用的工具,可以简化Oracle客户端的配置和维护,为用户提供了方便快捷的连接和操作Oracle数据库的途径。在开发和管理Oracle数据库时,它是一个不可或缺的工具。 ### 回答3: Oracle Instant Client是Oracle公司提供的一个轻量级、可独立安装的数据库客户端软件。它允许开发者无需完整安装Oracle数据库即可访问和使用Oracle数据库服务器。 Oracle Instant Client Downloads是指从Oracle官方网站下载Oracle Instant Client软件的过程。在Oracle官方网站上,我们可以找到适用于各种操作系统和平台的Oracle Instant Client软件包。 下载Oracle Instant Client有几个主要步骤。首先,我们需要访问Oracle官方网站的Instant Client Downloads页面。然后,我们可以选择适用于我们操作系统和平台的Instant Client版本,并点击相应的下载链接。 下载过程可能需要一些时间,具体取决于我们的网络连接速度和Instant Client软件包的大小。一旦下载完成,我们需要解压缩软件包,获得Instant Client的文件和目录结构。 接下来,我们可以根据需要进行一些配置工作。例如,我们可能需要设置操作系统的环境变量,以便在命令行或脚本中能够正确访问Oracle Instant Client。我们还可以配置数据库连接参数,以确保与Oracle数据库服务器的正确通信。 最后,我们可以使用Oracle Instant Client提供的各种工具和API来连接和操作Oracle数据库。这包括使用命令行工具、开发自己的应用程序等。 总之,Oracle Instant Client Downloads是一项简单而重要的任务,它允许我们以最小的依赖关系访问和使用Oracle数据库。下载和安装Oracle Instant Client使得开发者可以更加灵活和高效地与Oracle数据库进行交互和开发应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值