Oracle 12c 数据库CDB用户创建与表空间分配

Oracle 12c 数据库CDB用户创建与表空间分配
Oracle 12c 数据库CDB用户创建与表空间分配

Oracle 12c 数据库CDB用户创建与表空间分配

在Oracle 12c中,有了可插接式数据库的概念(PDB)。关于PDB的优劣我不想多加探讨,不过这的确给数据库的管理带来了一些不同。

首先,容器数据库创建新用户并分配表空间时必须在没有PDB的情况下进行或PDB与CDB 有相同表空间的时候进行,否则会报错。如果是在PDB与CDB有相同表空间的情况下给CDB 用户分配表空间,则会分配CDB的表空间给用户PDB的表空间并不受影响。另外,CDB用户必须以“C##”开头以下是我的示例:

这是在没有PDB的情况下创建用户“C##SA”并分配”USERS‘(系统自带的表空间)。

这是只在CDB下建表空间“test”然后试着创建容器数据库用户的结果。

当我们在插接式数据库“PDBORCL”中创建了相同的表空间后。再在容器数据库“ORCL”中创建用户“C##Tester1”的结果。

通过查询可知:“C##Tester1”的默认表空间是容器数据库“ORCL”的,跟插接式数据库“PDBORCL”一点关系都没有。如果硬要说有关系的话就是”如果PDBORCL中没有表空间’test‘的话ORCL 中的用户就不能以’test‘表空间做为默认表空间”。

Oracle查看被锁定的表和行的SQL

我们在操作数据库的时候,有时候会由于操作不当引起数据库表被锁定,这么我们经常不知所措,不知怎么给这些表解锁,在pl/sql Developer工具的的菜单“tools”里面的“sessions”可以查询现在存在的会话,但是我们很难找到那个会话被锁定了,想找到所以被锁的会话就 更难了,下面这叫查询语句可以查询出所以被锁的会话。如下: SELECT https://www.360docs.net/doc/638328747.html,ername, m.SID,sn.SERIAL#, m.TYPE, DECODE (m.lmode, 0, 'None', 1, 'Null', 2, 'Row Share', 3, 'Row Excl.', 4, 'Share', 5, 'S/Row Excl.', 6, 'Exclusive', lmode, LTRIM (TO_CHAR (lmode, '990')) ) lmode, DECODE (m.request, 0, 'None', 1, 'Null', 2, 'Row Share', 3, 'Row Excl.', 4, 'Share', 5, 'S/Row Excl.',

6, 'Exclusive', request, LTRIM (TO_CHAR (m.request, '990')) ) request, m.id1, m.id2 FROM v$session sn, v$lock m WHERE (sn.SID = m.SID AND m.request != 0) OR ( sn.SID = m.SID AND m.request = 0 AND lmode != 4 AND (id1, id2) IN ( SELECT s.id1, s.id2 FROM v$lock s WHERE request != 0 AND s.id1 = m.id1 AND s.id2 = m.id2) )ORDER BY id1, id2, m.request; 通过以上查询知道了sid和SERIAL#就可以开杀了 alter system kill session 'sid,SERIAL#';

Oracle tablespace创建参数

