`
xp9802
  • 浏览: 1204149 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle日常维护操作【转载】

阅读更多

一.表空间

1.创建表空间
 

create tablespace xjzhang datafile 'd:\oracle\product\10.1.0\oradata\xjzhang.dbf' size 20m autoextend off
segment space management auto
 
autoextend off—不自动扩展
segment space management auto—自动段管理推荐
 
 1.1 创建临时表空间
 

create temporary tablespace temp1 tempfile 'd:\oracle\product\10.1.0\oradat
a\auc\temp.dbf' size 5m autoextend off
 
用于存放扩展信息
 
1.2 创建UNDO 表空间
 

 
create undo tablespace zzq_undo1 datafile 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\AUC\ZZQ_UNDO2.DBF' size 20m autoextend off
 
 
2.增加表空间
 

alter tablespace BCS_LOG add datafile '/disk_array/oracle/oracle/oradata/auc/BCS_LOG13.dbf' size 1024m autoextend off
 
--路径根据操作系统的不听进行填写
3.删除表空间

 
drop tablespace zzq ---- 直接删除表空间,而不删除对应的数据文件
 
drop tablespace zzq INCLUDING CONTENTS ---加上该选项则连同数据文件一起删除了
 
4.查询表空间状态

col tablespace_name for a15
 
select tablespace_name,block_size,status,contents,logging from dba_tablespa
ces;
 
查询结果 STATUS ONLINE 表示为联机状态正常如果为OFFLINE 说明表空间不被使用
 
5.查询数据文件路径

 
select file_id,file_name,tablespace_name,status,bytes from dba_data_files
6.移动表空间中数据文件的路径
 

1.        首先确定数据文件的状态要为OFFLINE
select tablespace_name,status,contents from dba_tablespaces
 
select file_id,file_name,tablespace_name from dba_data_files where file_name like '%ORACLE%' order by file 
---通过该语句查询数据文件的路径
 
2.        将该表空间修改为OFFLINE
alter tablespace USERS offline
 
select tablespace_name,status,contents from dba_tablespaces --查看表空间状态确定修改成功
 
3.        移动数据文件
host copy D:\oracle\product\10.1.0\oradata\auc\USERS01.DBF d:\oracle\product\10.1.0\oradata\aucdbf
 
4.        重新命名该表空间的路径和名称
alter tablespace users rename datafile 'd:\oracle\product\10.1.0\oradata\auc\USERS01.DBF' to 'd:\oracle\pr
oduct\10.1.0\oradata\aucdbf\USERS01.DBF'
 
5.        修改表空间的状态为 ONLINE 状态
alter tablespace users online
 
 
 
 
第二种方法
在数据库位 mount的模式下
1.                               host copy d:\oracle\product\10.1.0\oradata\auc\system01.dbf d:\oracle\product\10.1.0\oradata\aucsystem
2. alter database rename file 'd:\oracle\product\10.1.0\oradata\auc\system01.dbf' to 'd:\oracle\product\10.1.
0\oradata\aucsystem\system01.dbf'
 
3.alter database open
 
4. select file_name,tablespace_name from dba_data_files
 
7.移动表和索引到其他表空间
 

1.        查询该对象存放在哪个表空间
select segment_name,tablespace_name,extents,blocks from dba_segments where owner='ZHANG'
 
2.查询该对象是索引,还是表
select object_id,object_name,object_type,status,created from dba_objects where owner='ZHANG'
 
3.查询索引或者表存放在哪个表空间
select index_name,table_name,tablespace_name,status from dba_indexes where owner='ZHANG'
 
4.移动表到另一个表空间
alter table zhang.zzq_1 move tablespace zhang_zzq
 
6.        查询该表是否移动到该表空间
select segment_name,tablespace_name,extents,blocks from dba_segments where owner='ZHANG'
7.        检查表是否有效
select object_id,object_name,object_type,status,created from dba_objects where owner='ZHANG'
状态为 VALID 是有效
 
8.        重建索引并且将索引移动到另一个表空间
alter index zhang.zzq_index rebuild tablespace zhang_zzq
 
9.        查询索引对应的表空间
select index_name,table_name,tablespace_name,status from dba_indexes where owner='ZHANG'
 
 
8.查看表空间的使用率
有两个脚本都可以使用
1.

 
col f.tablespace_name format a15
col d.tot_grootte_mb format a10
col ts-per format a8
select upper(f.tablespace_name) "TS-name",
       d.tot_grootte_mb "TS-bytes(m)",
       d.tot_grootte_mb - f.total_bytes "TS-used (m)",
       f.total_bytes "TS-free(m)",
       to_char(round((d.tot_grootte_mb - f.total_bytes) / d.tot_grootte_mb * 100,
                     2),
               '990.99') "TS-per"
         from (select tablespace_name,
               round(sum(bytes) / (1024 * 1024), 2) total_bytes,
               round(max(bytes) / (1024 * 1024), 2) max_bytes
          from sys.dba_free_space
         group by tablespace_name) f,
       (select dd.tablespace_name,
               round(sum(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb
          from sys.dba_data_files dd
         group by dd.tablespace_name) d
where d.tablespace_name = f.tablespace_name
order by 5 desc
 
 
2.

 
SELECT D.TABLESPACE_NAME,
       SPACE "SUM_SPACE(M)",
       BLOCKS SUM_BLOCKS,
       SPACE - NVL(FREE_SPACE, 0) "USED_SPACE(M)",
       ROUND((1 - NVL(FREE_SPACE, 0) / SPACE) * 100, 2) "USED_RATE(%)",
       FREE_SPACE "FREE_SPACE(M)"
 FROM (SELECT TABLESPACE_NAME,
               ROUND(SUM(BYTES) / (1024 * 1024), 2) SPACE,
               SUM(BLOCKS) BLOCKS
          FROM DBA_DATA_FILES
         GROUP BY TABLESPACE_NAME) D,
       (SELECT TABLESPACE_NAME,
               ROUND(SUM(BYTES) / (1024 * 1024), 2) FREE_SPACE
          FROM DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F
 WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
UNION ALL --if have tempfile
SELECT D.TABLESPACE_NAME,
       SPACE "SUM_SPACE(M)",
       BLOCKS SUM_BLOCKS,
       USED_SPACE "USED_SPACE(M)",
       ROUND(NVL(USED_SPACE, 0) / SPACE * 100, 2) "USED_RATE(%)",
       NVL(FREE_SPACE, 0) "FREE_SPACE(M)"
 FROM (SELECT TABLESPACE_NAME,
               ROUND(SUM(BYTES) / (1024 * 1024), 2) SPACE,
               SUM(BLOCKS) BLOCKS
          FROM DBA_TEMP_FILES
         GROUP BY TABLESPACE_NAME) D,
       (SELECT TABLESPACE_NAME,
               ROUND(SUM(BYTES_USED) / (1024 * 1024), 2) USED_SPACE,
               ROUND(SUM(BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE
          FROM V$TEMP_SPACE_HEADER
         GROUP BY TABLESPACE_NAME) F
 WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
 ORDER BY 5 DESC
 
 
1.创建用户

create user yqm identified by ora1234 default tablespace ts_yqm
temporary tablespace ts_temp_yqm
 
创建用户 yqm 密码为 ora123 默认的表空间维 ts_yqm 默认的临时表空间为 ts_yqm
默认的 临时表空间维 ts_temp_yqm
2.修改用户的密码

alter user yqm identified by yqm1234
 
 
3.给用户授权

grant connect to yqm --授予用户 connect 的权限
 
grant dba to yqm 授予用户 DBA 的权限
 
revoke dba from yqm --收回用户DBA 的权限
 
grant select on scott.emp to kxht   --授予用户能查询SCOTT 下的 EMP 表的权限
 
grant select any table to solo --授予用户能查询所有表的权限
grant delete any table to solo
grant create any table to solo
 
 
 
4. 查询数据库系统上有多少用户,文件名和创建时间

 
select username,created from dba_users
1.查看数据库的归档模式

在数据库正常启动的模式下
 
Archive log list
 
2.修改数据库的归档模式

 
在数据库为 mount 的模式下进行修改
alter database archivelog   --将非归档模式修改为归档模式
 
alter system set log_archive_dest_1='location=d:\oracle\log' scope=spfile
修改数据库的归档日志路径
 
1.查询日志文件信息

Select * from v$logfile
 
SQL> desc v$logfile;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- --------------
 GROUP#                                             NUMBER
 STATUS                                             VARCHAR2(7)
 TYPE                                               VARCHAR2(7)
 MEMBER                                             VARCHAR2(513)
 IS_RECOVERY_DEST_FILE                              VARCHAR2(3)
 
可以查询出日志文件属于哪个组,日志文件的路径
1.1查询日志文件大小

select bytes/1024/1024 from v$log   --查询日志文件的大小
 
1.2 日志切换

alter system switch logfile    ---手工切换日志
 
1.3 重做日志文件详细
 

SQL> select group#,members,bytes,status,archived from v$log;
 
 
查询结果:
 
    GROUP#    MEMBERS      BYTES STATUS           ARC
---------- ---------- ---------- ---------------- ---
         1          2   10485760 CURRENT          NO
         2          2   10485760 INACTIVE         YES
         3          1   10485760 INACTIVE         YES
         4          1   10485760 INACTIVE         YES
 
结果显示,有四组重做日志,12组有两个成员,34组有一个成员,大小10485760 字节。
正在使用的是第一组日志,(状态为CURRENT),1组没有归档,234组都归档了。(ARC NO,没有归档,YES,为归档)CURRENT 表示正在被使用
 
 
2.增加日志文件配置信息
 
 
 

alter database add logfile group 4 'd:\oracle\product\10.1.0\oradata\auc\re
do04' size 10m
 
查询出原来日志组中日志成员的大小增加日志组日志成员的大小和原有的日志成员大小一致
 
 
3.增加日志成员
 
 

alter database add logfile member 'd:\oracle\product\10.1.0\oradata\auc\red
o011' to group 1
 
为日志一组增加一个日志成员
 
4.删除一组日志

alter database drop logfile group 4
 
 
1.创建密码文件
 

SQL> host orapwd file=d:\oracle\product\10.1.0\db_1\dbs\initdw.ora password=oracle entries=5
 
 
六.参数文件(spfile pfile
1.查看数据库使用参数文件(SPFILE 还是PFILE)
 

Show parameter spfile
 
查询结果如果VALUE 有路劲的话说明数据库的参数文件使用的是 SPFILE
 
2.创建SPFILE
 

Create spfile from pfile='D:\oracle\product\10.1.0\admin\auc\pfile\init.ora.1111200818
5256'
 
当数据库启动使用 PFILE 启动的时候通过以上方式创建 SPFILE
 
3.通过PFILE 启动数据库
 

startup pfile='D:\oracle\product\10.1.0\admin\auc\pfile\init.ora.1111200818
5256';
 
 
七.statspack
1.安装STATSPACK

@?/rdbms/admin/spcreate.sql
 
 
2.数据采集
 

  采样数据
 
  SQL> exec statspack.snap
 
  后隔几分钟后再次采样数据
 
  SQL> exec statspack.snap
 
  生成报表
 
  SQL>@?/rdbms/admin/spreport.sql
 
3.设置自动快照

 
\oracle\product\10.1.0\db_1\rdbms\admin\spauto.sql
 
4.设置数据采集的时间
 

修改该脚本中的内容,
variable jobno number;
variable instno number;
begin
    select instance_number into :instno from v$instance;
    dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
    commit;
end;
/
主要是 24 系统默认的是一个小时自动执行一次,如果设置为半个小时执行一次的话,就将24修改为48 就可以了
 
-----------
然后执行
@?/rdbms/admin/spauto
 
 
八.ORACLE信息查询
1.查询ORACLE数据库的名字,创建日期
 

 
select name,created,log_mode,open_mode from v$database
 
2. 查询ORACLE所在操作系统的主机名,实例名,版本
 

select host_name,instance_name,version from v$instance
 
 
3.查询ORACLE数据库系统版本详细信息
 

 
select * from v$version
 
 
1.查询控制文件

 
 col name for a45
select * from v$controlfile
 
2.备份控制文件
 

alter database backup controlfile to trace
 
备份控制文件为 TRC 文件 BDUMP 中可以找到
 
 
1.创建普通索引
 

create index zhang.zzq_1_index on zhang.zzq_1(a3) pctfree 25 storage (initial 500k) tablespace zzq_index
 
2.创建位图索引

create bitmap index zhang.zzq_2_index on zhang.zzq_2(aname) pctfree 25 storage (initial 500k) tablespace zzq_index
 
3.查询索引所在的表,表空间,索引类型
 

SQL> col tablespace_name for a15
SQL> select index_name,index_type,table_name,tablespace_name,uniqueness,status from dba_indexes where owner='ZHANG';
 
INDEX_NAME                     INDEX_TYPE      TABLE_NAME                     TABLESPACE_NAME UNIQUENES STATUS
------------------------------ --------------- ------------------------------ --------------- --------- --------
ZZQ_2_INDEX                    BITMAP          ZZQ_2                          ZZQ_INDEX       NONUNIQUE VALID
BIN$JzT/4eOlRteD8fJ2TYznbw==$0 NORMAL          BIN$uZNQmZH5SSa6pO3YXAGNLA==$0 ZHANG_ZZQ       NONUNIQUE VALID
ZZQ_1_INDEX                    NORMAL          ZZQ_1                          ZZQ_INDEX       NONUNIQUE VALID
 
查询结果可以看出,索引zzq_2_index BITMAP 索引,位于表zzq_2,位于ZZQ_INDEX表空间  是非唯一索引(NONUNIQUE),状态 VALID 表示正常
                  索引ZZQ_1_INDEX 是普通索引,位于表ZZQ_1 位于ZZQ_INDEX 表空间  是非唯一索引(NONUNIQUE),状态 VALID 表示正常
 
 
4.查询索引所在的列
 
 

SQL> select index_name,table_name,column_name,index_owner,table_owner from dba_ind_columns where table_owner='ZHANG';
 
INDEX_NAME                     TABLE_NAME                     COLUMN_NAME     INDEX_OWNER     TABLE_OWNER
------------------------------ ------------------------------ --------------- --------------- ------------------------------
ZZQ_2_INDEX                    ZZQ_2                          ANAME           ZHANG           ZHANG
BIN$JzT/4eOlRteD8fJ2TYznbw==$0 BIN$uZNQmZH5SSa6pO3YXAGNLA==$0 NAME_ID         ZHANG           ZHANG
ZZQ_1_INDEX                    ZZQ_1                          A3              ZHANG           ZHANG
 
查询结果看出,ZZQ_2_INDEX 该索引在表ZZQ_2中,所在的列为ANAME,所在的用户为ZHANG
十一.主键
1.定义主键
 

定义zzq_3 表中 A1字段为主键约束主键名称为 A3_primary_key
 
SQL> alter table zhang.zzq_3 ADD constraint zzq_3_primary_key primary key (a1) deferrable using index tablespace zzq_primary_key;
 
该错误是主键约束
ORA-00001: 违反唯一约束条件
 
2.查询主键索引
 

SQL> col segment_name for a20
SQL> select segment_name,segment_type,tablespace_name from dba_segments where tablespace_name='ZZQ_PRIMARY_KEY'
 
 
3.查询约束信息
 

SQL> select constraint_name,table_name,constraint_type,status,deferred,validated from dba_constraints where owner='ZHANG';
 
CONSTRAINT_NAME TABLE_NAME      CONSTRAINT_TYPE      STATUS          DEFERRED
--------------- --------------- -------------------- --------------- ---------
VALIDATED
---------------
ZZQ_3_PRIMARY_K ZZQ_3           P                    ENABLED         IMMEDIATE
EY
 
 
状态为 ENABLED 表示主键有效(主键打开),状态为DISABLED,表示主键关闭
 
 
4.禁止约束
 

 
alter table zhang.zzq_3 disable novalidate constraint zzq_3_primary_key;
 
 
5.开启主键
 

 
alter table zhang.zzq_3 enable novalidate constraint zzq_3_primary_key
分享到:
评论

相关推荐

    Oracle日常维护操作笔记

    Oracle数据库作为全球广泛使用...以上只是Oracle日常维护操作的一部分,实际运维中还需要关注性能监控、备份恢复、安全性策略、空间管理等多个方面。理解并熟练掌握这些操作,对于保障Oracle数据库的正常运行至关重要。

    ORACLE日常维护实例

    Oracle数据库是企业级的重要数据存储系统,而作为Oracle DBA(数据库管理员),日常维护工作是确保数据库高效、稳定运行的关键。以下是对Oracle日常维护实例的详细说明: 首先,DBA每天需要对Oracle数据库的运行...

    Oracle日常维护手册

    Oracle日常维护对于确保系统的稳定运行、数据安全以及性能优化至关重要。本手册将详细介绍Oracle数据库的一些关键维护任务,以帮助DBA(数据库管理员)有效监控和管理数据库。 1. **日志监控**: - **redo log ...

    oracle数据库日常维护

    Oracle 数据库日常维护 Oracle 数据库日常维护是确保数据库安全、稳定和高效运行的重要步骤。在本文中,我们将详细介绍 Oracle 数据库日常维护的重要知识点,从数据库基本情况到数据库备份结果、数据库性能、安全性...

    Oracle数据库日常维护手册.rar_Oracle数据库日常维护手册_oracle

    本手册《Oracle数据库日常维护手册》将详细讲解如何有效地管理和维护Oracle数据库系统,确保其稳定、高效运行。 1. **数据库启动与关闭** - **启动流程**:包括NOMOUNT、MOUNT和OPEN三个阶段,理解每个阶段的作用...

    Oracle日常维护故障定位故障排除

    Oracle数据库在日常运行中可能会遇到各种故障,这些故障可能会影响到数据库的正常运行、性能或安全性。以下是一些常见的Oracle数据库故障及其原因与解决方案: 一、数据库挂起故障 1. ARCHIVE挂起:当归档日志过程...

    oracle 日常维护

    Oracle数据库的日常维护...Oracle的日常维护需要综合运用多种工具和知识,包括操作系统层面的监控、数据库的性能分析以及问题排查技巧。有效的维护策略可以降低系统停机时间,提高数据库的效率,并确保数据的安全存储。

    OracleDBA日常维护操作手册命令总结_Oracle数据库教程.pdf

    根据提供的文件信息,内容涵盖Oracle数据库的日常维护操作以及相关命令的总结,以下是详细的知识点: 1. 表空间 表空间是数据库存储逻辑结构的基本单元,用于组织和管理数据库对象。操作包括创建表空间、创建临时表...

    Oracle日常维护--运维基础篇.pdf

    Oracle 日常维护是 DBA 的必备技能之一,本文档将详细介绍 Oracle 数据库的启动、关闭、维护等日常操作,并提供实用的维护命令,希望能够帮助读者更好地理解和掌握 Oracle 数据库的维护。 一、数据库启动 数据库...

    Oracle 简易易日常维护

    Oracle 简易易日常维护Oracle 简易易日常维护

    Oracle数据库日常维护

    ORACLE 日常 维护 手册 _ 最全 + 最实用实用

    oracle日常维护手册

    Oracle数据库的日常维护是DBA工作中的重要环节,它确保了数据库的稳定运行和高效性能。以下是关于Oracle数据库日常维护的一些关键知识点: 1. **警告日志文件监控**: - Oracle数据库会在`alert_SID.log`文件中...

    oracle 数据库日常维护手册

    Oracle 数据库日常维护手册 Oracle 数据库是一种关系型数据库管理系统,广泛应用于企业级应用中。为了确保 Oracle 数据库的稳定运行,需要进行日常维护。以下是 Oracle 数据库日常维护手册中的一些重要知识点: ...

    Oracle日常运维操作总结-数据库的启动和关闭 数据库运维.pdf

    Oracle数据库的日常运维操作是数据库管理员(DBA)的核心工作之一,其中数据库的启动和关闭是基础但至关重要的环节。以下是对Oracle数据库启动和关闭的详细解释: Oracle数据库在启动和关闭过程中涉及到多个状态和...

Global site tag (gtag.js) - Google Analytics