请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
antiy(uid:2725)
职业资格认证:尚未取得认证
Oracle 数据库安装指南
用过SqlServer的知道,SqlServer安装后通常会有示例数据库(即使没有附加一下也很方便),Nortwind想必大家也耳熟能详。这样带来的好处是许多数据库sql示例、程序示例就基于这样一个示例数据库,在学习示例的时候构建环境的成本大大降低。 Oracle的官方文档中许多地方也会用到示例数据库,但查看自己的数据库时通常发现并没有对应的示例数据。大概从oracle 9还是oracle 10开始,其安装程序就进行了细分(如果是安装盘应该至少有3张的吧),其示例数据库的安装就存放在companion的安装程序中。如oracle 10g2 下载地址就包含database、companion、client、Clusterware、Gateways部分。下载完毕后,运行setup.exe进行安装。 win7用户安装10g最好选择10203_vista_w2k8_x86版的,一些需要安装又提示操作系统版本不支持的可以在安装文件的install\oraparam.ini中进行一定的修改 安装选择Oracle Database 10g Products,如图1所示。 4345 完成后,会得到对应的schema,它们在安装路径的demo\schema下,如图2所示。以human_resouces为例,看起来一大堆的sql要执行,但其实只要执行hr_main.sql就行了。另外,里面会使用@?/demo/schema/human_resources/hr_cre来调用其他sql,@?好像有点问题,于是我都改成了绝对路径,然后再pl\sql的commom window中执行@F:\oracle\product\10.2.0\db_2\demo\schema\human_resources\hr_main.sql(这里也是绝对路径,尝试过使用ORACLE_HOME来表示没有成功)。执行中间会提示输入HR数据库的密码、表空间、临时表空间、SYS账户密码、安装log文件地址,还会自动进行SYS账户的登录、退出,HR账户登录动作。 4346 可以看到,其实我们只用到了Demo下的sql文件来进行创建示例库,如果能从别人那拷贝过来的话还是拷贝下得了,当然如果有现成dmp文件拿过来导入下更简单。
Oracle的rownum原理和使用
在Oracle中,要按特定条件查询前N条记录,用个rownum就搞定了。 select * from emp where rownum <= 5 而且书上也告诫,不能对rownum用">",这也就意味着,如果你想用 select * from emp where rownum > 5 则是失败的。要知道为什么会失败,则需要了解rownum背后的机制: 1 Oracle executes your query. 2 Oracle fetches the first row and calls it row number 1. 3 Have we gotten past row number meets the criteria? If no, then Oracle discards the row, If yes, then Oracle return the row. 4 Oracle fetches the next row and advances the row number (to 2, and then to 3, and then to 4, and so forth)。 5 Go to step 3. 4344
数据库的BUG解决
Oracle 11g开发项目时,使用XML Table出现了BUG,现总结如下:问题其实很简单,就是我们在项目中使用了很多超级长的SQL语句,之后导致SQL执行效率低下,并且貌似导致了Oracle的SQL编译空间溢出了。出问题的SQL: 1 SELECT N1,N2 FROM A1 2. WHERE (N1='1' AND N2='a1') OR 3.(N1='2' AND N2='a2') OR (N1='3' AND N2='a3') OR 4. (N1='4' AND N2='a4') OR … 4343
Oracle Partition 分区详细总结
此文从以下几个方面来整理关于分区表的概念及操作:1.表空间及分区表的概念2.表分区的具体作用3.表分区的优缺点4.表分区的几种类型及操作方法5.对表分区的维护性操作。  (1.) 表空间及分区表的概念表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表,所以称作表空间。   分区表:当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。   ( 2)。表分区的具体作用Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。   分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL DML 命令访问分区后的表时,无需任何修改。 4342
oracle表数据误删还原
一、如果是刚刚删除,那么有两方法: 首先用show parameter undo;命令查看当时的数据库参数undo_retention设置。 显示如下: undo_management string AUTO undo_retention integer 10800 undo_suppress_errors boolean FALSE undo_tablespace string UNDOTBS1 undo_retention(保持力),10800单位是秒。即3个小时。 修改默认的undo_retention参数设置: ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH; 方法1,通过oracle提供的回闪功能: exec dbms_flashback.enable_at_time(to_date('2007-07-23 10:21:00','yyyy-mm-dd hh24:mi:ss')); set serveroutput on DECLARE r_temp hr.job_history%ROWTYPE; 4341
java 连接各类数据库
本帖最后由 antiy 于 2012-4-11 22:13 编辑 2、DB2数据库 Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名 String user="admin"; String password=""; Connection conn= DriverManager.getConnection(url,user,password); 3、Sql Server7.0/2000数据库 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; //mydb为数据库
oracle深度解析检查点
 由于中LGWR和DBWR工作的不一致,Oracle引入了检查点的概念,用于同步,保证数据库的一致性。在Oracle里面,检查点分为两种:完全检查点和增量检查点。下面我们分别介绍这两种检查点的作用: 4332
