Chinaunix首页 | 论坛 | 博客
  • 博客访问: 426049
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类: Oracle

2008-06-17 22:14:05

数据库系统

1. 系统的启动和关闭

 

1)系统的启动

启动网络服务:

$ lsnrctl start

启动实例:

$ sqlplus " / as sysdba"

SQL> startup

2)系统的关闭

关闭实例:

$ sqlplus " / as sysdba"

SQL> shutdown immediate

如果实例无法正常关闭,可以使用以下方式:

SQL> shutdown abort

关闭网络服务:

$ lsnrctl stop

 

2. 系统运行日志文件的检查

 

ORACLE系统的运行日志文件为alert{instance_name}.log,可以通过配置参数BACKGROUND_DUMP_DEST,改变它的存放位置。这个运行日志文件,需要每天检查、定期备份并手工清除其内容。

在配置参数BACKGROUND_DUMP_DESTUSER_DUMP_DEST指定目录下,也存放着后台进程和用户的跟踪文件。这些文件也可以帮助管理员发现系统存在的故障,需要定期备份后清除其内容。此外,管理员也需要定期检查、清除网络日志文件。网络日志文件的位置,可以使用以下命令查看:

$ lsnrctl show logfile

 

3. 系统运行状况检查

 

管理员要随时关注数据库系统的运行。对ORACLE系统,管理员可以从实例和数据库状态、用户连接、磁盘空间使用等多个方面,检查系统的运行状况。

查看系统版本:

$ sqlplus -v

SQL> select * from v$version ;

查看实例、数据库状态:

$ ps -ef | grep {user_name}

$ ipcs -a | grep {user_name}

SQL> select status, logins, shutdown_pending, active_state from v$instance ;

SQL> select open_mode, guard_status from v$database ;

查看数据库属性:

SQL> select * from database_properties ;

查看网络状态:

$ lsnrctl status

$ lsnrctl services

查看系统内存使用:

SQL> show sga ;

查看系统配置:

SQL> show parameter {parameter_name} ;

查看控制文件的使用:

SQL> select * from v$controlfile ;

查看当前的用户连接:

select username,sid,serial# from v$session ;

查看数据库日志的定义和空间使用:

SQL> archive log list ;

SQL> select log_mode from v$database ;

SQL> select * from v$logfile ;

SQL> select group#, bytes, archived, status from v$log ;

显示表空间、数据文件定义

SQL> select * from v$tablespace ;

SQL> select name, status, bytes/(1024*1024) as "space(M)" from v$datafile ;

SQL> select name, status, bytes/(1024*1024) as "space(M)" from v$tempfile ;

查看表空间、数据文件的空间使用:

SQL> select tablespace_name, sum(bytes)/(1024*1024) as "free_space(M)" from dba_free_space group by tablespace_name

SQL> select file_name, sum(a.bytes)/(1024*1024) as "free_space(M)" from dba_free_space a, dba_data_files b where a.file_id = b.file_id group by file_name ;

查看表、索引的空间使用:

SQL> select sum(bytes)/(1024*1024) as "size(M)" from dba_segments where segment_name = upper('&table_name') ;

SQL> select sum(bytes)/(1024*1024) as "size(M)" from dba_segments where segment_name = upper('&index_name') ;

查看系统中不正常的对象:

SQL> select owner, object_name, object_type from dba_objects where status = 'INVALID' ;

 

4. 系统性能状况分析

 

ORACLE系统提供了许多工具,可以用来收集和显示系统的各种运行数据,从而帮助管理员确定系统性能瓶颈。管理员可以使用的工具包括以下这些:

1)数据字典及动态性能视图。数据字典视图中存放表、索引的数据特性和磁盘空间使用,如:dba_tablesdba_tab_columnsdba_indexesindex_stats等;动态性能视图记录从系统启动以来的所有运行统计,如:v$statnamev$sysstatv$mystatv$sesstatv$sgav$sgastat等。通过对这些视图的查看,可以发现系统所存在的性能问题。

2STATSPACK工具、UTLBSTATUTLESTAT工具。这两个工具可以用来收集一段时间内系统的运行状态数据,并将结果汇总后供管理员进行分析。