Oracle tablespace创建参数 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额.因此,在创建对象之前,首先要分配存储空间. 分配存储,就要创建表空间: 创建表空间示例如下: CREATE TABLESPACE "SAMPLE" LOGGING DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SIZE 5M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO 上面的语句分以下几部分: 第一: CREATE TABLESPACE "SAMPLE" 创建一个名为 "SAMPLE" 的表空间. 对表空间的命名,遵守Oracle 的命名规范就可了. ORACLE可以创建的表空间有三种类型: (1)TEMPORARY: 临时表空间,用于临时数据的存放; 创建临时表空间的语法如下: CREATE TEMPORARY TABLESPACE "SAMPLE"...... (2)UNDO : 还原表空间. 用于存入重做日志文件. 创建还原表空间的语法如下: CREATE UNDO TABLESPACE "SAMPLE"...... (3)用户表空间: 最重要,也是用于存放用户数据表空间 可以直接写成: CREATE TABLESPACE "SAMPLE" TEMPORARY 和 UNDO 表空间是ORACLE 管理的特殊的表空间.只用于存放系统相关数据. 第二: LOGGING 有 NOLOGGING 和 LOGGING 两个选项, NOLOGGING: 创建表空间时,不创建重做日志. LOGGING 和NOLOGGING正好相反, 就是在创建表空间时生成重做日志. 用NOLOGGING时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复,但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的,所以通常不需要表空间的创建日志,因此,在创建表空间时,选择NOLOGGING,以加快表空间的创建速度. 第三: DATAFILE 用于指定数据文件的具体位置和大小. 如: DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SIZE 5M

Oracle的事务及锁

1、事务的概念: 事务是一个基本的逻辑单元,它作为一个整体要么全部执行要么全部不执行。 2、事务的特性: 原子性:事务是处理的一个原子单位,每一个操作不可拆分,它要么全部执行成功,要么全部都不执行。 一致性:指事务完成时,必须使所有的数据在整体上不变。 隔离性:各事务之间相互隔离,此事务的执行不受其他并发事务执行的干扰。 持续性:指事务对数据库的改变应是持续存在的,不会因故障而发生丢失。 3、从功能是上划分,sql语言分为DDL、DML和DCL: 3.1DDL(Data Definition Language,数据定义语言): 用于定义和管理数据库中的所有对象的语言,如:create创建表空间、alter修改表空间、drop 删除表空间 3.2:DML(Data manipulation Language,数据操作语言): 处理数据等操作,如:insert插入数据、delete删除数据、update修改数据、select查询数据3.3:DCL(Data Control Language,数据控制语言): 授予或回收访问数据库的权限,控制数据库操作事务发生的时间及效果,对数据库实行监视,如:grant授权,rollback回滚,commit提交 4、事务的开始及结束: 一个事务可以由一条DDL语句单独组成或多条DML语句共同组成。一个事务从执行第一条sql语句开始,在它被提交或被回滚时结束。事务的提交可以是显式提交:用commit命令直接完成;也可以是提交隐式提交:用sql语句间接完成提交,这些语句有:alter,audit,comment,create,disconnect,drop,exit,grant,noaudit,quit,revoke,rename,会话终止等;还可以是自动提交:set autocommit on或set autocommit immediate设置为自动提交,则在插入、删除、修改语句执行后自动提交,使用set autocommit off可以取消自动提交,show autocommit可以查看自动提交是否打开。事务的回滚使用rollback;语句,可以为事务设置保存点,如:savepoint point1,然后使用rollback to [savepoint] point1回到保存点point1,若在point1后又设置了一个保存点savepoint point2,则在rollback to point1后将不能再回滚到point2,因为point2在point1的后面,point1的保存点不存在point2。 5、事务的并发性与一致性: 并发性:多个用户可以在同一时刻访问相同的数据。 一致性:保证并发性的同时,每个用户能得到一致的数据视图。 并发执行事务时,可能发生如下情况: ①脏读:某个事务读取了其他未提交事务修改过的数据。 脏读示例:提交读隔离级别可防止脏读,但不能防止不可重复读 ②不可重复读:某个事务读取一次数据后,其他事务修改了这些数据并进行了提交,这样当该事务重新读取这些数据时,就会得到与前一次读取不一致的结果。简单的说,就是同样的条件,你读取过的数据,再次读取时发现值不一样了。 不可重复读示例:可重复读隔离级别可防止脏读和不可重复读

oracle创建表与增删改

