oracle复习

  • “g”代表网格
  • Oracle 服务器: 是一个数据库管理系统,由 Oracle 实例和 Oracle 数据库组成
  • Oracle 实例: 是一种访问oracle的方式,一次只打开一个,由内存结构(SGA(系统全局区))+后台进程结构组成
  • 连接到实例:建立一个用户连接,加上开启一个会话
  • 数据库结构:数据文件、控制文件(其下还有口令文件,参数文件)、联机重做日志文件(其下还有归档日志文件)
    • 数据文件:数据库当前数据文件
    • 控制文件:存放维护和验证数据库完整的文件
    • 联机重做:数据库的更改记录,以循环方式覆盖写入内容
    • 归档日志文件:将联机重做日志已写满的文件的内容复制出来, 存放在指定的位置
  • 内存结构:SGA(系统全局区)+PGA (程序全局区)
    • SGA:由所有服务器进程和后台进程共享,是动态的,包含以下结构:
      • 共享池:存储最近执行的SQL语句,和最近使用的数据定义,包含以下两个关键内存结构:
        • 库高速缓存:存储最近使用的SQL语句信息,由“最近最少使用算法” (LRU) 管理
        • 数据字典告诉缓存:存储最近使用的定义集合,包括数据库文件名,表名,索引,权限等等
      • 数据库缓冲区高速缓存:存储从数据文件中检索到的数据块的复本,(LRU)算法来管理
      • 重做日志缓冲区:纪录数据库数据块所有变化,主要的用途是恢复
      • 大型池:减轻共享池的负担
      • Java 池:是在安装使用JAVA情形下用的
      • Streams 池
    • PGA:专用于每一个服务器进程或后台进程,用来为每一个连接到ORACLE数据库的用户进程所用的自由内存区
  • 进程结构:调用应用程序或 Oracle 工具时,Oracle 服务器会通过创建服务器进程来执行应用程序发出的命令。Oracle 服务器还会针对一个实例创建一组后台进程。
    • 用户进程:在用户要求连接到ORACLE服务器时启动,不能直接和ORACLE服务器交互
    • 服务进程:连接到ORACLE实例,当用户创建会话时开始,直接和ORACLE服务器进行交互的程序
    • 后台进程:当ORACLE实例启动后启动,物理和内存结构之间的关系是通过ORACLE后台进程来保持和加强的,必须得后台进程有
      • DBWn:数据库书写器进程
      • LGWR:日志书写器进程
      • SMON:系统监控
      • PMOM:过程监控进程
      • CKPT:检查点进程
      • ARCn:归档进程
  • 逻辑结构:表空间、段、分区(分配单位)、数据块(使用单位)
  • 文件命名语法:
    • 控制文件:/pm/q/d/controln.ctl
    • 重做日志文件:/pm/q/d/redon.log
    • 数据文件:/pm/q/d/tn.dbf
  • 管理用户
    • SYS:口令(chang_on_install),管理数据库数据字典表,系统表
    • SYSTEM:口令(manager),管理工具所需的内表和视图
  • SQL*PLUS:操作和控制数据库,启动和关闭数据库、创建和运行查询、添加行、修改
  • 登陆SQLPLUS:DOS界面(sqlplus useername/password@dbname)
  • 常用查询语句:
    • 显示当前环境变量的值:Show all
    • 显示当前在创建函数、存储过程、触发器、包等对象的错误信息     Show error
    • 显示数据库的版本:show REL[EASE]
    • 显示当前的用户名     show user
    • 显示表结构 desc table;
    • 显示缓冲区内容(缓冲区记录SQL语句,不记录SHOW等语句) list
    • 显示缓冲区内容的第n行   list n
    • 修改缓冲区的内容    change /old/new
    • 直接改变第n行内容 n text
    • 缓冲区后增加内容(不换行)  append text
    • 缓冲区后增加内容(换行)  input text
    • 在第一行前插入数据   0 text
    • 清除缓冲区内容 clear buffer
    • 删除缓冲区第n行 del n
    • 用记事本编辑缓冲区内的文本 edit
    • 将缓冲区内的文本保存为可执行的sql文件  save filename
    • 执行保存的sql文件  start filename
    • 读取sql文件内容放到缓冲区中  get filename
  • 初始化参数文件
    • 静态参数文件:PFILE,名为initSID.ora,纯文本文件,缺省路径是$ORACLE_HOME/dbs
    • 永久参数文件:SPFILE名为spfileSID.ora,二进制文件
  • 启动数据库
    • 优先顺序:spfileSID.ora-->缺省SPFILE-->initSID.ora-->缺省PFILE
    • 任务顺序:ORACLE_HOME/dbs 读取初始化文件-->分配SGA-->启动后台进程-->打开alertSID.log 文件和跟踪文件
    • 打开数据库:包括打开数据文件和联机重做日志文件
  • 数据库常用命令:
    • 从nomount-》mount:   ALTER DATABASE db01 MOUNT;
    • 打开只读数据库   ALTER DATABAE db01 OPEN READ ONLY;
  • 关闭数据库:shutdown 【以下方式】
    • NORMAL(最慢)
    • TRANSACTIONAL等做完事务但不等断开联结
    • IMMEDIATE(最快)不等做完所有事情把正在做的事情做ROLLBACK,回滚掉已做的事情到一致的状态再断开联结
    • ABORT用做RECOVERY
  • 单行函数:返回一个值
    • 字符
      • 转大写:upper('string')
      • 转小写:lower('STRING')
      • 首字母大写:initcap('string')
    • 字符串
      • 连接:concat('hello','world')
      • 截取:substr('helloworld',2,5)-->ello
      • 返回长度:length('helloworld')
      • 返回指定字符串的首字母在原字符串中的位置:instr('helloworld','ello') -->2
      • 左填充:LPAD(SALARY,10,'*') -->*****24000
      • 右填充:RPAD(SALARY,10,'*')
      • 截去:trim('h' from 'helloworld')
    • 数字
      • 四舍五入:round(45.926,-1)-->50
      • 截断小数:trunc (45.926,2)-->45.92   若省去n,则默认为0  eg:trunc (45.926)-->45
      • 取余数:mod(1600,300)-->100
    • 日期:默认DD-MON-RR  --> 09-JUN-98
    SYSDATE:返回系统日期
    两日期间的月数:MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')
    把月加上:ADD_MONTHS ('11-JAN-94',6) -->'11-JUL-94'
    下个星期几是几号:NEXT_DAY ('01-SEP-95','FRIDAY') --> '08-SEP-95'
    指定月的最后一天:LAST_DAY('01-FEB-95') --> '28-FEB-95'
    四舍五入日期:sysdate='25-JUL-95'
    ROUND(SYSDATE,'MONTH')         01-AUG-95
    ROUND(SYSDATE ,'YEAR')         01-JAN-96
    截去日期:
    TRUNC(SYSDATE ,'MONTH')        01-JUL-95
    TRUNC(SYSDATE ,'YEAR')         01-JAN-95
    5、转换函数
    date->char    TO_CHAR(date, 'format_model')  ps:必须加单引号,并且区分大小写
    用一个fm 元素用来删除填补的空,或者前导
    日期格式模板:
    时间格式:
    spth(显示英文序数)
    number ->char    TO_CHAR(number, 'format_model')   PS:引号必须
    数字格式:
    char->number   to_number('999.00')
    char->date       to_date('01-jan-99','DD-Mon-YY')
    6、通用函数:转换空值为实际值:NVL (expr1, expr2) 非空转2空转3: NVL2 (expr1, expr2, expr3) 返回第一个非空表达式:COALESCE (expr1, expr2, ..., exprn) 相等返回空,不相等返回第一个表达式:NULLIF (expr1, expr2)
    7、条件表达式:
    case expr when 条件 then 返回
    when 条件 then 返回
    else 返回
    end
    DECODE expr, 条件1, 返回1,
    条件2, 返回2,
    默认值
    • 多表查询:
      • SELECT     table1.column, table2.column
      • FROM     table1, table2
      • WHERE     table1.column1 = table2.column2;
    • DUAL 是一个虚拟表,你可以用它来查看函数和计算的结果
    • AND:增加限制条件  where sal>1000 and empno=10 and deptno=50
    • 别名
    表别名:from emp e , dept d
    • 为了连接n 个表,你最少需要n-1 个连接条件。
    • 非等值连接:WHERE  e.salary BETWEEN j.lowest_sal AND j.highest_sal;
    • 外连接:WHERE  e.department_id(+) = d.department_id ;
    ps:上为右外连接(FROM EMP RIGHT OUT JOIN DEPT ON .....),即右边是全值,放+号的一边可能出现空置,功能就是用来查看不满足条件的连接
    • 自然连接:基于两个表之间有相同名字的所有列  select empno,ename, dname from emp natural join dept;
    • 交叉连接:笛卡尔积 select empno,ename, dname from emp cross join dept;
    • USING子句连接:匹配唯一列 select emp.empno,emp.ename,dept.dname from emp join dept using (deptno);
    ps:join不要忘记,using后面括号必须加,且不需要加表名或者别名,natural join 与 using 是互相排斥的
    • on子句:指定任意条件或者要连接的列,还可以创建3表的连接
    select emp.empno,emp.ename,dept.dname from emp join dept on emp.deptno = dept.deptno;
    • 字符串和日期的值放在单引号中
    • 比较条件(where中用)
    两值之间,包含:between a and b
    匹配列表中任意值:in(1,2,3)
    匹配字符模板:like ‘_o%'   (% 表示零个或多个字符  _ 表示一个字符)
    匹配空值:where emptno is null
    • 求值顺序:算数-》比较-》is null , like , in -> between -> not -> and -> or
    • order by  ...  asc (默认)/ desc  在SELECT 语句的最后
    • 组函数:用在select语句中,且除组函数之外的列必须包含在group by 中,不能使用WHERE 子句来约束分组,但可以使用having子句限制,是多行查询
    AVG 平均值 COUNT 计数,不包含空值 MAX 最大值 MIN 最小值 STDDEV 标准差 SUM 合计 VARIANCE 方差
    • DISTINCT 无重复值
    • 创建数据组:GROUP BY 位于order前where后
    ps:在SELECT 中,除去组函数,其他所有列必须在GROUP BY 子句中,但GROUP BY 列不必在SELECT 列表中
    • select  ...  from ... where ... group by ... having ... order by
    • 单行子查询:where salary > (select from where ....)    ps:括号不要忘记
    • 多行子查询:
    <ANY 意思是小于最大值。 >ANY 意思是大于最小值。 =ANY 等同于 IN。 <ALL 意思是小于最小值。 >ALL 意思是大于最大值。
    • 约束:create table 时定义
    1、列级定义:定义一个列的约束,NOT NULL只能在列级被定义
    id int primary key  (不指定约束名,此时系统会自己配一个复杂的约束) 《--》  hire_date    DATE  CONSTRAINT emp_hire_date_nn  NOT NULL(指定约束名)
    2、表级定义:定义多个列的约束,但不能定义NOT NULL
    id int , constraint emp_id_pk primary key (id)    ps:括号不能忘
    • not null :不能为空
    • UNIQUE :值唯一,且空永远满足(即空可以有多个)
    • PRIMARY KEY :一个表只能有一个主键,非空且唯一,会自动添加索引
    • FOREIGN KEY :外键引用的值必须在主键中出现,主键与外键可以是同一张
    CREATE TABLE EMP(.....CONSTRAINT emp_dept_fk FOREIGN KEY (deptno) REFERENCES dept(deptno))
    ps:前面是本表的列,references 到另一张表的主键
    ON DELETE CASCADE: 当父表中的行被删除时,删除子表中相依赖的行
    ON DELETE SET NULL: 转换相依赖的外键为空 create table lyo2(id int,constraint emp_fk foreign key (id) references lyo1(id) on delete set null);
    • check:CONSTRAINT emp_salary_min CHECK (salary > 0)
    • 添加约束:ALTER TABLE     emp ADD CONSTRAINT  emp_dept_fk FOREIGN KEY (deptno) REFERENCES dept(deptno);
    • 删除约束:ALTER TABLE  employees DROP CONSTRAINT  emp_manager_fk;
    删除主键约束,并同时删除他的外键约束:ALTER TABLE departments DROP PRIMARY KEY CASCADE;
    • 禁用/启用约束:ALTER TABLE employees DISABLE/ENABLE CONSTRAINT emp_emp_id_pk CASCADE;(CASCADE 选项禁用相依赖的完整性约束)
    • 启用一个带CASCADE 选项的被禁用的主键约束不会起用任何依赖于该主键的外键。??
    • 查看约束:C 代表CHECK,P 代表PRIMARY KEY,R 代表引用完整性, U 代表UNIQUE 键
    查看约束:SELECT     constraint_name, constraint_type,search_condition FROM     user_constraints
    查看约束关联的列:SELECT  constraint_name, column_name FROM  user_cons_columns
    • 视图:不包含它自己的数据,只是一个窗口,如果视图中包含组函数,GROUP BY 子句,DISTINCT 关键字,伪列ROWNUM 关键字,就不能删除行,不能修改数据,不能添加数据,如果其中有表达式定义的列,那它则仅不能修改数据
    建立:CREATE VIEW  lyo AS SELECT  (select内用别名,则视图也是用此别名)
    修改:CREATE OR REPLACE VIEW  lyo(第1列别名,第2列别名...) as select...
    只读:....as select .... with read only;
    删除:drop view lyo
    • 查询本用户已有的表:select table_name from user_tables;
    • 子查询创建表:create table lyo  as select .....
    • 修改表:ALTER/delete/update/insert
    ALTER TABLE LYO ADD  (job_id VARCHAR2(9));
    ALTER TABLE LYO MODIFY     (last_name VARCHAR2(30)); ALTER TABLE LYO DROP COLUMN  job_id;
    delete from lyo where empno=10
    update emp set empno=1 where ename='lyo'
    insert into emp(empno,ename) values (1,'lyo')  
    • 删除表:DROP TABLE lyo;
    • 改变名字:RENAME dept TO detail_dept;
    • 截断表:删除内容不删除表,TRUNCATE TABLE dept
    • 索引:定义一个PRIMARY KEY或UNIQUE 约束时,一个唯一索引被自动创建
    添加:CREATE INDEX      emp_last_name_idx ON  emp(ename);
    创建索引的情况:一个列包含一个大范围的值, 一个列包含很多的空值, 一个或多个列经常同时在一个WHERE 子句中或一个接条件中被使用, 表很大,并且经常的                    查询期望取回少于百分之2 到4 的行
    查询索引:USER_INDEXES 数据字典视图包含索引和它唯一的名字,USER_IND_COLUMNS 视图包含索引名、表名和列名
    删除索引:drop index lyo
    • 添加注释:COMMENT ON TABLE employees IS 'Employee Information';
    • TOP-N分析:
    SELECT empno,ename,...., ROWNUM  (系统保留字) FROM   (SELECT empno,ename,.... FROM emp ORDER  BY sal) WHERE  ROWNUM <=  3;
    • P L / S Q L块的类型:命名块(过程和函数)和匿名块
    • PL/SQL块:由3部分组成:定义部分(DECLARE),可执行部分(BEGIN),异常处理部分(EXCEPTION)。 DECLARE....BEGIN...EXCEPTION...END;
    • 字块嵌在主块的BEGIN部分
    • 定义部分
      • 定义标量:一行定义一个标示符,用;结束,如果定义了constant,表明该变量是常量,必须为其赋值,赋值符号为:=,或者使用default进行初始化
      • 变量名 【constant】 类型 【not null 】【:=初值】【default ..】
      • 用 %TYPE 表示声明一个变量与某个列的数据类型一致:Student_name Teacher_name%TYPE
      • 记录类型:TYPE LYO IS RECORD (ID NUMBER NOT NULL, .....);相当于定义了一个类,使用时可以这样:STUDENT LYO;
      • 用%ROWTYPE表示声明一个记录类型与已有的表的结构(emp)一样:Emp_value  EMP %ROWTYPE;   引用时可以使用:emp_value.empno
    • 可执行部分:只能使用SELECT,INSERT,UPDATE,DELETE,COMMIT,ROLLBACK等数据查询、数据操纵或事务控制命令,不能使用CREATE,ALTER,DROP,GRANT,REVOKE等数据定义和数据控制命令。SELECT语句必须与INTO子句相配合,在INTO子句后面跟需要赋值的变量。结果只能有一条,如果返回了多条数据或没有数据,则将产生错误。
      • 赋值用:=(where中的=还是=)
      • 用SELECT语句为%ROWTYPE型变量整个赋值:SELECT   *  INTO EMP_VALUE  FROM  EMP WHERE  ENAME:=’SMITH’;
      • 条件控制语句:IF-THEN-END IF;IF-THEN-ELSE-END IF;IF-THEN-ELSIF-THEN-ELSIF-THEN-ELSE-END IF(elsif不要写成elseif)
      • 循环语句:
        • 直到型循环:LOOP  ...SQL语句.. EXIT WHEN ..条件.. END LOOP;
        • FOR循环:FOR V_COUNT(循环变量) IN [REVERSE] 1(下界)..10(上界)LOOP...END LOOP;
          • 此处的循环变量不需要在DECLEAR中定义,系统自动默认他为一个整形变量,并每次自动+1
        • WHILE循环:WHILE V_COUNT(循环变量)<10 LOOP ... END LOOP;
    • 异常处理:  WHEN 异常情况1 [OR 异常情况2…] THEN …;....WHEN OTHERS THEN ....END;
    • 存储过程:PROCEDURE
      • 优点:存储在服务器端,减少网络上所传送数据的数量,几个用户可以共享一个存储过程在内存中的代码
      • 语法:                                                                                                             CREATE OR REPLACE PROCEDURE lyo (变量名 NUMBER IN  ,变量名 INT  OUT,....) is(类似于declare)(一般很少用)声明 begin CODE 【exception】 .... END lyo
      • 括号部分:
        • IN 输入变量,begin中不允许被赋值,默认()内的是IN变量,(id in number)<->(id number)
        • OUT 输出变量,BIGIN中不能用他的值,只能赋值,(eno number,name out varchar2,salary out number)
      • 声明部分:一般不怎么用
      • begin部分:
        • select语句仍然要与into连在一起
      • 运行:
        • execute lyo(过程名) (过程参数)
        • 如果过程参数中有OUT变量,在运行之前需要声明一个实体变量,即VARIABLE USER_ID NUMBER;EXECUTE LYO(:USER_ID)
      • 删除过程:DROP PROCEDURE lyo
    • 函数:
      • 语法:CREATE OR REPLACE FUNCTION lyo (变量名 NUMBER IN  ,变量名 INT  OUT,....) RETURN 数据类型 IS (类似于declare)(把out的变量声明放在这里)声明 begin SELECT ... INTO .V_SAL... FROM ....RETURN ...(V_SAL)... //括号要加                                    【exception】                                                                                                               ....                                                                                                                      END
      • 执行:
        • 定义return的变量:variable v_sal number ; excute :v_sal  := lyo(2400)
    • 存储过程调用本身就是一个SQL语句,  函数调用则是表达式的一部分
    • DBMS_OUTPUT.PUT_LINE ('   ')
    • 包:将一系列相关对象存储在一起的结构,仅能存储在非本地的数据库中。
    • 显式游标:select语句查询的结果可以是单条记录,多条记录,也可以是零条记录。要访问查询结果的所有记录,可以通过FETCH语句,进行指针的移动来实现。
      • 定义语法:DECLARE     Cursor     LYO_C     IS    SELECT     ..FROM ...;  //定义游标游标指针 LYO_C%rowtype;     //定义游标指针 BEGIN OPEN LYO_C;//打开游标,即执行上面的select语句,将结果放置工作区 LOOP    //获取参数 FETCH LYO_C INTO 游标指针1,游标指针2...; IF LYO_C%FOUND THEN  //指针仍指向数据 DBMS_OUTPUT.PUT_LINE(游标指针.列名||' '||游标指针.列名....); ELSE EXIT; END IF; END LOOP; CLOSE     LYO_C;    //关闭游标
      • 游标指针只能向下移动,不能回退。要回退,则需关闭游标再打开
      • INTO子句中的变量个数、顺序、数据类型必须与工作区中每行记录的字段数、顺序以及数据类型一一对应。即select出多少列,就要into多少列。所以一般使用游标名%rowtype定义游标指针
      • 游标属性(用法:游标指针名%isopen)
        • %ISOPEN:该属性是为FALSE;布尔型。如果游标已经打开,返回TRUE,否则为FALSE。
        • %FOUND:布尔型,如果最近一次使用FETCH语句,有返回结果则为TRUE;
        • %NOTFOUND:布尔型,如果最近一次使用FETCH语句,没有返回结果则为TRUE
        • %ROWCOUNT:数值型,描述的是到目前为止实际从游标工作区抽取的记录数。
    • 隐式游标:在Declare段中无隐式游标说明把SELECT语句直接安排进begin中,PL/SQL会隐含地处理游标定义。每个隐式游标必须有一个INTO;
      • 异常:’no_data_found’和‘too_many_rows’
      • 判断条件:SQL%ROWCOUNT   SQL%NOTFOUND
    • 触发器:触发器是数据库内部的特殊存储过程。其功能是,当某种触发事件出现时,触发器便被显式地执行。
      • 触发时间
        • BEFORE:在操作发生之前执行触发。
        • AFTER:在操作发生之后执行触发。
      • 触发事件
        • INSERT:插入触发;
        • UPDATE:更新触发;
        • DELETE:删除触发。
      • 触发类型
        • ROW:行触发,对每一行操作都要触发。
        • STATEMENT:语句触发,只对该类操作触发一次。
      • 定义语法:CREATE OR REPLACE TRIGGER LYO AFTER/BEFORE INSERT ON TABLE or DELETE ON TABLE or UPDATE [OF COLUMN , COLUMN....] ON TABLE
      • FOR EACH ROW DECLARE .... BEGIN IF INSERTING/DELETING/UPDATING THEN ..... END IF; END LYO;
      • OLD/NEW关键词:
        • old表示数据操纵前的值,old只对UPDATE和DELETE操作。:old.empno
        • new表示数据操纵后的值,new只对UPDATE和INSERT操作。:new.empno
      • 删除触发器:drop trigger lyo
    • 关于存储过程、触发器、函数、包的几点说明:
      • 当存储过程、函数、包或触发器中所依赖的表结构发生变化时,要重新编译存储过程、函数、包或触发器。
      • 当其他用户调用该模式对象时,需要有执行的权限。
      • 存储过程、函数、包或触发器的执行权限,只能通过命令方式授权,不能通过角色的方式。
    • 备份与恢复(几乎都要处于归档模式)
      • 目的:数据都能从错误状态恢复到某种逻辑一致的状态。
      • 非介质故障:由系统自行处理
        • 事务性故障:(数据输入错误、违反了完整性限制、竞争资源导致死锁等)使事务未运行到正常终止点而夭折,这种情况就称为事务故障。此时数据库系统仍然在运行。解决方法:回滚
        • 数据库例程故障(突然停电等)事务以非正常方式终止。此时内存中数据库缓冲区的数据全部丢失,但物理数据库上的数据未受影响。解决方法:重启,一边回退未完成的事物,一边重做已提交的事物
      • 介质故障:误删,读写错误等,解决办法:重装备份副本
      • 数据库必须设置为归档模式才能将联机重做日志归档为归档日志.
      • 备份方法:
        • 逻辑备份:仅考虑数据库的结构与数据,不考虑地址,以二进制的方式存入,是一种临时转存,辅助性的备份方式,用于用户偶尔删除一行进行的回复,
        • 物理备份:
          • 冷备份(脱机备份):不对外提供服务
            • 归档模式:备份数据文件,控制文件,归档日志文件,数据可以通过归档日志和重做日志文件回复全部
            • 非归档模式:备份数据文件,控制文件,重做日志文件,数据只能恢复到备份状态
          • 热备份(联机备份):不中断正常服务
            • 步骤:
              • 备份初始化参数文件。
              • 使数据库工作在归档模式(修改参数文件或使用SQL语句)
              • 备份表空间
              • 强制日志切换以便所有的在线日志都被归档
              • 使用操作系统命令或拷贝工具,备份归档日志文件。
              • 备份控制文件。
      • 恢复方法:
        • 事务性故障的恢复
        • 数据库例程故障的恢复:
          • 出现两种错误:1、数据与日志不一致2、事务完成,但数据未记录
          • 重启例程后,将自动执行向前扫描日志,和向后回退日志
        • 介质故障恢复,需要手动完成,即通过联机日志文件和归档日志文件载入到系统
        • 完全恢复:将备份以后的数据也能恢复
        • 不完全恢复:只能恢复到备份时的数据,recover database until time ‘...’
        • 脱机恢复:关闭系统
        • 联机恢复:不关闭系统
      • 常见故障和恢复:
        • 数据文件丢失:在已装载的情况下,联机恢复数据文件
        • 控制文件不能启动:在已启动状态下,登陆worksheet重建
        • 日志文件故障:如有备份,直接覆盖。没有,在已装载情况下,用worksheet进行不完全恢复
      • RMAN:数据在装载的情况下进行恢复,恢复成功再打开数据
        • 单通道备份:run{ allocate channel c1 type disk; backup full tag 'dbfull' format 'd:\09122499\database%u_%s_%p' databse include current controlfile; sql 'alter system archive log current'; release channel c1; }
        • 双通道备份:run{ allocate channel c1 type disk; backup full tag 'dbfull' format 'd:\09122499\database%u_%s_%p' databse include current controlfile; sql 'alter system archive log current'; release channel c1; }
        • 双通道恢复:run{ allocate channel ch1 type disk; allocate channel ch2 type disk; restore database; recover database; sql 'alter database open'; release channel ch1; release channel ch2; }
        • 查询恢复日志  select * from v$recover_file;
        • 切换日志模式:alter system switch logfile;(进行两次)
    • 事务处理语句
      • DML:数据操纵语言,在commit,rollback,DDL/DCL执行时,退出SQLPLUS自动提交,表共享,行独占
      • DDL:数据定义语言,使用所涉及对象上的排他锁
      • DCL:数据控制语言
      • 创建标记:savepoint 名字
      • 回滚到指定标记:rollback to 名字
      • 锁保持直到commit 或rollback
    • 权限
      • 创建用户:create user username identified by password
      • 授予权限:grant 权限... to username,权限有
        • CREATE SESSION
        • CREATE TABLE
        • CREATE SEQUENCE
        • CREATE VIEW
        • CREATE PROCEDURE
      • 创建角色:create role rolename; grant 权限 to rolename ; grant rolename to username
      • 改变口令:alter user username identified by password
      • 授予对象权限:grant select/delete.... on emp to username/public 【with grant option】(即可转授,撤销时也是级联撤销)/【with admin option】(撤销时不级联撤销)
      • 撤销授权:revoke select/delete.... on emp to username 【cascade constraints】
      • 删除用户:drop user username
      
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值