oracle11G在linux环境下的卸载操作

1.使用SQL*PLUS停止数据库

[oracle@OracleTest oracle]$ sqlplus / as sysdba
SQL> shutdown [immediate]
SQL> exit

2.停止Listener

[oracle@OracleTest oracle]$ lsnrctl stop

3.停止HTTP服务

[root@OracleTest /root]# service httpd stop

4.用su或者重新登录到root(如想重新安装可以保留oracle用户,省得输入环境变量了)

5.将安装目录删除

[root@OracleTest /root]# rm -rf /u01/oracle/
[root@OracleTest /root]# rm -rf /u01/oraInventory/

6.将/usr/bin下的文件删除

[root@OracleTest /root]# rm /usr/local/bin/dbhome
[root@OracleTest /root]# rm /usr/local/bin/oraenv
[root@OracleTest /root]# rm /usr/local/bin/coraenv

7.将/etc/oratab删除

[root@OracleTest /root]# rm /etc/oratab

8.将/etc/oraInst.loc删除

[root@OracleTest /root]# rm /etc/oraInst.loc

9.将oracle用户删除(若要重新安装,可以不删除)

[root@OracleTest /root]# userdel –r oracle

10.将用户组删除(若要重新安装,可以不删除)

[root@OracleTest /root]# groupdel oinstall
[root@OracleTest /root]# groupdel dba

11.将启动服务删除

[root@OracleTest /root]# chkconfig --del dbora

到此为止重启后,你的Linux系统下的Oracle数据库已完全删除了!!!

以上是CentOS5.4+Oracle 11g的环境。

如果要再次安装, 最好先做一些备份工作。
包括用户的登录脚本,数据库自动启动关闭的脚本,和Listener自动启动的脚本。
要是有可能连创建数据库的脚本也保存下来

CentOS7安装Oracle 11gR2 图文详解
一、环境准备
安装包:
1.VMware-workstation-full-11.1.0-2496824.exe2.CentOS-7-x86_64-DVD-1511.iso3.linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
以上不是重点,不给下载地址,不描述安装过程,安装完CentOS 7,截图如下:
oracle11G在linux环境下的卸载操作_第1张图片

二、安装Oracle前准备
1.创建运行oracle数据库的系统用户和用户组

[sonny@localhost ~]$ su root  #切换到root
Password: 
[root@localhost sonny]# groupadd oinstall  #创建用户组oinstall
[root@localhost sonny]# groupadd dba  #创建用户组dba
[root@localhost sonny]# useradd -g oinstall -g dba -m oracle  #创建oracle用户,并加入到oinstall和dba用户组
[root@localhost sonny]# passwd oracle  #设置用户oracle的登陆密码,不设置密码,在CentOS的图形登陆界面没法登陆
Changing password for user oracle.
New password:   # 密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:   # 确认密码passwd: all authentication tokens updated successfully.
[root@localhost sonny]# id oracle # 查看新建的oracle用户
uid=1001(oracle) gid=1002(dba) groups=1002(dba)
[root@localhost sonny]# 

为啥要创建oinstall用户组及dba组? 参考:http://www.oracle.com/technetwork/cn/articles/hunter-rac11gr2-iscsi-2-092412-zhs.html#13
理论上单例按照需要3种用户组,实际只建两个oinstall和dba,后面再安装oracle数据库的时候把OSOPER组也设置是dba组。
a.oracle 清单组(一般为oinstall):
OINSTALL 组的成员被视为 Oracle 软件的“所有者”,拥有对 Oracle 中央清单 (oraInventory) 的写入权限。在一个 Linux 系统上首次安装 Oracle 软件时,
OUI 会创建 /etc/oraInst.loc 文件。该文件指定 Oracle 清单组的名称(默认为 oinstall)以及 Oracle 中央清单目录的路径。
b.数据库管理员(OSDBA,一般为 dba):
OSDBA 组的成员可通过操作系统身份验证使用 SQL 以 SYSDBA 身份连接到一个 Oracle 实例。该组的成员可执行关键的数据库管理任务,如创建数据库、启动和关
闭实例。该组的默认名称为dba。SYSDBA 系统权限甚至在数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。不要混淆 SYSDBA
系统权限与数据库角色 DBA。DBA 角色不包括 SYSDBA 或 SYSOPER 系统权限。
c.数据库操作员组(OSOPER,一般为 oper):
OSOPER 组的成员可通过操作系统身份验证使用 SQL 以 SYSOPER 身份连接到一个 Oracle 实例。这个可选组的成员拥有一组有限的数据库管理权限,如管理和运行备份。
该组的默认名称为oper。SYSOPER 系统权限甚至在数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。要使用该组,选择 Advanced 安装类型来安装 Oracle 数据库软件。
2.创建oracle数据库安装目录

