Oracle表空间相关的知识

最近新系统上线,新建数据库,表空间,用户,数据处理等等一套操作下来,发现很多技术细节都只能百度。磕磕绊绊总算把问题解决了,总结一下,以备后用。

一、第一步数据库装好了,起服务,起监听:

1)切换到oracle用户:su - oracle

2)以dba身份登录sqlplus: sqlplus / as sysdba

3)启动数据库:startup

4)如果是关闭数据库:shutdown immediate

5)退出sqlpuls控制台:exit

6)启动监听,监听属于操作系统级进程,不需要登录Oracle:lsnrctl start

      关闭监听:lsnrctl stop

关于sqlplus登录的用法:(以下来自csdn博客

1.sqlplus / as sysdba 操作系统认证,不需要数据库服务器启动listener,也不需要数据库服务器处于可用状态。

2.sqlplus username/pwd 连接本机数据库,不需要数据库服务器的listener进程,但是由于需要用户名密码的认证,因此需要数据库服务器处于可用状态才行。

3.sqlplus usernaem/password@orcl 通过网络连接,这是需要数据库服务器的listener处于监听状态。

4.sqlplus username/pwd@host:ip/service_name   如:
sqlplus tiger/scott@172.16.10.1:1521/orcl  以用户名/密码、IP:Port、服务名 为参数登录。可以指定IP,适合远程连接。

5.sqlplus /nolog 先使用sqlplus命令,而不连接数据库,然后用conn命令登录。

然后:conn tiger/scott  或 conn tiger/scott@172.16.0.1/orcl

二、建表空间,用户,赋权等操作:

1.先删再建:

--删除用户
DROP USER POP CASCADE;
--删除表空间
DROP TABLESPACE TBS_POP INCLUDING CONTENTS AND DATAFILES;

--创建表空间,初始化10G,每次扩1G,最大32G

--有一个有意思的问题:Oracle单表最大容量是多少:首先表不能跨表空间,所以理论上单表空间的最大容量就是单表的最大容量,表空间单个数据文件最大32G(20200529重要更正:普通8K的块,单个数据文件最大32G,如果上调到16K,则单个数据文件最大64G,依次类推),最多1024个数据文件,因此粗略算下来单表空间的最大容量为32G*1024=32T。以后遇到这个问题,就知道怎么回答了!

create tablespace TBS_POP datafile '/dbdata/orcl/tbs_pop.dbf' size 10G autoextend on next 1G maxsize 32G;

--后续需要扩展表空间

alter tablespace TBS_POP add datafile '/dbdata/orcl/tbs_pop_01.dbf' size 10G autoextend on next 1G maxsize 32G;

--或者干脆

alter tablespace TBS_POP add datafile  '/dbdata/orcl/tbs_pop_01.dbf' size 32G;

--创建用户,指定默认表空间为上面创建的表空间

create user POP identified by pop default tablespace TBS_POP ;

--为用户赋权,connect 即为create session权限,即登录权限,resource权限包含:创建CLUSTER,INDEXTYPE,OPERATOR,PROCEDEURE,SEQUENCE,TABLE,TRIGGER,TYPE的权限;

grant connect, resource to pop;

--如有需要可以给予dba权限

grant dba to pop;

--想查看都有哪些权限,实际开发中仅有connect和resource可能很不方便,比如resource仅仅只有列出来的那些对象的创建权限,想要修改、删除、更新等操作就要单独赋权了

select * from dba_sys_privs where grantee='RESOURCE';

--想要查看表空间的使用情况,主要从两张表中出,别看别人写的语句很复杂各种关联,其实就这两张表,了解了其中含义,你可以写自己的语句

select * from dba_data_files;--表空间对应的数据文件情况,一个数据文件一条数据,可以看到文件的大小,是否在用等;

select * from dba_free_space;--表空间的使用情况,一个数据文件一条数据,使用了多少个字节

两个表分别按表空间名字分组sum之后,就可以得出表空间的总大小,空闲大小,俩个结果按表空间关联之后,就可以计算出表空间的使用率等指标。

三、关于日志

一般生产环境数据库都开了归档日志,对于不那么重要的数据库会设置自动删除一段时间之前的归档日志。

遇到短时间大批量数据insert、update操作的情况,归档日志会急剧膨胀,然后撑爆磁盘——是的我的磁盘被归档日志撑爆了。

这是由于事先1)没有对数据体量进行预估;2)对数据操作会产生大量日志的情况没有概念。

处理办法就是修改了dba设置的删除归档日志脚本,将删除3天以前的日志,改为删除1小时以前的日志。然后重启数据库,为什么要重启呢?因为数据库已经登不上了,删了日志腾出空间之后,重启才恢复。

20200417补充:不想写日志可以使用nologging模式:

insert  /*+Append*/ into tab1 nologging select * from tab2;

或者:

插入前:

alter table tab1 nologging;

insert  /*+Append*/ into tab1 select * from tab2;

插入后:

alter table tab1 logging;

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值