Oracle R11 Centos 6.5 静默安装

Centos6.5安装Oracle 11gR2

一. 环境配置

1.1 系统环境参数

系统:Centos6.5 x86_64 minimal  最小化安装

硬盘:3T硬盘

内存:60G+ 20G swap(交互分区空间)

IP:1

 

1.2 系统内核配置

##系统内核修改优化

/etc/security/limits.conf

 

*       soft    nofile  655350  

*       hard    nofile  655350

*       soft    nproc  655350  

*       hard    nproc  655350

*       soft memlock unlimited

*       hard memlock unlimited

 

 

#####

/etc/sysctl.conf

 

 

 

# Controls IP packet forwarding

net.ipv4.ip_forward = 0

 

# Controls source route verification

net.ipv4.conf.default.rp_filter = 1

 

# Do not accept source routing

net.ipv4.conf.default.accept_source_route = 0

 

# Controls the System Request debugging functionality of the kernel

kernel.sysrq = 0

 

# Controls whether core dumps will append the PID to the core filename.

# Useful for debugging multi-threaded applications.

kernel.core_uses_pid = 1

 

# Controls the use of TCP syncookies

net.ipv4.tcp_syncookies = 1

 

# Disable netfilter on bridges.

net.bridge.bridge-nf-call-ip6tables = 0

net.bridge.bridge-nf-call-iptables = 0

net.bridge.bridge-nf-call-arptables = 0

 

# Controls the default maxmimum size of a mesage queue

kernel.msgmnb = 65536

 

# Controls the maximum size of a message, in bytes

kernel.msgmax = 65536

 

# Controls the maximum shared segment size, in bytes

kernel.shmmax = 68719476736

 

# Controls the maximum number of shared memory segments, in pages

kernel.shmall = 4294967296

 

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 1200

#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。

net.ipv4.ip_local_port_range = 1024 65000

##表示用于向外连接的端口范围。缺省情况下很小:3276861000,改为102465000

net.ipv4.tcp_max_syn_backlog = 8192

##表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

net.ipv4.tcp_max_tw_buckets = 5000

##表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。

vm.max_map_count=655360

 

 

 

 

 

###########################################

/etc/security/limits.d/90-nproc.conf

*          soft    nproc     2048

root       soft    nproc     unlimited

 

 

 

###########################################

/etc/pam.d/login

session    required     pam_limits.so

二. 配置yum

#配置hosts映射

#添加离线库地址映射

vi /etc/hosts

 

172.17.36.20 fileserver.cn

 

#下载离线库yum源  没有离线库,不用配置 能上网直接安装下面的工具即可

curl -o /etc/yum.repos.d/orcl-c6.5.repo  http://fileserver.cn/tools/oracle/repo/orcl-c6.5.repo

 

yum clean all && yum makecache #生成缓存

 

#安装工具

yum install wget unzip net-tools –y

#安装oracle安装工具

yum install oracle-rdbms-server-11gR2-preinstall –y

 

 

三. 配置用户环境

#安装完成后,备份

##这个文件夹是修改系统后日志和原本的内核配置备份

tar -zcvf /var/log/oracle-rdbms-server-11gR2-preinstall1.tar.gz /var/log/oracle-rdbms-server-11gR2-preinstall

 

#创建一些目录和配置

##配置oracle系统配置文件&授权

cat >> /etc/oraInst.loc <<EOF

inventory_loc=/home/oracle/ora11g/oraInventory

inst_group=oinstall

EOF

chmod 664 /etc/oraInst.loc

 

 

##创建oracle安装的目录&授权

mkdir -p /u01/app/

mkdir /u01/tmp

chown -R oracle:oinstall /u01/app/

chmod -R 775 /u01/app/

chmod a+wr /u01/tmp

 

#设置oracle用户密码 oracle是安装工具自己创建的

passwd oracle

 

#我改成了123456

 

#以下操作切换到 oracle用户操作

 

su oracle

 

#oracle用户添加一些必要的环境

cat >> /home/oracle/.bash_profile <<EOF