[sonny@localhost ~]$ su root
Password: 
[root@localhost sonny]# mkdir -p /data/oracle  #oracle数据库安装目录
[root@localhost sonny]# mkdir -p /data/oraInventory  #oracle数据库配置

文件目录

`[root@localhost sonny]# mkdir -p /data/database  #oracle数据库软件包解`压目录
[root@localhost sonny]# cd /data
[root@localhost data]# ls  #创建完毕检查一下(强迫症)
database  oracle  oraInventory
[root@localhost data]# chown -R oracle:oinstall /data/oracle 

#设置目录所有者为oinstall用户组的oracle用户

[root@localhost data]# chown -R oracle:oinstall /data/oraInventory
[root@localhost data]# chown -R oracle:oinstall /data/database
[root@localhost data]#  

3.修改OS系统标识
oracle默认不支持CentOS系统安装,Oracle Database 11g Release 2 的 OS要求参考: https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#LADBI1106
我安装是64位数据库,On Linux x86-64:Red Hat Enterprise Linux 7 (RHEL 7)
另外,CentOS7.0.1511 基于 RHEL7.2 参考:http://www.linuxidc.com/Linux/2015-12/126283.htm
修改文件 /etc/RedHat-release

[sonny@localhost data]$ su root
Password: 
[root@localhost data]# cat /proc/version 
Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015
[root@localhost data]# cat /etc/redhat-release  
CentOS Linux release 7.2.1511 (Core) 
[root@localhost data]# vi /etc/redhat-release
[root@localhost data]# cat /etc/redhat-release 
redhat-7 
[root@localhost data]#  

4.安装oracle数据库所需要的软件包
重复一遍,我安装时Oracle Database 11g Release 2 64位数据库。
Oracle Database Package Requirements for Linux x86-64 如下:(参考:https://docs.oracle.com/cd/E11882_01/install.112/e47689/pre_install.htm#BABCFJFG)
操作系统:Oracle Linux 7 and Red Hat Enterprise Linux 7
The following packages (or later versions) must be installed:
binutils-2.23.52.0.1-12.el7.x86_64
compat-libcap1-1.10-3.el7.x86_64 gcc-4.8.2-3.el7.x86_64 gcc-c+±4.8.2-3.el7.x86_64
glibc-2.17-36.el7.i686
glibc-2.17-36.el7.x86_64
glibc-devel-2.17-36.el7.i686
glibc-devel-2.17-36.el7.x86_64
ksh
libaio-0.3.109-9.el7.i686
libaio-0.3.109-9.el7.x86_64
libaio-devel-0.3.109-9.el7.i686
libaio-devel-0.3.109-9.el7.x86_64
libgcc-4.8.2-3.el7.i686
libgcc-4.8.2-3.el7.x86_64
libstdc+±4.8.2-3.el7.i686
libstdc+±4.8.2-3.el7.x86_64
libstdc+±devel-4.8.2-3.el7.i686
libstdc+±devel-4.8.2-3.el7.x86_64
libXi-1.7.2-1.el7.i686
libXi-1.7.2-1.el7.x86_64
libXtst-1.2.2-1.el7.i686
libXtst-1.2.2-1.el7.x86_64 make-3.82-19.el7.x86_64
sysstat-10.1.5-1.el7.x86_64
一个一个的安装,命令也很简单,反正文档要求高版本也可以:

[sonny@localhost data]$ su root
Password: 
[root@localhost data]# yum install binutils

省略…
5.关闭防火墙 CentOS 7.2默认使用的是firewall作为防火墙

[sonny@localhost /]$ su root
Password: 
[root@localhost /]# systemctl status firewalld.service

#查看防火墙状态,运行中

 firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2016-04-07 18:54:29 PDT; 2h 20min ago
 Main PID: 802 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─802 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Apr 07 18:54:25 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Apr 07 18:54:29 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
[root@localhost /]# systemctl stop firewalld.service  #关闭防火墙
[root@localhost /]# systemctl status firewalld.service  #再次查看防火墙状态,发现已关闭
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Thu 2016-04-07 21:15:34 PDT; 9s ago
 Main PID: 802 (code=exited, status=0/SUCCESS)

Apr 07 18:54:25 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Apr 07 18:54:29 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
Apr 07 21:15:33 localhost systemd[1]: Stopping firewalld - dynamic firewall daemon...
Apr 07 21:15:34 localhost systemd[1]: Stopped firewalld - dynamic firewall daemon.
[root@localhost /]# systemctl disable firewalld.service  #禁止使用防火墙(重启也是禁止的)
Removed symlink /etc/systemd/system/dbus-org.Fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@localhost /]# 
 防火墙先禁用,搞好之后再配置,个人虚拟机,要毛线防火墙~~
