kxbin
成功留给有准备的人
posts - 10,  comments - 35,  trackbacks - 0
1.oracle服务器包括一个oracle例程和一个oracle数据库。oracle例程是后台进程和内存结构的组合,只有启动例程后,才能访问数据库中的数据;oracle数据库包括数据库文件,提供实际的物理存储。
2.oracle安装会自动生成sys用户和system用户。sys用户是超级用户,具有最高权限,具有sysdba角色。有create database的权限,该用户默认密码是manager;system用户是管理操作员,具有sysoper角色,没有create database的权限,默认密码 change_on_install;对数据库的维护一般用system用户就可以了。
3.sql*plus常用命令:
 1)连接命令
    conn 用户名/密码@网络服务名 [as sysdba/sysoper],当用特权用户身份连接时,必须带上as sysdba或是as sysoper;
    disc[onnect],用于断开与当前数据库的连接;
    passw[ord],用于修改用户的密码,如果要想修改其他用户的密码,需要用sys/system登录;
    show user 显示当前用户名;
    exit 断开与数据库的连接,同时退出;
 2)文件操作命令
    start和@,运行sql脚本。例如:start d:\a.sql
    edit,编辑指定的sql脚本
    spool,将sql*plus屏幕上的内容输出到指定文件中去。例如 spool d:\aa.sql ,并输入 spool off。
 3)显示和设置环境变量
     linesize,设置显示行的宽度,默认是80个字符。例如:show linesize,set linesize 90;
     pagesize,设置每页显示的行数目,默认是14。
4.用户管理
 1)创建用户 create user xiaohuang identified by m123,xiaohuang用户名,m123密码,密码不能以数字开头。具有dba的权限才能创建用户;
 2)修改密码 如果给自己修改密码直接用 password 用户名;如果给别人修改密码 alter user xiaohuang indentified by m345,必须具有dba权限的人才能修改。
 3)删除用户,需具有drop user 权限,drop user 用户名 cascade。cascade级联删除,如果已经创建表则一并删除。
5.权限管理分为系统权限和对象权限
 1)系统权限,用户对数据库的相关权限(执行特定类型sql命令的权利,用于控制用户执行一个或一组数据库操作。常见系统权限包括create session 连接数据库;create view 创建视图;create procedure 创建过程、函数、包;create table 创建表);查询数据字典视图system_privilege_map,获得权限信息;收回系统权限 revoke create session from 用户名1,收回用户名1的连接数据库的权限;
 2)对象权限,用户对其他用户的数据对象操作的权限。常见对象权限包括alter修改表结构;delete删除数据;update修改数据;select 查询数据;insert插入数据;index在表上建立索引;references 引用;execute执行;
   对用户访问权限更加精细控制 grant update on emp(sal) to 用户名;回收权限revoke select on emp from 用户名
 3)对象权限的传递 grant select on emp to 用户名1 with grant option
 4)系统权限的传递 grant connect to 用户名1 with admin option
6.角色,一组权限的集合。分为预定义角色和自定义角色。建立权限的管理
 1)预定义角色分类:dba拥有全部权限,是系统最高权限,只有dba才可以创建数据库结构;resource只可以创建实体,不可以创建数据库结构;connect可以登录oracle,不可以创建实体,也不可以创建数据库结构。对于普通用户,授予connect,resource权限;对于dba管理用户,授予connect,resource,dba权限。
 2)自定义角色。建立角色(不验证),如果角色是公用的角色,可以采用不验证的方式建立角色 create role 角色名 not identified;建立角色(数据库验证),采用这样的方式,角色名、口令存放在数据库中。当激活该角色时,必须提供口令。在建立这种角色时,需要为其提供口令 create role 角色名 identified by shunping.
  3)自定义角色授权,当建立角色时,角色没有任何权限;给角色授予权限和给用户授予权限没有太多区别,但是要注意,系统权限的unlimited tablespace和对象权限的with grant option 选项不能授予角色的。grant select on scott.emp to 角色名;grant create session to 角色名 with admin option;
  4)把角色赋给用户 grant 角色名 to 用户名 with admin option;
  5)删除角色 drop role 角色名
