愤怒的大鸟 发表于 2015-1-16 22:14:16

MYSQL网页设计Oracle数据库进修之第一篇

DBaaS解决方案既可以解决这些问题,又能为客户节约资金。相反作为解决方案提供商,采用DBaaS模式似乎就并不那么有吸引力了,因为与企业内部署软件的解决方案相比,DBaaS意味着更低的利润。  权限办理:
  oracle9内里默许的三个用户名和暗码:
  syschange_on_install//权限最高的办理员
  systemmanager//一般的办理员
  scotttiger//一般用户
  在oracle10中,仍旧利用这三个用户作为默许用户。但sys和system用户的暗码不再默许。在安装数据库的时分,能够由用户指定。从平安角度思索,scott用户默许被锁定,以是要利用该用户,必要先排除锁定。
  注重:我们要利用oracle数据库,最少要启动两个服务,一个是监听服务,一个是数据库实例。
  创立用户;
  以体系办理员的身份上岸。
  利用语句:createuserlisiidentifiedbylisi;//创立了一个叫lisi的用户,暗码也为lisi
  固然创立了用户,但该用户如今并没有任何权限。就连上岸数据库的权限都没有。假设利用:sqlpluslisi/lisi上岸数据库,会报错,显现没有createsession的权限。
  以是仍是先利用体系办理员给lisi这个用户指定上岸的权限。
  语句为:grantcreatesessiontolisi;
  受权事后,lisi能够上岸数据库了。可是如今还没有创立数据库表的权限,仍需指定。
  语句为:grantcreatetabletolisi;
  利用lisi账号,创立数据库表:createtablemytable(idint);
  实行后却提醒毛病:对表空间‘USERS’无权限。每一个数据库表都有本人的表空间,相称于文件必需位于某个文件夹下。
  固然lisi用户具有创立表的权限,但没有利用表空间的权限,终极仍是创立不了表。这就比如你有我房间的钥匙,可是没有我家年夜门的钥匙,你终极仍是进不了我的房间。
  经由过程体系办理员授与lisi用户利用表空间的权限:
  grantunlimitedtablespacetolisi;如许用户lisi对表空间的利用就没无限制了。
  在lisi账户下,创立表:createtablemytable(idint);
  拔出一笔记录:insertintomytablevalues(1);
  拔出乐成。
  也能够删除表:droptablemytable;
  有人大概会发生疑问,既然数据库的权限办理这么严厉,下面我们只是授与lisi用户创立表的权限。并没有授与其拔出,删除等权限呀。这里我们能够如许了解:以后用户创立了一个表,那末该表就属于该用户,用户既然创立了表,天然就对该表具有统统权限啦。
  并且:数据库并没有droptable的权限。利用:grantdroptabletolisi;呈现:权限缺掉或有效的毛病提醒。
  下面是授与权限,那末怎样打消用户的某个权限呢?
  利用以下语句能够打消lisi的创立表的权限:revokecreatetablefromlisi;
  再利用lisi账号创立表,就会呈现毛病提醒:权限不敷。
  在年夜多情形下,假如我们对用户的权限常常修正,我们怎样晓得用户有哪些权限呢?
  数据库默许保护了一个视图对外供应一些体系信息(叫数据字典),能够检察用户的详细权限。
  利用以下语句检察以后用户的体系权限:
  select*fromuser_sys_privs;
  USRENAMEPRIVILEGEADM
  -------------------------------------------------------------------------------------------
  LISICREATESESSIONNO
  LISIUNLIMITEDTABLESPACENO
  oracle中的权限分为体系权限和工具权限。
  体系权限就是我们下面所讲的一些权限。
  工具权限是指:好比用户lisi创立了一个表,该表就能够作为一个工具对待。别的一个用户是不是有会见该表的权限呢。这就是所谓的工具权限办理。
  我们在创立一个用户wangwu。暗码也为wangwu。在该用户下,创立一个表mytab。假如lisi用户向会见表mytab,是不是会乐成呢?
  在lisi的窗口下,输出:select*frommytab;报错:表或视图不存在。我们晓得表属于表的创立者。
  这里我们间接查询表mytab,数据库会到以后用户下寻觅该表,明显以后用户lisi没有表mytab。以是提醒表或视图不存在。
  那我们指定表的一切者,再次查询:select*fromwangwu.mytab;窗口显现“权限不敷”的毛病提醒。由此可知,固然找到了mytab表,却没有会见的权限。
  只要表的具有者才能够授与该表的相干权限给其他用户。利用用户wangwu的操纵窗口,利用以下语句,把查询语句授与lisi;
  grantselectonmytabtolisi;
  实行此语句后,lisi就能够查询用户wangwu的mytab表了。
  假如要取得其他关于mytab表的权限,仍旧必要指定(多个权限同时指定,用逗号分开):
  grantupdate,select,deleteonmytabtolisi;
  假如要把表的一切权限都付与给用户lisi,能够如许写;
  grantallonmytabtolisi;
  在wangwu的窗口下,向mytab拔出几条数据。然后查询,却显现“未选定行”。申明方才的拔出没有同步到数据库中往。
  在oracle下,默许必要对sql语句手动举行提交。以是在几条拔出语句后,能够实行commit;语句提交。再次查询,表中就无数据了。
  假如要把某个权限授与一切的用户,可使用public关头字:
  grantcreatesessiontopublic;
  检察以后用户的工具权限,利用以下语句:
  select*fromuser_tab_privs;
  oracle的权限把持粒度很细,乃至能够准确到某一列的权限。
  grantupdate(name)onmytabtolisi;
  这句实行的效果就是,lisi用户对表mytab仅具有更新name这一列的权限。
  grantinsert(id)onmytabtolisi;
  检察以后用户对数据库表的列的权限:
  select*fromuser_col_privs;
  在lisi权限下,实行:updatewangwu.mytabsetname=fdsfa,id="dfs"whereid=1;
  实行后显现权限不敷。
  updatewangwu.mytabsetname="fsa"whereid=1;
  如许就能够了。
  一样实行:insertintowangwu.mytabvalues(4,"asf");实行后也显现权限不敷。
  修正语句为:insetintowangwu.mytab(id)values(4);乐成实行。
  只能对更新和拔出设定准确到某列的权限把持,不克不及对查询和删除设定。
  命令:showuser能够检察以后用户
  数据库有三品种型的语句:
  ddl:数据界说言语,指定是数据库表的创立,删除之类的操纵。
  dml:数据利用言语,针对表的增编削查操纵,只要dml必要举行提交操纵。
  dcl:数据把持言语,对体系权限和工具权限的办理。
  权限的传送:
  体系权限的传送:
  sys用户把一些体系权限受权给lisi用户.
  grantalteranytabletolisi;
  检察lisi的体系权限,就有了alteranytable的权限。
  如今lisi想把该权限传送受权给wangwu用户实行以下语句:grantalteranytabletowangwu;实行后报“权限不敷”。
  要想lisi也能够传送权限,能够在sys用户受权时加上withadminoption的选项,该选项就申明了还具有权限的办理才能。
  即:grantalteranytabletolisiwithadminoption;如许lisi就能够把alteranytable的权限传送给wangwu了。
  要想wangwu也能够传送该权限,也利用该admin选项便可。
  检察lisi的体系权限,他的alteranytable权限的统一行的adm字段取值由NO变成YES,申明lisi对该权限具有分派功效了。
  工具权限的传送:
  与体系权限的传送相似,不外前面的选项有所改动:
  到场sys创立了一个A表。授与lisi的select权限:
  grantselectOnAtolisi;
  假如想让lisi具有对A表的select权限的分派才能,只需修正为:
  grantselectOnAtolisiwithgrantoption;
  思索:假如sys办理员打消了lisi的权限,那末wangw的权限是不是也被打消了呢?
  经由过程脚色对权限举行办理
  假如依照下面的权限办理办法,对每一个用户一一的分派权限,一定会很凌乱,招致办理的坚苦。以是oracle供应了脚色来对权限举行汇合化的办理。
  脚色就是权限的汇合。
  在sys下创立脚色:
  createrolemyrole;
  给脚色增加权限:
  grantcreatesessiontomyrole;
  grantcreatetabletomyrole;
  创立用户:
  createuserzhangsan;
  grantmyroletozhangsan;//付与以上的两个权限给zhangsan
  有些体系权限没法间接付与脚色,由于该权限太年夜了,好比unlimitedtablespace。
  比方:实行grantunlimitedtablespacetomyrole;
  呈现毛病提醒:没法将unlimitedtablespace授与脚色
  删除脚色:
  droprolemyrole;
  权限举例:
  createtablecreateanytable
  alteranytable
  deleteanytable
  增补:oracle数据库不含紫色的权限范例。由于有了createtable权限,申明表的统统都回创立者。不必要还指定altertable和droptable权限了,默许就有了。
  而createanytable这个权限标明该用户能够给其他用户创立表。
  示例:wangwu给lisi创立一个表temp
  createtablelisi.temp(idint);//有大概报“超越表空间‘USERS’的空间限额”毛病提醒,那是由于lisi用户大概还没有表空间权限,实行付与lisi用户unlimitedtablespace的权限,成绩便可办理。
  注重:表是属于某个用户的。而脚色不属于某个用户。
  oracle三种上岸考证机制
  操纵体系考证
  暗码文件考证
  数据库考证
  关于尽年夜几的一般用户而言,数据库启动后,用户上岸时接纳的是数据库考证。
  而对应sys用户,它的权限是最年夜的。它的权限乃至包含启动和封闭数据库。它在oracle数据库还没启动时,就毗连到oracle数据库中往,举行启动。如许我们不难了解,sys的身份考证不成能接纳数据库考证,由于事先数据库还没有启动呢。以是sys的身份考证利用的是操纵体系考证和暗码文件考证(如许说不是很严厉,应当是以SYSDBA和SYSOPER毗连身份上岸城市以这两种体例举行考证)。
  当一个用户毗连数据库的时分,客户端起首毗连到监听服务,监听把哀求发送到数据库,假如考证经由过程了,今后就不必要监听了,客户端间接和数据库实例通讯。
  初期在linux和unix上运转的oracle,它有严厉的启动按次:先启动监听(只必要敲个命令便可,不必要甚么权限),后启动数据库实例(必要权限)
  实行的命令序列:lsnrctlstart//启动监听服务
  sqlplussys/oracleassysdba//启动数据库实例的哀求,发明以sysdba的身份毗连,以是不举行数据库考证,而是接纳操纵体系和暗码文件考证。假如考证经由过程,运转启动数据库实例
  startup//启动数据库实例
  初期版本命令得如许写:
  lsnrctlstart
  sqlplus/nolog
  connsys/oracleassysdba
  startup
  在windows下oracle的启动历程,举行了傻瓜式的封装:
  lsnrctlstart
  oradim-starup-sidorcl
  增补:在毗连到数据库时,能够如许写:conn/assysdba也能够连连上,乃至胡乱指定用户名和暗码,如:connabc/abcassysdba都能够上岸。这是由于毗连是以sysdba身份,起首接纳操纵体系考证。在我们安装数据库时,会把以后体系的账号增加到oracle的体系办理员组中往。按以上体例毗连,它是默许依据体系确当前账户考证经由过程的。把办理员组中的该体系账号删往后,他就会接纳暗码考证机制,就必需要指定用户名和暗码了。
  成绩:丧失暗码怎样办?
  我们晓得假如一般用户的暗码健忘了,我们能够办理员的身份对该用户的暗码举行修正(没法检察,由于暗码都是加了密的,只能修正)
  能够在图形化的工具下间接举行修正。也能够以命令的体例:
  alteruserscottidentifiedbytiger;
  在实践开辟中,我们要把操纵体系考证给作废失落。那今后就会接纳暗码考证了。可是假设我们把暗码健忘了,又怎样办理呢?
  我们能够把暗码文件删失落,在天生一个暗码文件便可。
  找到暗码文件的地点地:..db_2databasepwdorcl.ora,白色部分是该暗码文件定名的流动部分,orcl指的是数据库的sid,大概纷歧样
  删除暗码文件后,再天生一个。利用orapwd命令,详细以下:
  orapwdfile=<暗码文件的全路径,暗码文件的定名要依照先前>password=<指定的暗码>entries=<该暗码文件保留的DBA最年夜数目>force=只是不是强迫掩盖文件操纵
  示例:orapwdfile=E:oracleora92databasepwdora9i.orapassword=sysentries=10;
  利用以下语句检察在该暗码文件中放了几特权用户:
  select*fromv$pwfile_users;
  创立用户:
  createuser用户名
  identifiedby暗码
  defaulttablespace表空间
  temporarytablespace表空间
  quota整数KMunlimitedon表空间
  示例:
  createuserabc
  identifiedbyabc
  defaulttablespaceusers//用户的默许表空间为users,在该表空间下用户能够创立表
  temporarytablespacetemp//用户的一时表空间,用于索引,排序等事情的一时场合,相称于windows下的一时文件夹
  quota50Monusers//指定users表空间的限额巨细
  quotaunlimitedontemp;//指定一时表空间的限额巨细
  限定用户
  用户加锁
  alteruser用户名accountlock
  用户解锁
  alteruser用户名accountunlock
  用户口令马上生效
  alteruser用户名passwordexpire
  删除用户:
  dropuser用户名
  cascade用在当被删除的用户下另有未删除的工具(如一些表)时,强迫级联删除。它暗示删除用户一切工具。
<Pstyle="TEXT-INDENT:2em">
表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。

飘飘悠悠 发表于 2015-1-19 05:46:57

索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。

深爱那片海 发表于 2015-2-5 16:11:29

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

活着的死人 发表于 2015-2-12 23:02:52

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

因胸联盟 发表于 2015-3-3 11:37:19

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

飘灵儿 发表于 2015-3-11 11:01:33

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

愤怒的大鸟 发表于 2015-3-18 12:15:48

对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。

变相怪杰 发表于 2015-3-25 23:21:53

我们学到了什么?思考问题的时候从表的角度来思考问
页: [1]
查看完整版本: MYSQL网页设计Oracle数据库进修之第一篇