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.