Part 4 Data Directory & Control files

 

4.1 数据字典简介

数据字典存放数据库和数据库对象的信息,ORACLE依赖这些信息来管理和维ORACLE数据库,

 

 

 

 

 

 

 


ORACLE服务器在数据库创建时通过运行sql.bsq来自动生成这些基表.在任何数据库中基表永远是被最新创建的物件. ORACLE以简捷(最快)的方式操作数据字典的基表.所以基表中所存的数据就像天书一样,几乎没有什么人可以看懂,所以很少有人直接访问这些基表.取而代之的是是绝大多数用户包括数据库管理员(DBA)都是通过访问数据字典视图来得到数据库的相关信息.

数据字典视图是通过运行catalog.sql脚本档来产生的.$ORACLEHOME\rdbms\admin,如果用户是用图形接口创建数据库catalog.sql脚本档是自动运行的.

 

4.2 数据字典中所存的信息

* 数据库的逻辑结构和物理结构,如表空间和数据文件的信息

* 所有数据库对象定义的信息.这些对象包括:表、索引、视图、序列号、同义词、过程、函数、软件包和触发器等。

* 所有数据库对象的磁盘空间分配的信息,如对象所分配的磁盘空间和当前正在使用的磁盘空间.

* Oracle用户名.

* 每个用户所授予的权限和角色

* 完整性约束的信息

* 列的默认值

* 审计信息等

4.3 数据字典的操作和使用

通常只有ORACLE服务器可以修改数据字典中的数据。在ORACLE数据库运行期间,如果数据库的结构发生了变化,ORACLE服务器会及时地修改相应的数据字典以记录这种变化。

哪些SQL语句可以可以引起ORACLE服务器修改数据字典呢?

首先是DDL,如增加减少用户或者表空间。其次是DCL语句,如授予回收用户权限等。

另外,某些DML语句也会,如引起表的磁盘空间的扩展的insertupdate.

NOTE:

1.       任何人都不能直接使用DML语句修改数据字典。

2.       AUD$开头的表除外,这些表可以修改。

 

4.4 数据字典视图

数据字典视图分为3大类:

l       USER_*:用户自己创建的对象的信息。

l       ALL_*:用户自己创建的对象的信息再加上其他用户创建的对象但改用户有权限访问的信息。

l       DBA_*:有关整个数据库中对象的信息。

l       这里的*可以为TABLEINDEXESOBJECTS等。

NOTE:ALL and DBA_* 多出一列OWNER.

 

 

SQL> desc user_objects;

 名称                                      是否为空? 类型

 -----------------------------------------    --------     ----------------------------

 OBJECT_NAME                                   VARCHAR2(128)

 SUBOBJECT_NAME                               VARCHAR2(30)

 OBJECT_ID                                       NUMBER

 DATA_OBJECT_ID                                 NUMBER

 OBJECT_TYPE                                    VARCHAR2(19)

 CREATED                                         DATE

 LAST_DDL_TIME                                  DATE

 TIMESTAMP                                       VARCHAR2(19)

 STATUS                                           VARCHAR2(7)

 TEMPORARY                                      VARCHAR2(1)

 GENERATED                                      VARCHAR2(1)

 SECONDARY                                      VARCHAR2(1)

 

SQL> desc all_objects;

 名称                                      是否为空? 类型

 ----------------------------------------- -------- ----------------------------

 OWNER                                     NOT NULL VARCHAR2(30)

 OBJECT_NAME                               NOT NULL VARCHAR2(30)

 SUBOBJECT_NAME                                     VARCHAR2(30)

 OBJECT_ID                                 NOT NULL NUMBER

 DATA_OBJECT_ID                                     NUMBER

 OBJECT_TYPE                                        VARCHAR2(19)

 CREATED                                   NOT NULL DATE

 LAST_DDL_TIME                             NOT NULL DATE

 TIMESTAMP                                          VARCHAR2(19)

 STATUS                                             VARCHAR2(7)

 TEMPORARY                                          VARCHAR2(1)

 GENERATED                                          VARCHAR2(1)

 SECONDARY                                          VARCHAR2(1)