TMP=/u01/tmp

TMPDIR=/u01/tmp

export TMP TMPDIR

 

ORACLE_BASE=/u01/app/oracle

ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

ORACLE_SID=orcl

PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_BASE ORACLE_SID ORACLE_HOME PATH

EOF

 

#使环境变量生效

source .bash_profile

 

#验证环境变量是否生效

echo $PATH

 

 

 

四. 下载oracle安装包

wget http://fileserver.cn/tools/oracle/linux.x64_11gR2_database_1of2.zip

wget http://fileserver.cn/tools/oracle/linux.x64_11gR2_database_2of2.zip

 

官网下载地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

 

#解压解压后文件会在/home/oracle/database/

unzip linux.x64_11gR2_database_1of2.zip

unzip linux.x64_11gR2_database_2of2.zip

 

##由于某些原因文件权限问题 运行这个命令()

chown -R oracle:oinstall /home/oracle/database

 

五. 配置db_install.rsp

 

#备份到/home/oracle/rsp/

cp -r /home/oracle/database/response /home/oracle/rsp

 

#配置安装响应文件db_install.rsp文件

cp /home/oracle/rsp/db_install.rsp{,.bak}

 

echo '

#INSTALL_DB_AND_CONFIG安装并自动配置数据库实例和监听 建议首次安装用这个

#不然配置另外两个文件,新建实例和监听

oracle.install.option=INSTALL_DB_AND_CONFIG

ORACLE_HOSTNAME=localhost

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=/home/oracle/ora11g/oraInventory

SELECTED_LANGUAGES=zh_CN,en

ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

ORACLE_BASE=/u01/app/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.isCustomInstall=false

#oracle.install.db.customComponents=oracle.server:172.17.36.21,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:172.17.36.21,oracle.rdbms.oci:172.17.36.21,oracle.network:172.17.36.21,oracle.network.listener:172.17.36.21,oracle.rdbms:172.17.36.21,oracle.options:172.17.36.21,oracle.rdbms.partitioning:172.17.36.21,oracle.oraolap:172.17.36.21,oracle.rdbms.dm:172.17.36.21,oracle.rdbms.dv:172.17.36.21,orcle.rdbms.lbac:172.17.36.21,oracle.rdbms.rat:172.17.36.21

oracle.install.db.DBA_GROUP=dba

oracle.install.db.OPER_GROUP=oinstall

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

#这个是服务名

oracle.install.db.config.starterdb.globalDBName=base

#实例sid

oracle.install.db.config.starterdb.SID=orcl

oracle.install.db.config.starterdb.characterSet=AL32UTF8

oracle.install.db.config.starterdb.memoryOption=true

#最小256M 我改成了20G系统上可用#的总物理内存。

oracle.install.db.config.starterdb.memoryLimit=20480

#是否安装scotthr

oracle.install.db.config.starterdb.installExampleSchemas=true

oracle.install.db.config.starterdb.enableSecuritySettings=true

#密码全设置成oracle (安装时会提示,个人学习忽略)

oracle.install.db.config.starterdb.password.ALL=oracle

oracle.install.db.config.starterdb.control=DB_CONTROL

oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false

oracle.install.db.config.starterdb.automatedBackup.enable=false

oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE

oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/app/oracle/oradata

#true

DECLINE_SECURITY_UPDATES=true

 

 

 

'>/home/oracle/rsp/db_install.rsp

 

 

六. 静默安装数据库

#执行安装命令

##会出现密码不规范的警告,忽略

/home/oracle/database/runInstaller -silent -ignorePrereq  -responseFile /home/oracle/rsp/db_install.rsp

 

 

 

#一直等待

 

 

出现图上的效果时,复制打开一个新窗口,执行图中说的  root.sh脚本

 

Root用户执行:

sh /u01/app/oracle/product/12.1.0/db_1/root.sh

 

【切换到oracle

#sqlplus登录

sqlplus / as sysdba

#查看状态

select status from v$instance;

 

 

 

 

 

七. 配置防火墙

7.1 关闭防火墙

 

