Oracle(关系数据库)

Oracle11g 单实例

注意事项

  • swap分区需要16GB以上
  • 需要配置hosts文件
  • Centos 6.8 x86_64

YUM源配置

#clean OS default repo
mkdir /etc/yum.repos.d/old && mv /etc/yum.repos.d/C* /etc/yum.repos.d/old/  
yum clean all
#add extend repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

创建组并指定用户所属组

groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle

创建目录

mkdir -p /app/oracle11g

修改数据库权限

chown -R oracle.oinstall /app/

内核参数初始化

在/etc/sysctl.conf末尾增加以下内容

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4195045376
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

文件描述符修改

在/etc/security/limits.conf末尾增加

oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

切换oracle用户,配置环境变量

su - oracle
vim ~/.bash_profile

文件末尾追加,注意修改实例名称和位置

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/app/oracle11g; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=dingdb; export ORACLE_SID
NLS_LANG=American_America.ZHS16GBK; export NLS_LANG
ORA_NLS10=$ORACLE_HOME/nls/data; export ORA_NLS10
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
SHLIB_PATH=$LD_LIBRARY_PATH; export SHLIB_PATH
CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

增加hosts

echo "192.168.2.20    odb01.prod.ding" >> /etc/hosts

上传程序文件,并解压

cd /opt
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
cd /opt/database

安装必要软件

Oracle同时需要64位软件和32位软件,但有一个问题,安装了32位软件后警告依旧存在(我安装的包比他要求的新)。

百度有人解释到:Oracle11g检测不到高版本软件,好吧,就这样。

64位软件包

yum install  binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libXext libX11 libXau libxcb libXi make sysstat libaio-devel  -y

32位软件包

yum install libaio.i686 libaio-devel.i686 compat-libstdc++-33.i686 elfutils-libelf-devel.i686 glibc.i686 glibc-devel.i686 libgcc.i686  libstdc++.i686  unixODBC.i686 unixODBC-devel.i686 libaio-devel.x86_64 unixODBC.x86_64 libXext.i686 -y

切换到图形界面

root用户执行,或sudo执行

xhost +

netca

选择"Listen Configuration"然后一直下一步
完成后查看 1521端口是否启动

dbca

数据库字符集(database character set):
American_America.ZHS16GBK;

**第9步时,自定义字符集。
我们开发一般选择:ZHS16GBK
**

监听的启动和停止

su - oracle
启动
/app/oracle11g/product/11.2.0/dbhome_1/bin/lsnrctl start
停止
/app/oracle11g/product/11.2.0/dbhome_1/bin/lsnrctl stop

启动Oracle EM(Web管理)

su - oracle
/app/oracle11g/product/11.2.0/dbhome_1/bin/emctl start dbconsole

注意!!!

关闭deferred_segment_creation特性,否则空表无法导出

alter system set deferred_segment_creation=false

数据库的启动和停止

命令行登录
sqlplus / as sysdba
启动
startup
停止
shutdown immediate

启动Oracle EM(Web管理)

su - oracle
/app/oracle11g/product/11.2.0/dbhome_1/bin/emctl start dbconsole

 

 

Oracle12c 单实例

注意事项

  • swap分区需要16GB以上
  • 需要配置hosts文件
  • Centos 6.8 x86_64

YUM源配置

#clean OS default repo
mkdir /etc/yum.repos.d/old && mv /etc/yum.repos.d/C* /etc/yum.repos.d/old/  
yum clean all
#add extend repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

创建组并指定用户所属组

groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle

创建目录

mkdir -p /app/oracle12c

修改数据库权限

chown -R oracle.oinstall /app/

内核参数初始化

在/etc/sysctl.conf末尾增加以下内容

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4195045376
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

文件描述符修改

在/etc/security/limits.conf末尾增加

oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

切换oracle用户,配置环境变量

su - oracle
vim ~/.bash_profile

文件末尾追加,注意修改实例名称和位置

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/app/oracle12c; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1; export ORACLE_HOME
ORACLE_SID=dingdb; export ORACLE_SID
NLS_LANG=American_America.zhs16gbk; export NLS_LANG
ORA_NLS10=$ORACLE_HOME/nls/data; export ORA_NLS10
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
SHLIB_PATH=$LD_LIBRARY_PATH; export SHLIB_PATH
CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

增加hosts

echo "192.168.2.20    odb01.prod.ding" >> /etc/hosts

上传程序文件,并解压

cd /opt
unzip linuxamd64_12102_database_1of2.zip
unzip linuxamd64_12102_database_2of2.zip
cd /opt/database

安装必要软件

yum install  binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libXext libX11 libXau libxcb libXi make sysstat libaio-devel  -y

切换到图形界面

root用户执行,或sudo执行

xhost +

netca

