oracle(创建数据库对象)

   1 --创建数据库
   2 --1.SYSDBA系统权限
   3 startup:--启动数据库。
   4 shutdown:--关闭数据库。
   5 alter database[mount]|[open]|[backup]|[character set]:--修改数据库到加载状态、打开状态,备份数据库,修改数据库字符集。
   6 create database:--创建数据库。
   7 drop database:--删除数据库。
   8 create spfile:--创建服务器初始化参数文件。
   9 alter database archivelog:--修改数据库的归档模式。
  10 alter database recover:--恢复数据库(完全恢复或者不完全恢复)。
  11 --具有restricted session权限,可以在受限状态下连接数据库。
  12 --2.SYSOPER系统权限
  13 startup:--启动数据库。
  14 shutdown:--关闭数据库。
  15 create spfile:--创建服务器初始化参数文件。
  16 alter database[mount]|[open]|[backup]:--修改数据库到加载状态、打开状态,备份数据库。
  17 alter database archivelog:--修改数据库的归档模式。
  18 alter database recover:--恢复数据库(只能进行完全恢复,不能进行不完全恢复)。
  19 --具有restricted session权限,可以在受限状态下连接数据库。
  20 --dba是一个角色
  21 --%ORACLE_HOME%NETWORK\ADMIN\sqlnet.ora,
  22 sqlnet.authentication_services=(nts)--不用密码认证
  23 sqlnet.authentication_services=none--用密码认证
  24 orapwd file=
  25     filename--在Windows系统中口令文件默认名称为PWD<SID>.ora,默认存放位置为%ORACLE_HOME%\database
  26     [password=password]--设置SYS用户口令。如果没有设定,执行时系统提示设置SYS用户口令。
  27     [entries=numusers]--设定口令文件中可以保存的具有SYSDBA或SYSOPER权限的用户最大数量。
  28     [force=y|n]--明如果指定的口令文件已经存在,是否覆盖。值为Y,则覆盖
  29     [ignorecase=y|n]--指定存储在口令文件中的SYS用户口令是否对大小写敏感。
  30 GRANT SYSDBA TO oe;--
  31 select * from v$pwfile_users;
  32 revoke sysdba from oe;--删除用户
  33 --手动创建数据库
  34 create database database_name
  35     [user sys identified by password]--设置sys用户口令
  36     [user system idnetified by password]--设置system用户口令
  37     [controlfile reuse]--按初始化参数文件中的control_files的值创建控制文件
  38     [maxinstances integer]--指定允许同时装载和打开的数据库实例个数
  39     [maxdatafiles integer]--设置控制文件中允许创建最多数据文件数量
  40     [maxloghistory integer]--可以自动归档的最大日志文件的数量,仅适用于RAC环境
  41     [maxlogfiles integer]--数据库中最大日志文件的数量
  42     [maxlogmembers integer]--设置每个日志文件组中最大成员日志文件数量
  43     [archivelog|noarchivelog]--设置新建数据库处于归档模式
  44     [force logging]--数据库中所有的变化信息(除了临时表空间)都写入日志文件
  45     [character set charset]--设置数据库字符集
  46     [national character set charset]--设置国家字符集
  47     [set time_zone=time_zone_region]--设置数据库时区
  48     [set default smallfile|--设置默认创建的表空间为小文件表空间
  49         bigfile tablespace]--设置默认创建的表空间为大文件表空间
  50     --设置重做日志文件
  51     [logfile[[group integer](‘filename1‘[,…])[size integer[k|m|g|t][reuse]]],…]
  52     --设置 system 表空间
  53     [extent management local]--设置system表空间采用本地管理方式
  54     [datafile ‘filename‘
  55         [size integer[k|m][reuse]]
  56         [autoextend off
  57             [
  58                 on
  59                 [
  60                     next integer[k|m]
  61                     maxsize unlimited|[integer[k|m|g|t]]
  62                 ]
  63             ]
  64         ],…]
  65     --设置 sysaux 表空间
  66     [sysaux datafile ‘filename‘[size integer[k|m|g|t][reuse]][autoextend off
  67     [on[next integer[k|m]maxsize[unlimited|integer[k|m|g|t]]]]],…]--为sysaux表空间创建数据文件
  68     --设置数据库默认表空间
  69     [default tablespace default_tablespace_name]--为数据库创建并指定默认表空间
  70     [datafile ‘filename‘ [size integer[k|m][reuse]][autoextend off--为system表空间创建数据文件
  71     [on[next integer[k|m]maxsize unlimited|[integer[k|m|g|t]]]]],…]
  72     [extent management dictionary|[local[autoallocate|[uniform size
  73     integer[k|m|g|t]]]]]
  74     --设置数据库默认临时表空间
  75     [default temporary tablespace default_temp_tablespace_name]--为数据库创建并指定默认临时表空间
  76     [tempfile ‘filename‘ [size integer[k|m|g|t][reuse]][autoextend off
  77     [on[next integer[k|m|g|t]maxsize unlimited|[integer[k|m|g|t]]]]],…]
  78     [extent management[dictionary|[local uniform size integer[k|m|g|t]]]]
  79     --设置数据库撤销表空间
  80     [undo tablespace undo_tablespace_name]--为数据库创建并指定默认撤销表空间
  81     [datafile ‘filename‘ [size integer[k|m|g|t][resuse]][autoextend off
  82     [on[next integer[k|m|g|t]maxsize unlimited|[integer[k|m|g|t]]]]],…]
  83 ---------------------------------------------------------------------------------------------------------
  84 --手动创建数据库实例
  85 --1.确定数据库名称与数据库实例名称
  86 --数据库名称(db_name),数据库实例名称(instance_name)。
  87 --2.保证必需的环境变量的设置
  88 --将ORACLE_HOME\bin路径信息写入PATH环境变量等。
  89 --SET ORACLE_SID=MYNEWDB
  90 --3.确定数据库管理员的认证方式
  91 --操作系统认证方式,口令文件认证方式
  92 orapwd--创建口令文件
  93 file=d:\app\administrator\product\11.2.0\dbhome_1\database\pwdmynewdb.ora
  94 password=mynewdb entries=10
  95 --4.创建文本初始化参数文件
  96 %ORACLE_HOME%\database\init<SID>.ora
  97 --其内容为:
  98 #设置全局数据库名
  99 db_domain=‘‘
 100 db_name=‘MYNEWDB‘
 101 #设置快速恢复区
 102 db_recovery_file_dest=‘d:\app\Administrator\flash_recovery_area‘
 103 db_recovery_file_dest_size=2G
 104 #设置控制文件
 105 control_files=(
 106 ‘D:\app\Administrator\oradata\mynewdb\control01.ctl‘,
 107 ‘D:\app\Administrator\oradata\mynewdb\control02.ctl‘,
 108 ‘D:\app\Administrator\oradata\mynewdb\control03.ctl‘)
 109 #设置标准数据块大小
 110 db_block_size=8192
 111 #设置内存管理
 112 memory_target=1G
 113 #设置最大进程数
 114 processes=150
 115 #设置撤销空间管理
 116 undo_management=AUTO
 117 undo_tablespace=UNDOTBS
 118 #设置兼容性
 119 compatible=‘11.2.0‘
 120 #设置共享服务器
 121 dispatchers=‘(PROTOCOL=TCP)(SERVICE=MYNEWDBXDB)‘
 122 #设置安全与审计
 123 audit_file_dest=‘D:\app\Administrator\admin\mynewdb\adump‘
 124 audit_trail=‘db‘
 125 #口令文件管理
 126 remote_login_passwordfile=EXCLUSIVE
 127 #设置游标
 128 open_cursors=300
 129 #设置诊断与跟踪信息
 130 diagnostic_dest=‘D:\app\Administrator‘
 131 #设置作业队列
 132 job_queue_processes=10
 133 --注意 初始化参数文件中所涉及的目录需要预先手动创建。
 134 --5.创建数据库实例
 135 oradim-new-sid sid--表示新建一个数据库实例。SID,设置新建数据库实例的名称
 136     [-syspwd password]--设置SYS用户口令。
 137     [-startmode manual|auto]--设置数据库实例的启动模式。如果设置为AUTO,
 138                             --创建实例后将启动实例、加载数据库,由于此时数据库还不存在,
 139                             --将导致错误。因此,应设置此参数为MANUAL。
 140     [
 141         [-pfile pfile]--指定数据库实例启动时使用文本初始化参数文件。
 142             |spfile--指定数据库启动时使用服务器初始化参数文件。
 143     ]--
 144     [-shutmode normal|immediate|abort]--设置数据库实例关闭方式。
 145 --例
 146 c:\>oradim-new-sid mynewdb-startmode manual
 147 --6.连接到数据库实例
 148 C:\>SQLPLUS/NOLOG
 149 SQL>CONNECT sys/mynewdb AS SYSDBA
 150 --其中,mynewdb是保存在口令文件中的SYS用户的口令。
 151 --7.创建服务器初始化参数文件
 152 SQL>CREATE SPFILE FROM PFILE;--为MYNEWDB数据库创建服务器初始化参数文件
 153                               --(建议用户使用数据库服务器初始化参数文件(spfile),
 154                               --而不是使用文本初始化参数文件(pfile))
 155 --8.启动数据库实例
 156 SQL>startup nomount
 157 --9.执行CREATE DATABASE语句
 158 --10.创建附加的表空间
 159 --11.运行脚本创建数据字典视图
 160 --在手动创建数据库时,需要手动运行脚本创建数据字典视图与同义词、创建PL/SQL包,
 161 --以及提供对SQL*Plus工具的支持。
 162 SQL>CONNECT sys/mynewdb AS SYSDBA
 163 SQL>@D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\catalog.sql;
 164 SQL>@D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\catproc.sql;
 165 SQL>CONNECT system/mynewdb
 166 SQL>@D:\app\Administrator\product\11.2.0\dbhome_1\sqlplus\admin\pupbld.sql
 167 --12.运行脚本安装其他组件
 168 --13.备份数据库
 169 --14.修改数据库实例的启动模式
 170 oradim-edit-sid sid
 171     [-startmode auto|manual]
 172     [-srvcstart system|demand]
 173     [-pfile file|-spfile]
 174     [-shutmode normal|immediate|abort]
 175     [-syspwd password]
 176 -------------------------------------------------------------------------------------------------------------
 177 --创建表空间
 178 create
 179     [bigfile|smallfile]--指定要创建大文件表空间,还是小文件表空间。如不指定,则由数据库属性DEFAULT_TBS_TYPE指定,默认为SMALLFILE。
 180     [temporary|undo]tablespace tbs_name--指定要创建的表空间类型,默认为永久表空间
 181     datafile|tempfile path/filename size integer[k|m][reuse]--指定表空间的数据文件的位置和名称。
 182     [
 183         autoextend[off|on]next integer[k|m]--指定数据文件是否可以自动扩展。如果可以自动扩展,需要设置NEXT值指明每次扩展的大小,
 184         maxsize[unlimited|integer[k|m]]    --设置MAXSIZE值指明文件的最终大小。默认值为OFF,不可扩展。
 185     ]
 186     [tablespace group tablespace_group_name]--只用于临时表空间,指定该临时表空间加入某个临时表空间组。
 187                                             --如果指定的临时表空间组不存在,系统会自动创建该临时表空间组。
 188     [extent management dictionary|local]--指定表空间的管理方式,默认为LOCAL,即本地管理。
 189     [autoallocate|uniform size integer[k|m]]--本地管理表空间区采用自动分配方式,区的最小值为64KB。自动分配是本地管理表空间中区的默认分配方式
 190     [segment space management auto|manual]--本地管理表空间中段的管理方式,默认为AUTO。
 191     [retention guarantee|noguarantee]--用于撤销表空间,指明事务提交后,回退信息在回退段中保留时间仍然为UNDO_RETENTION,在这段时间内回退信息不会被覆盖。
 192     [encryption[using encrypt_algorithm]--指定表空间的加密方法。
 193     [identified by password][[no]salt]]--
 194     [minimum extent integer[k|m]]--表空间中区的最小值。这是为了与早期版本的兼容而保留的子句。
 195     [
 196         default storage(
 197         [initial integer[k|m]]--为第一个区的大小
 198         [next integer[k|m]]--第二个区的大小
 199         [pctincrease integer]--第三个区和以后扩展的区的增长百分率,
 200         [minextents integer]--为段分配的区的最小数目
 201         [maxextents integer|unlimited])--为段分配的区的最大数目。这是为了与早期版本的兼容而保留的子句。
 202     ]
 203     [online|offline]--新建表空间处于脱机状态还是联机状态。
 204     [logging|--数据库对象的创建以及数据的DML操作信息都写入重做日志文件。
 205         nologging]--数据库对象的创建以及数据的DML操作信息都写入重做日志文件,但是数据的加载操作不写入重做日志文件。
 206     [force logging]--表空间中所有对象发生的变化信息(临时段的变化信息除外)都将被写入重做日志文件中,忽略NOLOGGING子句的作用。
 207     [blocksize integer]--表空间所基于的数据块大小。
 208     [flashback on|off]--是否支持表空间的闪回操作
 209 --说明BLOCKSIZE:表空间所基于的数据块大小。若为非标准块表空间,需要配置初始化参数DB_nK_CACHE_SIZE参数,其中nKB就是BLOCKSIZE的值。
 210 --默认为标准块表空间,BLOCKSIZE值为初始化参数DB_BLOCK_SIZE的值。
 211 --------------------------------------------------------------------------------------------------------
 212 --创建数据文件
 213 create tablespace--创建表空间同时创建数据文件
 214 create temporary tablespace --创建临时表空间的同时创建临时数据文件
 215 alter tablespace...add datafile --向表空间添加数据文件
 216 alter tablespace...add tempfile--向临时表空间添加数据文件
 217 create database --创建数据库时创建数据文件
 218 alter database...create datefile--数据氈恢复操作时,新建一个数据文件取代出现故障的数据文件
 219 --例
 220 alter tablespace users add datafile ‘d:\app\administrator\oradata\orcl\users02.dbf‘ size 10m;
 221 --修改数据文件大小
 222 select file_name,autoextensible from dba_data_files;--查看当前数据库所有数据文件的扩展方式。
 223 --例
 224 alter database datafile ‘d:\app\administrator\oradata\orcl\users04.dbf‘size 10m autoextend on next 512k maxsize 100m;
 225 --改变数据文件的可用性
 226 --要进行数据文件的脱机备份时,需要先将数据文件脱机。
 227 --需要重命名数据文件或改变数据文件的位置时,需要先将数据文件脱机。
 228 --如果Oracle在写入某个数据文件时发生错误,系统会自动将该数据文件设置为脱机状态,并且记录在报警文件中。排除故障后,需要以手动方式重新将该数据文件恢复为联机状态。
 229 --数据文件丢失或损坏,需要在启动数据库之前将数据文件脱机。
 230 --归档模式下:
 231 alter database datafile…online|offline--设置永久性数据文件的脱机与联机。
 232 alter database tempfile…online|offline--设置临时数据文件的脱机与联机。
 233 --将ORCL数据库设置为归档模式。
 234 shutdown immediate--数据库己经关闭,己经卸载数据库,例程己关闭
 235 startup mount--例程己启动
 236 --例
 237 alter database datafile
 238 ‘d:\app\administrator\oradata\orcl\users01.dbf‘offline;--脱机
 239 recover datafile
 240 ‘d:\app\administrator\oradata\orcl\users01.dbf‘;--完成介质恢复。
 241 alter database datafile
 242 ‘d:\app\administrator\oradata\orcl\users01.dbf‘online;--联机
 243 --非归档模式下数据文件的脱机
 244 --由于数据库处于非归档模式,数据文件脱机后,会导致信息的丢失,从而使该数据文件无法再联机,
 245 --即无法使用了。因此,在非归档模式下,通常不能将
 246 shutdown immediate
 247 startup mount
 248 alter database noarchivelog;
 249 alter database open;
 250 alter database datafile ‘d:\app\administrator\product\11.2.0\dbhome_1\database\users3.dbf‘ offline for drop;
 251 select file_name,from dba_data_files where tablespace_name = ‘users‘;
 252 --注意 使用该语句只是将数据文件脱机,数据文件不可用,并没有从数据字典以及控制文件中删除该数据文件信息,也没有从磁盘上删除该数据文件。
 253 --该文件随后可以随其所属表空间的删除而删除。
 254 alter tablespace users datafile offline;
 255 select name,status from v$datafile where ts# = (select ts# from  v$tablespace where name=‘users‘);
 256 --查看users表空间各个数据文件的状态
 257 recover tablespce users;
 258 --改变数据文件的名称与位置
 259 alter tablespacle…rename datafile…to--改变同一个表空间中的数据文件的名称与位置。
 260 alter database rename file…to--改变多个表空间中的数据文件的名称与位置
 261 --例
 262 select file_name,bytes from dba_data_files where tablespace_name = ‘users‘;
 263 alter tablespace users datafile offline;
 264 host copy d:\app\administrator\oradata\orcl\users02.dbf d:\disk1\users02.dbf
 265 host copy d:\app\administrator\oradata\orcl\users04.dbf d:\disk1\users04.dbf
 266 alter tablespace users rename datafile
 267 ‘d:\app\administrator\oradata\orcl\users02.dbf‘,
 268 ‘d:\app\administrator\oradata\orcl\users04.dbf‘ to
 269 ‘d:\disk1\users02.dbf‘,
 270 ‘d:\disk1\users02.dbf‘
 271 alter tablespace users online;
 272 --修改多个表空间中数据文件的名称与位置
 273 select file_name, bytes from dba_data_files where tablespace_name in(‘users‘,‘example‘);
 274 shutdown immediate
 275 startup mount
 276 host copy d:\app\administrator\oradata\orcl\users01.dbf d:\disk2\users01.dbf
 277 host copy d:\app\administrator\oradata\orcl\example01.dbf d:\disk2\example01.dbf
 278 alter database rename file_name
 279 alter database open;
 280 --删除数据文件
 281 alter tablespace…drop datafile--删除永久表空间中指定的空的数据文件。
 282 alter tablespace…drop tempfile--删除临时表空间中指定的空的临时数据文件。
 283 --例
 284 alter tablespace users drop datafile
 285 ‘d:\app\administrator\product\11.2.0\dbhome_1\database\users03.dbf‘;
 286 alter tablespace temp drop tempfile
 287 ‘d:\app\administrator\oradata\orcl\temp02.dbf‘;
 288 alter database tempfile
 289 ‘d:\app\administrator\oradata\orcl\temp02.dbf‘drop;
 290
 291 ------------------------------------------------------------------------------------------------------------
 292 --创建模式
 293 --可以使用create schema语句在一个事务中同时为当前模式创建多个表、视图,并执行多个授权操作。
 294 --在执行时,当所有的语句都成功完成时,系统提交该事务,当其中任何一个操作失败时,系统回滚整个事务。
 295 create schema authorization schema--指定模式名称,必须为当前模式的名称。
 296 [create_table_statement]--创建表的语句,结尾不能加分号等结束符号。
 297 [create_view_statement]--创建视图的语句,结尾不能加分号等结束符号。
 298 [grant_statement];--为用户授予对象权限或系统权限,结尾不能加分号等结束符号。
 299 --例:在system模式下创建一个表new_product、一个视图new_product_view,并将视图new_product_view的select权限授予用户scott
 300 connect system/sfd12345@orcl
 301 create schema authorization system
 302 create table new_product(   color varchar2(10)primary key,   quantity number  )
 303 create view new_product_view
 304    as
 305   select color,quantity from new_product
 306      where color=‘red‘ grant select
 307   on new_product_view to scott;
 308 ------------------------------------------------------------------------------------------------
 309 --创建表
 310 --标准表、临时表、索引表、分区表、聚簇表,外部表
 311 create[global temporary]table[schema.]table
 312 (
 313     column1 datatype[default|:=expr]--列的数据类型,设置列的默认值。
 314     [encrypt encryption_spec]--对列数据进行加密,设定采用的加密算法。
 315     [column_level_constraint]--列级约束
 316     [,column2[datatype]
 317        [generated always]as(column_expression)--创建虚拟列。
 318        [virtual]
 319        [column_level_constraint]--表级约束
 320     ]
 321     …
 322     [,table_level_constraint]
 323 )
 324 [on commit delete|preserve rows]--指定临时表的类型
 325 [organization
 326     [heap[segment_attributes_clause]table_compression]--创建标准表,以堆结构组织数据
 327     [index[segment_attributes_clause]index_org_table_clause]--创建索引表,以平衡树(b-tree)结构组织数据。
 328     [external external_table_clause]--创建外部表,数据只读
 329 ]
 330 [partition by partition_clause]--创建分区表
 331 [cluster cluster(column)]--创建聚簇表
 332 [tablespace tablespace]--设置表的存储位置
 333 [logging|nologging]--指明表的创建过程是否写入重做日志文件。默认为logging。
 334 [cache|nocache]--指明表中数据是否缓存。默认为cache
 335 [compress|nocompress]--指明表中数据是否压缩。默认为nocompress。
 336 [
 337     [noparallel]|[parallel integer]--指明是否允许并行创建表以及随后对表中数据进行并行操作。默认为noparallel。
 338 ]
 339 [pctfree integer]--指定块中必须保留的最小空闲空间比例,用于更新数据块内存在的数据行,而其余80%是用于插入新的数据行
 340 [pctused integer]--指定可以向块中插入数据时块已使用的最大空间比例。低于这个值才会插入数据,默认是10%
 341 [initrans integer]--可以同时对数据块进行dml操作的事务的初始个数,用于保证数据块的最低并行操作水平。
 342 [maxtrans integer];--可以同时对此数据块进行dml操作的事务的最多个数,用于保证数据块的最大并行操作水平
 343 [storage--设置表的存储分配方式。若不指定,则继承表空间的存储参数设置。(如果表空间采用字典管理方式,则可以在STORAGE子句设置任何存储参)
 344 (
 345     initial 65536 --指定为表段分配的第一个区的大小,以KB或MB为单位。默认值为5个数据块大小,最小值为2个数据块的大小。
 346     next 1048576 --指定为表段分配的第二个区的大小,以KB或MB为单位。默认值为5个数据块大小,最小值为1个数据块的大小。
 347     minextents 1 --指定允许为表段初始分配的区的最小数量。默认值为1,最小值为1。
 348     maxextents 2147483645--指定允许为表段分配的区的最大数量。默认为UNLIMITED(不受限制),最小值为1
 349     pctincrease 0 --指定从为表段分配的第三个区开始,区大小的增长百分比。当前区的大小为前一个区大小×(1+PCTINCREASE)。默认值为50,最小值为0。
 350     freelists 1 --
 351     freelist groups 1 --
 352     buffer_pool default --指定存放表数据的缓存池。表中数据存放在数据高速缓冲区中,数据高速缓冲区分为KEEP、RECYCLE和DEFAULT三个缓存池。如果没有指定BUFFER_POOL参数,BUFFER_POOL参数的默认值为DEFAULT,即数据存放在DEFAULT缓存池中。如果某个表的访问频率很高,可以将表的BUFFER_POOL参数设置为KEEP,这时该表的数据块将始终驻留在SGA中,以获得更快的访问速度。
 353     flash_cache default --
 354     cell_flash_cache default--
 355 )]
 356 ----------------------------------------------------------------------------------------------------
 357 --利用子查询创建表
 358 create[global temporary]table table
 359 (
 360     column1[column_level_constraint]
 361     [,column2[column_level_constraint]…]
 362     [,table_level_constraint]
 363 )
 364 [on commit delete|preserver rows]
 365 [organization
 366     [heap[segment_attributes_clause]table_compression]
 367     [index[segment_attributes_clause]index_org_table_clause]
 368     [external external_table_clause]
 369 ]
 370 [partition by partition_clause]
 371 [other_parameter_list]
 372 as
 373 subquery;
 374 ---------------------------------------------------------------------------
 375 --维护表
 376 --修改表
 377 alter table[schema.]table
 378     [alter_table_properties]--修改表属性参数
 379     [column_clauses]--修改表列
 380     [constraint_clauses]--修改表约束。
 381     [alter_table_partitioning]--修改分区表。
 382     [alter_external_table]--修改外部表。
 383     [move_table_clause]--修改表移动属性
 384 --添加列
 385 alter table table
 386 add
 387 (
 388     column1 datatype[default value][not null]
 389     [,column2 datatype generated always as(expression)[virtual]…]
 390 );
 391 --为表添加列时,如果表中已经有数据,那么新列不能用NOT NULL约束,
 392 --除非为新列设置默认值。在默认情况下,新插入列的值为NULL。
 393 --例
 394 alter table aux_emp
 395 add
 396 (
 397     phone_number varchar2(20),
 398     hiredate date default sysdate not null,
 399     commission number(7,2)generated always as(sal*comm)
 400 );
 401 --删除列
 402 alter table table
 403 drop[column column]|[(column1,column2,…)]
 404     [cascade constraints];
 405 --注意:如果被删除的列被其他表的外键引用,则必须使用CASCADE CONSTRAINTS选项,
 406 --同时删除引用表的外键。否则,列的删除操作无法成功完成。
 407 --将列标记为UNUSED状态,然后删除UNUSED状态列。
 408 alter table table_name
 409     set unused[column column]|[(column1,column2,…)]
 410     [cascade constraints];
 411 --修改列定义
 412 alter table table
 413     modify column[datatype][default expression]
 414     [encrypt encryption_specification]|[decrypt];
 415 --.修改列名
 416 alter table table rename column oldname to newname;
 417 --注意:依赖于该列的函数索引和检查约束继续保持有效状态。
 418 --依赖于该列的视图、触发器、函数、存储过程和包变为失效状态。当这些对象下次被调用时,
 419 --系统自动进行重新编译,使之变为有效状态;如果自动编译不成功,需要进行手动修改这些对象。
 420 --例
 421 alter table aux_emp rename column hiredate to hire_date;
 422
 423 --表结构重组
 424 alter table aux_emp move
 425     storage
 426     (
 427         initial 20k
 428         next 40k
 429         minextents 2
 430         maxextents 20
 431         pctincrease 0
 432     )
 433     tablespace tbs1;
 434     --1.手动分配表的存储空间
 435 alter table tablename allocate extent[([size size][datafile ‘filename‘])];
 436 --例
 437 alter table aux_emp allocate extent (size 100k datafile‘d:\disk1\tbs1_1.dbf‘);
 438 --2.手动回收表的存储空间
 439 dbms_space.unused_space(‘ehr‘,‘aux_emp‘,‘table‘,
 440 total_blocks,total_bytes,unused_blocks,
 441 unused_bytes,lastextf,last_extb,lastusedblock);
 442 alter table 表名 deallocate  unused[keep size];--keep是还要保留的空间
 443 --3.改变表的读写模式
 444 alter table 表名 read only
 445 --4.重命名表
 446 alter table table_old_name rename to table_new_name;
 447 --或
 448 rename table_old_name to table_new_name;
 449
 450 --给表或列加注解
 451 comment on table table is ;
 452 comment on column table.column is ;
 453 --删减表
 454 delete --使用delete语句删除表中大量记录会占用较多的系统资源,包括cpu时间、重做日志存储空间、回退段存储空间等,
 455 --同时还会触发表中定义的触发器。使用delete语句删除记录后,这部分记录占据的空间变成空闲空间,oracle并不会回收这部分存储空间,
 456 --hwm的位置不会改变,也无法使用手动操作回收该空闲空间。
 457 --因此,如果要删除表中所有记录,通常使用truncate或drop语句,而不使用delete语句
 458 drop --用drop语句删除整个表,包括表结构,回收表的存储空间,然后使用create语句重新创建该表。
 459 truncate --使用truncate语句可以快速、高效地删除表中所有的记录。truncate语句属于ddl语句,执行后立即提交,不会产生任何重做日志信息、
 460 --回退信息,因此truncate操作不能被回滚。在执行truncate语句时不会影响与被删减表相关的数据库对象以及该表的授权,也不会触发表中定义的触发器。
 461 --与delete操作不同,使用truncat语句删除表中数据的同时,hwm位置发生变化,分配给表的存储空间部分或全部被回收。
 462 truncate table[schema.]table
 463 [
 464     [drop[all]]|reuse storage--drop storage:默认选项,被删减表中只会保留由存储参数minextents指定的区的最小个数,其余的区都被回收
 465 ];
 466 --drop table
 467 drop table[schema.]table[cascade constraints][purge];
 468 drop table aux_emp purge;--清空回收站
 469 --分析表
 470 dbms_stats.gather_table_stats--统计表的存储过程
 471 (
 472     ownname varchar2,
 473     tabname varchar2,
 474     partname varchar2 default null,
 475     estimate_percent number default
 476     to_estimate_percent_type(get_param(‘estimate_percent‘)),
 477     block_sample boolean default false,
 478     method_opt varchar2 default get_param(‘method_opt‘),
 479     degree number default to_degree_type(get_param(‘degree‘)),
 480     granularity varchar2 default get_param(‘granularity‘),
 481     cascade boolean default to_cascade_type(get_param(‘cascade‘)),
 482     stattab varchar2 default null,
 483     statid varchar2 default null,
 484     statown varchar2 default null,
 485     no_invalidate boolean default to_no_invalidate_type(
 486     get_param(‘no_invalidate‘)),
 487     stattype varchar2 default ‘data‘,
 488     force boolean default false
 489 );
 490 --可以查询user_tables、all_tables、dba_tables数据字典视图获取分析后的统计信息。
 491 --可以使用analyze语句清除数据字典中表的统计信息,语法为:
 492 analyze table[schema.]table delete[system]statistics;
 493 analyze table employees delete statistics;--在删除表的统计信息的同时,该表上所有索引的统计信息也同时被删除了。
 494 --验证表存储结构
 495 analyze table[schema.]table validate structure--
 496 [
 497     cascade--对表进行完整性验证的同时,也对定义在该表上的索引进行完整性验证。
 498     [
 499         complete--对表及其索引进行完全的存储结构完整性验证,默认值。
 500         [into[schema.]table]--将验证返回的、包含损坏数据块的记录的ROWID保存到用户自定义的表中。
 501         [offline--在对表进行存储结构完整性验证时不允许对表进行DML操作。默认值。
 502           |online]--如果对表进行存储结构完整性验证时,若有用户对该表进行DML操作,则必须使用ONLINE参数,
 503                   --以联机方式对表进行存储结构完整性验证。这样虽然会稍微影响DML执行性能,但为表的存储结构完整性验证提供了更大的灵活性。
 504     ]|fast--对表和索引进行完全的结构完整性验证需要占用大量的资源,可以使用FAST参数,采用优化验证算法的验证方法。
 505           --该验证方法可以快速实现对表的完整性验证,但不返回损坏数据块的详细信息。
 506 ];
 507
 508 @d:\app\administrator\product\11.2.0\dbhome_1\rdbms\admin\utlvalid.sql;--创建一个默认表INVALID_ROWS
 509 analyze table employees validate structure;--分析表
 510 @D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\UTLCHN1.SQL;--CHAINED_ROWS表
 511 analyze table[schema.]table list chained rows[into[schema.table]];--分析行链接、行迁移情况
 512 -------------------------------------------------------------------------------------------------------
 513 --约束的定义方式
 514 --1.列级约束
 515 column_definition[constraint constraint_name]constraint_type…
 516 --2.表级约束
 517 [constraint constraint_name] constraint_type(column1[,column1,…])…
 518 --约束的状态
 519 enable--激活
 520 disable--禁用
 521 validate--对表中已有记录进行约束检查
 522 novalidate--不对表中已有记录进行约束检查。
 523 --创建与维护约束
 524 --1.采用列级约束方式定义约束
 525 constraint constraint--约束名称,如果用户没有为约束命名,Oracle将自动为约束命名,样式为SYS_Cn,其中n是数据库对象的唯一编号。
 526     [[not]null]|[unique]|[primary key]|[check(condition)]
 527     [
 528         references[schema.]object[(column)]
 529         [on delete cascade|[set null]]--定义级联删除的外键约束。
 530     ]
 531     [
 532         [not deferrable]|--约束不可延迟,默认值。
 533             [deferrable--约束可以延迟
 534                 [initially immediate|--可延迟约束的立即检查。
 535                     deferred]--可延迟约束的延迟检查
 536             ]
 537     ]
 538     [enable|disable]
 539     [validate|novalidate]
 540     [using index index_clause]--设置在定义主键约束或唯一性约束时自动创建的唯一性索引的参数。
 541     [exceptions into[schema.]table]--将违反完整性约束的记录保存到指定的表中。
 542 --2.采用表级约束方式定义约束
 543 constraint constraint
 544     [unique(column1[,column2…])]
 545     [primary key(column1[,column2…])]
 546     [check(condition)]
 547     [foreign key(column1[,column2…])
 548         references[schema.]object[(column[,column2…])]
 549         [on delete cascade|[set null]]
 550     ]
 551     [
 552         [not deferrable]|--约束不可延迟,默认值。
 553             [deferrable--约束可以延迟
 554                 [initially immediate]|--可延迟约束的立即检查。
 555                     deferred]--可延迟约束的延迟检查S
 556     ]
 557     [enable|disable][validate|novalidate]
 558     [using index index_clause]
 559     [exceptions into[schema.]table]
 560 --添加、修改与删除约束
 561 --1.添加约束alter table table
 562 add[constraint constraint]constraint_type(column1[,column2,…])
 563 [constraint_parameters];
 564 alter table books modify title not null;--添加非空约束
 565 --2.修改约束
 566 ALTER TABLE table
 567 MODIFY[CONSTRAINT constraint]
 568 [PRIMARY KEY]|[UNIQUE(column1[,column2,…])]
 569 [constraint_parameters];
 570 --3.重命名约束
 571 alter table table rename constraint old_name to new_name;
 572 --4.删除约束
 573 ALTER TABLE table
 574     DROP[CONSTRAINT constraint]
 575     [PRIMARY KEY]|[UNIQUE(column1[,column2,…])]
 576     [CASCADE][KEEP|DROP INDEX]
 577 set constraints all deferred;--对所有可以延迟的约束进行延迟检查
 578 set constraints all immediate;--恢复所有延迟检查的约束为立即检查
 579 -----------------------------------------------------------------------------------
 580 --创建其它表
 581 --创建索引表
 582 create table[schema.]table
 583 (
 584     column1 datatype[default|:=expr][column_level_constraint]
 585     …
 586     [,table_level_constraint]
 587 )
 588     organization index--创建索引表
 589     [pctthreshold percent]--指定保留在索引段的索引条目中的记录的百分比,超出该百分比的部分将保存到溢出数据段中,即一条记录分成两部分,
 590                           --一部分包含主键的列保存在原来的索引段中,而另一部分不包括主键的列保存到溢出数据段中。
 591     [including column]--该子句指定的列之前的所有列与主键列一起保存在索引段的索引条目中(数据百分比不能超过PCTTHRESHOLD设定的值),
 592                       --而之后的列都被存储在溢出数据段中。
 593     [overflow tablespace tablespace]--指定溢出数据段的存储表空间。
 594     --注意 创建索引表时,必须定义一个主键约束,否则将返回错误。
 595 --创建分区表
 596 create table table(…)
 597     partition by range(column1[,column2,…])--采用范围分区,分区列,可以是单列分区,也可以是多列分区。
 598     (
 599         partition partition1 values less than(literal|maxvalue)--分区设置(partition1就是个名字)。设置分区列值的上界。
 600         [tablespace tablespace]--设置分区所在的表空间
 601         [,partition partition2 values less than(literal|maxvalue)
 602         [tablespace tablespace],…]
 603     )
 604 alter tablespace tbs1 offline;--将分区表的一分区设置为脱机状态,验证分区的可用性
 605 --创建列表分区表
 606 create table table(…)
 607     partition by list(column)--采用列表分区
 608     (
 609         partition partition1 values([literal|null]|[default])
 610             [tablespace tablespace]
 611             [,
 612                 partition partition2 values([literal|null]|[default])
 613                 [tablespace tablespace],…
 614             ]
 615     )
 616 --创建散列分区表
 617 create table table(…)
 618     partition by hash(column1[,column2,…])
 619     [(partition partition[tablespace tablespace][,…])]
 620     [partitions hash_partition_quantity store in(tablespace1[,…])]
 621     …
 622 --------------------------------------------------------------------------------------
 623 --PL/SQL
 624 --一个完整的PL/SQL语句块由3个部分组成。
 625 declare
 626 --声明部分,定义变量、数据类型、异常、局部子程序等
 627 begin
 628 --执行部分,实现块的功能
 629 exception
 630 --异常处理部分,处理程序执行过程中产生的异常
 631 end;
 632 ----------------------------------------------------------------------------------------
 633 --控制结构
 634 --1.IF语句
 635 --利用IF语句实现选择控制的语法为:
 636 if condition1 then statements1;
 637     [elsif condition2 then statements2;]
 638     …
 639     [else else_statements];
 640 end if;
 641 --2.CASE(等值比较)
 642 case test_value
 643     when value1 then statements1;
 644     when value2 then statements2;
 645     ……
 646     when valuen then statementsn;
 647     [else else_statements;]
 648 end case;
 649 --2.CASE(多条件比较或搜索比较)
 650 case
 651     when condition1 then statements1;
 652     when condition2 then statements2;
 653     ……
 654     when conditionn then statementsn;
 655     [else else_statements;]
 656 end case;
 657 --3.LOOP
 658 loop
 659     sequence_of_statement;
 660     exit[when condition];
 661 end loop;
 662 --4.WHILE
 663 while condition loop
 664     sequence_of_statement;
 665 end loop;
 666 --5.FOR
 667 for loop_counter in[reverse]low_bound..high_bound loop
 668     sequence_of_statement;
 669 end loop;
 670 --例:
 671 begin
 672     for v_counter in 1..50 loop
 673     insert into temp_table values(v_counter,‘loop index‘);
 674     end loop;
 675 end;
 676 --6.GOTO
 677 declare
 678     v_counter binary_integer:=1;
 679 begin
 680     <<label>>
 681     insert into temp_table values(v_counter,‘loop index‘);
 682     v_counter:=v_counter+1;
 683     if v_counter <= 50 then
 684         goto label;
 685     end if;
 686 end;
 687 --游标
 688 --1.显示游标
 689 cursor cursor_name is select_statement;--(1)定义游标
 690 open cursor_name;--(2)打开游标
 691 fetch cursor_name into variable_list|record_variable;--(3)检索游标
 692 close cursor_name;--(4)关闭游标
 693 --例:
 694 declare
 695     v_deptno hr.employees.department_id%type;
 696     cursor c_emp is select*from hr.employees
 697         where department_id=v_deptno;
 698     v_emp c_emp%rowtype;
 699 begin
 700     v_deptno:=&x;
 701     open c_emp;
 702     loop
 703         fetch c_emp into v_emp;
 704         exit when c_emp%notfound;
 705         dbms_output.put_line(v_emp.employee_id||‘‘||v_deptno||‘‘
 706         v_emp.first_name||‘‘||v_emp.last_name||‘‘||v_emp.salary);
 707     end loop;
 708     close c_emp;
 709 end;
 710 --显式游标的属性
 711 --无论显式游标还是隐式游标,都具有%isopen、%found、%notfound、
 712 --%rowcount、返回到目前为止从游标缓冲区检索的记录的个数。
 713 --%bulk_rowcount数值型,用于取得FORALL语句执行批绑定操作时第i个元素所影响的行数。五个属性,
 714 --利用游标属性可以判断当前游标状态。
 715 --.参数化显式游标
 716 cursor cursor_name(parameter1 datatype[,parameter2 datatype…])
 717     is select_statement;
 718 --例如,查询并输出某个部门的员工信息。
 719 declare
 720     cursor c_emp(p_deptno employees.department_id%type)is
 721     select*from hr.employees where department_id=p_deptno;
 722     v_emp c_emp%rowtype;
 723 begin
 724     open c_emp(10);
 725     loop
 726         fetch c_emp into v_emp;
 727         exit when c_emp%notfound;
 728         dbms_output.put_line(v_emp.employee_id||v_emp.last_name);
 729     end loop;
 730     close c_emp;
 731     open c_emp(20);
 732     loop
 733         fetch c_emp into v_emp;
 734         exit when c_emp%notfound;
 735         dbms_output.put_line(v_emp.employee_id||v_emp.last_name);
 736     end loop;
 737     close c_emp;
 738 end;
 739 --1.利用简单循环检索游标的基本方式如下:
 740 declare
 741     cursor cursor_name is select...;
 742 begin
 743     open cursor_name;
 744     loop
 745         fetch...into...;
 746         exit when cursor_name%notfound;
 747         ...
 748     end loop;
 749     close cursor_name;
 750 end;
 751 --2.利用WHILE循环检索游标的基本方法如下:
 752 declare
 753     cursor cursor_name is select...;
 754 begin
 755     open cursor_name;
 756     fetch...into...;
 757     while cursor_name%found loop
 758         fetch...into...;
 759         …
 760     end loop;
 761     close cursor;
 762 end;
 763 --3.利用FOR循环检索游标
 764 --利用FOR循环检索游标时,系统会自动打开、检索和关闭游标。
 765 --用户只需要考虑如何处理从游标缓冲区中检索出来的数据。其方法如下:
 766 declare
 767     cursor cursor_name is select...;
 768 begin
 769     for loop_variable in cursor_name loop
 770     …
 771     end loop;
 772 end;
 773 --1.利用游标更新或删除数据的定义方法
 774 cursor cursor_name is
 775     select select_list_item from table for update[of column_reference]
 776     [nowait];--若数据对象已经被其他会话加锁,则当前会话挂起等待(默认状态)若指定则返回ORACLE错误。
 777 --2.利用游标更新或删除数据的方法
 778 where current of cursor_name;
 779 --例
 780 declare
 781     cursor c_emp is select*from hr.employees for update;
 782     v_increment number;
 783 begin
 784     for v_emp in c_emp loop
 785         case v_emp.department_id
 786             when 10 then v_increment:=100;
 787             when 20 then v_increment:=140;
 788             when 30 then v_increment:=200;
 789             else v_increment:=250;
 790         end case;
 791         update hr.employees set salary=salary+v_increment
 792             where current of c_emp;
 793     end loop;
 794     commit;
 795 end;
 796 --隐式游标
 797 --显式游标用于处理返回多行数据的SELECT查询,但所有的SQL语句都有一个执行的缓冲区,
 798 --隐式游标就是指向该缓冲区的指针,由系统隐含地打开、处理和关闭。隐式游标又称为SQL游标。
 799 --sql%isopen--对用户而言,该属性值始终为false,因为操作时系统自动打开,操作完后立即自动关闭
 800 --sql%found--判断当前的操作是否会对数据库产生影响。如果有数据的插入、删除、修改或查询到数据,则返回true,否则返回false。
 801 --sql%notfound--判断当前的操作是否对数据库产生影响。如果没有数据的插入、删除、修改或没有查询到数据,则返回true,否则返回false。
 802 --sql%rowcount--数值型,返回当前操作所涉及的数据库中的行数。
 803 --例
 804 begin
 805     update hr.employees set salary = salary + 100
 806         where employee_id=1000;
 807     if sql%notfound then
 808         insert into hr.employees(employee_id,first_name,last_name,
 809                                     email,hire_date,job_id,department_id)
 810         values(employees_seq.nextval,‘san‘,‘zhang‘,
 811                             ‘[email protected]‘,sysdate,‘ac_account‘,200);
 812     end if;
 813 end;
 814 --或
 815 begin
 816     update hr.employees set salary = salary + 100
 817         where employee_id = 1000;
 818     if sql%rowcount = 0 then
 819         insert into hr.employees(employee_id,first_name,last_name,
 820                                     email,hire_date,job_id,department_id)
 821         values(employees_seq.nextval,‘san‘,‘zhang‘,
 822                                     ‘[email protected]‘,sysdate,‘ac_account‘,200);
 823     end if;
 824 end;
 825 --注意 当SELECT…INTO语句没有查询到任何数据时,会激发NO_DATA_FOUND异常。
 826 --游标变量
 827 --前面介绍的显式游标在定义时与特定的查询绑定,其结构是不变的,因此又称为静态游标。
 828 --游标变量是一个指向多行查询结果集的指针,不与特定的查询绑定,
 829 --因此具有非常大的灵活性,可以在打开游标变量时定义查询,可以返回不同结构的结果集。
 830 type ref_cursor_type_name is ref cursor[return return_type]--(1)定义游标引用类型
 831 --在Oracle 11g中,系统预定义了一个游标引用类型,称为SYS_REFCURSOR,可以直接使用它定义游标变量。
 832 ref_cursor_type_name variable_name;--(2)声明游标变量
 833 --例
 834 type emp_cursor_type is ref cursor return employees%rowtype;
 835 type general_cursor_type is ref cursor;
 836 v_emp emp_cursor_type;
 837 v_general general_cursor_type;
 838 my_cursor sys_refcursor;
 839 OPEN cursor_variable FOR select_statement;--打开游标变量
 840 loop--检索游标变量
 841     fetch cursor_variable into variable1,variable2,...;
 842     exit when cursor_variable%notfound;
 843     …
 844 end loop;
 845 CLOSE cursor_variable;--.关闭游标变量
 846 --例
 847 DECLARE
 848 TYPE emp_cursor_type IS REF CURSOR RETURN hr.employees%ROWTYPE;
 849 TYPE general_cursor_type IS REF CURSOR;
 850 v_emp emp_cursor_type;
 851 v_general general_cursor_type;
 852 my_cursor SYS_REFCURSOR;
 853 v_empinfo hr.employees%ROWTYPE;
 854 v_deptinfo hr.departments%ROWTYPE;
 855 begin
 856     open v_emp for select*from hr.employees;
 857     loop
 858         fetch v_emp into v_empinfo;
 859         exit when v_emp%notfound;
 860         dbms_output.put_line(v_empinfo.employee_id||‘‘
 861             v_empinfo.first_name||‘‘||v_empinfo.last_name||‘‘
 862                 v_empinfo.salary);
 863     end loop;
 864     close v_emp;
 865     open my_cursor for select*from hr.departments;
 866     loop
 867         fetch my_cursor into v_deptinfo;
 868         exit when my_cursor%notfound;
 869         dbms_output.put_line(v_deptinfo.department_id||‘‘
 870             v_deptinfo.department_name);
 871     end loop;
 872     close my_cursor;
 873     --open v_general for select employee_id,first_name,last_name,
 874     --salary,department_id from hr.employees;
 875 end;
 876 -----------------------------------------------------------------------------------------------------
 877 --预定义异常(略)
 878 --非预定义异常
 879 declare
 880     e_deptno_fk exception;
 881     pragma exception_init(e_deptno_fk,-2292);
 882 begin
 883     …
 884 exception
 885     …
 886 end;
 887 --用户自定义异常
 888 e_exception exception;--定义异常
 889 raise user_define_exception;--抛出异常
 890 exception--异常的捕获及处理
 891     when exception1[or excetpion2...]then sequence_of_statements1;
 892     when exception3[or exception4...]then sequence_of_statements2;
 893     …
 894     when others then sequence_of_statementsn;
 895 end;
 896 ------------------------------------------------------------------------------------------------------------
 897 --创建存储过程
 898 create[or replace]procedure procedure_name
 899     (parameter1_name[mode]datatype[default|:=value]
 900             [,parameter2_name[mode]datatype[default|:=value],...])
 901     as|is
 902     /*declarative section is here*/
 903 begin
 904     /*executable section is here*/
 905 exception
 906     /*exception section is here*/
 907 end[procedure_name];
 908 --其中mode有IN、OUT、IN OUT
 909 --删除存储过程
 910 drop procedure proc_show_emp;
 911 ---------------------------------------------------------------------------------------------------------
 912 --创建函数
 913 create[or replace]function function_name
 914         (parameter1_name[mode]datatype[default|:=value]
 915                 [,parameter2_name[mode]datatype[default|:=value],...])
 916     return return_datatype
 917 as|is
 918 /*declarative section is here*/
 919 begin
 920 /*executable section is here*/
 921 exception
 922 /*exception section is here*/
 923 end[function_name];
 924 --例
 925 create or replace function func_dept_maxsal(
 926             p_deptno hr.employees.department_id%type)
 927     return hr.employees.salary%type
 928 as
 929     v_maxsal hr.employees.salary%type;
 930 begin
 931         select max(salary)into v_maxsal from hr.employees
 932             where department_id=p_deptno;
 933     return v_maxsal;
 934 exception
 935     when no_data_found then
 936     dbms_output.put_line(‘the deptno is invalid!‘);
 937 end func_dept_maxsal;
 938 --------------------------------------------------------------------------------------------------
 939 --创建包声明
 940 create or replace package package_name
 941     is|as
 942     [pragma serially_resuable]
 943     type_definition|
 944     variable_declaration|
 945     exception_declaration
 946     cursor_declaration|
 947     procedure_declaration|
 948     function_declaration
 949 end[package_name];
 950 --.创建包体
 951 create or replace package body package_name
 952 is|as
 953     [pragma serially_resuable]
 954     type_definition|
 955     variable_declaration|
 956     exception_declaration
 957     cursor_declaration|
 958     procedure_definition|
 959     function_definition
 960 end[package_name];
 961 -------------------------------------------------------------------------
 962 --创建用户
 963 create user user identified--用于指明用户身份认证方式。
 964     [by password]--指定用户采用数据库身份认证
 965     [externally--指定用户采用外部身份认证,如操作系统认证或第三方认证。
 966         [as ‘certificate_dn|--指定用户只采用SSL外部身份认证
 967         kerberos_principal_name‘]--指定用户只采用kerberos外部身份认证。
 968     ]
 969     [globally[as ‘directory_dn‘]]--指定用户采用全局身份认证。
 970     [default tablespace tablespace]--用于设置用户的默认表空间。
 971     [temporary tablespace tablesapce|tablespace_group_name]--用于设置用户的临时表空间
 972     [quota n k|m|unlimited on tablespace]--用于指定用户在特定表空间上的配额
 973     [profile profile]--用于为用户指定概要文件。默认值为DEFAULT,采用系统默认的概要文件。
 974     [password expire]--用于设置用户口令的初始状态为过期,用户在首次登录数据库时必须修改口令。
 975     [account lock|unlock];--用于设置用户初始状态为锁定,默认为不锁定。
 976 --注意 创建一个用户后,如果不为该用户授权,则该用户不能做任何操作,即便是连接数据库。
 977 --只有给用户授予了CREATE SESSION系统权限后,用户才可以连接数据库。
 978 --如果用户要通过OEM访问数据库,还需要具有SELECT ANY DICTIONARY系统权限。
 979 orapwd file=filename[password=password][entries=numusers][force=y|n]
 980 [ignorecase=y|n]
 981 --例
 982 orapwd file=E:\PWDorcl.ora password=www123 entries=5 force=n ignorecase=y;
 983 show parameter remote_login_passwordfile;
 984 alter system set remote_login_passwordfile = execlusive scope = spfile;
 985 --查询某个用户具有的角色:
 986 select grantee,granted_role from dba_role_privs where grantee=‘SYS‘;
 987 --查询某个用户具有的系统权限:
 988 select grantee,privilege from dba_sys_privs where grantee=‘SYS‘;
 989 --查询某个角色中具有什么系统权限:
 990 select privilege from role_sys_privs where role=‘RESOURCE‘;
 991 --查询某个角色中包含有什么角色
 992 select granted_role from role_role_privs where role=‘SYSDBA‘;
 993 --管理用户、角色和权限的DBA视图:
 994
 995 ----------------------------------------------------------------------------------
 996 --创建重做日志文件
 997 alter database add logfile
 998 (‘d:\disk4\redo04a.log‘,‘d:\disk5\redo04b.log‘)size 10m;
 999 alter database add logfile group 5