7.profile管理用户口令
 1)profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default的profile。当建立用户没有指定profile选项,那oracle会将default分配给用户。
 2)账号锁定,指定该账户登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天)一般用dba的身份去执行该命令;例如指定tea这个用户最多只能尝试3次登录,锁定时间为2天。创建profile文件,create profile lock_account limit failed_login_attempts 3 password_lock_time 2; alter user tea profile lock_account.
 3)给账号解锁 alter user tea account unlock;
 4)终止口令
      为了让用户定期修改密码可以使用终止口令的指令来完成,同样这个命令也需要dba身份来操作。
      例如,给用户tea创建一个profile文件,要求改用户每隔10天要修改自家的登录密码,宽限期为2天。create profile myprofile limit password_left_time 10 password_grace_time 2;alter user tea profile myprofile。
 5)口令历史
     如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。
     例子:create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10。password_reuse_time //指定口令可重用时间即10天后就可以重用。
 6)删除profile drop profile password_history [cascade] 级联删除。
8.oracle数据类型
   1.char,定长,最大2000字符,汉字占2个字符。查询效率比varchar类型;插入的数据不足则自动补全;
   2.varchar,变长,最大4000字符;
   3.clob,字符型大对象,最大4G;
9.保存点
   1)savepoint aa 创建保存点;
   2)rollback to aa 回滚。如果已经提交commit,则保存点不存在,不能再使用回滚。rollback 回滚所有事务;
10.删除数据
   1)delete from student。删除所有记录,表结构还在,写日志,可以恢复的。速度慢;
   2)drop table student。删除表的结构和数据;
   3)truncate table student 删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快;
11.只读事务
    指只允许执行查询的操作,而不允许执行任何其他dml操作的事务。使用只读事务可以确保用户只能取得某时间点的数据 set transaction read only。
12.sys用户和system用户区别
  1)存储的数据的重要性不同。
     sys:所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行时至关重要,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba,sysdba,sysoper角色或权限,是oracle权限最高用户。
     system:用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。system用户拥有dba,sysdba角色或系统权限。
  2)权限的不同
     sys用户必须以as sysdba或assysoper形式登录,不能以normal方式登录数据库。
     system如果正常登录,它其实就是一个普通的dba用户,但是如果以as sysdba登录,其结果实际上它是作为sys用户登录的。
13.sysdba和sysoper权限区别
   系统权限        sysdba                                               sysoper
                       startup(启动数据库)                          startup 
                       Shutdown(关闭数据库)                      shutdown
                       alter database open/mount/backup     alter database open/mount/backup
                       改变字符集                                           不能
                       create database                                  不能创建数据库
    区别             drop database                                     不能删除数据库
                       create spfile                                        create spfile
                       alter database archivelog(归档日志)  alter database archivelog
                       alter database recover(恢复数据库)      只能完全恢复,不能执行不完全恢复
                       拥有 restricted session(会话限制)       拥有restricted session权限
                       可以让用户作为sys用户连接                    可以进行一些基本的操作,
                                                                                 但不能查看用户数据

                       登录之后用户是sys                                登录之后用户public
14.逻辑备份
    逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程,逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入到数据库的过程。物理备份即可在数据库open的状态下进行也可在关闭数据库进行,但是逻辑备份和恢复只能在open的状态下进行。
15.oracle导出,分为导出表,导出方案,导出数据库方式。
     导出使用exp命令来完成,该命令常用的选项有:
      userid:用于指定执行导出操作的用户名,口令,连接字符串;
      tables:用于指定执行导出操作的表;
      owner:用于指定执行导出操作的方案;
      full=y:用于指定执行导出操作的数据库;
      inctype:用于指定执行导出操作的增量类型
      rows:用于指定执行导出操作是否要导出表中的数据;rows=n只导出表的结构
      file:用于指定导出文件名。
16.导出表 需要切换到oracle安装目录下的bin目录
   1)导出自己的表 exp userid=scott/tiger@oracle tables=(emp) file=d:\e1.dmp
   2)导出其他方案的表。如果用户要导出其他方案的表,则需要dba的权限或是exp_full_database的权限,比如system就可以导出scott的表。exp userid=system/manager@oracle tables=(scott.emp) file=d:\e2.dmp
   3)导出表的结构   exp userid=scott/tiger@oracle tables=(emp) file=d:\e3.dmp rows=n
   4)使用直接导出方式 exp userid=scott/tiger@oracle tables=(emp) file=d:\e3.dmp direct=y,这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方式,这时需要数据库的字符集要与客户端字符集完全一致,否则会报错。