#关闭selinux、防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

firewall-cmd --state

sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config

sed -i 's/^SELINUXTYPE=.*/SELINUXTYPE=disabled/g' /etc/selinux/config

grep --color=auto '^SELINUX' /etc/selinux/config

setenforce 0

 

 

7.2 不关闭防火墙,设置端口通行

[root]#查看1521端口

netstat -an|grep 1521

 


#防火墙 放行1521端口

firewall-cmd --zone=public --add-port=1521/tcp --permanent

#重新加载防火墙规则

firewall-cmd --reload

 

 

 

八. 数据库的启动&关闭

[root]

  #修改oracle服务启动配置

vi /etc/oratab

  

 :wq保存

 

[oracle]

#启动oracle

#因为修改了/etc/oratab  N->y 所以启动服务也会同时启动实例

##N的情况不会同时启动实例 sqlplus登录会提示 an idle instance

##sqlplus 然后---> startup启动实例

#重启系统后用这个命令启动

dbstart $ORACLE_HOME

#关闭

dbshut $ORACLE_HOME

 #远程连接oracle

sqlplus sys/oracle@192.168.100.131:1521/base as sysdba

conn sys/oracle@192.168.100.131:1521/base as sysdba

base是服务名 不是sid

 

九. 远程登录

修改以下2个文件,将localhost改成ip地址   然后重启监听服务

vi /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

vi /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

 

lsnrctl start-----启动监听器

lsnrctl status-----查看监听器的状态

conn sys/oracle@172.17.36.21:1521/base as sysdba

 

创建用户

create user mytest identified by 123456;

grant create session to mytest;

conn mytest/123456@172.17.36.15:1521/base

 

#添加权限  dba 权限 不限表空间,登录链接,资源权限

grant connect,resource,dba,unlimited tablespace to mytest;

  

 

备份数据库,空表表也备份的参数设置

【切换到oracle

#sqlplus登录

sqlplus / as sysdba

#修改系统参数,创建表,立即分配segment, 用于备份数据库时,空表也会备份出来。

alter system set deferred_segment_creation=false;

#查看是否修改

show parameter deferred_segment_creation;

 

十. 自动全量备份与还原

1自动备份

1.1. root用户登录服务器

 

mkdir -p /data/backup/oracledata #新建Oracle数据库备份目录

chown -R oracle:oinstall /data/backup/oracledata -R #设置目录权限为oinstall用户组的oracle用户(用户oracle与用户组oinstall是在安装Oracle数据库时设置的)

 

1.2. 上传备份脚本 ordatabak.sh /data/backup 目录下

脚本中包含oracle的用户名密码和 sid请注意修改为实际的值

……

orsid=orcl #Oracle数据库服务器IP、端口、SID

orowner=mytest #备份此用户下面的数据

bakuser=mytest #用此用户来执行备份,必须要有备份操作的权限

bakpass=123456 #执行备注的用户密码

……

脚本中包含定时删除7天前的备份,如果不需要,请修改文件,去掉最后的删除即可

#find $bakdir/$orowner -type f -name *.dmp -exec rm {} \; #删除备份文件

#find $bakdir/$orowner -type f -name *.log -exec rm {} \; #删除日志文件

#find $bakdir/$orowner -type f -name *.tar.gz -mtime +$days -exec rm -rf {} \; #删除7天前的备份(注意:{} \中间有空格)

1.3. chmod +x /data/backup/ ordatabak.sh #添加脚本执行权限

1.4. vi /etc/crontab #编辑系统任务计划,添加以下代码到最后一行

 

30 2 * * * root /data/backup/ordatabak.sh

 

 #每天凌晨230分,以root用户执行ordatabak.sh备份文件

注意:30 2 * * * root /data/backup/ordatabak.sh

代表意义 分钟 小时 日期 月份

数字范围 0-59 0-23 1-31 1-12 0-6

 

 

2还原数据库

root用户登录到oracle系统

选择一个备份的数据库文件,解压

tar -zxvf   /data/backup/oracledata/mytest/2019_01_01.tar.gz

 

