一、ORACLE的日志文件
重做日志文件(redolog file):主要记录了数据库操作的过程。重做日志文件可将日志从备份还原的数据库上再执行一次以达到数据库的最新状态。
归档日志文件(archivelog file):Oracle可以将联机日志文件保存到多个不同的位置,将联机日志转换为归档日志的过程称之为归档。相应的日志被称为归档日志文件。
(1)非归档模式下:
所有的日志文件都写在重做日志文件中,如果重做日志文件写满了,就把前面的日志文件覆盖了。如:a、b、c三个日志文件,a满了写b,b满了写c,c满了再覆盖掉a原来的内容,重新写a。
(2)归档模式下:
重做日志文件全部写满后,就把第一个重做日志文件写入归档日志文件中,再把日志写到第一个重做日志文件中,使用归档日志的方式就可以方便以后做回复的操作。
(3)查询日志文件组和日志文件
查询日志文件组:Select GROUP#,MEMBER,STATUS from v$LOG ;
查询日志文件:Select GROUP#,MEMBER from v$LOGFILE ;
二、ORACLE表空间的管理
查询所有表空间情况:SELECT NAME FROM V$DATAFILE;
(1)查看用户OTDRUSER的默认表空间:
select DEFAULT_TABLESPACE,USERNAME from DBA_USERS WHERE USERNAME ='OTDRUSER';
(2)查看当前用户下拥有的表空间
select tablespace_name from user_tablespaces;
(3)创建大文件表空间——创建的表空间数据文件大小是2GB
CREATE BIGFILE TABLESPACE tablespace_name DATAFILE filename SIZE size;
(4)临时表空间的建立
①临时表空间定义
是指数据库中存储数据,当内存不够时写入的空间,这个空间并不像一般的表空间,当执行完对数据库的操作后,该空间的内容自动清空。
CREATE TEMPORARYTABLESPACE tablespace_name TEMPFILE 'filename.dbf' SIZE 10M;
②查询临时表空间
SELECT TABLESPACE_NAME FROM DBA_TEMP_FILES ;
③查询用户所使用的临时表空间:
Select username,default_tablespace,temporary_tablespace from dba_users;
④查询临时表空间大小以及使用率:
Select tablespace_name, bytes, user_bytes,user_bytes/bytes,file_name from dba_temp_files;
⑤查询临时文件是否在线:
Select name,status from v$tempfile;
⑥修改临时文件在线(离线)状态:
Alter database tempfile'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP02.DBF' online(offline);
⑦增加临时文件大小(增加原文件):
Alter database tempfile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF' resize 100m;
⑧通过增加新的临时文件,来扩大临时表空间:
Alter tablespace temp add tempfile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP02.DBF' size 4000m;
⑨删除临时文件、删除临时表空间:
Alter database tempfile'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP02.DBF' drop;
Drop tablespace temp including contents and datafiles;
⑩将临时文件设置为自动扩展:
Alter database tempfile'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF' auto extend on next 50M maxsize unlimited;
⑪关闭(启动)临时文件的自动增长:
Alter database tempfile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP.DBF' auto extend off(on);
三、ORACLE用户权限与角色权限
(1)查询角色
select granted_role,default_role from dba_role_privs where grantee = 'xxxxuser';
(2)创建角色
Create Role Xxxxrole Not Identified;
Grant Create Session To Xxxxrole;
(3)设置角色——把角色授予用户才能使角色生效
Grant Xxxxrole To xxxxuser;
一个用户可以同时拥有多个角色,所以可以设置哪些角色生效哪些角色不生效。
SET ROLE ALL —— 设置用户的所有角色都生效
SET ROLE Xxxxrole—— 设置角色Otdrrole在当前用户上生效。
SET ROLE ALL EXCEPT Xxxxrole—— 设置角色Otdrrole在当前用户上失效。
(4)删除角色
DROP ROLE Xxxxrole;
四、ORACLE数据库实例名与服务名的区别
(1)实例名(instance_name)
数据库实例名(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。例如,要去连接一个数据库服务器,就必须知道其数据库实例名。
查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance_name
方法三:在参数文件中查询。
在xxxxuser用户下执行查询:数据库实例名为ORCL
(2)服务名(Service_name)
该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即Service name 不是必须与SID一样。如果数据库有域名,则数据库服务名就是全局数据库名,否则,数据库服务名与数据库名相同。
查询当前数据库服务名
方法一:select value from v$parameter where name = 'service_name';
方法二:show parameter service_name
方法三:select instance_name from v$instance;
在xxxxuser用户下执行查询:数据库服务名为orcl.168.0.120
五、索引
从Oracle索引的特征上,我们可以简单的分为Unique Indexes and NonuniqueIndexes,即唯一索引和非唯一索引。
1、唯一索引
唯一索引确保被索引的字段或多个联合字段在表中绝对不会有重复值;
通常,我们在建表时,创建唯一约束或者主键约束,再或者建表以后给表添加唯一、主键约束时,Oracle会自动在主键、唯一约束的字段上创建唯一索引,并且索引的名字跟约束的名字一样。
就唯一索引存储而言,每一个rowid会唯一对应表中的一条记录,在索引的叶子块儿中,数据按照索引字段升序存放。
2、非唯一索引
允许被索引的字段有重复值。并且,非唯一索引的存放有别于唯一索引,它的数据在索引叶子块儿中是按照索引字段和rowid进行升序存放的。