17.oracle导出方案,导出方案是指使用export工具导出一个方案或是多个方案中的所有对象(表,索引,约束...)和数据。并存到文件中
  1)导出自己的方案 exp scott/tiger@oracle owner=scott file=d:\scott.dmp
  2)导出其他方案 如果用户要导出其他方案,则需要dba的权限或是exp_full_database的权限,例如system用户就可以导出任何方案。 exp system/manager@oracle owner=(system,scott) file=d:\system.dmp。
18.oracle导出数据库
  1)导出数据库是是指利用export导出所有数据库中的对象及数据,要求改用户具有dba的权限或是exp_full_database权限。 exp userid=system/manager@oracle full=y inctype=complete file=x.dmp。注意:因为数据量大,所以好用的时间会较长。
19.导入,导入就是使用工具import将文件中的对象和数据导入到数据库中,但是导入要使用文件必须是export所到处的文件。与导出相似,导入也分为导入表,导入方案,导入数据库三种方式。
    userid:用于指定执行导入操作的用户名,口令,连接字符串;
    tables:用于指定执行导入操作的表;
    fromuser:用于指定源用户;
    touser:用于指定目标用户;
    file:用于指定导入文件名;
    full=y:用于指定执行导入整个文件
    inctype:用于指定执行导入操作的增量类型
    rows:指定是否到导入表行(数据)
    ignore:如果表存在,则只导入数据
20.oracle导入表
  1)导入自己表 imp userid=scott/tiger@oracle tables=(emp) file=d:\e.dmp
  2)导入表到其它用户 要求该用户具有dba的权限,或是imp_full_database
        imp userid=system/manager@oracle tables=(emp) file=d:/e.dmp touser=scott
   3)导入表的结构(只导入表的结构而不导入数据)
        imp userid=scott/tiger@oracle tables=(emp) file=d:/e.dmp rows=n
   4)导入数据 如果对象(如比表)已经存在可以只导入表的数据
        imp userid=scott/tiger@oracle tables=(emp) file=d:\e.dmp ignore=y
21.oracle导入方案
  1)导入自身的方案 imp userid=scott/tiger file=d:\e.dmp
  2)导入其它方案(要求该用户具有dba的权限或是imp_full_database权限)
       imp userid=system/manager file=d:\e.dmp fromuser=system touser=scott
22.oracle导入数据库,在默认情况下,当导入数据库时,会导入所有对象结构和数据。
    imp userid=system/manager@oracle full=y file=d:\e.dmp
23.数据字典和动态性能视图
  1)数据字典是oracle数据库中最重要的组成部分,它提供了数据的一些系统信息;记录了数据的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户,用户只能在数据字典上执行查询操作,而其维护和修改由系统自动完成。
  2)动态性能视图记载了例程启动后的相关信息。
  3)数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表,数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息。数据字典视图主要包括:user_xxx,all_xxx,dba_xxx三种类型。
  4)user_tables,用于显示当前用户所拥有的所有表,它只返回用户所对应方案的所有表。例如:select table_name from user_tables;
   5)all_tables,用于显示当前用户可以访问的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问的其他方案的表;
   6)dba_tables,它会显示所有方案拥有的数据库表,但是查询这种数据库字典视图,要求用户必须是dba角色或是有select_any_table系统权限。例如:当用system用户查询数据字典视图dba_tables时,会返回system,sys,scott...方案所对应的数据库表。
24.oracle用户名,权限,角色
    在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字段。通过查询