还原之前,必须清除掉数据库所有表,然后再执行下面的语句进行导入:

 

imp mytest/123456@orcl file=/data/backup/oracledata/mytest/2019_01_01.dmp full=y ignore=y log=/data/backup/oracledata/mytest/implog.log

 

 

十一. 常见语法参考

以上操作数据库已经设置完毕以下是给Oracle小白学习参考的命令大神不用理会

 

  grant create session to mytest;//授予mytest用户创建session的权限,即登陆权限,允许用户登录数据库

  grant unlimited tablespace to mytest;//授予mytest用户使用表空间的权限

  grant create table to mytest;//授予创建表的权限

  grante drop table to mytest;//授予删除表的权限

  grant insert table to mytest;//插入表的权限

  grant update table to mytest;//修改表的权限

grant unlimited tablespace to 用户   不限表空间

 

#查看

select tablespace_name,file_name from dba_data_files;

 

 

 

--查看表空间大小

SELECT FILE_NAME as 数据文件,TABLESPACE_NAME as 表空间名称,AUTOEXTENSIBLE as 自动扩展,STATUS as 状态,MAXBYTES as 可扩展最大值,USER_BYTES as 已使用大小,INCREMENT_BY as 自动扩展增量

FROM dba_data_files;

 

 

 

查看当前用户的缺省表空间

 

  SQL>select username,default_tablespace from user_users;

 

  查看当前用户的角色

 

  SQL>select * from user_role_privs;

 

  查看当前用户的系统权限和表级权限

 

  SQL>select * from user_sys_privs;

 

  SQL>select * from user_tab_privs;

 

  查看用户下所有的表

 

  SQL>select * from user_tables;

 

  1、用户

 

  查看当前用户的缺省表空间

 

  SQL>select username,default_tablespace from user_users;

 

  查看当前用户的角色

 

  SQL>select * from user_role_privs;

 

  查看当前用户的系统权限和表级权限

 

  SQL>select * from user_sys_privs;

 

  SQL>select * from user_tab_privs;

 

  显示当前会话所具有的权限

 

  SQL>select * from session_privs;

 

  显示指定用户所具有的系统权限

 

  SQL>select * from dba_sys_privs where grantee='GAME';

 

  2、表

 

  查看用户下所有的表

 

  SQL>select * from user_tables;

 

  查看名称包含log字符的表

 

  SQL>select object_name,object_id from user_objects

 

  where instr(object_name,'LOG')>0;

 

  查看某表的创建时间

 

  SQL>select object_name,created from user_objects where object_name=upper('&table_name');

 

  查看某表的大小

 

  SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments

 

  where segment_name=upper('&table_name');

 

  查看放在Oracle的内存区里的表

 

  SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;

 

  3、索引

 

  查看索引个数和类别

 

  SQL>select index_name,index_type,table_name from user_indexes order by table_name;

 

  查看索引被索引的字段

 

  SQL>select * from user_ind_columns where index_name=upper('&index_name');

 

  查看索引的大小

 

  SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments

 

  where segment_name=upper('&index_name');

 

  4、序列号

 

  查看序列号,last_number是当前值

 

  SQL>select * from user_sequences;

 

  5、视图

 

  查看视图的名称

 

  SQL>select view_name from user_views;

 

  查看创建视图的select语句

 

  SQL>set view_name,text_length from user_views;

 

  SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小

 

  SQL>select text from user_views where view_name=upper('&view_name');

 

  6、同义词

 

  查看同义词的名称

 

  SQL>select * from user_synonyms;

 

  7、约束条件

 

  查看某表的约束条件

 

  SQL>select constraint_name, constraint_type,search_condition, r_constraint_name

 

  from user_constraints where table_name = upper('&table_name');

 

  SQL>select c.constraint_name,c.constraint_type,cc.column_name

 

  from user_constraints c,user_cons_columns cc

 

  where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')

 

  and c.owner = cc.owner and c.constraint_name = cc.constraint_name

 

  order by cc.position;

 

  8、存储函数和过程

 

  查看函数和过程的状态

 

  SQL>select object_name,status from user_objects where object_type='FUNCTION';

 

  SQL>select object_name,status from user_objects where object_type='PROCEDURE';

 

  查看函数和过程的源代码

 

  SQL>select text from all_source where owner=user and name=upper('&plsql_name');

 

 

 