3)进程等待事件。通过查看系统中所有用户会话对各种系统资源的等待,决定那些资源是系统的运行瓶颈。有关会话的资源等待信息,记录在字典视图中,如:v$event_namev$system_namev$session_eventv$session_wait

 

5. 系统配置的改变

 

ORACLE的系统配置,有两种存放方式:二进制方式和文本方式。不同的存放方式需要不同的修改命令。

1)二进制方式。存放在配置文件spfile{instance_name}.ora中,使用下列命令进行配置参数的改变:

alter system set {parameter_name} = {parameter_value} scope = spfile ;

2)文本方式。存放在配置文件init{instance_name}.ora中,可以直接使用编辑命令进行修改。

ORACLE的网络配置,存放在文件:listerner.orasqlnet.oratnsnames.ora文件中,可以使用netca工具,也可以直接使用编辑命令进行修改。

 

6. 数据库日志维护

 

ORALCE系统支持日志的归档和非归档两种模式,确省情况下,数据库处于非归档日志模式。使用下列命令,改变数据库日志模式为归档模式:

SQL> alter database archivelog ;

在非归档模式下,管理员不需要维护数据库日志;在归档模式下,管理员需要归档数据库日志,可以采用两种归档方式:自动归档和手工归档。

1. 自动归档

设置配置参数LOG_ARCHIVE_DESTtrue。系统启动后台进程,自动将被写满日志文件进行归档备份。

2. 手工归档

设置配置参数LOG_ARCHIVE_DESTfalse。管理员使用下列命令,定期将已写满日志文件进行归档备份:

SQL> archive log all;

 

7. 备份和恢复处理

 

管理员按照规划、定期地备份数据库。备份信息越完整,在系统故障时就越容易恢复。对ORACLE系统,除数据库备份之外,其备份还可以包括:运行环境备份、数据库对象的SQL语句定义备份。

1)实例运行环境备份

对实例的运行环境,需要备份:系统配置、网络配置、操作系统环境设置、密码文件、控制文件、磁盘空间的使用。

$ cp spfile{instance_name}.ora {output_file}

$ cp listener.ora {output_file}

$ cp .profile {output_file}

$ cp orapw{instance_name} {output_file}

SQL> alter database backup controlfile to trace ;

SQL> select * from v$controlfile ;

SQL> select * from v$log ;

SQL> select * from v$tablespace ;

SQL> select ts#,file#,name from v$datafile ;

SQL> select ts#,file#,name from v$tempfile ;

2)用户创建数据库对象的SQL语句定义备份

ORACLE系统中,要获取数据库对象的SQL语句定义,可以使用dbms_metadata函数包。下面所列是针对表的处理,用户可以采用类似的方法,获取其它数据库对象的SQL语句定义。

返回单个表的SQL语句定义:

SQL> select dbms_metadata.get_ddl('TABLE','{table_name}') from dual ;

返回系统中所有表的SQL语句定义:

SQL> select dbms_metadata.get_ddl('TABLE', table_name) from dba_tables ;

3)数据库备份

管理员在备份数据库前,可以使用dbv工具,检查数据库结构的完整性。

检查数据库结构是否正确。

$ dbv file={file_name} blocksize={size_value}

根据需要,选用不同的备份方式。这里只列出数据库的手工备份方式。

4ORACLE数据库的脱机备份

ORACLE数据库的脱机备份,可以按照以下操作步骤进行:

正常关闭数据库系统

SQL> shutdown immediate ;

使用操作系统命令,对数据库的所有数据文件、日志文件、控制文件,进行拷贝保存。

$ cp {file_name} {backup_file}

5ORACLE数据库的联机备份

ORACLE数据库的联机备份,可以按照以下操作步骤进行:

使要备份表空间处于备份模式。

SQL> alter tablespace {tablespace_name} begin backup

使用操作系统命令,拷贝组成表空间的所有数据文件。

$ cp {file_name} {backup_file}

结束表空间的备份模式。

SQL> alter tablespace {tablespace_name} end backup

按照以上步骤,备份数据库的所有数据表空间。

备份控制文件,归档当前日志文件。

SQL> alter system archive log current

SQL> alter database backup controlfile to ‘{backup_file_name}’

