oracle基础教程(第四天)数据库管理

期望目标
1.了解oracle管理员的基本职责
2.掌握备份和恢复数据库/表的方法
3.理解表空间,数据字典和性能视图

数据库管理员
每个oracle数据库应该至少有一名数据库管理员(dba),对于一个小的数据库,一个dba就够了,但是对于一个大的数据库可能需要多个dba分别担负不同的管理职责。那么一个数据库管理员的主要工作是什么呢?
职责:
(1)安装和升级oracle数据库
(2)建库,表空间,表,视图,索引。。。
(3)制定并实施备份与恢复计划
(4)数据库权限管理, 调优,故障排除
(5)对于高级dba,要求能参与项目开发, 会编写sql语句、存储过程、触发器、规则、约束、包
管理数据库的用户主要是sys和system
在前面我们已经提到这两个用户,区别主要是:
(1)最主要的区别,存储的数据的重要性不同
sys:所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有 dba,sysdba,sysoper角色或权限,是oracle权限最高的用户。
system:用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。system用户拥有dba,sysdba角色或系统权限。
(2)其次的区别,权限的不同
sys用户必须以as sysdba或as sysoper形式登录。不能以normal方式登录数据库。
system如果正常登录,它其实就是一个普通的dba用户,但是如果以as sysdba登录,其结果实际上它是作为sys用户登录的,从登录信息上面我们可以看出来。
sysdba和sysoper权限区别图
sysdba
sysoper
startup(启动数据库)
startup
shutdown(关闭数据库)
shutdown
alter database open/mount/backup
alter database open/mount/backup
改变字符集
none
create database(创建数据库)
none,不能创建数据库
drop database(删除数据库) none
create spfile
create spfile
alter database archivelog(归档日志)
alter database archivelog(归档日志)
alter database recover(恢复数据库)
只能完全恢复,不能执行不完全恢复
拥有restnicted session(会话限制)权限
拥有restnicted session(会话限制)权限
可以让用户作为sys用户连接
可以进行一些基本的操作,但不能查看用户数据
登录之后用户是sys
登录之后用户是public
dba权限的用户
dba用户是指具有dba角色的数据库用户。特权用户可以执行启动实例,关闭实例等特殊操作,而dba用户只有在启动数据库后才能执行各种管理工作。
管理初始化参数
初始化参数用于设计实例或是数据库的特征。oracle9i提供了200多个初始化参数,并且每个初始化参数都有默认值。
显示初始化参数
(1)show parameter命令
如何修改参数
需要说明的如果你希望修改这些初始化的参数,可以到D:\oracle\admin\myoral\pfile\init.ora文件中去修改比如要修改实例的名字。

数据库(表)的逻辑备份与恢复    --    导出
数据库的备份分为 逻辑备份物理备份
逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程,逻辑恢复是指当数据库对象被误操作而损坏后使用工具import利用备份的文件把数据对象导入数据库的过程。物理备份既可在数据库open的状态下进行,也可以在关闭数据库后进行,但是逻辑备份和恢复只能在open的状态下进行。
导出:
导出具体的分为:导出表,导出方案,导出数据库三种方式:
导出使用exp命令来完成,该命令常用的选项有:
userid:用于指定执行导出操作的用户名,口令,连接字符串。
tables:用于指定执行导出操作的表。
owner:用于指定执行导出操作的方案。
full=y:用于指定执行导出操作的数据库。
inctype:用于指定执行导出操作的增量类型。
rows:用于指定执行导出操作是否要导出表中的数据。
file:用于指定导出文件名。
导出表:
(1)导出自己的表
exp userid=scott/ root123@orcl tables=(emp) file=d:\e1.dmp
(2)导出其他方案的表
如果用户要导出其他方案的表,则需要dba的权限或是exp_full_database的权限,比如system就可以导出scott的表
exp userid=system/ manager@orcl tables(scott.emp) file=e2.dmp
特别说明:
在导入和导出的时候,要到oracle的主目录下的bin目录下。
(3)导出表的结构
exp userid=scott/ root123@orcl tables=(emp) file=d:\e3.dmp rows=n
(4)使用直接导出的方式
exp userid=scott/ root123@orcl  table=(emp) file=d:\e4.dmp direct=y
这种方式比默认的常规方式要快,当数据量大时,可以考虑使用这样的方法, 这时需要数据库的字符集要与客户端字符集完全一致,否则会报错。。。
导出方案:
导出方案是指使用export工具导出一个方案或是多个方案中的所有对象(表,索引,约束)和数据,并存放到文件中。
(1)导出自己的方案
exp scott/ root123@orcl owner=scott file=d:\scott.dmp
(2)导出其他方案
exp_full_database的权限,例如system用户就可以导出任何方案
exp system/ manager@orcl owner(system,scott) file=d:\system.dmp
导出数据库
导出数据库是利用export导出所有数据库中的对象及数据,要求该用户具有dba的权限或是exp_full_database权限。
exp userid=system/ manager@orcl full=y inctype=complete file=d:\x.dmp