6.关闭selinux(需重启生效)
[root@localhost /]# vi /etc/selinux/config
[root@localhost /]# cat /etc/selinux/config

This file controls the state of SELinux on the system.

SELINUX= can take one of these three values:

enforcing - SELinux security policy is enforced.

permissive - SELinux prints warnings instead of enforcing.

disabled - No SELinux policy is loaded.

SELINUX=disabled #此处修改为disabled

SELINUXTYPE= can take one of three two values:

targeted - Targeted processes are protected,

minimum - Modification of targeted policy. Only selected processes are protected.

mls - Multi Level Security protection.

SELINUXTYPE=targeted

[root@localhost /]#
为啥要关闭selinux?因为selinux太高深,非专业人士搞不懂~~
7.修改内核参数
红色部分为添加代码
[sonny@localhost /]$ su root
Password:
[root@localhost /]# vi /etc/sysctl.conf
[root@localhost /]# cat /etc/sysct.confcat: /etc/sysct.conf: No such file or directory
[root@localhost /]# cat /etc/sysctl.conf

System default settings live in /usr/lib/sysctl.d/00-system.conf.

To override those settings, enter new settings here, or in an /etc/sysctl.d/.conf file

For more information, see sysctl.conf(5) and sysctl.d(5).net.ipv4.icmp_echo_ignore_broadcasts = 1

net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
kernel.shmall = 2097152 #共享内存的总量,8G内存设置:20971524k/1024/1024
kernel.shmmax = 2147483648 #最大共享内存的段大小
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
[root@localhost /]#
使配置参数生效
[root@localhost /]# sysctl -p
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
sysctl: setting key “fs.file-max”: Invalid argument
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
sysctl: setting key “kernel.shmall”: Invalid argument
kernel.shmall = 2097152 #共享内存的总量,8G内存设置:2097152
4k/1024/1024
sysctl: setting key “kernel.shmmax”: Invalid argument
kernel.shmmax = 2147483648 #最大共享内存的段大小
sysctl: setting key “kernel.shmmni”: Invalid argument
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
sysctl: setting key “net.ipv4.ip_local_port_range”: Invalid argument
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
[root@localhost /]#
8.对oracle用户设置限制,提高软件运行性能(红色为添加部分)
[sonny@localhost /]$ su root
Password:
[root@localhost /]# vi /etc/security/limits.conf
[root@localhost /]# cat /etc/security/limits.conf

/etc/security/limits.conf

