#!/bin/bash
#安装oracle110203
pageDir="/opt/tools/oracle"
bdFile="/tmp/bdFile.txt"
opassword="oracle"
check_ok(){
if [ $? != ]
then
echo "Error, Check the error log."
exit
fi
}
myum(){
if ! rpm -qa|grep -q "^$1"
then
yum install -y $
check_ok
else
echo $ already installed.
fi
}
check_server(){
if ! grep -q "$1" "$bdFile"
then
"$1"
fi
}
install_oracleinit(){
for i in binutils compat-libstdc++- compat-libstdc++-.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC-devel
#centos7
#for i in binutils compat-libstdc++-33* elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++* make sysstat unixODBC unixODBC-devel
do
myum $i
done
if ! grep -q oinstall /etc/group
then
/usr/sbin/groupadd oinstall
check\_ok
fi
if ! grep -q dba /etc/group
then
/usr/sbin/groupadd dba
check\_ok
fi
if ! grep -q oracle /etc/passwd
then
/usr/sbin/useradd -g oinstall -G dba oracle
check\_ok
fi
if ! grep -q oracle /etc/sudoers
then
echo "oracle ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
fi
echo $opassword | passwd --stdin oracle
cat << EOF > /etc/sysctl.conf
kernel.sem =
fs.file-max =
net.ipv4.ip_local_port_range =
net.core.rmem_default =
net.core.rmem_max =
net.core.wmem_default =
net.core.wmem_max =
fs.aio-max-nr =
EOF
/sbin/sysctl -p
check\_ok
#su oracle
#check\_ok
if ! grep -q oracle /etc/security/limits.conf
then
echo "oracle soft nofile 1024" >> /etc/security/limits.conf
echo "oracle hard nofile 65536" >> /etc/security/limits.conf
echo "oracle soft nproc 2047" >> /etc/security/limits.conf
echo "oracle hard nproc 16384" >> /etc/security/limits.conf
fi
if ! grep -q "pam\_limits.so" /etc/pam.d/login
then
echo "session required /lib64/security/pam\_limits.so" >> /etc/pam.d/login
echo "session required pam\_limits.so" >> /etc/pam.d/login
fi
if ! grep -q "oracle" /etc/profile/env.sh
then
echo "if \[ \\$USER == "oracle" \]; then" >> /etc/profile/env.sh
echo " if \[ $SHELL == "/bin/ksh" \]; then" >> /etc/profile/env.sh
echo " ulimit -p 16384" >> /etc/profile/env.sh
echo " ulimit -n 65536" >> /etc/profile/env.sh
echo " else" >> /etc/profile/env.sh
echo " ulimit -u 16384 -n 65536" >> /etc/profile/env.sh
echo " fi" >> /etc/profile/env.sh
echo "fi" >> /etc/profile/env.sh
fi
#close selinux
#sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#selinux\_s=\`getenforce\`
#if \[ $selinux\_s == "Enforcing" -o $selinux\_s == "enforcing" \]
#then
# setenforce
#fi
#
\[ -f /etc/oraInst.loc \] || touch /etc/oraInst.loc
cat << EOF > /etc/oraInst.loc
inventory_loc=/opt/oracle/oraInventory
inst_group=oinstall
EOF
chown oracle:oinstall /etc/oraInst.loc
chmod /etc/oraInst.loc
echo "install\_oracleinit ok"
echo "install\_oracleinit" >> $bdFile
}
install_oracle11g(){
#u=\`whoami\`
#\[ "$u" == "root" \] || su root
#check\_ok
\[ -d /opt/oracle \] || mkdir -p /opt/oracle
chown -R oracle:oinstall /opt/oracle/
chmod -R /opt/oracle/
#u=\`whoami\`
#\[ "$u" == "oracle" \] || su oracle
if ! grep -q "ORACLE\_BASE" /home/oracle/.bash\_profile
then
echo "umask 022" >> /home/oracle/.bash\_profile
echo "export ORACLE\_BASE=/opt/oracle" >> /home/oracle/.bash\_profile
echo "export ORACLE\_SID=orcl" >> /home/oracle/.bash\_profile
echo "export ORACLE\_HOME=\\$ORACLE\_BASE/product/11.2.0/db\_1" >> /home/oracle/.bash\_profile
echo "export TNS\_ADMIN=\\$ORACLE\_HOME/network/admin" >> /home/oracle/.bash\_profile
echo "export PATH=.:\\${PATH}:\\$HOME/bin:\\$ORACLE\_HOME/bin" >> /home/oracle/.bash\_profile
echo "export PATH=\\${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin" >> /home/oracle/.bash\_profile
echo "export LD\_LIBRARY\_PATH=\\${LD\_LIBRARY\_PATH}:\\$ORACLE\_HOME/lib" >> /home/oracle/.bash\_profile
echo "export LD\_LIBRARY\_PATH=\\${LD\_LIBRARY\_PATH}:\\$ORACLE\_HOME/oracm/lib" >> /home/oracle/.bash\_profile
echo "export LD\_LIBRARY\_PATH=\\${LD\_LIBRARY\_PATH}:/lib:/usr/lib:/usr/local/lib" >> /home/oracle/.bash\_profile
echo "export CLASSPATH=\\${CLASSPATH}:\\$ORACLE\_HOME/JRE" >> /home/oracle/.bash\_profile
echo "export CLASSPATH=\\${CLASSPATH}:\\$ORACLE\_HOME/JRE/lib" >> /home/oracle/.bash\_profile
echo "export CLASSPATH=\\${CLASSPATH}:\\$ORACLE\_HOME/jlib" >> /home/oracle/.bash\_profile
echo "export CLASSPATH=\\${CLASSPATH}:\\$ORACLE\_HOME/rdbms/jlib" >> /home/oracle/.bash\_profile
echo "export CLASSPATH=\\${CLASSPATH}:\\$ORACLE\_HOME/network/jlib" >> /home/oracle/.bash\_profile
echo "export LIBPATH=\\${CLASSPATH}:\\$ORACLE\_HOME/lib:\\$ORACLE\_HOME/ctx/lib" >> /home/oracle/.bash\_profile
echo "export ORACLE\_OWNER=oracle" >> /home/oracle/.bash\_profile
echo "export SPFILE\_PATH=\\$ORACLE\_HOME/dbs" >> /home/oracle/.bash\_profile
echo "export ORA\_NLS10=\\$ORACLE\_HOME/nls/data" >> /home/oracle/.bash\_profile
fi
source /home/oracle/.bash\_profile
check\_ok
\[ -d /home/oracle/etc \] || mkdir -p /home/oracle/etc
\[ -f /home/oracle/etc/db\_install.rsp \] || touch /home/oracle/etc/db\_install.rsp
cat << EOF > /home/oracle/etc/db\_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=`hostname`
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/opt/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN,zh_TW
ORACLE_HOME=/opt/oracle/product/11.2./db_1
ORACLE_BASE=/opt/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.3.,oracle.oraolap:11.2.0.3.,oracle.rdbms.dm:11.2.0.3.,oracle.rdbms.dv:11.2.0.3.,oracle.rdbms.lbac:11.2.0.3.,oracle.rdbms.rat:11.2.0.3.
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=oracle
oracle.install.db.config.starterdb.password.SYS=oracle
oracle.install.db.config.starterdb.password.SYSTEM=oracle
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
EOF
chown -R oracle:oinstall /home/oracle
chmod /home/oracle/etc/\*.rsp
cd $pageDir
#\[ -f linux.x64\_11gR2\_database\_1of2.zip \] || (echo "not linux.x64\_11gR2\_database\_1of2.zip file..";exit 1)
#\[ -f linux.x64\_11gR2\_database\_2of2.zip \] || (echo "not linux.x64\_11gR2\_database\_2of2.zip file..";exit 1)
\[ -f p10404530\_112030\_Linux-x86-64\_1of7.zip \] || (echo "not p10404530\_112030\_Linux-x86-64\_1of7.zip file..";exit 1)
\[ -f p10404530\_112030\_Linux-x86-64\_2of7.zip \] || (echo "not p10404530\_112030\_Linux-x86-64\_2of7.zip file..";exit 1)
if \[ ! -d database \]
then
unzip p10404530\_112030\_Linux-x86-64\_1of7.zip
check\_ok
unzip p10404530\_112030\_Linux-x86-64\_2of7.zip
check\_ok
fi
cd database
su -l -c "$pageDir/database/runInstaller -silent -force -responseFile /home/oracle/etc/db\_install.rsp" oracle
#忽悠检查
#su -l -c "$pageDir/database/runInstaller -ignoreSysPrereqs -ignorePrereq -silent -force -responseFile /home/oracle/etc/db_install.rsp" oracle
sleep 600
check_ok
/opt/oracle/product/11.2.0/db_1/root.sh
check_ok
echo "install\_oracle11g" >> "$bdFile"
echo "install\_oracle11g install ok"
}
install_oracle11g_db(){
\[ -f /home/oracle/etc/dbca.rsp \] || touch /home/oracle/etc/dbca.rsp
cat << EOF > /home/oracle/etc/dbca.rsp
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "orcl"
SID = "orcl"
TEMPLATENAME = "General_Purpose.dbc"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
DATAFILEDESTINATION = "/opt/oracle/oradata"
RECOVERYAREADESTINATION = "/opt/oracle/flash_recovery_area"
CHARACTERSET = "AL32UTF8"
NATIONALCHARACTERSET= "UTF8"
EOF
chown -R oracle:oinstall /home/oracle
chmod 700 /home/oracle/etc/*.rsp
su -l -c " /opt/oracle/product/11.2.0/db\_1/bin/dbca -silent -responseFile /home/oracle/etc/dbca.rsp" oracle
check\_ok
echo "install\_oracle11g\_db" >> "$bdFile"
echo "install\_oracle11g\_db install ok"
}
check_server install_oracleinit
check_server install_oracle11g
check_server install_oracle11g_db
#!/bin/bash
. /etc/init.d/functions
oracle_home=/opt/oracle/product/11.2./db_1
oracle_bin=$oracle_home/bin
function_start_oracle()
{
printf "Starting oracle…\n"
$oracle_bin/lsnrctl start >& > /dev/null &
export ORACLE_SID=orcl
$oracle_bin/sqlplus /nolog <<EOF
conn / as sysdba
startup
exit
EOF
}
function_stop_oracle()
{
printf "Stoping oracle…\n"
$oracle_bin/lsnrctl stop >& > /dev/null &
export ORACLE_SID=orcl
$oracle_bin/sqlplus /nolog <<EOF
conn / as sysdba
shutdown immediate;
#shutdown abort; #强制关机
exit
EOF
}
function_restart_oracle()
{
printf "Restarting oracle…\n"
function_stop_oracle
sleep
function_start_oracle
}
if [ "$1" = "start" ]; then
function_start_oracle
elif [ "$1" = "stop" ]; then
function_stop_oracle
elif [ "$1" = "restart" ]; then
function_restart_oracle
else
printf "Usage: {start|stop|restart}\n"
fi
一、Oracle数据库几种启动方式
、startup nomount
非安装启动,这种方式下启动可执行:重建控制文件、重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
、startup mount (dbname)
安装启动,这种方式启动下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重新定位数据文件、重做日志文件。
执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查。
、startup open (dbname)
先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。
、startup 等于以下三个命令
startup nomount
alter database mount
alter database open
、startup restrict
约束方式启动,这种方式能够启动数据库,但只允许具有一定特权的用户访问,非特权用户访问时,会出现以下提示:
ERROR:ORA-: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用
、startup force
强制启动方式,当不能关闭数据库时,可以用startup force来完成数据库的关闭,先关闭数据库,再执行正常启动数据库命令
、startup pfile=参数文件名
带初始化参数文件的启动方式,先读取参数文件,再按参数文件中的设置启动数据库
例:startup pfile=E:\Oracle\admin\oradb\pfile\init.ora
、startup EXCLUSIVE
独占和共享启动
二、Oracle三种关闭方式
、shutdown normal
正常方式关闭数据库
、shutdown immediate
立即方式关闭数据库,在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),当使用
shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。
、shutdown abort
直接关闭数据库,正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。
原文链接:https://www.cnblogs.com/NaughtyBoy/archive/2013/07/09/3180947.html
sqlplus / as sysdba
select status from v$instance;
[oracle@docker1 /opt/oracle/product/11.2./db_1/network/admin ::&&]$ps -ef | grep oracle
root : pts/ :: su - oracle
oracle : pts/ :: -bash
oracle : ? :: /opt/oracle/product/11.2./db_1/bin/tnslsnr LISTENER -inherit #监听
oracle : ? :: ora_pmon_orcl #启动了orcl实例
oracle : ? :: ora_psp0_orcl
oracle : ? :: ora_vktm_orcl
oracle : ? :: ora_gen0_orcl
oracle : ? :: ora_diag_orcl
oracle : ? :: ora_dbrm_orcl
oracle : ? :: ora_dia0_orcl
oracle : ? :: ora_mman_orcl
oracle : ? :: ora_dbw0_orcl
oracle : ? :: ora_lgwr_orcl
oracle : ? :: ora_ckpt_orcl
oracle : ? :: ora_smon_orcl
oracle : ? :: ora_reco_orcl
oracle : ? :: ora_mmon_orcl
oracle : ? :: ora_mmnl_orcl
oracle : ? :: ora_d000_orcl
oracle : ? :: ora_s000_orcl
oracle : ? :: ora_qmnc_orcl
oracle : ? :: ora_cjq0_orcl
oracle : ? :: ora_q000_orcl
oracle : ? :: ora_q001_orcl
oracle : ? :: ora_smco_orcl
oracle : ? :: ora_w000_orcl
oracle : ? :: oracleorcl (LOCAL=NO) #orcl有远程连接
oracle : pts/ :: ps -ef
oracle : pts/ :: grep --color=auto oracle
stop , start ,status, reload
/opt/oracle/product/11.2./db_1/bin/lsnrctl start
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /opt/oracle/product/11.2./db_1)
#(PROGRAM = extproc) #注释掉这里才能远程连接
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.55.35)(PORT = ))
)
)
LOGGING_LISTENER = ON
INBOUND_CONNECT_TIMEOUT_LISTENER = 0 #连接超时设置0为不限制 查看 lsnrctl > show inbound_connect_timeout
SUBSCRIBE_FOR_NODE_DOWN_EVENT = OFF
NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)
TCP.VALIDNODE_CHECKING=YES
tcp.invited_nodes=(127.0.0.1,192.168.55.0/,192.168.66.0/) #白名单
安装好oracle默认有2个用户sys,system
sys是超级用户,具有最高权限,具有sysdba角色
system 用户是 管理操作员,权限也很大,是sysoper(系统操作员)角色
创建用户并授权
create user ceshi identified by ;
grant connect,resource,sysdba to ceshi;
show user; #查看当前登陆的用户
drop user hxh; #删除用户
drop user hxh CASCADE; #删除用户和用户相关的数据
password 用户名; #自己修改密码
alter user 用户名 identified by 新密码; #给别人修改密码
ALTER USER 用户名 ACCOUNT UNLOCK; #用户解锁
#查看有哪些用户
select * from all_users order by created desc;
#查看当前用户信息
select * from user_users;
#查看当前登录用户拥有的所有角色和系统权限
select * from session_privs; #查看权限
select * from role_sys_privs; #查看角色和权限
#查看用户有哪些角色
select * from dba_role_privs where grantee='KAIFA'; #KAIFA为用户名(用户名需要大写)
查看某一用户拥有的对象权限
grant select on scott.emp to user50;
select * from dba_tab_privs where GRANTEE='USER50';
系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
对象权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
授权
grant connect,resource,sysdab to ceshi;
grant select any TABLE to YULEI; #授权任何表的查询权限
GRANT SELECT ON "DNINMSV31"."V_DNDEVICE" TO NORTHBOUND; #授权指定表的查询权限 DNINMSV31用户 V_DNDEVICE表名 NORTHBOUND用户
权限回收
revoke select on scott.emp from ceshi;
权限相关的视图
DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限
USER_SYS_PRIVS: 当前用户所拥有的系统权限
SESSION_PRIVS: 当前用户所拥有的全部权限
ROLE_SYS_PRIVS: 某个角色所拥有的系统权限 注意: 要以SYS用户登陆查询这个视图,否则返回空.
ROLE_ROLE_PRIVS: 当前角色被赋予的角色
SESSION_ROLES: 当前用户被激活的角色
USER_ROLE_PRIVS: 当前用户被授予的角色
另外还有针对表的访问权限的视图:
TABLE_PRIVILEGES
ALL_TAB_PRIVS
ROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
3.1#查看角色有哪些权限
select * from role_sys_privs where role='角色名';
.2系统预定义角色
预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询:
sql>select * from role_sys_privs where role='角色名';
.CONNECT, RESOURCE, DBA
这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。
.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
这些角色主要用于访问数据字典视图和包。
.EXP_FULL_DATABASE, IMP_FULL_DATABASE
这两个角色用于数据导入导出工具的使用。
.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。这两个角色用于oracle高级查询功能。
. SNMPAGENT
用于oracle enterprise manager和Intelligent Agent
.RECOVERY_CATALOG_OWNER
用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide》
.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.
3.3 管理角色
.建一个角色
sql>create role role1;
.授权给角色
sql>grant create any table,create procedure to role1;
.授予角色给用户
sql>grant role1 to user1;
.查看角色所包含的权限
sql>select * from role_sys_privs;
.创建带有口令的角色(在生效带有口令的角色时必须提供口令)
sql>create role role1 identified by password1;
.修改角色:是否需要口令
sql>alter role role1 not identified;
sql>alter role role1 identified by password1;
.设置当前用户要生效的角色
(注:角色的生效是一个什么概念呢?假设用户a有b1,b2,b3三个角色,那么如果b1未生效,则b1所包含的权限对于a来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将所有直接赋给用户的权限和用户默认角色中的权限赋给用户。)
sql>set role role1;//使role1生效
sql>set role role,role2;//使role1,role2生效
sql>set role role1 identified by password1;//使用带有口令的role1生效
sql>set role all;//使用该用户的所有角色生效
sql>set role none;//设置所有角色失效
sql>set role all except role1;//除role1外的该用户的所有其它角色生效。
sql>select * from SESSION_ROLES;//查看当前用户的生效的角色。
.修改指定用户,设置其默认角色
sql>alter user user1 default role role1;
sql>alter user user1 default role all except role1;
详见oracle参考文档
.删除角色
sql>drop role role1;
角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。
#创建表空间
create tablespace CESHI datafile '/opt/oracle/oradata/orcl/ceshi01.dbf' size 500m autoextend on next 500m maxsize 20480m uniform size 128k;
#给表空间增加文件
alter tablespace COUNTS15 add datafile '/home1/oracle/oradata/counts15/counts15_32.dbf' size 500m autoextend on next 500m maxsize 20480m;
#查看表空间的数据文件
select * from dba_data_files where tablespace_name='OA_COUNTS15'
#查看有哪些表空间
select tablespace_name from dba_tablespaces;
#查看用户默认表空间(用户名要大写)
select username,default_tablespace from dba_users where username='H3W4JEBZ'
#修改用户默认表空间
alter user HXH default tablespace system
#查看表空间有哪些表
select * from all_tables where tablespace_name='USERS'
#查看用户有哪些表
select * from all_tables where owner='H3W4JEBZ';
#删除用户所有表
select 'DROP TABLE H3W4JEBZ.' || TABLE_NAME || ';' from all_tables where owner='H3W4JEBZ'
#删除表空间及数据
drop tablespace OA_COUNTS15 including contents and datafiles;
#删除用户及用户创建的表
drop user AJT9C4F2 cascade;
#工作中增加表空间文件步聚
1.查看有哪些表空间
select tablespace_name from dba_tablespaces;
3.查看用户默认表空间
select username,default_tablespace from dba_users where username='H3W4JEBZ'
3.查看表空间中有哪些文件
select file_name,bytes from dba_data_files where tablespace_name='COUNTS15';
4.增加文件
alter tablespace COUNTS15 add datafile '/home1/oracle/oradata/counts15/counts15_32.dbf' size 500m autoextend on next 500m maxsize 20480m;
#找出表空音使用百分比大于xxx的(修改后面的数字kperc > 10 )
SELECT
*
FROM
(
SELECT
'- Tablespace ->',
t.tablespace_name ktablespace,
'- Type->',
substr(t.contents, 1, 1) tipo,
'- Used(MB)->',
trunc (
(
d.tbs_size - nvl (s.free_space, 0)
) / 1024 / 1024
) ktbs_em_uso,
'- ActualSize(MB)->',
trunc (d.tbs_size / 1024 / 1024) ktbs_size,
'- MaxSize(MB)->',
trunc (d.tbs_maxsize / 1024 / 1024) ktbs_maxsize,
'- FreeSpace(MB)->',
trunc (
nvl (s.free_space, 0) / 1024 / 1024
) kfree_space,
'- Space->',
trunc (
(
d.tbs_maxsize - d.tbs_size + nvl (s.free_space, 0)
) / 1024 / 1024
) kspace,
'- Perc->',
decode(
d.tbs_maxsize,
0,
0,
trunc (
(
d.tbs_size - nvl (s.free_space, 0)
) * 100 / d.tbs_maxsize
)
) kperc
FROM
(
SELECT
SUM(bytes) tbs_size,
SUM(
decode(
sign(maxbytes - bytes),
- 1,
bytes,
maxbytes
)
) tbs_maxsize,
tablespace_name TABLESPACE
FROM
(
SELECT
nvl (bytes, 0) bytes,
nvl (maxbytes, 0) maxbytes,
tablespace_name
FROM
dba_data_files
UNION ALL
SELECT
nvl (bytes, 0) bytes,
nvl (maxbytes, 0) maxbytes,
tablespace_name
FROM
dba_temp_files
)
GROUP BY
tablespace_name
) d,
(
SELECT
SUM(bytes) free_space,
tablespace_name TABLESPACE
FROM
dba_free_space
GROUP BY
tablespace_name
) s,
dba_tablespaces t
WHERE
t.tablespace_name = d. TABLESPACE (+)
AND t.tablespace_name = s. TABLESPACE (+)
ORDER BY
8
)
WHERE
kperc > 10
AND tipo <> 'T'
AND tipo <> 'U'
更改字符集
shutdown immediate; (把database停了)
startup mount; (把database重开去可更改情況)
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
#alter database character set internal_use Simplified Chinese_CHINA.ZHS16GBK;
alter database character set internal_use AL32UTF8;
shutdown immediate;
startup;
查看字符集
select userenv('language') from dual
select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
客户端修改字符集
系统环境变量
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
常用字符集
AMERICAN_AMERICA.AL32UTF8
Simplified Chinese_CHINA.ZHS16GBK
SYSDBA不是权限,当用户以SYSDBA身份登陆数据库时,登陆用户都会变成SYS.
sysdba身份登陆可以打开,关闭数据库,创建SPFILE,对数据库进行恢复操作等,而这些是DBA角色无法实现的;
sysdba 是系统权限,dba是用户对象权限;
sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在;
以sysdba身份登陆,装载数据库、打开数据库,只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础;
dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是概念上的role是一种登录认证时的身份标识而已。
而且,dba是Oracle里的一种对象,Role 和User一样,是实实在在存在在Oracle里的物理对象,而sysdba是指的一种概念上的操作对象,在Oracle数据里并不存在。
例子1 授权sysdba:
create user ceshi identified by ;
#grant connect,resource,sysdab to ceshi;
grant connect,resource,dab to ceshi;
#登陆
sqlplus /nolog
conn CESHI/ as sysdba;
show user; #显示登入用户是sys
#登陆
sqlplus /nolog
conn CESHI/ ;
show user; #显示登入用户是CESHI
#!/bin/bash
export ORACLE_SID=orcl
export USER=KAIFA
export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'
DATE=`date '+%Y%m%d'`
BAKDIR=/home/backup/oracle_bak
chown -R oracle.oinstall ${BAKDIR}
su -l -c "exp ${USER}/kaifa123 file=$BAKDIR/${ORACLE_SID}_${USER}_${DATE}.dmp log=$BAKDIR/${ORACLE_SID}_${USER}_${DATE}.log direct=y " oracle
if [[ $? == ]];then
echo "${USER} ${DATE} backup sucess" >> /tmp/${USER}.log
else
echo "${USER} ${DATE} backup fail" >> /tmp/${USER}.log
fi
备份注意事项
字符集和数据库字符集不一样
导出日志会有:
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)
字符集和数据库字符集一样
导出日志会有:
Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set
export ORACLE_SID=orcl
export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'
su -l -c "imp userid=KAIFA/kaifa123 file=/tmp/a.dmp full=y" oracle
备份库上操作
#查看用户表空间
select username,default_tablespace from dba_users where username='KAIFA'
结果:
KAIFA BSM
#查看表空间数据文件
select file_name,bytes from dba_data_files where tablespace_name='BSM';
结果:(单位字节) echo "2097152000/1024/1024" | bc 转成M
/usr/java/oracle/tabspace/bsm_data.dbf
恢复库上操作
#创建用户
create user kaifa identified by kaifa123 ;
grant connect,dba,resource,IMP_FULL_DATABASE to kaifa;
#创建表空间(表空间大小根据情况修改)
create tablespace BSM datafile '/usr/java/oracle/tabspace/bsm_data01.dbf' size 500m autoextend on next 500m maxsize 20480m uniform size 128k;
#给表空间增加文件(看备份为的数据文件实际情况而定,要提供足够的表空间恢复)
alter tablespace BSM add datafile '/usr/java/oracle/tabspace/bsm_data02.dbf' size 500m autoextend on next 500m maxsize 20480m;
#查看用户默认表空间(用户名要大写)
select username,default_tablespace from dba_users where username='KAIFA'
#修改用户默认表空间
alter user KAIFA default tablespace BSM
执行恢复
export ORACLE_SID=ORCL
export NLS_LANG='AMERICAN_AMERICA.AL32UTF8'
su -l -c "imp userid=KAIFA/kaifa123 file=/tmp/a.dmp full=y" oracle
1--备份
(1.1) 逻辑备份:只能在数据库运行的状态下执行
导出:
导出使用exp命令来完成的,该命令常用的选项有:
userid:用于指定执行导出操作的用户名,口令,连接字符串
tables:用于指定执行导出操作的表
owner:用于指定执行导出操作的方案
full=y: 用于指定执行导出操作的数据库
direct =y , 表示直接路径导出, 比普通路径导出速度快很多
inctype:用于指定导出操作的增量类型
rows:用于指定执行导出操作是否要导出表中的数据
file:用于指定导出文件名
()导出表和数据:
exp userid=scott/tiger@test tables=emp,dep file=/tmp/a.dmp 【scott用户,tiger密码,test数据库】
导出其它方案的表:
exp userid=system/tiger@test tables=scott.emp,dep file=/tmp/a.dmp 【system用户,scott.emp方案也就是用户的表,tiger密码,test数据库】
只导出表的结构:
exp userid=scott/tiger@test tables=emp,dep file=/tmp/a.dmp rows=n
使用直接导出表结构的方式:
exp userid=scott/tiger@test tables=emp,dep file=/tmp/a.dmp direct=y 【这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方法。这时需要数据库的字符集要与客户端字符集完全一致,否则会报错】
()导出方案:
导出自己的方案:
exp scott/tiger@test owner=scott file=/tmp/a.dmp
导出其它方案:
exp system/tiger@test direct=y owner=scott,system file=/tmp/a.dmp
()导出数据库:【因为数据量大,耗时长。】
exp userid=system/tiger@test direct=y full=y inctype=complete file=/tmp/a.dmp【inctype=complete是增量备份】
()导出数据库表结构,包含用户和角色数据
exp userid=system/oracle@192.168.80.150/oracle full=y rows=n file=/home/orabak/system.dmp
()导出表空间
exp system/oracle@192.168.80.150/orcl direct=y owner=system file=/home/orabak/system.dmp #测试不行
(1.2) 物理备份:未笔记
2--恢复
(2.1) 逻辑恢复
导入:导入使用工具import 将文件中的对象和数据导入到数据库中,导入要使用的文件必须是exp所导出的文件。
imp常用的选项有:
userid:用于指定执行导出操作的用户名,口令,连接字符串
tables:用于指定执行导出操作的表
formuser:用于指定源用户
touser:用于指定目标用户
file:用于指定导入文件名
full=y: 用于指定执行导入整个文件
inctype: 用于指定执行导入操作的增量类型
rows:指定是否要导入表行(数据)
ignore:如果表存在,则只导入数据
(导入表)
导入自己表:
imp userid=scott/tiger@test tables=(emp) file=/tmp/a.dmp
导入表到其它用户:
imp userid=system/tiger@test tables=(emp) file=/tmp/a.dmp touser=scott
导入表的结构:
imp userid=soctt/tiger@test tables=(emp) file=/tmp/a.dmp rows=n
导入数据:
imp userid=scott/tiger@test tables=(emp) file=/tmp/a.dmp ignore=y
(导入方案)
导入自身的方案:
imp userid=scott/tiger@test file=/tmp/a.dmp
导入其它方案:
imp userid=system/tiger@test file=/tmp/a.dmp fromuser=system touser=scott
(导入数据库)
imp userid=system/tiger full=y file=/tmp/a.dmp
(2.2) 物理恢复:未笔记
expdp/impdp备份恢复全库
原文地址: https://www.cnblogs.com/promise-x/p/7477360.html
步骤1:
备份库和恢复库执行:
create directory backup as '/home/backup/oracle_bak';
grant read,write on directory backup to 用户名;
select * from dba_directories; #查看backup创建是否成功
步聚2: 备份库上查询这些信息,并记录
select * from all_users order by created desc; #查看用户
select tablespace_name from dba_tablespaces; #查看表空间
select username,default_tablespace from dba_users where username='KAIFA' #查看用户表空间
步聚3: 恢复库上根据步聚2的记录 创建表空间和用户
#创建用户
create user ceshi identified by ;
#创建表空间
create tablespace CESHI datafile '/opt/oracle/oradata/orcl/ceshi01.dbf' size 500m autoextend on next 500m maxsize 20480m uniform size 128k;
#给表空间增加文件
alter tablespace COUNTS15 add datafile '/home1/oracle/oradata/counts15/counts15_32.dbf' size 500m autoextend on next 500m maxsize 20480m;
#修改用户默认表空间
alter user HXH default tablespace system
步聚4:
备份:
expdp userid='user/passwd as sysdba' directory=backup dumpfile=expdp_full.dmp full=y logfile=expdp_full.log;
恢复
impdp user/passwd directory=backup dumpfile=expdp_full.dmp full=y logfile=impdp_full.log;
##备份/恢复方案
expdp userid='BACK_UP/qwerasdf as sysdba' directory=backup schemas=KAIFA dumpfile=KAIFA20181025_155326.dmp logfile=KAIFA20181025_155326.log
impdp BACK_UP/qwerasdf DIRECTORY=backup DUMPFILE=NBT_DEV20181025_160230.dmp SCHEMAS=NBT_DEV logfile=NBT_DEV_impdp.log
#需要注意,系统用户必须使用oracle,用root用户是登陆不了的。oracle这个用户是安装oracle时创建的用户
[root@CentOS68 oracle_bak]#su - oracle
[oracle@docker1 /opt/oracle/product/11.2./db_1/network/admin ::&&]$export ORACLE_SID=orcl
[oracle@docker1 /opt/oracle/product/11.2./db_1/network/admin ::&&]$echo $ORACLE_SID
orcl
[oracle@docker1 /opt/oracle/product/11.2./db_1/network/admin ::&&]$sqlplus / as sysdba #不需要密码
SQL*Plus: Release 11.2.0.3. Production on Mon Jul ::
Copyright (c) , , Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3. - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> show user;
USER is "SYS"
其它用户本机登陆:
sqlplus ceshi/123456@192.168.1.110/orcl
yum install readline* libtermcap-devel* -y
yum install rlwrap-0.41-1.1.x86_64.rpm -y
oracle用户下的 .bash_profil 中增加一条alias
alias sqlplus='/usr/bin/rlwrap sqlplus'
使改动生效
[oracle@linux245 ~]$ source ./.bash_profile
原文地址:https://www.cnblogs.com/mkdlf/p/6611016.html
1. D:\share\src\oracle\instantclient_10_2好用.7z 解压或H:\share\src\oracle\navicat-premium-oracle\instantclient-basic-win-x86-64-11.2.0.1.0.zip
2.配置 工具==选项==oci
3.创建连接(注意用户名要大写)
手机扫一扫
移动阅读更方便
你可能感兴趣的文章