-- 数据准备:创建工资等级表 CREATE TABLE salgrade_test ( grade NUMBER (2), lowsal NUMBER (7, 2), hisal NUMBER (7, 2) ); -- 查看工资等级表结构 DESC salgrade; -- 查看工资等级表数据 SELECT * FROM salgrade_test; -- 插入数据 INSERT INTO salgrade_test VALUES (1, 10001, 99999); INSERT INTO salgrade_test VALUES (2, 8001, 10000); INSERT INTO salgrade_test VALUES (3, 6001, 8000); INSERT INTO salgrade_test VALUES (4, 4001, 6000); INSERT INTO salgrade_test VALUES (5, 1, 4000); -- 计算员工的薪水等级 SELECT NAME, salary, grade FROM emp_test, salgrade_test WHERE emp_test.salary BETWEEN salgrade_test.lowsal AND salgrade_test.hisal; -- ------------------------------------------------------SELECT NAME, salary, grade FROM emp_test

FULL JOIN salgrade_test ON emp_test.salary BETWEEN salgrade_test.lowsal AND salgrade_test.hisal; -- 复制表:只复制结构 , 不复制数据 CREATE TABLE salgrade_copy AS ( SELECT * FROM salgrade_test WHERE 1 <> 1 ); SELECT * FROM salgrade_copy; -- 复制表:复制一部分数据----通过设置别名的方式 , 指定新表中的列名(year_sal) CREATE TABLE emp_test_copy AS ( SELECT emp_id, NAME, salary * 12 year_sal FROM emp_test WHERE dept_test_id = 10 ); SELECT * FROM emp_test_copy; -- 复制表:复制一部分数据 -- 新表中的列名 CREATE TABLE emp_count (did, emp_num) AS ( SELECT dept_test_id, COUNT (*) FROM emp_test GROUP BY dept_test_id ); SELECT * FROM emp_count; -- 创建一个同 emp 表结构相同的空表 , 将部门号为 10 的员工信息放入该表 -- 如果有一张表 emp 的数据量为一百万条 , 此时需要建立 1 张测试表只放入少量测试数据( 如 100条 ) , 执行步骤如下所示: -- 第 1 步创建一个空表 CREATE TABLE emp_copy AS (

Oracle如何创建表空间-2012年5月1日

oracle创建表空间 SYS用户在CMD下以DBA身份登陆: 打开黑窗口 在CMD中打sqlplus /no log 然后再 conn / as sysdba // 分为四步 //第1步:创建临时表空间,路径自己换 create temporary tablespace user_temp tempfile 'E:\AProgramMy\Oracle11g\tablespace\user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; //第2步:创建数据表空间,路径自己换 create tablespace user_data logging datafile 'E:\AProgramMy\Oracle11g\tablespace\user_data.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; (删除表空间: DROP TABLESPACE user_data INCLUDING CONTENTS AND DATAFILES; )

//第3步:创建用户并指定表空间 create user yzk identified by yzk default tablespace user_data temporary tablespace user_temp; (删除用户: drop user yzk cascade; ) //第4步:给用户授予权限,没有create sessio n权限就不能登录! grant connect,resource,create sessio n,create table to yzk; (撤销权限: revoke connect,resource,create session,create table from yzk; ) 查看已创建的表空间:select tablespace_name,status from dba_tablespaces; 这样就可以用此用户登录了,登录后是没有表的(如果管理员登录会有很多乱七八糟的表看着十分不爽,都不知道哪个是自己创建的)因为用户和表空间都是新的所以什么也没,此时就可以新建表了,终于解决了我的疑问,爽! --------------------------------------------------------------------------------- //以后以该用户登录,创建的任何数据库对象都属于user_temp 和user_data 表空间, 这就不用在每创建一个对象给其指定表空间了 查看创建的表空间的名称和状态: select tablespace_name,status from dba_tablespaces; 撤权: revoke 权限... from 用户名; 删除用户命令 drop user user_name cascade; 删除表空间 DROP TABLESPACE data01 INCLUDING CONTENTS AND

Oracle常见死锁发生的原因以及解决方法

Oracle常见死锁发生的原因以及解决方法 Oracle常见死锁发生的原因以及解决办法 一,删除和更新之间引起的死锁 造成死锁的原因就是多个线程或进程对同一个资源的争抢或相互依赖。这里列举一个对同一个资源的争抢造成死锁的实例。 Oracle 10g, PL/SQL version 9.2 CREATE TABLE testLock( ID NUMBER, test VARCHAR(100) ) COMMIT INSERT INTO testLock VALUES(1,'test1'); INSERT INTO testLock VALUES(2,'test2'); COMMIT; SELECT * FROM testLock 1. ID TEST 2.---------- ---------------------------------- 3. 1 test1 4. 2 test2 死锁现象的重现: 1)在sql 窗口执行:SELECT * FROM testLock FOR UPDATE; -- 加行级锁并对内容进行修改, 不要提交 2)另开一个command窗口,执行:delete from testLock WHERE ID=1; 此时发生死锁(注意此时要另开一个窗口,不然会提示:POST THE CHANGE RECORD TO THE DATABASE. 点yes 后强制commit):