#This file sets the resource limits for the users logged in via PAM.
#It does not affect resource limits of the system services.

#Also note that configuration files in /etc/security/limits.d directory,
#which are read in alphabetical order, override the settings in this
#file in case the domain is the same or more specific.
#That means for example that setting a limit for wildcard domain here
#can be overriden with a wildcard setting in a config file in the
#subdirectory, but a user specific setting here can be overriden only
#with a user specific setting in the subdirectory.

#Each line describes a limit for a user in the form:

#

#Where:
# can be:

- a user name

- a group name, with @group syntax

- the wildcard *, for default entry

- the wildcard %, can be also used with %group syntax,

for maxlogin limit

# can have the two values:

- “soft” for enforcing the soft limits

- “hard” for enforcing hard limits

# can be one of the following:

- core - limits the core file size (KB)

- data - max data size (KB)

- fsize - maximum filesize (KB)

- memlock - max locked-in-memory address space (KB)

- nofile - max number of open file descriptors

- rss - max resident set size (KB)

- stack - max stack size (KB)

- cpu - max CPU time (MIN)

- nproc - max number of processes

- as - address space limit (KB)

- maxlogins - max number of logins for this user

- maxsyslogins - max number of logins on the system

- priority - the priority to run user process with

- locks - max number of file locks the user can hold

- sigpending - max number of pending signals

- msgqueue - max memory used by POSIX message queues (bytes)

- nice - max nice priority allowed to raise to values: [-20, 19]

- rtprio - max realtime priority

#

#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

End of file

[root@localhost /]#
9.配置用户的环境变量(红色部分为添加代码)
[root@localhost /]# vi /home/oracle/.bash_profile
[root@localhost /]# cat /home/oracle/.bash_profile

.bash_profile

Get the aliases and functionsif [ -f ~/.bashrc ]; then

. ~/.bashrcfi

User specific environment and startup programs

PATH= P A T H : PATH: PATH:HOME/.local/bin:$HOME/bin

export PATH
export ORACLE_BASE=/data/oracle #oracle数据库安装目录
export ORACLE_HOME=KaTeX parse error: Expected 'EOF', got '#' at position 33: …ct/11.2.0/db_1 #̲oracle数据库路径 exp…ORACLE_HOME/bin:/usr/sbin:KaTeX parse error: Expected 'EOF', got '#' at position 6: PATH #̲添加系统环境变量 export…ORACLE_HOME/lib:/lib:/usr/lib #添加系统环境变量
export LANG=C #防止安装过程出现乱码
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK #设置Oracle客户端字符集,必须与Oracle安装时设置的字符集保持一致,如:ZHS16GBK,否则出现数据导入导出中文乱码问题
[root@localhost /]#
使上述配置立即生效:
[oracle@localhost /]$ su root
Password:
[root@localhost /]# source /home/oracle/.bash_profile
[root@localhost /]#
10.上述都搞定了,上传安装包我喜欢xftp,将oracle安装包上传到/usr/local/src

11.解压安装包
[oracle@localhost /]$ cd /usr/local/src  #进入/usr/local/src目录
[oracle@localhost src]$ ls
linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip
[oracle@localhost src]$ unzip linux.x64_11gR2_database_1of2.zip -d /data/database/  #解压
(省略…)
[oracle@localhost src]$ unzip linux.x64_11gR2_database_2of2.zip -d /data/database/  #解压
(省略…)
[oracle@localhost src]$ su root
Password:
[root@localhost src]# chown -R oracle:oinstall /data/database/database/
[root@localhost src]#
三、oracle安装
1.图形界面登陆oracle用户:
oracle11G在linux环境下的卸载操作_第2张图片

2.启动oralce安装,到/data/database/database/目录下,执行runInstaller

oracle11G在linux环境下的卸载操作_第3张图片

3.去掉勾,懒得填,个人使用环境不需要自动接收Oracle的安全更新。
oracle11G在linux环境下的卸载操作_第4张图片