dba_users可以显示所有数据库用户的详细信息;通过查询数据字典视图dba_sys_privs,可以显示用户所拥有的系统权限;通过查询数据字典视图dba_tab_privs可以显示用户具有的对象权限;通过查询数据字典视图dba_col_privs可以显示用户具有的列权限;通过查询数据字典视图dba_role_privs可以显示用户所具有的角色;通过查询所有的角色dba_roles;查询数据库的表空间dba_tablespaces;简化权限的管理。
25.如何查询一个角色,包括的权限
    1)一个角色包含的系统权限 select * from dba_sys_privs where grantee='CONNECT' 或者 select * from role_sys_privs where role='CONNECT'
    2)一个角色包含的对象权限 select * from dba_tab_privs where grantee='CONNECT'
26.查询某个用户具有怎样的角色
    select * from dba_role_privs where grantee='用户名'
27.显示当前用户可以访问的所有数据字典视图
     select * from dict where comments like '%grant%';
28.显示当前数据库的全称
     select * from global_name;
29.
查询该用户拥有哪些索引

  select index_name from user_indexes;

  查询该用户拥有哪些视图

  select view_name from user_views;

  查询该用户拥有哪些数据库对象,对象包括表、视图、存储过程、触发器、包、索引、序列、JAVA文件等。

  select object_name from user_objects;

  主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。

  select * from user_users;
30.数据字典分为静态数据字典和动态数据字典。
  1)静态数据字典:主要是在用户访问数据字典时不会发生改变的。主要由表和视图组成;
  2)动态数据字典:是依赖数据库运行的性能的,反映数据运行的一些内在信息。oracle中这些动态性能视图都是以v$开头的视图;
  3)v$access

  该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。

  select * from v$access

  v$session

  该视图列出当前会话的详细信息。

  v$active_instance

  该视图主要描述当前数据库下的活动的实例的信息。依然可以使用select语句来观察该信息。

  v$context

  该视图列出当前会话的属性信息。比如命名空间、属性值等
31.oracle表空间和数据文件
   1)表空间是数据库的逻辑组成部分。从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库则存放在表空间中,表空间由一个或多个数据文件组成。
   2)oracle中逻辑结构包括表空间、段、区、块。数据库由表空间构成,而表空间由段构成,而段由区构成,而区又是由oracle块构成,提高数据库的效率。
   3)表空间用于从逻辑上组织数据库的数据。数据库逻辑上是由一个或多个表空间组成。通过表空间可以达到以下作用:控制数据库占有的磁盘空间;dba可以将不同数据类型部署到不同的位置,这样有利于提高I/O性能,同时利于备份和恢复等管理操作。
32.管理表空间和数据文件
   1)建立表空间
     建立表空间是使用create tablespace命令完成,需要注意是,一般情况下,建立表空间是特权用户或是dba来执行的,如果用其他用户来创建表空间,则用户必须要具有create tablespace 的系统权限。
   2)创建数据表空间
     在建立数据库后,为便于管理表,最好建立自己的表空间 create tablespace data01 datafile 'd:\test\data01.dbf' size 20m uniform size 128k。在执行完命令后,会建立名称为data01的表空间,并为该表空间建立名称为data01.dbf的数据文件,区的大小128k
    3)使用数据表空间
      create table mypart (deptno number(3),dname varchar2(14)) tablespace data01;
    4)改变表空间的状态
      当建立表空间时,表空间处于联机的(online)状态,此时该表空间是可以访问的,并且该表空间是可以读写的。但是在进行系统维护或是数据库维护时,可能需要改变表空间的状态,一般由特权用户或是dba来操作。
    5)使表空间脱机 alter tablespace users offline;
    6)使表空间联机 alter tablespace users online;
    7)只读表空间 当建立表空间时,表空间可以读写,如果不希望在该表空间上执行update,delete,insert操作,那么可以将表空间修改为只读 allter tablespace read only或者 read write 。
    8)知道表空间名,显示该表空间包括的所有表 select * from all_tables where tablespace_name='表空间名'
    9)知道表名,查看该表属于那个表空间 select * from user_tables where table_name='emp'。
    10)删除表空间 
      drop tablespace '表空间名' including contents and datafiles;
      说明:including contents表示删除表空间时,删除该空间的所有数据库对象,而datafiles 表示将数据库文件也删除。
33.oracle 扩展表空间的方式
   1)增加数据文件 alter tablespace data01 add datafile 'd:\test\data01.dbf' size 20m;
   2)增减数据文件的大小 alter database datafile 'd:\test\data01.dbf' resize 20m;注意是数据文件的大小不要超过500m;
   3)设置文件的自动增长 alter database datafile 'd:\test\data01.dbf' autoextend on next 10m maxsize 500m;
