Oracle日常維護操作筆記(一)

目錄

一.表空間... 5

1.創建表空間... 5

2.增加表空間... 5

3.刪除表空間... 6

4.查詢表空間狀態... 6

5.查詢數據文件路徑... 6

6.移動表空間中數據文件的路徑... 6

7.移動表和索引到其他表空間... 7

8.查看錶空間的使用率... 8

二.用戶和權限... 10

1.創建用戶... 10

2.修改用戶的密碼... 10

3.給用戶授權... 10

4. 查詢數據庫系統上有多少用戶,文件名和創建時間... 11

三.歸檔和非歸檔模式... 11

1.查看數據庫的歸檔模式... 11

2.修改數據庫的歸檔模式... 11

四.日誌文件... 12

1.查詢日誌文件信息... 12

2.增加日誌文件配置信息... 13

3.增加日誌成員... 13

4.刪除一組日誌... 14

五.密碼文件... 14

1.創建密碼文件... 14

六.參數文件(spfile pfile... 14

1.查看數據庫使用參數文件(SPFILE 還是PFILE... 14

2.創建SPFILE14

3.通過PFILE 啓動數據庫... 14

七.statspack15

1.安裝STATSPACK15

2.數據採集... 15

3.設置自動快照... 15

4.設置數據採集的時間... 15

八.ORACLE信息查詢... 16

1.查詢ORACLE數據庫的名字,創建日期... 16

2. 查詢ORACLE所在操作系統的主機名,實例名,版本... 16

3.查詢ORACLE數據庫系統版本詳細信息... 16

九.控制文件... 17

1.查詢控制文件... 17

2.備份控制文件... 17

十.索引... 17

1.創建普通索引... 17

2.創建位圖索引... 17

3.查詢索引所在的表,表空間,索引類型... 17

4.查詢索引所在的列... 18

十一.主鍵... 18

1.定義主鍵... 18

2.查詢主鍵索引... 19

3.查詢約束信息... 19

4.禁止約束... 19

5.開啓主鍵... 20

十二.手工建庫腳本... 20

十三. .profile文件內容... 20

十四.做定時JOB21

1.創建存儲過程,爲此存儲過程作定時JOB21

2.定時JOB 參數說明... 22

十五.查詢出SQL語句... 23

1.通過SID 找出HASH VALUE ... 23

2.通過HASH VALUE 查詢出SQL 語句... 23

3.根據HASH VALUE 查詢出對應的 SESSLIN SID23

4.根據HASH VALUE 找出對應的機器名稱... 23

5.通過HASH VALUE 查詢出該語句的執行計劃... 24

6.查詢存儲過程... 24

7.查詢對象屬於哪個用戶... 24

8.查詢表的分析時間... 24

9.查詢對象(表)的類型... 24

十六.查詢腳本... 25

1.查詢等待事件... 25

2.查詢大表已經索引超過2G 的對象... 25

3.查看鎖... 26

十七.基本的SQL語句... 26

1.對錶的操作... 26

2.常用的函數... 27

十八.安裝手冊... 28

十九.錯誤總結... 28

1. ORA-00257: 歸檔程序錯誤... 28

二十.故障處理... 30

1.日誌挖掘... 30

2.行鏈接行遷移... 31

3.邏輯備份(exp/imp... 36

4.關閉和啓動數據庫的步驟... 37

二十一.METALINK 操作... 38

1.開二級別SR38

2.OPATCH 下載地址... 38

3.數據庫升級補丁下載... 39

二十二.oracle下載... 40

1.ORACLE10G 下載方法... 40

P1.IMP/EXP參數詳細說明... 43

 

 一.表空間

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

 


 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章