4.下一步,只安装数据库软件,个人用不要那些玩意~~
oracle11G在linux环境下的卸载操作_第5张图片

5.选择单例安装,前面的所有配置均为单例安装。
oracle11G在linux环境下的卸载操作_第6张图片

6.添加语言
oracle11G在linux环境下的卸载操作_第7张图片

7.默认安装版本企业版-Enterprise Edition --图没了。
8.确定数据软件的安装路径,自动读取前面Oracle环境变量中配置的值。
oracle11G在linux环境下的卸载操作_第8张图片

9.理论上要创建Database Operation(OSOPER)Group:oper ,个人用,懒得建,就使用dba用户组
oracle11G在linux环境下的卸载操作_第9张图片

10.安装检查,按照提示信息一个一个解决。
oracle11G在linux环境下的卸载操作_第10张图片

swap空间不足解决 :(要求2.67G 实际2G)
[root@localhost oracle]# free -m  #查看当前虚拟内存
total used free shared buff/cache available
Mem: 1824 1369 93 10 361 250
Swap: 2048 20 2028
[root@localhost oracle]# dd if=/dev/zero of=/home/swap bs=1024 count=1024000  #将当前swap空间由2048M 增加到 3048M 新增一个2014的swap文件1024000+0 records in1024000+0 records out1048576000 bytes (1.0 GB) copied, 29.4051 s, 35.7 MB/s
[root@localhost oracle]# mkswap /home/swap
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=5e3d39d7-285e-4c74-b321-1e2b3ffabf83
[root@localhost oracle]# free -m
total used free shared buff/cache available
Mem: 1824 1275 95 10 454 342
Swap: 2048 141 1907
[root@localhost oracle]# swapon /home/swap  #增加并启用虚拟内容
swapon: /home/swap: insecure permissions 0644, 0600 suggested.
[root@localhost oracle]# free -m  #再次查看
total used free shared buff/cache available
Mem: 1824 1275 94 10 454 342
Swap: 3048 141 2907
11.一个一个检查package,在准备阶段中漏掉的,此处再安装,有些系统报错是因为现有的包的版本比检测要高,最后忽略即可。(点击Check_Again 多检查几次)
oracle11G在linux环境下的卸载操作_第11张图片

12.准备完毕,fuck “Finish”开始安装。
oracle11G在linux环境下的卸载操作_第12张图片

安装过程中的问题:
oracle11G在linux环境下的卸载操作_第13张图片
oracle11G在linux环境下的卸载操作_第14张图片

解决办法:
主要因为C库的问题,解决办法就是手动指定C库位置出现agent nmhs问题后,找到$ORACLE_HOME/sysman/lib/ins_emagent.mk文件,在文件里找字符串

$(MK_EMAGENT_NMECTL)
替换为
( M K E M A G E N T N M E C T L ) − l n n z 11 注意: l n n z 和 (MK_EMAGENT_NMECTL) -lnnz11 注意:lnnz和 (MKEMAGENTNMECTL)lnnz11注意:lnnz(MK_EMAGENT_NMECTL)之间有空格
然后点“重试“按钮就可以了

手动创建数据库
环境:OEL+Oracle 11.2.0.1
由于当前环境已有一个数据库实例,但这并不影响我们创建一个新的实例sun
当前系统实例
[oracle@DBA2 dbs]$ env |grep ORACLE
ORACLE_SID=orcl1
ORACLE_BASE=/u/oracle
ORACLE_HOME=/u/oracle/product/11.2
[oracle@DBA2 dbs]$

1、首先设置我们要创建的数据库ORACLE_SID
export $ORACLE_SID=sun

2、为新实例创建密码文件
orapwd file=$ORACLE_HOME/dbs/orapwsun password=oracle entries=10

3、创建初始化参数文件(pfile)
[oracle@DBA2 dbs]$ vi initsun.ora
db_name=sun
control_files=‘/oradata/sun/control01.ctl’
sga_target=250M
undo_management=auto
undo_tablespace=undotbs
其中最主要的参数是db_name、control_files和sga_target

