oracle日常维护

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.
    


你可能感兴趣的:(oracle)