3)死锁查看: 1.SQL> select https://www.360docs.net/doc/638328747.html,ername,l.object_id, l.session_id,s.serial#, s.lockwait,s.status,s.machine, s.program from v$session s,v$locked_object l where s.sid = l.session_id; USER NAME SESSION_ID SERIAL# LOCKWAIT STATUS MACHINE PROGRAM 2.---------- ---------- ---------- -------- -------- ---------------------- ------------ 3.SYS 146 104 INACTIVE WORKGROUP\J-THINK PLSQLDev.exe 4.SYS 144 145 20834474 ACTIVE WORKGROUP\J-THINK PLSQLDev. exe 字段说明: Username:死锁语句所用的数据库用户; SID: session identifier,session 标示符,session 是通信双方从开始通信到通信结束期间的一个上下文。 SERIAL#: sid 会重用,但是同一个sid被重用时,serial#会增加,不会重复。 Lockwait:可以通过这个字段查询出当前正在等待的锁的相关信息。 Status:用来判断session状态。Active:正执行SQL语句。Inactive:等待操作。Killed:被标注为删除。 Machine:死锁语句所在的机器。 Program:产生死锁的语句主要来自哪个应用程序。 4)查看引起死锁的语句:

Oracle 11g表空间——创建和扩展(永久)表空间

Oracle 11g表空间——创建和扩展(永久)表空间 本文内容 创建(永久)表空间 查看表空间 扩展表空间 创建(永久)表空间 Oracle 按照区和段空间进行管理表空间。 区管理方式 - 针对区的分配方式的不同,有两种方式:字典管理方式 (dictionary-managed tablespace,DMT)和本地管理方式(local-managed tablespace,LMT)。Oracle 10g 开始强烈建议使用 LMT 方式。从 Oracle 9i 开始,创建表空间时默认使用 LMT。 其中,LMT 区的分配方式: 统一(UNIFORM)- 统一分配。指定表空间中所有区的大小都相同。默认值是 1MB。自动(AUTOALLOCATE 或 SYSTEM)- 自动分配。指定有 Oracle 系统来自动管理区的大小。这是默认设置。 段管理方式– LMT 方式,除了可以指定区的分配方式外,还可以指定段的管理方式。段空间管理方式主要是指 Oracle 用来管理段中已用数据块和空闲数据块的机制。分为两种: 手动(MANUAL)- Oracle 将使用空闲列表(free list)管理段的已用数据块和空闲数据块。这是传统的段空间管理方式,为了与以前的版本兼容。 自动(AUTO)- Oracle 将使用位图(bitmap)来管理段的已用数据块和空闲数据块。通过位图中单元的取值判断段中的数据块是否可用。 字典管理方式没有段管理。 下面示例演示用本地管理方式创建表空间。这是 Oracle 推荐的方式。 示例 1:使用 AUTOALLOCATE 区分配方式。创建表空间 mytbs01,数据文件是 D:\oracledata\mytbs01_1.dbf,大小为 2M,并指定区分配方式为 AUTOALLOCATE。create tablespace mytbs01 datafile 'D:\oracledata\mytbs01_1.dbf' size 2M