6)数据库恢复

管理员在恢复数据库前,可以使用dbv工具,检查备份是否可用,然后根据数据库的归档日志模式,结合系统故障,决定要恢复方式。

7)非归档日志模式数据库的恢复

对数据库的非归档日志模式,只能使用脱机备份进行恢复。

关闭数据库。

SQL> shutdown abort;

使用备份,恢复所有的数据库文件。

$ cp {backup_file} {file_name}

重新启动数据库。

SQL> connect / as sysdba

SQL> startup

8)归档日志模式数据库的恢复

对数据库的归档日志模式,可以使用脱机或者联机备份进行恢复。

关闭数据库。

SQL> shutdown abort

使用备份,恢复所有的数据库文件。

$ cp {backup_file} {file_name}

启动实例,MOUNT数据库。

SQL> connect / as sysdba;

SQL> startup mount

使用日志,恢复数据库到故障发生时刻。

SQL> recover database;

打开数据库。

SQL> alter database open;

 

8. 数据库对象统计信息的维护

 

确定何时、对那些表和索引执行何种程度的统计信息收集,是管理员的工作职责。在ORACLE系统中,可以使用analyze命令,也可以使用dbms_stats函数包,进行数据库对象统计信息的收集。

使用analyze命令,生成表的统计信息:

SQL> analyze table {table_name} compute statistics ;

使用analyze命令,生成索引的统计信息:

SQL> analyze index {index_name} compute statistics ;

使用dbms_stats函数包,生成表的统计信息:

SQL> exec dbms_stats.gather_table_stats(ownname => '{schema_name}', tabname => '{table_name}', estimate_percent => dbms_stats.auto_sample_size, method_opt => 'for all columns size auto' )

使用dbms_stats函数包,生成索引的统计信息:

SQL> exec dbms_stats.gather_index_stats( ownname => '{schema_name}', indname => '{index_name}', estimate_percent => dbms_stats.auto_sample_size, method_opt => 'for all columns size auto' )

 

9. 数据的磁盘空间整理

 

在对数据的磁盘空间进行整理之前,最好能够确定那些表、索引需要这些操作。这样可以做到有的放矢,避免浪费系统资源。在ORACLE系统中可以使用dbms_space函数包,也可以查询数据字典表,检查表、索引的空间使用。

SQL> select num_rows, blocks, empty_blocks,avg_space, chain_cnt, avg_row_len from dba_tables where owner = '{schema_name}' and table_name = '{table_name}' ;

SQL> select name,lf_rows,del_lf_rows,br_rows,btree_space,used_space from index_stats where name = upper('{index_name}') ;

对需要重建的表和索引,ORACLE系统没有提供专门的工具,我们可以按照第9.3.11一节所讨论方法执行。

 

10. 数据得导入和导出

 

ORACLE系统提供EXPORTEXPORTSQL *LOADER工具,进行数据的导入和导出。

1EXPORT命令以二进制格式,可以将整个数据库、单个或者多个表等数据库对象的结构和数据导出到操作系统文件中。可以使用IMPORT命令,重建数据库、单个或者多个数据库对象等。

导出指定表的结构和数据:

$ exp {user_name}/{password} file = {output_file} tables = {table_name} grants=y indexs=y

导出指定用户所拥有数据库对象的结构和数据:

$ exp {user_name}/{password} file = {output_file} owner = {owner_name} grants=y rows=y compress=y

导出指定表空间中所有数据库对象的结构和数据:

$ exp {user_name}/{password} file = {output_file} tablespaces = {tablespace_name} rows=y

导出整个数据库的结构和数据:

$ exp {user_name}/{password} file = {output_file} full=y  grants=y rows=y

创建指定表并导入数据:

$ imp {user_name}/{password} file = {imput_file} tables = {table_name} rows=y

创建整个数据库并导入数据:

$ imp {user_name}/{password} file = {imput_file} full=y

2)使用SQL *LOADER工具装入数据,需要提供一个控制文件。通过该文件指定:输入数据文件的位置、数据的格式、配置细节、如何处理被装入的数据等。

$ sqlldr {user_name}/{password} control = {control_file} log = {log_file} direct=Y

阅读(639) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~