4、创建实例相关的目录(数据文件,日志文件,控制文件等)
我将数据文件和日志文件和控制文件放在了一个目录下,我这里只用了一个控制文件。当然,最好使用两个或三个控制文件并存放在不同路径下,以保证数据文件的冗余。
[oracle@DBA2 ~]$ mkdir /oradata/sun
[oracle@DBA2 admin]$ mkdir /u/oracle/admin/adump
[oracle@DBA2 admin]$ mkdir /u/oracle/admin/bdump
[oracle@DBA2 admin]$ mkdir /u/oracle/admin/pfile

5、创建spfile文件并将数据库启动到nomount 状态
SQL> create spfile from pfile;

File created.
SQL> startup nomount
ORACLE instance started.

Total System Global Area 418484224 bytes
Fixed Size 1336932 bytes
Variable Size 281020828 bytes
Database Buffers 130023424 bytes
Redo Buffers 6103040 bytes
SQL>
6、创建数据库(附脚本)
CREATE DATABASE sun
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 (‘/oradata/sun/redo01a.log’) SIZE 20M,
GROUP 2 (‘/oradata/sun/redo02a.log’) SIZE 20M,
GROUP 3 (‘/oradata/sun/redo03a.log’) SIZE 20M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 2
CHARACTER SET AL32UTF8
DATAFILE ‘/oradata/sun/system01.dbf’ SIZE 400M REUSE
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE ‘/oradata/sun/sysaux01.dbf’ SIZE 400M REUSE
DEFAULT TABLESPACE users
DATAFILE ‘/oradata/sun/users01.dbf’ SIZE 20M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts01
TEMPFILE ‘/oradata/sun/tempts01.dbf’ SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE ‘/oradata/sun/undotbs01.dbf’ SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
/

7、执行相关数据字典试图
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/sqlplus/admin/pupbld.sql

OK,至此手动创建Oracle数据库完成,实验证明手动建库比DBCA建库要来的方便和快速,基本流程也就分以上几个步骤

oracle一个创建用户、创建表空间、授权、建表的完整过程 2014-07-01 16:44:09
分类: Oracle
1.首先我们可以用scott用户以sysdba的身份登录oracle.
Sql代码
1.conn scott/tiger as sysdba

2.然后我就可以来创建用户了.
Sql代码
1.create user zzg identified by zzg123;

3.创建好用户我们接着就可以修改用户的密码.
Sql代码
1.alter user zzg identified by unis;

4.默认情况下用户创建好后系统会默认给该用户分配一个表空间(users);
我们可以通过下面的sql语句来查看一下所有用户所在的表空间.
Sql代码
1.select username,default_tablespace from dba_users;

5.一般在开发情况下,我们当然不会使用用户的默认表空间,所以这时我们需要创建一个表空间.
Sql代码
1.create tablespace ts_zzg datafile ‘f:\ts_zzg\zzg_data.dbf’ size 200M;

注:datafile后面是表空间的物理存储路径,文件名的后缀可以随便.

6.创建好表空间,还需要将表空间分配给用户.
Sql代码
1.alter user zzg default tablespace ts_zzg;

7.我们可以通过步骤4来查询用户所在的表空间.

8.给用户分配了表空间,用户还不能登陆(没有登录权限),因此还需要为用户分配权限
Sql代码
1.grant create session,create table,create view,create sequence,unlimited tablespace to zzg;

9.给用户分配了权限之后我们就可以用zzg用户来登录了.
Sql代码
1.conn zzg/unis;

10.登录之后我们也可以来查询用户所具有的权限
Sql代码
1.select *from session_privs;

11.最后我们也可以删除用户及其相关对象
Sql代码
1.drop user zzg cascade;