SQL> desc dba_objects;

 名称                                      是否为空? 类型

 ----------------------------------------- -------- ----------------------------

 OWNER                                              VARCHAR2(30)

 OBJECT_NAME                                        VARCHAR2(128)

 SUBOBJECT_NAME                                     VARCHAR2(30)

 OBJECT_ID                                          NUMBER

 DATA_OBJECT_ID                                     NUMBER

 OBJECT_TYPE                                        VARCHAR2(19)

 CREATED                                            DATE

 LAST_DDL_TIME                                      DATE

 TIMESTAMP                                          VARCHAR2(19)

 STATUS                                             VARCHAR2(7)

 TEMPORARY                                          VARCHAR2(1)

 GENERATED                                          VARCHAR2(1)

 SECONDARY                                          VARCHAR2(1)

 

所有数据字典视图都是静态视图。数据库发生变化,ORACLE服务器并不及时地刷新这些视图中的信息。只有当执行了OracleANALYZE命令之后,这些视图才会被刷新。比较新的Oracle也可以通过运行DBMS_STATS软件包来刷新这些视图。

 

数据字典视图包括:

l       对象的属主

l       用户所拥有的权限

l       对象的创建时间

l       对象存储参数的设置

l       对象存储空间的使用情况等

 

4.6 如何使用数据字典视图

查看自己帐号下面有哪些Table

SQL> select table_name from user_tables;

 

想知道哪些表可以用:

SQL> select table_name,owner from all_tables where owner not like '%SYS%';

 

一个用户可以用User_catalog看到他所有的表的名字和类型:

SQL> desc user_catalog;

 名称                                      是否为空? 类型

 ----------------------------------------- -------- ----------------------

 TABLE_NAME                                NOT NULL VARCHAR2(30)

 TABLE_TYPE                                         VARCHAR2(11)

 

NOTEuser_catalog有一个别名叫做cat

SQL> select * from cat;

 

4.7 动态性能表(视图)/数据库调优工具

动态性能表是一组虚表,在数据库运行期间,这些虚表存在内存中。Oracle服务器将当前数据库的活动记录在这组虚表中。他的信息来自于内存和控制文件,实时反应了数据库运行的状态。利用动态性能表可以得到如下信息:

l       会话活动的信息

l       对象打开或关闭的信息

l       对象在线或离线的信息等

NOTE: 动态性能表不允许进行DML操作

 

SQL> select * from dictionary; /// v$fixed_table

 

4.9 什么是控制文件及引入的目的

控制文件是一个比较小的二进制文件,它记载了物理数据库的当前状态,每一个控制文件只属于一个数据库,一个数据库有不止一个控制文件,但内容是一致的。

 

4.10 控制文件中所存的内容

* 数据库名字

* 数据库标识

* 数据库创建时间戳

* 联机重做日志文件的名字和准确位置。

* 当前日志的序列号

* 校验点信息

* 日志的历史信息

* 归档日志文件的准确位置和状态

* 数据文件的名字和准确位置

* 表空间的信息

* 备份的准确位置和状态

4.11 从控制文件中获取信息的数据字典

* v$archived

* v$archived_log

* v$backup

* v$database

* v$datafile

* v$log

* v$logfile

* v$loghist

* v$tablespace

* v$tempfile

 

4.13 怎样查看控制文件的配置

控制文件中全部记录的相关信息:v$controlfile_record_section

SQL> select type,record_size,records_total,records_used from v$controlfile_record_section;

 

TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED

---------------------------- ----------- ------------- ------------

DATABASE                             316             1            1

CKPT PROGRESS                       8180            11            0

REDO THREAD                          256             8            1

REDO LOG                              72            16            5

DATAFILE                             428           100           10

FILENAME                             524          2298           28

TABLESPACE                            68           100           12

TEMPORARY FILENAME                    56           100            3

RMAN CONFIGURATION                  1108            50            0

LOG HISTORY                           56           292          120