-------------------------------------------------------------------------------------------------------------------------------------

 

 

 

ORACLE

 

 

----常用数据字典

 

USER_   

  记录用户对象的信息,如user_tables包含用户创建的所有表; user_views,user_constraints;

ALL_   

记录用户对象的信息及被授权访问的对象信息;

DBA_

  记录数据库实例的所有对象的信息,如DBA_USERS包含数据库实例中

所有用户的信息,DBA的信息包含userall的信息;

V$ 当前实例的动态视图,包含系统管理和优化使用的视图;

GV_ 分布环境下所有实例的动态视图,包含系统管理和优化使用的视图, 这里的GV表示 Global v$的意思;

 如当前分布环境下启动多个实例:

set line 160 (每行显示160个字符)

select inst_id,sid,lmode from gv$lock where inst_id = 1 or inst_id=2;

 

oracle常用数据字典,oracle10增加了不少数据字典10g r1 1713个,r21870个:

1 基本的数据字典:

DBA_TABLES 所有用户的所有表的信息;

DBA_TAB_COLUMNS 所有用户的表的列(字段)信息;

DBA_VIEWS 所有用户的所有视图信息;

DBA_SYNONYMS 所有用户同义词信息;

DBA_SEQUENCES 所有用户序列信息;

DBA_CONSTRAINTS 所有用户的表约束信息;

DBA_INDEXES 所有用户索引的简要信息;

DBA_IND_COLUMNS 所有用户索引的列信息;

DBA_TRIGGERS 所有用户触发器信息 ;

DBA_SOURCE所有用户存储过程源代码信息;

DBA_PROCEDUS 所有用户存储过程;

DBA_SEGMENTS 所有用户段(表,索引,Cluster)使用空间信息;

DBA_EXTENTS 所有用户段的扩展段信息;

DBA_OBJECTS 所有用户对象的基本信息(包括素引,表,视图,序列等);

CAT 当前用户可以访问的所有的基表 ;

TAB 当前用户创建的所有基表,视图,同义词等;

DICT 构成数据字典的所有表的信息;

 

 

2 与数据库组件相关的数据字典:

数据库:

  V$DATABASE 同义词 V_$DATABASE,记录系统的运行情况;

表空间:  

DBA_TABLESPACES 记录系统表空间的基本信息;

DBA_DATA_FILES 记录系统数据文件及表空间的基本信息;

DBA_FREE_SPACE 记录系统表空间的剩余空间的信息;

控制文件:

V$CONTROLFILE 记录系统控制文件的路径信息;

V$PARAMETER 记录系统各参数的基本信息;

v$CONTROLFILE_RECORD_SECTION 记录系统控制运行的基本信息;

数据文件:

DBA_DATA_FILES 记录系统数据文件及表空间的基本信息;

v$DATAFILE 记录来自控制文件的数据文件信息;

v$FILESTAT 记录数据文件读写的基本信息 ;

 

 

 

 

    

--查看VGA信息:

 

show sga;

 

select * from v$sgastat;

 

--可以通过以下几个动态性能视图查看信息:

V$sysstat 系统统计信息

V$sesstat 用户会话统计信息  

V$pgastat 显示内存使用统计信息

V$sql_workarea SQL游标所用工作区的信息

V$ sql_workarea_active 当前系统工作区的信息

 

--V$process动态性能视图中可以查询到每个Oracle进程的PGA分配的内存和已使用的内存情况,

--其中PGA_used_mem表示已使用的,pag_alloc_mem表示已分配的,pga_max_men表示PGA的最大值。

 

SQL> select pid,pga_used_mem,pga_alloc_mem,pga_max_mem from v$process;

 