listener.ora/sqlnet.ora/tnsnames.ora配置文件详解
Oracle网络配置
三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下。
英文说明:
The sqlnet.ora is an optional file expressing more parameters about the connection (eg: the trace level for debugging, the types of authentication you would like to support and so on). It may be found on the client or the server.
The tnsnames.ora is used to find a Net8 listener and connect to it and pass to it the details of the database instance youwould like to connect to. It will be found on the client side. Note that a SERVER can be a client of another database so it is typical to find it on the SERVER as well.
The listener.ora is used to setup the configuration of the net8 listener. to specify the port it will listen on, give it the details of the databases it can connect to and so on. This file is on the SERVER only.

  1. sqlnet.ora-----通过这个文件来决定怎么样找一个连接中出现的连接字符串。
    例如我们客户端输入
    sqlplus sys/oracle@ora
    假如我的sqlnet.ora是下面这个样子
    SQLNET.AUTHENTICATION_SERVICES= (NTS)
    NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME,EZCONNECT)
    那么,客户端就会首先在tnsnames.ora文件中找ora的记录.如果没有相应的记录则尝试把ora当作一个主机名,通过网络的途径去解析它的 ip地址然后去连接这个ip上GLOBAL_DBNAME=ora这个实例,当然我这里ora并不是一个主机名
    EZCONNECT表示:可以使用简单的方式连接Oracle例如:

1 CONNECT username/password@host[:port][/service_name][/instance_name] 2 CONNECT username/password@host[:port][/service_name] 3 sqlplus / as sysdba 4 sqlplus sys as sysdba/[email protected]:1521

如果我是这个样子
NAMES.DIRECTORY_PATH= (TNSNAMES)
那么客户端就只会从tnsnames.ora查找ora的记录,括号中还有其他选项,如LDAP等并不常用。
2. tnsnames.ora------这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应。
只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。
例子:
ORA_TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = LXL)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora)
)
)
ORA_TEST:客户端连接服务器端使用的服务别名。注意一定要顶行书写,否则会无法识别服务别名。
PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。
HOST:ORACLE服务器端IP地址或者hostname。确保服务器端的监听启动正常。
PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。
SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus> show parameter service_name命令查看。
3. listener.ora------listener监听器进程的配置文件
关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。
例子:
#listener.ora Network Configuration File: #E:/oracle/product/10.1.0/Db_2/NETWORK/ADMIN/listener.ora

Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ora)
(ORACLE_HOME = E:/oracle/product/10.1.0/Db_2)
(SID_NAME = ora)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
)
LISTENER :监听名称,可以配置多个监听,多个监听的端口号要区分开来。
GLOBAL_DBNAME :全局数据库名。通过select * from global_name; 查询得出
ORACLE_HOME :oracle软件的跟目录
SID_NAME :服务器端(本机)的SID
PROTOCOL:监听协议,一般都使用TCP
HOST:本机IP地址,双机时候使用浮动IP
PORT:监听的端口号,使用netstat –an 检查该端口不被占用。
当你输入sqlplus sys/oracle@orcl的时候
1. 查询sqlnet.ora看看名称的解析方式,发现是TNSNAME
2. 则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name
3. 如果listener进程没有问题的话,建立与listener进程的连接。
4. 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。
5. 这时候网络连接已经建立,listener进程的历史使命也就完成了。
sql*plus运行基本机理:
在用户输入sqlplus system/manager@test后,sqlplus程序会自动到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN参数,假如该参数存在,则将该参数中的值取出,加到网络服务名的后面,即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/[email protected] ,然后再到tnsnames.ora文件中找test.server.com网络服务名,这当然找不到了,因为该文件中只有test网络服务名,所以报错。解决的办法就是将sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN参数注释掉即可,如 #NAMES.DEFAULT_DOMAIN = server.com。假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找 test网络服务名,然后取出其中的host ,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。
重点:上面所有的HOST值必须是计算机的主机名,否则只有本机使用127.0.0.1能访问数据库,局域网内的其他主机不能访问【血泪史,不解释】
并使用telnet 192.168.1.51 1521能连接
使用netstat -an可以查看到如下

贴出我的
sqlnet.ora内容

你可能感兴趣的:(linux,运维,服务器)