ORACLE序列的使用
ORACLE序列的使用 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10 NOORDER; --并行时取得序列的顺序 一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL CURRVAL=返回 sequence的当前值 NEXTVAL=增加sequence的值,然后返回 sequence 值 比如: emp_sequence.CURRVAL emp_sequence.NEXTVAL 可以使用sequence的地方: 4331
图解访问Oracle 11g的步骤
SQL Server 2005数据库访问Oracle 11g数据库的步骤是本文我们主要要介绍的内容,接下来我们就以图解的形式介绍这一过程的实现。 1.安装Oracle 11G客户端。 2.打开Oracle Net Manager 配置客户端链接。 4318 步骤一 4319 步骤二 4320 步骤三填写Oracle实例名称 4321 步骤四 4322 步骤五 使用Oracle登陆用户名密码测试 4323 步骤六 4324 3.建立SQL SERVER2005链接服务器 4326 产品名称Oracle 数据源使用刚才建立的Oracle客户端配置名称TEST,提供程序字符串填为 "MSDAORA". 4327 安全性填写oracle实例访问用户名密码 4328 4.连接测试,对象名称最好全部大写 SELECT * FROM OPENQUERY(ORACLELINK, 'SELECT OBJNAME FROM OADEV.TABLENAME') 注意: 如果连接不上,报MSDAORA不能提供连接错误的话,需要把11.2.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora文件中的"SQLNET.AUTHENTICATION_SERVICES= (NTS)"注掉。 4329 以上就是图解SQL Server 2005访问Oracle 11g的全部过程
Oracle数据文件转移和丢失处理
1、数据文件迁移很简单,三个步骤就行了   第一步:把表空间Offline,把表空间的数据文件移动到D盘指定的目录。   第二步:修改表空间文件路径alter database rename file '旧文件路径' to '新文件路径';   第三步:把表空间Online,这样就可以了。   1.1 文件系统数据文件按迁移database must be open:   1.alter tablespace tbs read only;   2.alter tablespace tbs offline;   3.在offline时拷贝一份原文件,并命名为新文件名 4317
PL/SQL中的集合类型分析
三种集合分类的区别之一是, Nested table与VARRY既可以被用于PL/SQL,也可以被直接用于数据库中,但是Associative array不行,也就是说,Associative array是不能通过CREATE TYPE语句进行单独创建,只能在PL/SQL块(或Package)中进行定义并使用(即适用范围是PL/SQL Block级别),而Nested table与VARRAY则可以使用CREATE TYPE进行创建(即适用范围是Schema级别),它们还可以直接作为数据库表中列的类型。 BTW,为了避免误解,以下显式提到“索引”的地方,并非指的是数据库表的索引,而是特指访问集合元素时使用的“下标”,即Collection_Name(index)中的index。 集合类型的声明与初始化 1.Associative array 首先看一下Associative array 4315
批量SQL实例分析与比较
Oracle在PL/SQL中引入了BULK SQL,用于尽量减少PL/SQL – SQL引擎之间的交互,以期提高性能。具体而言,Oracle BULK SQL包括FORALL语句、BULK COLLECT子句。前者将多条语句(通常是DML)一次性发送给SQL引擎;后者将SQL引擎所获得的结果一次性返回给PL/SQL引擎。 4313
数据库日志回放过程
我们看一段描述:一个看起来正确的过程,系统宕机后需要重启,重启过程中需要对事务涉及到的数据进行"整理",包括:宕机时刻尚未提交的事务对数据的修改需要回滚。实现整理的过程称之为"日志回放".通过从后向前回放UNDO LOG日志,直到找到commit点为止,这样就保证了数据一致性。 上面的过程看起来很完美。真的完美吗?问题出在这里:如果系统中同时有多个事务在执行,UNDO LOG中的commit点该如何定义呢?可能存在多个等待Commit的点。(继续之前考虑一下Global Serializability,多个commit点与此冲突吗?) 实战:可以工作的过程 方法1:系统重启回放日志,只需要从后往前扫描日志文件,对于所有没有commit的事务按照日志记录中的数据做回滚操作。这个方法肯定是可以工作的,其问题在于要求扫描所有commit日志,代价不菲。 方法2:使用Checkpoint,拉起一个大栅栏。Checkpoint可以看做是对引言中"commit点"的展开,它好比一个较宽的栅栏(fence),将所有已经开始、尚未commit的事务都记录下来,等待这些事务完成之后再在日志中写入一条"在这个栅栏架起来之前的那些状态一致了"的标记。 为什么是"架起来之前的"呢?因为在架起栅栏后有一段等待事务完成时间,这段时间里会有新的事务发起,他们也会继续写日志,对于这些事务Checkpoint不关注。 生成checkpoint的过程: 1. 在日志中写下CREATE_CKPT(T1,T2,,Tn),其中Ti表示写入CREATE_CKPT之前尚未完成的事务 2. 等待T1~Tn这些事务完成。在等待过程中可能会有新的事务写日志。 3. 在日志中写入END_CKPT 日志回放过程: 从后往前扫描日志,如果先遇到END_CKPT,那么说明CREATE_CKPT中记录的T1~Tn这些事务都已经完成,将日志回放至CREATE_CKPT处即可。之前的日志均可以丢弃。如果先遇到CREATE_CKPT,那么说明T1~Tn这些事务可能还有没完成的,那么为了保证Global Serialization,将日志回滚到T1~Tn中最早出现的那一条之前即可。例如T3是T1~Tn中最先开始的事务,则将事务回滚检查做到T3之前即可,因为T3前的所有数据均已经确保Commit了。
驱动表的SQL写法及规则确定
驱动表普遍认为是由SQL语句的写法决定的,简单的说,就是FROM语句后面的表列表中的最后一个。由于SQL语句是从后向前进行分析,Oracle会根据FROM语句从后到前将各个表依次连接起来。 SQL> CREATE TABLE T1 AS SELECT * FROM USER_TABLES; 表已创建。 SQL> CREATE TABLE T2 AS SELECT * FROM USER_INDEXES; 表已创建。 SQL> SET AUTOT ON EXP SQL> SELECT COUNT(*) FROM T1, T2 2 WHERE T1.TABLE_NAME = T2.TABLE_NAME; COUNT(*) ---------- Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT ptimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 MERGE JOIN2 k2 I) 3 2 SORT (JOIN) 4 3 TABLE ACCESS (FULL) OF 'T2' 5 2 SORT (JOIN) 6 5 TABLE ACCESS (FULL) OF 'T1' SQL> SELECT COUNT(*) FROM T2, T1 2 WHERE T1.TABLE_NAME = T2.TABLE_NAME; COUNT(*) ---------- 37 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT ptimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 MERGE JOIN 3 2 SORT (JOIN) 4 3 TABLE ACCESS (FULL) OF 'T1' 5 2 SORT (JOIN) 6 5 TABLE ACCESS (FULL) OF 'T2' 根据这个例子,可以看出,SQL语句的写法对于驱动表的影响。 然而,实际上驱动表和连接顺序的选择要比上面的观点复杂的多,下面对稍微调整一下这个例子。 SQL> ALTER TABLE T1 ADD CONSTRAINT PK_T1 PRIMARY KEY (TABLE_NAME); 表已更改 SQL> SELECT COUNT(*) FROM T1, T2 2 WHERE T1.TABLE_NAME = T2.TABLE_NAME; COUNT(*) ---------- 37 Execution Plan ----------------------------------------------------------0 SELECT STATEMENT ptimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 NESTED LOOPS 3 2 TABLE ACCESS (FULL) OF 'T2' 4 2 INDEX (UNIQUE SCAN) OF 'PK_T1' (UNIQUE) SQL> SELECT COUNT(*) FROM T2, T1 2 WHERE T1.TABLE_NAME = T2.TABLE_NAME; COUNT(*) ---------- 37 Execution Plan 0 SELECT STATEMENT ptimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 NESTED LOOPS 3 2 TABLE ACCESS (FULL) OF 'T2' 4 2 INDEX (UNIQUE SCAN) OF 'PK_T1' (UNIQUE) 仅仅是给T1增加了一个主键,就发现不管SQL语句怎么写驱动表都是T2。 即使是RBO,确定表连接顺序的规则也是比较复杂的: ①优化器产生一系列连接顺序,每次均把不同的表作为驱动表。而且,优化器根据下面的算法产生每个连接顺序。 为了确定连接顺序中各个表的位置,优化器根据RBO执行计划的排名,在剩余的表中找到表访问路径排名最高的表,然后不断的重复这个过程,依次确定连接顺序中每个表的前后顺序。 对于连接顺序中的每张表,优化器根据执行计划的排名选择一种连接方式将当前表和前面的表或数据源连接在一起。 ②优化器在执行计划的结果集中进行选择。优化器的目标是最大程度的选择内部表采用索引扫描方式的NESTED LOOPS连接操作。 通常情况下,优化器在选择执行计划时,不会考虑表在FROM语句中出现的顺序。优化器依次根据下面的规则来作出选择 优化器选择执行计划使得内部表为全表扫描的NESTED LOOPS连接尽可能的少; 如果采用上面的条件出现了平局的情况,则优化器选择尽可能少出现SORT MERGE操作的执行计划; 如果仍然出现平局的情况,则优化器将选择表访问路径中排名最高的表作为驱动表; 如果这时仍然是平局,则优化器会把FROM语句中最后出现的表最为驱动表。
Oracle用户、权限、角色管理
Oracle 权限设置 一、权限分类: 系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。 实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。 二、系统权限管理: 1、系统权限分类: DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。 RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。 CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。 2、系统权限授权命令: 授权命令:SQL> grant connect, resource, dba to 用户名1 ...; 例: SQL> connect system/manager SQL> Create user user50 identified by user50; SQL> grant connect, resource to user50; 查询用户拥有哪里权限: SQL> select * from dba_role_privs; SQL> select * from dba_sys_privs; SQL> select * from role_sys_privs; 删除用户:SQL> drop user 用户名 cascade; //加上cascade则将用户连同其创建的东西全部删除 3、系统权限传递: 增加WITH ADMIN OPTION选项,则得到的权限可以传递。 SQL> grant connect, resorce to user50 with admin option; //可以传递所获权限。 4、系统权限回收:系统权限只能由DBA用户回收 命令:SQL> Revoke connect, resource from user50; 说明: 1)如果使用WITH ADMIN OPTION为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。 2)系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。 三、实体权限管理 1、实体权限分类:select, update, insert, alter, index, delete, all //all包括所有权限 execute //执行存储过程权限 user01: SQL> grant select, update, insert on product to user02; SQL> grant all on product to user02; user02: SQL> select * from user01.product; // 此时user02查user_tables,不包括user01.product这个表,但如果查all_tables则可以查到,因为他可以访问。 2. 将表的操作权限授予全体用户: SQL> grant all on product to public; // public表示是所有的用户,这里的all权限不包括drop。 : SQL> select owner, table_name from all_tables; // 用户可以查询的表 SQL> select table_name from user_tables; // 用户创建的表 SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 获权可以存取的表(被授权的) SQL> select grantee, owner, table_name, privilege from user_tab_privs; // 授出权限的表(授出的权限) 3. DBA用户可以操作全体用户的任意基表(无需授权,包括删除): DBA用户: SQL> Create table stud02.product( id number(10), name varchar2(20)); SQL> drop table stud02.emp; SQL> create table stud02.employee as select * from scott.emp; 4. 实体权限传递(with grant option): user01: SQL> grant select, update on product to user02 with grant option; // user02得到权限,并可以传递。 5. 实体权限回收: user01: SQL>Revoke select, update on product from user02; //传递的权限将全部丢失。 说明 1)如果取消某个用户的对象权限,那么对于这个用户使用WITH GRANT OPTION授予权限的用户来说,同样还会取消这些用户的相同权限,也就是说取消授权时级联的。 Oracle 用户管理 一、创建用户的Profile文件 SQL> create profile student limit // student为资源文件名 FAILED_LOGIN_ATTEMPTS 3 //指定锁定用户的登录失败次数 PASSWORD_LOCK_TIME 5 //指定用户被锁定天数 PASSWORD_LIFE_TIME 30 //指定口令可用天数 二、创建用户 SQL> Create User username Identified by password Default Tablespace tablespace Temporary Tablespace tablespace Profile profile Quota integer/unlimited on tablespace; 例: SQL> Create user acc01 identified by acc01 // 如果密码是数字,请用双引号括起来 default tablespace account temporary tablespace temp profile default quota 50m on account; SQL> grant connect, resource to acc01; 查询用户缺省表空间、临时表空间 SQL> select username, default_tablespace, temporary_tablespace from dba_users; 查询系统资源文件名: SQL> select * from dba_profiles; 资源文件类似表,一旦创建就会保存在数据库中。 SQL> select username, profile, default_tablespace, temporary_tablespace from dba_users; SQL> create profile common limit failed_login_attempts 5 idle_time 5; SQL> Alter user acc01 profile common; 三、修改用户: SQL> Alter User 用户名 Identified 口令 Default Tablespace tablespace Temporary Tablespace tablespace Profile profile Quota integer/unlimited on tablespace; 1、修改口令字: SQL>Alter user acc01 identified by "12345"; 2、修改用户缺省表空间: SQL> Alter user acc01 default tablespace users; 3、修改用户临时表空间 SQL> Alter user acc01 temporary tablespace temp_data; 4、强制用户修改口令字: SQL> Alter user acc01 password expire; 5、将用户加锁 SQL> Alter user acc01 account lock; // 加锁 SQL> Alter user acc01 account unlock; // 解锁 四、删除用户 SQL>drop user 用户名; //用户没有建任何实体 SQL> drop user 用户名 CASCADE; // 将用户及其所建实体全部删除 *1. 当前正连接的用户不得删除。 五、监视用户: 1、查询用户会话信息: SQL> select username, sid, serial#, machine from v$session; 2、删除用户会话信息: SQL> Alter system kill session 'sid, serial#'; 3、查询用户SQL语句: SQL> select user_name, sql_text from v$open_cursor; Oracle 角色管理 一、何为角色   角色。角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。 二、系统预定义角色   预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询: sql>select * from role_sys_privs where role='角色名'; 1.CONNECT, RESOURCE, DBA 这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。 2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE 这些角色主要用于访问数据字典视图和包。 3.EXP_FULL_DATABASE, IMP_FULL_DATABASE 这两个角色用于数据导入导出工具的使用。 4.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE AQ:Advanced Query。这两个角色用于oracle高级查询功能。 5. SNMPAGENT 用于oracle enterprise manager和Intelligent Agent 6.RECOVERY_CATALOG_OWNER 用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide》 7.HS_ADMIN_ROLE A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary. 三、管理角色 1.建一个角色 sql>create role role1; 2.授权给角色 sql>grant create any table,create procedure to role1; 3.授予角色给用户 sql>grant role1 to user1; 4.查看角色所包含的权限 sql>select * from role_sys_privs; 5.创建带有口令以角色(在生效带有口令的角色时必须提供口令) sql>create role role1 identified by password1; 6.修改角色:是否需要口令 sql>alter role role1 not identified; sql>alter role role1 identified by password1; 7.设置当前用户要生效的角色 (注:角色的生效是一个什么概念呢?假设用户a有b1,b2,b3三个角色,那么如果b1未生效,则b1所包含的权限对于a来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将所有直接赋给用户的权限和用户默认角色中的权限赋给用户。) sql>set role role1;//使role1生效 sql>set role role,role2;//使role1,role2生效 sql>set role role1 identified by password1;//使用带有口令的role1生效 sql>set role all;//使用该用户的所有角色生效 sql>set role none;//设置所有角色失效 sql>set role all except role1;//除role1外的该用户的所有其它角色生效。 sql>select * from SESSION_ROLES;//查看当前用户的生效的角色。 8.修改指定用户,设置其默认角色 sql>alter user user1 default role role1; sql>alter user user1 default role all except role1; 详见oracle参考文档 9.删除角色 sql>drop role role1; 角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。 说明: 1)无法使用WITH GRANT OPTION为角色授予对象权限 2)可以使用WITH ADMIN OPTION 为角色授予系统权限,取消时不是级联
JAVA 2应用编程150例
JAVA 2应用编程150例 4311
Oracle:解决归档日志
1:在数据库处于打开状态 查看数据归档状态: C:\Users\Administrator>sqlplus /nolog SQL*Plus: Release 11.2.0.3.0 Production on Fri Mar 23 12:10:31 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. SQL> connect /as sysdba; Connected. SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 1 Next log sequence to archive 2 Current log sequence 2 从这个可以看出Archive destination USE_DB_RECOVERY_FILE_DEST 归档日志的存放闪回区。 查看闪回区大小 SQL> show parameter db_re NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ 4310
Oracle数据库进程之后台进程详解
我们知道,Oracle实例包括两部分:SGA 和一组后台进程。后台进程执行保证数据库运行所需的实际维护任务。  例如,有一个进程为我们维护块缓冲区缓存,根据需要将块写出到数据文件。另一个进程负责当在线重做日志文件写满时将它复制到一个归档目标。另外还有一个进程负责在异常中止进程后完成清理,等等。每个进程都专注于自己的任务,但是会与所有其他进程协同工作。例如,负责写日志文件的进程填满一个日志后转向下一个日志时,它会通知负责对填满的日志文件进行归档的进程,告诉它有活干了。   可以使用一个V$视图查看所有可能的Oracle 后台进程,确定你的系统中正在使用哪些后台进程:   SQL> select paddr, name, descriptionfrom v$bgprocess order by paddr desc; PADDR NAME DESCRIPTION -------- --------------------------------------------------------------------- 3621D49C QMNC AQ Coordinator 3621CEE8 ARC2 Archival Process 2 3621C934 ARC1 Archival Process 1 3621C380 ARC0 Archival Process 0 3621A148 MMNL Manageability Monitor Process 2 36219B94 MMON Manageability Monitor Process 362195E0 CJQ0 Job Queue Coordinator 3621902C RECO distributed recovery 36218A78 SMON System Monitor Process 362184C4 CKPT checkpoint 36217F10 LGWR Redo etc. PADDR NAME DESCRIPTION -------- --------------------------------------------------------------------- 3621795C DBW0 db writer process 0 362173A8 MMAN Memory Manager 36216DF4 PSP0 process spawner 0 36216840 PMON process cleanup 00 DIAG diagnosibility process 00 FMON File Mapping Monitor Process 00 LMON global enqueue servicemonitor 00 LMD0 global enqueue servicedaemon 0 ..... 00 ASMB ASM Background 00 GMON diskgroup monitor 157 rows selected.   注意:这个视图中PADDR 不是00 的行都是系统上配置和运行的进程(线程)。有两类后台进程:有一个中心(focused)任务的进程(如前所述)和完成各种其他任务的进程(即工具进程)。   例如,内部作业队列( jobqueue)有一个工具后台进程,可以通过DBMS_JOB 包使用它。这个进程会监视作业队列,并运行其中的作业。在很多方面,这就像一个专用服务器进程,但是没有客户连接。   下面会分析各种后台进程,先来看有中心任务的进程,然后再介绍工具进程。   中心后台进程   图5-4 展示了有一个中心(focused)用途的Oracle 后台进程。   启动实例时也许不会看到所有这些进程,但是其中一些主要的进程肯定存在。如果在ARCHIVELOG 模式下,你可能只会看到ARCn(归档进程),并启用自动归档。如果运行了Oracle RAC,这种Oracle 配置允许一个集群中不同机器上的多个实例装载并打开相同的物理数据库,就只会看到LMD0、LCKn、LMON 和LMSn。   意为简洁起见,图5-4 中没有画出共享服务器调度器(Dnnn)和共享服务器(Snnn)进程。因此,图5-4 大致展示了启动Oracle 实例并装载和打开一个数据库时可能看到哪些进程。例如,在我的Linux 系统上,启动实例后,有以下进程:   $ ps -ef|grep 'ora_.*_dave*' oracle 4123 1 0 20:13 ? 00:00:05 ora_pmon_dave1 oracle 4125 1 0 20:13 ? 00:00:05 ora_psp0_dave1 oracle 4127 1 0 20:13 ? 00:00:02 ora_mman_dave1 oracle 4129 1 0 20:13 ? 00:00:05 ora_dbw0_dave1 oracle 4131 1 0 20:13 ? 00:00:21 ora_lgwr_dave1 oracle 4133 1 0 20:13 ? 00:00:13 ora_ckpt_dave1 oracle 4135 1 1 20:13 ? 00:01:12 ora_smon_dave1 oracle 4137 1 0 20:13 ? 00:00:04 ora_reco_dave1 oracle 4139 1 0 20:13 ? 00:00:16 ora_cjq0_dave1 oracle 4141 1 1 20:13 ? 00:01:33 ora_mmon_dave1 oracle 4143 1 0 20:13 ? 00:00:08 ora_mmnl_dave1 oracle 4145 1 0 20:13 ? 00:00:00 ora_d000_dave1 oracle 4147 1 0 20:13 ? 00:00:00 ora_s000_dave1 oracle 4156 1 0 20:13 ? 00:00:01 ora_arc0_dave1 oracle 4158 1 0 20:13 ? 00:00:05 ora_arc1_dave1 oracle 4163 1 0 20:14 ? 00:00:03 ora_qmnc_dave1 oracle 4167 1 0 20:15 ? 00:00:24 ora_q000_dave1 oracle 4169 1 020:15 ? 00:00:00 ora_q001_dave1 oracle 5109 1 1 21:48 ? 00:00:00 ora_j000_dave1 oracle 5141 5111 0 21:49 pts/4 00:00:00 grep ora_.*_dave2*   这些进程命名规则:进程名都以ora_开头。后面是4 个字符,表示进程的具体名字,再后面是ORACLE_SID,(站点标识符)。   在UNIX 上,可以很容易地标识出Oracle后台进程,并将其与一个特定的实例关联(在Windows 上则没有这么容易,因为在Windows 上这些后台进程实际上只是一个更大进程中的线程)。   这些进程实际上都是同一个二进制可执行程序,对于每个“程序”,并没有一个单独的可执行文件。你可以尽可能地查找一下,但是不论在磁盘的哪个位置上肯定都找不到一个arc0 二进制可执行程序,同样也找不到LGWR或DBW0。这些进程实际上都是oracle(也就是所运行的二进制可执行程序的名字)。它们只是在启动时对自己建立别名,以便更容易地标识各个进程。这样就能在UNIX 平台上高效地共享大量对象代码。Windows上就没有什么特别的了,因为它们只是进程中的线程,因此,当然只是一个大的二进制文件。   自动存储管理后台(Automatic Storage Management Background,ASMB)进程:ASMB 进程在使用了ASM 的数据库实例中运行。它负责与管理存储的ASM 实例通信、向ASM 实例提供更新的统计信息,并向ASM 实例提供一个“心跳”,让ASM 实例知道它还活着,而且仍在运行。   重新平衡(Rebalance,RBAL)进程:RBAL 进程也在使用了ASM 的数据库实例中运行。向ASM磁盘组增加或去除磁盘时,RBAL 进程负责处理重新平衡请求(即重新分布负载的请求)。   以下进程出现在Oracle RAC 实例中。RAC 是一种Oracle 配置,即集群中的多个实例可以装载和打开一个数据库,其中每个实例在一个单独的节点上运行(通常节点是一个单独的物理计算机)。这样,你就能有多个实例访问(以一种全读写方式)同样的一组数据库文件。
Oracle10g客户端的安装配置详解
Oracle 10g客户端的安装配置对我们使用Oracle的用户来说是相当重要的,合理地安装配置好Oracle客户端会给我们的工作带来很大的方便。本文我们主要介绍一下Oracle 10g客户端的安装配置工作,接下来我们就开始一一介绍。 一、配置Oracle服务器的监听器listener 修改/network/admin/目录下的listener.ora和tnsnames.ora两个文件。其中 listener文件大致如下: 4306 tnsnames.ora文件大致修改如下: 4307 以上修改也可通过图形界面的netmgr和netca进行配置。修改之后,重启监听器。 二、下载安装oracle客户端。 在安装pl/sql developer的本地机器上必须安装oracle客户端(此处指针对oracle 10g版本,有说也可只安装相关驱动如oci驱动, 具体不详。并且客户端不一定为10g版本,8i,9i皆可)。 1.从官网上下载绿色版本的客户端, 下载需要oracle用户,可免费注册。 2.绿色版无需安装,将此下载解压至某处,并在其下建立一network目录,目录下再建admin目录,结构如下 /network/admin,在admin目录中建立tnsnames.ora文件,内容大致如下: 4308 三、在PL/SQL developer中配置客户端信息。 打开PL/SQL developer,暂不登录,选择菜单tools->preferences->connection,设置如下两项: Oracle Home: D:\Program Files\instantclient_11_1 #客户端解压目录。 OCI library: D:\Program Files\instantclient_11_1\oci.dll #oci库文件路径,oci.dll应该在客户端目录下。 保存,重启PL/SQL developer,些时应可看到登录框中Database下拉选项里有你刚刚配置的远程服务器上的服务实例demo1了。
关于ORACLE COMMIT操作的详解
通常对undo有一个误解,认为undo用于数据库物理地恢复到执行语句或事务之前的样子,但实际上并非如此。数据库只是逻辑地恢复到原来的样子,所有修改都被逻辑地取消,但是数据结构以及数据库块本身在回滚后可能大不相同。原因在于:在所有多用户系统中,可能会有数十、数百甚至数千个并发事务。数据库的主要功能之一就是协调对数据的并发访问。 4305
123下一页
个人成就
内容被浏览208,783
加入社区12年218天
返回顶部