标签:
#sed -i "s/HOSTNAME=localhost.localdomain/HOSTNAME=oracledb/" /etc/sysconfig/network
# vi /etc/hosts
192.168.1.160 oracledb
#sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
# setenforce 0
[root@oracledb ~]# groupadd oinstall
[root@oracledb ~]# groupadd dba
[root@oracledb ~]# useradd -g oinstall -G dba oracle
[root@oracledb ~]# passwd oracle
[root@oracledb ~]# mkdir -p
/opt/oracle/app/
[root@oracledb ~]# mkdir -p /opt/oracle/oradata/
[root@oracledb ~]# chmod 755/opt/oracle/
[root@oracledb ~]# chmod 775/opt/oracle/app/
将该目录的所有者设置为oracle : [root@oracledb ~]# chown oracle.oinstall -R
/opt/oracle/
#vim/etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
运行#sysctl -p ,即可马上生效。
运行 #sysctl -p 命令报错
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
解决方法,执行如下命令:
#modprobe bridge
#lsmod|grep bridge
#vim/etc/security/limits.conf
在最后面添加如下内容:
oracle soft
nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
# vi/etc/pam.d/login
session required
pam_namespace.so #下面添加一条pam_limits.so
session required pam_limits.so
# vi/etc/profile
在末尾添加如下语句:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
切换到oracle用户下:
# vi ~/.bash_profile
umask 022
export ORACLE_BASE=/opt /oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=zydev
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
[oracle@oracledb ~]$ source .bash_profile #立即生效
上传文件到/usr/local/src下
[root@oracledb~]# unzip /usr/local/src/linux.x64_11gR2_database_1of2.zip
[root@oracledb~]# unzip /usr/local/src/linux.x64_11gR2_database_2of2.zip
解决字符集问题
export LANG=en_US
/usr/local/src/database# ./ runInstaller
#输入接受一些安全问题的邮件地址,选择不接受
# 选择安装数据库软件并创建数据,也可以选择第二项仅安装数据库软件
#选择服务器版本
#单实例数据库
#高级模式安装
#添加支持的语言
#选择要安装的版本
#选择你要安装的服务
#安装数据库目录
#数据库名及服务名 #开启自动内存管理 #设置默认编码为UTF8
#启用Oracle企业管理控制台OEM
#选择数据库文件目录
#自动备份设置
#设置数据库用户名和密码
#授权的组
#检查Oracle一些安装要求,包都已经安装,直接忽略
#开始安装
安装完成后,会出来一个对话框,提示使用root用户执行这两个脚本/opt/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
opt/oracle/oraInventory/orainstRoot.sh
至此整个数据库安装完成。
[root@oracledb ~]# su –oracle
[oracle@oracledb ~]# sqlplus / as sysdba
SQL> startup #启动数据库实例
SQL> shutdown immediate #关闭数据库实例
SQL> select * from tab; #查看所有表
SQL> select name from v$datafile #查看数据库存放目录
SQL> show parameter service #查看服务名
SQL> select * from v$instance; #查看实例名
SQL> select name from v$database; #查看数据库名
SQL> select * fromdba_users; #查看所有用户信息
SQL> select username,password from dba_users; #只查询用户和密码
SQL> select * fromv$pwfile_users; #查看具有sysdba权限的用户
SQL> select * fromdba_ustats; #查看当前用户信息
SQL> select * fromuser_sys_privs #查看当前用户系统权限
SQL> select * fromuser_role_privs #查看当前用户角色
SQL> select * fromdba_sys_privs #查看指定用户所具有的系统权限
SQL> select * fromv$version #查看oracle版本
SQL> select * fromuser_views #查看视图信息
[root@oracledb ~]# lsnrctl start #开启远程监听端口
###远程连接信息
#sys和system用户区别
1>.存储数据重要性不同
sys存放数据字典的基表和视图,由数据库自己维护,任何用户都不能手动更改,sys用户拥有dba、sysdba、sysoper等角色或权限,是oracle权限最高用户。
而system用户只存放一些一级的内部数据,如oracle的一些特性或工具的管理信息。用于数据库管理,System用户拥有普通dba角色权限。
2>.权限不同
sys用户具有sysdba或sysoper系统权限,登录em也只能用这两个身份,不能用normal。
system用户只能用normal身份登录em,除非你对它授予了sysdba的系统权限或syspoer系统权限。
#sysdba和sysoper两个系统权限区别
normal是普通用户
sysdba拥有最高的系统权限,登录后是sys
sysoper主要用来启动、关闭数据库,sysoper登录后用户是public
#dba和sysdba的区别
先了解下oracle服务的创建过程:创建实例 --> 启动实例 --> 创建数据库
启动过程:实例启动 --> 装载数据库 --> 打开数据库
sysdba是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,它就已经存在,以sysdba身份登录,装载数据库,打开数据库。只有数据库打开了,或者整个数据库完全启动后,dba角色才有存在的基础。
在 Oracle 用户下执行查询命令
su - oracle
lsnrctl status
查询结果会显示监听到的实例名称及数量。
在启动 Oracle 监听前,先检查 Oracle 监听状态,如果已经启动,需要先停止, 再重启
su - oracle
lsnrctl start
启动过程中,会自动检测监听到的实例名称及数量。
su - oracle
lsnrctl stop
检查 Oracle 监听状态,查看是否停止。
方法一:检查 oracle 进程是否启动
ps -ef | grep oracle
方法二:查看 Oracle 实例启动状态
su - oracle
export ORACLE_SID=SINDEV
sqlplus /nolog
conn / as sysdba
select instance_name,status from v$instance;
exit
查看 status 状态,为 OPEN 即说明该实例已经启动。
先检查 Oracle 服务是否启动,如果已经启动,需要先停止 Oracle 服务再启动;
启动 Oracle服务命令:
su - oracle
export ORACLE_SID=SINDEV
sqlplus /nolog
conn / as sysdba
startup
select instance_name,status from v$instance;
exit
查看 status 状态,为 OPEN 即说明该实例已经启动。
停止Oracle 服务命令
su - oracle
export ORACLE_SID=SINDEV
sqlplus /nolog
conn / as sysdba
shutdown immediate
exit
以 sysdba 的角色登录数据库,执行 SQL:
select t.file#,
‘alter database datafile ‘‘‘ || t.NAME || ‘‘‘ resize ‘ ||
(nvl(round((select max(a.block_id) * 8 / 1024
from dba_extents a
where a.file_id = t.FILE#)),0) + 10) || ‘M;‘,
t.name,
t.BYTES / 1024 / 1024 size_M,
nvl(round((select max(a.block_id) * 8 / 1024
from dba_extents a
where a.file_id = t.FILE#)),0) + 10
from v$datafile t;
对查询结果进行分析,将可压缩量大的表空间进行重分配大小。
进入到 $ORACLE_BASE$/diag/rdbms/$sid/$sid 目录下,可以对 trace 目录下的轨迹日志文件进行清理,释放一定的存储空间:
find trace -ctime +30 | xargs rm -fr
参数 +30 意思是保留30天的存档,30天之前的日志全部删除。
此操作只针对已经启用归档模式的数据库,执行前先查询归档模式是否启用:
select instance_name,archiver from v$instance;
查询结果如果为 STARTED,则表明已经启用归档,此时,可以手动清理旧的归档日志,释放归档日志占用的存储空间,执行命令:
su - oracle
rman target /
crosscheck archivelog all;
delete expired archivelog all;
(或者执行;delete archivelog until time ‘sysdate-15‘; 保留15天的存档)
exit
对数据文件进行查看分析,将占用存储空间特别大(如超过20G)的数据文件进行重建.
因临时表空间、UNDO表空间相对而言比较独立,如果临时表空间、UNDO表空间占用实际存储空间太大,可以参考此方法将临时表空间或UNDO表空间重建.
查看数据库物理文件占用的存储空间大小:
cd $ORACLE_BASE/oradata/$sid
ls -lh
以下是删除临时表空间并释放存储空间的步骤 (以 sysdba 执行 SQL):
a.查看临时表空间大小:
select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
b.新增中间临时表空间:
create temporary tablespace Tblspace_TEMP1 TEMPFILE ‘/opt/oradata/Tblspace_TEMP1.dbf‘ SIZE 32m REUSE
AUTOEXTEND ON NEXT 512k MAXSIZE UNLIMITED;
b.将数据库/某一用户临时表空间切换到中间临时表空间
alter database default temporary tablespace Tblspace_TEMP1;
-- 所有用户的默认临时表空间都将切换为新的临时表空间:
alter user accfee temporary tablespace Tblspace_TEMP1;
-- 更改某一用户的临时表空间
c.删除临时表空间
drop tablespace Tblspace_TEMP including contents and datafile;
在服务器上检查物理文件是否删除,如果没有,可手动执行操作系统删除命令.
d.重建临时表空间
create temporary tablespace Tblspace_TEMP TEMPFILE ‘/opt/oradata/Tblspace_TEMP.dbf‘ SIZE 32m REUSE
AUTOEXTEND ON NEXT 512k MAXSIZE UNLIMITED;
e.将数据库/某一用户临时表空间切换到重建临时表空间
alter database default temporary tablespace Tblspace_TEMP;
-- 所有用户的默认临时表空间都将切换为新的临时表空间:
alter user accfee temporary tablespace Tblspace_TEMP;
-- 更改某一用户的临时表空间
f. 删除中间临时表空间
drop tablespace Tblspace_TEMP1 including contents and datafile;
至此,临时表空间所占用的存储空间已经释放.
在服务器上检查物理文件是否删除,如果没有,可手动执行操作系统删除命令.
案例二
重建 UNDO 表空间 (以sysdba 执行SQL)
a.查看 UNDO 表空间大小
select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_data_files;
b.新增中间 UNDO 表空间
CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE ‘/opt/oradata/undotbs2.dbf‘ size 100M;
c.将数据库 UNDO 表空间迁移到中间 UNDO 表空间
alter system set undo_tablespace=UNDOTBS2 scope=both;
d.将 UNDO 表空间置为离线
alter tablespace UNDOTBS1 offline;
e.删除 UNDO 表空间
drop tablespace UNDOTBS1 including contents AND DATAFILES CASCADE CONSTRAINTS ;
在服务器上检查物理文件是否删除,如果没有,可手动执行操作系统删除命令.
f.重建 UNDO 表空间
CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE ‘/opt/oradata/undotbs1.dbf‘ size 100M;
g.切换中间 UNDO 表空间
alter system set undo_tablespace=UNDOTBS1 scope=both;
h.删除中间 UNDO 表空间
drop tablespace UNDOTBS2 including contents AND DATAFILES CASCADE CONSTRAINTS ;
在服务器上检查物理文件是否删除,如果没有,可手动执行操作系统删除命令.
标签:
原文地址:http://www.cnblogs.com/zydev/p/4760362.html