目錄
4. 查詢數據庫系統上有多少用戶,文件名和創建時間... 11
1.查看數據庫使用參數文件(SPFILE 還是PFILE)... 14
2. 查詢ORACLE所在操作系統的主機名,實例名,版本... 16
2.通過HASH VALUE 值查詢出SQL 語句... 23
3.根據HASH VALUE 值查詢出對應的 SESSLIN SID. 23
4.根據HASH VALUE 找出對應的機器名稱... 23
5.通過HASH VALUE 查詢出該語句的執行計劃... 24
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
|
alter tablespace BCS_LOG add datafile '/disk_array/oracle/oracle/oradata/auc/BCS_LOG13.dbf' size 1024m autoextend off
--路徑根據操作系統的不聽進行填寫 |
drop tablespace zzq ---- 直接刪除表空間,而不刪除對應的數據文件
drop tablespace zzq INCLUDING CONTENTS ---加上該選項則連同數據文件一起刪除了
|
col tablespace_name for a15
select tablespace_name,block_size,status,contents,logging from dba_tablespa ces;
查詢結果 STATUS 爲 ONLINE 表示爲聯機狀態正常如果爲OFFLINE 說明表空間不被使用
|
select file_id,file_name,tablespace_name,status,bytes from dba_data_files |
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 |
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'
|
有兩個腳本都可以使用
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
|
create user yqm identified by ora1234 default tablespace ts_yqm temporary tablespace ts_temp_yqm
創建用戶 yqm 密碼爲 ora123 默認的表空間維 ts_yqm 默認的臨時表空間爲 ts_yqm 默認的 臨時表空間維 ts_temp_yqm |
alter user yqm identified by yqm1234
|
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
|
select username,created from dba_users |
在數據庫正常啓動的模式下
Archive log list
|
在數據庫爲 mount 的模式下進行修改 alter database archivelog --將非歸檔模式修改爲歸檔模式
alter system set log_archive_dest_1='location=d:\oracle\log' scope=spfile 修改數據庫的歸檔日誌路徑
|
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
結果顯示,有四組重做日誌,1組2組有兩個成員,3組4組有一個成員,大小10485760 字節。 正在使用的是第一組日誌,(狀態爲CURRENT),1組沒有歸檔,2,3,4組都歸檔了。(ARC 爲NO,沒有歸檔,YES,爲歸檔)CURRENT 表示正在被使用
|
alter database add logfile group 4 'd:\oracle\product\10.1.0\oradata\auc\re do04' size 10m
查詢出原來日誌組中日誌成員的大小增加日誌組日誌成員的大小和原有的日誌成員大小一致
|
alter database add logfile member 'd:\oracle\product\10.1.0\oradata\auc\red o011' to group 1
爲日誌一組增加一個日誌成員 |
alter database drop logfile group 4
|
SQL> host orapwd file=d:\oracle\product\10.1.0\db_1\dbs\initdw.ora password=oracle entries=5
|
Show parameter spfile
查詢結果如果VALUE 有路勁的話說明數據庫的參數文件使用的是 SPFILE |
Create spfile from pfile='D:\oracle\product\10.1.0\admin\auc\pfile\init.ora.1111200818 5256'
當數據庫啓動使用 PFILE 啓動的時候通過以上方式創建 SPFILE |
startup pfile='D:\oracle\product\10.1.0\admin\auc\pfile\init.ora.1111200818 5256';
|
@?/rdbms/admin/spcreate.sql
|
採樣數據
SQL> exec statspack.snap
後隔幾分鐘後再次採樣數據
SQL> exec statspack.snap
生成報表
SQL>@?/rdbms/admin/spreport.sql
|
\oracle\product\10.1.0\db_1\rdbms\admin\spauto.sql |
修改該腳本中的內容, 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
|
select name,created,log_mode,open_mode from v$database |
select host_name,instance_name,version from v$instance
|
select * from v$version |
col name for a45 select * from v$controlfile |
alter database backup controlfile to trace
備份控制文件爲 TRC 文件在 BDUMP 中可以找到
|
create index zhang.zzq_1_index on zhang.zzq_1(a3) pctfree 25 storage (initial 500k) tablespace zzq_index |
create bitmap index zhang.zzq_2_index on zhang.zzq_2(aname) pctfree 25 storage (initial 500k) tablespace zzq_index |
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 表示正常
|
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。 |
定義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: 違反唯一約束條件 |
SQL> col segment_name for a20 SQL> select segment_name,segment_type,tablespace_name from dba_segments where tablespace_name='ZZQ_PRIMARY_KEY'
|
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,表示主鍵關閉 |
alter table zhang.zzq_3 disable novalidate constraint zzq_3_primary_key;
|
alter table zhang.zzq_3 enable novalidate constraint zzq_3_primary_key
|