Oracle数据库死锁的一些通用操作

经常碰到Oracle数据库死锁,原因很多,大部分情况下都需要用到的操作主要有以下几个方面:1、查找死锁。当发现死锁时,必须要知道死锁的情况和发生死锁的根源。 1)查看是否有死锁: select object_id,session_id,locked_mode from v$locked_object; 2)查看死锁的用户和进程: select https://www.360docs.net/doc/638328747.html,ername,t2.sid,t2.serial#,t2.logon_timefrom v$locked_object t1,v$session t2where t1.session_id=t2.sidorder by t2.logon_time; 3)查看死锁的对象: select t1.object_name,t2.session_id,t2.locked_modefrom dba_objects t1,v$locked_object t2where t1.object_id=t2.object_id; 或者 select t3.object_name,T3.object_type,https://www.360docs.net/doc/638328747.html,ername,t2.sid,t2.serial#,t2.logon_timefrom dba_objects t3,v$locked_object t1,v$session t2where t1.session_id=t2.sidand t3.object_id=t1.object_id order by t2.logon_time; 4)查看死锁发生的sql语句: select sql_text from v$sql where hash_value in (select sql_hash_value from v$session where sid in (select session_id from v$locked_object)); 2、删除死锁: (1).先杀Oracle进程: ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#'; (2).再杀操作系统进程: KILL -9 刚才查出的SPID 3、ORACLE里锁有以下几种模式: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改 4:Share 共享锁(S):阻止其他DML操作 5:S/Row-X 共享行专用(SRX):阻止其他事务操作 6:exclusive 专用(X):独立访问使用 数字越大锁级别越高, 影响的操作越多。 4、一些基础判断 ?一般的查询语句如select ... from ... ;是小于2的锁, 有时会在v$locked_object出现。 select ... from ... for update; 是2的锁。 ?当对话使用for update子串打开一个游标时,所有返回集中的数据行都将处于行级(Row-X)独占式锁定,其他对象只能查询这些数据行,不能进行update、delete或 select...for update操作。

oracle创建表

CREATE TABLE DEPT(id NUMBER(7),name VARCHAR2(25)); 2、将Departments表中数据插入到DEPT表中 SELECT * FROM HR.DEPARTMENTS; INSERT INTO DEPT(ID,NAME) SELECT * FROM DEPARTMENTS; CREATE TABLE EMP (id NUMBER(7),last_name VARCHAR2(25),first_name VARCHAR2(25),dept_id NUMBER(7)); 4、修改EMP表,允许输入更长(50)员工的姓氏(LAST_NAME) ALTER table EMP modify(last_name varchar2(50)); 5、在数据字典中确认DEPT表和EMP表的创建结果 DESCRIBE dept; DESCRIBE emp; 6、根据表Employees的结构创建表Employees2表,仅包含EMPLOYEE_ID、FIRST_NAME、 LAST_NAME、SALARY和DEPARTMENT_ID。将新表中的各列分别命名为EMPLOYEE_ID、FIRST_NAME、LAST_NAME、SALARY和DEPT_ID CREATE TABLE employees2 as SELECT employee_id,first_name,last_name,salary,department_id dept_id FROM employees; 7、删除EMP表 HR> drop table emp; 8、将EMPLOYEES2表重命名为EMP HR> alter table employees2 rename to emp; 9、删除表EMP的FIRST_NAME列,并确认

oracle的TM锁T锁知识完全普及

