oracle日常維護
阿新 • • 發佈:2018-12-12
Oracle日常維護
1.增加表空間大小
查詢表空間檔案路徑
select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;
增減表空間檔案
ALTER TABLESPACE USERS ADD DATAFILE '/data/oradata/orcl/users02.dbf' SIZE 10240M;
修改表空間大小
alter database datafile '/data/orcl/users02.dbf' resize 50m;
修改表空間大小自增
alter database datafile '/data/orcl/users02.dbf' autoextend onnext 50m maxsize 500m;
- onnext 50m 每次增加的大小
- maxsize 500m 最大檔案大小
2.必須加上表名才能查詢
問題:
使用者查詢表一定要加上表空間名的問題
ORACLE 10G 建立了一個測試用的使用者TEST,打算這個使用者只有查詢的許可權,預設的表空間指向THGE的這個表空間,給這個使用者賦予了connect 和resource的角色,許可權為SELECT ANY TABLE
查詢一個表, 這樣寫就沒錯
SELECT COUNT(*) FROM THGE.KTYLOG;
這樣寫就說這個表或檢視沒找到
SELECT COUNT(*) FROM KTYLOG;
解決:
我們都知道,在oracle中對使用者的管理是使用許可權的方式來管理的,也就是說,如果我們想使用資料庫,我們就必須得有許可權,但是如果是別人將許可權授予了我們,我們也是能對
資料庫進行操作的,但是我們必須要已授權的表的名稱前鍵入該表所有者的名稱,所以這就是比較麻煩的,遇到這種情況,我們該怎麼辦呢?建立個同義詞吧!這樣我們就可以直
接使用同義詞來使用表了。
建立同義詞的具體語法是:create [public] SYNONYM synooym for object;其中synooym表示要建立的同義詞的名稱,object表示表,檢視,序列等我們要建立同義詞的物件的名
稱。
CREATE PUBLIC SYNONYM public_emp FOR jward.emp; -- jward 使用者名稱
刪除同義詞
使用DROP SYNONYM語句刪除不再需要的同義詞 要想刪除私有同義詞 就省略 PUBLIC 關鍵字 要想刪除公共同義詞 就要包括PUBLIC 關鍵字
DROP SYNONYM emp; --刪除名為emp 的私有同義詞
DROP PUBLIC SYNONYM public_emp; --刪除名為public_emp的公有同義詞
3.ASM磁碟空間不足
查詢ASM磁碟空間
SQL> select group_number,name,total_mb,free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME TOTAL_MB FREE_MB
------------ ------------------------------ ---------- ----------
1 CRS 51136 50739
2 DATA 368616 336503
3 REDO 81917 77947
4.歸檔日誌已滿
現象:
SQL> conn trade
Enter password:
ERROR:
ORA-00257: archiver error. Connect internal only, until freed.
Warning: You are no longer connected to ORACLE.
解決:
檢視使用情況
# 檢視歸檔日誌路徑
SQL> show parameter log_archive_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_11 string
log_archive_dest_12 string
log_archive_dest_13 string
log_archive_dest_14 string
log_archive_dest_15 string
log_archive_dest_16 string
log_archive_dest_17 string
log_archive_dest_18 string
# 檢視ASM磁碟使用空間情況
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
NUMBER_OF_FILES
---------------
CONTROL FILE .46 0
1
REDO LOG 5.26 0
4
ARCHIVED LOG 93.77 0
101
# 查詢最大限制
SQL> show parameter recover;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +REDO
db_recovery_file_dest_size big integer 30G
recovery_parallelism integer
方法1:刪除無用的日誌
# 檢查一些無用的archivelog RMAN> crosscheck archivelog all; # 刪除過期的歸檔 RMAN> delete expired archivelog all; #刪除截止到前一天的所有archivelog delete archivelog until time 'sysdate-1' ;
方法2:增加archivelog空間大小
# 強制關閉資料庫 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 2087780352 bytes Fixed Size 2214936 bytes Variable Size 1308623848 bytes Database Buffers 771751936 bytes Redo Buffers 5189632 bytes Database mounted. # 檢視歸檔日誌資訊 SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 60 Next log sequence to archive 0 Current log sequence 61 # 增加歸檔到30G SQL> alter system set db_recovery_file_dest_size=30G scope=both; System altered. # 開啟資料庫 SQL> alter database open; Database altered.