--查看后台进程:

 

SELECT * FROM v$bgprocess WHERE paddr <> '00';

 

--查看所有的表空间;

 

SQL> select tablespace_name from dba_data_files order by tablespace_name;

 

--查看表空间的名字及大小:

SQL> select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size   

from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name   

group by t.tablespace_name;

 

--创建表空间的语法是:

CREATE TABLESPACE tablespacename

DATAFILE 'filename' [SIZE integer [K|M]]  

[AUTOEXTEND [OFF|ON]];

--创建有多个数据文件的表空间:

SQL> create tablespace SALES

datafile 'd:/sales/SALES_DATA01.dbf' size 10m autoextend on next 10m maxsize 100m,

'd:/sales/SALES_DATA02.dbf' size 10m autoextend on next 10m maxsize

unlimited,'d:/sales/SALES_DATA03.dbf' size 10m;

 

--查看表空间的大小;

 

SQL> SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024 MB FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;

 

--查看表空间中数据文件存放的路径:

 

SQL> SELECT TABLESPACE_NAME, BYTES/1024/1024 FILE_SIZE_MB, FILE_NAME FROM DBA_DATA_FILES;

 

 

删除表空间:

SQL> drop tablespace worktbs including contents;

表空间已丢弃。

 

再次查询表空间会发现已经没有worktbs表空间了。

如果我们再次删除表空间会出现什么后果?

删除一个不存在的表空间:

SQL> drop tablespace worktbs including contents;

drop tablespace worktbs including contents

*

ERROR 位于第 1 :

ORA-00959: 表空间'WORKTBS'不存在

o 为表空间增加数据文件

SQL> alter tablespace sales add datafile 'd:/oracle/oradata/test/testtablespace/

sales_data04.dbf' size 10m autoextend on next 10m maxsize 100m,

'c:/oracle/oradata/test/testtablespace/sales_data05.dbf' size 10m autoextend on next 10m maxsize unlimited, 'c:/oracle/oradata/test/testtablespace/sales_data06.dbf' size 10m;

 

表空间已更改。

o 修改数据文件的大小

o 在数据文件中的可用空间未使用完时,允许对数据文件进行压缩,当压缩空间大小超过未使用空间大小时,将会产生错误。

SQL> alter database datafile 'c:/oracle/oradata/test/testtablespace/SALES_DATA04.dbf' resize 30m;

 

数据库已更改。

o 关闭表空间数据文件的自动扩展属性

o alter database

o datafile 'c:/SALES_DATA04.dbf' ,

o 'c:/SALES_DATA05.dbf',

o 'c:/SALES_DATA06.dbf'

o autoextend off;

o 打开表空间数据文件的自动扩展属性

o alter database

o datafile 'c:/SALES_DATA04.dbf' ,

o 'c:/SALES_DATA05.dbf',

o 'c:/SALES_DATA06.dbf'

o autoextend on;

 

o 修改表空间属性(离线)

o alter tablespace sales offline;   

o 修改表空间属性(在线)

o alter tablespace sales online;

o 修改表空间属性(只读)

o alter tablespace sales read only;

o 修改表空间属性(读写)

o alter tablespace sales read write;

o 如下系统表空间不得设置为 offline 或者 read only

o system tempundo undotbs  

 

o 移动表空间的数据文件

o 1. 使表空间脱机(系统表空间不得脱机,故不得移动)

o 2. 修改数据文件的名称

o 3. 执行 alter tablespace rename datafile 命令

o 4. 使表空间联机

o 第一步:alter tablespace sales offline;   

o 第二步:物理移动数据文件到目的地(可以是表空间的

o 部分数据文件,可以修改数据文件的名称)

o 第三步: 逻辑移动,修改控制文件的内容

 

o alter tablespace sales rename  

o datafile 'c:/sales01.dbf' to 'd:/sales02.dbf'

o --可以有多个数据文件,但是源文件

o 要在to的左边,目的文件要在to 右边,文件名称之间逗号分割.

o 第四步: 将表空间联机

o alter tablespace sales online;