o r a c l e的T M锁、T X锁知识完全普及锁概念基础 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数据库中有两种基本的锁类型:排它锁(ExclusiveLocks,即X锁)和共享锁(ShareLocks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。 Oracle数据库的锁类型 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(datalocks,数据锁),用于保护数据的完整性;DDL锁(dictionarylocks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internallocksandlatches),保护数据库的内部结构。 DML锁的目的在于保证并发情况下的数据完整性,。在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。 当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务加锁前检查TX 锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、SX、S、X等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。 在数据行上只有X锁(排他锁)。在Oracle数据库中,当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX锁被释放,其他会话才可以加锁。 当Oracle数据库发生TX锁等待时,如果不及时处理常常会引起Oracle数据库挂起,或导致死锁的发生,产生ORA-60的错误。这些现象都会对实际应用产生极大的危害,如长时间未响应,大量事务失败等。 悲观封锁和乐观封锁 一、悲观封锁 锁在用户修改之前就发挥作用: Select..forupdate(nowait)

Oracle 建表(一对多)代码及相关约束示例

建表(一对多)代码及相关约束 create table t_class( c_id number(3) primary key, c_name varchar2(20) not null ); create table t_stu( s_id number(5) primary key, s_name varchar2(8) not null, sex char(2) default '男', birthday date, school_age number(2) check(school_age>0), school_score number(5,2), c_id number(3), id_card char(18) unique, foreign key(c_id) references t_class(c_id) ); 附:测试数据: insert into t_class values(1,'订单班'); insert into t_class values(2,'开发班'); insert into t_class values(3,'美工班'); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (1, 'a', '男', to_date('01-01-1980', 'dd-mm-yyyy'), 24, 90, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (2, 'b', '男', to_date('11-05-1981', 'dd-mm-yyyy'), 23, 80, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (3, 'c', '女', to_date('19-09-1982', 'dd-mm-yyyy'), 22, 50, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (4, 'd', '女', to_date('28-01-1984', 'dd-mm-yyyy'), 21, 80, 2, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD)

oracle数据库简答题

简述表空间和数据文件之间的关系。 答:每一个数据文件都必须隶属于某个表空间,但一个表空间可以由多个数据文件组合而成。tablespace是逻辑上的概念,datafile则在物理上储存了数据库的种种对象。 概述Oracle数据库体系的物理结构。 答:Oracle数据库体系的物理结构是指数据库上实际的、可以从操作系统看到的文件,可以利用操作系统指令进行管理作业,物理存储结构组成文件如下所列:数据文件(Data File):实际存储数据的地方;在线重做日志文件(Online Redo Log File):记录曾经发生过的动作,当数据库受损时,可利用在线重做日志文件进行必要的恢复动作;控制文件(Control File):记录数据库必要的信息,以验证及维护数据库的完整性的信息;初始化参数文件(Parameter File):当数据库开启时,用来架构出Oracle内存结构的文件;密码文件(Password File):验证哪些帐号能开启、关闭Oracle数据库。 简要介绍表空间、段、区和数据块之间的关系。 答:Oracle的逻辑存储单元从小到大依次为:数据块、区、段和表空间。表空间又由许多段组成,段由多个区组成,区又由多个数据块组成。 简述Oracle实例系统中各后台进程的作用。 答:(1)DBWRn(Database Writer)的主要工作是将数据缓冲区中被改过的数据写回到数据文件里。(2)LGWR(Log Writer)主要的工作是将Redo Log Buffer里的记录写到在线重做日志文件中。(3)SMON(System Monitor)有两个主要的功能。<1>执行Instance Recovery:当数据库不正常中断后再度开启时,SMON会自动执行Instance Recovery,也就是会将在线重做日志里面的数据回写到数据文件里面。<2>收集空间:将表空间内相邻的空间进行合并的动作。 (4)PMON(Process Monitor):监视数据库的用户进程。若用户的进程不当而被中断,PMON会负责清理任何遗留下来的资源,并释放失效的进程所保留的锁,然后从Process List中移除,以终止Process ID。(5)CKPT(Checkpoint)主要负责更新数据库的最新状态,CKPT当Checkpoint完成时,会更新控制文件和数据库文件的文件头。(6)ARCn(Archiver).当Oracle 数据库设定为ARCHIVELOG Mode时,ARCn 会在Log Switch时自动将Redo Log File复制一份到指定的目录下称为归档日志文件(Archivedredologs)。 共享和专用操作模式的工作过程有什么区别? 在专用服务器操作模式中,Oracle为每个连接到数据库实例的用户进程启动一个专门的服务进程,其用户进程数与服务器进程数的比例为1:1因为在用户进程空闲期间,对应的服务器进程始终存在,数据库的效率比较低。共享服务器操作模式可以实现只运行少量的服务器进程,由少量的服务器进程为大量用户提供服务。在此模式下,数据库实例启动的同时也将启动一定数量的服务进程,在调度进程Dnnn的调度下位任意数量的用户进程提供服务。 简述oracle的初始化参数文件? 答:在传统上,Oracle在启动实例时将读取本地的一个文本文件,并利用从中获取初始化参数对实例和数据库进行设置,这个文本文件称为初始化参数文件(简称为PFILE)。 简述如何修改初始化参数文件? 答:如果要对初始化参数进行修改,必须先关闭数据库,然后在初始化参数文件中进行编辑,再重新启动数据库使修改生效。 简述启动数据库时的状态。 答:开启数据库分成4种状态。SHUTDOWN状态:数据库是关闭的。NOMOUNT状态:Instance被开启的状态,会去读取初始化参数文件。MOUNT状态:会去读取控制文件。数据库被装载。OPEN状态:读取数据文件、在线重做日志文件等,数据库开启。 简述数据库的各种关闭方式。 答:(1)正常关闭(SHUTDOWN NORMAL):不允许新的USER连进来。(2)事务关闭

oracle数据库建表空间语句汇总

建立表空间和用户的步骤: 用户 建立:create user 用户名identified by "密码"; 授权:grant create session to 用户名; grant create table to 用户名; grant create tablespace to 用户名; grant create view to 用户名; 表空间 建立表空间(一般建N个存数据的表空间和一个索引空间): create tablespace 表空间名 datafile ' 路径(要先建好路径)\***.dbf ' size *M tempfile ' 路径\***.dbf ' size *M autoextend on --自动增长 --还有一些定义大小的命令,看需要 default storage( initial 100K, next 100k, ); 用户权限 授予用户使用表空间的权限: alter user 用户名quota unlimited on 表空间; 或alter user 用户名quota *M on 表空间; --表空间 CREATE TABLESPACE deej DA TAFILE 'E:\database\deej.dbf' size 2G EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; --索引表空间 CREATE TABLESPACE sdt_Index DA TAFILE 'F:\tablespace\demo' size 512M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; --2.建用户 create user deej identified by deej default tablespace deej; --3.赋权

oracle创建表空间命令

eclipse+webservice开发实例 spring mvc数据绑定 oracle11g 创建表空间和用户授权 2013-01-27 10:54:18| 分类:默认分类| 标签:|举报|字号大中小订阅 *分为四步*/ /*第1步:创建临时表空间*/ create temporary tablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第2步:创建数据表空间*/ create tablespace AKJY_DATA logging datafile 'E:\oracleDATA\akjy_data.dbf' size 50m autoextend on next 50m maxsize 2048m extent management local; eclipse+webservice开发实例 spring mvc数据绑定 create tablespace DATA datafile 'D:\Program Files\oracle11g\DATA.dbf’size 1G autoextend on next 50m maxsize 20480m oracle11g 创建表空间和用户授权 2013-01-27 10:54:18| 分类:默认分类| 标签:|举报|字号大中小订阅 *分为四步*/ /*第1步:创建临时表空间*/ create temporary tablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第2步:创建数据表空间*/

oracle创建表基础

?VARCHAR2(size)和NVARCHAR2(size):变长字符型数据。 首先,该数据类型存储变长的字符数据,在使用该数据类型定义数据时,该数据的存储区大小是不固定的,依据存储数据的长度进行动态分配存储区。参数size是该变量存储的最大的字符数,该值最大为4000。size的最小或默认值都是1。一般在定义该数据类型时,都要指定该长度值,即指定size值。NVARCHAR2(size)的不同之处在于它支持全球化数据类型,支持定长和变长字符集。 ?CHAR(size) NCHAR(size):定长字符型数据 该数据类型一旦定义,则存储该变量的存储区的大小就固定下来。显然在存储区分配上它没有VARCHAR2(size)和NVARCHAR2(size)数据类型具有动态性,但是在实际中,如果可以预测到一个变量存储的字符数量,且数量不是很大,则最好还是使用定长字符型数据来定义该变量,这样可以提高存储的效率。因为使用变长字符型数据要不断的计算存储的数据长度,再分配存储数据块,会消耗计算资源。定长字符型数据的最小值和默认值都为1个字符,而最大值为2000。NCHAR(size)的不同之处在于它支持全球化数据类型,支持定长和变长字符集,此时定长字符型数据的最小和默认值都为1个字节。 ?DATE:日期型数据 ORACLE服务器使用7个定长的存储区存储日期型数据,它可以月,年,日,实际,时,分和秒。日期型数据的取值范围从公元前4712年1月1日到公元9999年12月31日。 ?NUMBER(P,S):数字型数据。 参数p指十进制数的中长度,s为该十进制数小数点后的位数,如NUMBER(10,2)表示该数字型数据的中长度为10位,而小数后为2为。其中参数p的最大值为38,最小值为1,而参数s的最大值为124,最小值为-84。

Oracle12C用户创建与表空间分配

Oracle 12C用户创建与表空间分配 数据库安装完成后,首先用系统用户链接数据库容器(CDB), 在数据库容器(CDB)中创建表空间‘imei’ SQL>create tablespace iemi datafile'E:\Oracle_DB\ cdb_iemi.dbf'size 10240m autoextend on next 200m; 表空间已创建。 接下来在Oracle 12C数据库中创建用户时会报ORA-65096错误。SQL> create user imei identified by imei default tablespace imei temporary tablespace imei_temp; * ERROR at line 1: ORA-65096: invalid common user or role name ORA-65096:公用用户名或角色名无效 以前没见过这个错误,通用用户(common user)是什么?之前的版本可是没这概念啊,上网搜索看到了下面的图片,原来和common user 对应的还有local user。

这个common user 和local user是和oracle 12c的新特性pluggable database(PDB)有关。在PDB中创建的用户就是local user。从上图可以看出,common user必须以大写或小写的c##开头,尝试建立以c##开头的common user。 SQL> create user c##imei identified by imei default tablespace imei temporary tablespace imei_temp;; User created. SQL> grant dba to c##imei; Grant succeeded. 每个PDB都是独立的单元,有自己的用户(local user)、表空间、数据文件,每个local user只能访问自己的PDB,而common user只要权限足够,可以访问任意PDB。

oracle数据库基本语法

--创建用户create user han identified by han default tablespace users Temporary TABLESPACE Temp; grant connect,resource,dba to han; //授予用户han开发人员的权利 --------------------对表的操作-------------------------- --创建表 create table classes(id number(9) not null primary key,classname varchar2(40) not null ) --查询表 select * from classes; --删除表 drop table students; --修改表的名称 rename alist_table_copy to alist_table; --显示表结构describe test --不对没查到 -----------------------对字段的操作----------------------------------- --增加列alter table test add address varchar2(40); --删除列alter table test drop column address; --修改列的名称alter table test modify address addresses varchar(40); --修改列的属性alter table test modi create table test1(id number(9) primary key not null,name varchar2(34)) rename test2 to test; -- 创建自增的序列 create sequence class_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE; select class_seq.currval from dual --插入数据 insert into classes values(class_seq.nextval,'软件一班') commit; --更新数据 update stu_account set username='aaa' where count_id=2;commit; --创建唯一索引

相关文档
最新文档