1000 (‘d:\disk4\redo05a.log‘,‘d:\disk5\redo05b.log‘)size 10m;
1001 --注意:重做日志文件最小为4MB
1002 select * from v$logfile order by group#;
1003 alter database add logfile member
1004 ‘d:\disk5\redo01b.log‘to group 1,
1005 ‘d:\disk5\redo02b.log‘to group 2,
1006 ‘d:\disk5\redo03b.log‘to group 3;
1007 alter database rename file…to--修改重做日志文件的名称与位置
1008 ALTER DATABASE DROP LOGFILE MEMBER--删除重做日志文件组及其成员
1009 --归档重做日志管理
1010 archive log list--查看当前数据库的归档设置情况
1011 alter database archivelog--设置归档
1012 alter database noarchivelog--设置非归档
1013 --将数据库从非归档模式转换为归档模式的步骤为:
1014 --1.关闭数据库
1015 shutdown
1016 --2.备份数据库。
1017 --3.设置归档目的地
1018 select name,value,from v$parameter where name = ‘db_recovery_file_dest‘;
1019 --4.将数据库启动到加载状态。
1020 startup mount
1021 --5.改变数据库归档模式。
1022 alter database archivelog;
1023 --6.打开数据库。
1024 alter database open;
1025 --7.关闭数据库。
1026 shutdown
1027 --8.备份数据库。
时间: 2024-10-10 07:36:11