数据库(表)的逻辑备份与恢复    ---    导入
       导入就是使用工具import将文件中的对象和数据导入到数据库中,但是导入要使用的文件必须是export所导出的文件。与导出相似,导入也分为导入表,导入方案,导入数据库三种方式。
imp常用的选项有:
userid:用于指定执行导入操作的用户名,口令,连接字符串。
tables:用于指定执行导入操作的表。
formuser:用于指定源用户
touser:用于指定目标用户
file:用于指定导入文件名
full=y:用于指定执行导入操作的数据库。
inctype:用于指定执行导入操作的增量类型。
rows:指定是否要导入表行(数据)
ignore:如果表存在,则只导入数据
导入表:
(1)导入自己的表
imp userid=scott/ root123@orcl table=(emp) file=d:xx.dmp
(2)导入表到其他用户
要求该用户具有dba权限,或是imp_ful_database
imp userid=system/manager @orcl table(emp) file=d:\xx.dmp touser=scott
(3)导入表的结构
只导入表的结构而不导入数据
imp userid=scott/ root123@orcl tables=(emp) file=d:\xxx.dmp rows=n
(4)导入数据
如果对象(如比表)已经存在可以只导入表的数据
imp userid=scott/ root123@orcl tables(emp) file=d:\xxx.dmp ignore=y
导入方案
导入方案是指使用import工具将文件中的对象和数据导入到一个或是多个方案中。如果要导入其他方案,要求该用户具有dba的权限,或是imp_full_database
(1)导入自身的方案
imp userid=scott/root123 file=d:xxx.dmp
(2)导入其他方案
要求改用户具有dba权限
imp userid=system/manager file=d:\xxx.dmp fromuser=system touser=scott
导入数据库
在默认情况下,当导入数据库时,会导入所有对象结构和数据,案例如下:
imp userid=system/manager full=y file=d:\xxx.dmp

数据字典和动态性能视图
数据字典 是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息。
动态性能视图 记载了例程启动后的相关信息。
user_tables:
用于显示当前用户所拥有的所有表,它只返回用户所对应方案的所有表。
比如:select table_name from user_tables;
all_tables:
用于显示当前用户可以访问到的所有表,它不仅会返回当前方案的所有表,还会返回当前用户可以访问的其他方案的所有表。
比如:select table_name from all_tables;
dba_tables:
它会显示所有方案拥有的数据库表。但是查询这个数据库字段视图,要求用户必须是dba角色或拥有select any table系统权限。例如:当system用户查询dba_tables时,会返回sys,system,scott等所有方案对应的数据库表。
用户名,权限,角色
在创建用户时,oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字典中。
通过查询 dba_users可以显示所有数据库用户的详细信息。
通过查询数据字典视图 dba_sys_privs,可以显示用户所具有的系统权限。
通过查询数据字典视图 dba_tab_privs,可以显示用户具有的对象权限。
通过查询数据字典视图 dba_col_privs可以显示用户具有的列权限。
通过查询数据库字典视图 dba_role_privs可以显示用户所具有的角色。
如何查询一个角色包括的权限?
a.一个角色包含的系统权限
select * from dba_sys_privs where grantee='CONNECT';
另外也可以这样查看
select * from role_sys_privs where role='CONNECT';
b.一个角色包含的对象权限
select * from dba_tab_privs where grantee='CONNECT';
如何查看某个用户,具有什么样的角色?
select * from dba_role_privs where grantee='SCOTT';
显示当前用户可以访问的所有数据字典视图
select * from dict where comments like '%grant%';
显示当前数据库的全称
select * from global_name;
其他说明:
数据字典记录有oracle数据库的所有系统信息,通过查询数据字典可以取得以下系统信息:比如
(1)对象定义情况
(2)对象占用空间大小
(3)列信息
(4)约束信息

