Oracle 11g数据库之新特性只读表

在Oracle11g之前,如果我们想要对一个表设置为只读的,可以通过授予某些用户select权限。但是对于表的所有者来说,还是读写的。在Oracle11g中,我们可以直接对表的读写权限进行设置。只读表跟普通的表没有区别,但不允许任何事务对其执行任何DML(Insert,Update,Delete)操作。在Oracle11g之前,“只读”只对数据库和表空间有效,而到了11g,你可以设置某个表为只读表。在11g之前,如果我们要实现一个只读表,必须通过触发器和约束限制来实现。1-表触发器下面我们简单创建一个表和触发器来演示这种方法:   CREATETABLEREAD_ONLY_TABLE(COL1NUMBER); CREATEORREPLACETRIGGERREAD_ONLY_TABLE_TRG BEFOREDELETEORINSERTORUPDATE     ONREAD_ONLY_TABLE  REFERENCINGNEWASNEWOLDASOLD &nbs...

Oracle 11g 数据库的新特性虚拟列

在11G中,ORACLE引入了虚拟列的概念,正如其名,虚拟列实际上在物理上是不存在的列,在查询的时候,ORACLE才开始计算。在老的Oracle版本,当我们需要使用表达式或者一些计算公式时,我们会创建数据库视图,如果我们需要在这个视图上使用索引,我们会创建基于函数的索引。现在Oracle11g允许我们直接在表上使用虚拟列来存储表达式。来看一个简单的例子:   CREATETABLEEMP(    EMPNO    NUMBER(6),    SAL      NUMBER(8,2),    COMM     NUMBER(8,2),    SAL_PACK GENERATEDALWAYSAS(SAL+NVL(COMM,0))VIRTUAL&n...

LogMiner的PL/SQL包和数据字典

LogMiner的两个PL/SQL包1、dbms_logmnr_d包,这个包只包括一个用于提取数据字典信息的过程,即dbms_logmnr_d.build()过程。2、dbms_logmnr包,它有如下三个过程:add_logfile(namevarchar2,optionsnumber)-用来添加/删除用于分析的日志文件;start_logmnr(start_scnnumber,end_scnnumber,start_timenumber,end_timenumber,dictfilenamevarchar2,optionsnumber)-用来开启日志分析,同时确定分析的时间/SCN窗口以及确认是否使用提取出来的数据字典信息。end_logmnr()-用来终止分析会话,它将回收LogMiner所占用的内存。与LogMiner相关的数据字典1、v$logmnr_dictionary,LogMiner可能使用的数据字典信息,因logmnr可以有多个字典文件,该视图用于显示这方面信息。2、v$logmnr_parameters,当前LogMiner所设定的参数信息。3、v$logmnr_l...

Oracle数据库删除不必要的分区

前面我们已经说了如何创建分区表,可以参见如下地址:http://www.splaybow.com/post/oracle-create-fenqubiao.html假如某公司的每年产生巨大的销售记录,DBA向公司建议每季度的数据放在一个分区内,公司从1999年开始记录数据(假设每月产生30M的数据)。公司又规定:销售的明细数据两年内必须保存在线。到2001年,DBA必须将1999年的数据备份(备份方法见5、EXPORT分区),将1999年的分区删除,将空间供后来的数据使用。如此循环,永远保持两年的销售数据在线。第一步、DROP分区ALTERTABLEsalesDROPPARTIONsales1999_q1;ALTERTABLEsalesDROPPARTIONsales1999_q2;ALTERTABLEsalesDROPPARTIONsales1999_q3;ALTERTABLEsalesDROPPARTIONsales1999_q4;第二步、利用操作系统的工具删除以上表空间占用的文件(表空间基于裸设备无须次步),Unix系统为例 oracle$rm/u1/oradata/s...

Oracle数据库分区表的扩容

前面我们已经说了如何创建分区表,可以参见如下地址:http://www.splaybow.com/post/oracle-create-fenqubiao.html假如某公司的每年产生巨大的销售记录,DBA向公司建议每季度的数据放在一个分区内,以下示范的是该公司1999年的数据(假设每月产生30M的数据)。到了1999年年底,DBA应向表中加入2000年的表空间,同样是每季度一个表空间,由于公司业务欣欣向荣,预计每个分区为40M,操作如下。第一步、建立表空间CREATETABLESPACEts_sale2000q1DATAFILE‘/u1/oradata/sales/sales2000_q1.dat’SIZE130MDEFAULTSTORAGE(INITIAL40mNEXT40mMINEXTENTS3PCTINCREASE0)其他表空间ts_sale2000q2,ts_sale2000q3,ts_sales2000q4如法炮制。第二步、为表添加表空间ALTERTABLEsalesADDPARTITIONsales2000_q1VALUESLESSTHAN(TO_DATE(‘2000-0...

Oracle数据库创建分区表

分区表,说白了就是将一个表部署在多个分区中。这是一个很牛的功能!它可以通过添加磁盘,无限制的扩大表的容量。当然,前提是担任系统能够识别这么大的空间。我们举一个例子来创建分区表,先看看需求。某公司的每年产生巨大的销售记录,DBA向公司建议每季度的数据放在一个分区内,以下示范的是该公司1999年的数据(假设每月产生30M的数据)。好了,接下来我们来创建分区表,操作如下:第一步、建立表的各个分区的表空间CREATETABLESPACEts_sale1999q1DATAFILE‘/u1/oradata/sales/sales1999_q1.dat’SIZE100MDEFAULTSTORAGE(INITIAL30mNEXT30mMINEXTENTS3PCTINCREASE0)CREATETABLESPACEts_sale1999q2DATAFILE‘/u1/oradata/sales/sales1999_q2.dat’SIZE100MDEFAULTSTORAGE(INITIAL30mNEXT30mMINEXTENTS3PCTINCREASE0)CREATETABLESPACEts_sale199...

Oracle数据库中的大对象数据类型

本文介绍在Oracle数据库中的大对象数据类型,有哪些大对象数据类型,在使用大对象数据类型时应该注意一些什么地方。Oracle存储与管理大对象数据类型,在Oracle数据库中为了更好的管理大容量的数据,专门开发了一些对应的大对象数据类型。具体的来说一、Oracle数据库支持的大对象数据类型。有下几种:一是BLOB数据类型。它是用来存储可变长度的二进制数据。由于其存储的是通用的二进制数据,为此在数据库之间或者在客户端与服务器之间进行传输的时候,不需要进行字符集的转换。为此其传输的效率比较高,而不容易出现乱码现象。二是CLOB数据类型。他主要是用来存储可变长度的字符型数据,也就是其他数据库中提到的文本型数据类型。虽然说VARCHAR2数据类型也可以用来存储可变长度的字符型数据,但是其容量是非常有限的。而现在这个CLOB数据类型,其可以存储的最大数据量是4GB。而且在定义这个数据类型的时候,不需要指定最大长度。在定义Varchar2数据类型时需要指定。三是NCLOB数据类型。这个数据类型跟CLOB数据类型相似,也是用来存储字符类型的数据,不过其存储的是Unicode字符集的字符数据。同样,在...

SqlServer删除数据日志

SQLServer数据,尤其是大型的数据应用,在使用一段时间后,数据日志变得十分庞大,动辄几个G。日志太大有很多坏处,至少你在备份一个数据的时候,数据量大了不少,对吧? 于是乎一个很紧迫的任务摆在网管们的眼前,那就是把日志删除掉。我们先通过企业管理器来操作:企业管理器三步走:1、分离数据  右键点击要删除日志的数据,所有任务 |分离数据 |确定2、到该数据存放日志的地方,删除该数据的日志文件(.ldf)3、附加数据  右键点击“数据”,所有任务 |附加数据 |选择该数据数据文件(.mdf),系统会在附加数据的时候,自动创建日志文件。接下来,我们用T-SQL命令来走一遍:1、EXECsp_detach_db'数据名','true'2、然后,找到数据的日志文件的文件夹,删除日志文件就可以了3、然后,用EXECsp_attach_db@dbname='数据名', @filename1='数据文件路径', @filename2=...

Oracle数据库能启动但不能登录

今天遇到了这样一个情况,郁闷至极。Oracle数据库能启动但不能登录,找了半天终于到方法了,这里和大家分享一下。1.进入cd/var/log/oracle/oracle.log打开文件在内容中找到startup.log的位置。2.打开startup.log找到错误的编号sequence#30603.查找语句select*fromv$log查找对应的3060找到group#4.执行alter语句解决此问题。关于Oracle数据库能启动但不能登录,本文就介绍这么多,希望对您有所帮助,谢谢!...

Oracle数据库中已命名的系统异常

命名的系统异常   产生原因ACCESS_INTO_NULL   未定义对象CASE_NOT_FOUND   CASE中若未包含相应的WHEN,并且没有设置ELSE时COLLECTION_IS_NULL   集合元素未初始化CURSER_ALREADY_OPEN   游标已经打开DUP_VAL_ON_INDEX   唯一索引对应的列上有重复的值INVALID_CURSOR   在不合法的游标上进行操作INVALID_NUMBER   内嵌的SQL语句不能将字符转换为数字NO_DATA_FOUND   使用selectinto未返回行,或应用索引表未初始化的TOO_MANY_ROWS   执行selectinto时,结果集超过一行ZERO_DIVIDE   除数为...

使用rsync备份数据

使用rsync从linux到linux或到windows对网站进行镜像备份rsync是Linux系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remotesync。rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。rsync的最新版本可以从http://rsync.samba.org/rsync/获得。它的特性如下:1、可以镜像保存整个目录树和文件系统。2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。3、无须特殊权限即可安装。4、优化的流程,文件传输效率高。5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。本文介绍了如何使用rsync服务从Linux到Windows和linux进行远程备份http://www.vfocus.net/blog/archives/000248.html如何使用rsync服务从Linux到Windows和linux进行远程备份http://linux.chinaitlab.com/safe/38180.html用rsync从Linux到Windows远程...
开发笔记 开发笔记·2023-04-15

Oracle数据库中有哪几种表

Oracle数据库之所以是目前商用数据库中最昂贵的数据库产品,因为它确实功能强大。目前基本上所有的数据库,包括Oracle在内都是关系型数据库。对于关系型数据库来讲,最重要的是二维(行与列)关系,那就是表。在Oracle数据库中,表有很多种。表本身在数据库中就是数据存储的基本结构,在Oracle中,为了增加数据库的存储能力与性能,Oracle数据库在表的设计上引入很多新的内容。在Oracle数据库中就分区表、对象表、临时表等各种不同用途的特殊表。分区表,说白了就是将一个表部署在多个分区中。这是一个很牛的功能!它可以通过添加磁盘,无限制的扩大表的容量。当然,前提是担任系统能够识别这么大的空间。对象表,在Oracle中把对象作为一种数据类型object,不但可以包含基本的数据类型、集合,还可以为其定义函数和过程作为其方法。临时表,用于临时存储数据,在事务提交或Session关闭之后,临时表中的数据将会被清空。关于临时表的介绍,大家可以参看洪哥的文章:Oracle临时表。关于Oracle数据库中有哪几种表,本文就介绍这么多,希望对您有所帮助,谢谢!...
IT技术学习 IT技术学习·2023-04-15

Linux下Orcle数据库导入导出中文乱码解决方法

之前因为程序要搬迁,在对Oracle数据库进行导入导出操作的时候,数据表的中文注释以及存储过程和函数中的中文注释均显示乱码。让人着实痛苦。首先可以查看相关信息看看:1、客户端字符集必须与服务端字符集一直2、加载到Oracle数据库中的数据字符集必须与服务器字符集一致(例如:在不同字符集服务器之间导数据会导致中文乱码)3、字符集同时存在于Oracle服务器和Oracle客户端4、服务器字符集是在安装Oracle数据库的时候就指定的,一般不能修改,否则会出问题。如:ZHS16GBK字符集5、客户端字符集是在Oracle用户环境变量中设定的一些相关内容:SELECT*FROMv$nls_valid_values;#查看Oracle数据库可用字符集参数设置select*fromnls_database_parameters;#查看Oracle数据库字符集select*fromnls_instance_parameters;#查看Oracle客户端字符集环境解决办法:Oracle客户端字符集由当前用户环境变量NLS_LANG设定NLS_LANG构成方式:NLS_LANG=LANGUAGE_TER...

Linux下自动备份Oracle数据库并删除指定天数之前的备份

Linux下安装Oracle数据库并不是非常复杂,但重要的还是后面的数据安全,以及数据维护,在这里分享一下定期备份并删除指定天数前的备份。服务器的环境大致为:Oracle数据库服务器、操作系统:CentOS、IP:192.168.0.198、端口:1521、SID:orcl、Oracle数据库版本:Oracle11gR2具体操作:1、root用户登录服务器mkdir-p/backup/oracledata #新建Oracle数据库备份目录chown-R oracle:oinstall/backup/oracledata-R#设置目录权限为oinstall用户组的oracle用户(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)2、新建Oracle数据库备份脚本vi/backup/oracledata/ordatabak.sh #新建文件,输入以下代码#!/bin/shexportORACLE_BASE=/data/oracleexportORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1ex...

Oracle学习——服务器、数据库、用户

1.使用SYSDBA身份连接到数据库sqlplus/nologconn/assysdba;2.创建用户账户USERA,其口令为orcl,默认表空间为USERS,临时表空间为TEMP,对表空间的配额限制为10MBcreateuseruseraidentifiedbyorcldefaulttablespaceuserstemporarytablespacetempquota10Monusers;3.向用户授予连接数据库系统的权限和角色RESOURCE权限grantcreatesessiontousera;grantresourcetousera;4.向用户授予对对象'SCOTT.EMP'的select,delete和update权限,并以用户USERA连接到数据库,查询SCOTT.EMP的表grantselect,delete,updateonscott.emptousera;grantselect,delete,updateonusera;connusera/orcl;select*formscott.emp;5.撤销向用户USERA授予的系统权限,向用户授予CONNEC...
首页上一页...7891011...下一页尾页