oracle(创建数据库对象)的相关文章

Oracle创建数据库

打开 Database Configuration Assistant 下一步 选择"高级模式" 下一步 选择创建数据库的类型(一般选择"数据仓库")(一般用途或事务处理?:?即OLTP(联机事务处理).一般数据量小,DML频繁. 数据仓库:?即OLAP,数据量大,DML少关键你的数据是OLTP还是OLAPOLTP:联机事务处理,表示事务多,但执行大多较短,并发量大的数据库,如日常的进销存操作等:OLAP:?联机分析处理,表示事务较少,但执行大多较长,并发量较小的数

ORACLE创建数据库时无法创建目录

ORACLE创建数据库时无法创建目录,如图所示信息 原因:没有创建写入的权限 解决:修改文件夹权限即可 F:\oracle\product\10.2.0\db_1\cfgtoollogs\dbca 增加验证用户的写入.修改权限即可 备注:在win7.win8系统上,相关oracle的软件(PL/SQL)都最好以"以管理员的身份运行",否则会产生一些莫名其名的错误,比如创建失败,创建时闪退,提示为空等

Oracle创建'数据库'三步走

--创建表空间 create tablespace waterboss datafile 'd:\waterboss.dbf' size 100m autoextend on next 10m; --创建用户 create user wateruser identified by 011220 default tablespace waterboss; --用户赋权 grant dba to wateruser; Oracle创建'数据库'三步走 原文地址:https://www.cnblogs

Oracle 创建数据库卡死在85%

Oracle 创建数据库卡死在85%处理方法 1.首先用改工具,删除数据库 2.对应的目录 3.重启服务器(本次尝试有重启,在有其他数据库在跑的情况下,可以试试不重启) 原文地址:https://www.cnblogs.com/chengeng/p/10218398.html

Oracle 创建数据库实例

?  简介 本文来讨论 Oracle 数据库实例的创建,Oracle 创建数据库实例采用 Database Configuration Assistant(数据库配置助理),以下简称 DBCA.DBAC 是一个可视化数据库管理的向导工具,使用比较方便.DBAC 不但用于创建数据库,还可以管理已有的数据库,比如:配置数据库.删除数据库.管理模板. 另外,创建数据库还可以采用命令的方式,但是我们的重点不是学习这个,而且该方式容易出错,所以不推荐使用命令的方式创建数据库. ?  准备事项 本文采用 W

oracle 备份数据库对象(存储过程PROCEDURE,FUNCTION,VIEW,TRIGGER...)

开发过程中,需要不停的备份数据库对象, 特别是存储过程, 每次手动备份不免很低能啊 历经几次修改终于, 完美了,O(∩_∩)O哈哈~      (当然,你也可以再改简便一点~~~) select dbms_metadata.get_ddl('PROCEDURE',"PROCEDURE_NAME",'NAG') 遇到大存储过程老是丢东西不说, 对象名 还老是 "用户名"."对象名" 的格式,腻烦人!~ CREATE OR REPLACE PROCE

利用Oracle创建数据库

本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217151.html 数据库的创建 打开"所有程序"-"Oracle - OraDb10g_home2"-"配置和移植工具"-"Database Configuration Assistant",启动数据库创建界面, 单击"下一步(N)", 选择"创建数据库",单击&quo

oracle - 创建数据库

在服务器端的oracle,用户有点差异,当 我通过 'sqlplus / as sysdba' 命令登陆后,并不能创建数据库,sysdba拥有最高的系统权限,登陆后是 sys,以as sysdba登录,其结果实际上它是作为sys用户登录的,这一点类似Linux里面的sudo的感觉. 在创建数据库之前,需要 'conn / as sysdba;', 然后才能使用 'create database db_name' 命令创建数据库.

oracle创建数据库表空间 用户 授权 导入 导出数据库

windows下可以使用向导一步一步创建数据库,注意编码. windows连接到某一个数据库实例(不然会默认到一个实例下面):set ORACLE_SID=TEST --登录开始创建表空间及可以操作的用户sqlplus / as sysdba; --创建表空间create tablespace db_test datafile 'D:\oracle\oradata\TEST\db_test.dbf' size 50m autoextend on; --查询创建好的表空间select defaul