o 第五步:查询dba_data_files确认

 

o 创建用户,指定默认表空间,磁盘配额

o create user rose identified by rose default

o tablespace sales quota 10m on sales;

o 给用户授权

o grant connect,resource,dba to rose;

o 用户登录

o connect rose/rose

o 创建表

o create table emp(eid number)  

o 该表默认放在表空间 sales

o 查询用户的存储限额dba_ts_quotas  

o 删除表空间(如果该表空间为空)

o drop tablespace sales ;

o 删除表空间的同时删除数据文件(不为空)

o drop tablespace sales including contents and datafiles;

o 创建表的同时指定该表的存储位置

o create table mytab(tid int ) tablespace sales;

 

o 删除表空间(如果该表空间为空)

o drop tablespace sales ;

o 删除表空间的同时删除数据文件(不为空)

o drop tablespace sales including contents and datafiles;

o 创建表的同时指定该表的存储位置

o create table mytab(tid int ) tablespace sales;

 

 

o 查看当前用户每个表占用空间的大小:

o select segment_name,sum(bytes)/1024/1024 from user_extents group by segment_name  

o 查看每个表空间占用空间的大小:

o select tablespace_name,sum(bytes)/1024/1024 from dba_segments group by tablespace_name  

 

 

只有用合法的用户帐号才能访问Oracle数据库

Oracle 有几个默认的数据库用户   

Scott/tiger

 

创建一个名称为 martin 的用户,其密码为 martinpwd

CREATE USER MARTIN IDENTIFIED BY martinpwd

DEFAULT TABLESPACE USERS

TEMPORARY TABLESPACE TEMP;

 

GRANT 命令可用于为用户分配权限或角色;

CONNECT角色允许用户连接至数据库,并创建数据库对象。

GRANT CONNECT TO MARTIN;  

 

RESOURCE角色允许用户使用数据库中的存储空间。

GRANT RESOURCE TO MARTIN;  

 

此系统权限允许用户在当前模式中创建序列,此权限包含在CONNECT角色中。

GRANT CREATE SEQUENCE TO MARTIN;  

 

GRANT CREATE SESSION TO MARTIN;

 

GRANT CREATE TABLE TO MARTIN;

 

GRANT CREATE VIEW TO MARTIN;

 

GRANT CREATE SEQUENCE TO MARTIN;

 

 

 

授予用户 MARTIN 操作emp表对象的权限 :

允许用户查询 TEST 表的记录

GRANT SELECT ON EMP TO MARTIN;  

 

允许用户更新 TEST 表中的记录

GRANT UPDATE ON EMP TO MARTIN;  

 

允许用户插入、删除、更新和查询 TEST 表中的记录

GRANT ALL ON EMP TO MARTIN;  

 

 

ALTER USER 命令可用于更改口令:

修改 MARTIN 用户的密码:

ALTER USER MARTIN IDENTIFIED BY martinpass;

DROP USER 命令用于删除用户:  

删除 MARTIN 用户模式:

DROP USER MARTIN CASCADE;

 

 

alter session set nls_date_format='yyyy-mm-dd';

 

 

 

1开始创建数据库:

 

----------------使用工具创建 (步骤省略)

 

2登陆新数据库  

run/sqlplus sys/sys@ACCP

(此时如果登陆老数据库使用 sqlplus sys/sys@orac9i)

2创建表空间:sales (用来保存accp数据库的数据)

create tablespace TestTBS datafile 'd:/sales/sales001.dbf' size 10m autoextend on next 10m maxsize 30m,'d:/sales/sales002.dbf' size 10m autoextend on next 10m maxsize 30m

3创建用户accp并授予权限

grant connect to accp;

grant resource to accp;

4accp用户身份登陆accp数据库

create table person(pid number(5),pname varchar2(20)) tablespace testtbs;

insert into person values(1001,'TOM');

commit;

select table_name,tablespace_name from user_tables;

select * from person;

posted @ 2019-01-03 13:46  小⑦  阅读(350)  评论(0)    收藏  举报