34.oracle移动数据文件
    如果数据文件所在的磁盘损坏时,该数据文件将不能再使用,为了能够重新使用,需要将这些文件的副本移动到其它的磁盘,然后恢复。下面以移动数据文件sp01.dbf为例来说明:
   1)确定数据文件所在的表空间 select tablespace_name from dba_data_files where file_name='d:\test\sp01.dbf';
   2)使表空间脱机 alter tablespace sp01 offline;
   3)使用命令移动数据文件到指定的目标位置 host move d:\test\sp01.dbf c:\test\sp01.dbf
   4)执行alter tablespace 命令
     在物理上移动了数据后,还必须执行alter tablespace 命令对数据库文件进行逻辑修改。 alter tablespace sp02 rename datafile 'd:\test\sp01.dbf' to 'c:\test\sp01.dbf';
   5)使得表空间联机
     在移动了数据文件后,为了使用户可以访问该表空间,必须将其转变为online状态 alter tablespace data01 online;
35.索引
   用于加速数据存取的数据对象。合理的使用索引可以大大降低I/O次数,从而提高数据访问性能。
36.显示角色信息
 1)显示所有角色信息 select * from dba_roles;
 2)显示角色所具有的系统权限 select * from role_sys_privs;
 3)显示角色具有的对象权限 select * from dba_tab_privs;
 4)显示用户具有的角色及默认角色。当以用户的身份连接到数据库时,oracle会自动的激活默认的角色,通过查询数据字典视图dba_role_privs可以显示某个用户具有的所有角色及当前默认角色。
37.oracle精细访问控制
  是指用户可以使用函数、策略实现更加细微的安全访问控制。如果使用精细访问控制,则当在客户端发出sql语句(select,insert,update,delete),oracle会自动在sql语句后追加谓词(where 子句),并执行新的sql语句。通过这样的控制,可以使得不同的数据库用户在访问相同表时,返回不同的数据信息。
38.pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展。pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。
 1)作用。提高应用程序的运行性能;模块化得设计思想;减少网络传输量;提高安全性;不足:移植性不好;
39.执行简单的pl/sql块
 set serveroutput on -- 打开输出选项
 begin
    dbms_output.put_line('hello'); -- 是oracle所提供的包
 end;
40.pl/sql示例
 declare
    v_ename varchar2(5); -- 定义字符串变量
 begin  
    select ename into v_ename from emp where empno=&no;
    dbms_output.put_line('');
 end;
  -- 表示要接收从控制台输入的变量
41.过程
  过程用于执行特定的操作,既可以制定输入参数,也可以制定输出参数。通过在过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行部分的数据传递到应用环境。在sqlplus中可以使用create procedure命令建立过程。
42. 函数
  函数用于返回特定的数据,当建立函数时,在函数头部必须包含return 子句,而在函数体内必须包含return语句返回的数据。create function来建立函数。
43. 包
 包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。
 1)可以使用 create package 命令来创建包。
     create package sp_package is
            procedure update_sal(name varchar2,newsal number);
            function annual_income(name varchar2) return number;
     end;
 2)建立包体可以使用create package body
44.触发器
 是指隐含的执行的存储过程。当定义触发器时,必须要指定触发的时间和触发的操作。常用的触发事件包括insert,update,delete语句,而触发操作实际就是一个pl/sql块。可以使用create trigger来建立触发器。

posted on 2012-08-06 20:56 kxbin 阅读(317) 评论(0)  编辑  收藏 所属分类: ORACLEMYSQL

只有注册用户登录后才能发表评论。


网站导航:
 
你恨一个人是因为你爱他;你喜欢一个人,是因为他身上有你没有的;你讨厌一个人是因为他身上有你有的东西;你经常在别人面前批评某人,其实潜意识中是想接近他。

<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(5)

随笔档案

文章分类

文章档案

相册

收藏夹

J2EE

java技术网站

Linux

平时常去的网站

数据库

电影网站

网站设计

搜索

  •  

最新评论

阅读排行榜

评论排行榜