选择"Listen Configuration"然后一直下一步
完成后查看 1521端口是否启动

dbca

数据库字符集(database character set):
American_America.ZHS16GBK;

**第9步时,自定义字符集。
我们开发一般选择:ZHS16GBK
**

启动Oracle EM(Web管理)

su - oracle
/app/oracle11g/product/11.2.0/dbhome_1/bin/emctl start dbconsole

注意!!!

关闭deferred_segment_creation特性,否则空表无法导出

alter system set deferred_segment_creation=false

监听的启动和停止

su - oracle
启动
/app/oracle12c/product/12.1.0/db_1/bin/lsnrctl start
停止
/app/oracle12c/product/12.1.0/db_1/bin/lsnrctl stop

数据库的启动和停止

命令行登录
sqlplus / as sysdba
启动
startup
停止
shutdown immediate

Oracle 字符集 知识点

数据库字符集:(按照开发要求)
国家字符集:(默认)
客户端(NLS_LANG)

NLS_LANG各部分含义如下: 
LANGUAGE指定: 
-Oracle消息使用的语言 
-日期中月份和日显示 
TERRITORY指定 
-货币和数字格式 
-地区和计算星期及日期的习惯 
CHARACTERSET: 
-控制客户端应用程序使用的字符集 
通常设置或者等于客户端(如Windows)代码页 
或者对于unicode应用设置为UTF8

startup,startup mount,startup nomount之间的区别

startup nomount选项:(读初始化参数文件,启动实例)
startup nomount选项启动实例,但不安装数据库。当数据库以这个模式启动时,参数文件被读取;后台进程和内存结构被启动;但它们不被附加或与数据库的磁盘结构进行通信。当实例处于这个状态时,数据库是不可使用的。
通常启动到这里可以做create database , create or recreate control file 或者是mount standby database等动作,修改parameter也是可以的。
 
startup mount 选项:(打开控制文件)
startup nount选项执行STARTUP NOMOUNT选项的所有工作,但另外附加数据库结构并与这些结构进行交互。这时Oracle从它用来查找和附加到主要数据库结构的控制文件中获得信息。当处于这个模式时,可以执行一些管理型任务,比如恢复。
读取control file 
通常启动到这里的目的有
recover dtabase ; backup database ; rename db files ,change archivelog mode等
 
startup open 选项:(打开数据文件,日志文件)
如果STARTUP命令行上没有指定任何模式,STARTUP OPEN选项就是默认的启动模式。STARTUP OPEN选项执行STARTUP NOMOUNT和STARTUP MOUNT选项的所有步骤。这个选项把数据库变成对所有用户都时可用的。
open datafile ,online redo log
 
startup force选项:
如果在用正常方式启动数据库时遇到了困难,可以使用STARTUP FORCE选项。STARTUP FORCE选项首先异常关闭数据库,然后重新启动它。
 
STARTUP RESTRICT选项:
STARTUP RESTRICT选项启动数据库并把它置入OPEN模式,但只给拥有RESTRICTED SESSION权限的用户赋予访问权。

Oracle导出表补全

deferred_segment_creation在11.2.0.4版本的新增参数,默认是true。
这会导致在exp时,没有segment的对象不会导出。

解决:

  1. 设置deferred_segment_creation的值为false
    此方法只对以后的表有效,之前的表还是没分配空间。
alter system set deferred_segment_creation=false scope=both;
  1. 创建表的时候声明立即创建Segment
create table table_name segment creation immediate;

  1. 对于已经创建但是还没有Segment的表来说,
--找到需要初始化的表,并生成语句
 select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;

--执行生成语句

来使其创建出分配空间,
当然也可以插入一条数据,使其创建分配空间;

32位Oracle9i 调整最大内存超过1.7GB后,数据库挂了

  1. 导入数据,调试成功。
  2. 出于性能考虑,盲目增加了Oracle内存,超过1.7GB,导致数据库故障,百般调试失败,重新建库(7点半-12点)
  3. 建表,建立用户,导入数据库报错,imp 00017 错误603,百度没有解决办法,有点慌了,(期间各种扩展表空间,无效)担心故障处理不了。
  4. 强制自己冷静,看日志,http://blog.itpub.net/11976525/viewspace-702029/,
  5. 临时表空间设置的是自动扩展,不回收,虽然扩展但是无效。
  6. 执行如下命令后,导入目前正常。
查看临时文件
select FILE#,TS#,NAME,STATUS,ENABLED from v$tempfile;

查看临时文件是不是自动扩展
select FILE_NAME,FILE_ID,TABLESPACE_NAME,AUTOEXTENSIBLE ,STATUS from dba_temp_files;

alter database tempfile '..../temp.dbf' autoextend off

血淋淋的教训:
1.盲目操作,没有按照主库进行配置,错了活该。
2.遇到问题不看日志,活该。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值