OFFLINE RANGE                        200           163            1

 

TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED

---------------------------- ----------- ------------- ------------

ARCHIVED LOG                         584            28            0

BACKUP SET                            40           409            0

BACKUP PIECE                         736           200            0

BACKUP DATAFILE                      116           282            0

BACKUP REDOLOG                        76           215            0

DATAFILE COPY                        660           223            0

BACKUP CORRUPTION                     44           371            0

COPY CORRUPTION                       40           409            0

DELETED OBJECT                        20           818            0

PROXY COPY                           852           249            0

BACKUP SPFILE                         36           454            0

 

TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED

---------------------------- ----------- ------------- ------------

DATABASE INCARNATION                  56           292            2

FLASHBACK LOG                         84          2048            0

RECOVERY DESTINATION                 180             1            1

INSTANCE SPACE RESERVATION            28          1055            1

REMOVABLE RECOVERY FILES              32          1000            0

RMAN STATUS                          116           141            0

THREAD INSTANCE NAME MAPPING          80             8            8

MTTR                                 100             8            1

DATAFILE HISTORY                     568            57            0

STANDBY DATABASE MATRIX              400            10           10

GUARANTEED RESTORE POINT             212          2048            0

 

TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED

---------------------------- ----------- ------------- ------------

RESTORE POINT                        212          2083            0

 

已选择34行。

 

查看控制文件的位置:

SQL> select value from v$parameter where name = 'control_files';

 

VALUE

D:\DISK3\CONTROL01.CTL, D:\DISK6\CONTROL02.CTL, D:\DISK9\CONTROL03.CTL

 

SQL> col name for a45

SQL> select * from v$controlfile;

 

STATUS  NAME                                          IS_ BLOCK_SIZE FILE_SIZE_BLKS

------- --------------------------------------------- --- ---------- --------------

        D:\DISK3\CONTROL01.CTL   NO       16384            430

        D:\DISK6\CONTROL02.CTL   NO       16384            430

        D:\DISK9\CONTROL03.CTL   NO       16384            430

 

4.14 怎样添加和移动控制文件

具体步骤如下:

(1)       利用数据字典v$controlfile 来获取现有控制文件名字。

(2)       正常关闭Oracle数据库,如shutdownshutdown immediate.

(3)       将新的控制文件名添加到参数文件的CONTROL_FILES参数中。

(4)       使用操作系统的复制命令将现控制文件复制到指定位置。

(5)       重新启动Oracle数据库

(6)       利用数据字典v$controlfile 来验证新的控制文件名字是否正确。

(7)       如果有误,重做上述操作,如果无误,删除无用的旧控制文件。

如果使用了服务器初始化参数文件(SPFILE),其步骤会略有不同,以下是一个已经安装的Oracle数据库中使用二进制初始化参数文件添加或移动控制文件的具体步骤:

(1)       利用数据字典v$controlfile 来获取现有控制文件名字。

(2)       修改SPFILE,使用alter system set control_file命令来改变控制文件的位置。

(3)       正常关闭数据库,如shutdown shutdown immediate.

(4)       使用打操作系统的复制命令将现控制文件复制到指定位置。

(5)       重新启动Oracle数据库。

(6)       利用数据字典v$controlfile 来验证新的控制文件名字是否正确。

(7)       如果有误,重新上述操作,如果无误,删除无用的旧控制文件。

4 就是一个在第二步使用oracle 中的alter system set control_file 命令

SQL> alter system set control_files

  2  'D:\Disk3\CONTROL01.CTL',

  3  'D:\Disk6\CONTROL02.CTL',

  4  'D:\Disk9\CONTROL03.CTL' scope=SPFILE;

提示:

 如果您读过其他oracle数据库管理的书,可能会发现多数的这类书上只有4步,即没有本书的第(1,6,7)步,从理论上讲,如果您的操作系统100%的正确,这样做也是可以的(不过还会留下一些垃圾文件),但在管理生产数据库时,建议您还是使用本书的方法来操作,千万不要过分自信。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/baoguo/articles/1552430.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值