动态性能视图
管理表空间和数据文件
表空间是数据库的逻辑组成部分。从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或是多个数据文件组成。
数据库的逻辑结构
oracle中逻辑结构包括表空间、段、区和块。
说明一下数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由oracle块构成的这样一种结构,可以提高数据库的效率。
表空间用于从逻辑上组织数据库的数据。数据库逻辑上是由一个或是多个表空间组成的。通过 表空间可以达到以下两点用处:
(1)控制数据库占用的磁盘空间
(2)dba可以将不同数据类型部署到不同的位置,这样有利于提高i/o性能,同时利于备份和恢复等管理操作。
建立表空间
建立表空间是使用create tablespace命令完成的,需要注意的是,一般情况下,建立表空间是特权用户或是dba来执行的,如果用其它用户来创建表空间,则用户必须要具有create tablespace的系统权限。
建立数据表空间
在建立数据库后,为了便于管理表,最好建立自己的表空间。
create tablespace sp001 datafile 'd:\sp001.dbf' size 20m uniform size 128k
说明:执行完上述命令后,会建立名称为sp001的表空间,并为该表空间建立名称为sp001.bdf的数据文件,区的大小为128k
使用数据表空间
create table mypart(deptno number(4),dname varchar2(14),loc varchar2(13)) tablespace sp001;
改变表空间的状态
当建立表空间时,表空间处于联机(online)状态,此时该表空间是可以访问的,并且该表空间时可以读写的,即可以查询该表空间的数据,而且还可以在表空间执行各种语句。但是在进行系统维护或是数据维护时,可能需要改变表空间的状态。一般情况下,由特权用户或是dba来操作。
(1)使表空间脱机
alter tablespace 表空间名 offline;
(2)使表空间联机
alter tablespace 表空间吗 online;
(3)只读表空间
当建立表空间时,表空间可以读写,如果不希望在该表空间上执行update,delete,insert操作,那么可以将表空间修改为只读。alter tablespace 表空间名 read only;
更改成可读可写为:alter tablespace 表空间名 read write;
(4)知道表空间名,显示该表空间包括的所有表
select * from all_tables where tablespace_name='表空间名';
(5)知道表名,查看该表属于哪个表空间
select tablespace_name,table_name from user_tables where table_name ='emp';
删除表空间
一般情况下,由特权用户或是dba来操作,如果是其他用户操作,那么要求用户具有drop tablespace系统权限。
drop tablespace '表空间' including contents and datafiles;
说明:including contents表示删除表空间时,删除该空间的所有数据库对象,而datafiles表示将数据库文件也删除。
扩展表空间
表空间是由数据文件组成的,表空间的大小实际就是数据文件相加后的大小。那么我们可以想象,假定表    employee在data01表空间上,初始大小为2M,当数据满2M时再向employee表插入数据,这样就会显示空间不足的错误。
扩展表空间,为其增加更多的存储空间有三种方法:
(1)增加数据文件
SQL> alter tablespace sp001 add datafile 'd:\sp002.dbf' size 300m;
(2)增加数据文件的大小
SQL> alter database datafile 'd:\SP001.dbf' resize 400m;
(3)设置文件的自动增长
SQL> alter database datafile 'd:\sp001.dbf' autoextend on next 10m maxsize 500m;
移动数据文件
有时,如果你的数据文件所在的磁盘损坏时,该数据将不能再使用,为了能够重新使用,需要将这些文件的副本转移到其它的磁盘,然后恢复。
下面以移动数据文件sp001.dbf为例来说明:
1)确定数据文件所在的表空间
select tablespace_name from dba_data_files where file_name='d:\sp001.dbf';
2)使表空间脱机
确保数据文件的一致性,将表空间转变为offline的状态
alter tablespace sp01 offline;
3)使用命令移动数据文件到指定的目标位置
host move d:\sp001.dbf f:\sp001.dbf
4)执行alter tablespace命令
在物理上移动了数据后,还必须执行alter tablespace对数据库文件进行逻辑修改:
alter tablespace sp001 rename datafile 'd:\sp001.dbf' to 'f:\sp001.dbf';
5)使表空间联机
在移动了数据文件后,为了使用户可以访问该表空间,必须将其转变为online状态:
alter tablespace sp001 online;
显示表空间信息
查询数据字典视图dba_tablespaces,显示表空间的信息
select tablespaces_name from dba_tablespaces;
显示表空间所包含的数据文件
查询数据字典视图dba_data_files,可显示表空间中包含哪些数据文件,如下:
select file_name,bytes from dba_data_files where tablespaces_name = '表空间名':
表空间小结
1)了解表空间和数据文件的作用
2)掌握常用表空间,undo表空间和临时表空间的建立方法
3)了解表空间的各个状态(online,offline,read write,read only)的作用,及如何改变表空间的状态的方法。
4)了解移动数据文件的原因,及使用alter tablespace命令移动数据文件的方法。
其他表空间
除了最常用的数据表空间外,还有其他类型表空间:
(1)索引表空间(海量数据)
(2)undo表空间
(3)临时表空间
(4)非标准块的表空间
这几种表空间,自己参考书籍研究。

 

你可能感兴趣的:(oracle基础教程(第四天)数据库管理)